【Salesforce】フローのデバッグを使えない時に原因を切り分ける手順

【Salesforce】フローのデバッグを使えない時に原因を切り分ける手順
🛡️ 超解決

Salesforceのフロー(Process BuilderやCloud Flow Designerで作成した自動化処理)をデバッグする際、想定通りに動作しない、エラーが発生する、特定のユーザーだけ問題が起きるなどの状況に遭遇することがあります。こうした問題の原因が、フロー自体の設計ミスなのか、利用している環境(Sandboxや本番、ユーザーのブラウザや権限設定)に起因するのかを切り分けることは、迅速な解決のために欠かせません。本記事では、フローのデバッグで困ったときに、環境要因を体系的に確認し、原因を特定する方法を解説します。具体的な手順や比較表を用いて、次の行動を判断できるようになることを目指します。

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

  • 最初に見る場所: フロー実行時に表示されるエラーメッセージとデバッグログの内容を確認します。特にエラーコードやスタックトレースが手がかりになります。
  • 切り分けの軸: ブラウザや端末のキャッシュ・拡張機能、ユーザーの権限(プロファイル・権限セット)、フローのバージョンと有効状態、組織の制限値(ガバナ制限)の4つを軸に調査します。
  • 注意点: 本番環境でのデバッグは影響範囲を考慮し、可能な限りSandboxや開発環境で再現確認を行ってから対処してください。管理者権限での操作が必要な場合があります。

ADVERTISEMENT

フローのデバッグでよくある問題と原因の分類

フローのデバッグ中に遭遇する問題は、大きく分けて「フローが実行されない」「エラーが発生する」「結果が期待と異なる」の3つに分類できます。それぞれの主な原因を以下に整理します。

フローが実行されない

フローがトリガー条件を満たしても動作しない場合、次の可能性を検討します。

  • フローが無効になっている、またはバージョンが古い。
  • トリガー条件のオブジェクトや項目にアクセス権限がない。
  • 組織のプロセス自動化設定で「フロー」が無効化されている。
  • ユーザーのプロファイルで「フローの実行」権限が不足している。

エラーが発生する

具体的なエラーメッセージ(例:UNKNOWN_EXCEPTION、REQUIRED_FIELD_MISSING、FLOW_RECORD_UPDATE_FAILED)が表示される場合、以下の原因が考えられます。

  • 参照先のレコードが存在しない、またはロックされている。
  • ガバナ制限(1回のフロー実行でのSOQLクエリ数やDML操作数)を超過している。
  • Apexトリガーや他の自動化プロセスとの競合。
  • 入力値のデータ型不一致や必須項目の欠落。

結果が期待と異なる

エラーは出ないが、レコード更新やメール送信などが意図通りにならない場合、以下の点を確認します。

  • 条件分岐(Decision要素)の評価が想定外の結果になっている。
  • ループ内の処理順序やカウンターの初期化ミス。
  • 参照している数式項目や項目更新が正しく動作していない。
  • 他のユーザーや時間帯によって動作が変わる(共有設定やセキュリティの影響)。

利用環境の切り分け手順

問題が発生した際、環境要因を切り分けるために以下の手順を順に試すことを推奨します。各手順で結果がどう変わるかを記録しておくと、原因特定がスムーズになります。

  1. エラーメッセージとデバッグログを記録する。 フローの「デバッグ」ボタン(またはFlow Debugger)を実行し、表示されるエラーメッセージをコピーします。デバッグログの内容も確認し、特に「FLOW」カテゴリのログを参照します。
  2. 別のブラウザやシークレットウィンドウで試す。 ブラウザのキャッシュや拡張機能が原因の場合があるため、異なるブラウザ(Chrome、Edge、Firefox)またはシークレットモードで同じ操作を再現します。
  3. 別のユーザーアカウントで実行する。 システム管理者権限を持つユーザーと、一般ユーザーで動作が異なるか確認します。可能であれば、権限セットやプロファイルが異なる複数のアカウントで試します。
  4. Sandboxや開発環境で再現する。 本番環境で問題が発生した場合、Sandbox環境(Full Copy Sandbox、Developer Sandboxなど)で同じフローを有効化し、同様のデータを用意して実行します。Sandboxで再現できれば環境固有の問題と判断できます。
  5. フローのバージョンと設定を確認する。 フローのバージョン履歴を開き、最新バージョンが有効化されているか、以前のバージョンで動作していたかを確認します。また、フローのプロパティで「APIバージョン」や「保護コンポーネント」の設定が適切かチェックします。
  6. ガバナ制限に抵触していないか調査する。 組織の「プロセス自動化設定」からフローの制限値を確認します。特に「1回のフロー実行あたりのSOQLクエリ数」「DML文の数」「実行時間」などの制限を超えていないか、デバッグログの「Limit」セクションで確認します。

環境別の比較表

環境によって動作が異なる可能性があるため、以下の比較表を参考に切り分けに役立ててください。

