JSONとFREDDY、変貌するWeb技術
Web 2.0が引き起こしたパラダイムシフト
読者の皆さんはWebと親和性の高いデータフォーマットと聞いて、何を思い浮かべるだろうか。もしこの問いを数年前に発したのなら、おそらくほとんどの人がXMLと答えただろう。今年で誕生から10年を迎えたXMLは、データ交換のための最も重要なフォーマットとして、利用機会が高くさまざまな分野で用いられている。しかしながら、今日では、Webと親和性の高いデータフォーマットは「JSON」と答える人も多いのではないだろうか。
Web 2.0というキーワードとともに、ここ数年でWebを取り巻く環境は劇的に変化した。もちろんWeb 2.0という用語自体は単なるバズワードであり、意味のない宣伝用語として使われることも多く、筆者自身あまり好きな言葉ではない。Tim O'Reilly氏のWeb 2.0の定義(http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html)には納得できるが、だからと言って、例えばmixiがWeb 2.0だと言われ、2chがWeb 2.0でないと言われていることは、筆者には全く理解できない。
しかしながら、そのような社会科学的な分類論争を無視し、技術的な側面にのみ着目すれば、Web 2.0というキーワードは1つのパラダイムシフトを表していると考えることができる。
つまり、Web 2.0が騒がれだしたころを境目に、Webで使われている技術はXMLからJSONへ、ページ遷移による通信からAjaxによる通信へ、SOAPやWSDL、UDDIを利用するWebサービスからRESTful Webサービスへと大きくシフトしつつある。これら新しい技術の共通項は「より軽量」「より簡単」な点である。
本連載ではWebサーバーとWebブラウザ間のデータ通信に着目し、現在静岡大学情報学部において筆者らが研究開発している軽量なデータ通信手法「FREDDY」を紹介する。本研究において筆者らが取り組んでいるのは、大規模なデータをWebサーバーからWebブラウザまで届けるという課題である。例えば「1GBのデータをWebサーバーからWebブラウザ上のWebアプリケーションへ簡単に届けるにはどうしたら良いのか?」という問いに対して、本連載にて1つの解法を示したいと考えている。
Ajaxの特徴と限界
FREDDYの詳細の説明に入る前に、既存技術を紹介し、FREDDYの研究に至る背景を説明しておこう。
WebサーバーとWebブラウザ間の通信手法の1つにAjax(Asynchronous JavaScript and XML)がある。AjaxはWebブラウザ上で非同期通信を行う仕組みであり、ダイナミックHTML技術と組み合わせることにより、ページ遷移を伴わずにバックグラウンドでWebサーバーと通信を行い、表示されているコンテンツの一部を書き換えることができる。
AjaxはWeb 2.0と同じく定義づけの弱い用語だが、一般的にはXMLHttpRequestオブジェクト経由でWebサーバーへアクセスする手法のことを指す。XML文書を出力するCGIなどと組み合わせれば、Webサーバーとクライアント間の動的かつ非同期のデータ通信を実現できる。
しかしAjaxにはクロスドメイン制約があり、Webページを取得したサーバーとしか通信ができない。Webアプリケーションによる汎用的なデータ通信手法を考える際、この制約は障害となる。
このAjaxの問題を回避する手法として、Dynamic Script Tagという手法が注目されている。Dynamic Script Tagとは、JavaScriptファイルを動的にWebページのDOMツリーに挿入する手法で、URLで指定することのできる任意のJavaScriptプログラムを実行することができる。Dynamic Script Tagなら、URLでアクセスできるすべてのJavaScriptリソースにアクセスすることが可能だ。しかしながら、この手法を利用して読み込むリソースの形式はあくまでJavaScriptのプログラムコードであり、XMLなど汎用のデータ記述形式を直接扱う事ができるわけではない。
次は、JSONの特徴とFREDDYの登場した背景を説明しよう。