Googleがまた新しいサービスを開始しました。Google Gearsです。ものすごく大ざっぱに説明すると,Google GearsはWebアプリケーションをオフライン状態でも使うことができる環境をブラウザに拡張機能として付与するという技術です。

 執筆時点ではベータ版公開(しかもまだ英語のみ)が始まったばかりという,本当にできたてホヤホヤの状態です。Google Gearsとは一体どんなサービスで,Google Gearsによって何が変わっていくのかについて,簡単なサンプルも作りながら見ていきたいと思います。

Googleの新サービス「Google Gears」

 近年WebアプリケーションやWebサービスというソフトウエア形態がメジャーになってきました。デスクトップ上で独立して動作するExcelやWordのような一般アプリケーションと違い,Webアプリケーションはブラウザの“中”で動作します。Google Gearsを理解するためには,まずWebアプリケーションとは何なのかを理解する必要があります。しばしWebアプリケーションの話にお付き合いください。

 一般アプリケーション,例えばExcelは,ネットワークから切り離されたノートPCの上で表計算を実行し,結果を保存できます。一般アプリケーションはそのパソコンがインターネットに接続されているか否かには依存しないわけです。

 Excelと比較するのに丁度いいWebアプリケーションとして「Google Docs & Spreadsheets」があります(Google Docs & Spreadsheetsの利用にはGoogleアカウントが必要です)。このサービスに含まれているSpreadsheetsは,まさにブラウザの中に表計算ソフトが再現される仕組みです(図1)。

 表の中のどこかでデータが更新されると,更新されたタイミングでデータはGoogleのサーバーに保存されます。ローカルのPCにはデータが保存されません。データがサーバーに保存されているので,別の場所にあるPCからログインしてもデータを共有できます。Googleアカウントを持っている別のユーザーに対してメールで通知してシートを共有することもできます。必要であればCSV/XML/HTMLなどの形式でローカルにエクスポートして保存することもできますが,ベースの考え方はあくまでも「データはサーバー側に置く」です。

図1:Google Spreadsheetsの実行画面。データはサーバー側に保存され別の場所のPCからでも取り出せる

 最近における常時接続の普及や,どこからでもたいていインターネットを利用できるという世間の現状から考えると,Google Spreadsheetsは極めて合理的なシステムだといえます。表計算ソフトの本体そのものもローカルにあるわけではなく,Googleサーバーにあります。本体に何らかの不具合があって修正が必要でもサーバー側だけで対応できますし,機能拡張しても何かをダウンロードしてインストールするといった手間は一切ありません。私たち利用者にはブラウザを通してインタフェースだけが見えている状態です。

 面白いのはここからです。常時接続でどこからでもインターネットが利用できることを利用したサービスは,ある環境下ではそのメリットが最大のデメリットになるという問題を抱え込んでいます。つまり「インターネットが利用できない場所では,突然すべての機能が利用できなくなる」という問題です。一部機能が,ではなくすべての機能が,です。

 単純かつ身近な例で言えば,通勤中に電車やバスの中ではインターネットが利用できないということです。インターネットと繋がっていない環境では,Google Spreadsheetsを見ることすらできません。携帯電話をノートPCに繋いでパケット通信すれば,なんとかならなくもないんですが,こんな非経済的なことをする人は多くはありません。だから通勤中はパケット定額の携帯電話本体で通勤中の暇をつぶす人のほうが多いんです。

 Google GearsはWebアプリケーションの泣き所を解決するための一つのアイデアとして誕生しました。Google GearsはローカルでWebアプリケーションを動かしてしまえという発想です。データをサーバーではなくローカルに保存します。通信を発生させることなく,ブラウザ上で動くアプリケーションを作りましょうという考え方です。

 例えばGoogle自身がGoogle Gearsの最初のサンプルとして紹介したのは,RSSリーダーである「Google Reader」のGoogle Gears対応版でした。このWebアプリケーションではオンラインのときに指定されたサイトからRSSを集めてきます。通常ならば次に起動したときにも,また指定サイトからRSSを集めてくるという通信動作が発生します。しかしオフラインモードでは通信は発生せず,前回取得したRSSの内容を表示するという仕組みです。最新のRSSフィードを取得したい場合にはオンラインにして再度取得させます。ものすごく単純に言ってしまえばキャッシュをローカルに持っているんだと言えなくもありません。しかしWebアプリケーションというものはオンラインで使用される物だという設計になっているため,通常はキャッシュを保持しておくということそのものができないわけです。

 Google Gearsはオフラインで動作しなくてはならないため,サーバー側の処理には頼れません。そこで,処理動作をローカルのブラウザだけで完結できるようにするために,処理言語としてJava Scriptを使用します。Java ScriptはローカルのPC側に処理エンジンがあり,オフラインであっても動作します。

 このシステム全体をGoogleはBSDライセンスとして公開すると宣言しました。私たちは「このシステムはGoogle Gearsを使っている。著作権はGoogleにある」と著作権明記さえすれば,自由に使用できます。業務か趣味かを問わず,Webアプリケーションを作成しているプログラマにとって,Google Gearsは何かしらの意識革命を引き起こしえる存在に感じられます。つまりGoogle Gearsはそれ自体がGoogleマップやYoutubeのように直接ユーザーに何か便利なサービスを与えるというサービスではなく,ユーザー向けにWebアプリケーションを作成しているプログラマに対しての技術サービスだというわけです。

 ですから一般ユーザーが「おい昨日のGoogle Gears見たかよ」という会話には絶対なっていきません。きっとものすごく静かに誰もが意識することなく水面下で採用され「あのWebアプリ,オフラインでも動いて便利だよな」という小さな世評にしかならないものです。だからなのでしょう。いろんなITニュース系サイトの解説を見ても,ものすごくコンパクトに「Google Gearsというサービスが提供開始された。Google Readersが最初のサンプルになった」としか書かれていません。技術者にしか内容はわからない,Googleにしては地味なサービスです。しかしプログラマにとってはとても興味深いサービスです。いい鉋(かんな)は,それを使って仕事をする大工さんにしか価値がわかりません。

