Administrator 練習問題 Q52
管理者は、最近の更新の一部として作成されたフローを更新するように求められました。編集のためにフローを開くと、ツールボックスには[割り当て][決定][レコードの取得][ループ]といったごく限られた要素しか表示されず、[画面][レコードの作成][アクション]は表示されません。これは何が原因でしょうか?
左の○で回答を選択。本文を押すと横線で除外でき、もう一度押すと戻せます。
1つ選択してください(0/1)
正答:C. フローは保存前(高速項目更新)のフローです。
解説
前提知識
フローとは
管理者がコードを書かずに自動化を組み立てられる機能です。Flow Builder という画面上で、部品(要素)を線でつないで処理の流れを作ります。左側にある部品置き場をツールボックスと呼びます。
レコードトリガーフローとは
レコードが作成・更新・削除されたことをきっかけに自動で動くフローです。作成時に、次の2つを必ず決めます。
- いつ動かすか:作成されたとき/更新されたとき/作成または更新されたとき/削除されたとき
- 何のために最適化するか:高速項目更新(保存前)か、アクションと関連レコード(保存後)か
保存前フローと保存後フロー
この2つは「速さ」だけの違いではなく、使える部品そのものが違います。
| 高速項目更新(保存前) | アクションと関連レコード(保存後) | |
|---|---|---|
| 動くタイミング | データベースに書き込まれる直前 | データベースに書き込まれた後 |
| できること | トリガー元レコード自身の項目値の変更。現行公式例ではカスタムエラーによる保存停止も案内されている | 他レコードの作成・更新、メール送信、Apex呼び出しなど |
| ツールボックスの部品 | ごく少ない | ほぼすべて |
保存前フローは「保存処理に割り込んで、書き込まれる直前の値を書き換える」という限定的な役割を担います。外部への働きかけや他レコードの操作はできないため、保存後フローより使用できる要素が大幅に限られます。
⚠️ 保存前フローでは利用できる要素が限定され、[レコードの作成]や[アクション]など、関連レコードや外部処理に働きかける要素は表示されません。なお、現行Salesforce Helpには、利用可能な要素を[割り当て][決定][レコードの取得][ループ]の4つとするページがある一方、保存前フローで[カスタムエラー]を使う現行手順もあります。本問では「4要素だけ」と一般化するのではなく、[レコードの作成]と[アクション]がない点から保存前フローと判定します。 💡 ここがまだモヤッとする方へ。保存前と保存後をもう少し丁寧に整理した記事があります → レコードトリガーフローの実行タイミングを理解する
アクティブとインアクティブ
フローには「有効化(アクティブ化)」という状態があります。有効化されていないフローは自動実行されませんが、編集はできます。そしてこの状態は、ツールボックスに並ぶ部品の種類には一切影響しません。
設問の状況を分解する
- 管理者が既存のフローを編集しようとして開いた
- ツールボックスに表示された要素がごく少ない(割り当て、決定、レコードの取得、ループなど)
- 設問はフローの種別を明示していないため、表示されている要素の偏りから種別を推測する必要がある
- 「これは何が原因か」=故障ではなく仕様として説明できる理由を探している 注目すべきは、表示されているのがどれも「レコードの外に働きかけない要素」ばかりである点です。
- 割り当て:変数や項目に値を入れる
- 決定:条件で分岐する
- レコードの取得:既存のレコードを読み取る(読むだけ)
- ループ:コレクションを繰り返し処理する 逆に、レコードの作成・削除、メール送信、画面、サブフロー、待機といった「外に影響を与える要素」が見当たりません。この偏り方は、フローがトリガー元レコードの保存前処理(高速項目更新)に最適化されていることを示しています。 初学者が誤解しやすいのは、「部品が少ない=壊れている/権限が足りない」と考えてしまう点です。Salesforceでは、フローの種類によってツールボックスの内容が変わるのが正常な挙動です。
選択肢の検討
A. フローは画面フロー(スクリーンフロー)です。 → ✕
画面フロー(スクリーンフロー)は、ユーザーに画面を見せながら対話的に進めるフローです。当然ながら**[画面]要素が使える**のが最大の特徴で、さらにレコードの作成・更新・削除、アクション、サブフローなども一通り使えます。つまり画面フローなら、ツールボックスはこんなに少なくなりません。 表示されている要素に[画面]が含まれていない時点で、画面フローの可能性は消えます。
B. フローのバージョンは非アクティブです。 → ✕(惜しいが不正解)
「何かがおかしい原因」を探すとき、有効・無効を疑うのは自然な発想です。しかし非アクティブなフローは、自動で動かないだけであって、編集画面の部品が減ることはありません。むしろ非アクティブなバージョンこそ自由に編集できる状態です。 これが正解になるのは、「フローを作ったのにレコードを保存しても何も起きない」という設問です。
C. フローは保存前(高速項目更新)のフローです。 → ⭕ 正解
保存前に最適化されたレコードトリガーフローは、トリガー元レコード自身の項目更新や保存前の検証に使用します。利用できる要素は限定され、[レコードの作成]や[アクション]は表示されません。設問の状況はこの仕様そのものであり、不具合でも権限不足でもありません。
D. 管理者のプロファイルに、フローの一部の要素を使用する権限がありません。 → ✕
Salesforceには「要素ごとに使用権限を割り当てる」という設定は存在しません。[フローの管理]権限を持つユーザーはFlow Builderを開いて編集でき、そのフロー種別で使える要素はすべてツールボックスに表示されます。「部品が少ないのは権限不足だ」という発想は自然ですが、原因になり得ません。権限が足りない場合は、そもそもFlow Builder自体を開けません。
管理者としての対処手順
この設問は原因の特定を問うものですが、実務では次のように確認します。
- [設定]→ クイック検索に「フロー」と入力 →[フロー]を開く
- 対象のフローを開き、キャンバス上部の[開始]要素をクリックする
- [フローを最適化する対象]の値を確認する
- 「高速項目更新」なら保存前フロー(要素が限られるのは正常)
- 「アクションと関連レコード」なら保存後フロー
- 利用中のリリースのFlow Builderで、保存前パスで使用できる要素の一覧を実機で確認する
- 保存前フローで実現できない処理(メール送信、他レコードの作成・更新など)が必要になった場合は、同じトリガー条件で保存後フローを別途作成する
⚠️ 保存前フローに無理やり機能を足そうとするより、「値の書き換えは保存前」「それ以外は保存後」と役割を分けて2本のフローに分割するほうが、パフォーマンスの面でも保守の面でも有利です。
あわせて覚えておきたいポイント
- ツールボックスに並ぶ要素は「フローの種類」で決まります。画面フロー、スケジュールトリガーフロー、レコードトリガーフロー(保存前/保存後)、プラットフォームイベントトリガーフローで、それぞれ使える部品が異なります。
- 保存前フローが速いのは、レコードをもう一度保存し直さずに、保存処理の途中で値を差し替えるからです。同じ「項目を更新する」処理でも、保存後フローで行うより処理負荷が小さくなります。
- 公式では、保存前フローはトリガー元レコードの項目更新や保存前の検証に使い、関連レコードの作成・更新、メール送信、外部システムの呼び出しなどは保存後フローを使うと整理されています。
出典(Salesforce公式)
- Create a Before-Save Flow for Better Data Quality — 「高速項目更新に最適化することで、フローは保存操作に割り込み、レコード作成の時点でデータを検証する」(保存前フローが保存処理に割り込む限定的な役割であることの根拠)
- Getting Started with Record-Triggered Flows — レコードトリガーフローの構成と、トリガーの種類・最適化対象の選択が作成時に必要であること
- Create After-Save Record-Triggered Flows — 他レコードの操作やアクションは保存後フローで行うという役割分担
- Build a Record-Triggered Flow(Trailhead) — 「高速項目更新をいつ使うか」「アクションと関連レコードをいつ使うか」を学習目標として明示