JSON:なぜ「データの共通語」として選ばれているのか?

結論: JSON(ジェイソン)とは、コンピューター同士が情報をやり取りするために使われる「データの記述形式(フォーマット)」です。

JavaScript Object Notationの略ですが、JavaScript専用というわけではありません。Python、Java、PHP、Swift、Rubyなど、あらゆるプログラミング言語で読み書きできる「データの共通言語」として、現在のシステム開発におけるデファクトスタンダード(事実上の標準)となっています。

Webサイトで天気予報を見たり、SNSの投稿を読み込んだりするとき、画面の裏側ではこの「JSON」という形式でデータが飛び交っています。この記事では、JSONがなぜこれほどまでに普及したのか、その理由と書き方のルール、すると実務で遭遇する注意点について詳しく解説します。

Contents

なぜJSONが必要なのか?

システムとシステムが通信するとき、「テキスト(文字)」だけを送っても相手のコンピューターは何が重要な情報なのかを理解できません。

例えば、ユーザー情報を送る際に、単に「田中 25歳 東京」とだけ書いたテキストを送ったとします。 受け取った側は、どこまでが名前で、どれが年齢なのかをプログラムで解析しなければなりません。 「田中」が名字なのか、それとも「田中2」という特殊な名前なのか、ルールが曖昧だとエラーの原因になります。

そこで、「名前はこれ」「年齢はこれ」と、データの構造を誰もが(どのプログラムも)一目でわかるようにルール化したものがJSONです。

JSONの最大の特徴:軽量と可読性

JSONが普及する前は「XML」という形式が主流でした。しかし、XMLはタグを多用するため記述が長くなりやすく、データ量が増えるという課題がありました。 JSONはXMLに比べて構造がシンプルでデータサイズが小さいため、通信速度が重視されるWeb APIの世界で一気に主役の座を奪いました。

また、人間が見ても「何が書いてあるか」が直感的に理解しやすい点も、開発効率を上げる大きな要因となっています。

Yachi

新しいプロジェクトに参加した際、まず確認するのはAPIの仕様書やJSONのデータ構造であることが多いです。JSONをパッと見て「ああ、このデータはこういう構成なんだな」と把握できるスキルは、言語の習得と同じくらい重要と言えます。

JSONの書き方:6つのデータ型と基本ルール

JSONはテキスト形式ですが、書き方には厳格なルールがあります。1文字間違えるだけで「不正なデータ」と見なされ、システムが動かなくなるため注意が必要です。

1. 基本的な構造

JSONは、{ }(波括弧)で囲まれた「オブジェクト」か、[ ](角括弧)で囲まれた「配列」のどちらかで始まります。

基本は "キー": 値 というペアでデータを記述します。

2. JSONで使える6つのデータ型

JSONで「値」として使えるものは、以下の6種類に限られています。

  • 文字列 (String): 必ずダブルクォート " で囲みます。
  • 数値 (Number): 整数または浮動小数点数. クォートは不要です。
  • 真偽値 (Boolean): true または false
  • オブジェクト (Object): { } で囲まれたデータの集まり。
  • 配列 (Array): [ ] で囲まれた値のリスト。
  • null: 「値がないこと」を示します。
Yachi

ここでよくある間違いが、シングルクォート ' を使ってしまうことです。JavaScriptのコード内ではシングルクォートが許容されますが、JSONの仕様ではダブルクォートのみと決まっています。この違いでエラーを出す初心者は少なくありません。

3. オブジェクトのネスト(入れ子)

JSONの強力な点は、オブジェクトの中にさらにオブジェクトや配列を入れられることです。これにより、複雑なデータ構造を表現できます。

このように、ユーザー情報の配下にプロフィール情報を置き、その中にさらに「趣味」のリスト(配列)を持たせるといった階層構造が作れます。

実務で見かけるJSONのユースケース

JSONは単なる通信用のフォーマットに留まらず、さまざまな場面で利用されています。

1. Web APIのレスポンス

Web API(YouTubeの動画一覧取得、Twitterの投稿取得など)のデータのやり取りは、そのほとんどがJSON形式です。 ブラウザやスマホアプリがサーバーに対して「データをください」とリクエストすると、サーバーはJSON形式で情報を返します。これを受け取ったアプリ側が、画面のデザインに合わせて整形して表示するわけです。

2. 設定ファイル

プログラミング言語の環境設定や、エディタの設定保存にもJSONが使われます。

  • package.json: Node.jsプロジェクトのライブラリ管理。
  • tsconfig.json: TypeScriptの設定。
  • VSCodeの設定ファイル: エディタの見た目や動作の設定。

XMLやYAMLといった他の形式が使われることもありますが、Web系のエンジニアにとってJSONは最も馴染みのある設定ファイル形式でしょう。

3. データベース(NoSQL)

MongoDBなどの「ドキュメント指向データベース」と呼ばれるものでは、データそのものをJSON(またはそれに近い形式)の形で保存します。 従来の表形式のデータベース(RDB)に比べて、データの構造を柔軟に変更できるため、スピード感のある開発に向いています。

Yachi

開発を進める中で「データ構造を後から少し変えたい」という場面はよくあります。JSONベースのデータベースだと、列の定義を厳格に変えなくても新しいキーを追加できるため、その柔軟性に助けられることがあります。

「APIを叩く」の具体的な意味や仕組みについては、こちらの記事も参考にしてください。

初心者が必ずハマる「JSONの5つの罠」

JSONのルールはシンプルですが、それゆえに細かいミスがエラーに直結します。

① 末尾のカンマ(Trailing Comma)

