Salesforceの変更セットを利用して別の組織へカスタマイズを移行する際、依存関係に関するエラーが原因でアップロードやデプロイが失敗することがあります。特に、多数のコンポーネントを一度に移行しようとすると、どのコンポーネントがどのコンポーネントに依存しているのかを把握しきれず、原因の特定に時間を費やすケースが少なくありません。この記事では、変更セットの依存関係で困ったときに、管理画面でどのようなポイントを確認すればよいのかを具体的に解説します。実際の画面操作に基づいた手順や、よくある失敗パターンを紹介し、スムーズに依存関係を解決できるようにサポートします。
【要点】この記事で確認すること
- 最初に見る場所: 変更セットの「依存関係の表示」ボタン、および各コンポーネントの詳細画面にある「使用場所」
- 切り分けの軸: コンポーネントの種類(カスタムオブジェクト、Apexクラス、権限セットなど)ごとに依存関係の原因を調査する
- 注意点: 管理画面の項目名は組織の設定やエディションによって異なる場合があるため、実際の画面を確認しながら進めてください
ADVERTISEMENT
目次
変更セットの依存関係を理解するための基本
変更セットは、ソース組織からターゲット組織へカスタマイズを移行するための機能です。しかし、Salesforceではコンポーネント間に暗黙的な依存関係が存在するため、移行対象として選択したコンポーネントだけでは不十分な場合があります。依存関係とは、あるコンポーネントが正しく機能するために別のコンポーネントが必要とされる関係を指します。たとえば、カスタム項目はそれが属するカスタムオブジェクトに依存し、Apexトリガはそれが参照するApexクラスに依存します。変更セットを作成する際、これらの依存関係をすべて含めなければ、デプロイ時にエラーが発生します。
なぜ依存関係の確認が重要なのか
依存関係が不足したまま変更セットをアップロードすると、ターゲット組織でのデプロイが失敗し、エラーメッセージには「依存するコンポーネントが見つかりません」といった内容が表示されます。これにより、移行作業が中断され、原因の調査に余分な時間がかかります。また、依存関係を過剰に含めると不要なコンポーネントが移行され、ターゲット組織のメタデータが肥大化するリスクもあります。したがって、正確な依存関係の把握がスムーズな移行の鍵となります。
依存関係の種類
Salesforceの依存関係には大きく分けて「強制依存」と「オプション依存」があります。強制依存は、コンポーネントが機能するために必ず必要なもの(例:カスタムオブジェクトの必須項目)であり、変更セットに自動的に追加されない場合があります。オプション依存は、参照関係などの任意の関連です。管理画面で依存関係を確認する際には、強制依存を優先的にチェックする必要があります。
依存関係エラーが発生する代表的なパターンと比較表
実際に発生しやすい依存関係エラーのパターンをいくつか紹介します。これらのパターンを頭に入れておくことで、原因特定が容易になります。
| パターン | 典型的なエラー | 依存関係の例 |
|---|---|---|
| カスタムオブジェクトと項目 | 「カスタムオブジェクトが見つかりません」 | カスタム項目を移行するには、それが属するカスタムオブジェクトも同時に含める必要がある |
| Apexクラスとトリガ | 「クラスXXが存在しません」 | Apexトリガが参照するApexクラスが変更セットに含まれていない |
| 権限セットとプロファイル | 「オブジェクト権限が不足しています」 | 権限セットがカスタムオブジェクトへのアクセス権を付与する場合、そのオブジェクトも移行が必要 |
| レイアウトとカスタム項目 | 「項目XXがページレイアウトに存在しません」 | ページレイアウトに配置されたカスタム項目が移行されていない |
これらのパターンはあくまで一例です。実際のエラーは複合的に発生することもあるため、管理画面での確認が欠かせません。
管理画面で依存関係を確認する具体的な手順
ここでは、変更セットの画面から依存関係を確認する手順を説明します。以下の手順は、SalesforceのClassicおよびLightning Experienceの両方に対応していますが、画面のラベルが異なる場合は適宜読み替えてください。
- 「設定」>「変更セット」>「送信変更セット」または「受信変更セット」から該当する変更セットを開きます。
- 変更セットの詳細画面で、「変更セットコンポーネント」関連リストを確認します。ここに現在含まれている全コンポーネントが表示されます。
- 各コンポーネントの行にある「依存関係の表示」リンクをクリックします。これにより、そのコンポーネントが依存する他のコンポーネントの一覧がポップアップで表示されます。
- 表示された依存コンポーネントがすでに変更セットに含まれているかどうかを確認します。含まれていない場合は、「変更セットに追加」ボタン(存在する場合)をクリックして追加するか、手動でコンポーネントを検索して追加します。
- すべてのコンポーネントについて同様の確認を行い、依存関係がすべてカバーされていることを確認します。特に、カスタムオブジェクトやApexクラスなど、他のコンポーネントから多く参照されるものは注意深くチェックしてください。
- 必要に応じて、画面上部の「すべての依存関係を表示」ボタン(Lightning Experienceでは「依存関係を表示」)をクリックすると、変更セット全体の依存関係をツリー形式で確認できます。このビューでは、不足している依存関係が一目で分かります。
上記の手順で依存関係を確認しても不足が解消されない場合は、各コンポーネントの詳細ページにある「使用場所」関連リストも活用してください。これは、コンポーネントが他のどのメタデータから参照されているかを表示する機能です。例えば、カスタム項目の「使用場所」を見ると、その項目を参照している数式、検証ルール、Apexクラスなどが一覧表示されます。
依存関係を解決するための実践的なアプローチ
手動での依存関係追加
自動で依存関係が追加されない場合は、手動でコンポーネントを追加する必要があります。変更セットの編集画面で「追加」ボタンをクリックし、コンポーネントの種類を選択して検索します。このとき、依存関係の名前を正確に入力するか、ワイルドカード検索を活用してください。また、関連するコンポーネントをまとめて追加できる「一括追加」機能(エディションにより有無あり)も役立ちます。
変更セットの分割
依存関係が複雑で一度に移行するのが難しい場合は、変更セットを複数に分割する方法も検討します。例えば、カスタムオブジェクトとそれに依存する項目・レイアウトを最初の変更セットで移行し、その後、Apexクラスや権限セットを別の変更セットで移行するといった順序付けが効果的です。分割する際は、移行の順序を決めるために依存関係の方向を理解しておく必要があります。通常、親コンポーネント(カスタムオブジェクトなど)を先に移行し、子コンポーネントを後から移行します。
管理者に確認すべきポイント
依存関係の問題が解決できない場合、管理者に以下の情報を伝えるとスムーズです。
- エラーメッセージの全文(スクリーンショットがあればなお良い)
- 変更セットに含めたコンポーネントの一覧
- 「依存関係の表示」で不足していたコンポーネント
- ターゲット組織のエディションや利用可能な機能(管理パッケージの有無など)
管理者はこれらの情報をもとに、Sandbox間の差や権限設定を確認することができます。
よくある失敗例とその回避策
失敗例1: 依存関係の見落とし
最も多い失敗は、変更セットに含めたコンポーネントの依存関係を十分に確認せずにアップロードしてしまうことです。回避策として、変更セットをアップロードする前に、必ず「すべての依存関係を表示」機能を使って全体を俯瞰する習慣をつけてください。また、テスト用のサンドボックスで事前にデプロイテストを実施することも有効です。
失敗例2: 移行順序の誤り
特に複数の変更セットを使用する場合、移行する順序を誤ると依存関係エラーが発生します。例えば、Apexトリガを先にデプロイしようとして、参照先のクラスがまだ存在しないケースです。対策として、依存関係の方向に従い、親コンポーネントから子コンポーネントの順にデプロイする計画を立ててください。また、各変更セットのデプロイ後にエラーログを確認し、問題があればすぐに次のステップに進まないようにします。
失敗例3: 管理パッケージとの競合
ターゲット組織にインストールされている管理パッケージが、移行しようとするカスタマイズと競合することがあります。例えば、管理パッケージが同名のカスタムオブジェクトを定義している場合、変更セットのデプロイが失敗します。このような場合、事前にターゲット組織のメタデータ構成を確認し、競合する名前がないかをチェックしてください。競合が発生した場合は、名前の変更や管理パッケージのベンダーへの問い合わせが必要になることもあります。
依存関係エラーが発生した場合のトラブルシューティング
エラーメッセージの読み方
デプロイ時に表示されるエラーメッセージには、不足しているコンポーネントの名前や種類が示されていることが多いです。例えば、「オブジェクト ‘MyObject__c’ が見つかりません」というメッセージがあれば、変更セットに ‘MyObject__c’ カスタムオブジェクトが含まれていないことを意味します。エラーメッセージを注意深く読み、不足コンポーネントを特定してください。また、エラーが複数表示される場合は、最初のエラーが原因で後続のエラーが発生していることもあるため、最初のエラーから対処します。
確認すべきログ
デプロイ履歴の詳細から、各コンポーネントの検証結果を確認できます。設定 > 変更セット > 監視 > デプロイ履歴 で該当するデプロイを開き、「コンポーネントの検証」タブをクリックすると、各コンポーネントが成功したか失敗したかが一覧表示されます。失敗したコンポーネントをクリックすると、具体的なエラーメッセージが表示されるので、そこから依存関係の不足を特定できます。
管理画面以外の確認方法
管理画面だけでは依存関係がすべて表示されない場合があります。そのようなときは、WorkbenchやSFDX(Salesforce CLI)などの外部ツールを使ってメタデータを直接取得し、依存関係を解析する方法もあります。ただし、会社のポリシーで外部ツールの使用が制限されている場合は、必ず管理者に確認してください。
よくある質問(FAQ)
Q1: 変更セットに「すべての依存関係を自動追加」する設定はありますか?
A1: 残念ながら、標準の変更セット機能には自動的にすべての依存関係を追加するオプションはありません。各コンポーネントの依存関係を手動で確認し、追加する必要があります。ただし、一部のサードパーティツールでは自動追加機能を提供している場合があります。
Q2: 依存関係の表示に時間がかかるのはなぜですか?
A2: 変更セットに含まれるコンポーネント数が多い場合や、組織のメタデータが大量にある場合、依存関係の計算に時間がかかることがあります。特に、Apexクラスやトリガの数が多いと処理が重くなります。その場合は、変更セットを分割するか、夜間など負荷の低い時間帯に確認することをおすすめします。
Q3: 依存関係に表示されない隠れた依存関係はありますか?
A3: 動的なApex参照(Dynamic Apex)やカスタム設定の値による参照など、コード内で文字列として指定されている依存関係は、管理画面の依存関係表示では検出されないことがあります。このような場合は、ソースコードのレビューやテストを通じて確認する必要があります。
まとめ
変更セットの依存関係で困ったときは、管理画面の「依存関係の表示」機能を積極的に活用し、不足しているコンポーネントを特定することが第一歩です。また、エラーメッセージを正確に読み取り、デプロイ履歴のログを確認することで、効率的に原因を突き止められます。さらに、変更セットの分割や手動追加といったアプローチを組み合わせることで、複雑な依存関係も解決できます。この記事で紹介した確認ポイントを実践し、依存関係エラーに悩まされることなく、スムーズなカスタマイズ移行を実現してください。
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Excel】文字が入っているセルの「個数」を数える!COUNTA関数の簡単な使い方
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
