はじめに
以前に書いた記事(JSONデータベースという選択肢 (Couchbase, MongoDB, クラウド等) 序. オープンデータ)では、私たちが利用可能なオープンデータのフォーマットとして、広くJSONが用いられていることを、実例をあげて紹介しました。
この記事では、JSON自体について、そして、なぜJSON(データベースが重要)なのか?について、技術的な側面から、整理したいと思います。
JSON、その歴史と関連技術
類似技術との比較
ここでは、先行する技術である、XMLとの比較から、JSONの特徴を解き明かしていきたいと思います。
XML
ユーザが定義したタグを用いて文章構造を記述するマークアップ言語
JSON
キーと値(文字列、数値、真偽値、配列)のペアの集まり(オブジェクト)によって、ユーザが定義した構造を持つデータを記述するデータ記述言語。名称と構文はJavaScriptにおけるオブジェクトの表記法に由来。
XMLとJSONの共通点
- データ記述言語(データ記述言語は、マークアップ言語を包含する概念)として、データと同時に、データの意味と構造を記述することができる
- テキストベースのデータ交換用フォーマット
- データ構造としては、ツリー構造を持つ
- ツリー構造は、ネットワーク構造以外の、ほとんどのデータ表現のニーズに対応できる(RDBで用いられているテーブル構造や、キーと値のペア等、より単純なデータ構造は、ツリー構造に包含される)。
- プログラミング言語を問わず利用できる
- 仕様が固まってから、十分な歴史・実績を持つ
JSONのメリット
歴史的に、JSONは、後発ながら、XMLが利用されていたケースを置き換える形で広まってきました。XMLに対するJSONのメリットとしては、以下があります。
- XMLよりも軽量
- JavaScriptに由来するように、プログラミング言語との親和性が高い
- JSONは、辞書(マップ)や配列・リストのような多くのプログラミング言語がネイティブに持つデータ構造へ直接置換することができる。XMLは、論理的に同じ内容を表現することができるが、JSONのように直接的な対応とは言い難い。
JSONと、モダンな開発・サービス形態との関係
XMLが、そして後にはJSONが、広く浸透した理由として、その「テキストベースのデータ交換用フォーマット」という特徴が、WEB技術と親和性が高かったことが挙げられます。
XMLデータベースという試みもあったとはいえ(「試み」という表現で、歴史の後方に追いやってはいけないかもしれませんが、素直な実感として)、「データ交換」というユースケースが重要だったと考えます(「データ記述」のために用いられた多くのユースケースは無視できませんが、ここでは副次的なものとして扱います。)。
「データ交換」のユースケースの中でも、特に重要だったのが、WEBブラウザー上での扱いだったと考えます。
WEBブラウザ上で実行可能なスクリプト言語の仕様として登場した、非同期更新技術(Ajax)は、WEBアプリケーションに、ネイティブアプリケーションと遜色のない、ユーザー体験を提供することを実現しました。この非同期更新技術のデータ交換フォーマットとして用いられたのが、当初はXMLであり、後にはJSONが、実質的に標準として取って代わることになります。
その結果が、現在のSPA(シングルページアプリケーション)、PWA(Progressive web application)の隆盛につながっています。
そして、このような新しいUI技術(SPA, PWA)がなぜ重要かと言えば、ページビューの増加や離脱率の減少に、繋がるからに他なりません(下記の記事では、具体的な数字を交えて紹介されています)。
PWA(Progressive Web Apps)とは?メリットと実装事例について
さらには、XMLにおいては広く浸透したとは言い難いデータ管理のユースケースにおいても、JSONは、その利点である、XMLに比べた軽量性や、プログラミング言語との親和性に後押しされる形で、XML以来の核心であるデータ記述言語としての(これまでのデータ管理の主流であったRDBに遥かに勝る)柔軟性により、多くのデータベースにおいて、採用されることになりました。
JSONデータベース
JSONを扱うデータベースとしては、二種類があります。JSONのために設計されたデータベース、そしてJSONのために拡張されたデータベースです。以下、網羅的ではないかもしれませんが、それぞれをリストします。
JSONのために設計されたデータベース
オンプレ/クラウド
パブリッククラウド提供サービス
-
AWS DynamoDB
- [AWS DynamoDB SQL 互換クエリ言語 PartiQL] (https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/ql-reference.html)
-
Azure Cosmos DB
- [Azure Cosmos DB での JSON の使用] (https://docs.microsoft.com/ja-jp/azure/cosmos-db/sql-query-working-with-json)
- Google Cloud Datastore
- Oracle Autonomous JSON Database
JSONのために拡張されたデータベース
最後に
今回は、「序」に続く、シリーズの初回として、JSONについて解説し、JSONデータベースについてリストアップしたところで、一旦区切りとしたいと思います。
今後、JSONデータベースについて、別の記事にて、より具体的・実践的な内容を書いていきたいと考えています。
参考情報
JSON仕様について
事実上最後のJSON仕様「RFC 8259」と「ECMA-404 2nd Editon」公開。UTF-8エンコード必須に
ECMA-404 The JSON data interchange syntax 2nd edition, December 2017
RFC 8259 「The JavaScript Object Notation (JSON) Data Interchange Format」の和訳
関連技術
まだXMLHttpRequestを使ってるの? fetchのすすめ
PWA(Progressive Web Apps)とは?メリットと実装事例について
JSONデータベース
Postgres vs. MongoDB for Storing JSON Data — Which Should You Choose?