JSON Schemaの文字列制約 — minLength、maxLength、pattern

生成されたJSON Schemaに minLength、maxLength、pattern などの文字列制約を追加する方法を学びます。基本的な型チェックを超えた検証を実現します。

Basic Types

詳細な説明

生成されたスキーマへの文字列制約の追加

基本的なジェネレーターは文字列値から "type": "string" を推論しますが、実際のバリデーションではより厳密な制約が必要です。初期スキーマを生成した後、いくつかのキーワードで文字列プロパティを強化できます。

利用可能な文字列キーワード

キーワード 目的
minLength 最小文字数 "minLength": 1
maxLength 最大文字数 "maxLength": 255
pattern 値が一致すべき正規表現 "pattern": "^[a-z]+$"
format セマンティックフォーマットのヒント "format": "email"

例: ユーザー名フィールドの強化

生成されたプロパティから:

{ "username": { "type": "string" } }

次のように改善できます:

{
  "username": {
    "type": "string",
    "minLength": 3,
    "maxLength": 30,
    "pattern": "^[a-zA-Z0-9_]+$"
  }
}

これにより、ユーザー名が3〜30文字で、英数字またはアンダースコアのみを含むことが保証されます。

format キーワード

format キーワードはアノテーションであり、設定に応じてバリデーターが強制する場合もあります。一般的な値には "email""uri""date-time""uuid""ipv4" があります。pattern とは異なり、format はカスタム正規表現を使用せず、バリデーターが認識された各フォーマットに対する組み込みロジックを持っています。

各キーワードの使い分け

  • データベースのカラム制限やUIフィールドサイズには minLength/maxLength を使用します。
  • 値が特定の構文に従う必要がある場合(スラッグ、コード、電話番号など)には pattern を使用します。
  • バリデーターが既に理解している既知の型には format を使用し、誤った正規表現のリスクを減らします。

これらのキーワードを組み合わせることで、緩い生成スキーマを本番対応のコントラクトに変換し、アプリケーションロジックに到達する前に無効なデータをキャッチできます。

ユースケース

ユーザー登録フォーム、コンテンツ管理API、または自由テキスト入力が特定の長さやフォーマットルールに準拠する必要があるエンドポイントのスキーマを構築する際に文字列制約を適用します。

試してみる — JSON Schema Generator

フルツールを開く