firefox-addon チュートリアル
firefox-addonを使い始める
サーチ…
前書き
アドオン:
Firefoxのアドオンは一般にExtensionsにグループ化され、次にFirefoxアドオンの「その他のタイプ」に分類されます。
拡張機能
拡張機能を使用すると、Firefoxの機能を追加したり、Firefoxの機能を変更してFirefoxをカスタマイズすることができます。拡張機能を使ってできる種類のものには、次のものがあります。
- 特定のウェブサイトの表示方法、コンテンツ、インタラクション方法を変更する。
- Firefoxユーザーインターフェイスをカスタマイズする
- Firefoxに追加の機能を追加する
- 既存のFirefox機能の機能の変更
Firefox拡張機能は主にJavaScriptで書かれており、JavaScript APIがいくつか追加されています。
WebExtensions以外のすべてのタイプの拡張機能の非推奨と削除
Firefoxのアドオン、特に拡張機能は現時点では流行しています。 Mozillaは、WebExtensionsを除くすべての種類のFirefox拡張機能を廃止し、2017-11-14に予定されているFirefox 57ではWebExtensions以外のすべての拡張機能を無効にすることを発表し、確認した。
拡張の種類
Firefoxには4種類の拡張機能があります(これらはすべてアドオンと呼ばれます)。
WebExtensions :WebExtensionsは、サポートされるFirefox拡張の唯一のタイプです。これらのアドオンは、 manifest.jsonファイルで記述されます。このAPIは、Google Chrome拡張機能で使用されているものに似ています。これらのアドオンは、Javascriptに加えてHTMLとCSSを使用します。 MozillaはこのAPIがFirefox拡張の未来であると述べていますが、このAPIはまだ開発中です。今のところ、 Firefox Developer Edition ( Firefox Nightly)を使ってWebExtensionアドオンを開発してテストすることをお勧めします。また、使用する機能に必要なFirefoxのバージョンを注意深くメモする必要があります。この情報は、MDNのドキュメントページの「ブラウザ互換性」セクションに含まれています。
WebExtensionsは、他の3種類の拡張機能とは大幅に異なるAPIを使用します。意図的に、他のアドオンタイプによって提供されるインターフェースを使用する能力はありません。
アドオンSDK :[ 廃止予定。削除の予定 ]これらのアドオンは、
jpm init
実行することによって最初に生成されるpackage.jsonファイルによって記述されjpm init
。これらの拡張機能は、頻繁に使用されますrequire()
のいずれかをロードするためにハイレベル 、または低レベルのAPIは、Firefoxとインタフェースします。これらのアドオンは、Javascriptに加えてHTMLとCSSを使用します。彼らはでテストのためにロードされたときに、現在、これらのアドオンは、ブートストラップの拡張に包まれjpm run
またはによって.xpiファイルに統合jpm xpi
(すなわちAMO / Mozillaのへのアップロード)配信のため。つまり、SDKラッパーを使用してブートストラップされた拡張機能です。Mozillaは、拡張機能が
require("chrome")
使用しないか、あるいはXUL 、 XPCOM 、およびXBLに依存する限り、アドオンSDKベースの拡張機能を引き続きサポートすることを約束しているようrequire("chrome")
。ブートストラップされた拡張機能で実行できるほとんどの機能は、アドオンSDKベースの拡張機能で実行できます。しかし、多くのこのようなことはSDKをバイパスし、アドオンSDKを使用する利点のかなりの部分を失うことになります。
ブートストラップ :[ 廃止予定。削除される予定 ]彼らはアドオンをアンロード/ロードするために再起動するアプリケーションを必要としませんでしたMozillaの拡張の第一のタイプだったので、これらの拡張機能は、一般に「restartless」と呼ばれています。しかしながら、再始動なしはそれらがどのように機能するかの記述である。このタイプのアドオンの名前として "restartless"を使用するのは、アドオンSDKとWebExtensionアドオンの両方とも、アドオンのロード時またはアンロード時にアプリケーションを再起動する必要がないためです。そのため、このタイプのアドオンの名前として「再起動なし」を使用しなくなる傾向があります。
これらのアドオンは、Javascriptに加えてHTMLとCSSを使用します。多くの人がXULを使ってFirefoxとやりとりしています。
これらのアドオンには、 bootstrap.jsというJavaScriptファイルがあります。このファイルには、アドオンの
startup()
、shutdown()
、install()
、およびuninstall()
ために呼び出されるエントリポイント(関数)が含まれている必要があります。これらのアドオンには、アドオンを説明するinstall.rdfファイルが含まれています。通常はそうではありませんが、拡張子のファイルとディレクトリがMozillaアプリケーション(Firefoxなど)とどのように関係しているかを記述したchrome.manifestファイルもあります。
オーバーレイ/ XUL /レガシエクステンションで実行できることの大半は、すべてではありませんが、ブートストラップされたアドオンで実行できます。アドオンSDKで実行できることは、ブートストラップされた拡張機能で行うことができます(アドオンSDK拡張機能は、JavaScriptベースのAPIレイヤーでブートストラップされたアドオンです)。
Mozillaは、「 XUL 、 XPCOM 、およびXBLに依存するアドオン」 を非難する予定であると述べている 。すべてのブートストラップされたアドオンがこれらのテクノロジに依存するわけではありませんが、ブートストラップされたアドオンは、アドオンSDKおよびWebExtensionアドオンよりも低いレベルで動作する傾向があります。したがって、これらの技術を使用する可能性が高くなります。ブートストラップされたアドオンは廃止予定であると言っている人もいますが、そのようなケースは明らかではありません。結局のところ、アドオンSDKの拡張機能は、
require("chrome")
を使用しないかXUL、XPCOM、XBLに依存しない限り、非推奨にはなりません。また、すべてのアドオンSDK拡張機能はSDKラッパーだけでブートストラップされた拡張機能です。オーバーレイ/ XUL /レガシー :[ 非推奨]削除の予定 ]これらのアドオンには、アドオンを記述するinstall.rdfファイルと、アドオンのファイルがアプリケーションのファイルにどのように関係しているかを記述するchrome.manifestファイルが含まれています。アプリケーションでのアドオンの機能は、 chrome.manifestファイルに記述されている関係に完全に依存しています。これに対する唯一の例外は、拡張機能のアイコンやinstall.rdfファイルに示されている拡張機能のオプションを記述するファイルのようなものです。これらの拡張機能は、アプリケーション(Firefoxなど)と非常に低いレベルで対話します。これにより、アプリケーションに変更が加えられたときに破損する可能性が高くなります。
これらのアドオンは、Javascriptに加えてXUL、HTML、CSSを使用します。また、 XPCOMとXBLを使用するものもあります。
すべてのオーバーレイ/ XUL /レガシ拡張は、非推奨になる予定です。
他の種類のFirefoxアドオン
ほとんどの人がFirefoxアドオンについて考えると、彼らは上記の拡張機能について考えています。しかし、いくつかの追加の種類のFirefoxアドオンがあります:
- テーマ [ 部分的に非推奨 ]では、Firefoxのルック&フィールのカスタマイズが可能です。主に、ブラウザのすべての部分に異なるCSSルールを提供します。 「完全なテーマ」は廃止予定であり、 部分的に現在存在しないインターフェースに置き換えられる 予定です 。
- モバイルアドオンはAndroid用Firefox向けです。現在、再起動のないすべてのFirefox拡張機能タイプがサポートされています。
- 検索エンジンプラグインは、ブラウザの検索バーに追加の検索エンジンを追加するために使用されます。
- ユーザー辞書では、スペルチェックを追加言語で使用できます。
- 言語パックは、Firefoxのユーザーインターフェイスに追加の言語を追加します。
- プラグインは、アプリケーション自体がネイティブ表示できないコンテンツを表示するための共有ライブラリです。
この「例」は主に私のMakyen'sからのいくつかの変更を加えて、stackoverflowの質問に答えてコピーされています。
このコンテンツの一部は、Mozilla Developer Network(MDN)の「 アドオン」ページにコピーされています 。
これはもともとfirefox-addonタグの「備考」セクションにMakyenによって投稿されました。 OndřejDoněkによって修正され、追加の "for"が削除されました。 ノースで行われた1回の編集では、「備考」から「紹介」という固定された「例」に移動されました。残念なことに、そうすることで、システムは帰属情報を失うことになりました。
一時的なアドオンのインストール
開発中のアドオンをテストするには、一時的にFirefoxにインストールすることをお勧めします。あなたは一時的なアドオンとしてそれをロードすることによってそうすることができます。そうするには:
-
about:debugging
- [Load Temporary Add-on]をクリックします。
- ファイルピッカーで、アドオンファイルを含むディレクトリに移動します
- フォルダ内の任意のファイルを選択
- [開く]をクリックします。
次のアニメーションはabout:debugging
から "aaaaaaaaaaaaaaaaaaaaaa - demo add-on"という名前のアドオンをロードし、 about:addons
がabout:addons
現れることを示しています:
一時的なアドオンとして、アンパックされたアドオン( .xpiファイルにパックするアドオンのすべてのファイルを含むディレクトリ)か、または.xpiファイルにパックされているアドオンを読み込むことができます.xpi
アーカイブ。一時的なアドオンに署名する必要はありません。一時アドオンは、手動でアンインストールするか、Firefoxを再起動するまでインストールされたままです。
Mozillaのドキュメント: Firefoxでの一時的なインストール
WebExtensions
WebExtensionsは一時的なアドオンとしてロードできます。これは、アドオンファイルをアンパックするか、または.xpiファイルにパッケージ化して行うことができます。
FirefoxアドオンSDK
Firefox Add-on SDKの拡張機能を一時的なアドオンとしてロードすることはできません。最初にjpm xpiの.xpiファイルにパッケージ化する必要はありjpm xpi
。一般的には、 jpm run
を使用してFirefoxアドオンSDKの拡張機能をテストします。
アドオンSDK拡張機能のために通常編集されるファイルは、いくつかの追加のラッピング機能を使用せずに完全な拡張子を作成せず、 package.jsonファイルをinstall.rdfファイルおよび場合によってはchrome.manifestファイルに変換します。このプロセスは、アドオンSDKの拡張機能をFirefoxが理解できるブートストラップ/リスタートレスアドオンにラップします。このプロセスがなければ、Firefoxはアドオンを読み込めません。このプロセスはjpm xpi
によって実行され、 jpm xpi
された.xpiファイルが作成されます。 jpm run
を実行すると、このプロセスも実行されますが、結果のファイルは一時的な場所に保存され、アドオンがインストールされた状態でFirefoxが起動されます。
ブートストラップ/再起動
Bootstrap / RestartlessアドオンはTemporaryアドオンとしてロードできます。これは、アドオンファイルをアンパックするか、または.xpiファイルにパッケージ化して行うことができます。
レガシー/オーバーレイ/ XUL
レガシー/オーバーレイ/ XULアドオンは、一時的なアドオンとしてロードすることはできません 。
署名されていないアドオンのインストール
バージョン48以上のFirefoxのリリース版またはベータ版に通常のアドオンとして拡張機能をインストールするには、拡張機能にMozillaの署名が 必要です。エクステンションはAMOに提出することで署名されます。それが署名されると、拡張機能はそれがサポートする任意のバージョンのFirefoxにインストールすることができます。バージョン43より前のバージョンのFirefoxでは、拡張機能にMozillaが署名する必要はありませんでした。 拡張機能以外のアドオンの種類は 、Mozillaによって署名される必要はありません。
about:config
でxpinstall.signatures.required
をfalse
に設定するfalse
により、署名されていない拡張機能を通常のアドオンとして他のバージョンのFirefox( Firefox Developer Edition 、 Firefox Nightly 、 Unbranded Beta、または xpinstall.signatures.required
Release )にxpinstall.signatures.required
できfalse
。このオプションを設定することは、リリースおよびベータ版のFirefox 43-48でも有効でした。このオプションを設定することは、バージョン48以降のFirefoxのリリースおよびベータ版では有効ではありません。
アドオン開発中に署名されていないアドオンをインストールできるようにする必要性は、エクステンションを一時アドオンとしてインストールすることによって大幅に削減されています 。一時的なアドオンは署名する必要はなく、現在のバージョンのFirefoxに読み込むことができます。名前が示すように、一時的なアドオンの主な欠点は一時的なアドオンであることです。 Firefoxを再起動するときはいつでも再インストールする必要があります。しかし、一時的なアドオンではなく、通常の、しかし署名のないアドオンとしてアドオンをインストールすることが望ましいユースケースがあります。 Firefoxを再起動してもアドオンをインストールしたままにする必要がある場合は、アドオンを署名のないアドオンとしてインストールする必要があります。これは、長期使用テストや、Firefoxの起動時にアドオンがどのように機能するかをテストすることなど、さまざまな理由から望ましいでしょう。
開発のためのアドオンのインストール
アドオンは次のようにインストールできます。
- 通常のアドオンは、アンインストールするまでインストールされます
- 一時的なアドオン( 拡張機能のみ):Firefoxが再起動されるか、手動で以前にアンインストールするまでインストールされます。
-
jpm run
を使う( アドオンSDKのみ):あなたのアドオンがロードされている一時的なプロファイルを使ってFirefoxを自動的に実行します。 -
web-ext run
使用( WebExtensionsのみ):アドオンを一時的なアドオンとしてロードした一時的なプロファイルを使用してFirefoxを自動的に実行します。既定では、拡張子ファイルの変更を監視し、ファイルが変更されたときに自動的に拡張子を再読み込みします。
通常のアドオン
パッケージ化された拡張機能 ( .xpi
ファイル)をインストールすることは、インストールしたいプロファイルを実行しているFirefoxのウィンドウにドラッグ&ドロップするだけで簡単に実行できます。また、 AMOから拡張機能をダウンロードして直接インストールすることもできます。目標(1つのプロファイル、すべてのプロファイル、すべてのユーザー、どのOSなど)に応じて、 拡張機能をインストールするかについての他のオプションがあります。
これらの他のオプションには、特定のバージョンのFirefoxのすべてのユーザー、または特定のユーザーのすべてのプロファイルに.xpiファイルをインストールできるように、プロファイルのディレクトリの外にあるさまざまなディレクトリが含まれています。 Windowsでは、Windowsレジストリにキーを追加して拡張機能をインストールすることもできます。一般に、これらの他のディレクトリは、あなたが現在書いているアドオンをインストールするディレクトリではありません。ただし、それらを使用して、使用するFirefoxプロファイルまたはFirefoxバージョンに読み込まれたテスト/開発をサポートするために使用するアドオンがあることを確認することができます。たとえば、 <Firefox install directory>/browser/extensions
.xpiファイルを置くことで、 jpm jpm run
(FirefoxアドオンSDKベースの拡張機能のテストに使用)で作成された一時的なプロファイルでも拡張機能を利用できます。
以下のために開発/テスト 、あなたは拡張子が使用して、ローカルドライブ上の任意のディレクトリに存在することができますFirefoxの拡張機能のプロキシファイルを (拡張子のようという名前のファイルを作成します<em:id>
ブートストラップ/ Restartlessとオーバーレイのためのinstall.rdfの中で(/拡張子のファイルを含むディレクトリ)への完全なパスを持つ1行を含むプロファイルのextensionsディレクトリにあるレガシー)。この方法でインストールされた拡張機能は、ほとんど常に署名されません(下記参照)。したがって、Firefoxのリリース版またはベータ版に拡張機能をインストールする場合、この方法はあまり役に立ちません。
通常のアドオンのインストールに関する制限:アドオンの署名
バージョン48以上のFirefoxのリリース版またはベータ版に通常のアドオンとして拡張機能をインストールするには、拡張機能にMozillaの署名が 必要です。エクステンションはAMOに提出することで署名されます。それが署名されると、拡張機能はそれがサポートする任意のバージョンのFirefoxにインストールすることができます。バージョン43より前のバージョンのFirefoxでは、拡張機能にMozillaが署名する必要はありませんでした。 拡張機能以外のアドオンの種類は 、Mozillaによって署名される必要はありません。
about:config
でxpinstall.signatures.required
をfalse
に設定するfalse
により、署名されていない拡張機能を通常のアドオンとして他のバージョンのFirefox( Firefox Developer Edition 、 Firefox Nightly 、 Unbranded Beta、または xpinstall.signatures.required
Release )にxpinstall.signatures.required
できfalse
。このオプションを設定することは、リリースおよびベータ版のFirefox 43-48でも有効でした。このオプションを設定することは、バージョン48以降のFirefoxのリリースおよびベータ版では有効ではありません。
ただし、リリースを含む、すべてのバージョンのFirefoxでアドオンの署名チェックを完全に無効にすることはできます。 Stack Overflowの質問への答えFirefoxアドオンのシグネチャチェックを無効にするにはどうしたらいいですか?その方法を説明しています。
一時的なアドオンとしてエクステンションをインストールすることにより、開発目的で署名のないアドオンをインストールできるようにする必要性が大幅に軽減されました。一時的なアドオンは署名する必要はなく、現在のバージョンのFirefoxに読み込むことができます。名前が示すように、一時的なアドオンの主な欠点は一時的なアドオンであることです。 Firefoxを再起動するときはいつでも再インストールする必要があります。しかし、一時的なアドオンではなく、通常の、しかし署名のないアドオンとしてアドオンをインストールすることが望ましいユースケースがあります。 Firefoxを再起動してもアドオンをインストールしたままにする必要がある場合は、アドオンを署名のないアドオンとしてインストールする必要があります。これは、長期使用テストや、Firefoxの起動時にアドオンがどのように機能するかをテストすることなど、さまざまな理由から望ましいでしょう。
一時的なアドオン( 拡張機能のみ )
WebExtensions、FirefoxアドオンSDKベースの拡張機能、Restartless / Bootstrap拡張機能は、 about:debugging
Temporary Add-onsとしてインストールできます。 Firefoxの現在のバージョンでは、拡張機能を一時的なアドオンとして読み込むことができます。一時的なアドオンは署名される必要はなく、アンパック(ファイルのあるディレクトリ)またはパックされた(たとえば.xpiファイル)から読み込むことができます。
一時的な拡張機能のインストールの詳細については、「一時的なアドオンのインストール 」を参照してください。