【Salesforce】変更セットの依存関係が想定と違う時の本番反映前の切り分け

【Salesforce】変更セットの依存関係が想定と違う時の本番反映前の切り分け
🛡️ 超解決

Salesforceの変更セットを利用した本番反映作業で、依存関係が想定と異なるエラーに遭遇した経験はないでしょうか。カスタム項目やApexクラスを追加したつもりが、参照先のコンポーネントが存在しないといったメッセージが出る、あるいは依存関係の一覧が予想より多い/少ないといったケースはよくあります。こうした問題を本番環境に反映する前に正しく切り分けなければ、リリース遅延や予期せぬ機能停止につながります。本記事では、変更セットの依存関係に関するトラブルシューティングと、本番反映前の確認手順を具体的に解説します。

【要点】この記事で確認すること

  • 最初に見る場所: 変更セットの「依存関係の表示」ボタンと、各コンポーネントの詳細画面の「使用状況」リンクを確認します。
  • 切り分けの軸: コンポーネントの種類(オブジェクト、項目、Apex、権限など)と、送信元Sandboxと本番環境の差分を比較します。
  • 注意点: 依存関係エラーを無視して強制的にアップロードしないでください。また、Sandboxのリフレッシュ後に依存関係が変化する場合があるため、最新の状態で再確認が必要です。

ADVERTISEMENT

変更セットの依存関係とは何か

変更セットには、選択したコンポーネントとその依存関係にあるコンポーネントが自動的に含まれます。例えば、カスタムオブジェクトを変更セットに追加すると、そのオブジェクト上のカスタム項目、関連リスト、権限セットなども依存関係として一覧に表示されます。しかし、実際の動作はコンポーネントの種類や設定内容によって異なり、「想定と違う」と感じる場面が発生します。

依存関係の仕組みを正しく理解するには、Salesforceがどのようにコンポーネント間の参照を追跡しているかを把握する必要があります。カスタム項目が数式で別の項目を参照している場合、その参照先も依存関係として含まれます。また、Apexクラスが別のクラスを呼び出している場合も同様です。この自動追跡のロジックが原因で、開発者の意図しないコンポーネントが追加される、あるいは逆に必要なコンポーネントが不足するといった問題が起こります。

依存関係エラーの原因を特定する手順

本番反映前に依存関係のエラーを解決するには、以下の手順で原因を切り分けてください。

  1. エラーメッセージを記録する: 変更セットのアップロード時や検証時に表示されるエラーメッセージを正確にコピーします。エラーの内容(例:「コンポーネントが見つかりません」「依存関係でエラーが発生しました」)によって対処が変わります。
  2. 依存関係の表示を確認する: 変更セットの編集画面にある「依存関係の表示」ボタンをクリックし、リストアップされたコンポーネント一覧と実際の意図を比較します。一覧に想定外のコンポーネントがあるか、不足しているコンポーネントがあるかをチェックします。
  3. 各コンポーネントの使用状況を調査する: エラーに関連するコンポーネント(例えば「見つからない」と言われたコンポーネント)の詳細画面を開き、「使用状況」リンクから参照元を確認します。ここで参照関係を把握し、依存関係が正しいか判断します。
  4. Sandbox間の差分を洗い出す: 送信元Sandboxと(可能であれば)本番Sandboxや別のSandboxで、同じコンポーネントのメタデータを比較します。特にカスタムラベル、権限セット、プロファイルなどの設定に違いがないか確認します。
  5. Sandboxのバージョンを確認する: 変更セットの送信元と宛先のSalesforce APIバージョンが一致しているか確認します。バージョンが異なると、特定のコンポーネントが認識されず依存関係エラーになることがあります。

これらの手順を踏んでも解決しない場合は、Salesforceの「デバッグログ」を有効にしてApexの動作を確認するか、Sandboxを最新の本番データでリフレッシュしてから再試行してください。

よくある依存関係エラーのパターンとその対処

パターン1: コンポーネントが「存在しない」と言われる

原因の多くは、送信元Sandboxには存在するが宛先組織(本番)には存在しないコンポーネントを参照しているケースです。例えば、Sandboxで新規作成したカスタム項目を数式で参照し、その数式を含むカスタム項目を変更セットに含めた場合、参照先の項目も一緒に変更セットに追加する必要があります。対処としては、変更セットに不足しているコンポーネントを手動で追加するか、参照関係を見直して不要な参照を削除します。

パターン2: 依存関係の一覧が想定より多い

これは特に権限セットやプロファイルでよく発生します。例えば、プロファイルに割り当てられた権限(オブジェクト権限や項目権限)が依存関係としてすべて表示されるため、多数のコンポーネントが自動追加されます。この場合、変更セットに含める権限を絞りたいなら、プロファイル全体ではなく、必要な権限のみを含む権限セットを作成し、その権限セットを変更セットに含める方が管理しやすいです。

