Salesforce DX プロジェクトの構造とソース形式
ソース変換
メタデータ形式のソースが非常に大きくて、探している情報を見つけづらくなるのは珍しいことではありません。また、チームで作業していて、他の開発者も同じメタデータを同時に更新する場合、複数の更新をファイルにマージする必要があります。もっと良い方法があるはずだとお考えなら、そのとおりです。
以前は、すべてのカスタムオブジェクトとカスタムオブジェクトの翻訳は 1 つの大きなメタデータファイルに保存されていました。

この問題を解決するために、これらの大きなソースファイルを分割した新しいソース形状を提供し、より処理しやすく、バージョン管理システムで管理しやすくしています。これをソース形式と呼びます。
Salesforce DX プロジェクトでは、カスタムオブジェクトとカスタムオブジェクトの翻訳が直観的なサブディレクトリに保存されます。ソース形式により、変更または更新する内容がはるかに見つけやすくなります。面倒なマージも必要ありません。

静的リソース
静的リソースは /main/default/staticresources ディレクトリに置く必要があります。project deploy コマンドと project retrieve コマンドでは、プロジェクト内でのアーカイブ MIME タイプの自動展開または圧縮がサポートされています。これらの操作では、.zip および .jar の両方の MIME タイプがサポートされています。これにより、ソースファイルをより簡単に Salesforce DX プロジェクトおよびバージョン管理システムに統合できます。
たとえば、スクラッチ組織の設定 UI を通じて静的リソースアーカイブをアップロードする場合、project retrieve start コマンドによって、そのアーカイブをプロジェクト内のディレクトリ構造に展開できます。ファイルシステムからこのプロセスを模倣するには、圧縮するディレクトリ構造を静的リソースのディレクトリルートに直接追加し、関連する .resource-meta.xml ファイルを作成します。プロジェクト内でアーカイブが単一ファイルとして存在するときは、常に単一ファイルとして扱われ、展開されません。
次の例は、さまざまな種類の静的リソースがローカルプロジェクトにどのように保存されるかを示しています。expandedzippedresource という展開された .zip アーカイブとそれに関連する .resource-meta.xml ファイルがあります。また、いくつかの .jpg ファイルが MIME タイプを使用して保存されていて、1 つのファイルが従来の .resource 拡張子を使用して保存されています。

詳細は、Salesforce ヘルプの「静的リソース」を参照してください。
ファイル拡張子
既存のメタデータ形式をソース形式に変換すると、それぞれに対して XML ファイルが作成されます。XML マークアップを含むすべてのファイルに .xml 拡張子が付けられるようになったため、XML ファイルとして XML エディターが認識したり、ユーザーが参照したりできるようになりました。ローカルプロジェクトとスクラッチ組織を同期するために、Salesforce DX プロジェクトでは、カスタムオブジェクト、カスタムオブジェクトの翻訳、Lightning Web コンポーネント、Aura コンポーネント、およびドキュメント用の特定のディレクトリ構造が使用されます。
たとえば、Case というオブジェクトがある場合、ソース形式では Case.object-meta.xml という XML バージョンが作成されます。DreamHouse というアプリケーションがある場合、DreamHouse.app-meta.xml というファイルが作成されます。要領はわかりますね。
従来、静的リソースは、拡張子が .resource のバイナリオブジェクトとしてファイルシステムに保存されていました。ソース形式での静的リソースの扱いはそれとは異なり、コンテンツ MIME タイプがサポートされています。たとえば、.gif ファイルは .resource ではなく .gif として保存されます。ファイルを MIME 拡張子を使用して保存することで、システム上の関連エディターを使用してファイルの管理や編集を行うことができます。
.resource 拡張子を持つ既存の静的リソースと MIME コンテンツ拡張子を持つ新しく作成した静的リソースを組み合わせて使用できます。拡張子が .resource の既存の静的リソースではそのまま拡張子が保持されますが、新規静的リソースはプロジェクトで MIME タイプ拡張子を付けて表示されます。既存のお客様の移行をサポートするために .resource ファイルの使用が許可されています。このような柔軟性がありますが、ファイルを MIME 拡張子を付けて保存することをお勧めします。
カスタムオブジェクト
メタデータ形式をソース形式に変換すると、カスタムオブジェクトは <package directory>/main/default/objects ディレクトリに置かれます。各オブジェクトにはカスタムオブジェクトの種別を反映する固有のサブディレクトリがあります。カスタムオブジェクトの一部は、次のサブディレクトリに抽出されます。
- businessProcesses
- compactLayouts
- fields
- fieldSets
- listViews
- recordTypes
- sharingReasons
- validationRules
- webLinks
カスタムオブジェクトの抽出されない部分は <object>.object-meta.xml ファイル内に置かれます。
カスタムオブジェクトの翻訳
カスタムオブジェクトの翻訳は <package directory>/main/default/objectTranslations ディレクトリにあり、カスタムオブジェクトの翻訳の名前が付けられた固有のサブディレクトリにそれぞれ置かれます。カスタムオブジェクトの翻訳と項目の翻訳は、カスタムオブジェクトの翻訳のディレクトリ内の固有のファイルに抽出されます。
-
項目名の場合: <field_name>.fieldTranslation-meta.xml
-
オブジェクト名の場合: <object_name>.objectTranslation-meta.xml
項目の翻訳ではなくカスタムオブジェクトの翻訳の残りの部分は <objectTranslation>.objectTranslation-meta.xml というファイルに置かれます。
詳細は、Salesforce ヘルプの「トランスレーションワークベンチ」を参照してください。
Aura コンポーネント
Aura バンドルと Aura コンポーネントは、<package directory> ディレクトリの下の aura というディレクトリに置く必要があります。

Lightning Web コンポーネント
Lightning Web コンポーネントは、<package directory> ディレクトリの下の lwc というディレクトリに置く必要があります。

Lightning コミュニティ用 ExperienceBundle
ExperienceBundle メタデータ型は、<package directory> ディレクトリの下の experiences というディレクトリに置く必要があります。experiences ディレクトリには、組織の各 Lightning コミュニティ用のフォルダーが含まれます。詳細は、『Experience Cloud 開発者ガイド』を参照してください。
ドキュメント
ドキュメントは親ドキュメントフォルダーのディレクトリに置く必要があります。親ドキュメントフォルダーは documents というディレクトリに置く必要があります。各ドキュメントには、対応するメタデータ XML ファイルがあり、それらは XML エディターで参照できます。

カスタム表示ラベル
すべてのカスタム表示ラベルは、CustomLabels.labels-meta.xml という名前の単一のファイルに含まれています。このファイルは、<package directory> ディレクトリの下の labels という名前のディレクトリ内にあります。それぞれのパッケージディレクトリには、専用の CustomLabels.labels-meta.xml ファイルが作成されます。