BT

LocalForageでアプリケーションのオフライン対応を行う

| 作者: João Paulo Marques フォローする 0 人のフォロワー , 翻訳者 株式会社オープンストリーム 木村 茉由 フォローする 0 人のフォロワー 投稿日 2014年4月6日. 推定読書時間: 3 分 |

原文(投稿日:2014/02/26)へのリンク

Mozilla財団がlocalForageをリリースした。localForgeは、Webアプリケーションのオフラインデータをシンプルに保存できるようにする、新しいJavaScriptライブラリである。

最近のブラウザの技術ではないにも関わらず、選択肢の多さから、オフライン対応は常に統一感のない状態であった。このライブラリをユニークなものにしているのは、最新のクライアントサイド技術の特徴である非同期性とBlob対応という両方の長所を、シンプルなAPIとして組み合わせようとしている事である。このライブラリは、Webアプリケーションに強力なオフライン機能を提供する。そして、Webアプリケーションをモバイルのネイティブアプリケーションと同等の存在に近づけ、開発者の作業をより直感的にしている。

最初の選択肢のひとつであったlocalStorageは、オフラインの保存領域に対するシンプルなデータアクセスを提供した。しかしながら、その遅さ、同期性やバイナリのBlobが扱えない(例えば、mp3ファイルのキャッシュができない)ことがベンチマークテストによって示されている。それ以来、評判の良い他の2つの選択肢―IndexedDBWeb SQL―が登場してきた。これらは非同期性を持ち、高速であり、そして多くのデータセットをサポートしている。これら2つの技術の難点は、APIの使用方法があまりシンプルではないということと、どちらもすべてのメジャーなブラウザでサポートされているわけではないということである。

直近のlocalForgeのリリースは、統合された技術を用いてこれらの問題を打開しようとしている。すなわち非同期性と、とてもシンプルなlocalStorageのシンタックスを用いた、IndexedDBとWeb SQLのBlobサポートである。

var settings = {color: 'black', font: 'Helvetica'};
localForage.setItem('settings', settings, function(result) {
  console.log(result);
});

IndexedDBとWeb SQLのサポートを含めることにより、localStorage単体よりも多くのWebアプリケーションのデータ保存が可能となる。また、APIのノンブロッキングという性質は、get/setのコールにおいて、メインスレッドからの応答がなくならないようにする。そのため、Webアプリケーションをより高速化するのである。さらに、localForgeはコールバックとES6 Promisesをサポートしており、開発者にとって最適な実装方法を選べるようにしている。

このライブラリはIndexedDB、Web SQLそしてlocalStorageのドライバの自動読み込みと管理を行うので、手動でドライバを扱う必要がない(Webアプリケーションを動かしているブラウザに関係なく、最適なドライバが選ばれる)。IndexedDBもWeb SQLも利用できない場合、localForageはlocalStorageを代わりに使用するため、少なくとも基本的なデータはオフラインに保存することができる(しかし、Blobのサポートはなく、パフォーマンスはより遅くなる)。

localForageはすべてのモダンブラウザをサポートしている。非同期のデータ保存はすべてのブラウザで利用可能であり、以下の一覧のカッコの中は 該当する localStorageのサポートバージョンである。

  • Android Browser 2.1
  • BlackBerry 7
  • Chrome 23 (localStorageはChrome 4.0以降)
  • Chrome for Android 32
  • Firefox 10(localStorageはFirefox 3.5以降)
  • Firefox for Android 25
  • IE 10(localStorageはIE 8以降)
  • IE Mobile 10
  • Opera 15(localStorageはOpera 10.5以降)
  • Opera Mobile 11
  • PhoneGap/Apache Cordova 1.2.0
  • Safari 3.1

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT