「第2回:JSONPとFREDDY(http://www.thinkit.co.jp/article/116/2/)」で、FREDDYのデータフォーマットについて説明した。今回は、実際にJavaScriptからFREDDYデータを読み込む手法、およびその裏でFREDDYのライブラリが行っている、WebサーバーとWebブラウザ間の通信手法を解説する。FREDDYのプロトタイプ実装やマニュアルはFREDDYのWebサイト(http://freddy.yokoyama.ac/)で公開している。ここにあるxml2freddy.php(http://freddy.yokoyama.ac/index.php/Docs/xml2freddy.php/Usage)というツールを使えば、任意のXML文書をFREDDYフォーマットへ変換し、またそのデータをFREDDYで読み込むWebアプリケーションの自動生成ができる。今回の連載に合わせて、XMark(XMLの有名なベンチマークプロジェクト)(http://monetdb.cwi.nl/xml/)が公開するXMLデータ生成ツールで作成した10MBのXML文書をFREDDYに変換し、それを読み込み、要素名と属性名の統計情報を表示するWebアプリケーション(図1)を作成した。こちら(http://freddy.yokoyama.ac/examples/thinkit.html)をクリックするとWebアプリケーションの画面が開くので、表示された画面から「[Start]」をクリックすればFREDDYデータの読み込みが開始される。JavaScriptなので、HTMLファイルとしてダウンロードして、ローカル環境で、実行することもできる。xml2freddy.phpではXMLからFREDDYへの変換だけでなく、実装例としてこのサンプルWebアプリケーションの自動生成まで行うことができる。xml2freddy.phpの使い方xml2freddy.phpはphpスクリプトではあるが、コマンドラインから実行して使用する。引数無しで実行すれば、Usageが表示される。input.xmlをFREDDYフォーマットに変換する時は以下のコマンドを実行する。-EXAMPLE-IオプションにはFREDDYへ変換するXMLファイルのパスを設定する。-Nオプションは、FREDDYデータを分割する際に基準となるイベント数を設定でき、この例では5000イベントごとに別のファイル(Page)として保存している。-Fオプションは各Pageのファイル名のプレフィクスであり、この例ではoutput_{pageID}.jsという一連のファイルが生成される。-Pオプションと-Uオプションはデータを出力するベースディレクトリのパスとその対応するURLである。-Dオプションを指定すれば、ベースディレクトリに新しいディレクトリを作成し、その中に出力ファイルが格納される。-HOLDINGSフラグを設定すると、総イベント数などFREDDYフォーマットのプロパティを含んだヘッダファイルを生成する。このプロパティには総イベント数などが含まれ、これを事前に読み込めば、利用者はFREDDYデータ読み込みの進ちょくを把握することができるようになる。これらのデータを読み込むWebアプリケーションの実装例を生成するには-EXAMPLEフラグを指定する。図1(上)は実装例として生成されたWebアプリケーションのスクリーンショットである。変換が成功すると図1(下)のような出力を得る。ここには、変換にかかった時間や、生成された実装例のURLが表示されている。このほかxml2freddy.phpにはさまざまなオプションが用意されている。-VOLUMEフラグを設定すると、出力として複数のPageをまとめたVolumeと呼ぶファイルを生成する。FREDDYは、データを細分化して保存するため、非常に大きなデータの場合、ファイル数が膨大になる可能性がある。これはPageごとに含まれるイベント数を増やすことで抑制できるが、クライアントであるWebブラウザが消費するメモリ量はPageに含まれるイベントの数に比例するため、やみくもに増やすわけにもいかない。そこでサーバー上では、複数のPageをまとめて1つのファイル(Volume)に保存し、通信時に動的に切り出してPageごとに送信することを可能としている。同時に-FRONTENDフラグを設定することにより、VolumeからPageを切り出すPHPプログラムも自動生成できる。クライアントのコードは、parse関数に渡すURLが、このPHPプログラムのURLになるだけで、実装の変更は必要としない。次のページでは、Webサーバーから届いたFREDDYデータをどのようにJavaScriptプログラムから利用するかを説明する。(前述と兼業)を経て2008年より現職。データベースとWebを基礎とした、データ通信手法や地理情報システム基盤の構築に興味を持つ。Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。ITがお届けするポッドキャストです。