外部ソースからのデータ読み込み
ここまでのサンプルはどれも、ローカルに作成したデータをJavaScriptで利用するものでした。ただし、実稼働環境では、リモートのデータソースからデータを取得する場合のほうが多いでしょう。その場合はもちろん、データソース側がGoogle Visualization APIに準拠した形式でデータを提供する必要があります。
Google Spreadsheetsであればそうした形式でデータを提供できるので、まずは先ほどのWebページからサンプルデータを抜き出してGoogleスプレッドシートに移すことにしましょう。Googleスプレッドシートを作成し、図4に示すようなデータを追加します。データを追加したら、こちらの手順に従って、Google Visualization APIに準拠したデータソースの形で公開するためのURLを求めます。
これで、サンプルWebページの<script>セクションを置き換えれば、データをローカルに生成する代わりにリモートソースから読み込めるようになります。リスト6に変更部分を示します。
class SampleController < GvizBaseController
def fruits
gvizifier do |gviz|
gviz.add_col('string', :id => 'name', :label => 'Name')
gviz.add_col('string', :id => 'parent', :label => 'Parent')
gviz.add_col('number', :id => 'quantity', :label => 'Quantity')
data = [
[ "Apples", "Root", 0],
[ "Braeburn", "Apples", 1],
[ "Cox", "Apples", 2.2],
[ "Golden Delicious", "Apples", 0],
[ "English", "Golden Delicious", 1],
[ "French", "Golden Delicious", 2],
[ "Bananas", "Root", 0],
[ "Caribbean", "Bananas", 2.5],
[ "Central American", "Bananas", 1.5],
[ "Clementines", "Root", 3]
]
gviz.set_data(data)
end
end
end
大きな違いは、google.visualization.Query()を使う点です。そこでsend()メソッドを呼び出すことにより、コンストラクタに渡されたリモートソースからデータが取得され、結果としてDataTableが返されます。ここから先は、以前のサンプルと同じようにデータを処理できます。
独自のデータソースの利用
リモートソースからデータを読み込めるようになったので、今度はカスタムのデータソースをGoogleビジュアライゼーション用のデータソースとして公開してみましょう。データソースには、リレーショナルデータベースをはじめとするストレージエンジンが使えます。それらを互換性のあるデータソースとして公開すれば、2度手間をかけることなく既存のビジュアライゼーションを再利用できます。
そのためには、ビジュアライゼーションがデータの要求に使用するワイヤプロトコルをデータソースが実装していなければなりません。このプロトコルでは、google.visualization.Queryインスタンスが出すHTTP GET要求への応答や、google.visualization.QueryResponseで想定されている形式と互換性があるJSON(JavaScript Object Notation)形式での応答が求められます。
このプロトコルはかなり複雑なので、サーバ側でヘルパーライブラリを再利用するのが無難でしょう。Google Visualization APIには、既にPython用ヘルパーライブラリが用意されています。また、本稿のソースコードを収めたダウンロードファイルには、Ruby on Rails上で使えるヘルパークラスが入っています。このヘルパークラスは、ダウンロードファイルにあるRailsのコントローラとモデル(gviz_base_controller.rbとgviz.rb)をRailsアプリケーションにインクルードするだけで使えます。以上の作業を終えてから、gvizifierヘルパーメソッド(リスト6を参照)を使用するRailsコントローラを実装すれば、カスタムデータをGoogleビジュアライゼーション用データソースとして公開できます。
gvizifierヘルパーメソッドによって公開されるgvizオブジェクトは、応答の実装に使えます。このオブジェクトは、新しい列を作成するメソッド(gviz.add_col())と応答データを設定するメソッド(gviz.set_data())を持ち、こうした入力情報を適切な形のJSON応答に変換してクライアントに送信するのに必要なあらゆる処理を担当します。
このヘルパーを使うと共に、リスト6のサンプルコードを(例えばActiveRecordモデルを使って)自分のデータベースからデータを取得するように書き換えれば、最小限の手間でそうしたデータを複数のビジュアライゼーションに対して提供できるようになります。
まとめ
本稿では、Google Visualization APIの基本事項から高度な内容まで、広い範囲にわたって実践的な解説を行いました。このAPIの使い方や新たなビジュアライゼーションの作り方、さらには各自のデータを使いやすいデータソースとして公開したり、他の開発者が提供しているビジュアライゼーションを再利用したりする方法も紹介しました。
さらに高度な内容を求めるなら、ビジュアライゼーションによるSQLライクなフィルタ処理やグループ化を可能にするVisualization Query Languageについて学んだり、ビジュアライゼーションをガジェット化してiGoogleやGoogleスプレッドシートに埋め込めるようにしたりするとよいでしょう。
ただし、サードパーティによって提供されているビジュアライゼーションについては、個人情報およびセキュリティに関するポリシーに必ず目を通してから、データを適用するようにしてください。

