アプリケーション作成の準備
学習の目的
- Salesforce DX プロジェクトの構造について説明する。
- Salesforce CLI を使用してプロジェクトを作成する方法を説明する。
- Salesforce CLI を使用してサンプルデータをインポートする方法を説明する。
Salesforce DX プロジェクトの作成
最初のアプリケーションを作成する前に、プロジェクトを作成して、それをソース制御リポジトリに接続します。
Salesforce DX プロジェクトとは、関連するコードやカスタマイズを集めたパッケージメタデータのローカルコピーです。ローカルプロジェクトのソースやメタデータをスクラッチ組織と同期するために必要なコアアセットも含まれています。Salesforce CLI をインストールしたのと同じマシンにプロジェクトを作成し、そのプロジェクトを VCS リポジトリと同期します。
では始めましょう! geolocation
というプロジェクトを作成します。
- ターミナルウィンドウまたはコマンドウィンドウで、プロジェクトを配置する場所に移動します。
- プロジェクトを作成します。
sf project generate --name geolocation
このコマンドは、geolocation という名前のフォルダーを作成し、新しいプロジェクトのスキャフォールディングを行い、すべてのアセットを適切なフォルダー構造に配置します。次に、ローカルプロジェクトの例を示します。ソースコード、Lightning コンポーネント、クラスなどを追加し始めたときにプロジェクトがどのように進化するかがわかります。アセット 目的 sfdx-project.json
このファイルは、ディレクトリが Salesforce DX プロジェクトであることを示しています。プロジェクト情報が含まれており、組織の認証を促進します。また、プロジェクトと組織の同期時にファイルを保存する場所を Salesforce CLI に示します。このファイル内で次のものを指定します。 - パッケージディレクトリにあるソースコード、クラス、メタデータへのパス。この場合は
force-app
です。 - 必要に応じて、名前空間。
- ソースの API バージョン。
config/project-scratch-def.json
スクラッチ組織の設定を指定します。組織の形状を定義する機能や設定が含まれます。開発チーム全体が共有する設定ファイルを作成できます。 force-app
プロジェクトのソースが含まれるフォルダー。 - パッケージディレクトリにあるソースコード、クラス、メタデータへのパス。この場合は
スクラッチ組織定義ファイルの設定
スクラッチ組織定義ファイルを使用すると、テスト用に異なる機能や設定を持つスクラッチ組織を簡単に作成できます。たとえば、enables1EncryptedStoragePref2
組織設定を指定することで、Salesforce モバイル Web のキャッシュを有効または無効にできます。開発中は、キャッシュを無効にすることで、コンポーネントのコード変更を有効にするために何度もページを更新する必要がなくなります。
必要に応じて、config/project-scratch-def.json
の内容を更新して、orgName
プロパティを変更するなどのカスタマイズを行います。
{ "orgName": "Account Geolocation App", "edition": "Developer", "features": ["EnableSetPasswordInApi"], "settings": { "lightningExperienceSettings": { "enableS1DesktopEnabled": true }, "mobileSettings": { "enableS1EncryptedStoragePref2": false } } }
スクラッチ組織の作成
スクラッチ組織の威力を理解したところで、この組織をパッケージ開発モデルで使用する場合の基本的なワークフローを見ていきます。
- ローカルのソースとメタデータをスクラッチ組織に転送します。
- スクラッチ組織で行った変更を元のローカルプロジェクトに取得する。
- このプロジェクトをソース制御リポジトリと同期する。
ただし、ワークフローでいろいろ試してみるには、まずスクラッチ組織を作成する必要があります。ではやってみましょう。
- コマンドウィンドウで、
geolocation
プロジェクトディレクトリに移動します。cd geolocation
- スクラッチ組織を作成し、別名を GeoAppScratch とします。
sf org create scratch --set-default --definition-file config/project-scratch-def.json --alias GeoAppScratch
この処理にはしばらく時間がかかることがあります。このコマンドの実行では、次のフラグを使用しています。
-
--set-default
フラグは、このスクラッチ組織をこのプロジェクトで Salesforce CLI コマンドを実行するときのデフォルト組織にすることを指定します。コマンドごとに異なる組織を使用するには、--target-org
フラグを指定して、他の別名を指定できます。 -
--Definition-file
フラグは、プロジェクトのスクラッチ組織設定ファイルへのパスです。 - 前の単元で説明した便利な
--alias
フラグを覚えていますか? このフラグによって、これ以降のコマンドでこの組織を別名の GeoAppScratch を使用して参照でき、--target-org
フラグも使用できます。
サンプルデータの作成
スクラッチ組織には、選択したエディションに基づく標準データが用意されています。けれども、作成するアプリケーションやアーティファクトへの関連性がより高いサンプルデータを追加することが重要です。Salesforce CLI を使用して、地理位置情報アプリケーションでテストするサンプル取引先をいくつか作成しましょう。
- 「Marriott Marquis」取引先を作成します。
sf data create record --sobject Account --values "Name='Marriott Marquis' BillingStreet='780 Mission St' BillingCity='San Francisco' BillingState='CA' BillingPostalCode='94103' Phone='(415) 896-1600' Website='www.marriott.com'"
- 「Hilton Union Square」取引先を作成します。
sf data create record --sobject Account --values "Name='Hilton Union Square' BillingStreet='333 O Farrell St' BillingCity='San Francisco' BillingState='CA' BillingPostalCode='94102' Phone='(415) 771-1400' Website='www.hilton.com'"
- 「Hyatt」取引先を作成します。
sf data create record --sobject Account --values "Name='Hyatt' BillingStreet='5 Embarcadero Center' BillingCity='San Francisco' BillingState='CA' BillingPostalCode='94111' Phone='(415) 788-1234' Website='www.hyatt.com'"
開発者の世界をさらに揺るがす機能として、簡単にスクラッチ組織からプロジェクトにデータを取得するコマンドが用意されています。その後、そのデータをソース制御リポジトリにコミットすると、自分や別の開発者が新しいスクラッチ組織を作成するときに再読み込みできます。
どのソース制御リポジトリを使用する場合でも、.sf
フォルダーをリポジトリへの追加から除外するようにソース制御リポジトリを設定することをお勧めします。このフォルダーにはスクラッチ組織の一時情報が保持されているため、後の人のために保存する必要はありません。Git では、このフォルダーを.gitignore
ファイルに追加します。
- Salesforce DX の geolocation プロジェクトで、
data
というディレクトリを作成します。mkdir data
- サンプルデータをエクスポートします。
sf data export tree --query "SELECT Name, BillingStreet, BillingCity, BillingState, BillingPostalCode, Phone, Website FROM Account WHERE BillingStreet != NULL AND BillingCity != NULL and BillingState != NULL" --output-dir ./data
これでサンプルデータが保存されます。このサンプルデータは今後、次のコマンドでインポートできます。ただし、後で別のスクラッチ組織でデータをインポートするので、今はしないでください。sf data import tree --files data/Account.json
ここまでは、通常のデータを同期してきました。次は、さらに面白い部分であるコードについて説明します。