JSON Schema でバリデーション(AJV ライブラリ)
Web アプリや API では「受け取ったデータが正しい形かどうか」をチェックする必要があります。
そこで便利なのが JSON Schema と AJV ライブラリです。
初心者は「JSON Schema = データの型やルールを定義する設計図、AJV = その設計図でデータをチェックする先生」と覚えると理解しやすいです。
基本のコード例
import Ajv from "ajv";
const ajv = new Ajv();
// スキーマ(データのルール)
const schema = {
type: "object",
properties: {
id: { type: "number" },
name: { type: "string" }
},
required: ["id", "name"], // 必須項目
additionalProperties: false // 余計なプロパティ禁止
};
// データ
const data = { id: 1, name: "Aki" };
// バリデーション
const valid = ajv.validate(schema, data);
console.log(valid); // → true
console.log(ajv.errors); // → null
JavaScriptschema→ データの形を定義する JSON Schema。ajv.validate(schema, data)→ データがスキーマに合っているかチェック。- 結果 →
trueなら OK、falseならエラー。
よく使うテンプレート集
文字列の長さを制限
const schema = {
type: "string",
minLength: 3,
maxLength: 10
};
JavaScript数値の範囲を制限
const schema = {
type: "number",
minimum: 0,
maximum: 100
};
JavaScript配列の要素を制限
const schema = {
type: "array",
items: { type: "string" },
minItems: 1,
uniqueItems: true
};
JavaScriptネストしたオブジェクト
const schema = {
type: "object",
properties: {
user: {
type: "object",
properties: {
id: { type: "number" },
name: { type: "string" }
},
required: ["id", "name"]
}
}
};
JavaScript例題: ユーザー登録データのチェック
import Ajv from "ajv";
const ajv = new Ajv();
const schema = {
type: "object",
properties: {
username: { type: "string", minLength: 3 },
age: { type: "number", minimum: 18 }
},
required: ["username", "age"]
};
const data = { username: "Mi", age: 16 };
const valid = ajv.validate(schema, data);
if (!valid) {
console.log("エラー:", ajv.errors);
} else {
console.log("OK!");
}
JavaScript- 効果: ユーザー名が短すぎたり、年齢が 18 未満ならエラーになる。
実務でのコツ
- API の入力チェックに最適: サーバー側で受け取った JSON を Schema で検証。
- フロントでも使える: フォーム入力チェックに利用可能。
- エラー内容をユーザーに返す:
ajv.errorsを整形して「どこが間違っているか」を表示。 additionalProperties: falseを活用: 不要なデータを防ぐ。
練習問題(商品データのバリデーション)
const schema = {
type: "object",
properties: {
id: { type: "string" },
price: { type: "number", minimum: 0 },
tags: {
type: "array",
items: { type: "string" }
}
},
required: ["id", "price"]
};
const data = { id: "p1", price: -100 };
const valid = ajv.validate(schema, data);
console.log(valid); // → false
console.log(ajv.errors); // → エラー内容が表示される
JavaScript直感的な指針
- JSON Schema = データの設計図。
- AJV = 設計図に従ってデータをチェックする先生。
ajv.validate(schema, data)で簡単に検証できる。- 初心者は「文字列」「数値」「配列」「オブジェクト」から練習すると理解が深まる。
これを覚えれば「受け取ったデータが正しいかどうか」を自動でチェックできるようになり、API やフォームの安全性がぐっと高まります。
