ROBOT PAYMENT TECH-BLOG

株式会社ROBOT PAYMENTのテックブログです

スクラッチ組織のスナップショットを利用して開発用の組織を素早く用意する

スクラッチ組織のスナップショットについて

セールスフォースプラットフォーム課にてサブスクペイProressionalの開発をしている近藤です。Spring '24 リリースよりスクラッチ組織のスナップショット機能がベータ版として追加されました。これを使うことで現在動いているスクラッチ組織を素早く複製できます。

Salesforceの開発用組織を用意するのは、ただソースコードやメタデータをデプロイするだけでは終わりません。サブスクペイProressionalの場合はデプロイ後にスクラッチ組織にアクセスして権限やExperience Cloudサイトの設定、外部に接続するアカウントの初期設定を行う必要があるため手間がかかります。

スクラッチ組織の有効期限は最大で30日となっています。期限が過ぎたらまたデプロイ、設定をはじめからやっていくのは大変なため、サブスクペイProfessionalの開発ではスクラッチ組織を使わず、Partner Developer Editionの組織を用意して開発を行っています。

Partner Developer Editionの組織は無期限のため、初期設定は一度だけで済みます。しかし、不要なデータが溜まっていって開発の邪魔になることや、長期間同じ組織を使い続けることでDeveloper Edition組織で設定したメタデータの反映漏れが発生しやすくなることもあるため、パッケージを作成する際に注意が必要です。

スクラッチ組織のスナップショット機能を使って開発用に設定したスクラッチ組織を複製することで、手間をかけずにきれいな開発環境を作成できます。

スクラッチ組織とスナップショットの作成手順

1. DevHub組織の設定

スクラッチ組織を管理する Dev Hub 組織の設定を行います。
- 設定 > 開発 > Dev Hub から 「Dev Hub を有効化」を有効化に設定します。
- 設定 > 開発 > スクラッチ組織 から 「スクラッチ組織スナップショットを有効化(ベータ)」を有効化します。

2. スクラッチ組織の作成と初期設定

  • スクラッチ組織の作成
    • こちらの記事を参考にスクラッチ組織の定義ファイルを用意します。 独自のスクラッチ組織定義ファイルを作成する
    • コマンドラインからスクラッチ組織を作成します。β時点では名前空間付きのスクラッチ組織でスナップショットを作成できないため --no-namespace オプションを設定してください。
  sf org create scratch --definition-file [定義ファイルパス] --alias [任意のスクラッチ組織名] --target-dev-hub [Dev Hub組織名] --no-namespace
  • ログインアカウントの作成
    • ログイン用のシステム管理者アカウントを作成します。以下のコマンドで作成され、ユーザー名とパスワードが確認できます。
  sf org generate password generate --target-org [スクラッチ組織名]
  • 初期設定
    • ログイン用ユーザーアカウントでスクラッチ組織にアクセスし、初期設定を行います。
    • ソースコードやメタデータのデプロイ、権限の設定等、開発ができる状態まで設定を一通り行います。

3. スナップショットの作成とスナップショットを使用したスクラッチ組織の復元

  • 以下のコマンドでスナップショットを作成します。
  sf org create snapshot --name [任意のスナップショット名] --source-org [対象のスクラッチ組織名] --target-dev-hub [Dev Hub組織名]

4. スナップショットを使用したスクラッチ組織の復元

  • 復元用定義ファイルの作成
    • 復元用の定義ファイルを用意します。以下の json ファイルを作成し、適切な場所に保存してください。
  {
      "orgName": "[組織名]",
      "snapshot": "[スナップショット名]"
  }
  • 以下のコマンドでスナップショットからスクラッチ組織を復元できます。
  sf org create scratch --definition-file [復元用の定義ファイルパス] --alias [新しく作成するスクラッチ組織] --no-namespace --target-dev-hub [Dev Hub組織名]
  • 復元したスクラッチ組織にアクセス
    • 復元したスクラッチ組織でログイン用のシステム管理者アカウントの設定をし、アクセスしてください。
  sf org generate password generate --target-org [スクラッチ組織名]

使ってみての感想と問題点

スクラッチ組織のスナップショットを使うことで初期設定だけ行ったスクラッチ組織を複製できます。時間のかかる初期設定がほとんど不要になるため、とても便利だと感じましたがベータ版の時点では以下の問題がありました。
- スナップショット自体の有効期限が30日となっている
- スナップショットから復元したスクラッチ組織で再度スナップショットを作成できない

この2つの制限があるため作成したスナップショットを維持することができず、期限が切れたらスクラッチ組織の作成と初期設定が必要になってしまいます。限られた期間だけ開発するならそれでもいいですが、定期的に開発用設定を維持していくには難しいため、これらの制限がなくなればぜひ使っていきたいです。

参考

スクラッチ組織スナップショット (ベータ) を使用したスクラッチ組織の設定の取得 Salesforce CLI Snapshot Commands 独自のスクラッチ組織定義ファイルを作成する



We are hiring!!

ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!

speakerdeck.com
www.robotpayment.co.jp