VISASQ Dev Blog

ビザスク開発ブログ

Salesforce 組織のメタデータを効率的に管理する

はじめに

こんにちは! Salesforce チームの林です。

Salesforce は、オブジェクトやフィールド、レイアウト、フロー、クラス、権限、各種設定など、組織を構成するほとんどをメタデータで管理することができます。

Salesforce アプリケーションの開発・運用において、メタデータを適切に取得し、管理できる状態を作ることはとても重要ですが、Salesforce は年3回のメジャーバージョンアップを行い、メジャーバージョンアップの度にメタデータの構成が変わるため、メタデータを適切に取得し、その状態を維持することは非常に大変な作業でした。

generate manifest コマンドが利用できるようになるまでは。

本記事では、適切なメタデータを効率的に取得することができる generate manifest コマンドをご紹介します。

generate manifest コマンド

generate manifest コマンドは、Salesforce 組織から manifest ファイル(=管理対象のメタデータを定義する xml ファイル)を生成するために使用する sf cli に実装されたコマンドです。

sf cli で Salesforce 組織に接続できる状態であれば、以下のコマンドで Salesforce 組織のメタデータ管理を開始することができます。

% sf project generate --name <project-name>
% cd <project-name>
% sf project generate manifest --from-org <alias>
% sf project retrieve start --manifest package.xml --target-org <alias>

メモ:

  • <project-name> は任意のプロジェクト名(フォルダ名)
  • <alias>sf cli で接続する組織名(エイリアス)
  • sf project generate は Salesforce 開発フォルダを生成するコマンド
  • sf project generate manifest は 管理対象のメタデータを定義する manifest ファイルを生成するコマンド
  • sf project retrieve start は対象の Salesforce 組織から manifest ファイルに定義されたメタデータを取得するコマンド

従来の課題: manifest ファイル(package.xml) を作るのが大変

取得可能なメタデータは Salesforce の公式ドキュメントである Metadata Coverage Report で確認することができます。

上記ドキュメントをベースに manifest ファイルを手作業で作成するのは以下のように非常に負担の大きい作業でした。

  • どんなメタデータが存在し、何が取得できるのかを調べるのが大変
  • 取得対象を指定するのにワイルドカードが使えるのか使えないのかを調べるのが大変
  • ドキュメントでは取得可能になっていても実際に取得してみるとエラーになったりする

この運用では、チーム開発で次の問題が起きやすくなります。

  • メンバーごとに取得対象の粒度がぶれる
  • 「取り漏れ」と「取りすぎ」が混在する
  • Salesforce のバージョンアップで取得可能なメタデータが変わるたび、対象定義の見直しが必要になる
  • CLI 側と Metadata API 側の差分を継続的に追いかける運用負荷が高い

sf cligenerate manifest コマンドが実装されたことで、これらの作業負担とばらつきがゼロになります。

Salesforce のメジャーバージョンアップが行われても generate manifest コマンドを叩き直せばメタデータの差分が package.xml の diff として確認できるため一目瞭然となります。

--excluded-metadata オプション

generate manifest コマンドには --excluded-metadata オプションがあり、生成される manifest に “含めたくない” メタデータを指定することができます。

ユーザー数の多い組織では DashboardReport が大量に作られるため、これらを manifest に含めると retrieve が重くなり、git 管理上のノイズになります。

実運用では以下のように不要なメタデータを指定して generate manifest を実行することをお勧めします。

% sf project generate manifest --excluded-metadata Dashboard --excluded-metadata Report --from-org <alias>

他に、ListViewEmailTemplate を含めるのもお勧めです。

generate manifest コマンドの実装時期

僕は sf -hsf cli のヘルプを見るのが趣味なのですが、あるときヘルプを見ていて偶然見つけたのが generate manifest コマンドでした。

気になって generate manifest コマンドの実装時期を @salesforce/plugin-deploy-retrieve の git リポジトリを調べたところ、generate manifest コマンドは 3.17.02025-01-08 UTC)あたりで実装されたようです。

まとめ

sf project generate manifestsf project retrieve start --manifest の組み合わせは、Salesforce 組織のメタデータ取得の初期コストを下げる実践的な手段です。

  • Salesforce 組織から package.xml を自動生成できる
  • --excluded-metadata でノイズの大きい種別を除外できる
  • チームで retrieve 手順を標準化しやすい

既存組織をローカルへ同期する作業が多いチームほど、効果を実感しやすいはずです。

今後も sf cli の便利コマンドや便利オプションを見つけたらこちらのテックブログで紹介していきたいと思います。

ビザスクではエンジニアの仲間を募集しています! 少しでもビザスク開発組織にご興味を持たれた方は、ぜひ一度カジュアルにお話ししましょう! recruit.visasq.co.jp

参考リンク