Git
Salesforce
Salesforce_DX
MigrationTool

概要

本記事は、これまでSalesforce上での開発ライフサイクルをAntツール(Migration Tool)によるメタデータ形式をベースにしていた方で新たにSalesforce DXの手法を検討している方を対象にします。
内容は、タイトルに記載の通り基礎の基礎となるので、既にSalesforce DXを使用している方はあまり参考にならないと想定されます。
なお、Salesforce DXの操作に関しては、コマンドベースで記載しますが、VCS(Gitを想定)のコマンドは記載しておりません。

Salesforce DXとは

従来のSalesforceのメタデータをベースにした開発ライフサイクルは、Sandbox(もしくは本番環境)を正としてそれを元に追加の変更や新規の開発を行い、Antツール(Migration Tool)や変更セットを用いてリリース(デプロイ)するのが主なやり方でした。
それに対して、Salesforce DXは現代の一般的なシステム開発と同じようにVCS(GitやSVN)を用いたソース駆動型の開発ライフサイクルを実現するための手法となります。
Salesforce DXは以下に記載のDev Hubスクラッチ組織を用いることで、コマンドベースで組織のメタデータのソース形式をプル/プッシュしてバージョンコントロールすることが可能となります。

Dev Hub

スクラッチ組織を作成、管理するために使用するメインの組織
DevHubは、本番環境か、もしくは下記のトライアルから作成します。(Sandboxからは生成することはできません。)
https://developer.salesforce.com/promotions/orgs/dx-signup
※トライアルでDev Hubを作成した場合は30日間のみの使用となります。

スクラッチ組織

新しいプロジェクトや新しいブランチのために簡単に作成することができ、短期で使用する設定用の組織
主に実装/単体テストのフェーズで開発者単位に作成して動作確認を行うために使用します。

Salesforce DXの流れ

Salesforce DXで重要なポイントとなる、以下の流れをそれぞれ簡単に記載します。
操作は基本的にコマンドベースとなるので、コマンドのオプションも合わせて説明します。
- 初期操作
- ソースコード実装
- UIでの設定
- 既存組織からスクラッチ組織を生成
- スクラッチ組織から既存組織へリリース

初期操作

①Dev Hubへログイン

sfdx force:auth:web:login -d -a <ログイン組織(DevHub)の別名>
-d:デフォルト組織に設定、-a:接続するログイン組織の別名を指定

②スクラッチ組織を作成

sfdx force:org:create -s -f config/project-scratch-def.json -a <スクラッチ組織の別名>
-f:スクラッチ組織定義ファイルを指定、-a:スクラッチ組織の別名を指定
スクラッチ組織定義ファイルの詳細は以下を参照
https://developer.salesforce.com/docs/atlas.ja-jp.216.0.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs_def_file.htm
image.png
デフォルトではスクラッチ組織は、認証トークンでログインを行うためユーザ名のみ表示されて、パスワードは表示されません。

③スクラッチ組織へログイン

sfdx force:org:open -u <ログイン組織の別名>
-u:スクラッチ組織の別名を指定(指定しない場合は、接続しているデフォルト組織へログインする)

④ローカルに新しいプロジェクトのスキャホールディングを行い、全てのアセットを適切なフォルダに配置

sfdx force:project:create -n <プロジェクト名>

プログラム実装

①VCSからソースコードをローカルにクローン/プル
②ソースコードを作成/修正

下記のコマンドで初期作成時は、スキャフォールディングを使用することができます。
Apexクラスの作成
sfdx force:apex:class:create -n <Apexクラス名> -d force-app/main/default/classes

Lightningコンポーネントを生成
sfdx force:lightning:component:create -n <Lightningコンポーネント名> -d force-app/main/default/aura

Lightningコンポーネント(イベント)を生成
sfdx force:lightning:event:create -n <イベント名> -d force-app/main/default/aura

③ローカルのソースコードをスクラッチ組織にプッシュ

sfdx force:source:push

④スクラッチ組織を開き、動作確認

sfdx force:org:open

⑤問題なければ、VCSへプッシュ

※.sfdxフォルダは、VCSのリポジトリへの追加から除外(.gitingoreで指定する)

UIでの設定

①スクラッチ組織を開き設定を追加/変更

sfdx force:org:open

②スクラッチ組織から設定変更のソースを取得

sfdx force:source:pull

③VCSへプッシュ

既存組織からスクラッチ組織を生成

既存組織(Sandbox/本番環境)からスクラッチ組織を生成するには、メタデータ形式からソース形式に変換する必要があります。

①既存組織(Sandbox/本番環境)へログイン

sfdx force:auth:web:login -a <既存組織(Sandbox/本番環境)の別名>

②既存組織からメタデータ形式で取得

sfdx force:mdapi:retrieve -s -r <ディレクトリ名> -k ./package.xml -u <既存組織(Sandbox/本番環境)の別名>

③メタデータ形式からソース形式に変換

sfdx force:mdapi:convert -r <ディレクトリ名>

④ローカルのソースコードをスクラッチ組織にプッシュ

sfdx force:source:push

Sandbox/本番環境へのリリース

Sandbox/本番環境へのリリースは、メタデータAPIを使用してリリースするので、ソース形式からメタデータ形式に変換する必要があります。

①リリース環境(Sandbox/本番環境)へログイン

sfdx force:auth:web:login -a <リリース環境(Sandbox/本番環境)の別名>

②VCSからソースコードをローカルにクローン/プル
③ソース形式をメタデータ形式に変換する

sfdx force:source:convert -d <ディレクトリ名>

③Sandbox/本番環境へリリース

sfdx force:mdapi:deploy -d <ディレクトリ名> -u <リリース環境(Sandbox/本番環境)の別名>

その他 基礎コマンド

権限セットの割り当て

sfdx force:user:permset:assign -n <権限セット名>

データのエクスポート

sfdx force:data:tree:export -q "<SOQLのクエリ文>" -d <ディレクトリ名>

データのインポート

sfdx force:data:tree:import --sobjecttreefiles <インポートファイル>

スクラッチ組織の削除

sfdx force:org:delete -u <スクラッチ組織の別名>
-u:スクラッチ組織の別名を指定

パスワードの生成

sfdx force:user:password:generate -u <スクラッチ組織の別名>

スクラッチ組織の設定データを確認

sfdx force:org:display -u <スクラッチ組織の別名>

スクラッチ組織と通常の組織(Devhub含む)を一覧表示

sfdx force:org:list

使用可能なコマンドの参照

sfdx force --help

Salesforce DXプラグインとCLIコマンドを最新化する

sfdx update

使用できる全てのコマンドを表示

sfdx force:doc:commands:list

ログインした組織の履歴を表示する

sfdx force:org:list

参考

主に下記のTrailheadモジュールを実施した内容を整理した記事となります。
クイックスタート: Salesforce DX
https://trailhead.salesforce.com/ja/content/learn/projects/quick-start-salesforce-dx?trail_id=sfdx_get_started

Salesforce DX を使用したアプリケーション開発
https://trailhead.salesforce.com/ja/content/learn/modules/sfdx_app_dev?trail_id=sfdx_get_started

  • Salesforce DXの流れ
  • プログラム実装
  • UIでの設定
  • 既存組織からスクラッチ組織を生成
  • Sandbox/本番環境へのリリース
  • その他 基礎コマンド
  • スクラッチ組織と通常の組織(Devhub含む)を一覧表示
  • 参考