« Jetpack SDK 0.4 の Widget と Private Browsing API 使用例 | Jetpack SDK 0.4 の Page Worker API » |
Jetpack SDK 0.4 の Simple Storage API
拡張機能の設定値のような少量のデータを保存する際には Preferences Service API を使用しますが、より多くのデータを永続的に(Firefox を終了しても保持されるように)保存するには、 Simple Storage API が便利です。
基本的な使い方
はじめに require 関数でライブラリをインポートします。
var simpleStorage = require("simple-storage");
もっとも単純な方法は、 storage
プロパティへ直接値をセットする方式です。以下は “test” という文字列を保存した後、値を取り出す例です。
simpleStorage.storage = "test";
console.log(simpleStorage.storage); // test
文字列だけでなく、数値、配列、オブジェクトなどをセットして保存可能です。
simpleStorage.storage = { "foo": 100, "bar": 200 };
console.log(simpleStorage.storage.foo); // 100
上記は以下のように書くことも可能です。
simpleStorage.storage.foo = 100;
simpleStorage.storage.bar = 200;
データの保存先
Simple Storage APIを使って保存したデータは、プロファイルフォルダ配下の jetpack{パッケージマニフェストのID}simple-storagestore.json へJSON形式で保存されます。また、ファイルへの出力タイミングは Jetpack SDK 0.5 時点では Firefox 終了時のみですが、将来的には Firefox 使用中も最大で5分に1回出力される仕様となるようです。
データ保存可能サイズ
ひとつの拡張機能が保存できるデータサイズは5MBまでとなっています。 Simple Storage API の quotaUsage
プロパティにて現在のデータ使用量(5MBを1.0とした割合)を調べたり、 onOverQuota
プロパティにてデータ使用量が最大値を超過したときのコールバック処理を追加したりすることも可能です。ただし、 Jetpack SDK 0.5 時点では正常に動作しないようです。
console.log(simpleStorage.quotaUsage);
simpleStorage.onOverQuota = function() {
// データ使用量が最大値を超過したときのコールバック処理
};