パターン3: 依存関係が不足してアップロードできない

変更セットのアップロード時に「依存関係が不足しています」というエラーが出る場合があります。これは、変更セットが自動依存関係解決を試みたが、何らかの理由で一部の依存関係を認識できなかったことを意味します。具体的な例として、カスタムタブが参照するVisualforceページやApexクラスが、別の変更セットでしかアップロードされていない場合です。対処法は、不足しているコンポーネントを特定し、同じ変更セットに追加するか、事前に別の変更セットでデプロイ済みであることを確認します。

管理者が確認すべき設定と制限

依存関係の動作に影響を与える設定や制限がいくつかあります。本番反映前に以下の項目を管理者と一緒に確認しておくとよいでしょう。

設定/制限 影響内容
権限セットのライセンスタイプ 権限セットに含まれる権限が、本番環境で利用可能なライセンスと一致しない場合、依存関係エラーが発生します。
カスタムラベルの翻訳 カスタムラベルを変更セットに含める際、翻訳が有効な組織では依存関係として言語ごとの翻訳も自動追加されます。
Apexクラスのバージョン Apexクラスが特定のAPIバージョンでコンパイルされている場合、そのバージョン以降で削除された機能を参照しているとエラーになります。
Sandboxの種類 Developer SandboxとPartial Copy Sandboxでは、データや設定のコピー範囲が異なるため、依存関係として表示されるコンポーネントが変わることがあります。

特に本番環境ですでに存在するコンポーネントを変更する場合は、影響範囲を事前に把握するために「使用状況」の確認を徹底してください。また、大規模な変更セットを扱う際は、分割して小さな単位でアップロードすることで依存関係の問題を早期に発見できます。

本番反映前の事前チェックリスト

依存関係のトラブルを未然に防ぐため、本番反映前に以下のチェックリストを実施することを推奨します。

  • 変更セットの完全性チェック: 変更セットに含まれるすべてのコンポーネントが送信元Sandboxで有効であり、本番環境に存在しない(または上書き予定の)コンポーネントのみであることを確認します。
  • 依存関係の手動レビュー: 「依存関係の表示」を開き、リストされたコンポーネントを一枚のリストに印刷またはエクスポートして、チームでレビューします。
  • Sandbox上での検証テスト: 本番Sandboxや別のSandboxに変更セットをアップロード(デプロイ)し、検証エラーが出ないことを確認します。この際、テストクラスも適切に実行されているか確認します。
  • 権限の確認: 変更セットに権限セットやプロファイルが含まれる場合、本番環境の既存の権限と競合しないか、または適切に統合されるかを事前に検討します。
  • バックアップ: 本番環境に影響を与える可能性があるため、変更の影響を受けるコンポーネント(特にApexクラスやカスタム項目)の現在の定義をバックアップとして保存します。

このチェックリストを完了してから本番環境へのアップロードを行うことで、依存関係の想定外エラーを大幅に減らすことができます。

よくある質問(QA)

Q1: 依存関係エラーで「コンポーネントが存在しません」と表示されます。どうすればよいですか?

まずエラーメッセージに表示されたコンポーネント名を、本番環境の設定画面で検索してみてください。存在しない場合は、そのコンポーネントを変更セットに追加する必要があります。もし存在するがメタデータが異なる場合は、使用状況を確認して参照関係を修正してください。

Q2: Sandboxによって依存関係の表示が異なります。これは正常ですか?

はい、Sandboxの種類やリフレッシュ時期によってデータや設定が異なるため、依存関係の表示も変わることがあります。常に最新の本番データを使用したSandboxでテストすることをおすすめします。

Q3: 変更セットに含まれない依存関係があるようです。Salesforceのバグですか?

変更セットの依存関係解決は完全ではない場合があります。特にカスタムオブジェクトとその項目の関連、または数式での参照など、複雑な依存関係は手動で補う必要があります。Salesforceの既知の問題を確認するか、サポートに問い合わせてください。

まとめ

変更セットの依存関係が想定と異なる場合、まずはエラーメッセージと「依存関係の表示」を確認し、コンポーネントの使用状況を調査することが重要です。Sandbox間の差分やバージョンの不一致が原因であることも多いため、事前の比較チェックを徹底してください。どうしても切り分けが難しい場合は、変更セットを小さく分割してアップロードする、または別のSandboxでテストすることで問題の範囲を絞り込めます。本番反映前に十分な検証を行うことで、リリースのリスクを最小限に抑えましょう。


この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。