ページ内ナビ
概要
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を再利用できます。
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]
向いている用途
導入前の確認
draftやpluginの違いをschemaごとに確認する
draft-04はAjv v8本体だけでは扱わず別packageが必要で、formatも追加pluginに分かれています。既存schemaがどのdraftと拡張keywordを使っているかを確認してから移行してください。
出典:[1]
data変更optionを有効にするとvalidation時に入力が書き換わる
removeAdditional、useDefaults、coerceTypesなどを使うと検証対象dataそのものが変更されます。境界で純粋なvalidationだけを行いたい場合は、これらを無意識に有効化しないよう設定を分離してください。
出典:[1]
参考にした公式資料
- [1]Ajv v8.20.0 README(2026-10-05)
- [2]Ajv v8.20.0 getting started(2026-10-05)
- [3]Ajv v8.20.0 package metadata(2026-10-05)
- [4]Ajv v8.20.0 release(2026-10-05)
- [5]Ajv MIT license(2026-10-05)
編集部からの補足
AjvはschemaをJavaScript validation functionへcompileするため、同じschemaを繰り返し使う処理と相性があります。一方、removeAdditional、useDefaults、coerceTypesなどは入力dataを書き換えるため、validationだけを期待している境界ではoptionを明示的に管理してください。
3ステップで試す
- 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
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
Node.jsでvalidationを実行する
integer入力が通り、string入力が失敗してvalidation errorを取得できることを確認します。
node demo.mjs
成長
成長の推移 · 直近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で投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Docusaurus66,399 Stars
共通タグ 2件 · 共通カテゴリ 1件 · 同じ言語
docs・blog・custom React page・i18nを静的buildへまとめるdocumentation site generator
TypeScript - Expo52,566 Stars
共通タグ 2件 · 共通カテゴリ 1件 · 同じ言語
React NativeアプリをAndroid・iOS・Webへ一つのprojectから展開する
TypeScript - Typia5,931 Stars
共通タグ 5件 · 共通カテゴリ 2件 · 同じ言語
TypeScript型をcompile時に専用validatorへ変換し、runtime validationやserializerを生成する
TypeScript - Superstruct7,127 Stars
共通タグ 4件 · 共通カテゴリ 2件 · 同じ言語
小さなstructを組み合わせ、JavaScriptやTypeScriptの入力値を実行時に検証する
TypeScript - io-ts6,814 Stars
共通タグ 4件 · 共通カテゴリ 2件 · 同じ言語
codecで未知の値をdecode・encodeし、同じ定義からTypeScript型を推論する
TypeScript - Runtypes2,699 Stars
共通タグ 4件 · 共通カテゴリ 2件 · 同じ言語
未知の値をcomposableなruntime validatorで検証し、同じ定義からTypeScript型を推論する
TypeScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。