WebExtensionを書いてみよう
この記事はhttps://hacks.mozilla.org/2015/09/lets_write_a_webextension/の翻訳です。
WebExtensionを書いてみよう
By Blake Winton
WebExtensionはFirefox extensionを書く新しい方法です。
このテクノロジーはクロスブラウザ互換性の為に開発されました: 膨大な量のAPIがGoogle ChromeやOperaがサポートしているextension API と互換性を保っています。 他のブラウザの為に作られたアドオンは大抵の場合、少しの変更を加えるだけで動きます。APIもまたmultiprocess Firefoxとほぼ互換性を保っています。
一つだけ付け加えると、MozillaはChrome and OperaのサポートしているおおよそのAPIを実装している間、私たちはそれらAPIだけに制限されるわけではありません。それが理にかなっている場合、私たちは新しく機能を追加して、他のブラウザベンダーとこの機能を同様にを実装するかどうかという話をします。最後に、WebExtension APIはまだ開発途中です。Firefox Nightlyを使用する場合、最新のものを得られるため標準準拠の動作になります。よってこのチュートリアルを行うにはたぶんFirefox Nightlyを使用するのがベストでしょう。しかし覚えておいてください、これはまだ実験的な技術です – もしかしたら、なかったことになるかもしれません(訳注:もう正式機能になりました)。
始めてみる
よし、じゃあまずはシンプルなアドオンから始めてみようか。ボタンを追加して、クリックされたとき、私の一番好きなサイトが新しいタブで開くようにしよう。
まず最初のファイルとしてFirefoxに私たちのアドオンを伝える manifest.json
が必要だ。
<code>{ "manifest_version": 2, "name": "Cat Gifs!", "version": "1.0", "applications": { "gecko": { "id": "catgifs@mozilla.org" } }, "browser_action": { "default_title": "Cat Gifs!" } }</code>
よし!これで完了!たぶんあなたのアドオンはこのようになったと思います。もちろん、私たちはまだそれが動くかどうかわからない。なのでFirefoxにインストールしてみよう(最新のFirefox Nightlyを使います)。ディレクトリからFirefoxに manifest.json
をドラッグしてみてください。しかし実際にはあなたが望んだとおりに動かなかったと思います。
インストール
Firefoxがあなたの拡張をアドオンとして認めるには拡張子を.xpiとしてzipファイルを与える必要があります。なので最初に7-Zipをインストールして(訳注:win7,win10以降は標準でzip圧縮できます。)、7z a catgifs.xpi manifest.json
と入力します。(もしあなたがMacやLinuxを使っているならzipコマンドが標準で入っています。なのでzip catgifs.xpi manifest.json
とタイピングするだけで大丈夫です)。そうしたら、 catgifs.xpi
をFirefoxにドラッグします。そうするとエラーが表示されます。なぜなら私たちのアドオンはまだ署名されていないからです。
about:config
に行き、xpinstall.signatures.required
と検索ボックスに入力し、エントリーをダブルクリックし、falseに設定し、タブを閉じます。その後、もう一度 catgifs.xpi
をFirefoxにドラッグしてみてください。新しいアドオンをインストールするかどうかの選択画面が現れるはずです!
ここで重要なことは、Firefox44(年内にリリース)で始める場合、Firefox Betaやリリースバージョンアドオンのブラウザにインストールするためには署名を要求します。なのでもしあなたが上の設定をセットした場合でも、このチュートリアルを行うためにはまだFirefox NightlyやDeveloper Editionが必要になります。
もちろん、私たちのアドオンはまだほとんど動きません。
なので修正してみましょう!
機能を加える
最初に、下のコードを manifest.jsonの
browser_action
:という記述が含まれている行の上に記述します。
<code> "background": { "scripts": ["background.js"], "persistent": false },</code>
もちろん現在、上に出てきたbackground.js
ファイルはまだ存在していませんので作成しましょう。下のjavascript をbackground.js
の中に貼り付けます。
<code>'use strict'; /*global chrome:false */ chrome.browserAction.setBadgeText({text: '(ツ)'}); chrome.browserAction.setBadgeBackgroundColor({color: '#eae'}); chrome.browserAction.onClicked.addListener(function(aTab) { chrome.tabs.create({'url': 'http://chilloutandwatchsomecatgifs.com/', 'active': true}); });</code>
そうするとこんな風になるはずです。 もう一度7z a catgifs.xpi manifest.json background.js
(もしくは zip catgifs.xpi manifest.json background.js
)とタイピングしてアドオンを再生成し, catgifs.xpi
をFirefoxに再度ドロップします。そしてボタンをクリックする新しいタブが開くようになりました!