Salesforceのリリースでどんなツールを使っていますか?
SalesforceにはAnt移行ツールや最新のDevOps Centerなど、リリース用のツールがいくつか用意されています。
その中でも比較的操作が簡単な送信変更セットを使っている方も多いのではないでしょうか?
今回は「sfdx」に代わるSalesforce CLIの新しいコマンド「sf」を活用して送信変更セットを作成する方法を検証します。
はじめに
Salesforceの設定画面で完結する送信変更セットは、開発者だけでなく誰でも簡単に操作できるというメリットがあります。
しかしその反面、お世辞にも使いやすいと言えないGUIや読み込みの遅さなどのデメリットも多々存在します。
- 環境ごとに送信変更セットを作成しないといけない
- リリースしたいコンポーネントを一個ずつチェックボックスで選択して追加しなければいけない
- コンポーネントの種類ごとにリストを切り替える必要がある
- コンポーネント一覧ページを移動すると先に選択していたチェックボックスが外れる
- 送信変更セットの中身を25個単位の一覧でしか確認できず、種類別、名称順などのソートができない
- 「保存」ボタンを押した後のロード時間が長すぎる(たまにエラーになる)
送信変更セットの作成は、組織やリリースの規模が大きくなればなるだけ過酷になります。
ですが、sfコマンドでは、この送信変更セットの作成がほぼコマンド操作だけでストレスなく行えます。
Salesforce CLIとsfコマンドを普段から活用されている方はもちろん、これまで使ったことのない方も、よければ参考にしてみてください。
事前準備
今回の作業はSalesforce CLIとVisual Studio Code(以下、VSCode)を使用します。
Salesforce CLI : ver.2.46.6
OS : Windows10
まだインストールしていない方は、こちらの手順を参考にインストールしてください。
クイックスタート: Salesforce 開発のための Visual Studio Code
この記事で使用しているSalesforce CLI (sf)のバージョンは2.46.6です。
古いバージョンでは想定と異なる動作になる可能性があるため、すでにSalesforce CLI をインストール済みの場合はご自分のバージョンを確認し、必要に応じてアップデートしてください。
Move from sfdx (v7) to sf (v2)
① 空の送信変更セットを作成する
まず最初に、リリース元の組織で空の送信変更セットを作成してください。
この時、送信変更セットの名前には必ず半角英数字のみを使用してください。
② 送信変更セットに追加したいコンポーネントを集める
次に、送信変更セットに追加したいコンポーネントを集めます。
これにはいくつかの方法がありますが、今回はVSCodeでプロジェクトを作成し、プロジェクトから必要なコンポーネントを集める方法を説明します。
※ プロジェクトの作成とソースファイルの取得方法をすでにご存じの方は「③ ソース形式のファイルをメタデータ形式のファイルに変換する」までスキップしてください。
なお、送信変更セットにコマンド操作をする際に最終的に使用するのは以下の3つです。
- リリースしたいコンポーネントのメタデータ形式のファイル
- package.xmlのファイル
- 上記を格納したディレクトリ
Ant移行ツールなどを使用してこの3つをすでに揃えている方は「④ メタデータファイルを送信変更セットにデプロイする」までスキップしてください。
②-1 プロジェクトを作成する
ファイルとフォルダで組織を構成したプロジェクトを作成します。
プロジェクトを作成することで、Salesforce上で構築したコンポーネントをファイル形式で取得できるようになります。
以下の手順でプロジェクトを作成してください。
プロジェクトを作成すると、configやforce-appなどのいくつかのフォルダやファイルが自動作成されます。
後の工程ではこの中のforce-appフォルダを使用します。
②-2 デフォルトの組織を認証する
プロジェクトにデフォルトの組織として、以下の手順でリリース元の組織を紐づけます。
この時、認証する組織は送信変更セットに追加したいメタデータが存在する環境にログインしてください。
②-3 コンポーネントのソースファイルを取得する
送信変更セットに追加したいコンポーネントをすべてまとめたpackage.xmlファイルがすでに作成済みの場合は、プロジェクト内の「manifest」フォルダに格納し、右クリックで開いたメニューから「Retrieve source in Manifest from Org(マニフェストファイルのソースを組織から取得)」を実行してください。
作成されていない場合は、package.xmlファイルを作成するか、以下の手順でソースファイルをダウンロードしてください。
コンポーネントのメタデータ名は以下を参照してください。
メタデータ型
取得したソースファイルは以下のように、force-appフォルダの配下に階層形式で格納されます
なお、オブジェクト名の横の雲マークでソースを取得した場合、オブジェクトに関連したソースがすべて取得されてしまうため、送信変更セットに入れたくないコンポーネントも取得することになります。
その場合は除外したいソースファイルは削除するか(ファイルを削除しても「ソースをプロジェクトと組織から削除」を実行しない限り組織からは削除されません)ソースを取得する際に必要なソースに対して雲マークを実行してください。
③ ソース形式のファイルをメタデータ形式のファイルに変換する
sfコマンドでforce-appフォルダ内のディレクトリとファイルをメタデータファイルに変換します。
コマンドを実行する前に、変換したくないファイルはあらかじめ取り除いておいてください。
リリースしたいコンポーネントのソースファイルの準備が完了しましたら、VSCodeのターミナルで以下のコマンドを実行して、ソースファイルをメタデータファイルに変更します。
sf project convert source --root-dir <ソースが格納されたフォルダのパス> --output-dir <メタデータを格納したいフォルダのパス> --package-name '<送信変更セット名>'
ターミナルで実行したときは以下のようなイメージになります。
※ ソースが格納されたファイルのパスは、force-appフォルダを右クリックして「copy path(パスのコピー)」で取得できます(相対パスでもOK)
※ メタデータを格納したいフォルダのパスは、パスを入力せず任意のフォルダ名を入力すると、プロジェクトの直下にメタデータを格納したフォルダを自動作成してくれます。
※ 送信変更セット名は①で作成した空の送信変更セットの名前をシングルクォーテーションで囲んでください
コマンドを実行すると指定した場所にソースをメタデータに変換したファイルとディレクトリ、package.xmlファイルが自動作成されます。
ソース形式のファイルとメタデータ形式のファイルの違いについて興味がある場合はこちらのドキュメントを参照してください。
Salesforce DX プロジェクトの構造とソース形式
④ メタデータファイルを送信変更セットにデプロイする
④-1 メタデータフォルダとpackage.xmlを確認する
メタデータを格納したフォルダで以下の2点を確認してください。
- package.xmlファイルが存在していること
- package.xmlの<fullName>行に、送信変更セット名が記載されていること
※ ②-4でソースをメタデータに変換した場合はpackage.xmlは自動作成され、<fullName>行の送信変更セット名も自動入力されます。
④-2 sfコマンドを実行して送信変更セットにメタデータをデプロイする
プロジェクトのターミナルで以下のコマンドを実行します。
フォルダのパスは相対パスでももんだいありません。
sf project deploy start --metadata-dir <メタデータファイルが格納されたフォルダのパス>
⑤ 送信変更セットの確認
コマンド実行後、送信変更セットにコンポーネントが追加されているか確認します
まとめ
sfコマンドで送信変更セットを作成する方法について解説しました。
sfdxコマンドでも送信変更セットを作成できましたが、メタデータフォルダをzip化する必要がなくなったりコマンド自体がシンプルになっていたりと、以前よりもハードルが下がりました。
コンポーネントが1つや2つであれば送信変更セットを直接編集したほうが簡単ですが、たとえばコンポーネントが100個を超える場合では変更セットを作成するだけでかなりの時間と手間がかかってしまいます。
Salesforceには、今回のような開発を効率化するツールがほかにもたくさんリリースされています。
業務を効率化するために、開発者だけでなくシステム管理者の方も便利なツールを積極的に活用していきましょう。