前回まででタグヘルパー拡張機能の開発は完了しました。今回は、第6回での「全OS共通スキン」版のソースファイルを元に、タグヘルパー拡張機能を配布するためのインストーラの作成を行います。実際に作成したインストーラは、下記URLから入手可能です。拡張機能のインストーラは、XPI(クロスパッケージインストーラモジュール)と呼ばれる拡張子が「.xpi」のファイルですが、実は単純なZIP形式の圧縮ファイルです。いえ、これまで開発してきたソースファイルのフォルダ構成をそのまま単純に圧縮すればよいというものではなく、インストーラ内部のフォルダ構成は、タグヘルパー拡張機能の場合であれば通常図1のようになります。インストーラのファイルを「taghelper.xpi」とすると、その内部には「chrome」フォルダ、インストールマニフェスト、クロムマニフェストの3つが圧縮されており、さらに「chrome」フォルダ内には、「⁠content⁠」⁠、「⁠locale⁠」⁠、「⁠skin」の3フォルダを圧縮した「taghelper.jar」が格納されています。インストーラのフォルダ構成クロムマニフェストの修正インストーラ内部が図1のようなフォルダ構成となるため、クロムマニフェストに記述した“⁠各パッケージのソースファイルを格納したフォルダへの相対パス⁠”を、リスト1の内容に変更する必要があります。そこで、テストインストール用のクロムマニフェストをファイル名「chrome.manifest.bak」のようにしてバックアップ後、リスト1のように修正してください。chrome://taghelper/content/overlay.xulなお、インストーラ作成後、再びテストインストール状態での拡張機能の開発を続けるには、バックアップした「chrome.manifest.bak」を元に戻してFirefoxを再起動してください。面倒ですが、今後はテストインストール用のクロムマニフェストと、インストーラ作成用のクロムマニフェストの両者を管理していく必要があります。引き続き、ファイルを圧縮してリスト1のフォルダ構成のインストーラを作成する作業を行います。フォルダ」を実行)でも構いません。7-Zip[1]のような圧縮率を指定して圧縮可能なツールを使用すると、最適化されたインストーラを作成することが可能です。[1]7-Zipは下記URLから入手可能です。http://www.7-zip.org/はじめに、「⁠content」「⁠locale」「⁠skin」の3フォルダを圧縮し、「⁠taghelper.jar」を作成します。次に、作業フォルダ直下へ「chrome」フォルダを作成し、その中へ「taghelper.jar」を格納します。最後に、「⁠chrome」フォルダ、「⁠chrome.manifest」(⁠リスト1のように修正済み⁠)⁠、「⁠install.rdf」の3ファイルを圧縮し、「⁠taghelper.xpi」を作成します。以上でインストーラの作成は完了です。圧縮率を指定して圧縮する場合、「⁠taghelper.jar」の圧縮率は低く、「⁠taghelper.xpi」の圧縮率は高くすることでインストーラが最適化されます。インストーラの動作確認インストーラの作成が完了したら、実際にインストールできることの確認を行います。現在開発用に使用しているプロファイルは、タグヘルパー拡張機能がすでにテストインストール済みであるはずですので、別のプロファイル上で動作確認を行う必要があります。Firefoxのプロファイルマネージャ[2]を起動し、新しいプロファイルを作成するか、タグヘルパー拡張機能がインストールされていない別のプロファイルを選択し、Firefoxを起動してください。その後、インストーラのファイル「taghelper.xpi」をFirefoxのウィンドウへドラッグ&ドロップし、インストールが正常に開始されることを確認してください。インストール完了後Firefoxを再起動し、タグヘルパー拡張機能が正常に動作することを確認してください。[2]プロファイルマネージャの使用方法については下記URLを参照してください。http://support.mozilla.com/ja/kb/プロファイルの管理アップデートマニフェストによる拡張機能の自動更新よく知られているように、FirefoxはFirefox自身やインストールされている拡張機能を自動的に更新する機能を備えています。Firefoxのアドオンマネージャで「更新を確認」すると、各拡張機能に新しいバージョンがあるかどうかをチェックし、新しいバージョンが見つかった場合は「更新」パネルを表示し、ユーザが「更新をインストール」ボタンをクリックすることで簡単にバージョンアップすることが可能となります(図2⁠)⁠。アドオンマネージャでの更新のインストール例このような自動更新の仕組みは、「⁠アップデートマニフェスト」と呼ばれる更新情報を記述したファイルによって実現されます。アドオンマネージャにて「更新を確認」すると、各拡張機能のインストールマニフェスト中のタグで示されたURLからアップデートマニフェストを取得します。取得したアップデートマニフェスト中に記載された拡張機能のバージョンが、現在インストールされているバージョンよりも新しい場合、「⁠更新」パネルを表示してユーザへ通知します。「⁠更新」パネルにて「更新をインストール」ボタンを押すと、アップデートマニフェスト中に記載されたURLから新しいバージョンのインストーラをダウンロードし、インストールを実行します。Add-ons」(⁠注3)からアップデートマニフェストを取得しようと試みます。2以前とは異なり、暗号化されていない通信経路(すなわちhttpプロトコルのURL)からアップデートマニフェストを取得したり、新しいバージョンのインストーラをダウンロードすることに制約が設けられました。具体的には、インストールマニフェストに記載されたアップデートマニフェストのURLがhttpプロトコルである拡張機能をインストールしようとすると、図3のようなエラーメッセージが表示されます。安全な更新方法が用意されていない拡張機能をインストールしようとしたときのエラーこのようなセキュリティ的な制約を考慮した上で、開発者が将来的なバージョンアップも見越して拡張機能を配布するには、通常下記の2通りの方法のうちのいずれかを選択することとなります。Add-ons」上で拡張機能を配布し、Webサイトによって自動的に生成されるアップデートマニフェストを用いる。自分で作成したアップデートマニフェストを用い、httpsプロトコルでの暗号化通信に対応したWebサーバ上で拡張機能を配布する。してもhttpsプロトコルでの暗号化通信に対応していないWebサーバ上で拡張機能を配布したい場合、下記(3)の方法があります。自分で作成したアップデートマニフェストへ電子署名を施して拡張機能を配布する。多くのレンタルサーバはhttpsプロトコルでの暗号化通信に非対応かと思いますので、レンタルサーバ上で自由に拡張機能を配布したい方は、(3)の方式とする場合が多いでしょう。ここからは、(1)(2)の方法について簡単に解説します。(3)の方法については次回解説します。Add-ons」へ登録して公開する方法となります。Add-ons」で公開されているものであれば、Webサイト側が適切なアップデートマニフェストを自動的に生成して返してくれます。このときの通信はすべてhttpsプロトコルで安全に行われます。Add-ons」へ再登録すれば良いだけになります。Add-ons」で拡張機能を公開した際のメリットとして、アドオンマネージャの「アドオンを入手」パネルから検索およびインストールが可能となります(図4⁠)⁠。Add-ons」で拡張機能を公開する(初期登録時のサンドボックス状態から脱出する)にはレビューアによる審査を通過する必要があり、またレビューは新しいバージョンを再登録する都度行われますので、緊急を要するアップデート時でもレビュー完了を待たなければならないといったデメリットがあります。httpsプロトコルでの暗号化通信に対応したWebサーバでの拡張機能の配布httpsプロトコルでの暗号化通信に対応したWebサーバでインストーラおよびアップデートマニフェストを公開することで、Firefoxのセキュリティ的な制約を受けることなく拡張機能の自動更新が可能となります。Add-ons」で配布する場合とは異なり、自分でアップデートマニフェストを作成・公開しなければなりません。インストールマニフェストへリスト2のように<em:updateURL>タグを追加してアップデートマニフェストのURLを記載する必要があります。リスト2中の<em:updateURL>タグで示したURLは実際には存在しません。<em:description>選択範囲からブックマークのタグを生成します。</Description></RDF>次に、アップデートマニフェストを作成します。アップデートマニフェストのファイル名は特に決められておりませんが、「⁠update.rdf」とするのが一般的です。アップデートマニフェストの内容はリスト3のようになります。<em:version>タグの値が最新のバージョン番号、<em:updateLink>の値が最新バージョンのインストーラのURLを表します。リスト3中の<em:updateLink>タグで示したURLは実際には存在しません。</Description></RDF>以上の作業が完了したら、アップデートマニフェストとインストーラを、それぞれリスト2の<em:updateURL>で示したURL、リスト3の<em:updateLink>で示したURLでダウンロード可能となるよう、Webサーバで公開します。application/x-xpinstall」を付加するよう設定しておく必要があります。作り方」を参照してください。Add-ons」あるいはhttpsプロトコルでの暗号化通信に対応したWebサーバ上で拡張機能を配布する方法について解説しました。次回は、アップデートマニフェストへ電子署名を施し、httpsプロトコル非対応のWebサーバで拡張機能を配布する方法について解説します。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。