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

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

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

ファイル拡張子
既存のメタデータ形式をソース形式に変換すると、それぞれに対して XML ファイルが作成されます。XML マークアップが含まれるすべてのファイルの拡張子は .xml になります。そして、XML エディタを使用してソースファイルを参照できます。ローカルプロジェクトとスクラッチ組織を同期するために、Salesforce DX プロジェクトでは、カスタムオブジェクト、カスタムオブジェクトの翻訳、Lightning Web コンポーネント、Aura コンポーネント、およびドキュメント用の特定のディレクトリ構造が使用されます。
たとえば、Case.object というオブジェクトがある場合、ソース形式では Case.object-meta.xml という XML バージョンが作成されます。DreamHouse.app というアプリケーションがある場合、DreamHouse.app-meta.xml というファイルが作成されます。要領はわかりますね。Salesforce DX プロジェクトでは、すべてのソース形式ファイルに、対応する「-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
カスタムオブジェクトの抽出されない部分は 1 つのファイル内に置かれます。
- オブジェクトの場合: <object>.object-meta.xml
- 項目の場合: <field_name>.field-meta.xml
カスタムオブジェクトの翻訳
カスタムオブジェクトの翻訳は <package directory>/main/default/objectTranslations ディレクトリにあり、カスタムオブジェクトの翻訳の名前が付けられた固有のサブディレクトリにそれぞれ置かれます。カスタムオブジェクトの翻訳と項目の翻訳は、カスタムオブジェクトの翻訳のディレクトリ内の固有のファイルに抽出されます。
-
項目名の場合: <field_name>.fieldTranslation-meta.xml
-
オブジェクト名の場合: <object_name>.objectTranslation-meta.xml
カスタムオブジェクトの翻訳の残りの部分は <objectTranslation>.objectTranslation-meta.xml というファイルに置かれます。
Aura コンポーネント
Aura バンドルと Aura コンポーネントは、<package directory> ディレクトリの下の aura というディレクトリに置く必要があります。

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

カスタム表示ラベル
すべてのカスタム表示ラベルは、CustomLabels.labels-meta.xml という名前の単一のファイルに含まれています。このファイルは、<package directory> ディレクトリの下の labels という名前のディレクトリ内にあります。それぞれのパッケージディレクトリには、独自の CustomLabels.labels-meta.xml ファイルがあります。カスタム表示ラベルは、分解された複数のファイルよりも、単一のファイル内で管理する方が簡単であると考えられます。また、単一のファイル内で管理した方が、入出力パフォーマンスの低下を最小限に抑えることができます。特に、Windows では効果的です。