Mozilla財団がlocalForageをリリースした。localForgeは、Webアプリケーションのオフラインデータをシンプルに保存できるようにする、新しいJavaScriptライブラリである。
最近のブラウザの技術ではないにも関わらず、選択肢の多さから、オフライン対応は常に統一感のない状態であった。このライブラリをユニークなものにしているのは、最新のクライアントサイド技術の特徴である非同期性とBlob対応という両方の長所を、シンプルなAPIとして組み合わせようとしている事である。このライブラリは、Webアプリケーションに強力なオフライン機能を提供する。そして、Webアプリケーションをモバイルのネイティブアプリケーションと同等の存在に近づけ、開発者の作業をより直感的にしている。
最初の選択肢のひとつであったlocalStorageは、オフラインの保存領域に対するシンプルなデータアクセスを提供した。しかしながら、その遅さ、同期性やバイナリのBlobが扱えない(例えば、mp3ファイルのキャッシュができない)ことがベンチマークテストによって示されている。それ以来、評判の良い他の2つの選択肢―IndexedDBとWeb 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