以前、wasavi の設定を同期可能にするとして、どうしたものかというのを少し考えたことがあって、そのときは exrc に秘密の情報を書いている場合もあるかもしれないし、全自動で同期させるのはどうなのかということで棚上げにしていた。しかしじゃあ半自動ならいいのかというとそれはそれでなかなか使い勝手が悪そうだ。ということでやっぱり全自動でいいんじゃないのかなあという気分になりつつある。そもそも exrc に秘密の情報を書くことがあるだろうか。ない。
具体的には、現在は設定の保持にバックグラウンドの localStorage を使っているところを、例えば Chrome であれば chrome.storage.sync 系の API を使う。少し面倒なのは、localStorage であれば値の代入や読み出しは同期的に行えるのに対して chrome.storage は非同期的なのでその辺の修正は必要だという点。しかし実は下準備はすでにしてあって、バックグラウンドの初期化は Promise を使うようにしたので同期だろうが非同期だろうが特に問題はない。
Firefox はどうなのか。Firefox にも同期の仕組みはあるのだが、エクステンションに公開されたストレージ API というのはない感じ。少なくとも Add-on SDK にはない。そのかわり割と有名なテクニックとして about:config にリストされる Firefox 自身の設定のうち services.sync.prefs.sync.extensions. で始まるものは extensions. 以降の部分のキーが同期対象になるというものがある。
これ、同期が完了する前に読み出したりしたらどうなるんだろうか。Chrome の同期 API の場合は同期された値を読みだした時のコールバックを使用するわけなのだけど。Firefox ではどうなるの? 逆に同期完了前に値を設定したりしたらどうなるの? わたしの救助信号とどいてるの? Oh, 答えて。