3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【完全実録】Salesforceフローの「正体」をVS Codeで暴き、デバッグの罠を突破するまで

3
Posted at

Salesforceフローの正体をVS Codeで暴き、デバッグの罠を突破するまでの全工程

Salesforceのフロー開発を、ブラウザ完結から一歩進めて「VS Code」を使った本格的な開発スタイルで進めた記録です。
プロジェクトの作成から、メタデータの取得、警告の解消、デバッグ成功までをまとめます。


1. 準備:VS Codeプロジェクトの作成

まずは、Salesforceの設定(メタデータ)を保存するための箱を作ります。

手順

  1. VS Codeを開き、Ctrl + Shift + P (Macは Cmd + Shift + P) を押す。
  2. SFDX: Create Project with Manifest を選択。
  3. Standard を選択し、プロジェクト名(例:MySalesforceProject)を入力。
  4. 保存場所を選んでプロジェクトを作成。
  5. 右下の No Default Org Set をクリックし、SFDX: Authorize an Org で自分のPlaygroundや開発環境にログイン(認証)します。

2. フローの「設計図」を手に入れる(メタデータの取得)

ブラウザで作ったフローを、PCにダウンロードしてXML形式で確認します。

手順

  1. VS Codeの左メニューにある 「Org Browser(雲のアイコン)」 をクリック。
  2. Flows という項目を探して展開します。
  3. 対象のフロー名の横にある 「Retrieve Source from Org(雲から↓の矢印)」 をクリック。
  4. force-app/main/default/flows/ フォルダ内に、.flow-meta.xml というファイルが生成されます。

💡 ここでわかったこと
XMLを覗くと、フローの各ステップがコードとして定義されているのがわかります。「これがフローの実体か!」と実感できる瞬間です。


3. 謎の警告「パフォーマンスの問題」を解読・修正

デバッグ画面で、以下のような警告が出ることがあります。

⚠️ 警告: 「Update_Opportunity レコードを更新 要素が原因でパフォーマンスの問題が生じる可能性があります。」

原因

スケジュール済みフローで、更新条件が曖昧(全てのレコードを探しに行く設定)だと、Salesforceの負荷が高くなるため警告が出ます。

解決策:ピンポイント指定

「レコードを更新」要素の設定を、以下のように**「今処理している1件」**を指すように修正します。

  • 更新するレコードを特定する条件: 条件を指定して特定
  • 検索条件: Id次の文字列と一致する{!$Record.Id}

これでSalesforceに「無駄な検索は不要だよ」と伝えられ、警告が消えます。


4. デバッグ時の「トリガーされてない」エラーの突破

いざテスト(デバッグ)しようとすると、次のエラーで止まることがあります。

エラー: 「トリガーされていないため、このフローは実行できません」

原因

スケジュール済みフローは、本番では自動実行されますが、デバッグ時は「どのデータを実験台にするか」を人間が選ぶ必要があるためです。

対処法

  1. デバッグ画面の 「商談 (Opportunity)」 などの検索窓をクリック。
  2. 組織にある既存のテストレコード(例:『スマート導入AA』など)を1つ選択。
  3. [実行] をクリック。

5. 成功の証:ログを読み解く(いまココ!)

実行後、右側のデバッグログにデータが表示されました。

デバッグ結果(JSON)

{
  "StageName": "Id. Decision Makers",
  "Name": "スマート導入AA",
  "Id": "006fj000008cbDFAAY",
  ...
}

Result: All records whose IDs are in {!$Record} are ready to be updated when the next screen, pause, or local action is executed or when the interview finishes.

4. ログからわかったこと(シミュレーションの成功)

  • Variable Values: 選択したレコード(例:『スマート導入AA』)の現在の値がJSON形式で正しく読み込まれていることが確認できました。
  • Result: 「更新の準備が完了した(ready to be updated)」というメッセージが表示されています。

これは、「もし本番環境でスケジュールが実行されたら、このレコードは意図通りに更新されていた」 というシミュレーションが成功した証拠です!


まとめと次のステップ

今回の作業を通して、Salesforce開発における一連のサイクルを完遂することができました。

  1. 取得(Retrieve): VS Codeでメタデータをダウンロードし、フローの「実体(XML)」を理解した。
  2. 修正(Fix): パフォーマンス警告を読み解き、負荷の低い「ID一致」条件へとロジックを最適化した。
  3. 検証(Debug): テストデータを手動で割り当てることで、デバッグログが正常に通ることを確認した。

あとは、フロービルダーで 「有効化」 ボタンを押せば、設定したスケジュール(水曜 10:00)通りに自動処理が開始されます。

ブラウザ上の操作だけでなく、裏側の仕組み(メタデータ)を理解したことで、ただ作るよりもずっと安心感と確信を持った開発ができるようになりました!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?