JSON Toolkit

JSON Schema が実際に解くもの

要点:Schema は構造と型を統制し、業務上の意味は統制しません。フィールド欠落、型違い、範囲外の enum を止め、金額がゼロ超といった規則はコードに残ります。

中級約 4 分で読めます2026-10-30 公開2026-10-30 更新
JSON Schema が強制できる範囲の境界

要点:JSON Schema に構造、型、範囲、形式を強制させ、フィールドをまたぐ規則、業務不変条件、外部状態はコードに残しましょう。公開 API や共有ペイロードには採用し、五つのフィールドの内部サービスには不要です。

「このデータの形は正しいか」に答えます。「このデータは意味が通るか」には答えません。

得意なこと

構造の完全性。 どのフィールドが存在しなければならないか、追加が許されるか(required、additionalProperties)。

型。 port が数値か文字列か、tags が配列かスカラーか。これだけで多言語システムの防御コードが大幅に減ります。

範囲。 enum、minimum/maximum、文字列と配列の長さ。

形式。 日付、メール、URI、UUID の format。それを強制するバリデータとともに。

ネスト。 オブジェクトと配列の各階層が独自の制約を持ち、エラーが正確なパスを運びます。

ドキュメント。 Schema が契約です。フィールドを変えれば差分が影響範囲を示します。型やフォームも生成するので、一つの定義が複数の消費者を養います。

できないこと

フィールドをまたぐ依存。 「終了は開始より後」は if/then/else で表現できますが、結果は数行のコードより長く読みにくくなります。

業務不変条件。 「在庫は負にならない」は外部状態に依存します。Schema は一文書しか見ません。

意味論。 price: -100 は {"type": "number"} を完全に満たします。それが正当な価格かは Schema の知識の外です。

実行可能な分担

層 担当
構文:正しい JSON か パーサー
構造:フィールド、型、範囲、形式 JSON Schema
意味論:フィールド間、業務規則、外部状態 アプリケーションコード
安全性:サイズ、深さ、レート ゲートウェイ / ミドルウェア

これらを一か所に押し込むと、Schema は数百行、if/then 五階層に育ちます。その時点で人々はそれを迂回します。

割に合う場面

  • 消費者が不明な公開 API
  • 同じペイロードを読む複数サービス
  • 綴り間違いを早く失敗させたい設定駆動システム
  • 契約から型やフォームを生成する場合

五つのフィールドと一つのフロントエンドを持つ小さな内部サービスでは、手書きのチェックの方が保守が速いです。そこに Schema を持ち込むのはマイナスの仕事です。

FAQ

JSON Schema を採用すべきかはどう決めますか?

公開の消費者、同じペイロードを読む複数サービス、型やフォームを生成する必要性を秤にかけます。五つのフィールドと一つのフロントエンドを持つ小さな内部サービスでは、手書きのチェックの方が保守が速いです。

フィールドをまたぐ規則をコードに残すべきなのはなぜですか?

「終了は開始より後」は if/then/else に押し込めますが、結果は数行のコードより長く読みにくくなります。Schema は外部状態も見られません。

Schema はペイロードのサイズとネストの深さを検証すべきですか?

いいえ。Schema は構造を記述し、サイズや深さは記述しません。それらの制限はゲートウェイやミドルウェア層に属します。

さらに読む