Douglas Crockford at the Yahoo Building (2007)
← ホームへ戻る

JSONの基礎知識データ交換フォーマットの仕組みと歴史

🗓 2026年8月13日

現代のウェブ開発において、異なるシステム間でデータをやり取りするための標準的な形式として欠かせないのがJSONJavaScript Object Notationです。軽量で人間にとっても読みやすく、多くのプログラミング言語でサポートされているため、API通信などのデータ交換に広く利用されています。

Key Facts

  • 正体: JavaScriptの表記法をベースにした、言語に依存しないデータ交換フォーマット
  • 標準規格: RFC 8259 (STD 90)、ECMA-404、ISO/IEC 21778:2017などで定義されている。
  • 文字コード: オープンなエコシステムでの交換にはUTF-8が必須。
  • 特徴: コメントを禁止することで、異なる実装間での相互運用性を確保している。
  • 拡張子: 一般的に .json が使用される。

JSONの誕生と発展の歴史

JSONは2000年代初頭、ダグラス・クロックフォード氏によって仕様が策定されました。当時、ブラウザとサーバー間でリアルタイムに通信を行うにはFlashやJavaアプレットなどのプラグインが必要でしたが、標準的なブラウザ機能だけで動作するプロトコルの必要性からJSONが普及しました。

2001年にクロックフォード氏とチップ・モーニングスター氏によって最初のメッセージが送信され、その後、State Software社での議論を経て「JSON」という名称が決定しました。2005年にはYahoo!がウェブサービスにJSONを採用し、急速に普及が進みました。

Douglas Crockford at the Yahoo Building (2007)

もともとはJavaScriptのサブセット(一部)として設計されましたが、現在は言語に依存しない独立したフォーマットとして確立しています。そのため、JavaScript以外のほぼすべての主要なプログラミング言語で、JSONデータの解析(パース)や生成を行うライブラリが提供されています。

技術的な仕様と構文

データ型と構造

JSONで扱える基本的なデータ型は以下の通りです。

  • Boolean: true または false の真偽値。
  • null: 空の値を示す null
  • 数値: 整数や浮動小数点数。実装によって精度は異なりますが、相互運用性のためにIEEE 754 binary64精度が推奨されています。
  • オブジェクトと配列: データの集合を構造化して保持します。

文字エンコーディングと互換性

JSONのデータ交換にはUTF-8エンコーディングが使用されます。これにより、Unicodeの全文字セットをサポートしています。なお、2019年のECMAScript改訂により、JSONは完全にECMAScriptのサブセットとなりました。

相互運用性とセキュリティ

JSONでは意図的に「コメント」が排除されています。これは、コメントを解析指示として利用する実装が現れることで、異なるシステム間での互換性が損なわれるのを防ぐためです。また、セキュリティ上の理由から、JSONテキストをJavaScriptの eval() 関数に直接渡すことは推奨されません。代わりに専用のパーサーを使用することが安全です。

JSONの概要まとめ

JSONの基本仕様一覧
項目 内容
メディアタイプ application/json
標準規格 RFC 8259, ECMA-404, ISO/IEC 21778:2017
主な用途 データ交換、設定ファイル、APIレスポンス
文字コード UTF-8
ベース言語 JavaScript (ECMA-262)

派生フォーマットと代替案

JSONのシンプルさを活かしつつ、特定の用途に特化した派生形式や、機能を拡張した形式が存在します。

  • JSON5 / JSONC: コメントや末尾のカンマを許可した拡張形式。JSONCはVisual Studio Codeなどで採用されています。
  • YAML: JSONのスーパーセット(バージョン1.2)であり、より人間が書きやすい形式です。
  • GeoJSON: 地理的な特徴を表現するための専用フォーマット。
  • UBJSON / BSON: 効率的なデータ転送のために設計されたバイナリ形式のJSON。
  • JSON-LD: リンクデータ(Linked Data)をエンコードするための手法。

Frequently Asked Questions

JSONはどうやって発音しますか?

国際標準(ECMA-404およびISO/IEC 21778:2017)では、「ジェイソン(/ˈdʒeɪ.sən/)」のように発音することが指定されています。

JSONにコメントを書き込むことはできますか?

標準的なJSON仕様ではコメントは禁止されています。コメントが必要な場合は、JSON5などの拡張形式を利用するか、データをパースする前にコメントを除去するツール(JSMinなど)を使用する必要があります。

JSON Schemaとは何ですか?

JSONデータの構造を定義するためのフォーマットです。データのバリデーション(検証)やドキュメント化、アプリケーション間でのデータ契約として利用されます。

JSONとXMLの主な違いは何ですか?

JSONはJavaScriptのオブジェクト表記に基づいた軽量な形式であるのに対し、XMLはタグベースのマークアップ言語です。JSONはXMLよりも簡潔で解析速度が速い傾向にありますが、XMLはコメントをサポートしているなどの違いがあります。

JSONをJavaScriptのeval()で処理しても大丈夫ですか?

いいえ、安全ではありません。一部の有効なJSONテキストが古いJavaScriptエンジンで不正なコードとして処理される可能性があり、セキュリティリスクを伴います。必ず標準のJSONパーサーを使用してください。

References

  1. Crockford uses the pe/per. This article uses he/him for simplicity and understanding.