こんにちは。松浦です。
これは TECHSCORE Advent Calendar 2017 の21日目の記事です。
今回は、表題の通り Salesforce に関するお話です。
Salesforce の開発は独特の癖を持つものでしたが、昨年 Salesforce DX が発表され今年の10月に GA となり、ソース駆動型の開発や CI・CD などモダンな開発のベストプラクティスを取り入れやすくなりました。
GA から少し経ったので今更感もありますが、 本記事では Salesforce DX の開発環境を構築して、一部機能を試してみるところまでをまとめてみました。
興味はあるけれど、まだ試せていないという方の参考になれば幸いです。
そもそも Salesforce DX とは
すでに Salesforce 界隈では散々話題になっていますが、本題に入る前に Salesforce DX とは何かについて簡単に触れておきます。
Salesforce は GUI 上で様々なことができたり、独自言語を用いて Salesforce の機能拡張を行えたりという特有の開発環境・エコシステムを有しています。一方でその独自性のために、変更管理や開発プロセスなどの面でいわゆるモダンな開発とは乖離が発生し、そのベストプラクティスを取り入れづらくなっていました。
Salesforce DX とは、そのような状況を変え、モダンでより生産性の高い開発ができるようにするための一連の仕組み・機能の総称だと言えます(Salesforce DX の 'DX' とは、Developer Experience を意味します)。
注意書き
- 以下に記載する内容は、Mac (macOS Sierra) で行ったものです。
- 本記事は公開時点(2017/12/21)までにリリースされている機能に依拠したものであるため、その後のバージョンアップなどにより本記事の内容とは異なる挙動を取るようになる可能性があります。
開発環境を構築する
では、Salesforce DX で提供されている機能を試してみるためにも、まずは開発環境を構築していきます。
Salesforce CLI のインストール
Salesforce DX では新たな CLI ツール (Salesforce CLI) が提供されています。
Salesforce CLI をインストールすると、従来の Salesforce 機能に加えて Salesforce DX で新たに登場した機能群をコマンドライン上で利用できるようになります。
基本的に Salesforce DX の諸機能は Salesforce CLI 経由で使用することが想定されているので、 こちらのページ からインストールしましょう。
Dev Hub 組織の準備
Salesforce DX の目玉機能の一つとして Scratch Org の仕組みがあります。
Scratch Org とは、いわば使い捨ての Salesforce 組織で、定義ファイルをもとにして簡単に作成・破棄することができ、様々な Salesforce の機能・エディションをエミュレートできるようになっています。
例えば Scratch Org にソースコードを Push して挙動確認してみたり、逆に Scratch Org にて行った変更内容をローカルに Pull し、その内容を Git などの VCS で管理するなどの使い方が想定されており、 Salesforce 開発でソース駆動などのモダンな開発のプラクティスに取り組む上で重要な仕組みだと言えます。
Scratch Org を作成するには、その管理を行うハブ組織である Dev Hub 組織を用意する必要があります。
EnterpriseEdition などの本番用の Salesforce 組織やビジネス組織がある場合は こちら の手順を参考に組織の Dev Hub 機能を有効化しましょう。
そういった組織がない場合や、とりあえずテストとして試したい場合などのために、30日間有効なトライアル組織もあります。登録ページ にて必要項目を入力することでトライアル組織を作ることができます。
Salesforce DX に対応したエディタの準備
折角なので、今回は Salesforce DX に対応しているエディタを使用します。
現在、Salesforce DX (というより Salesforce CLI )の機能に対応しているエディタや IDE はいくつかありますが、触ってみた感じでは、現状 VS Code の拡張機能である Salesforce Extensions for VS Code を利用するのが良いかと思います。
- Salesforce 公式の拡張機能である
- 拡張機能により Salesforce CLI の主要なコマンドが VS Code 上で使用できるようになる他、コード補完も行われるようになる
- VS Code 自体が軽量かつ高機能なエディタで拡張機能も豊富
などが良いと思う理由です。
VS Code を 公式ページ からインストールして起動し、画面の左サイドバーにある上から5つ目のアイコンをクリックすると、拡張機能の管理画面が表示されます。下図のように検索を行うと 'Salesforce Extensions for VS Code' の拡張機能がヒットするのでインストールしましょう。
Salesforce DX の機能を試してみる
以上で開発環境の構築は完了です。
続いて Salesforce DX の機能を試してみます。今回は VS Code 上で Salesforce DX の目玉機能である Scratch Org を作って、ソースコードを Pull/Push してみるところまでを試してみることにします。
Salesforce DX プロジェクトを作成
Salesforce DX では、新たなプロジェクト構造が導入されました。このプロジェクト構造内にソースコードやサンプルデータなどが含まれており、Git などでバージョン管理を行うことになります。
何をするにしても、まずは Salesforce DX のプロジェクトが必要となるため、作成しましょう。
VS Code にて、 Command + Shift + P (Windows の場合 Ctrl + Shift + P) でコマンドパレットを開きます。初期状態で 'SFDX' と入力すると、以下のように 'SFDX: Create Project' と出てくるのでそれを選択します。
すると、プロジェクト名の入力欄が出てくるので、適当な名前を入力します。
プロジェクトファイルを置くディレクトリを指定すると、 Salesfroce DX プロジェクトを作成できます。
Dev Hub 組織に接続
Scratch Org を作成するには、それを管理する Dev Hub 組織に接続する必要があるので、次に、開発環境構築の手順内で Dev Hub の機能を有効化した組織にログインします。
コマンドパレットを開き、'SFDX' と入力すると、今度はたくさんのコマンドが表示されるようになります。
Dev Hub 組織に接続するには、'SFDX: Authorize a Dev Hub' を選択しましょう。
すると、ブラウザ上で、おなじみの Salesforce のログイン画面が立ち上がります。
Dev Hub の機能を有効化した組織のユーザ名・パスワードを入力することで、 Dev Hub 組織への接続が完了します。
ちなみに、この段階でプロジェクトルートに '.sfdx' のディレクトリが作成されます。
このディレクトリ内には Dev Hub 組織や Scratch Org の一時的な情報が格納されるため、 .gitignore などを編集してリモートリポジトリに追加されないようにしておいた方が良いです。
Scratch Org の作成
Dev Hub の機能を有効化した組織にログインしたことで、Scratch Org を作ることができるようになったので、早速作ってみましょう。
コマンドパレットを開き、'SFDX: Create a Default Scratch Org...' を選択します。
すると、 Scratch Org の定義ファイルを選択する画面に移ります。プロジェクト作成時、デフォルトの定義ファイルも作成されるため、ここではそれを選択してみます。
(定義ファイルに何を設定できるのかは ドキュメント に詳細が記載されています)
最後に、作成する Scratch Org のエイリアス名を設定する入力欄になります(設定しなくても問題ありません)。
ここまでの操作を行うと、 Scratch Org が作成されます。
なお、選択したコマンド名の通り、この操作によりデフォルトで使用する Scratch Org が作成されます。
デフォルトで使用する Scratch Org を変更したい場合、再度 'SFDX: Create a Default Scratch Org...' を実行すると、新しく作成された Scratch Org がデフォルトとなります。
(すでに作成してある Scratch Org をデフォルトしたい場合は、コマンドライン上の操作が必要になります。 こちらのページ の「デフォルトのユーザ名の設定についての詳細」のセクションをご参照ください)
作成した Scratch Org にログインするには、コマンドパレット上で 'SFDX: Open Default Scratch Org' を選択するか、左下のフッターに表示される Scatch Org のバッジをクリックすることで出来ます(エイリアス名を設定した場合、バッジにはエイリアス名が表示されます)。
Scratch Org 上で加えた変更を Pull
では、 Scratch Org 上で変更を加えて、その変更をローカルに Pull してみましょう。
まずは、作成した Scratch Org にログインしてみて、 Visualforce Page を作ってみます。
ログイン後は、通常の Salesforce 組織で行うように Visualforce Page の画面に行き、新規作成します。
(今回はローカルに Pull するのを試すだけなので、デフォルトの内容を変更せずにそのまま保存します)
Visualforce Page 作成後、 VS Code のコマンドパレットを開き、'SFDX: Pull Source from Default Scratch Org' を選択します。
(ここでは関係ありませんが、ファイル競合などが発生している場合に、それでも Scratch Org からローカルのプロジェクトに Pull する場合は 'SFDX: Pull Source from Default Scratch Org and Override Conflicts' を選びます)
すると、 Scratch Org で加えた変更がローカルに Pull されます。
ローカルで行った変更を Scratch Org に Push
今度は、ローカルで変更を加えて Scratch Org に Push してみます。
Pull してきた Visualforce Page に変更を加えて、コマンドパレットで 'SFDX: Push Source to Default Scratch Org' を選択します。
(Pull 時に説明したのと同様、ファイル競合が発生している場合に、それでもローカルの変更を Scratch Org に Push したい場合は 'SFDX: Push Source to Default Scratch Org and Override Conflicts' を選択します)
Scratch Org 上で Visualforce Page を見てみると、変更されていることが確認できます。
まとめ
以上、Salesforce DX の開発環境の構築を行い機能を試してみるまでを行ってみましたが、意外と難なくできました。
実際のプロジェクトに組み込むとなると様々な検証や検討が必要になるのでしょうが、とりあえず試す分には難しくないので、まだ触っていない方はぜひ試してみてはいかがでしょうか。