環境 用途 デバッグの容易さ ガバナ制限 注意点
Sandbox(Full Copy) 本番に近いデータと設定でテスト 高い(自由に変更可能) 本番とほぼ同じ 本番データをコピーする際、マスキング設定に注意
Sandbox(Developer/Developer Pro) 開発・単体テスト 高い 本番より制限が緩い場合あり データ量が少ないため、ガバナ制限の問題を見逃しやすい
本番組織 実際の業務運用 低い(変更の影響大) 厳格に適用 デバッグは慎重に行い、必要ならサンドボックスで再現
Developer Edition(無料組織) 個人学習・概念実証 高い 本番より緩い場合が多い 機能制限あり(例:同時実行数)
Trailhead Playground 学習用の一時的な環境 高い 緩い 本番との差異が大きいため、再現性は限定的

失敗パターンと対処例

実際の現場でよく見られる失敗パターンをいくつか紹介します。これらを参考に、自身の状況と照らし合わせてみてください。

パターン1:Sandboxで動作するが本番でエラーになる

Sandboxでは正常に動作したフローが、本番環境でエラーになるケースです。多くの場合、データ量の違いが原因です。Sandboxはデータが少ないためガバナ制限に抵触しにくいですが、本番では大量データを処理するために制限を超えることがあります。対処として、本番の類似データ量でテストできる環境(Full Copy Sandbox)を用意するか、フロー内でバッチ処理やループの効率化を検討します。

パターン2:特定のユーザーのみフローが動かない

同じフローでも、ユーザーによってエラーが発生したり、フローがトリガーされないことがあります。原因としては、ユーザーのプロファイルや権限セットで必要なオブジェクトへのアクセス権が不足している、または共有設定によって参照できるレコードが限られている場合が考えられます。管理者に依頼し、対象ユーザーの権限を確認してもらってください。特に「フローの実行」「フローのデバッグ」権限が有効かどうかを確認しましょう。

パターン3:フローは実行されたが、結果が一部のレコードだけ異なる

条件分岐の評価が想定外の結果になる場合です。例えば、数式条件が特定の値で正しく判定されない、または日付や通貨のフォーマットがユーザーのロケール設定によって変わることがあります。この場合、フロー内で使用している数式や項目値が環境に依存していないか確認します。特に数式で「$User」や「$Organization」などのグローバル変数を使っている場合、ユーザーごとに結果が異なる可能性があります。

管理者に確認すべき情報

フローのデバッグで原因が特定できない場合、Salesforce管理者(システム管理者)に以下の情報を伝えると、調査がスムーズに進みます。

  • エラーメッセージのスクリーンショットとデバッグログのID:具体的なエラー文とログから問題箇所を特定できます。
  • 問題が発生したユーザー名とブラウザ情報:ユーザー固有の問題かどうかの判断材料になります。
  • フローの名前とバージョン:管理者が該当フローを迅速に開くために必要です。
  • 発生時刻と頻度:一時的な問題か恒常的な問題かの判断に役立ちます。
  • 組織のプロセス自動化設定画面のスクリーンショット:フローの有効状態や制限値の設定を確認できます。

管理者はこれらの情報をもとに、組織設定や権限、他の自動化プロセスとの競合などを調査します。また、必要に応じて「Flow Debugger」や「Event Monitoring」を使用して詳細なトレースを取得することも可能です。

よくある質問

Q: フローのデバッグログが表示されないのですが、どうすればよいですか?

デバッグログが表示されない場合、以下の原因が考えられます。まず、ユーザーのプロファイルで「デバッグログの表示」権限が有効か確認してください。また、フローのデバッグ実行時に「詳細ログ」オプションを選択しているかどうかも確認します。それでも表示されない場合は、組織の「監査ログ」設定でデバッグログが有効になっているか管理者に問い合わせてください。

Q: Sandboxで動くのに本番で動かないのはなぜですか?

最も多い原因は、データ量の違いによるガバナ制限の超過と、本番環境固有の設定(プロファイル、共有ルール、トリガーなど)が影響していることです。Sandboxと本番で同じ設定になっているか、特に「プロセス自動化設定」の「フロー関連の制限」を比較してください。また、本番環境にしか存在しないカスタムオブジェクトや項目がないかも確認ポイントです。

Q: フローの実行が遅いのですが、環境が原因ですか?

フローの実行速度に影響する環境要因として、ネットワーク遅延、ブラウザの処理能力、組織の負荷(同時実行数)が挙げられます。まずは、同じフローを別のネットワークや時間帯で試してみてください。また、フロー内で大量のレコードをループ処理している場合、ガバナ制限に近づくと処理が遅くなることがあります。デバッグログの「実行時間」を確認し、ボトルネックとなっている要素を特定してください。

Q: フローのデバッグ時に「権限がありません」と表示される

このエラーは、フローをデバッグしようとしているユーザーに「フローのデバッグ」権限が不足していることを示します。システム管理者または適切な権限セットが割り当てられたユーザーで再度実行してください。権限は「設定」→「ユーザー」→「権限セット」から確認・付与できます。

まとめ

フローのデバッグで問題が発生した場合、まずはエラーメッセージとデバッグログを記録し、ブラウザ・ユーザー・環境(Sandbox/本番)の順に切り分けていくことが重要です。原因がフロー自体の設計なのか、環境要因なのかを明確にすることで、適切な対処(修正か管理者へのエスカレーションか)を判断できます。本記事で紹介した手順と比較表を参考に、効率的なトラブルシューティングを実践してください。特に環境間の差異に注意し、データ量や権限設定を意識することで、再発防止にもつながります。


この記事の監修者
✍️

超解決 第一編集部

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