Shiraude Code Docs
用語2026年9月26日スキーマJSON Schemaバリデーションデータ構造ツール定義

スキーマとは?データの設計図をやさしく解説

スキーマって結局なに?

スキーマ(schema)は、ひとことで言うと「データの形を決めた設計図」です。どんな項目があって、それぞれがどんな種類の値なのか、必須なのか省略していいのか——そういうルールをあらかじめ書き出したものがスキーマです。

正直、最初にこの言葉を見たときは「型定義と何が違うの?」と思う人が多いと思います。実際かなり近い概念で、文脈によっては同じものを指していることもあります。ただスキーマと言うときは、プログラムの内部というよりやり取りされるデータそのものの形を決めている、というニュアンスが強めです。

例え話:役所の申請用紙

役所に何かを申請するときの用紙を思い浮かべてください。「氏名」「生年月日」「住所」といった記入欄があって、生年月日は日付、電話番号は数字だけ、氏名は空欄にしてはいけない——そんなルールが用紙の側にあらかじめ用意されています。

この用紙のフォーマットがスキーマで、実際に書き込まれた1枚1枚の申請書が「データ」です。用紙があるおかげで、窓口の人は「どこに何が書いてあるか」を毎回考えずに済むし、記入漏れも一目でわかります。逆に用紙がなく白紙に自由記述だったら、受け取る側は毎回解読に苦労しますよね。スキーマがあると嬉しいのは、まさにこの「解読しなくていい」という点です。

具体的にどんな見た目をしているか

スキーマはただの説明文ではなく、機械が読める形で書かれます。よく使われるのがJSON形式の表現です。たとえば「ユーザー」を表すデータのスキーマはこんな雰囲気になります。

{
  "type": "object",
  "properties": {
    "name":  { "type": "string" },
    "age":   { "type": "number" },
    "email": { "type": "string" }
  },
  "required": ["name", "email"]
}

これは「オブジェクトで、nameは文字列、ageは数値、emailは文字列。このうちnameとemailは必須」と言っています。この定義に照らして実際のデータを点検すれば、age に文字列が入っていたり email が抜けていたりするのを自動で見つけられます。この点検作業のことをバリデーション(検証)と呼びます。

スキーマがあると何が変わるか

スキーマがない場合

送る側と受け取る側で「たぶんこういう形だろう」という暗黙の了解に頼ることになります。片方が勝手に項目名を変えると、動かなくなって初めて気づきます。

スキーマがある場合

形が文章ではなくルールとして明文化されているので、食い違いをその場で検出できます。ドキュメント代わりにもなり、「この項目って何が入るんだっけ」を読めば解決します。

どんな場面で出てくる言葉か

スキーマという語は、いろいろな領域で少しずつ意味合いを変えながら使われます。

分野スキーマが指すもの
データベーステーブルの構造。どんな列があり、各列がどんな型か
API・データ交換やり取りするJSONなどの形式。項目名・型・必須かどうか
ツールや関数の定義受け取る引数の名前と型、説明

細部は違っても、根っこにあるのは「中身そのものではなく、中身がどういう形をしているかを記述したもの」という共通点です。ここさえ押さえておけば、初めて見る文脈で「〜スキーマ」という言葉に出会っても、だいたい意味を推測できます。

AIツールとスキーマ

AIに何かの機能を呼び出してもらうとき、スキーマは特に重要になります。「この道具はこういう名前の引数を、こういう型で受け取ります」という情報を機械が読める形で渡しておくと、AI側はそれを手がかりに、正しい形のデータを組み立てられるからです。

人間に対して「名前と年齢を教えて」と口頭で頼むのと、記入欄が用意された用紙を渡すのとでは、返ってくる答えの揃い方がまるで違います。スキーマはその「用紙を用意しておく」行為にあたります。

覚えておくとよいこと

スキーマは書くのに少し手間がかかります。項目が3つしかないデータにわざわざ定義を書くのは面倒に感じるかもしれません。ただ、データを受け渡す相手が増えたり、時間が経って自分自身が仕様を忘れたりしたときに、この手間は確実に回収されます。

最初から完璧なものを書こうとせず、まずは「必須の項目と型だけ」書いてみる。それでも、何も書かない状態よりずっと見通しがよくなります。

このページは役に立ちましたか?