JSON
ドキュメントデータベースにおいて、JSON をドキュメントの一種とみなすことについてあまりピンとはきてなかったので、背景を整理してみました。
名前
JavaScript Object Notationの略
つまり、JavaScript におけるオブジェクトを表記(Notation)したものに由来
読み方はジェイソン
Pronounced /ˈdʒeɪ·sən/, as in “Jason and The Argonauts”
例示されてるのはギリシア神話のアルゴナウタイの冒険に登場するイアソンで、その英語読みがジェイソン。
ちなみに Ajax (エイジャックス:Asynchronous JavaScript and XML)はトロイア戦争の英雄アイアスの英語読みとなります。JSON発案者の Douglas Crockford は、JSONのようなデータ交換フォーマットが生まれた背景としてまず Ajax の登場を採り上げていたりします。
西欧における命名の元ネタは、文化的な背景でギリシア神話由来なのかしらこれ?と思われるものがあります。
特徴
公式のイントロダクションによると・・
(A)軽量のデータ交換フォーマット
Lightweight data-interchange format
(B)人間にとって読み書きが容易
It is easy for humans to read and write.
いわゆる human-readable
(C)計算機にとってパースや生成が容易
It is easy for machines to parse and generate.
いわゆる machine-readable
それぞれ補足してみます。
(A)軽量のデータ交換フォーマット
代表的なデータ構造である連想配列と配列を記述できる
たった2種類であるが(軽量)、この2つの組み合わせでわりと多くのデータを表現できる(データ交換に使用できる)
連想配列
名前と値の組の集まり
同データ構造にオブジェクト、ハッシュ、辞書などの様々な呼び名がある。唯一の定番はない。
「いろいろな言語での Map, Dictionary 的なものの名前」
配列
要素が順番に並んだデータ構造
特にリスト構造とは異なる点として、連続したアドレス上に配置されるもの
プログラミング言語によって、array、vector、list等の呼び名。
(B)人間にとって読み書きが容易
バイナリデータでなくテキストデータであるため読むことができる
構造が直感的に読み取れる。データ構造の種類が{中カッコ} [大カッコ]で区別されること、コロン区切りによる名前と値の組の表記、カンマによる要素間の区切り表記など。
(C)計算機にとってパースや生成が容易
そもそも、JavaScriptの標準仕様として1999年に定められたECMAScript3(ECMA-262 3rd Edition - December 1999)のサブセットでもある。
連想配列として ObjectLiteral の記法を、配列として ArrayLiteral の記法を用いている。
ドキュメントモデルとJSON
(B)かつ(C)、つまり human-readble かつ machine-readable であることへの注目には、1990年代以降のXMLやHTMLの隆盛が影響しています。とくにJSON発案者の Douglas Crockford は、2005年のAjax(Asynchronous JavaScript and XML)登場後の動的HTMLが劇的に変化したことに対し、データ交換フォーマットとしては XML より効率的な形式を必要としたことを発案の背景としています(http://www.json.org/fatfree.html ) Crockford によると、JSONのデータモデルは
programming language model である。
database model ではない。
従来的な関係モデルではない、という意味と思われる。
document model ではない
XMLやHTMLのような markup language を用いた文書ではない。
のちのドキュメントデータベースにおいては、JSON も XML など半構造化データの一種という文脈でドキュメントと呼ばれている。
ドキュメントという言葉がゆるやかなものなので、意味合いは文脈による。
最初の標準化までの歴史
個人的に思いついたのは 2001年。
2002年に json.org ドメインを取得し、JSONフォーマットを記載。