tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:ゆるっとSalesforceトーク16に参加してSalesforceDX開発の勉強しました

co-meetingさんがゆるっとSalesforceトーク #16 スクラッチ組織作成Tipsのイベントをやってくれたので、SalesforceDX開発の勉強しました。

ゆるっとSalesforceトーク #16 スクラッチ組織作成Tips - connpass


Salesforce DXということでスクラッチ組織の機能が発表されたりしたのが多分2018年ごろ。新しい開発方法覚えるぞと思ってから数年ぐらい経過してしまったのですが、実際使用している経験談としてのDevHub設定のスクラッチ組織作成のTips話と知りたかった話を教えてもらえる機会だったので参加しました。


イベントのアジェンダはこんな感じ

・project-scratch-def.jsonの便利機能
・Org Shapeで本番組織と同じ設定のスクラッチ組織を作る
・SFDX Data Move Utility (SFDMU)による組織間データ移行
・CumulusCIを使った大量データテスト組織の作成


実際のSFDXコマンド実行して組織作る流れを見せてもらったり、SFDMUというツールがあることを教えてもらったり、大量テストデータ作成で便利なSnowfakery(フェイクデータ作成ツール)ことを教えてもらったりといろいろ勉強になりました。


SFDMU (SFDX-Data-Move-Utility) はSalesforce社が管理しているGitHubリポジトリで公開されているツールでした。


まだ細かい使い方は理解できていませんが、CumulusCIとSnowfakeryをつかった大量テストデータの作成は、例えば取引先と取引先責任者を紐付きがちゃんとしている状態で作成できる動きを見せてもらいました。大量テストデータの作成時間としては10万件のAccount、20万件のContactの作成→7分ぐらいでできる感じとのことです。(フェイクデータ作成ツールのSnowfakeryでテストデータを用意することで氏名等それらしいデータを用意できるデモを見せてもらいました。)


あと、スクラッチ組織の作成にはDevHub組織の有効化が必要になりますが、本番組織かそれ以外の組織をベースにするかでスクラッチ組織作成上限に違いがあることを教えてもらいました。あといくつ作成できるかについては以下のようなコマンドで確認できるみたいです。

$ sfdx force:limits:api:display -u "DEVHUBのエイリアス"


今回参加したゆるっとSalesforceトークで教えてもらった話についてはこちらのブログ記事にもまとめられていたので細かい部分は記事読んで勉強しようと思います。

スクラッチ組織作成試してみました

教えてもらったこと全部は試せてませんがとりあえずDevHub組織の有効化とスクラッチ組織の作成試してみました。

今回の事前の用意

① Trailheadのハンズオン組織作成機能でDeveloper組織を作成

② VSCodeでこの組織プロジェクトのワークスペース用意


とりあえず上の2つを用意してさわってみました。

DevHub組織の有効化

設定メニューのDevHubから有効化を行います。(DevOps Centerのメニューも追加されてたんだ)


有効化はトグルボタンをクリックするだけ。※一度有効化すると無効化できません。


他にもこの画面で有効化できる設定がいくつかありました。


開発勉強用に作成した組織なのでとりあえず全部を有効化してなんでもできる状態にしておきました。(Einsteinも試せるみたい)。これでスクラッチ組織作成などのSFDXコマンドが実行できる環境が用意できたはず。

組織シェイプの有効化

スクラッチ組織は設定とかまっさらな状態の組織を作成できる機能ですが、組織シェイプの機能を使えば設定情報などを引き継ぐ形で作成できるっぽいです。今回さわらないと思いますが念の為有効化を実施。


組織IDは15桁形式で指定する仕様となっているみたいです。組織情報のページで確認できるIDが15桁形式でした。また、組織シェイプの有効化後は無効化できませんが、利用可能な組織のID指定は変更や削除できる感じに見えました。(今回はID未指定のままさわります。)

Salesforce Developers

※ちなみに組織シェイプをつかって組織作成するとまぁまぁ時間がかかるみたいです。

スクラッチ組織の作成

上のリンク先の「SFDX開発 スクラッチ組織初期設定Tipsと組織シェイプの使い方」の記事が今回最初にやりたかったことがまとめられているのでここを参考にいろいろ試してみました。


スクラッチ組織の作成にあたり重要なファイルが「config/project-scratch-def.json」です。ここで組織作成時に有効化したい機能を指定できるみたいです。


試しに個人取引先を有効化するように設定してみました。

※Salesforceの開発ガイドはこちら


他にはメタデータAPIでできることも作成時に実行できるそうです。メタデータAPIあまりわかっていなかったのですが、今回教えてもらった代理ログインの有効化まわりの設定をためしてみました。記事に書いてあるこの部分です。


設定箇所は同じく「project-scratch-def.json」のファイル。settingsの下に入れ子で記載すればいいみたいです。たぶんこんな感じ。


他にも「objectSettings」とか「hasSampleData」とか「release」とかあるみたいです。ちょっと設定の書き方の理解が追いつかないので今回はスキップ。



ここからコマンド実行して組織作成します。コマンドはVSCodeのターミナルタブからやれば良さそう。


ほんとに動く状態か教えてもらったDevHub組織の制限確認のコマンド実行して試してみました。エイリアスはsalesforcedxにしたのでそれでコマンド実行。

sfdx force:limits:api:display -u salesforcedx


無事に正常実行。制限はこれで見ればいいみたいです。


次にDevHub組織へのログイン処理。(salesforcedxはエイリアス名)

$ sfdx auth:web:login -d -a salesforcedx


スクラッチ組織作成コマンドを実行してみます。

sfdx org create scratch -a orgshape-SCRATCH -d -f config/project-scratch-def.json


もしかしたら「:」が抜けてるかも。ここは開発ガイドから引っ張ってきたコマンドで試してみました。エイリアスをmyScratch1に指定。

$ sfdx force:org:create -f project-scratch-def.json -a MyScratchOrg --setdefaultusername

そのファイル無いってエラーでた。こういうの難しい。


config/project-scratch-def.jsonと修正して実行しました。

$ sfdx force:org:create -f config/project-scratch-def.json -a MyScratchOrg --setdefaultusername


これでスクラッチ組織が作成できました。


作成した組織のログイン方法については次のコマンドで開けます。

$ sfdx force:org:open -u MyScratchOrg


コマンド実行するとデフォルトブラウザで作成したスクラッチ組織が開く。いちいちユーザIDとパスワードでログインしなくてもいいので便利。


project-scratch-def.jsonで指定した機能有効化もチェック。代理ログインが有効になっていることを確認できました。


続いて一番気になっていた個人取引先の有効化。設定メニューから検索したところ本当に有効化されていました。


このような感じでスクラッチ組織の作成と初回の機能有効化を試すことができました。特に機能有効化の「project-scratch-def.json」は実際のデモを見せてもらってようやく使い方のイメージを理解できた気がします。(開発ガイドのfuturesに記載だけだとちょっとよくわからなかった。)

おまけ

DXコマンド、2018年にもTrailheadとかを参考に一度使い方調べてたみたいです。たぶん一応動いたもののよく理解できていなかったし、実際に必要になったりしなかったのでそのまま忘れていたみたいです。今回調べた方法とco-meetingさんの記事と開発ガイドと昔調べた方法とあわせて勉強の参考にしようと思います。