どんな取り組みか
Salesforceのグローバル値セットでは、業務上の理由で過去に使用していた選択肢を「無効化」することがあります。しかし、後からこれらの無効値を再度有効にしたいというニーズが発生することがあります。対象となる値が少数であれば画面から手動で変更することも可能ですが、多数の値を一度に有効化したい場合や、作業の正確性を担保したい場合には、手作業では手間がかかり、ミスも発生しやすくなります。
この記事で解説されているのは、SalesforceのMetadata APIを利用して、グローバル値セットの無効化された値を一括で有効化する、より効率的で安全な手法です。具体的には、Salesforce CLIを通じて対象のメタデータをXMLファイルとして取得し、そのファイル内の値を編集して組織にデプロイすることで、変更を反映させます。このアプローチにより、作業の自動化、バージョン管理システム(Git)による変更差分の確認、そして本番環境への安全なリリースプロセスを実現します。
使われた技術スタック
この手順では、以下の技術やツールが利用されます。
- Salesforce Platform: グローバル値セットが定義されているプラットフォーム。
- Metadata API: Salesforce組織の設定情報(メタデータ)を取得・デプロイするためのAPI。
- Salesforce CLI (sfコマンド): コマンドラインからSalesforce組織を操作するためのツール。メタデータの取得やデプロイに使用します。
- Salesforce DX プロジェクト: メタデータをローカルで管理するためのプロジェクト構造。
- XML: グローバル値セットのメタデータが記述されているファイル形式。
- Git: 変更前後の差分を確認し、作業履歴を管理するためのバージョン管理システム。
実装のポイント
グローバル値セットの無効値を一括で有効化する作業は、いくつかの重要なステップに分かれています。特に注意すべきは、Metadata APIが値セット全体を上書きする仕組みであるという点です。
1. 最新メタデータの取得
作業の第一歩は、反映先となる組織から最新のグローバル値セットのメタデータを取得することです。古いファイルを使用すると、他の人が追加・変更した値を意図せず上書きしてしまう危険があるため、必ず作業直前に最新の状態を取得します。
sf project retrieve start \
--metadata GlobalValueSet:<GLOBAL_VALUE_SET_API_NAME> \
--target-org <PROD_ORG_ALIAS>
2. XMLファイルの編集
取得したXMLファイル(.globalValueSet-meta.xml)には、各選択肢が<customValue>タグで定義されています。無効化された値は<isActive>タグの値がfalseになっています。この値をtrueに変更することで、選択肢を有効化します。
変更前:
<customValue>
<fullName>Sample_Value</fullName>
<default>false</default>
<label>Sample Value</label>
<isActive>false</isActive>
</customValue>
変更後:
<customValue>
<fullName>Sample_Value</fullName>
<default>false</default>
<label>Sample Value</label>
<isActive>true</isActive>
</customValue>
対象の無効値をすべて有効化する場合はエディタの置換機能も利用できますが、業務要件をよく確認し、意図しない値を有効化しないよう注意が必要です。
3. 差分の確認
編集後、git diffコマンドを使って変更差分を必ず確認します。確認すべきポイントは、<isActive>タグ以外の箇所(fullName, label, 並び順など)に変更がないか、対象外の値を変更していないか、そして意図しない行が削除されていないかです。理想的な差分は<isActive>false</isActive>が<isActive>true</isActive>に変わっている箇所のみです。
4. 段階的なデプロイ
変更したファイルは、いきなり本番組織にデプロイするのではなく、段階的なプロセスを踏みます。
- Sandboxでのdry-run: まず、デプロイが成功するかどうかを実際にファイルを反映させずに確認します。
sf project deploy start --dry-run ... - Sandboxへのデプロイと動作確認: dry-runが成功したら、Sandboxにデプロイし、実際に画面で値が有効化されているかを確認します。
- 本番でのvalidate: 本番環境へのデプロイ前に、
validateコマンドを実行します。これにより、デプロイが成功するかどうかを事前に検証し、成功した場合はデプロイ用のJob IDが発行されます。sf project deploy validate ... - 本番へのquick deploy: validateで発行されたJob IDを使い、
quick deployを実行します。これにより、検証済みの内容を迅速かつ安全に本番環境へ反映できます。sf project deploy quick --job-id <VALIDATION_JOB_ID> ...
得られた成果や学び
このMetadata APIを利用した手法には、画面での手作業と比較して多くの利点があります。
- 作業効率の向上: 多数の値を一度に変更できるため、作業時間を大幅に短縮できます。
- 正確性と安全性の確保:
git diffによる差分確認や、Sandboxでの事前検証、本番でのvalidateプロセスを経ることで、ヒューマンエラーを防ぎ、安全なリリースが可能になります。 - 変更履歴の可視化: Gitで変更を管理することで、「誰が」「いつ」「どの値を」有効化したかという作業記録が明確に残ります。
- 再現性の確保: Sandboxで検証したファイルをそのまま本番に適用できるため、環境ごとの作業差異によるミスを防ぎます。
最も重要な学びは、Metadata APIによるデプロイが「ファイル全体の置換」であるという特性を理解することです。この点を念頭に置き、常に最新のメタデータをベースに作業を行うワークフローを徹底することが、意図しない変更(他の開発者の作業内容の上書きなど)を防ぐ鍵となります。
まとめ
Salesforceのグローバル値セットの無効値を一括で有効化する作業において、Metadata APIとSalesforce CLIを活用するアプローチは、効率性、安全性、管理性の面で非常に有効です。手作業に比べて手順は複雑に見えるかもしれませんが、特に変更対象が多い場合や、厳密な変更管理が求められるプロジェクトにおいては、標準的な手法として習得する価値が高いと言えるでしょう。作業の際は、メタデータが全体上書きされる特性を理解し、差分確認と段階的なデプロイを徹底することが成功のポイントです。
出典: https://qiita.com/orange006/items/8a23a18076c54de0a32a
Related Certifications
この記事に関連する技術領域の認定資格
Salesforce 関連資格
- Salesforce Certified Administrator
- Salesforce Certified Platform Developer I
- Salesforce Certified Platform Developer II
- Salesforce Certified Application Architect
- Salesforce Certified System Architect
- Salesforce Certified Technical Architect
※ 認定資格は技術スキルの体系的な学習に役立ちます。試験の出題範囲や受験要件は変更される場合があるため、受験前に必ず公式サイトで最新情報をご確認ください。
PR / Recommended
エンジニアの開発環境・業務効率化に役立つクラウドPC
Salesforce / AWS の開発環境やリモートワーク用のWindows環境を、自宅PCに依存せず確保したいエンジニアに最適なサービスです。場所を選ばず一貫した開発環境を維持できます。
SF Tech & Win
Salesforce × AWS × AI 連携の実装ノウハウ
SIer・スタートアップ・中小企業のDX推進に役立つアーキテクチャ事例・実装パターン・最新アップデート情報を毎朝配信。


コメント