Google Gearsにより、Google Reader(Google のRSS reader)がオフラインで使えるようになった。
モバイル環境ではネットワークがつながらない・安定しないという問題がある。これを解決するために、サーバにあるデータをクライアント側にキャッシュ・蓄えて(hoarding)、ネットワークにつながらなくてもアプリケーションが実行できるようにすることを disconnected operation という。Google Gears は、disconnected operation を Ajax で実装するためのブラウザ・モジュールである。
今から 15年以上も前、カーネギーメロン(Carnegie Mellon)大学 School of Computer Science の M. Satyanarayanan 教授(通常 Satya と呼ぶ)のところで研究されていたのが、ファイルシステム層での disconnected operation である。分散ファイルシステム Coda 上で実装されており、利用者やアプリケーションからは disconnected operation が透過(transparent) になっていた。つまりノートPC を普段使っているうちに勝手にデータが hoard され、いつネットワークから切り離されても利用者はそれに気づかないでアプリケーションを動かすことができたし、アプリケーションを改造する必要もなかった。Coda 上の disconnected operaiton の基本設計と実装については "Disconnected Operation in a Distributed File System (Lecture Notes in Computer Science)" という博士論文に詳しく記述されている。
僕自身は Satya の研究室に訪問研究員として 1年半滞在(1994年11月から1996年4月まで)、グループウェアの disconnected operation を研究した。再接続したときにクライアントとサーバとにあるデータの複製を統合する必要があるが、そのデータ統合(競合解消)をどうすべきかモデル化と実装による検証を行った。海外に初めて住むという貴重な体験と共に、OS に代表されるシステムソフトの研究方法を徹底的に鍛えられた 1年半であった。当時の Satya たちの研究が、モバイルコンピューティングの最先端を走っていたことは紛れもない事実である。
それから 15年以上の時を経て、ブラウザ層での disconnected operation を実装したのが Google Gears である。Coda とちがい、オンライン/オフラインの切り替えは利用者やアプリケーションに透過にはなっていない。アプリケーション固有の実装ができるように、基本的なサブシステムとその API が公開されている。クライアント上のサブシステムは下記のようなものであろう:
- Web (http) サーバ
- データ・ストレージ(SQL データベース)
- オフライン/オンラインの切り替えモジュール
- 非同期通信
- 並列スレッド実行
- データのキャッシュ・hoard
- 再接続時のデータ複製(レプリカ)間の同期
Google Reader の複製間同期は非常にシンプルである。RSS が既読/未読のどちらかのステータスであり、ネットワーク再接続時にはクライアント側のステータスを有効にすればよい。Google Docs や Spreadsheet のような複雑なアプリケーションにおいて、どのような方針で実装するべきか。単にクライアント側のステータスで override すればよいのか。一つのブラウザがオフラインになっている時、別の PC からオンラインアクセスがあった時はどうするのか。実装がモダンになったとはいえ、データ複製の統合・競合解消の難しさは 15 年前とまったく変わっていないのである。
システム | Coda | Google Gears |
---|---|---|
時期 | 1990年代前半 | 2007年 |
組織 | Carnegie Mellon 大学 | |
実装 | ファイルシステム層 | ブラウザ/http層 |
透過性 | アプリ透過 | アプリ改造 |
Disconnected Operation in a Distributed File System (Lecture Notes in Computer Science)
- 作者: James J. Kistler
- 出版社/メーカー: Springer
- 発売日: 1995/12/13
- メディア: ペーパーバック
- クリック: 1回
- この商品を含むブログ (2件) を見る