JSON Schemaとは — バリデーションルールの書き方とAPI設計への応用
JSON SchemaはJSONデータの構造・型・制約を記述するための仕様です。APIのリクエスト/レスポンスの検証・設定ファイルのバリデーション・フォームの入力チェックなど、データの整合性を保証するために広く使われています。
JSON Schemaの基本構造
JSON Schemaは$schema(バージョン宣言)・type(型)・properties(オブジェクトのプロパティ定義)・required(必須フィールド一覧)が基本要素です。typeにはstring・number・integer・boolean・array・object・nullが使えます。タイトルやdescriptionも付けられドキュメントとしても機能します。
文字列・数値の制約
文字列にはminLength・maxLength・pattern(正規表現)・format(email・uri・date-timeなど)で制約を追加できます。数値にはminimum・maximum・exclusiveMinimum・exclusiveMaximum・multipleOfが使えます。enumで取りうる値を限定することもできます。
ネスト・配列・oneOf/anyOf
propertiesをネストすることでオブジェクトの入れ子構造を定義できます。配列はtype: arrayにitemsでアイテムのスキーマを指定します。oneOfは指定されたスキーマのうちちょうど1つに一致する必要があり、anyOfは1つ以上に一致する必要があります。allOfで複数のスキーマを満たす条件を組み合わせられます。
JSON Schema Validatorの活用
JSON Schema ValidatorにスキーマJSONとデータJSONを貼り付けるとリアルタイムで検証し、日本語でエラー内容を表示します。どのフィールドが・どの制約で・なぜ不正なのかを即座に確認できます。OpenAPI/Swaggerのスキーマ定義の検証にも使えます。検証レポートはテキストファイルとして保存できます。