問題
{
"id": 3,
"name": "太郎"
}
このJSONのオブジェクトの中の
"id": 3,
や
"name": "太郎"
は以下のようなさまざまな呼び方をされています。
- property
- key
- entry
- member
- field
- pair
こうなった原因としてはJSON - Wikipediaなど多くのJSONの参考ページでこれの呼称が書かれておらず、加えてJavaScript, Ruby, Pythonなど様々な言語がJSONを利用するようになった結果各言語のJSONオブジェクトに当たるデータ型での呼称と混同されるようになったことが原因だと思われます。
時と場所、人によって同じものを別の呼び方をしていると混乱を招き、開発効率の低下やバグを引き起こす原因になります。
そこで呼称を統一したいのですが、なんと呼べばもっとも正しいでしょう?
提案
member(メンバー)と呼びましょう。
理由
JSONの最新仕様書であるRFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Formatで以下のように定義されています。
object = begin-object [ member *( value-separator member ) ]
end-object
member = string name-separator value
JSONでは図では書かれていませんが、右の柱にはやはり次のように書かれています。
object
'{' ws '}'
'{' members '}'
members
member
member ',' members
member
ws string ws ':' element
蛇足
WikipediaなどJSONについて言及しているページ・サイトの多くでmemberについて一切言及していないのがちょっと不思議に思いました。
まるでそれの名前を呼ぶことを避けるようにObjectの定義内ではkeyとvalueのペアのそれに名前をつけたり呼んだりしていません。
RFC上での最も古い仕様書がこれRFC 4627 - The application/json Media Type for JavaScript Object Notation (JSON)で2006年に発行されています。
この時点ですでにObjectの構成要素はmemberと書かれているので、少なくともその時点ではmemberという呼称はあったはずです。
ただ、JavaScript Object Notation - Wikipediaに
ダグラス・クロックフォード(英語版)はJavaScriptのプログラマで、JSONを広めた一人だが、「The JSON Saga」と題したプレゼンテーション[3]中で「自分はJSONと名付けたが、考案者ではなく、それ自体は“自然に”存在していたもので、早い例としては1996年にはNetscape Navigatorでデータ交換用に使われていた。だから“発見した”ということになるのだが、発見したのも自分が最初ではない」といったように述べている。
と書かれている通りJSONの利用・拡散は2006年よりずっと前からあったようで、事実上のスタンダードが利用者の間で暗黙的に広がっていたようです。
その中で呼称の必要性の薄いmemberは明確な呼称を持たず、RFC化するときに初めて定まった名前が与えられたものの後追いの仕様であるRFCが軽視されがちであった結果、各々好きなように呼んでいる、呼び続けているのではないかと思いました。