プログラミング

Firefox アドオンを WebExtensions で作る

概要

WebExtensions とは、クロスブラウザで動作可能なアドオンの開発するための技術。Chrome や Opera 、Microsoft Edge などとも互換性があるため、クロスブラウザのアドオンの作成が容易になるらしい。

ここでは、Firefox アドオンの開発についてメモする。

基本情報

パッケージ化とインストール

開発中のパッケージを一時的に読み込む場合は、about:debugging ページから読み込みができる。Firefox を再起動するまで、アドオンを使用することが出来る。継続的に使用する場合は、パッケージ化する必要がある。Firefox Nightly や Firefox Developer Edition を除き、パッケージ化したアドオンを読み込ませる際には、アドオンの xpi ファイルに署名する必要がある。

WebExtensions アドオンの場合は、AMO を通じて署名をするか、web-ext ツールを用いて署名を行うことが出来る。

web-ext コマンドを用いたパッケージの作成と署名

web-ext コマンドを用いてパッケージを作成する際には、カレントディレクトリをパッケージの構成ファイルのあるディレクトリに移して web-ext build コマンドを実行すると、作業ディレクトリ配下に web-ext-artifacts というサブディレクトリが作成され、その中に作成されたパッケージ(zip ファイル)が保存される。

$ cd /path/to/addon
$ web-ext build

パッケージに署名を行う場合には、同様にカレントディレクトリをパッケージの構成ファイルのあるディレクトリに移して web-ext build コマンドを実行する。この場合、コマンドライン引数として api-key と api-secret を指定する必要があるが、これらは、Manage API Keys :: Developer Hub :: Add-ons for Firefox ページで作成する必要がある。web-ext sign コマンドを実行すると、AMO に通信が行われ、アドオンの署名が行われる。web-ext build コマンドと同様に、作業ディレクトリ配下に web-ext-artifacts というサブディレクトリが作成され、その中に署名済みのパッケージ(xpi ファイル)が保存される。

$ cd /path/to/addon
$ web-ext sign --api-keys=kkkkkkk --api-secret=sssssss

AMO(addons.mozilla.org) を通じたパッケージの署名

作成したパッケージは、Mozilla へアップロードすることで、自動検査ののちに署名済みのパッケージを得ることが出来る。前述の web-ext コマンドを用いた署名もコマンド内部で addons.mozilla.org へパッケージをアップロードして署名を行っているよう。アップロードする際にパッケージを公開(Listed)とするか非公開(Unlisted)とするかを選択できるので、プライベートなパッケージの場合でも AMO に掲載せずに署名することが出来るが、署名を行えるのは Mozilla だけなので、Mozilla に送信せずにパッケージを署名することはできない。