JSON Schema

JSON Schemaとは

JSON Schemaは、[[JSON]]データが「どんな形をしているべきか」を定義するための仕様です。「このキーは必須」「この値は文字列型」「この配列は最低1件以上」といったルールを、JSON自体で記述します。

{
  "type": "object",
  "required": ["title", "steps"],
  "properties": {
    "title": { "type": "string" },
    "steps": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["step_no", "operation"],
        "properties": {
          "step_no": { "type": "integer" },
          "operation": { "type": "string" }
        }
      }
    }
  }
}

このスキーマがあれば、受け取ったJSONに対して「titleが無い」「stepsが空配列」といった不備を、人間が目視しなくてもプログラムが自動で検出できます。

なぜLLMの出力検証に向くか

[[生成AI・LLM]]にJSON形式での出力を指示しても、必須項目が抜けていたり、型が期待と違ったりすることがあります。JSON Schemaによる検証を挟むことで、次のような使い方ができます。

  • 生成された[[JSON]]をJSON Schemaでチェックし、不備があればその場で弾くか、再生成を指示する
  • [[Function Calling]]では「LLMがどんな引数でツールを呼び出せるか」の定義自体にJSON Schemaが使われることが多い
  • 人間のレビュー前に機械的なチェックを済ませておくことで、レビュー担当者は「形式の不備」ではなく「内容の妥当性」に集中できる

「LLMの出力を信用しすぎない」ための、もっとも基本的で低コストな安全装置がJSON Schemaによる検証です。

初学者向けポイント

  • JSON Schemaは構造(形)を検証するものであり、内容が正しいか(意味的な妥当性)までは保証しません。「型はstringで必須項目も揃っているが、値の中身は間違っている」ケースは別途チェックが必要です
  • 検証に失敗した場合の挙動(エラーを返す/デフォルト値で補完する/人間に確認を求める)を設計時に決めておくことが重要です
  • 多くのプログラミング言語にJSON Schemaのバリデーションライブラリがあり、自分で解析ロジックを書く必要はありません

関連技術とのつながり

  • [[JSON]] — JSON Schemaが検証対象とするデータ形式そのもの
  • [[Function Calling]] — ツール呼び出しの引数定義にJSON Schemaが使われる代表例
  • [[AgentCore Code Interpreter]] — LLMが生成したJSONを機械的に検証する実行の場
  • [[AIエージェント]] — エージェントとツールの間でやり取りされるデータの整合性を保つ役割
  • [[REST API]] — リクエスト/レスポンスの形式検証は JSON Schema の代表的な用途。不備は 400 Bad Request で返す
Q: JSON Schemaが検証できることとして正しいのはどれ?
- [x] 必須項目の有無や値の型など、データの構造が条件を満たしているか
- [ ] 文章の内容が事実として正しいかどうか
- [ ] LLMの推論速度
解説: JSON Schemaは「形」を検証するものであり、内容の正しさ(意味)までは保証しません。

Q: LLMの出力にJSON Schemaによる検証を挟む目的として本文が挙げているのはどれ?
- [x] 必須項目の欠落や型の不一致を人間の目視前に機械的に検出するため
- [ ] LLMの学習データを増やすため
- [ ] APIの通信速度を上げるため
解説: 形式的な不備を自動検出しておくことで、人間のレビューは内容の妥当性に集中できます。

Q: Function CallingでJSON Schemaが使われる場面として正しいのはどれ?
- [x] LLMがどんな引数でツールを呼び出せるかを定義する
- [ ] LLMのモデルサイズを圧縮する
- [ ] Excelファイルのセル幅を自動調整する
解説: ツール呼び出しの入力形式を定義する仕様として、Function CallingでもJSON Schemaが使われます。