InfoQ

News

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

作者 Matthew Bass, 翻訳者 白石 俊平 投稿日 2008年6月4日 午前2時16分

コミュニティ
Java
トピック
JavaScript
タグ
Google 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

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

特集コンテンツ一覧

トップスポーツチームの監督に教わる秘訣

この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。

事例研究:Dutch Railwaysのプロジェクトにおける分散拠点でのスクラム・プロジェクト

この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。

Agile2008チーム参加レポート - 帰国そして変化

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。

SilverlightとJavaのインターオペラビリティ

マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。

Agile2008 チーム参加レポート - カンファレンス参加編

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。