最も多いミスが、最後の要素の後にカンマを付けてしまうことです。

JavaScriptの配列やオブジェクトでは末尾のカンマが許容される傾向にありますが、標準的なJSONでは末尾のカンマは禁止されています。

② コメントが書けない

JSONの仕様には「コメント」が存在しません。///* */ を書くとパースエラー(解析エラー)になります。 設定ファイルなどで「なぜこの設定にしたか」を残したい場合に不便ですが、これはJSONが「人間が読むメモ」ではなく「機械が処理するデータ」であることを優先した結果です。

Yachi

どうしてもコメントを残したい場合は、"_comment": "ここにメモを書く" のように、ダミーのキーを作って対応することもあります。ただし、これも本来のデータ構造を汚すことになるため、多用は禁物です。

③ 数値と文字列の混同

数字をダブルクォートで囲むか否かで、プログラム側での扱いが大きく変わります。

  • "age": "25" → 文字列として扱われる
  • "age": 25 → 数値として扱われる

計算に使う予定の値を文字列として送ってしまうと、受け取り側のプログラムで型変換が必要になり、バグの原因になります。

④ キーの名前は必ずダブルクォート

JavaScriptに慣れていると、{ name: "田中" } のようにキーのクォートを省略したくなりますが、JSONでは キーも必ずダブルクォートで囲む 必要があります。

⑤ 文字エンコーディング(UTF-8)

JSONは基本的にUTF-8でエンコードされている必要があります。 古いシステムからデータを出力する場合などに、Shift-JISなどで出力してしまうと文字化けや読み込みエラーの原因になります。

JSON vs XML vs YAML:どう使い分ける?

JSON以外にもデータを表現する形式はあります。それぞれの特徴を知っておくと、適材適所の判断ができます。

形式特徴主な用途
JSON軽量、読みやすい、JavaScriptとの親和性Web API、Webアプリの通信、設定ファイル
XML構造が厳格、タグで意味を定義できる銀行システム、古いWebサービス、文書構造の記述
YAMLJSONよりさらに人間が読みやすい、インデントで構造を表現サーバーの設定(Docker, CI/CD)、設定ファイル

XMLは「文書」としての側面が強く、データの妥当性チェック(スキーマ検証)が非常に強力です。そのため、ミスが許されない堅いシステムでは今でも現役です。 一方で、YAMLはコメントが書けて記述も簡潔なため、人間が手で書き換える「サーバーの設定ファイル」によく使われます。

開発や通信の効率を優先するなら、JSONが第一選択肢になることがほとんどです。

JSONを扱うための便利なツール

手書きでJSONを書くと、前述したようなカンマのミスなどが防ぎきれません。開発をスムーズにするために、以下のツールを導入することをお勧めします。

1. JSONLint

ブラウザ上でJSONを貼り付けると、文法的に正しいかどうかをチェック(バリデーション)してくれるサービスです。エラーがある場合は、何行目が間違っているか教えてくれます。

2. JSON Formatter

一行に固まってしまった読みづらいJSONを、適切な改行とインデントで見やすく整形してくれるツールです。ブラウザの拡張機能として導入すると、APIのレスポンスを直接きれいに表示してくれます。

3. 各種エディタの拡張機能(VSCodeなど)

VSCodeなどの高機能エディタであれば、デフォルトでJSONの文法チェック機能が備わっています。保存時に自動で整形(フォーマット)するように設定しておけば、末尾のカンマミスなどは即座に気づけます。

生成AIとJSONの密接な関係

最近では、ChatGPTなどの生成AI(LLM)に対して「回答をJSON形式で出してください」と指示する場面が増えています。 AIが自然な文章で回答すると、その後のシステム処理が難しくなりますが、JSON形式で出力させることで、AIの回答をそのままプログラムで処理し、データベースに保存したり、UIに反映させたりすることが可能になります。

構造化されたデータを扱うJSONは、人間とAI、あるいはAIとプログラムをつなぐ「橋渡し役」としても非常に重要な役割を担っています。

JSONをやり取りする「LLM(大規模言語モデル)」の正体についてはこちらの記事が詳しく解説しています。

まとめ

JSONは、シンプルでありながら強力な「データの輸送手段」です。

  • 軽量で高速:XMLに代わる通信フォーマットの主役。
  • 言語を問わない:どのプログラミング言語でも扱える。
  • 厳格なルール:ダブルクォート必須、末尾カンマ禁止などのルールがある。
  • 汎用性が高い:API、設定ファイル、データベースなど幅広く活躍。

エンジニアとしての第一歩は、このJSONを「正しく読み、正しく書ける」ようになることから始まります。もしエラーに遭遇したら、まずはダブルクォートの有無やカンマの打ち忘れを確認してみてください。

基本をしっかり押さえておけば、モダンなシステム開発のほぼすべてにおいて、その知識が役立つはずです。

Yachi

最初は nulltrue/false の扱いや、配列とオブジェクトの使い分けに迷うかもしれません。しかし、多くのデータに触れるうちに「このデータなら、こういうJSON構造にするのが美しい」という感覚が磨かれていきます。まずは既存のAPIがどのようなJSONを返しているかを観察することから始めてみてください。

この記事を書いた人

生成AIコンサルタント / テックリード

外資系IT企業にて社内の生成AI活用推進と
生成AIプロダクト開発リードを担当。

かつてはWeb系のエンジニアとして、
モダンな技術スタックでのシステム開発から
数百億レコード規模のデータベース運用までを
フルスタックに経験。

「コードも書けるコンサルタント」として、
活用論と実装論の両面から、
現場で使えるIT知識を発信します。

Contents