【ハウツー】
5月31日に開催されたGoogle Developer Day 2007で発表され、一気に話題をさらった「Google Gears」。本稿では、そのGoogle Gearsを技術的な観点から解説したうえで、同アプリケーションを使用した簡単なサンプルをご紹介し、その魅力に迫ってみたい。なお、Google Gearsの概要については、「Google Gearsを組み込んだGoogle Readerを使ってみよう」を参照してほしい。
Google Gears(以下、Gears)は、Webアプリケーションのオフライン使用を可能にする技術である。ただし、オフラインには様々な課題がある。セキュリティ上、ローカルマシン上で好き勝手にファイルを操作したり、読みだしたりすることは許されない。アプリケーションのページをキャッシュしておくことと、アプリケーションが使用するデータをキャッシュしておくことは別の話だ。そもそも、オフラインでの作業結果を保存するには、JavaScriptを使用してなんらかのローカルストレージにデータを読み書きする必要がある。それも簡単に、だ。
Gearsはこうした問題に対して、以下のような機能を組み込み、対処している。
ローカルサーバ - Webページに関する様々なリソース(HTML、JavaScriptファイル、画像など)をキャッシュしておくサーバ。Gearsは、ブラウザからのHTTP/HTTPSリクエストを途中で横取りし、キャッシュからリソースを読みだす。これにより、オフラインでページを表示できるだけではなく、レスポンスも高速化される。
データベース - Gearsはなんと、リレーショナルデータベース(SQLite)を内部に保持している。JavaScriptを用いて、データベースに対してSQLを発行し、データの読み書きを行うことが可能だ。これにより、アプリケーションのデータ管理を容易にすることができる。
ここでは、ローカルサーバの機能を軽く試してみたい。
ローカルサーバは、一度アクセスしたことのあるリソースをローカルにキャッシュしておき、オフラインでも利用可能にするためのものだ。そうしたキャッシュをGearsではリソースストア(ResourceStore)と呼んでいる。
リソースストアには二種類ある。あらかじめ決めておいたリソースをキャッシュするか、アプリケーションで自由にリソースを指定してキャッシュするか、だ。前者をManagedResourceStore、後者を単純にResourceStoreと呼ぶ。前者は、「マニフェスト」と呼ばれるメタデータで指定されたリソースしかキャッシュの対象としない。ただし、それらのリソースに対する管理はほぼ自動化され、更新されたリソースをオンラインから自動で取得し、更新することができる。後者は、キャッシュ管理が一切自動化されない。
本稿では、あらかじめ指定しておいたリソースをキャッシュする、「ManagedResourceStore」を試したい。
作成するサンプルは以下のようなものだ。
|
|
サンプルの実行イメージ |
「キャッシュに保存」ボタンを押すと、キャッシュにリソースが保存される。一度リソースをキャッシュしてしまえば、サーバが落ちていようと、自分のマシンがネットワークから切断されていようと、そのリソースはブラウザから参照可能だ。「キャッシュから削除」ボタンはその逆の処理が行える。
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
| マイナビ、3月より書籍連動型のクリエイティブ・デザイン系セミナー開講 [12:00 2/10] |
|
【レポート】スマートフォンを狙ったワンクリック詐欺やオンラインバンキングを狙うゼットボット - トレンドマイクロマンスリーレポート [20:43 2/10] パソコン |
|
【レポート】レノボ、大和研究所の開発陣らによる「ThinkPad X1 Hybrid」の技術解説 [20:41 2/10] パソコン |
|
【レポート】CP+2012 - 発表されたばかりの「SD1」後継機の「SD1 Merrill」が人気 - シグマ [20:29 2/10] 家電 |
|
【レポート】実は大変なことだらけ…「胸が大きい人」あるある [20:26 2/10] ライフ |
|
[オタク川柳]「海賊王? それより課長に なってパパ」などノミネート作品20句発表 ネット投票開始 [20:23 2/10] エンタメ |