Google Gearsの特徴と構成

 Google Gearsの公式ページを見てみましょう。驚くほどシンプルです。日本語の解説ページは執筆時点では用意されていません。公式ページにいくと,Internet Explorer(以後IEと略)の場合はアドオンのインストールを確認するセキュリティ警告が出ます(図2)。警告部分をクリックしてメニューから「ActiveXコントロールの実行」します。あとは画面の指示に従ってください。

図2:Google Gearsのページ。アドオンのインストールに対して,IEがセキュリティ確認をしている

 Firefoxの場合はページ右上にある「Install Google Gears(BETA)」をクリックして画面指示に従ってください。セットアップ後はブラウザ自身の再起動が必要になります。

 再度公式ページを開いて,ボタンがあった場所に「Google Gears is installed」というチェックマークが付いていれば,Google Gearsを導入しているアプリケーションを実行する環境のセットアップは完了です。セットアップがインストールしてくるのは環境であって,何らかのアプリケーションではありません。ここは勘違いしないでください。導入したから何かが使えるようになるという変化は発生しません。

 WindowsでGoogle Gearsを利用するためのシステム要件は非常に緩くなっています。2点だけです。

  • Windows XPまたはVista
  • Firefox 1.5以上,あるいはInternet Explorer 6.0以上

 ほぼブラウザのバージョンだけが問題で,後の条件は特にないというわけです。これはGoogle Gearsが使用するJavaScriptの動作要件がブラウザに依存しているからだと考えられます。なおGoogle GearsはWindows以外にも Mac OSとLinuxにも対応しています。本来一番オフラインで使いたいPDA(携帯型小型端末)に対応していないのは残念です。将来的な対応に期待したいと思います。

 公式ページには,とても少ない説明の中にGoogle Gearsの特徴3点が紹介されています。対訳をつけてみます。

  • Store and serve application resources locally
    ローカルにアプリケーション・リソースとデータを保持して実行します

  • Store data locally in a fully-searchable relational database
    ローカル・データは完全な検索機能を持つリレーショナル・データベースに保存されます

  • Run asynchronous JavaScript to improve application responsiveness
    Javascriptは非同期に実行され,更新の必要に応じてアプリケーションと通信します

 この解説は今までの説明で述べてきたものと変わりありません。特に詳説は必要ないでしょう。この三つの概念が以下のように,それぞれAPIグループとして実装されています。

  • ローカル・サーバー(LocalServer)
  • データベース(Database)
  • ワーカープール(WorkerPool)

 Google GearsはまずWebアプリケーション本体をローカルに保存して実行できる環境を作ります。これが「LocalServer」です。ローカルにキャッシュされたWebアプリケーションとブラウザは,インターネットと同じHTTPで通信します。ローカルマシンの中に擬似的なネットワーク空間を作ってしまうわけです。

 アプリケーションがデータの入出力を必要とする場合,データはデータベースに格納されます。Google Gearsを導入した段階で,ローカルマシンの中にデータベースが作成されるわけです。このデータベースを操作するのが「Database」API群になります。データベースが導入されるといっても,MySQLやPostgreSQLのように巨大な物がインストールされるわけではありません。

 このデータベースの実体は,SQLiteです。SQLiteはアプリケーションに組み込んで使用されるのを目的とした軽量なデータベース・エンジンです。データベース・サーバーにつきもののユーザーのような概念がなく,データの出し入れを主眼としてシンプルに設計されています。SQLiteは日本語2バイト文字も通ります。

 最後の「WorkerPool」は,インターネット上のコンテンツをローカルにキャッシュするコントロールを担当します。ローカル側サーバー機能という言い方もできそうです。Poolの名前の通り,まさに貯め込んでおくという感じです。言葉で説明することは難しいので,WorkerPoolについては後半のサンプルも眺めながら確認してください。

 なお上記の三つのAPI群のほかにいくつかのAPI群があります。一つは「Factory」です。FactoryはGoogle GearsのコアとなるAPIで,LocalServer,Database,WorkerPoolのインスタンスを作成するのに使用されます。

 2007年8月末にGoogle Gearsはバージョンが0.2に上がり,「Timer」と「HttpRequest」が追加されました。Timerは文字通りタイマー管理をするAPI群です。一定間隔で処理を行いたい場合に使用します。タイマー機能そのものはJavaScript本体にもあります。Google GearsのTimer機能も書式はJavaScriptのタイマーと同じになっています。Google GearsのTimerはローカルにキャッシュしたコンテンツ(WorkerPool)に対しても,メインのHTMLに対しても利用可能だと説明されています。

 「HttpRequest」は自身以外のコンテンツに対してHTTPヘッダ,あるいはデータを送信し結果を受信することができるAPI群です。機能と名前からも想像できるようにDOM/AjaxのサンプルとしてよくでてくるXMLHttpRequestのGoogle Gears版といえます。HttpRequestもTimer同様にベースになったXMLHttpRequestと書式,関数,プロパティがほぼ共通です。

 各APIを含めた技術情報はGoogle Gearsの開発者向けページにまとめられています。ベータだけあって変更や追加は随時行われていますので,本稿執筆時点の内容よりも新しくて便利な関数やAPI群が追加されていることもあると思われます。初めてこの記事を読まれた方は,先に一度開発者向けページをチェックされることをお薦めしておきます。