Salesforceで作るとき、標準機能・フロー・Apexをどう選ぶか
Salesforce で何かを作るとき、作り方は大きく 3 つあります。標準機能の設定、フロー、Apex(コード)です。3 つはできることが一部重なるため、どれを選ぶかで迷いがちです。このページでは、Salesforce の公式のガイドが示す判断の基準に沿って、選び方の順番を整理します(2026年10月時点)。
この記事は、Salesforce の開発・保守を請け負う mtTech が、作り方の選び方で迷いやすいことを公式の資料に沿ってまとめたものです。機能の説明は、末尾の公式の資料で確かめた内容です。
3 つの作り方を比べる
公式のガイドでは、フローと Apex はどちらもレコードの取得、条件の分岐、作成・更新・削除ができるとしています。そのうえで、できるかどうかではなく、どう作るか、後で性能や保守にどう響くかで選ぶよう勧めています。[7]
まず標準機能でできるかを確かめる
値の計算は、数式項目で作れます。数式は、ほかの項目の値をもとに、項目の値を自動で計算します。[2]
保存の前の入力チェックは、入力規則で作れます。保存の前に値が条件に合うかを確かめ、合わなければエラーを出して保存させません。入力規則は、画面に項目が無い場合や API からの保存にも働きます。[3]
1 つのオブジェクトの入力画面なら、公式のガイドは Lightning ページと動的フォームを勧めていて、最も手軽な方法としています。動的フォームでは、表示ルールで項目やセクションの出し分けができます。[8][4]
レコードの変更で動かすならフローから
レコードの作成や更新をきっかけに動く自動化では、公式のガイドはレコードトリガーフローと Apex トリガーの 2 つを柱としています。自動化が少ないオブジェクトでは、レコードトリガーフローを第一の選択としています。[7]
動いたレコード自身の項目を更新するだけなら、保存前に更新するフローが勧められています。ヘルプでは、レコード変更プロセスより 10 倍速く更新できるとしています。[6]
フローには、まとめて処理するための調整や、自動の再試行といった仕組みが組み込まれています。メールの通知や、「完了予定日の 3 日前に動かす」といった日付に合わせた処理(スケジュール済みパス)も、フローに向く用途とされています。[7]
Apex を選ぶ場面
開発者ガイドと公式のガイドでは、次のような場面で Apex を使うとしています。[9][7]
- Web サービスやメールサービスを作るとき。[9]
- 複数のオブジェクトにまたがる、複雑な入力チェックをするとき。[9]
- Flow Builder で対応できない、複雑な業務の処理を作るとき。[9]
- 数千件のレコードを速く処理するときや、Map・Set といったデータ構造を使うとき。[7]
- 保存点やロールバックで、1 回の処理のまとまりを細かく制御するとき。[7]
Apex を本番に出すには、単体テストがコードの 75% 以上を通り、そのテストが成功している必要があります(2026年10月時点)。作る前に、テストを書く手間も見込んでおきます。[10]
規模で選ぶ:自動化の密度
公式のガイドは、1 つのオブジェクトにかかる負荷を「自動化の密度」と呼びます。見るのは、1 回の保存で動く自動化の数、1 回の処理で扱うレコードの数、1 つの更新から連なって起きる別の更新の深さの 3 つです。目安は次のとおりです(2026年10月時点)。[7]
- 密度が低いオブジェクト(自動化が 15 未満、1 回に 200 件程度まで、連なる更新は 0〜1 回)では、レコードトリガーフローを使います。[7]
- 密度が中くらいのオブジェクト(自動化が 15〜30、連なる更新が 2〜4 回)では、フローから呼び出せる Apex(Invocable Apex)を組み合わせます。[7]
- 密度が高いオブジェクト(自動化が 30 を超える、大量のデータを扱う、連なる更新が 5 回以上)では、Apex トリガーを使います。[7]
もう 1 つの原則は、1 つのオブジェクトの自動化の入口を 1 つにそろえることです。同じオブジェクトで、フローと Apex トリガーを入口として混ぜないよう勧めています。今の数だけでなく、先々増える分も見込んで選びます。[7]
どの作り方でも、フローの説明欄やコードのコメントに、何のための処理かを書いておくよう案内されています。[7]
質問と答え
フローで作れるものを、Apex で作る理由はありますか。
公式のガイドでは、単純から中くらいの複雑さの処理は、管理者にも開発者にも扱いやすいフローを第一の候補としています。大量のデータの処理や、処理のまとまりの細かな制御が要るときは、Apex が向くとしています。[7]
フローと Apex を組み合わせてもよいですか。
組み合わせられます。公式のガイドは、フローに処理の流れを持たせ、重い計算を呼び出し可能な Apex に任せる形を、密度が中くらいのオブジェクト向けの選択としています。その場合も、入口は 1 つのオブジェクトにつき 1 つにそろえます。[7]
出典
- コードではなくてクリックによる Salesforce の拡張(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.extend_click_intro.htm&language=ja&type=5(2026-10-24 確認)
- 数式を使用した項目値の計算(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.customize_formuladef.htm&language=ja&type=5(2026-10-24 確認)
- 入力規則(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.fields_about_field_validation.htm&language=ja&type=5(2026-10-24 確認)
- 動的フォームでレコードの詳細を分割(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.dynamic_forms_overview.htm&language=ja&type=5(2026-10-24 確認)
- フローを使用した ToDo の自動化(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.flow.htm&language=ja&type=5(2026-10-24 確認)
- 保存前レコードトリガーフロー(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.flow_concepts_trigger_record.htm&language=ja&type=5(2026-10-24 確認)
- Architect's Guide To Record-Triggered Automation(Salesforce Architects, Decision Guides)architect.salesforce.com/docs/architect/decision-guides/guide/record-triggered(2026-10-24 確認)
- Architect's Guide To Building Forms(Salesforce Architects, Decision Guides)architect.salesforce.com/docs/architect/decision-guides/guide/build-forms(2026-10-24 確認)
- When Should I Use Apex?(Apex Developer Guide)developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_intro_when_use_apex.htm(2026-10-24 確認)
- Testing and Code Coverage(Apex Developer Guide)developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_code_coverage_intro.htm(2026-10-24 確認)