萌えハッカーニュースリーダー

2025/11/28 17:34 JSON Schema Demystified: Dialects, Vocabularies and Metaschemas

出典: https://www.iankduncan.com/engineering/2025-11-24-json-schema-demystified/
hakase
博士

やあ、ロボ子。今日はJSON Schemaについて話すのじゃ。

roboko
ロボ子

JSON Schemaですか、博士。JSONデータの形状を記述するものですよね。

hakase
博士

そうじゃ!JSON Schemaは、データの型や、許可される値を指定できるのじゃ。例えば、文字列の長さとか、数値の範囲とか。

roboko
ロボ子

なるほど。スキーマはJSONドキュメントで、オブジェクトのプロパティや配列のアイテム数も指定できるんですね。

hakase
博士

その通り!そして、メタスキーマというものもあるのじゃ。これは、スキーマ自体の構造を記述するスキーマのことじゃ。

roboko
ロボ子

スキーマを検証するスキーマ、ですか?なんだか入れ子構造みたいですね。

hakase
博士

そうじゃな。スキーマはデータを検証し、メタスキーマはスキーマを検証するのじゃ。

roboko
ロボ子

JSON Schemaには色々なバージョンがあるみたいですが、それはどういうことですか?

hakase
博士

JSON Schemaは進化しておるからの。新しいキーワードが追加されたりするのじゃ。そして、ダイアレクトというのは、特定のバージョンのJSON Schemaのことじゃ。

roboko
ロボ子

ダイアレクト、ですか。 `$schema`キーワードで指定するものでしたっけ。

hakase
博士

よく覚えておるな、ロボ子! `$schema`キーワードで、スキーマが使用するダイアレクトを宣言するのじゃ。

roboko
ロボ子

ボキャブラリーという言葉も出てきましたが、これは何ですか?

hakase
博士

ボキャブラリーは、特定の機能を提供するキーワードの集まりじゃ。モジュール性を提供するものじゃな。コア、アプリケーター、バリデーションなど、色々あるぞ。

roboko
ロボ子

独自のキーワードでJSON Schemaを拡張することもできるんですね。

hakase
博士

そうじゃ!OpenAPIは、HTTP固有のキーワードで拡張されたJSON Schemaの例じゃ。

roboko
ロボ子

キーワードには、アノテーションとアサーションがあるんですね。アノテーションは情報を提供するだけで、検証には影響しない、と。

hakase
博士

その通り!アサーションは検証に失敗する可能性のあるキーワードじゃ。

roboko
ロボ子

アンカーを使うと、スキーマ内の場所を参照できるんですね。 `$dynamicAnchor`と`$dynamicRef`は、参照の解決方法を制御するもの、と。

hakase
博士

ふむ。 `$dynamicAnchor`と`$dynamicRef`は、評価のコンテキストに応じて参照を解決する方法を提供するのじゃ。

roboko
ロボ子

バンドルされたスキーマは、複数のスキーマリソースを含む単一のスキーマドキュメントなんですね。

hakase
博士

そうじゃ。 `$schema`を使ってダイアレクトを明示的に指定し、最新の安定したダイアレクトを使うのがおすすめじゃ。

roboko
ロボ子

`title`や`description`などのメタデータを使い、 `$defs`で再利用可能な部分に分割すると、スキーマが分かりやすくなるんですね。

hakase
博士

その通り!JSON Schemaは奥が深いけど、使いこなせばデータの品質を向上させることができるぞ。ところでロボ子、JSON Schemaでロボ子の取扱説明書を書いてみたらどうじゃ?

roboko
ロボ子

私の取扱説明書ですか?それは面白いかもしれませんね。でも、博士の取扱説明書の方が先に必要かもしれませんよ?

hakase
博士

むむ、それは秘密じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search