5月31日に開催されたGoogle Developer Day 2007で発表され、一気に話題をさらった「Google Gears」。本稿では、そのGoogle Gearsを技術的な観点から解説したうえで、同アプリケーションを使用した簡単なサンプルをご紹介し、その魅力に迫ってみたい。なお、Google Gearsの概要については、「Google Gearsを組み込んだGoogle Readerを使ってみよう」を参照してほしい。

Google Gearsが提供するもの

Google Gears(以下、Gears)は、Webアプリケーションのオフライン使用を可能にする技術である。ただし、オフラインには様々な課題がある。セキュリティ上、ローカルマシン上で好き勝手にファイルを操作したり、読みだしたりすることは許されない。アプリケーションのページをキャッシュしておくことと、アプリケーションが使用するデータをキャッシュしておくことは別の話だ。そもそも、オフラインでの作業結果を保存するには、JavaScriptを使用してなんらかのローカルストレージにデータを読み書きする必要がある。それも簡単に、だ。

Gearsはこうした問題に対して、以下のような機能を組み込み、対処している。

  • ローカルサーバ - Webページに関する様々なリソース(HTML、JavaScriptファイル、画像など)をキャッシュしておくサーバ。Gearsは、ブラウザからのHTTP/HTTPSリクエストを途中で横取りし、キャッシュからリソースを読みだす。これにより、オフラインでページを表示できるだけではなく、レスポンスも高速化される。

  • データベース - Gearsはなんと、リレーショナルデータベース(SQLite)を内部に保持している。JavaScriptを用いて、データベースに対してSQLを発行し、データの読み書きを行うことが可能だ。これにより、アプリケーションのデータ管理を容易にすることができる。

ここでは、ローカルサーバの機能を軽く試してみたい。

ローカルサーバの詳細

ローカルサーバは、一度アクセスしたことのあるリソースをローカルにキャッシュしておき、オフラインでも利用可能にするためのものだ。そうしたキャッシュをGearsではリソースストア(ResourceStore)と呼んでいる。

リソースストアには二種類ある。あらかじめ決めておいたリソースをキャッシュするか、アプリケーションで自由にリソースを指定してキャッシュするか、だ。前者をManagedResourceStore、後者を単純にResourceStoreと呼ぶ。前者は、「マニフェスト」と呼ばれるメタデータで指定されたリソースしかキャッシュの対象としない。ただし、それらのリソースに対する管理はほぼ自動化され、更新されたリソースをオンラインから自動で取得し、更新することができる。後者は、キャッシュ管理が一切自動化されない。

本稿では、あらかじめ指定しておいたリソースをキャッシュする、「ManagedResourceStore」を試したい。

オフラインでもページを参照できるサンプル

作成するサンプルは以下のようなものだ。

サンプルの実行イメージ

「キャッシュに保存」ボタンを押すと、キャッシュにリソースが保存される。一度リソースをキャッシュしてしまえば、サーバが落ちていようと、自分のマシンがネットワークから切断されていようと、そのリソースはブラウザから参照可能だ。「キャッシュから削除」ボタンはその逆の処理が行える。