べにおブログ

学んだことを、ゆっくり深く。

検証ルールとは何か:「Trueなら保存させない」で考える入力チェック

結論:まずこれだけ覚える

検証ルール(入力規則)は、レコードの保存時に走る門番です。画面からの保存だけでなく、APIやデータインポートなどによる保存でも評価されます。

  • 管理者が書くのは「こうなっていたらダメ」という数式(エラー条件数式)
  • その数式が True を返したら保存を止め、エラーメッセージを表示する
  • False なら何も起こらず、そのまま保存される ここが初学者の最大のつまずきポイントです。「正しい状態」ではなく「あってはならない状態」を書きます。 発想が逆になっているだけで、数式は一生完成しません。 正解判定の核となるのは、エラー条件数式エラーメッセージエラーメッセージの表示場所の3点です。作成画面には、このほかルール名、[有効]、説明などの管理項目もあります。

用語をひとつずつ噛み砕く

エラー条件数式とは

項目の値を評価して、True か False を返す式です。Salesforce公式Trailheadは「数式が True になった場合、それはユーザーが入力したデータが無効な値を含んでいることを意味する」と説明しています。 例:完了予定日を今日より前にさせたくない場合

CloseDate < TODAY()

「完了予定日が今日より前」= あってはならない状態。だからこれが True のときに保存を止めます。IF(condition, TRUE, FALSE) と書く必要はありません。条件そのものが True/False を返すからです。

エラーメッセージとは

保存が止まったときにユーザーへ見せる文言です。公式は「どういう入力なら有効なのかを伝える指示を書くこと」を推奨しています。「エラーです」ではなく「完了予定日は今日以降の日付を入力してください」と書きます。

エラーメッセージの表示場所とは

エラーをどこに出すかの指定で、選べるのは次の2つです。

  • ページの最上位:レコード全体の上部にまとめて表示する
  • 項目:指定した項目のすぐ横に表示する(どの項目が原因か一目でわかる) 公式ヘルプは「項目の横にエラーを表示するには、[項目]を選択して項目を指定する」「エラーの表示場所が項目の場合、その検証ルールは項目の詳細ページにも表示される」と説明しています。

数式項目の設定と混同しない

検証ルールの作成画面には「数式の戻り値の型」という設定はありません。検証ルールの戻り値は常に True/False(Boolean)に決まっているからです。 戻り値の型を選ぶのは、数式項目(Formula Field) を作るときです。こちらは「テキスト」「数値」「通貨」「チェックボックス」などから選びます。名前が似ているので、選択肢に混ぜられると迷います。

設定項目検証ルール数式項目
数式の戻り値の型を選ぶ✕(常にBoolean)
エラーメッセージ
エラーメッセージの表示場所
レコードの保存を止める✕(値を表示するだけ)

また、検証ルールには「有効日」や「適用期間」といった設定もありません。あるのは[有効]チェックボックスだけで、オンかオフかの二択です。期間で切り替えたいなら、数式の中に TODAY() を使った条件を書き込みます。


実務での作成手順

  1. [設定]→[オブジェクトマネージャ]で対象オブジェクトを開く
  2. [入力規則(検証ルール)]→[新規]をクリックする
  3. ルール名を入力し、[有効]にチェックを入れる
  4. エラー条件数式に「あってはならない状態」を書く
  5. [構文を確認]でエラーがないことを確かめる
  6. エラーメッセージを、ユーザーが次に何をすべきかわかる文で書く
  7. エラーメッセージの表示場所を[ページの最上位]か[項目]から選ぶ
  8. 保存し、実際にNGデータを入れて止まることを確認する

よくある質問

Q. 必須項目にするのと、検証ルールで空欄を弾くのは何が違いますか? ページレイアウトの必須設定は、主にそのページレイアウトを使う画面入力を制御します。検証ルールはAPI、データインポート、自動化からの保存でも評価されるため、入力経路をまたいで同じ条件を適用したい場合に適しています。 Q. 承認プロセスや割り当てルールでは代用できますか? 本来の用途が異なります。承認プロセスは人による承認経路、割り当てルールはリードやケースの所有者割り当てを管理する機能です。単純な項目条件で保存を止める要件には検証ルールが適しています。なお、現在はレコードトリガーフローの[カスタムエラー]要素でも、条件に合う変更をロールバックしてエラーを表示できます。関連レコードを調べるなど、検証ルールだけでは表現しにくい条件ではフローも検討します。


出典(Salesforce公式)

  • Optimize Data Entry with Validation Rules(Trailhead) — 「検証ルールは、ユーザーが入力したデータが、保存前に指定した基準を満たしているかを検証する。数式は1つ以上の項目のデータを評価して True または False を返す。True を返した場合、入力されたデータが無効な値を含んでいることを意味する。検証ルールには、無効な値が入力されたときに表示するエラーメッセージも含められる」
  • Get Started with Validation Rules(Trailhead) — 数式がTRUEになるとエラーメッセージを表示して保存をブロックすることと、条件式自体がBooleanを返すためIF(condition, TRUE, FALSE)が不要であることを裏付ける
  • Tips for Writing Validation Rules — 「検証ルールを定義するとき、エラーの表示場所を[ページの最上位]または[項目]に設定できる」「エラーメッセージには、どういう入力が有効なのかを伝える指示を書く(例:完了予定日は今日より後にしてください)」
  • Validation Rules Fields — 入力規則の作成画面にルール名、[有効]、説明、エラー条件数式、エラーメッセージ、エラーの表示場所があることと、項目の横に表示する場合は[項目]を選んで対象項目を指定することを裏付ける
  • Custom Error Element — レコードトリガーフローでも、[カスタムエラー]要素を使って変更をロールバックし、レコード全体または項目にエラーを表示できることを裏付けています。