OSS探訪GitHubでログイン

JSON SchemaやJTDをcompileし、API入力や設定値を高速に実行時検証する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
14,850
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/09/06
ページ内ナビ

概要

Ajvは、JSON SchemaまたはJSON Type DefinitionをJavaScriptのvalidation functionへcompileして実行するvalidatorです。Node.jsとbrowserで使え、複数世代のJSON Schema、JTD、remote reference、custom keywordなどに対応します。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

schemaをvalidation functionへcompileして繰り返し検証する

ajv.compile(schema)でschemaから検証関数を作り、その関数へdataを渡して真偽とerror情報を取得します。同じschemaを多数の入力へ適用する処理では、毎回schemaを解釈するのではなく生成済みfunctionを再利用できます。

出典:[2][1]

JSON Schemaの複数draftとJTDを用途に合わせて使う

draft-06/07/2019-09/2020-12を扱い、JSON Type Definitionにも対応します。draft-04は追加packageが必要で、format検証もajv-formats等のpluginを組み合わせる構成です。

出典:[1]

strict modeやcustom keywordでschema運用を制御する

strict modeで曖昧・無効なschema記述を早期に検出でき、custom keywordやasynchronous validationを追加してdomain固有の条件を組み込めます。

出典:[1]

向いている用途

API request・設定file・event payloadを共通schemaで検証したい場合に向く

JSON Schemaを契約として持つAPI gateway、backend、frontend、config loaderなどで、外部から来るobjectを実行時に検証したい用途に適します。

出典:[1][2]

導入前の確認

draftやpluginの違いをschemaごとに確認する

draft-04はAjv v8本体だけでは扱わず別packageが必要で、formatも追加pluginに分かれています。既存schemaがどのdraftと拡張keywordを使っているかを確認してから移行してください。

出典:[1]

data変更optionを有効にするとvalidation時に入力が書き換わる

removeAdditional、useDefaults、coerceTypesなどを使うと検証対象dataそのものが変更されます。境界で純粋なvalidationだけを行いたい場合は、これらを無意識に有効化しないよう設定を分離してください。

出典:[1]

参考にした公式資料

  1. [1]Ajv v8.20.0 README(2026-10-05)
  2. [2]Ajv v8.20.0 getting started(2026-10-05)
  3. [3]Ajv v8.20.0 package metadata(2026-10-05)
  4. [4]Ajv v8.20.0 release(2026-10-05)
  5. [5]Ajv MIT license(2026-10-05)
編集部からの補足

AjvはschemaをJavaScript validation functionへcompileするため、同じschemaを繰り返し使う処理と相性があります。一方、removeAdditional、useDefaults、coerceTypesなどは入力dataを書き換えるため、validationだけを期待している境界ではoptionを明示的に管理してください。

3ステップで試す

  1. 1

    Ajv 8.20.0を一時projectへ導入する

    公式Getting Startedに沿い、review対象のAjv v8を固定して導入します。

    demo=$(mktemp -d "${TMPDIR:-/tmp}/ajv.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact ajv@8.20.0
  2. 2

    JSON Schemaをcompileしてvalid/invalidを確認するscriptを作る

    公式例と同じ流れでschemaをvalidation functionへcompileし、正しい入力と不正な入力を判定します。

    printf "%s\n" "import Ajv from 'ajv';" "const ajv = new Ajv();" "const schema = {type: 'object', properties: {foo: {type: 'integer'}}, required: ['foo'], additionalProperties: false};" "const validate = ajv.compile(schema);" "if (!validate({foo: 1})) process.exit(1);" "if (validate({foo: '1'})) process.exit(1);" "console.log(validate.errors);" > demo.mjs
  3. 3

    Node.jsでvalidationを実行する

    integer入力が通り、string入力が失敗してvalidation errorを取得できることを確認します。

    node demo.mjs
公式READMEで確認

成長

成長の推移 · 直近30日

14,850 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
90

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • json-schema
  • validator
  • ajv
Stars
14,850
Forks
1,050
Watchers
111
Open Issues
293
Contributors
191
所有者種別
Organization
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/09/06

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?
Ajvとは?JSON Schema実行時検証 | OSS探訪