Salesforce DXの活用

March 15, 2019 Juhong Cheon

みなさんはApex や Lightning のコードを書くときにどんな開発環境を使っていますか?
私はこれまで Eclipse は起動に少し時間がかかるので、Sublime エディタと Mavens Mate プラグインを使っていました。もちろん、たまに開発者コンソールも使います。しかし、この Sublime & MavensMate は、Githubの最後のリリースから確認すると2016年11月10日から更新が止まっていました。(
https://github.com/joeferraro/MavensMate/releases)

その理由をMavens Mateのホームページから確認すると、個人的な理由だと説明があり、MavensMateの代案としてVisualStudioCode Extensionを紹介しています。(http://mavensmate.com

Salesforce DXはVisual Studio Code(以下VSCode)とVSCode用Salesforceプラグインを利用して開発を行います。私がSublime&Mavensmate開発環境からSalesforce DX開発環境への変更を検討したのは以下の理由になります。

  • Salesforce の公式プラグインが提供されていること
  • VSCodeは、動作が軽くいろいろなプログラミング言語の開発者に人気があること
  • MavensMate の開発者もおすすめしていること
  • Salesforce DX で開発のスタイルがモダンになること(ソースのバージョン管理、独立した実行環境などができること)

本稿にてSalesforce DXの概念と基本的な使い方を紹介したいと思います。


◎必要な環境

Salesforce DX開発環境を構築する為に、VSCodeと”Salesforce Extentions for VSCode”プラグインをダウンロードしてください。
(https://marketplace.visualstudio.com/items?itemName=salesforce.Salesforce DX-vscode)
ダウンロードページから必要な情報を確認してください。

Salesforce DX開発環境の設置条件は現時点(2018/10/22)で以下になります。   

  1. Visual Studio Code v1.26 or later
    https://code.visualstudio.com/download
  2. Java 8 platform, standard Edition Development Kit
    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  3. Salesforce CLI
    https://developer.salesforce.com/tools/sfdxcli
  4. Scratch Org

Salesforce環境にログインして、<設定>で Dev Hubを探します。
Dev Hubを有効化するとScratch Orgの作成が可能になります。
制限事項として、一度 Dev Hubを有効化すると無効化することはできませんので本番組織で試そうとしている方はご注意ください。

◎Scratch Orgとは?

Salesforceの定義を引用すると
(https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs.htm)

The scratch org is a source-driven and disposable deployment of Salesforce code and metadata.」

になっています。

Scratch OrgはSalesforceのソース及びメーターデータに対してソース主導開発や使い捨て環境からの実行ができることを意味します。

他プログラミング言語と違って、従来のSalesforce開発ではローカル環境からの実行ができませんでした。なぜなら、Salesforceの開発言語であるApexがクラウド環境に最適化され、Salesforceのクラウド環境以外では実行できないからです。

その為、従来のSalesforce開発では開発メンバー全員が一つのサンドボックス環境を共有して開発するしかありませんでした。

Scratch Orgは他プログラミング言語のローカル実行環境のように、開発者本人のみ利用できる環境です。

Salesforce DX (Developer Experience)はScratch Orgを通して、他プログラミング言語と同じDX、すなわち同じ開発体験を提供することを目的とします。

開発中は、各開発メンバーが作成したコードはもちろん、データベースのスキーマや各種設定値もメターデータとして扱われ、コードと共に管理されます。

Scratch Orgからの開発プロセスが完了したら、ステージング用のサンドボックスや本番環境にも簡単に配布する事ができます。

尚、作成されるScratch Orgのデフォルトの有効期限は7日間ですが、変更する事も可能です(1日から30日まで)。

以下、Salesforce DXのデモから開発手順を詳しく説明します。

 

@デモ環境での開発手順

1.新規Project作成(ローカルHDD)

$sfdx force:project:create -n SalesforceDXTestProject
・カレントディレクトリにProjectNameの名前でサブディレクトリが作成されます。
・Salesforce DXを利用するための基本フォルダ構造がローカルに作成されます。
・作成されたプロジェクトフォルダは後ほどVSCodeから管理します。

2.Connection作成(ローカルとSalesforce組織を連携)

 $sfdx force:auth:web:login -d -a SalesforceDXTestProject

-d : SET a default DevHub
-a : Alias
-s : SET a default User

デフォルトブラウザからログインページが表示されると、Salesforce組織のログイン情報でログインを行います。
(ログインするSalesforce組織は事前にDevHubを有効化にする必要があります。本書の「@必要な環境」の4を参照してください。)

ログインが成功したら、ターミナルに”You may now close the browser”が表示されます。ブラウザを閉じます。これでコネクション作業が完了です。

以下のコマンドで確認ができます。

$sfdx force:org:list

作成作成済みのOrgを確認できます。

 

3.Scratch Org作成
先程作成したSalesforce DXTestProjectにディレクトリを移動して以下のコマンドを実行します。

$sfdx force:org:create -s -f config/project-scratch-def.json

-s : デフォルトユーザーで作成
-f  : 定義ファイルパス

(D) Default DevHub UserName  (U) Default Scratch Org UserName

VSCodeからの作業は全て(U)Default Scratch Orgをターゲットにします。


4. Scratch Orgを開きます。

$sfdx force:org:open

コネクション作成後はいつでもID/PasswordなしでScratch Orgにログインできます。

5.VisualStudio Code起動

$code .

6.   VisualStudioからファイルを作成します。
force-appフォルダから右クリックしてSFDC:Create Visualforce Pageを選択します。
Helloworld.pageを追加してみます。

Helloworld.pageの文言などを修正して、Scratch Orgに反映します。

⇧+⌘+P で SFDX:Push source to Default Scratch Org


複数のScratch Orgを管理する場合は当作業前に”Default Scratch Org”を必ず確認してください。


7.   Scratch OrgのDeveloper Consoleから確認します。

VSCodeから追加されたファイルとDeveloper Consoleから確認できます。

今度はSalesforceから追加されたファイルがVSCodeから確認できるかを確認する為、空の新しいVisualforce Pageファイルを追加します。

8.   Scratch Orgから修正されたファイルをインポートします
⇧+⌘+P でSFDX: Pull Source from Default Scratch Org

修正・追加されたファイルがインポートされます。


以上でSalesforce DXの基本的な概念、SalesforceとVSCodeの関係、Salesforce DXに置けるScratch Orgの説明や簡単なデモを行いました。

AppirioではSalesforce開発を効率化するために、SalesforceDXを拡張したAppirioDXを提供しております。ApprioDXはSalesforceDXをベースにした新しい開発方法です。

プロジェクト管理ツールと統合、Gitlabと統合、コマンドの自動化・省略化などの便利な機能が多数搭載されています。

ご興味がある方はこちら(https://hub.appirio.com/cloud-powered-blog/devops-in-the-cloud-appiriodx-versus-salesforce-dx)を参考してください。

戻る
Salesforce CLIによるリリース作業
Salesforce CLIによるリリース作業

本ブログで紹介するのは、WInter'18から提供されている Salesforce CLI を使ったリリース方式です。Salesforce CLIはメタデータAPI(mdapi)を包含しているため、コマンドを使って...

次へ
Salesforce Connectで外部オブジェクトを利用してみよう
Salesforce Connectで外部オブジェクトを利用してみよう

Salesforce Connectを利用してコーディングをせず、Salesforce外のシステムにあるデータを、外部オブジェクトとしてSalesforceにとりこみ、利用する方法について説明します。

アピリオまでお気軽にお問合せください

ご質問はこちら