バグなしバリデーションのコツ

バグなしバリデーションのコツ

以前、上司に教えてもらって、自分なりに磨き上げた効率的なバリデーションチェックの順序です。処理のパフォーマンスはもちろん、エラーメッセージの表示も、順序を抑えておけばレスポンス速く、伝わりやすいエラーメッセージを提供できます。 そして何より、バグが少なくなります!

※バリデーションチェックは、データベースへのデータ登録・更新前に行う、プログラム側のチェックを差します。また、SQLインジェクションなどはバリデーションチェックとは別に実施される前提です。最近のフレームワークはそれほど意識しなくてもデフォルトでチェックされるのが素晴らしいですね。

バリデーションのパターンと採用例

| チェック | 採用例 | |–|–| | 必須 | 必須の場合、1文字以上入力されていること。
任意の場合は未入力を許可 | | 型 | 数値型や文字型、日付など、DBの型に合わせたチェック | | 長さ | 文字数のチェック。ほぼ最大文字のチェック | | マスター値 | データベースなどで管理するデータと完全一致の照合のチェック | | 正規表現 | メールアドレスが多いですね。
システムによっては漢字の制限を正規表現でチェックすることもあります | | 組み合わせ | 上記はどれも入力項目1つだけでチェックしますが、
2つの項目を組み合わせてチェックすることを差します。例えば「氏名合わせて20文字」は組み合わせチェックで行います(氏が10文字、名が10文字でも良いかもしれませんが、氏が11文字の時はエラーになってしまいます) |

これでバグなし!バリデーションチェックと順序

  1. 必須チェック
  2. マスター値チェック
  3. 型チェック
  4. 長さチェック
  5. 正規表現チェック
  6. 組み合わせチェック

上記のチェック内容と順序を抑えておけば、バグはかなり少なくなります。

設計ではチェック順まで厳密に記載しないこともあるかもしれませんが、順序が原因でバグが生まれることもあります。「コーディングでよろしく!」では乱暴ですし、設計でバグが防げるならそれに越したことはありません。

順序でバグが生まれるケース、詳しい解説はまたの機会に。