BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース PersisteJSとMySpaceによるGearsの採用で、クライアントサイドストレージの勢いは続く

PersisteJSとMySpaceによるGearsの採用で、クライアントサイドストレージの勢いは続く

Paul Duncanにより、PersistJS(source)が先日リリースされた。これは、クライアントサイドでのデータストレージを実現するJavaScriptフレームワークである。こうしたストレージは、オフラインでの利用が可能なWebアプリケーションによって主に利用される。PersistJSはクライアントサイド・ストレージを実現するのに、他のフレームワークに比べていくつかの利点を持っている。

なぜ単にクッキーを使わないのか?

以前は、クライアントサイド・ストレージを実現するための伝統的なソリューションと言えばクッキーであった。しかし、PersistJSが人気を博しつつある理由は、クッキーにいくつかの欠点が存在する事だ。例えばクッキーのサイズは4キロバイトに制限されている。また、クッキーは全てのHTTPトランザクションで送信されるため、帯域を無駄遣いする。その上、クッキーの作成や更新は面倒だ。 

PersistJSは何が良いのか?

  • とても小さい(GZIP圧縮されるとわずか3K)
  • 使われているブラウザに関係なく一貫したAPIを持つ
  • ブラウザプラグインや他のライブラリを必要としない
  • 現在のブラウザがサポートしていなければ、クッキーを代わりに利用する
  • IE、Firefox、Safariの次期バージョンもサポートすると宣言している
また、ブラウザの種類をテストするのではなく、互換性自体をテストする戦略を採っている。この意味するところは、例えばIEのある「特定のバージョンかどうか」をチェックする代わりに、呼び出している個々の関数呼び出しが、使用されているIEのバージョンで「サポートされているかどうか」をチェックする、と言う事だ。これにより例えば、ある特定の関数呼び出しが失敗するブラウザであっても、完全に対象外とする必要はないだろう。

使用例

クライアントサイドのストアにデータを保存する、最も単純な例は、
var store = new Persist.Store('My Data Store');
var data = "some arbitrary data of varying length";
store.set('saved_data', data);
値を取得するにはコールバックを必要とするが、やはり簡単だ。
store.get('saved_data', function(ok, val) {
if (ok) alert('saved data = ' + val);
});

その他のクライアントサイド・ストレージ・ソリューション

Dojo Storage(source)とGoogle Gears(source)も、クライアントストレージを提供している。しかし、こうしたブラウザプラグインに依存すると問題になる可能性もある。なぜなら、誰もがそのプラグインをインストールしている訳ではないからだ。

その他、いくつかの重要な違いが存在する。

Dojo Storage

  • 長所: 良いドキュメントがあり、大きなユーザベースがある
  • 欠点: Flashプラグインがインストールされている場合にサポートされるのはInternet Explorerのみ
  • 欠点: WebKitベースのブラウザ(Safariなど)がサポートされていない 
  • 欠点: 利用するには他のDojoライブラリが必要

Google Gears

  • 長所: Googleがバックに控えており、Dojoのようにドキュメントがしっかりしている
  • 欠点: まだ広くデプロイされていない
  • 欠点: プラグインがインストールされていなければ利用できない

ストレージに加えて、Gearsはクライアントサイドでの検索もサポートしている。今週San Franciscoで開かれたGoogle I/O(source)カンファレンスにおいて、MySpaceはメッセージの検索にGearsを使用している事を発表した(source)。今までは探しているメッセージを見つけるのにページを移動する必要があったが、Gearsを利用する事で、全文検索(source)はクライアントサイドで行われる。検索はインクリメンタルに行われ、ユーザの種類に応じて結果が返される。

PersistJSは、Gearsを含むたくさんの異なるバックエンドをサポートしている事に注意しよう。これによるPersistJSのメリットは、バックエンドが変更されても、一貫したAPIを使い続けられると言う事だ。

原文はこちらです:http://www.infoq.com/news/2008/05/persistJS

この記事に星をつける

おすすめ度
スタイル

BT