【IoT用語集】JSON

はじめに

JSONとは、JavaScript Object Notation の略でXMLなどと同様のテキストベースのデータフォーマットです。サーバからデータを引き出して、Webアプリケーションに表示させるなどの用途で一般的に使われます。同様に、データを引用する言語であるXMLがマークアップ言語であるのに対して、JSONはオブジェクト言語である点が異なっています。

JavaScriptのオブジェクト表記構文の下位構造(サブセット)をつくるデータフォーマットでXMLとくらべて、簡潔に構造を示しながらデータを記述することができます。JavaScriptと親和性が高いですが、C言語系の言語だけでなくHTML,PHP, Pythonなどにも用例が多く、汎用的なデータ引用言語ということができます。

自然言語と構造が見た目で似ているためどこがデータ引用なのかわかりやすく記述できるところもメリットの一つと言えます。JSONは、null、真偽値、数値、文字列、配列、オブジェクト(連想配列)のデータを文字列で表現できます。こうした構造が、他の言語との親和性も高めているものです。

技術仕様

JSONは、2006年にRFC4627として公開されています。現在の技術仕様は、IETFからRFC8259として定義されています。IETF および ECMA におけるJSONの仕様改定は、次の通りです。

  • 2006年7月 – RFC 4627
  • 2013年3月 – RFC 7158
  • 2013年10月 – ECMA-404 1st edition
  • 2014年3月 – RFC 7159
  • 2017年12月14日 RFC 8259 および IETF STD 90 および ECMA-404 2nd edition

データフォーマット 

① 要素と用途
JSONを含むデータフォーマットの用途は、シンプルに言うと「表の引用」ということができます。

  • 表の構造
  • 項目の最大サイズ
  • 各レコードの最大データサイズ
  • 文字コード
  • エスケープ文字
  • 処理速度

の6つの点が、各データフォーマットの要素ということができます。

データフォーマットは、用途により使い分けがなされます。たとえば、フラットフォーマットやCSVなどは、固定長の値を正確に引用するために使われます。文字コードを識別することはできません。軽いデータの正確な引用専門のフォーマットと言えるでしょう。そのため、処理速度は高くすることができます。

これに対して、マークアップ言語であるXMLは、主にHTMLのようにウェブでの表示をスムースに行うことができるデータフォーマットです。文字コードの識別はもちろん、要素と値を一度に表示されるようなこともXMLなら可能です。しかし、処理速度においては、メリットがありません。タグを挟んでデータ・テキストを記述する必要があるためです。

② JSONのメリット
表を超える複雑な構造を持ち、また、データ長も一定しない場合にデータをオブジェクトとして引用することは、上にあげた言語は不得意です。この点、JSONが得意とするところです。

また、下位構造を持つといった表よりも複雑な構造は、JSONでないと難しいと言われています。さらに、JSONは、JavaScriptを基礎として成り立っている文法ですので、シンプルな構文で長いデータをオブジェクト言語の中で引用することが可能です。
たとえば、Webアプリケーションシステムで「受発注書」「名刺データ」のような構造を表示させることなどは、JSONが得意とするところです。

このようにして、XMLに代わるデータフォーマットとして現在では広くJSONが使われるようになっています。文字コードは、UTF-8が必須となっています。

JavaScriptで表示するために行う解析 ParseとStringify

JavaScriptで書かれたプログラムに対してJSONで書かれたデータを引用するとそのままでは、フォーマットを正しく表示できない困難が生じることがあります。

また、JavaScriptにすでにあるデータをJSONに変換して双方をシームレスに読み込みあう解析メソッドも必要です。これらをそれぞれParseとStringifyと呼び、サーバからJSONデータを呼び出す際の必須技術となっています。

各データフォーマットとデータベースの親和性

データはデータベースで蓄積されますが、データフォーマットとデータベースには親和性の高いもの・親和性の低いものがあります。

① カラム指向データベース
こちらは列データに向いたデータベースといわれ、大量のデータを列に則して格納しておきます。CSV、フラットデータフォーマットを大量に格納・処理することに向いています。

② MongoDBなどのドキュメント指向データベース
こちらは、構造化されたデータフォーマットであるXMLやJSONに適したデータベースです。また、スキーマを一定にさせておかなくて良い特徴がありますので、とくにJSONに親和性が高いということができます。

AjaxとJSON

非同期通信を用いて複数のWebアプリケーションにより構築されたソリューションであるAjaxは、言語を超えてソリューション構築が行われることが多々あります。その中でデータ交換をする際には、JSONのような各言語に対してオープンなデータフォーマットが適しています。

Webアプリケーションにおけるデータフォーマットの標準形となってきたJSONですが、Ajaxによるソリューションにおいて近時注目されています。

まとめ

ビッグデータの時代においてデータの処理には、データフォーマットの軽量化が必要なため軽いデータフォーマットが利用されることが多いですが、Webアプリケーションの進化によりXMLより自由度の高いJSONが登場したことは、UIレベルでもユーザーエクスペリエンスを上げることにつながっています。

IoTソリューションによるデータの軽量化によるニーズも高いところです。よりよいユーザーエクスペリエンスのためより広い層の技術者にJSONがより普及していくことが期待されています。