aboutsummaryrefslogtreecommitdiff
path: root/files/ja/archive/add-ons
diff options
context:
space:
mode:
Diffstat (limited to 'files/ja/archive/add-ons')
-rw-r--r--files/ja/archive/add-ons/add-on_sdk/tools/index.html20
-rw-r--r--files/ja/archive/add-ons/add-on_sdk/tools/jpm/index.html666
-rw-r--r--files/ja/archive/add-ons/enhanced_extension_installation/index.html14
-rw-r--r--files/ja/archive/add-ons/extension_versioning,_update_and_compatibility/index.html207
-rw-r--r--files/ja/archive/add-ons/index.html8
-rw-r--r--files/ja/archive/add-ons/multiple_item_packaging/index.html56
-rw-r--r--files/ja/archive/add-ons/observer_notifications/index.html49
-rw-r--r--files/ja/archive/add-ons/session_store_api/index.html86
-rw-r--r--files/ja/archive/add-ons/signing_a_xpi/index.html254
-rw-r--r--files/ja/archive/add-ons/signing_an_extension/index.html62
-rw-r--r--files/ja/archive/add-ons/supporting_search_suggestions_in_search_plugins/index.html39
-rw-r--r--files/ja/archive/add-ons/using_the_stylesheet_service/index.html65
12 files changed, 1526 insertions, 0 deletions
diff --git a/files/ja/archive/add-ons/add-on_sdk/tools/index.html b/files/ja/archive/add-ons/add-on_sdk/tools/index.html
new file mode 100644
index 0000000000..caf096d43d
--- /dev/null
+++ b/files/ja/archive/add-ons/add-on_sdk/tools/index.html
@@ -0,0 +1,20 @@
+---
+title: Tools
+slug: Archive/Add-ons/Add-on_SDK/Tools
+tags:
+ - Add-on SDK
+ - CFX
+ - JPM
+ - NeedsTranslation
+ - TopicStub
+translation_of: Archive/Add-ons/Add-on_SDK/Tools
+---
+<div class="blockIndicator warning">
+<p>Support for extensions using XUL/XPCOM or the Add-on SDK was removed in Firefox 57, released November 2017. As there is no supported version of Firefox enabling these technologies, this page will be removed by December 2020.</p>
+</div>
+
+<p>{{LegacyAddonsNotice}}{{AddonSidebar}}</p>
+
+<p>Articles listed here provide a reference for the SDK's tools:</p>
+
+<p>{{ LandingPageListSubpages ("/en-US/Add-ons/SDK/Tools", 7) }}</p>
diff --git a/files/ja/archive/add-ons/add-on_sdk/tools/jpm/index.html b/files/ja/archive/add-ons/add-on_sdk/tools/jpm/index.html
new file mode 100644
index 0000000000..8270fd12b3
--- /dev/null
+++ b/files/ja/archive/add-ons/add-on_sdk/tools/jpm/index.html
@@ -0,0 +1,666 @@
+---
+title: jpm
+slug: Archive/Add-ons/Add-on_SDK/Tools/jpm
+translation_of: Archive/Add-ons/Add-on_SDK/Tools/jpm
+---
+<div class="blockIndicator warning">Support for extensions using XUL/XPCOM or the Add-on SDK was removed in Firefox 57, released November 2017. As there is no supported version of Firefox enabling these technologies, this page will be removed by December 2020.</div>
+
+<p>{{LegacyAddonsNotice}}{{AddonSidebar}}</p>
+
+<p><span class="seoSummary">jpm は Add-on をテスト、実行及びパッケージ化することができるコマンドラインツールです。</span></p>
+
+<p>これはjpmのリファレンスページです。開始のための<a href="/ja/docs/Mozilla/Add-ons/SDK/Tutorials/Getting_Started_(jpm)">jpmチュートリアル</a>も参照してください。</p>
+
+<p>jpmの使用方法は次のとおりです。</p>
+
+<pre class="brush: bash">jpm [command] [options]
+</pre>
+
+<p>jpmは次のグローバルオプションをサポートしています:</p>
+
+<pre class="brush: bash">-h, --help - show a help message and exit
+-V, --version - print the jpm version number
+--addon-dir - directory for your source code,
+ defaulting to the current directory
+</pre>
+
+<h2 id="インストール"><a id="Installation" name="Installation">インストール</a></h2>
+
+<p>jpmは、nodeパッケージマネージャ<a class="external external-icon" href="https://www.npmjs.org/package/jpm">npm</a>とともに配布されます。</p>
+
+<h3 id="npm_のインストール">npm のインストール</h3>
+
+<p>npmをインストールするには2つの方法があります。</p>
+
+<ul>
+ <li><a class="external external-icon" href="https://nodejs.org/">nodejs.org</a>からNode.jsをダウンロードしてインストールします。 Node.jsにはnpmが含まれます。</li>
+ <li>あるいは、APTのようなパッケージマネージャがあれば、それを使ってnpmをインストールしてください。たとえば、UbuntuまたはDebianのターミナルウィンドウで、<code>sudo apt-get install nodejs nodejs-legacy </code><code> npm</code>と入力します。</li>
+</ul>
+
+<p>インストールできたかをテストするには、次のコマンドを実行します。</p>
+
+<pre class="lang-js prettyprint prettyprinted">/usr/bin/env node -v</pre>
+
+<p>"<em>/usr/bin/env: node: No such file or directory</em>"というエラーメッセージが表示され、パッケージマネージャーを使用してnodejsをインストールした場合、nodejsは別の実行可能ファイル名でインストールされている可能性があります。ただし、jpmとの互換性を確保するには、PATHに<code>node</code>という名前で存在する必要があります。DebianとUbuntuでは、これは互換性パッケージ<code>nodejs-legacy</code>を確実にインストールすることで解決できます。</p>
+
+<pre class="brush:bash">sudo apt-get install nodejs-legacy</pre>
+
+<p>他のディストリビューションでは、nodejsへのローカルシンボリックリンクを手動で作成する必要があります。</p>
+
+<pre class="brush:bash">sudo ln -s "$(which nodejs)" /usr/local/bin/node</pre>
+
+<h3 id="jpmのインストール">jpmのインストール</h3>
+
+<p>npmがインストールされ、PATHに<code>node</code>が追加されたら、他のnpmパッケージと同じようにjpmをインストールします。</p>
+
+<h4 id="グローバルにjpmをインストール">グローバルにjpmをインストール</h4>
+
+<pre class="brush: bash">npm install jpm --global</pre>
+
+<p>設定に応じて、次のコマンドをを管理者として実行する必要があります: <code>sudo npm install jpm --global</code></p>
+
+<h4 id="ローカルにjpmをインストール">ローカルにjpmをインストール</h4>
+
+<p>jpmをグローバルにインストールしたくない場合、またはインストールできない場合は、代わりにローカルにインストールすることができます。</p>
+
+<pre class="brush: bash">cd $HOME &amp;&amp; npm install jpm</pre>
+
+<p>ローカルにインストールしたときにターミナルから<code>jpm</code>を実行するには、最初に<code>"$HOME/node_modules/.bin/"</code>というディレクトリをターミナルのPATHに追加する必要があります。<code>$HOME/.profile</code>ファイルの最後に次の行を追加してPATHに永続的に(新しい端末が開くたびに<code>.profile</code>ファイルが実行されます)追加します。</p>
+
+<pre class="brush: bash">export PATH="$HOME/node_modules/.bin/:$PATH"</pre>
+
+<h4 id="Gitでjpmをインストール">Gitでjpmをインストール</h4>
+
+<p>あるいはgitを使って最新のjpmを入手することもできます。</p>
+
+<pre class="brush:bash">git clone https://github.com/mozilla-jetpack/jpm.git
+cd jpm
+npm install
+npm link
+</pre>
+
+<h3 id="jpmのインストール後">jpmのインストール後</h3>
+
+<p>インストール後、コマンドプロンプトで次のように入力します。</p>
+
+<pre class="brush: bash">jpm</pre>
+
+<p>利用可能なjpmコマンドを要約した画面が表示されます。cfxとは異なり、jpmは <code>--global</code>フラグを付けてインストールすることで、起動するすべてのコマンドプロンプトで使用できます。</p>
+
+<h3 id="異なるバージョンのFirefoxをインストール">異なるバージョンのFirefoxをインストール</h3>
+
+<p>Firefox 48では、ブランド版のリリースまたはベータ版のFirefoxでは、<a href="/ja/docs/Mozilla/Add-ons/Distribution">署名されていないアドオン</a>(つまり、開発中のアドオン)を使用することはできません。したがって、別のバージョンのFirefoxをダウンロードしてインストールする必要があります。旧バージョンのFirefoxを必要としない場合、あなたのオプションは<a href="https://www.mozilla.org/ja/firefox/developer/">Firefox Developer Edition</a>、<a href="https://www.mozilla.org/ja/firefox/channel/desktop/#nightly">Firefox Nightly</a>、<a href="https://wiki.mozilla.org/Add-ons/Extension_Signing#Unbranded_Builds">Unbranded Beta、またはUnbranded Release</a>です。</p>
+
+<p>あなたのアドオンをテストするときは、<code>jpm run</code>コマンドに<code>-b</code>オプションを使う必要があります。<a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/jpm#ブラウザのバージョンの選択">ブラウザのバージョンの選択</a>を参照してください。</p>
+
+<h3 id="困った時は">困った時は?</h3>
+
+<p>これが表示されない場合は、ヘルプを求めてください。SDKユーザーとプロジェクトチームメンバーは<a href="https://groups.google.com/forum/#!forum/mozilla-labs-jetpack">プロジェクトのメーリングリスト</a>上で問題と提案について話し合っています。他の人が同じ問題を抱えている可能性がありますので、リストを検索してみてください。質問を投稿することもできます。<a href="http://irc.mozilla.org/">MozillaのIRCネットワーク</a>上の<a href="https://mibbit.com/?channel=%23jetpack&amp;server=irc.mozilla.org">#jetpack</a>で他のSDKユーザーとチャットすることもできます。</p>
+
+<h2 id="コマンドリファレンス">コマンドリファレンス</h2>
+
+<p>jpmは次のコマンドをサポートしています。</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 20%;"><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_init"><code>jpm init</code></a></td>
+ <td>あなたのアドオンの出発点としてスケルトンアドオンを作成します。</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_run"><code>jpm run</code></a></td>
+ <td>アドオンがインストールされているFirefoxのインスタンスを起動します。</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_test"><code>jpm test</code></a></td>
+ <td>アドオンの単体テストを実行します。</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_xpi"><code>jpm xpi</code></a></td>
+ <td>Firefoxのアドオンのインストールファイル形式である<a href="/ja/docs/XPI">XPI</a>ファイルとしてアドオンをパッケージ化します。</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_post"><code>jpm post</code></a></td>
+ <td>アドオンを<a href="/ja/docs/XPI">XPI</a>ファイルとしてパッケージ化し、それをいくつかのURLに投稿します。</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_watchpost"><code>jpm watchpost</code></a></td>
+ <td>ファイルが変更されたときにアドオンを<a href="/ja/docs/XPI">XPI</a>ファイルとしてパッケージ化し、それをいくつかのURLに投稿します。</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_sign"><code>jpm sign</code></a></td>
+ <td>アドオンを<a href="/ja/docs/XPI">XPI</a>ファイルとしてパッケージ化し、Mozillaが署名した新しいXPIを取得します。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_init">jpm init</h3>
+
+<p>このコマンドは、新しいアドオンを初期化します。</p>
+
+<p>ディレクトリを作成してそこに移動し、<code>jpm init</code>コマンドを実行します。</p>
+
+<pre class="brush: bash">mkdir my-addon
+cd my-addon
+jpm init</pre>
+
+<p>ここでアドオンに関するいくつかの情報を入力するよう求められます。これは、アドオンの<a href="/ja/Add-ons/SDK/Tools/package_json">package.json</a>ファイルの作成に使用されます。</p>
+
+<ul>
+ <li><a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/package_json#title">title</a></li>
+ <li><a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/package_json#name">name</a>: これはデフォルトで、jpm init を実行しているディレクトリの名前になります。<a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/package_json#id"><code>id</code></a>フィールドがpackage.jsonに存在しない限り、jpmは<code>name</code>に "@"を付加し、その結果を<a href="https://developer.mozilla.org/en-US/Add-ons/Install_Manifests#id">アドオンのインストールマニフェストの<code>id</code>フィールド</a>として使用します。</li>
+ <li><a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/package_json#version">version</a></li>
+ <li><a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/package_json#description">description</a></li>
+ <li><a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/package_json#main">entry point</a> (package.jsonの "main"にマップされます)</li>
+ <li><a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/package_json#author">author</a></li>
+ <li><a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/package_json#engines">engines</a> (サポートされるアプリケーション)</li>
+ <li><a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/package_json#license">license</a></li>
+</ul>
+
+<p>これらのフィールドのほとんどはデフォルト値があり、質問の後に角括弧で表示されています。Enterキーを押すだけでアドオンがデフォルト値になります。</p>
+
+<p>値を提供したり、これらのプロパティのデフォルトを受け入れると、 "package.json"の完全な内容が表示され、それを受け入れるように求められます。</p>
+
+<p>次にjpmは、以下のファイル構造で、アドオン開発の出発点としてスケルトンアドオンを作成します。</p>
+
+<ul class="directory-tree">
+ <li>my-addon
+ <ul>
+ <li>index.js</li>
+ <li>package.json</li>
+ <li>test
+ <ul>
+ <li>test-index.js</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="jpm_run">jpm run</h3>
+
+<p><span id="result_box" lang="ja"><span>このコマンドは、アドオンがインストールされたFirefoxの新しいインスタンスを実行します。</span></span></p>
+
+<pre class="brush: bash">jpm run</pre>
+
+<p><code>jpm run</code> は次のオプションを受け入れます:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 30%;"><code>-b --binary BINARY</code></td>
+ <td>
+ <p>BINARYで指定されたバージョンのFirefoxを使用してください。 BINARYは、フルパスまたはカレントディレクトリに対する相対パスとして指定できます。</p>
+
+ <pre class="brush: bash">
+jpm run -b /path/to/Firefox/Nightly</pre>
+ <a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/jpm#ブラウザのバージョンの選択">ブラウザのバージョンの選択</a>を参照してください。</td>
+ </tr>
+ <tr>
+ <td><code>--binary-args CMDARGS</code></td>
+ <td>
+ <p>Firefoxに<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options">追加の引数</a>を渡します。</p>
+
+ <p>たとえば、Firefoxに<code>-jsconsole</code>引数を渡して<a href="/ja/docs/Tools/Browser_Console">ブラウザコンソール</a>を起動するには、次のようにします。</p>
+
+ <pre class="brush: bash">
+jpm run --binary-args -jsconsole</pre>
+
+ <p>複数の引数、または空白を含む引数を渡すには、それらを引用符で囲みます。</p>
+
+ <pre class="brush: bash">
+jpm run --binary-args '-url mzl.la -jsconsole'</pre>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--debug</code></td>
+ <td>アドオンに接続されている<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/デバッグ">アドオンデバッガ</a>を実行します。</td>
+ </tr>
+ <tr>
+ <td><code>-o --overload PATH</code></td>
+ <td>
+ <p>Firefoxに組み込まれたSDKモジュールを使用するのではなく、PATHにあるモジュールを使用します。<code>-o</code>が指定され、PATHが省略されている場合、jpmはJETPACK_ROOT環境変数を検索し、その値をパスとして使用します。</p>
+
+ <p>詳細については、<a href="/ja/Add-ons/SDK/Tools/jpm#Overloading_the_built-in_modules">組み込みモジュールのオーバーロード</a>を参照してください。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-p --profile=<code> PROFILE</code></code></td>
+ <td>
+ <p>デフォルトでは、jpmは、jpm runを呼び出すたびにきれいな一時的なFirefox<a href="https://support.mozilla.org/ja/kb/profiles-where-firefox-stores-user-data">プロファイル</a>を使用します。既存のプロファイルでFirefoxを起動するようにjpmに指示するには、<code>--profile</code>オプションを使用します。</p>
+
+ <p>PROFILEの値は、プロファイル名またはプロファイルへのパスです。</p>
+
+ <p>詳細については、<a href="/ja/docs/Archive/Add-ons/Add-on_SDK/Tools/jpm$edit#Using_profiles">プロファイルの使用</a>を参照してください。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-v --verbose</code></td>
+ <td>詳細な操作。</td>
+ </tr>
+ <tr>
+ <td><code>--no-copy</code></td>
+ <td>
+ <div class="warning"><code>jpm run|test</code>は多くの設定を変更するので、注意して使用してください。メインのプロファイルでは使用しないでください。</div>
+
+ <div class="note">これは<code>--profile</code>が使用されている場合のみ適用されます。</div>
+ 使用されているプロファイルのコピーを無効にします。これにより、プロファイルを再利用することができます。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_test">jpm test</h3>
+
+<p>Use this command to run an add-on's unit tests. The command:</p>
+
+<ul>
+ <li>Looks for a directory called "test" within the current directory (or <code>--addon-dir</code>).</li>
+ <li>Opens every file in there whose name starts with "test-". Make note of the hyphen after "test" in the filename. <code>jpm test</code> include a file called "test-myCode.js", but will exclude files called "test_myCode.js" or "testMyCode.js")</li>
+ <li>call every function exported from that file whose name starts with "test".</li>
+</ul>
+
+<pre class="brush: bash">jpm test
+</pre>
+
+<p>See the <a href="/en-US/Add-ons/SDK/Tutorials/Unit_testing">tutorial on unit testing</a> and the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/test_assert">reference documentation for the <code>assert</code> module</a> for more details on this.</p>
+
+<p><code>jpm test</code> accepts the following options:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td><code>-b --binary BINARY</code></td>
+ <td>
+ <p>Use the version of Firefox specified in BINARY. BINARY may be specified as a full path or as a path relative to the current directory.</p>
+
+ <pre class="brush: bash">
+jpm test -b /path/to/Firefox/Nightly</pre>
+
+ <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Selecting_a_browser_version">Selecting a browser version</a>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--binary-args CMDARGS</code></td>
+ <td>
+ <p>Pass <a href="http://kb.mozillazine.org/Command_line_arguments">extra arguments</a> to Firefox.</p>
+
+ <p>For example, to pass the <code>-jsconsole</code> argument to Firefox, which will launch the <a href="/en-US/docs/Tools/Browser_Console">Browser Console</a>, try the following:</p>
+
+ <pre class="brush: bash">
+jpm test --binary-args -jsconsole</pre>
+
+ <p>To pass multiple arguments, or arguments containing spaces, quote them:</p>
+
+ <pre class="brush: bash">
+jpm test --binary-args '-url mzl.la -jsconsole'</pre>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--debug</code></td>
+ <td>Run the <a href="/en-US/Add-ons/Add-on_Debugger">Add-on Debugger</a> attached to the add-on.</td>
+ </tr>
+ <tr>
+ <td style="width: 30%;"><code>-f --filter FILE[:TEST]</code></td>
+ <td>
+ <p>Only run tests whose filenames match FILE and optionally match TEST, both regexps.</p>
+
+ <pre class="brush: bash">
+jpm test --filter base64:btoa</pre>
+
+ <p>The above command only runs tests in files whose names contain "base64", and in those files only runs tests whose names contain "btoa".</p>
+ </td>
+ </tr>
+ <tr>
+ <td style="width: 30%;"><code>-o --overload PATH</code></td>
+ <td>
+ <p>Rather than use the SDK modules built into Firefox, use the modules found at PATH. If <code>-o</code> is specified and PATH is omitted, jpm will look for the JETPACK_ROOT environment variable and use its value as the path.</p>
+
+ <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Overloading_the_built-in_modules">Overloading the built-in modules</a> for more information.</p>
+ </td>
+ </tr>
+ <tr>
+ <td style="width: 30%;"><code>-p --profile<code> PROFILE</code></code></td>
+ <td>
+ <p>By default, jpm uses a clean temporary Firefox <a href="https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data">profile</a> each time you call jpm run. Use the <code>--profile</code> option to instruct jpm to launch Firefox with an existing profile.</p>
+
+ <p>The PROFILE value may be a profile name or the path to the profile.</p>
+
+ <p>See <a href="#Using_profiles">Using profiles</a> for more information.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--stop-on-error</code></td>
+ <td>
+ <p>By default, jpm test keeps running tests even after tests fail. Specify <code>--stop-on-error</code> to stop running tests after the first failure:</p>
+
+ <pre class="brush: bash">
+jpm test --stop-on-error</pre>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--tbpl</code></td>
+ <td>Print test output in <a href="https://treeherder.mozilla.org/">Treeherder</a> format</td>
+ </tr>
+ <tr>
+ <td><code>--times NUMBER</code></td>
+ <td>
+ <p>Run tests NUMBER of times:</p>
+
+ <pre class="brush: bash">
+jpm test --times 2</pre>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-v --verbose</code></td>
+ <td>Verbose operation.</td>
+ </tr>
+ <tr>
+ <td><code>--no-copy</code></td>
+ <td>
+ <div class="warning"><code>jpm run|test</code>は多くの設定を変更するので、注意して使用してください。メインのプロファイルでは使用しないでください。</div>
+
+ <div class="note">This only applies when <code>--profile</code> is used.</div>
+ Disables the copying of the profile used, which allows one to reuse a profile.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_xpi">jpm xpi</h3>
+
+<p>This command packages the add-on as an <a href="/en-US/docs/XPI">XPI</a> file, which is the install file format for Mozilla add-ons.</p>
+
+<pre class="brush: bash">jpm xpi</pre>
+
+<p>It looks for a file called <code>package.json</code> in the current directory (or <code>--addon-dir</code>) and creates the corresponding XPI file. It ignores any ZIPs or XPIs in the add-on's root, and any test files. It includes all other files. If you want to exclude extra files, see <a href="/en-US/Add-ons/SDK/Tools/jpmignore">the .jpmignore file</a>.</p>
+
+<p>Once you have built an XPI file, you can distribute your add-on by submitting it to <a href="https://addons.mozilla.org/">addons.mozilla.org</a>.</p>
+
+<p><code>jpm xpi</code> accepts the following option:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td><code>--dest-dir</code></td>
+ <td>
+ <p>Optional destination directory for the generated XPI file. The current working directory is the default destination.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-v --verbose</code></td>
+ <td>
+ <p>Verbose operation:</p>
+
+ <pre class="brush: bash">
+jpm xpi -v</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_post">jpm post</h3>
+
+<p>This command packages the add-on as an <a href="/en-US/docs/XPI">XPI</a> file then posts it to some URL.</p>
+
+<pre class="brush: bash">jpm post</pre>
+
+<p>It looks for a file called <code>package.json</code> in the current directory (or <code>--addon-dir</code>) and creates an XPI file with which to post to the <code>--post-url</code>.</p>
+
+<p><code>jpm post</code> accepts the following options:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td><code>--post-url URL</code></td>
+ <td>
+ <p>The URL to post the extension to after creating an XPI.</p>
+
+ <pre class="brush: bash">
+jpm post --post-url http://localhost:8888/</pre>
+
+ <p>See <a href="https://www.npmjs.com/package/jpm#using-post-and-watchpost">Using Post and Watchpost</a> for more information.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-v --verbose</code></td>
+ <td>
+ <p>Verbose operation:</p>
+
+ <pre class="brush: bash">
+jpm post --post-url http://localhost:8888/ -v</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_watchpost">jpm watchpost</h3>
+
+<p>This command packages the add-on as an <a href="/en-US/docs/XPI">XPI</a> file then posts it to some URL whenever a file in the current working directory changes.</p>
+
+<pre class="brush: bash">jpm watchpost</pre>
+
+<p>Creates an XPI whenever a file changes in the current working directory (or <code>--addon-dir</code>) and posts that to the <code>--post-url</code>.</p>
+
+<p><code>jpm watchpost</code> accepts the following options:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td><code>--post-url URL</code></td>
+ <td>
+ <p>The URL to post the extension to after creating an XPI.</p>
+
+ <pre class="brush: bash">
+jpm watchpost --post-url http://localhost:8888/</pre>
+
+ <p>See <a href="https://www.npmjs.com/package/jpm#using-post-and-watchpost">Using Post and Watchpost</a> for more information.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-v --verbose</code></td>
+ <td>
+ <p>Verbose operation:</p>
+
+ <pre class="brush: bash">
+jpm watchpost --post-url http://localhost:8888/ -v</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_sign">jpm sign</h3>
+
+<div class="note">
+<p>This feature is only supported from jpm 1.0.4 onwards.</p>
+</div>
+
+<p>This command retrieves a new <a href="/en-US/docs/XPI">XPI</a> for your add-on signed by Mozilla. This allows you to <a href="#Supporting_updates_for_self-hosted_add-ons">self-host your add-on</a> so that users can install it without error when <a href="https://wiki.mozilla.org/Add-ons/Extension_Signing">signed add-ons are required</a>.</p>
+
+<p>You can sign an XPI you've already generated by passing the XPI file in the <code>--xpi</code> argument, like this:</p>
+
+<pre class="bz_comment_text" id="comment_text_2">jpm sign --api-key ${JWT_ISSUER} --api-secret ${JWT_SECRET} --xpi &lt;xpi file&gt;</pre>
+
+<p>Alternatively, you can omit the <code>--xpi</code> argument, in which case <code>jpm sign</code> will generate an XPI from the current directory (or <code>--addon-dir</code>).</p>
+
+<pre class="brush: bash">jpm sign --api-key ${JWT_ISSUER} --api-secret ${JWT_SECRET}</pre>
+
+<p>This submits an <a href="/en-US/docs/XPI">XPI</a> it to the <a href="https://addons.mozilla.org/">addons.mozilla.org</a> <a href="https://olympia.readthedocs.org/en/latest/topics/api/signing.html">signing API</a>, then downloads a signed XPI to the working directory if it passes validation.</p>
+
+<p>To get values for <code>--api-key</code> and <code>--api-secret</code>, you will need to <a href="https://addons.mozilla.org/en-US/developers/addon/api/key/">create API credentials on addons.mozilla.org</a>. On the AMO key management page, these values are labeled "JWT_Issuer" and "JWT_Secret".</p>
+
+<p>Here are some possible outcomes of running the <code>sign</code> command:</p>
+
+<ul>
+ <li>Your add-on passed validation, was signed by Mozilla, and a new signed <a href="/en-US/docs/XPI">XPI</a> was downloaded to your working directory.</li>
+ <li>Your add-on failed validation, was not signed, and you got a link to a detailed report. After fixing the validation errors, you can run the command again.</li>
+ <li>You add-on passed validation but it could not be automatically signed because your add-on is <a href="/en-US/Add-ons/Distribution">listed</a>. Listed add-ons will require a manual review before they can be signed.</li>
+ <li>Your add-on at this exact version number already exists, so it was not signed. Increment the version number in your <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> file and run the command again.</li>
+</ul>
+
+<p>Under the hood, <code>jpm sign</code> creates an unlisted add-on inside <a href="https://addons.mozilla.org/">addons.mozilla.org</a>, which means you must distribute the XPI file yourself for your users to install it. If you need to create a listed add-on, just <a href="https://addons.mozilla.org/en-US/developers/addon/submit/2">submit it directly to addons.mozilla.org</a> where it is signed automatically. See the <a href="/en-US/docs/Extension_Versioning%2C_Update_and_Compatibility#Debugging_and_solving_problems">debugging</a> section if you are experiencing difficulty installing a signed add-on.</p>
+
+<p><code>jpm sign</code> accepts the following options:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td><code>--api-key=JWT_ISSUER</code></td>
+ <td>
+ <p>API access key (string) generated on the <a href="https://addons.mozilla.org/en-US/developers/addon/api/key/">addons.mozilla.org key management page</a>.</p>
+
+ <p>On the AMO key management page, this value is labeled "JWT Issuer".</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--api-secret=JWT_SECRET</code></td>
+ <td>
+ <p>API access secret (string) generated on the <a href="https://addons.mozilla.org/en-US/developers/addon/api/key/">addons.mozilla.org key management page</a>. This value should be guarded with care and never checked into version control. If your secret is compromised, another developer could upload add-ons to your account. You should revoke and regenerate compromised API credentials immediately.</p>
+
+ <p>On the AMO key management page, this value is labeled "JWT Secret".</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--api-url-prefix=http://.../api</code></td>
+ <td>
+ <p>An optional API URL prefix in case you'd like to use a pre-production signing API.</p>
+
+ <p>For example, you could pass <code>https://addons-dev.allizom.org/api/v3</code> to use the dev instance of <a href="https://addons.mozilla.org/">addons.mozilla.org</a>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--xpi=/path/to/file.xpi</code></td>
+ <td>
+ <p>An <a href="/en-US/docs/XPI">XPI</a> file to sign. When no file is specified, a new XPI will be generated from the current directory (or <code>--addon-dir</code>).</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="テクニック">テクニック</h2>
+
+<h3 id="ブラウザのバージョンの選択">ブラウザのバージョンの選択</h3>
+
+<p>By default, <code>jpm run</code> and <code>jpm test</code> runs the release version of Firefox. You can instruct jpm to use a different version in one of two ways:</p>
+
+<ul>
+ <li>
+ <p>You can use the <code>-b</code> or <code>--binary</code> option to instruct jpm to run a different version of Firefox. You can supply a path to a specific binary:</p>
+
+ <pre class="brush: bash">jpm run -b /path/to/Firefox/Nightly</pre>
+
+ <p>As a shorthand for this, you can pass "nightly", "firefoxdeveloperedition", "aurora", "beta", or "firefox" and jpm will look in the default location for these Firefox versions [Note: As of Firefox 48, the shorthands "firefox" and "beta" will resolve to versions of Firefox which will not run your add-on. This is due to Firefox 48, and later, not having the option to run add-ons which are <a href="/en-US/docs/Mozilla/Add-ons/Distribution">unsigned</a>.]:</p>
+
+ <pre class="brush: bash">jpm run -b nightly</pre>
+ </li>
+ <li>
+ <p>You can set the <code>JPM_FIREFOX_BINARY</code> environment variable with the path to the version of Firefox you want to run. When you invoke <code>jpm run</code> or <code>jpm test</code> without the <code>-b</code> option, jpm first checks <code>JPM_FIREFOX_BINARY</code>, and use this as the path if it is set.</p>
+ </li>
+</ul>
+
+<h3 id="Using_.jpmignore_to_ignore_files">Using <code>.jpmignore</code> to ignore files</h3>
+
+<p>Using <code>.jpmignore</code> is similar to using <code>.gitignore</code> with <code>git</code>, <code>.hgignore</code> with Mercurial, or <code>.npmignore</code> with <code>npm</code>. By using this file, you can let <code>jpm</code> know which files you would like it to ignore when building a <code>.xpi</code> file with <code>jpm xpi</code>.</p>
+
+<p>Here is an example:</p>
+
+<pre class="brush: bash"># Ignore .DS_Store files created by mac
+.DS_Store
+
+# Ignore any zip or xpi files
+*.zip
+*.xpi
+</pre>
+
+<p>A <code>.jpmignore</code> file with the above contents would ignore all zip files and <code>.DS_Store</code> files from the xpi generated by <code>jpm xpi</code>.</p>
+
+<h3 id="プロファイルの使用">プロファイルの使用</h3>
+
+<p>By default, <code>jpm run</code> uses a new profile each time it is executed. This means that any profile-specific data entered from one run of <code>jpm</code> is not, by default, available in the next run.</p>
+
+<p>This includes, for example, any extra add-ons you installed, or your history, or any data stored using the <a href="/en-US/Add-ons/SDK/High-Level_APIs/simple-storage">simple-storage</a> API.</p>
+
+<p>To make <code>jpm</code> use a specific profile, pass the <code>--profile</code> option, specifying the name of the profile you wish to use, or the path to the profile.</p>
+
+<pre class="brush: bash">jpm run --profile boogaloo
+</pre>
+
+<pre class="brush: bash">jpm run --profile path/to/boogaloo</pre>
+
+<p>Use the <a href="https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles">profile manager</a> to create a new profile if needed.</p>
+
+<p>If you need changes to the profile to persist, add the <code>--no-copy</code> argument. However beware that jpm might also apply changes to the profile, setting some preferences that will make it unusable for daily usage.</p>
+
+<h3 id="ブラウザを再起動せずに開発する">ブラウザを再起動せずに開発する</h3>
+
+<p>Because <code>jpm run</code> restarts the browser each time you invoke it, it can be a little cumbersome if you are making very frequent changes to an add-on. An alternative development model is to use the <a href="https://addons.mozilla.org/en-US/firefox/addon/autoinstaller/" rel="noreferrer">Extension Auto-Installer</a> add-on: this listens for new XPI files on a specified port and installs them automatically. That way you can test new changes without needing to restart the browser:</p>
+
+<ul>
+ <li>make a change to your add-on</li>
+ <li>run <code>jpm post --post-url http://localhost:8888/</code>, to make an XPI and post it.</li>
+</ul>
+
+<p>You could even automate this workflow with a simple script. For example:</p>
+
+<pre class="brush: bash">jpm watchpost --post-url http://localhost:8888/
+</pre>
+
+<p>Note that the logging level defined for the console is different when you use this method, compared to the logging level used when an add-on is run using <code>jpm run</code>. This means that if you want to see the output from <a href="/en-US/Add-ons/SDK/Tutorials/Logging" rel="noreferrer"><code>console.log()</code></a> messages, you have to tweak a setting. See the documentation on <a href="/en-US/Add-ons/SDK/Tools/console#Logging_Levels" rel="noreferrer">logging levels</a> for the details on this.</p>
+
+<h3 id="組み込みモジュールのオーバーロード">組み込みモジュールのオーバーロード</h3>
+
+<p>The SDK modules you use to implement your add-on are built into Firefox. When you run or package an add-on using <code>jpm run</code> or <code>jpm xpi</code>, the add-on uses the versions of the modules in the version of Firefox that hosts it.</p>
+
+<p>As an add-on developer, this is usually what you want. But if you're developing the SDK modules themselves, of course, it isn't. In this case you need to:</p>
+
+<ul>
+ <li>Get a local copy of the SDK modules that you want: this usually means checking out the SDK from its <a href="https://github.com/mozilla/addon-sdk" rel="noreferrer">GitHub repo</a></li>
+ <li>Set the <code>JETPACK_ROOT</code> environment variable to your local copy</li>
+ <li>Pass the <code>-o</code> option to <code>jpm run</code> or <code>jpm xpi</code>:</li>
+</ul>
+
+<pre class="brush:bash">jpm run -o
+</pre>
+
+<p>This instructs jpm to use the local copies of the SDK modules, not the ones in Firefox. If you do not want to set the <code>JETPACK_ROOT</code> environment variable, you can pass the location of your copy of the SDK modules along with <code>-o</code>:</p>
+
+<pre class="brush:bash">jpm run -o "/path/to/addon-sdk/"</pre>
+
+<p>The path must be an absolute path and point to the SDK's root (not <code>addon-sdk/sdk</code> or <code>addon-sdk/sdk/lib</code>, for instance).</p>
+
+<h3 id="セルフホスト型アドオンのサポートアップデート">セルフホスト型アドオンのサポートアップデート</h3>
+
+<div class="note">
+<p>This feature is only supported from jpm 1.0.3 onwards.</p>
+</div>
+
+<p>When you make updates to your add-on to add features or fix bugs, you'll want any previously installed versions of the add-on to update themselves to the new version.</p>
+
+<p>If you list your add-on on <a href="https://addons.mozilla.org/">addons.mozilla.org</a>, then all you have to do here is submit the new version; add-ons default to checking <a href="https://addons.mozilla.org/">addons.mozilla.org</a> for new versions of themselves. You can stop reading this section.</p>
+
+<p>If you do not list your add-on on <a href="https://addons.mozilla.org/">addons.mozilla.org</a>, you need to generate a Mozilla-signed XPI and tell Firefox where it can find new versions of your add-on. The way this works is:</p>
+
+<ul>
+ <li>you run <a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_sign">jpm sign</a> anytime you need to create a new version</li>
+ <li>you host the signed add-on XPI and update it when you need to</li>
+ <li>you host an "update manifest", which, among other things, contains a URL pointing to the XPI</li>
+ <li>your add-on tells Firefox where it can find the update manifest</li>
+</ul>
+
+<p>To do this, include two extra keys in package.json:</p>
+
+<ul>
+ <li><code><a href="/en-US/Add-ons/SDK/Tools/package_json#updateURL">updateURL</a></code>: This URL is included in the <a href="/en-US/docs/Mozilla/Add-ons/Install_Manifests">install manifest</a> of the XPI file that <code>jpm xpi</code> builds. It points to your update manifest. The <code>updateURL</code> value <em>may</em> be HTTPS. If it is not, then you'll also need to sign the update manifest, and then include the public key using the <code><a href="/en-US/Add-ons/SDK/Tools/package_json#updateKey">updateKey</a></code> field in package.json. See <a href="/en-US/docs/Extension_Versioning%2C_Update_and_Compatibility#Securing_Updates">Securing updates</a> for more on this.</li>
+ <li><code><a href="/en-US/Add-ons/SDK/Tools/package_json#updateLink">updateLink</a></code>: This URL is included in the update manifest file. It points to the XPI, and <em>must</em> be an HTTPS URL.</li>
+</ul>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/11847/addons-update.svg" title="[https://mdn.mozillademos.org]"></p>
+
+<p>If you include <code>updateURL</code> and <code>updateLink</code> (and also <code>updateKey</code> in case <code>updateURL</code> is not HTTPS), then <code>jpm xpi</code> will:</p>
+
+<ul>
+ <li>Embed the value you supplied for <code>updateURL</code> in the XPI it generates.</li>
+ <li>Generate an update manifest alongside the XPI, and embed the value you supplied for <code>updateLink</code> in the manifest.</li>
+</ul>
+
+<p>You then host the update manifest at <code>updateURL</code>, and host new versions of the XPI at <code>updateLink</code>.</p>
+
+<p>For some more details on this, see <a href="/en-US/docs/Extension_Versioning,_Update_and_Compatibility#Automatic_Add-on_Update_Checking">Automatic Add-on Update Checking</a>.</p>
diff --git a/files/ja/archive/add-ons/enhanced_extension_installation/index.html b/files/ja/archive/add-ons/enhanced_extension_installation/index.html
new file mode 100644
index 0000000000..8101f0cdab
--- /dev/null
+++ b/files/ja/archive/add-ons/enhanced_extension_installation/index.html
@@ -0,0 +1,14 @@
+---
+title: Enhanced Extension Installation
+slug: Archive/Add-ons/Enhanced_Extension_Installation
+tags:
+ - Add-ons
+ - Extensions
+ - 移行予定
+translation_of: Archive/Add-ons/Enhanced_Extension_Installation
+---
+<div class="note">
+<p>和訳の草稿が <a class="external" href="http://forums.firehacks.org/trans/viewtopic.php?t=2764">翻訳部門フォーラム</a> で公開されています。</p>
+</div>
+
+<div class="noinclude"> </div>
diff --git a/files/ja/archive/add-ons/extension_versioning,_update_and_compatibility/index.html b/files/ja/archive/add-ons/extension_versioning,_update_and_compatibility/index.html
new file mode 100644
index 0000000000..fad5cab949
--- /dev/null
+++ b/files/ja/archive/add-ons/extension_versioning,_update_and_compatibility/index.html
@@ -0,0 +1,207 @@
+---
+title: 'Extension Versioning, Update and Compatibility'
+slug: 'Archive/Add-ons/Extension_Versioning,_Update_and_Compatibility'
+tags:
+ - Add-ons
+ - Extensions
+ - 要更新
+translation_of: 'Archive/Add-ons/Extension_Versioning,_Update_and_Compatibility'
+---
+<p><span id="Add-on_Versioning"></span></p>
+<h2 id=".E3.82.A2.E3.83.89.E3.82.AA.E3.83.B3.E3.81.AE.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E4.BB.98.E3.81.91" name=".E3.82.A2.E3.83.89.E3.82.AA.E3.83.B3.E3.81.AE.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E4.BB.98.E3.81.91">アドオンのバージョン付け</h2>
+<p>アドオンは、<a href="ja/Toolkit_version_format">Toolkit バージョンフォーマット</a> を使って自身のバージョンを指定すべきです。簡単に説明すると、これはピリオドによって区切られたバージョン文字列です。いくつかの例を示します。</p>
+<ul>
+ <li>2.0</li>
+ <li>1.0b1</li>
+ <li>3.0pre1</li>
+ <li>5.0.1.2</li>
+</ul>
+<div class="note">
+ <b>注意:</b> Firefox 1.5 以前では、より単純な Firefox バージョンフォーマットが使われていました: major.minor.release.build[+] 形式で数字だけが許されていました。Toolkit バージョンフォーマットは Firefox バージョンフォーマットをサポートしていますが、はるかに柔軟です。</div>
+<p><span id="How_Applications_Determine_Compatibility"></span></p>
+<h2 id=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E4.BA.92.E6.8F.9B.E6.80.A7.E5.88.A4.E6.96.AD.E6.96.B9.E6.B3.95" name=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E4.BA.92.E6.8F.9B.E6.80.A7.E5.88.A4.E6.96.AD.E6.96.B9.E6.B3.95">アプリケーションの互換性判断方法</h2>
+<p>アドオンをインストールしたとき、アプリケーションはアドオンの &lt;tt&gt;install.rdf&lt;/tt&gt; の中の <code><a href="ja/Install.rdf#targetApplication">targetApplication</a></code> 項目を見ます。アプリケーションの ID に一致した項目が存在しなくてはなりません。さらに、実行しているアプリケーションのバージョンはこの項目の <code>minVersion</code> と <code>maxVersion</code> の範囲内でなくてはなりません。</p>
+<p>アプリケーションが <code>targetApplication</code> 項目を持っており、しかしそれが互換性の無いバージョン向けだった場合、アプリケーションはアドオンの <code><a href="ja/Install.rdf#updateURL">updateURL</a></code> から更新された互換性情報を読み込みます。</p>
+<p>もし install.rdf が <code><a href="ja/Install.rdf#targetPlatform">targetPlatform</a></code> 項目をもっているなら、現在実行しているアプリケーションのプラットフォームが含まれていない限り、インストールは拒否されます。</p>
+<p></p><div class="blockIndicator standardNote standardNoteBlock">
+ <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 における注記</a></p>
+ <p style="font-weight: 400;">Gecko 1.9 ベースのアプリケーションでは <code>targetApplication</code> 項目に、ID が <code>toolkit@mozilla.org</code> で、実行しているアプリケーションが使っている Toolkit のバージョンに一致する <code>minVersion</code> と <code>maxVersion</code> を指定することができます。これによって Toolkit ベースのいかなるアプリケーションにもインストール可能であると宣言することができます。</p>
+</div><p></p>
+<p><span id="Overriding_Compatibility_Checking"></span></p>
+<h3 id=".E4.BA.92.E6.8F.9B.E6.80.A7.E3.83.81.E3.82.A7.E3.83.83.E3.82.AF.E3.82.92.E7.84.A1.E5.8A.B9.E3.81.AB.E3.81.99.E3.82.8B" name=".E4.BA.92.E6.8F.9B.E6.80.A7.E3.83.81.E3.82.A7.E3.83.83.E3.82.AF.E3.82.92.E7.84.A1.E5.8A.B9.E3.81.AB.E3.81.99.E3.82.8B">互換性チェックを無効にする</h3>
+<p> テスト目的で、アプリケーションにアドオンインストール時の互換性チェックを無視するよう指示することができます。単に真偽値設定の <code>extensions.checkCompatibility</code> を作り、false に設定してください。</p>
+<div class="note">
+ <b>注意:</b> Firefox 1.5 以前では、互換性の無い拡張機能のインストールを可能にするため、<code>app.extensions.version</code> 設定でアプリケーション自身のバージョンを上書きすることが可能でした。</div>
+<p><span id="Choosing_minVersion_and_maxVersion"></span></p>
+<h2 id="minVersion_.E3.81.A8_maxVersion_.E3.82.92.E9.81.B8.E6.8A.9E.E3.81.99.E3.82.8B" name="minVersion_.E3.81.A8_maxVersion_.E3.82.92.E9.81.B8.E6.8A.9E.E3.81.99.E3.82.8B">minVersion と maxVersion を選択する</h2>
+<p><code>minVersion</code> と <code>maxVersion</code> はテストしたアプリケーションのバージョンの範囲を指定すべきです。特に、そのアプリケーションで現在利用できるバージョンよりも大きな値を <code>maxVersion</code> に指定すべきではありません。なぜなら、あなたはまもなく行われる (かもしれない) API と UI の変更について知らないのですから。<a href="#Compatibility_Updates">互換性のある更新</a> では、<code>maxVersion</code> を上げるために拡張機能丸ごとの新バージョンをリリースする必要はありません。</p>
+<p>普通、<code>maxVersion</code> ではサポートしているアプリケーションのマイナバージョンの箇所に * を使うことができます。例えば 2.0.0.* はそのアプリケーションのバージョン 2 におけるマイナアップデート全てをサポートするということを意味しています。通常、アプリケーションは拡張機能作者に、これを使うのに適しているバージョンの部分を示します。</p>
+<p>バージョンの * が全てのバージョンを表すものだと誤解しないでください。 実際には、* は無限に大きい数を表すので、<code>maxVersion</code> で賢く使用されるだけのものです。通常それを <code>minVersion</code> で使っても望む効果は生みだしません。</p>
+<p><span id="Automatic_Add-on_Update_Checking"></span></p>
+<h2 id=".E8.87.AA.E5.8B.95.E3.82.A2.E3.83.89.E3.82.AA.E3.83.B3.E6.9B.B4.E6.96.B0.E3.83.81.E3.82.A7.E3.83.83.E3.82.AF" name=".E8.87.AA.E5.8B.95.E3.82.A2.E3.83.89.E3.82.AA.E3.83.B3.E6.9B.B4.E6.96.B0.E3.83.81.E3.82.A7.E3.83.83.E3.82.AF">自動アドオン更新チェック</h2>
+<p>アプリケーションは、<code><a href="ja/Install.rdf#updateURL">updateURL</a></code> を読み込むことで、インストールされたアドオンの更新を定期的に確認するでしょう。返された情報によって、アドオンの更新されたバージョンをユーザに知らせることや新しいバージョンのアプリケーションがアドオンが互換性があることを知らせることができます。</p>
+<p><span id="Compatibility_Updates"></span></p>
+<h3 id=".E4.BA.92.E6.8F.9B.E6.80.A7.E3.81.AE.E3.81.82.E3.82.8B.E6.9B.B4.E6.96.B0" name=".E4.BA.92.E6.8F.9B.E6.80.A7.E3.81.AE.E3.81.82.E3.82.8B.E6.9B.B4.E6.96.B0">互換性のある更新</h3>
+<p>自動更新チェックの間、アプリケーションは新しいバージョンと、現在インストールされているバージョンの更新された互換性情報を探します。これは更新マニフェストがアドオンの現在インストールされているバージョンの項目を含んでおり、その項目の <code>targetApplication</code> 項目が より大きな <code>maxVersion</code> を指定している場合、アプリケーションはアドオンの &lt;tt&gt;install.rdf&lt;/tt&gt; で指定された値ではなく、この値を使うでしょう。これは非互換なため無効にされたアドオンを有効にし、通常はインストールされないアドオンをインストールすることができます。</p>
+<p><span id="Update_RDF_Format"></span></p>
+<h2 id=".E3.82.A2.E3.83.83.E3.83.97.E3.83.87.E3.83.BC.E3.83.88_RDF_.E3.81.AE.E5.BD.A2.E5.BC.8F" name=".E3.82.A2.E3.83.83.E3.83.97.E3.83.87.E3.83.BC.E3.83.88_RDF_.E3.81.AE.E5.BD.A2.E5.BC.8F">アップデート RDF の形式</h2>
+<p>もしあなたがアドオンの <code>updateURL</code> を自分自身で提供している場合、あなたは RDF の形式でアドオンのバージョン情報を帰す必要があるでしょう。以下は更新情報の定義の例です。<code><a class="link-mailto" href="mailto:foobar@developer.mozilla.org" rel="freelink">foobar@developer.mozilla.org</a></code>という ID の拡張機能について 2 つの異なるバージョンの情報を列挙しています。含まれているバージョンは 2.2 と 2.5 で、どちらも Firefox 1.5 から 2.0.0.* までに対して互換性があることを示しています。バージョン 2.2 用には更新用のリンクに https が使われていて、バージョン 2.5 用には通常の http のリンクと、取得したファイルを検証するためのハッシュの情報が含まれています。</p>
+<p>最初の RDF:Description の about 属性を正確にすることに気をつけてください。あなたが提供している情報がどの種類のアドオンに対するものであるかによって、その値は変化します。</p>
+<ul>
+ <li>拡張機能の場合は <code>urn:mozilla:extension:&lt;id&gt;</code> でなければなりません。</li>
+ <li>テーマの場合は <code>urn:mozilla:theme:&lt;id&gt;</code> でなければなりません。</li>
+ <li>それ以外の種類のアドオンの場合は <code>urn:mozilla:item:&lt;id&gt;</code> でなければなりません。</li>
+</ul>
+<p>以下の例ではいずれも、&lt;RDF:Seq&gt; 要素内のバージョンの順序が重要で、より新しいバージョンを、古いバージョンよりも後に配置する必要があります。最新のバージョンのみ提供する場合は、すべてのバージョンを記載する必要はありません。</p>
+<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
+
+ &lt;!-- この Description リソースは、foobar@developer.mozilla.org という ID のあるアドオンに
+ 関する、すべての更新情報と互換性の情報を含んでいます。複数のアドオンの情報を
+ 同じ RDF ファイルの中に列挙することもできます。 --&gt;
+ &lt;RDF:Description about="urn:mozilla:extension:foobar@developer.mozilla.org"&gt;
+ &lt;em:updates&gt;
+ &lt;RDF:Seq&gt;
+
+ &lt;!-- それぞれの li は、同じアドオンの異なるバージョンを示します。 --&gt;
+ &lt;RDF:li&gt;
+ &lt;RDF:Description&gt;
+ &lt;em:version&gt;2.2&lt;/em:version&gt; &lt;!-- これはこのアドオンのバージョン番号です。 --&gt;
+
+ &lt;!-- アドオンの互換性があるアプリケーション 1 つ毎に 1 つの
+ targetApplication を記述します。 --&gt;
+ &lt;em:targetApplication&gt;
+ &lt;RDF:Description&gt;
+ &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;
+ &lt;em:minVersion&gt;1.5&lt;/em:minVersion&gt;
+ &lt;em:maxVersion&gt;2.0.0.*&lt;/em:maxVersion&gt;
+
+ &lt;!-- これは、そのバージョンのアドオンがどこからダウンロードできるかを示します。 --&gt;
+ &lt;em:updateLink&gt;https://www.mysite.com/foobar2.2.xpi&lt;/em:updateLink&gt;
+
+ &lt;!-- この更新されたバージョンでの変更点を説明したページ --&gt;
+ &lt;em:updateInfoURL&gt;http://www.mysite.com/updateinfo2.2.xhtml&lt;/em:updateInfoURL&gt;
+ &lt;/RDF:Description&gt;
+ &lt;/em:targetApplication&gt;
+ &lt;/RDF:Description&gt;
+ &lt;/RDF:li&gt;
+
+ &lt;RDF:li&gt;
+ &lt;RDF:Description&gt;
+ &lt;em:version&gt;2.5&lt;/em:version&gt;
+ &lt;em:targetApplication&gt;
+ &lt;RDF:Description&gt;
+ &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;
+ &lt;em:minVersion&gt;1.5&lt;/em:minVersion&gt;
+ &lt;em:maxVersion&gt;2.0.0.*&lt;/em:maxVersion&gt;
+ &lt;em:updateLink&gt;http://www.mysite.com/foobar2.5.xpi&lt;/em:updateLink&gt;
+ &lt;em:updateHash&gt;sha1:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6&lt;/em:updateHash&gt;
+ &lt;/RDF:Description&gt;
+ &lt;/em:targetApplication&gt;
+ &lt;/RDF:Description&gt;
+ &lt;/RDF:li&gt;
+
+ &lt;/RDF:Seq&gt;
+ &lt;/em:updates&gt;
+
+ &lt;!-- 署名は、あなたのアドオンが install.rdf の中に updateKey を含んでいる
+ 場合にのみ有効です。 --&gt;
+ &lt;em:signature&gt;MIGTMA0GCSqGSIb3DQEBBQUAA4GBAMO1O2gwSCCth1GwYMgscfaNakpN40PJfOWt
+ ub2HVdg8+OXMciF8d/9eVWm8eH/IxuxyZlmRZTs3O5tv9eWAY5uBCtqDf1WgTsGk
+ jrgZow1fITkZI7w0//C8eKdMLAtGueGfNs2IlTd5P/0KH/hf1rPc1wUqEqKCd4+L
+ BcVq13ad&lt;/em:signature&gt;
+ &lt;/RDF:Description&gt;
+&lt;/RDF:RDF&gt;
+</pre>
+<p>人によっては、以下のもう 1 つの形式の方が好みかもしれません。(註:この例では、基本的な構造を示すために多くの情報を省略しています)</p>
+<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
+
+ &lt;!-- この Description リソースは、foobar@developer.mozilla.org という ID のあるアドオンに
+ 関する、すべての更新情報と互換性の情報を含んでいます。複数のアドオンの情報を
+ 同じ RDF ファイルの中に列挙することもできます。 --&gt;
+ &lt;RDF:Description about="urn:mozilla:extension:foobar@developer.mozilla.org"&gt;
+ &lt;em:updates&gt;
+ &lt;RDF:Seq&gt;
+ &lt;!-- resource 属性は、about 属性が対応している以下のそれぞれの RDF:Description
+ エントリを指し示しています。実際の URI は好きなように書いて構いませんが、
+ RDF の文法に従ってそれぞれ固有の URI を持たなくてはなりませんので、
+ バージョン番号をそれぞれのバージョンの末尾に追加しました --&gt;
+ &lt;RDF:li resource="urn:mozilla:extension:foobar@developer.mozilla.org:2.2"/&gt;
+ &lt;RDF:li resource="urn:mozilla:extension:foobar@developer.mozilla.org:2.5"/&gt;
+ &lt;/RDF:Seq&gt;
+ &lt;/em:updates&gt;
+ &lt;em:signature&gt;MIGTMA0GCSqGSIb3DQEBBQUAA4GBAMO1O2gwSCCth1GwYMgscfaNakpN40PJfOWt
+ ub2HVdg8+OXMciF8d/9eVWm8eH/IxuxyZlmRZTs3O5tv9eWAY5uBCtqDf1WgTsGk
+ jrgZow1fITkZI7w0//C8eKdMLAtGueGfNs2IlTd5P/0KH/hf1rPc1wUqEqKCd4+L
+ BcVq13ad&lt;/em:signature&gt;
+ &lt;/RDF:Description&gt;
+
+ &lt;!-- これは前の例で li の中に置かれている Description と同じ情報を示しています --&gt;
+ &lt;RDF:Description about="urn:mozilla:extension:foobar@developer.mozilla.org:2.2"&gt;
+ &lt;em:version&gt;2.2&lt;/em:version&gt;
+
+ &lt;!-- ここにある残りの情報は省略します --&gt;
+
+ &lt;/RDF:Description&gt;
+
+ &lt;RDF:Description about="urn:mozilla:extension:foobar@developer.mozilla.org:2.5"&gt;
+ &lt;em:version&gt;2.5&lt;/em:version&gt;
+
+ &lt;!-- ここにある残りの情報は省略します --&gt;
+
+ &lt;/RDF:Description&gt;
+
+&lt;/RDF:RDF&gt;
+</pre>
+<p><span id="Providing_Details_about_Updates"></span></p>
+<h3 id=".E6.9B.B4.E6.96.B0.E3.81.AE.E8.A9.B3.E7.B4.B0.E6.83.85.E5.A0.B1.E3.81.AE.E6.8F.90.E4.BE.9B" name=".E6.9B.B4.E6.96.B0.E3.81.AE.E8.A9.B3.E7.B4.B0.E6.83.85.E5.A0.B1.E3.81.AE.E6.8F.90.E4.BE.9B">更新の詳細情報の提供</h3>
+<p> あなたのアドオンの更新されたバージョンにおける新しい点について、ユーザに詳細情報を提供することができます。これはユーザがアドオンの更新通知を見る際に、どんな新機能が追加され、どんなセキュリティ上の問題が解決されたのか、簡単な概要を示すために表示されます。</p>
+<p>この機能を使うには、<code>updateInfoURL</code>エントリをその更新情報の定義に追加する必要があります (上の例を見てください)。この URL で示されたページが取得され、ユーザに示されます。通常の Web ページの文脈から外れてページが表示されるまでの間に、そのページは厳重に無害化されます。これはつまり、ごく僅かな整形のための手段のみが利用できて、スクリプトや画像は利用できないということを意味します。一般的なルールとして、あなたは以下のタグのみを利用することができます (これら以外は全て無視されます)。</p>
+<ul>
+ <li>一般的な見出しのための h1, h2, h3</li>
+ <li>段落のための p</li>
+ <li>リストのための ul と ol</li>
+</ul>
+<p>リストの中でそれぞれのリストの項目を示すためには、通常の <code>li</code> タグを使います。</p>
+<p>h1, h2, h3, p, li のそれぞれのタグの中では、あなたは以下のタグを使えます。</p>
+<ul>
+ <li>太字のための b もしくは strong</li>
+ <li>斜体のための i もしくは em</li>
+</ul>
+<p>取得された詳細情報のページは現在の所、MIME Type が <code>application/xhtml+xml</code> で届けられなければならない事も含めて、完全に妥当な XHTML でなければなりません。</p>
+<p>ロケール情報を URL に含めたい場合は、<code>updateInfoURL</code> に <code>%APP_LOCALE%</code> を使うことができます。これにより、ユーザのロケールに合わせて文章をカスタマイズできるようになります。また、あまり実用的ではないかもしれませんが、<code>updateURL</code> でサポートされている他の代入文字列を使うこともできます。</p>
+<p><span id="Securing_Updates"></span></p>
+<h3 id=".E5.AE.89.E5.85.A8.E3.81.AA.E6.9B.B4.E6.96.B0" name=".E5.AE.89.E5.85.A8.E3.81.AA.E6.9B.B4.E6.96.B0">安全な更新</h3>
+<p> </p>
+<p>Gecko 1.9には、ユーザをアドオンの更新中に行われる <a class="external" href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack">中間者攻撃</a> から保護するために設計された、追加の要求事項が加えられました。インストール済みのアドオンの install.rdf の中において、<code>updateURL</code> は以下のいずれかの方法で示される必要があります。</p>
+<ul>
+ <li>https を使った <code><a href="ja/Install.rdf#updateURL">updateURL</a></code>、もしくは全く <code>updateURL</code> を提供しない。(この場合、初期状態では https で通信する &lt;tt&gt;addons.mozilla.org&lt;/tt&gt; へアクセスすることになります)</li>
+ <li>http を使った <code><a href="ja/Install.rdf#updateURL">updateURL</a></code> で、<code><a href="ja/Install.rdf#updateKey">updateKey</a></code> エントリが指定されている。(それは更新情報の定義の内容を検証するために使われるでしょう。)</li>
+</ul>
+<p>&lt;tt&gt;install.rdf&lt;/tt&gt; の中で <code>updateKey</code> を指定する場合、<a href="#更新情報の定義への署名">更新情報の定義への署名</a> を行う必要があります。さもなければ、更新情報は拒絶されます。</p>
+<p><code>updateURL</code> によって伝えられた更新情報の中の <code>updateLink</code> は、以下の方法のうちのいずれかによって指定される必要があります。</p>
+<ul>
+ <li>XPI ファイルへの <code>updateLink</code> は https を使ったものでなければなりません。</li>
+ <li><code>updateLink</code> は http を使うことができ、この場合、あなたは sha1、sha256、sha384、sha512 のいずれかのハッシュアルゴリズムで生成した XPI の <a href="#更新ファイルのハッシュ_(updateHash)">更新ファイルのハッシュ (updateHash)</a> を含める必要があります。</li>
+</ul>
+<p>更新情報の定義の中において、それらの 2 つの条件を満たさないあらゆる情報は、新しいバージョンをチェックする際にはすべて無視されます。</p>
+<p>註:不正な証明書を使ったサイトへの https なリンクや、http のサイトへのリダイレクトは、&lt;tt&gt;update.rdf&lt;/tt&gt; と <code>updateLink</code> のどちらのケースにおいても読み込みに失敗するでしょう。</p>
+<p><span id="Update_Hashes"></span></p>
+<h4 id=".E6.9B.B4.E6.96.B0.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5_.28updateHash.29" name=".E6.9B.B4.E6.96.B0.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5_.28updateHash.29">更新ファイルのハッシュ (updateHash)</h4>
+<p>ダウンロードされた XPI の完全性を検証するために、あなたは updateLink と並べて <code>updateHash</code> エントリを提供することができます。これはファイルの内容を文字列として解釈して生成されたハッシュであるべきです。ハッシュ化に使われたアルゴリズムの名前は、文字列全体の最初に、ハッシュ値の手前に <code>:</code> で区切って置かれます。</p>
+<pre> &lt;em:updateHash&gt;sha1:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6&lt;/em:updateHash&gt;
+</pre>
+<p>ハッシュが示されている場合、ダウンロードされたファイルはハッシュと比較され、それらが一致しない場合はエラーが表示されます。</p>
+<p><span id="Signing_Update_Manifests"></span></p>
+<h4 id=".E6.9B.B4.E6.96.B0.E6.83.85.E5.A0.B1.E3.81.AE.E5.AE.9A.E7.BE.A9.E3.81.B8.E3.81.AE.E7.BD.B2.E5.90.8D" name=".E6.9B.B4.E6.96.B0.E6.83.85.E5.A0.B1.E3.81.AE.E5.AE.9A.E7.BE.A9.E3.81.B8.E3.81.AE.E7.BD.B2.E5.90.8D">更新情報の定義への署名</h4>
+<p> </p>
+<p>もしあなたが更新情報の RDF を通常の http を使って提供したい場合、Gecko 1.9 ベースのアプリケーションは、更新情報の定義について、あなたが作成してからアプリケーションがそれを取得するまでの間に第三者によって改変されていないことを確かめるため、電子署名を施すことが求められるでしょう。更新情報の RDF に署名するには <a href="ja/McCoy">McCoy</a> というツールを使うべきです。</p>
+<p>署名の仕組みの技術的な詳細はこの文書の目的から外れますが、基本的には以下の通りです。</p>
+<p>アドオンの作者は RSA 暗号による公開鍵と秘密鍵のペアを作成します。</p>
+<p>公開鍵は DER と base 64 でエンコードされた後、アドオンの &lt;tt&gt;install.rdf&lt;/tt&gt; に <code><a href="ja/Install.rdf#updateKey">updateKey</a></code> エントリとして追加されます。</p>
+<p>作者が更新情報の RDF ファイルを作成する時には、秘密鍵を使って署名するツールを使用します。大まかにいうと、更新情報は文字列に変換された後、SHA512 のハッシュアルゴリズムによってハッシュ化され、このハッシュが秘密鍵によって署名されます。最終的なデータは DER と base 64 でエンコードされた後、更新情報の RDF に <code>em:signature</code> エントリとして追加されます。</p>
diff --git a/files/ja/archive/add-ons/index.html b/files/ja/archive/add-ons/index.html
new file mode 100644
index 0000000000..d1851bd7ee
--- /dev/null
+++ b/files/ja/archive/add-ons/index.html
@@ -0,0 +1,8 @@
+---
+title: Add-ons
+slug: Archive/Add-ons
+translation_of: Archive/Add-ons
+---
+<p>In progress. Archived add-ons documentation.</p>
+
+<p></p>
diff --git a/files/ja/archive/add-ons/multiple_item_packaging/index.html b/files/ja/archive/add-ons/multiple_item_packaging/index.html
new file mode 100644
index 0000000000..1bb02a2ba4
--- /dev/null
+++ b/files/ja/archive/add-ons/multiple_item_packaging/index.html
@@ -0,0 +1,56 @@
+---
+title: マルチアイテムパッケージの作成
+slug: Archive/Add-ons/Multiple_Item_Packaging
+tags:
+ - Add-ons
+ - Extensions
+ - Toolkit API
+translation_of: Archive/Add-ons/Multiple_Item_Packaging
+---
+<p> マルチアイテムパッケージは、ユーザがダウンロードしてインストールできる物や、アプリケーションや外部のプログラムによって事前にパッケージ化された物など、複数の<a href="/ja/Bundles" title="ja/Bundles">インストール可能なBundle</a>を一つのパッケージにまとめる機能を提供します。すべてのマルチアイテムパッケージは、1つの<a href="/ja/Install_Manifests" title="ja/Install_Manifests">install.rdf</a>ファイル(古いスタイルの install.js ではなく!)と、以下の注意書きにある物を除いて、単体の<a href="/ja/Extension_Packaging" title="ja/Extension_Packaging">拡張機能</a>を作るのに必要な要素と同じ物を含みます。</p>
+<p>現在の所、拡張機能の古いバージョンをインストールする際に、ユーザに対して警告したり、それを禁止したりするような機能はありません。</p>
+<h3 id=".E3.83.9E.E3.83.AB.E3.83.81.E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.E5.86.85.E3.81.AE.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E9.85.8D.E7.BD.AE" name=".E3.83.9E.E3.83.AB.E3.83.81.E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.E5.86.85.E3.81.AE.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E9.85.8D.E7.BD.AE">マルチアイテムパッケージ内のファイルの配置</h3>
+<p>マルチアイテムパッケージ内のファイルの配置は、<a href="/ja/Bundles" title="ja/Bundles">インストール可能なBundle</a>の内容をより簡潔にしたもので、ファイルの拡張子は <code>xpi</code> です。一つのマルチアイテムパッケージの中に、拡張機能(ファイル名の拡張子が <code>xpi</code> である物)とテーマ(ファイル名の拡張子が<code>jar</code>である物)の両方を含めることができます。基本的な構造は以下の通りです:</p>
+<pre class="eval">/<a href="/ja/Install_Manifests" title="ja/Install_Manifests">install.rdf</a> <em>インストール定義</em>
+/extension1.xpi <em><a href="/ja/Extension_Packaging" title="ja/Extension_Packaging">拡張機能</a></em>
+/extension2.xpi <em><a href="/ja/Extension_Packaging" title="ja/Extension_Packaging">拡張機能</a></em>
+/theme1.jar <em><a href="/ja/Theme_Packaging" title="ja/Theme_Packaging">テーマ</a></em>
+/theme2.jar <em><a href="/ja/Theme_Packaging" title="ja/Theme_Packaging">テーマ</a></em>
+...
+</pre>
+<p>拡張機能マネージャは、これがマルチアイテムパッケージであるかどうかを判別するために <code>install.rdf</code> で提供されたインストール定義を読み取り、その中に含まれているそれぞれの個別のパッケージのインストールを自動的に開始します。<code>install.rdf</code> で提供されたインストール定義と同じ階層に置かれたその他のファイルや、<code>jar</code> や <code>xpi</code> といった拡張子のファイルは、展開されることも利用されることもありません。</p>
+<h3 id="install.rdf" name="install.rdf"><a href="/ja/Install_Manifests" title="ja/Install_Manifests">install.rdf</a></h3>
+<p>マルチアイテムパッケージは、<a href="/ja/Install_Manifests" title="ja/Install_Manifests">install.rdf</a> について、<a href="/ja/Extension_Packaging" title="ja/Extension_Packaging">拡張機能</a>の場合とは異なる要件を持っています。必要な項目は <code>em:id</code> と <code>em:targetApplication</code> 、そして <code>em:type</code> だけです。</p>
+<p>Firefox 1.5 および Thunderbird 1.5 の拡張機能マネージャがこのパッケージをマルチアイテムパッケージであると判別できるようにするために、あなたの作る <a href="/ja/Install_Manifests" title="ja/Install_Manifests">install.rdf</a> では <code>&lt;em:type NC:parseType="Integer"&gt;32&lt;/em:type&gt;</code> のような形で、 <code>em:type</code> の値として <code>32</code> を指定する必要があります。また、以下の例で示すように、あなたの作る<a href="/ja/Install_Manifests" title="ja/Install_Manifests">install.rdf</a>の中ではXML名前空間として <code>xmlns:NC="<a class="external" href="http://home.netscape.com/NC-rdf#" rel="freelink">http://home.netscape.com/NC-rdf#</a>"</code> を宣言しておく必要もあります。</p>
+<pre>...
+&lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:NC="http://home.netscape.com/NC-rdf#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
+
+ &lt;Description about="urn:mozilla:install-manifest"&gt;
+ &lt;!-- マルチアイテムパッケージ用に、nsIUpdateItem の型を指定 --&gt;
+ &lt;em:type NC:parseType="Integer"&gt;32&lt;/em:type&gt;
+...</pre>
+<p>Firefox 2.0 および Thunderbird 2.0 の拡張機能マネージャに対しては、前述の記法もしくは、以下のような <code>&lt;em:type&gt;32&lt;/em:type&gt;</code> という書き方のどちらも使えます。</p>
+<pre>...
+&lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
+
+ &lt;Description about="urn:mozilla:install-manifest"&gt;
+ &lt;!-- マルチアイテムパッケージ用に、nsIUpdateItem の型を指定 --&gt;
+ &lt;em:type&gt;32&lt;/em:type&gt;
+...</pre>
+<p><code>em:targetApplication</code> を指定するときは、<code>minVersion</code> には最も高い <code>minVersion</code> を、<code>maxVersion</code> には最も低い <code>maxVersion</code> を、このマルチアイテムパッケージが含んでいるその <code>em:targetApplication</code> 用の<a href="/ja/Bundles" title="ja/Bundles">インストール可能なBundles</a>すべての中から選び出してください。この作業を怠ると、マルチアイテムパッケージ内に含まれているバージョンにおいて互換性がないとされている項目は、互換性のチェックにおいて、互換性があると見なすための新しい互換性情報を検出できたとしても、インストールはされません。</p>
+<h3 id=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB" name=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">インストール</h3>
+<p>マルチアイテムパッケージのインストールにおいては、拡張機能やテーマをインストールするための現存するあらゆる方法と、拡張機能やテーマについての場合と同じユーザインターフェースを用いて、インストールを実行することができます(ただし、マルチアイテムパッケージに含まれている個々のパッケージは列挙されません)。また、マルチアイテムパッケージのために署名の情報を示すこともできます。</p>
+<p>マルチアイテムパッケージのダウンロードが完了して(拡張機能マネージャやテーママネージャのような)マネージャが表示されたときには、マネージャは、ユーザが複数の項目を同時にインストールするように選択した場合と同じ方法で、マルチアイテムパッケージに含まれていたすべての個々の項目を表示します。マルチアイテムパッケージのダウンロードが完了した後は、マネージャはマルチアイテムパッケージ自身を一覧の中には表示しません。</p>
+<h3 id="Toolkit_API.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE.E5.85.AC.E5.BC.8F.E3.81.AE.E3.83.AA.E3.83.95.E3.82.A1.E3.83.AC.E3.83.B3.E3.82.B9" name="Toolkit_API.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE.E5.85.AC.E5.BC.8F.E3.81.AE.E3.83.AA.E3.83.95.E3.82.A1.E3.83.AC.E3.83.B3.E3.82.B9"><a href="/ja/Toolkit_API" title="ja/Toolkit_API">Toolkit API</a>のための公式のリファレンス</h3>
+<p></p><p><span class="comment">Official References. Do not add to this list without contacting Benjamin Smedberg. Note that this page is included from the pages listed below. So: Don't Add Breadcrumbs!</span>
+</p>
+<ul><li> <a href="en/Bundles">Structure of an Installable Bundle</a>: describes the common structure of installable bundles, including extensions, themes, and XULRunner applications
+</li><li> <a href="en/Extension_Packaging">Extension Packaging</a>: specific information about how to package extensions
+</li><li> <a href="en/Theme_Packaging">Theme Packaging</a>: specific information about how to package themes
+</li><li> <a href="en/Multiple_Item_Packaging">Multiple-item Extension Packaging</a>: specific information about multiple-item extension XPIs
+</li><li> <a href="en/XUL_Application_Packaging">XUL Application Packaging</a>: specific information about how to package XULRunner applications
+</li><li> <a href="en/Chrome_Registration">Chrome Registration</a>
+</li></ul><p></p>
diff --git a/files/ja/archive/add-ons/observer_notifications/index.html b/files/ja/archive/add-ons/observer_notifications/index.html
new file mode 100644
index 0000000000..fb0e03f9ec
--- /dev/null
+++ b/files/ja/archive/add-ons/observer_notifications/index.html
@@ -0,0 +1,49 @@
+---
+title: Observer Notifications
+slug: Archive/Add-ons/Observer_Notifications
+tags:
+ - Add-ons
+ - Extensions
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Observer_Notifications
+---
+<h2 id=".E3.82.AA.E3.83.96.E3.82.B6.E3.83.BC.E3.83.90.E3.81.AE.E9.A0.85.E7.9B.AE" name=".E3.82.AA.E3.83.96.E3.82.B6.E3.83.BC.E3.83.90.E3.81.AE.E9.A0.85.E7.9B.AE"> オブザーバの項目 </h2>
+<p>以下はアプリケーションの中で監視 (<span style="color: green;">observe</span>)できる項目 (<span style="color: green;">topics</span>)です。特に断りのない限り<a href="ja/NsIObserverService">オブザーバサービス</a>を使って項目に登録します。
+</p><p><span id="Application_startup"></span>
+</p>
+<h3 id=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E8.B5.B7.E5.8B.95" name=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E8.B5.B7.E5.8B.95"> アプリケーションの起動 </h3>
+<p>これらは起動時に監視できる項目です (出現順に並んでいます)。
+</p>
+<table class="standard-table"> <tbody><tr> <th>項目</th> <th>説明</th> </tr> <tr> <td>xpcom-startup</td> <td>xpcom が初期化されたときに呼ばれます。この時点では大半のものは利用できません。この項目をみるにはカテゴリマネージャに登録しなくてはいけません。</td> </tr> <tr> <td>app-startup</td> <td>アプリケーションの起動の一般的なイベント。この項目をみるにはカテゴリマネージャに登録しなくてはいけません。</td> </tr> <tr> <td>profile-do-change</td> <td>これはプロファイルが選択された後に発火 (<span style="color: green;">fire</span>) します。このイベントが起こるまではユーザ設定やブックマーク、プロファイルフォルダを使うもの全てにアクセスできないでしょう。このイベントはプロファイルの移行後に毎回起こります。 </td></tr> <tr> <td>profile-after-change</td> <td>これは profile-do-change の全てのオブサーバが通知された後に発火します。</td> </tr> <tr> <td>final-ui-startup</td> <td>アプリケーションの最初のウィンドウが表示される直前にトリガされます。</td> </tr> <tr> <td>sessionstore-windows-restored</td> <td> すべての初期ブラウザウィンドウが開かれたことを示すために、セッション復元処理によって送られます。この通知の後にはウィンドウは開かれ、chrome はロードされていますが、ウィンドウ内のタブはまだ復元中である可能性があることに注意してください。</td> </tr>
+</tbody></table>
+<p><br>
+<span id="Application_shutdown"></span>
+</p>
+<h3 id=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E7.B5.82.E4.BA.86" name=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E7.B5.82.E4.BA.86"> アプリケーションの終了 </h3>
+<p>これらは終了時に監視できる項目です (出現順に並んでいます)。
+</p>
+<table class="standard-table"> <tbody><tr> <th>項目</th> <th>説明</th> </tr> <tr> <td>quit-application-requested</td> <td>何かがアプリケーションの終了を要求したとき。この時点では終了を取り消すことができます。</td> </tr> <tr> <td>quit-application-granted</td> <td>全てのオブザーバが終了に同意した。</td> </tr> <tr> <td>quit-application</td> <td>アプリケーションがまさに終了しようとしている。</td> </tr> <tr> <td>profile-change-teardown</td> <td>終了の一部分で、この時点ではまだプロファイルのデータは利用可能です。</td> </tr> <tr> <td>profile-before-change</td> <td>プロファイルが失われる直前に呼ばれます。</td> </tr> <tr> <td>xpcom-shutdown</td> <td>これは終了です。この時点では大半のものは利用できないでしょう。</td> </tr>
+</tbody></table>
+<p><span id="IO_Notifications"></span>
+</p>
+<h3 id="IO_.E9.80.9A.E7.9F.A5" name="IO_.E9.80.9A.E7.9F.A5"> IO 通知 </h3>
+<p>これらの項目は IO サービスを監視して有用な情報を得るために使用します。
+</p>
+<table class="standard-table"> <tbody><tr> <th>項目</th> <th>説明</th> </tr> <tr> <td>offline-requested</td> <td>アプリケーションがオフライン状態に移行できるかどうかを問い合わせるために呼ばれます。オフラインへの移行はキャンセル可能です。<p></p><div class="note"><strong>註:</strong> あなたのコードがオフラインへの移行をキャンセルする場合には、<b>必ず</b>その旨をユーザに通知してください。</div><p></p></td> </tr> <tr> <td>network:offline-about-to-go-offline</td> <td>すべてのネットワーク IO がオフライン状態になる直前に呼ばれます。</td> </tr> <tr> <td>network:offline-status-changed</td> <td>オフライン状態が変更したときに呼ばれます。通知のデータ (<span style="color: green;">data</span>)は "offline" か "online" のどちらかで、新しい状態を示します。</td> </tr>
+</tbody></table>
+<p><span id="HTTP_requests"></span>
+</p>
+<h3 id="HTTP_.E3.83.AA.E3.82.AF.E3.82.A8.E3.82.B9.E3.83.88" name="HTTP_.E3.83.AA.E3.82.AF.E3.82.A8.E3.82.B9.E3.83.88"> HTTP リクエスト </h3>
+<p>これらは HTTP リクエストの間に監視できる項目です (<a href="ja/Setting_HTTP_request_headers">HTTP リクエストヘッダを設定する</a> と <a href="ja/Creating_Sandboxed_HTTP_Connections#HTTP_notifications">サンドボックス内の HTTP 接続を作成する</a> を参照してください)。両方ともサブジェクトパラメータとして <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpChannel" title="">nsIHttpChannel</a></code> が渡されます。
+</p>
+<table class="standard-table"> <tbody><tr> <th>項目</th> <th>説明</th> </tr> <tr> <td>http-on-modify-request</td> <td>http リクエストが作られたときに呼ばれます。通信路 (<span style="color: green;">channel</span>)はヘッダーなどの変更などが可能です。</td> </tr> <tr> <td>http-on-examine-response</td> <td>Web サーバからのレスポンスを受け取った後に呼ばれます。通信路上でヘッダーが利用可能です。</td> </tr>
+</tbody></table>
+<p><span id="Cookies"></span>
+</p>
+<h3 id="Cookie" name="Cookie"> Cookie </h3>
+<p>これらの項目は Cookie が変更 (追加、変更、クリア、もしくは削除) されたか、Cookie の設定がブラウザによって拒否されたことを示します。詳しくは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsICookieService" title="">nsICookieService</a></code> を参照して下さい。
+</p>
+<table class="standard-table"> <tbody><tr> <th>項目</th> <th>説明</th> </tr> <tr> <td>cookie-changed</td><td>Cookie が変更 (追加、変更、クリア、もしくは削除) された時に呼ばれます。</td> </tr> <tr> <td>cookie-rejected</td><td>Cookie の設定が (ユーザ設定に従って) ブラウザによって拒否された時に呼ばれます。</td> </tr>
+</tbody></table>
+<div class="noinclude">
+</div>
diff --git a/files/ja/archive/add-ons/session_store_api/index.html b/files/ja/archive/add-ons/session_store_api/index.html
new file mode 100644
index 0000000000..28f104aef8
--- /dev/null
+++ b/files/ja/archive/add-ons/session_store_api/index.html
@@ -0,0 +1,86 @@
+---
+title: Session store API
+slug: Archive/Add-ons/Session_store_API
+tags:
+ - Add-ons
+ - Extensions
+translation_of: Archive/Add-ons/Session_store_API
+---
+<p>
+セッションストアは、<a href="ja/Extensions">拡張機能</a>が Firefox のセッションを通して簡単にデータの保存と復元ができるようにするための新機能です。拡張機能からセッションストア機能を利用できるようにするためのシンプルな API があります。
+</p><p>拡張機能からセッションストア機能を利用することが重要であるようなシナリオ例: Firefox 2 では閉じたタブを元に戻すことができます。タブの復元時にあなたの拡張機能の状態を復元するためには、セッションストア API の <code>setTabValue()</code> メソッドを使って、状態を復元する際に必要となる何らかのデータを保存しておく必要があります。そして、タブが復元される時、 <code>getTabValue()</code> メソッドを呼び出してさきほど保存したデータを取得します。
+</p><p>セッションストア API は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISessionStore" title="">nsISessionStore</a></code> インターフェースを使って実装されています。
+</p>
+<h2 id=".E3.81.84.E3.81.A4.E5.BE.A9.E5.85.83.E3.81.95.E3.82.8C.E3.82.8B.E3.81.8B.E7.9F.A5.E3.82.8B" name=".E3.81.84.E3.81.A4.E5.BE.A9.E5.85.83.E3.81.95.E3.82.8C.E3.82.8B.E3.81.8B.E7.9F.A5.E3.82.8B">いつ復元されるか知る</h2>
+<p>Firefoxがタブを復元しようとするとき、 <code>SSTabRestoring</code> 型のイベントが発生します。もしあなたの拡張機能がタブを復元するときにデータの回復を必要とするなら、以下ようなイベントリスナを追加してください:
+</p>
+<pre>function myExtensionHandleRestore(aEvent) {
+ Components.classes["@mozilla.org/consoleservice;1"].
+ getService(Components.interfaces.nsIConsoleService).
+ logStringMessage("restored");
+};
+
+document.addEventListener("SSTabRestoring", myExtensionHandleRestore, false);
+</pre>
+<p>関数 <code>myExtensionHandleRestore()</code> を、タブが復元されたときに実行したい処理によって単純に置き換えてください。この例では <code><a href="ja/NsIConsoleService">nsIConsoleService</a></code> を使って<a href="ja/JavaScript_Console">console</a> にメッセージを表示させています。
+</p><p>SSTabRestoring 型イベントは、タブが復元される直前に発生します。<code>SSTabRestored</code> 型イベントは、個々のタブが復元されるたびに発生します。
+</p><p> タブが閉じられる前にタブに関連付けられたデータを更新するために、いつタブが閉じられようとしたかを検出するには、Firefox 3 以降なら、タブへ送られる "SSTabClosing" イベントを監視してください。
+</p>
+<h2 id=".E3.82.BB.E3.83.83.E3.82.B7.E3.83.A7.E3.83.B3.E5.BE.A9.E5.85.83.E5.87.A6.E7.90.86" name=".E3.82.BB.E3.83.83.E3.82.B7.E3.83.A7.E3.83.B3.E5.BE.A9.E5.85.83.E5.87.A6.E7.90.86">セッション復元処理</h2>
+<p>セッションが復元されるときに起こる処理の正確な流れは、以下のようになります:
+</p>
+<ol><li> セッション状態が復元されようとしています。これは Firefox 起動時か、あるいは「閉じたタブを元に戻す」機能に対する応答時に起こりえます。なぜなら、閉じられたタブはそれぞれ別のタブのセッションとして復元されるからです。
+</li><li> 必要に応じて(セッションストア内に保存された各ウィンドウについて)新しいウィンドウが開かれます。そして、 Cookie や最近閉じたタブのリストが復元されます。
+</li></ol>
+<p>その後、個々のタブの復元に対して以下の手順が踏まれます。
+</p>
+<ol><li> 既存のタブを再利用するか、あるいは新しいタブを生成するか。後者の場合、<code>TabOpen</code> イベントが発生します。
+</li><li> タブの永続化された XUL 属性(<code><a href="ja/NsISessionStore#persistTabAttribute.28.29">persistTabAttribute()</a></code> の呼び出しによって保存されたデータ)や、パーミッション<span style="color: darkgreen; background: #ef9;">【訳注: 画像やスクリプトなどの許可/不許可】</span>が復元されます。
+</li><li> <code>SSTabRestoring</code> イベントが発生します。
+</li><li> タブへ表示すべき URL の読み込みが開始されます。
+</li><li> ページの読み込みが完了したとき、テキスト入力欄やスクロール状態が復元されます。
+</li><li> 最後に、<code>SSTabRestored</code> イベントが発生します。
+</li></ol>
+<p>ページが読み込まれる前にパーミッションを変更するなどして復元対象のタブを制御したい場合、<code>SSTabRestoring</code> を監視します。
+ページの読み込みが完了した後に何らかの処理を行いたい場合、<code>SSTabRestored</code> を監視します。
+</p><p>両方のイベントはともに、個々のタブが復元されるたびに常に発生します。イベントの <code>originalTarget</code> フィールドを見れば、どのタブが復元されようとしているのかを知ることができます。
+</p><p>まずいくつのタブの復元が必要であるかを数え、そして <code>SSTabRestored</code> イベントの発生回数を数えることでもしない限りは、いつ最後のタブが復元されるのかを知る由はありません。
+</p>
+<h2 id=".E3.82.BB.E3.83.83.E3.82.B7.E3.83.A7.E3.83.B3.E3.82.B9.E3.83.88.E3.82.A2_API_.E3.82.92.E4.BD.BF.E3.81.86" name=".E3.82.BB.E3.83.83.E3.82.B7.E3.83.A7.E3.83.B3.E3.82.B9.E3.83.88.E3.82.A2_API_.E3.82.92.E4.BD.BF.E3.81.86">セッションストア API を使う</h2>
+<p>この章では、セッションストア API の使い方のシンプルな例をいくつか示します。
+</p>
+<h3 id=".E3.82.BF.E3.83.96.E3.81.AB.E5.80.A4.E3.82.92.E4.BF.9D.E5.AD.98.E3.81.99.E3.82.8B" name=".E3.82.BF.E3.83.96.E3.81.AB.E5.80.A4.E3.82.92.E4.BF.9D.E5.AD.98.E3.81.99.E3.82.8B">タブに値を保存する</h3>
+<p>次のコードでは、キー/値のペアをタブへ関連付けています<span style="color: darkgreen; background: #ef9;">【訳注: 原文は attach(取り付ける)】</span>。これによって、タブが復元されたときにそのペアが関連付けられたままになります。
+</p>
+<pre class="eval"> var ss = Components.classes["@mozilla.org/browser/sessionstore;1"].
+ getService(Components.interfaces.nsISessionStore);
+ var currentTab = getBrowser().selectedTab;
+ var dataToAttach = "I want to attach this";
+ ss.setTabValue(currentTab, "key-name-here", dataToAttach);
+</pre>
+<p>このコードは、 "key-name-here" というキーに対する値を <var>dataToAttach</var> へセットしています。<span style="color: darkgreen; background: #ef9;">【訳注: 文字列以外にも】</span>あらゆる JavaScript のオブジェクトをデータとして使用することができます。
+</p>
+<h3 id=".E4.BF.9D.E5.AD.98.E3.81.97.E3.81.9F.E5.80.A4.E3.82.92.E5.8F.96.E3.82.8A.E5.87.BA.E3.81.99" name=".E4.BF.9D.E5.AD.98.E3.81.97.E3.81.9F.E5.80.A4.E3.82.92.E5.8F.96.E3.82.8A.E5.87.BA.E3.81.99">保存した値を取り出す</h3>
+<p>タブへ関連付けられた値は、タブが復元される途中であるかどうかに関わらず、以下のようなコードによっていつでも取り出すことができます:
+</p>
+<pre class="eval"> var ss = Components.classes["@mozilla.org/browser/sessionstore;1"].
+ getService(Components.interfaces.nsISessionStore);
+ var currentTab = getBrowser().selectedTab;
+ var retrievedData = ss.getTabValue(currentTab, "key-name-here");
+</pre>
+<p>このコードを実行後、 <var>retrievedData</var> 変数は "key-name-here" キーに対する値を保持します。もしそのキー名に対する値が存在しなければ、 <var>retrievedData</var> は undefined となります。
+</p>
+<h3 id=".E3.82.BF.E3.83.96.E3.81.AB.E9.96.A2.E9.80.A3.E4.BB.98.E3.81.91.E3.82.89.E3.82.8C.E3.81.9F.E5.80.A4.E3.82.92.E5.89.8A.E9.99.A4.E3.81.99.E3.82.8B" name=".E3.82.BF.E3.83.96.E3.81.AB.E9.96.A2.E9.80.A3.E4.BB.98.E3.81.91.E3.82.89.E3.82.8C.E3.81.9F.E5.80.A4.E3.82.92.E5.89.8A.E9.99.A4.E3.81.99.E3.82.8B">タブに関連付けられた値を削除する</h3>
+<p>タブから値を削除するには、以下のようなコードを使ってください:
+</p>
+<pre class="eval"> var ss = Components.classes["@mozilla.org/browser/sessionstore;1"].
+ getService(Components.interfaces.nsISessionStore);
+ var currentTab = getBrowser().selectedTab;
+ ss.deleteTabValue(currentTab, "key-name-here");
+</pre>
+<h3 id=".E6.B3.A8.E9.87.88" name=".E6.B3.A8.E9.87.88">注釈</h3>
+<p>ウィンドウに対する値の保存と復元機能は、タブに対する機能と似たような関数名でまったく同様に動作します。
+</p>
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+<p><a href="ja/NsISessionStore">nsISessionStore</a>
+</p>
diff --git a/files/ja/archive/add-ons/signing_a_xpi/index.html b/files/ja/archive/add-ons/signing_a_xpi/index.html
new file mode 100644
index 0000000000..7c2d343cde
--- /dev/null
+++ b/files/ja/archive/add-ons/signing_a_xpi/index.html
@@ -0,0 +1,254 @@
+---
+title: Signing a XPI
+slug: Archive/Add-ons/Signing_a_XPI
+tags:
+ - Add-ons
+ - Extensions
+ - MDC Project
+ - NeedsMarkupWork
+ - XPInstall
+translation_of: Archive/Add-ons/Signing_an_XPI
+---
+<div class="note">
+ 注: このページには、自己署名証明書によるテスト方法も書かれています。実践的な手順は <a href="/ja/Signing_an_extension" title="ja/Signing_an_extension">拡張機能への署名</a> をご覧ください。</div>
+<p>この文書は <a class="external" href="http://forums.tjworld.net/viewtopic.php?p=210">オリジナル文書</a> の細かな整形を加えたミラーです。 (<a class="external" href="http://web.archive.org/web/20060529005859/forums.tjworld.net/viewtopic.php?p=210">Wayback Machine アーカイブ</a>)</p>
+<p>この文書では、Firefox 拡張に Windows 上でコード署名をする方法を解説しています。<strong>MozDev グループの Pete Collins</strong> による linux での解説 <a class="link-https" href="https://www.mozdevgroup.com/docs/pete/Signing-an-XPI.html">So you want to sign your XPI package?</a> を元にしています。</p>
+<p>1. 最新の <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/index.html#Documentation">Network Security Services (NSS)</a> パッケージを Mozilla FTP サイト <code><a class="link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/" rel="freelink">ftp://ftp.mozilla.org/pub/mozilla.or.../nss/releases/</a></code> からダウンロードする。Windows 向けには、<code><strong>NSS_3_9_RTM/WINNT5.0_OPT.OBJ/</strong></code> フォルダの <code><strong>nss-3.9.zip</strong></code> パッケージが利用できます。</p>
+<p>2. アーカイブをローカルのフォルダーに解凍する。たとえば、<code>C:\Apps\nss-3.9\</code> へ。</p>
+<p>3. 最新の <a class="external" href="/http://http://www.mozilla.org/projects/nspr" title="http://http://www.mozilla.org/projects/nspr">Netscape Portable Runtime</a> パッケージ を Mozilla FTP サイト <code><a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/" rel="freelink">http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/</a></code> からダウンロードする。Windows 向けには、<code><strong>v4.6/WINNT5.0_OPT.OBJ/</strong></code> フォルダの <strong>nspr-4.6.zip</strong> パッケージです。</p>
+<p>4. アーカイブをローカルのフォルダーに解凍する。たとえば、<code>C:\Apps\nspr-4.6\</code> へ。</p>
+<p>5. NSS ツールの <strong>bin/</strong> と <strong>lib/</strong>、そして NSPR <strong>lib</strong> ディレクトリをシステムパスに追加します。この設定は、コントロールパネル -&gt; システム -&gt; 詳細設定 -&gt; 環境変数 -&gt; システム環境変数、の画面で、もしくは (バッチファイル用と思われる) コマンドラインツールを実行することで設定できます。Windows はシステムディレクトリに certutil.exe といった同じ名前のファイルを持ちますので、追加するディレクトリは PATH の先頭に加えることを忘れないでください。</p>
+<pre>C:\&gt; set PATH=&lt;b&gt;C:\Apps\nss-3.9\bin\;C:\Apps\nss-3.9\lib\;C:\Apps\nspr-4.6\lib\;&lt;/b&gt;%PATH%
+</pre>
+<p>6. <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tools/">NSS Tools の文書</a> を読んでください</p>
+<p>7. 証明書データベースを初期化します。証明書データベースをどのディレクトリに作成するかを決めて、そのディレクトリで次のコマンドを実行してください。(<strong>注</strong> 最後のドットを忘れないように)</p>
+<pre>C:\Projects\CodeSigning\&gt; certutil -N -d .
+</pre>
+<p>最後の <strong>ドット</strong> はデータベースを <strong>現在のディレクトリ</strong> に作成することを意味します。</p>
+<p><em>NSS 証明書データベースのパスワード</em> を聞かれますが、<strong>忘れないように!</strong></p>
+<pre>C:\Projects\CodeSigning\&gt; certutil -N -d .
+Enter a password which will be used to encrypt your keys.
+The password should be at least 8 characters long,
+and should contain at least one non-alphabetic character.
+
+Enter new password:
+Re-enter password:
+</pre>
+<p>8. テスト証明書を作成します。-p オプションで証明書のパスワードを設定できます。</p>
+<pre>C:\Projects\CodeSigning\&gt; signtool -G myTestCert -d . -p"password"
+using certificate directory: .
+
+WARNING: Performing this operation while the browser is running could cause
+corruption of your security databases. If the browser is currently running,
+you should exit the browser before continuing this operation. Enter
+"y" to continue, or anything else to abort: y
+
+
+Enter certificate information. All fields are optional. Acceptable
+characters are numbers, letters, spaces, and apostrophes.
+certificate common name: XPI Test
+organization: TJworld
+organization unit: Software
+state or province: Nottingham
+country (must be exactly 2 characters): GB
+username: tj
+email address: certificates@lan.tjworld.net
+generated public/private key pair
+certificate request generated
+certificate has been signed
+certificate "myTestCert" added to database
+Exported certificate to x509.raw and x509.cacert.
+</pre>
+<p><strong>x509.cacert</strong> は XPI パッケージに署名するために利用します。ファイルシステムと証明書データベースに存在するかを確認しましょう。</p>
+<pre>C:\Projects\CodeSigning\&gt; dir x509*
+
+14/12/2005 15:13 1,031 x509.cacert
+14/12/2005 15:13 798 x509.raw
+
+C:\Projects\CodeSigning\&gt; certutil -d . -L
+myTestCert u,u,Cu
+</pre>
+<p>8. 署名する XPI ファイルを準備する</p>
+<p>署名するためのフォルダーを準備し、XPI をそこにコピーし、unzip<sup>*</sup> してください。そして、XPI を削除し、証明書データベースフォルダーに戻ります。</p>
+<p><sup>*</sup>zip ユーティリティーがシステムパスにあると想定しています。このサンプルでは、<strong>CygWin bin/zip.exe</strong> ツールを利用しています。内部のサブディレクトリ構造をきちんと取り扱えるグラフィカルな Zip ツールも利用可能です。ただし、<font color="red"><strong>7-Zip は正常に動作しません</strong></font>。これは、ディレクトリをアルファベット順に並べ替えるからで、<font color="red"><strong><em>Mozilla は最初のエントリが META-INF/zigbert.rsa</em></strong></font> であることを要求します。</p>
+<pre>C:\Projects\CodeSigning\&gt; md signed
+
+C:\Projects\CodeSigning\&gt; copy C:\Projects\fsb\fsb.xpi signed
+ 1 file(s) copied.
+
+C:\Projects\CodeSigning\&gt; cd signed
+
+C:\Projects\CodeSigning\signed&gt; unzip fsb.xpi
+Archive: fsb.xpi
+ creating: chrome/
+ inflating: chrome.manifest
+ inflating: chrome/fsb.jar
+ inflating: install.rdf
+
+C:\Projects\CodeSigning\signed&gt; del fsb.xpi
+
+C:\Projects\CodeSigning\signed&gt; cd ..
+</pre>
+<p>9. XPI に署名する</p>
+<pre>C:\Projects\CodeSigning\&gt; signtool -d . -k myTestCert -p "password" signed/
+using certificate directory: .
+Generating signed//META-INF/manifest.mf file..
+--&gt; chrome/fsb.jar
+--&gt; chrome.manifest
+--&gt; install.rdf
+Generating zigbert.sf file..
+tree "signed/" signed successfully
+</pre>
+<p>10. XPI を再パッケージする</p>
+<p><strong>signed/</strong> フォルダーへ移動し、新しい zip アーカイブを <strong>META-INF/zigbert.rsa</strong> ファイルが先頭になるように作成し、他のファイルを追加します。</p>
+<pre>C:\Projects\Certs\&gt; cd signed
+
+C:\Projects\CodeSigning\signed\&gt; zip fsb.xpi META-INF/zigbert.rsa
+ adding: META-INF/zigbert.rsa (deflated 35%)
+
+C:\Projects\CodeSigning\signed&gt; zip -r -D fsb.xpi * -x META-INF/zigbert.rsa
+ adding: META-INF/manifest.mf (deflated 37%)
+ adding: META-INF/zigbert.sf (deflated 40%)
+ adding: chrome/fsb.jar (deflated 74%)
+ adding: chrome.manifest (deflated 69%)
+ adding: install.rdf (deflated 62%)
+</pre>
+<p>11. あなたの Mozilla ブラウザにテスト証明書を一時的にインストールします</p>
+<p>先に作った <strong>x509.cacert</strong> ファイルを <strong>x509.<font color="red">cert</font></strong> に変更します。</p>
+<p>Mozilla Firefox にソフト開発証明書発行者としてインポートします。<font color="red">試験が終わったら、必ず Mozilla Firefox から証明書を削除してください</font></p>
+<p>Firefox 1.5: From the Tools menu choose Options-&gt;Advanced-&gt;Security-&gt;View Certificates-&gt;Authorities</p>
+<p>Firefox 1.0: From the Tools menu choose Options-&gt;Advanced-&gt;Certificates-&gt;Manage Certificates-&gt;Authorities</p>
+<p>そして、<strong>インポート</strong> ボタンをクリックしてください。</p>
+<p><strong>x509.cert</strong> を含むフォルダーへ移動し、選択してください。</p>
+<p><strong>証明書のダウンロード</strong> ダイアログでは、<strong>ソフトウェア開発のためにこの認証局を承認する</strong> を選択し、必要があれば <strong>View</strong> ボタンでより詳細に証明書を確認してください。</p>
+<p><strong>OK</strong> ボタンをクリックすれば、あなたの新しい証明書が認証局リストにはいります。</p>
+<p>12. 署名済み拡張をインストールする</p>
+<p>署名済みの XPI をブラウザにドラッグ・ドロップするか、ダウンロードしてください。Mozilla Firefox <strong>ソフトウェアインストール</strong> ダイアログに、署名に利用した証明書の <strong>組織名</strong> が、通常 <strong><em><font color="red">署名無し</font></em></strong> と表示されるところに表示されます。</p>
+<p><a class="external" href="http://forums.tjworld.net/files/topic-130-install-signed-xpi.png">画像</a></p>
+<p>13. 有効なソフトウェア開発者の証明書を取得する</p>
+<p>ここまでで全ての手順がうまく行くことが確認できましたので、NSS 証明書データベースに本物のソフトウェア開発者証明書を導入して、XPI の署名に利用します。キーとなる 3 つの違い - 可用性、値段、同一性確認 - のあるソフトウェア開発者向け証明書の発行者がいくつかあります。</p>
+<p>ばかげたことに、ほとんどの発行者はソフトウェア開発者証明書を個人には発行していませんので、Mozilla Firefox に CA ルート証明書が組み込まれている発行者を発見するのは困難かもしれません。証明書発行者の CA ルート証明書が Mozilla Firefox になければ、拡張を導入しようとしているユーザにおいてあなたの証明書の有効性は検証されません。理想としてあなたが全ての主要なプラットフォーム (Microsoft Windows, Sun Java, Mozilla/Netscape Firefox/Navigator, Opera) にインストールされているルート CA を持つ証明書があれば、あなたのソフトウェアへの署名に一つの証明書だけで可能になり、プラットフォームは関係なくなります。</p>
+<p>もっとも安価な、広くサポートされている (Mozilla, Java, Microsoft) 証明書は、Comodo Instant-SSL が提供していると思われます。<strong>オープンソース開発者向けに無料の証明書</strong> が Unizeto Certum から提供されていますが、ルート証明書は Mozilla Firefox と Opera にしかありません。(Java や Microsoft にはありません。)</p>
+<p>次にあげるものが現在利用可能と思われる発行者です</p>
+<ul>
+ <li>Comodo Instant-SSL Code Signing</li>
+ <li>Digi-Sign Digi-Code</li>
+ <li>GeoTrust Code Signing</li>
+ <li>Thawte Code Signing (owned by Verisign)</li>
+ <li>Unizeto Certum Code-signing (<strong>オープンソース開発者向けの無料証明書</strong>) <font color="red">* 2005/12/14 では Mozilla Firefox と Opera でのみ</font></li>
+ <li>Verisign Code Signing</li>
+</ul>
+<p><strong>コード署名証明書</strong> に申し込みをし、発行者の発行対象確認手続きを経る必要があります。その後、書名付きの証明書が発行されます。書名付き証明書を受け取ったら、あなたの証明書データベースにインポートしなければなりません。</p>
+<p><font color="red">あなたのブラウザは新しい秘密鍵と <strong>CSR - コード署名要求</strong> をバックグラウンドで生成しますが、あなたが気づくとは限りません。CSR は発行者に送信されます。後で、鍵と証明書をペアにする必要があるので、新しい証明書を同じブラウザにインストールする <strong>必要があります&lt;b&gt; 。 </strong></font></p>
+<p>&lt;b&gt;Hint: 証明書発行者に要請する際には、<strong>Organization (O)</strong> があなたの名前になっており、発行者の既定の文字列で無いことを確認してください。この文字列がユーザに表示されます。</p>
+<p>このガイドでは、Unizeto Certum の無料証明書を利用しました。要請手順が終わったあと、自分についての詳細をオンラインで送信しました。そして、photo-ID かそれに似た形態の ID を文書証明として要求する自動メールを受け取りました。これに対して、自分のパスポートと運転免許証の高解像度のスキャン画像をこういった目的について持っていたので、自分のウェブサーバの非公開の場所において、Unizeto Certum に詳細とともに連絡しました。数時間の後、人間が読める ID の画像と証明書ダウンロードの URL が送られてきました。</p>
+<p><font color="red"><strong>Mozilla Firefox に証明書をインストールし</strong> (先に作成した秘密鍵と一緒に)</font>、表示される <strong>認証文字列</strong> を新しいファイルにコピー・ペーストしてください。ファイル名は <strong><code>C:\Projects\CodeSigning\Certum Code Signing.cer</code></strong> です。</p>
+<p>14. あなたの実際の証明書をインストールする</p>
+<p>コード署名 NSS 証明書データベースに新しい証明書をインストールするには2段階の手順が必要です。</p>
+<pre class="eval"> 1. 発行者の CA ルート証明書をインストールする
+ 2. あなたの鍵と証明書をインストールする
+</pre>
+<p>ルート CA はあなたの証明書の認証に必要です。多くの発行者は複数のルート CA をさまざまな認証レベルに対して持っています。あなたがダウンロードした証明書がそのうちのどれを利用しているか確認してください。証明書を Mozilla Firefox で表示することで詳細をみることができますので、<strong>発行者 CN</strong> から情報を得てください。(Unizeto Certum の無料証明書の場合は、Certum Level I です)</p>
+<p>ルート CA とあなたの証明書に署名するのに発行者が利用した中間証明書をダウンロードします。発行者のウェブサイトにルート CA と公開証明書へのリンクがあるでしょう。(<a class="link-https" href="https://www.certum.pl/english/eng/products/keys/index.html">Certum の公開鍵ページ</a>) <strong>Certum Root CA</strong> と <strong>Certum Level I Digital ID for WWW and SLS/TLS Servers</strong> をダウンロードし、その文字列を <code><strong>C:\Projects\CodeSigning\Certum Root CA.cer</strong></code> と <code><strong>C:\Projects\CodeSigning\Certum Level I.cer</strong></code> に保存しました。</p>
+<p>コード署名用フォルダーでコマンドプロンプトを開き (手順 5 での NSS ツールへのパスがちゃんと通っているかを確認してください)、正しく追加されているかを確認してください。</p>
+<pre>C:\Projects\CodeSigning&gt; certutil -A -n "Certum Root CA" -t "TC,TC,TC" -d . -i "Certum Root CA.cer"
+
+C:\Projects\CodeSigning&gt; certutil -A -n "Certum Level I" -t "c,c,C" -d . -i "Certum Level I.cer"
+
+C:\Projects\CodeSigning&gt; certutil -L -d .
+myTestCert u,u,Cu
+Certum Root CA CT,C,C
+Certum Level I CT,C,C
+</pre>
+<p>Mozilla Firefox の証明書ストアでの新しく発行された証明書の名前は覚えるのに簡単で無いエイリアスを示すので、ここで名前を変更するための追加の手順を示します。(残念なことに、変更手順は簡単なものではありません。)</p>
+<p>名前をみるには、手順 II で述べた Mozilla Firefox の証明書マネージャーを表示し、<strong>あなたの証明書</strong> を選びます。そして、新しい証明書を選択し、<strong>表示</strong> で <strong>詳細</strong> を選択し、<strong>証明書のフィールド</strong> のツリービューの先頭を見てください。</p>
+<p>わたしの Unizeto Certum の証明書では "TJ's Unizeto Sp. z o.o. ID" となっていますが、"Code Signing (Certum)" としたいと思います。</p>
+<p>このトリックは、証明書を鍵無しでインストールしニックネームを設定します。その後 Mozilla Firefox から鍵と証明書のペアをインポートしたとき、秘密鍵が証明書に追加されますが、名前はそのままになります。</p>
+<pre>C:\Projects\CodeSigning&gt; certutil -A -n "Code Signing (Certum)" -t "u,u,u" -d . -i "Certum Code Signing.cer"
+
+C:\Projects\CodeSigning&gt; certutil -L -d .
+myTestCert u,u,Cu
+Certum Root CA CT,C,C
+Certum Level I CT,C,C
+Code Signing (Certum) ,,
+
+C:\Projects\CodeSigning&gt; signtool -l -d .
+using certificate directory: .
+
+Object signing certificates
+---------------------------------------
+myTestCert
+ Issued by: myTestCert (XPI Test)
+ Expires: Tue Mar 14, 2006
+Code Signing (Certum)
+ Issued by: Certum Level I (Certum Level I)
+ Expires: Tue Mar 14, 2006
+---------------------------------------
+For a list including CA's, use "signtool -L"
+</pre>
+<p>ここで、新しい鍵と証明書のペアを Mozilla Firefox の証明書データベースからエクスポートし、NSS 証明書データベースへ入れます。</p>
+<p>もっとも困難な部分は、Mozilla の鍵データベースの場所です。<strong>key3.db</strong> と <strong>cert8.db</strong> の二つのファイルからなります。通常、Mozilla Firefox の <strong>ユーザプロファイルフォルダー</strong> にあり、わたしのところでは <code><strong>C:\Documents and Settings\TJ\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\</strong></code> でした。(xxxxxxxx はランダム文字列)</p>
+<p><font color="red">この手順は、手順 13 で、新しい証明書を Mozilla Firefox にインストールしているものと仮定しています。</font></p>
+<p>ファイルへエクスポート、コード署名データベースへインポート、そして署名属性 (u,u,u) を確認するコマンドが必要です。以下では証明書のニックネームと Mozilla Firefox の鍵データベースの場所にわたしのではなく自分のものを利用しなければならないことに気をつけてください。</p>
+<pre>C:\Projects\CodeSigning&gt; pk12util -o "Certum Code Signing.pkcs12" -n "TJ's Unizeto Sp. z o.o. ID" -d "C:\Documents and Settings\TJ\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default"
+Enter password for PKCS12 file:
+Re-enter password:
+pk12util: PKCS12 EXPORT SUCCESSFUL
+
+C:\Projects\CodeSigning&gt; pk12util -i "Certum Code Signing.pkcs12" -d .
+Enter Password or Pin for "NSS Certificate DB":
+Enter password for PKCS12 file:
+pk12util: PKCS12 IMPORT SUCCESSFUL
+
+C:\Projects\CodeSigning&gt; certutil -L -d .
+myTestCert u,u,Cu
+Certum Root CA CT,C,C
+Certum Level I c,c,C
+Code Signing (Certum) u,u,u
+</pre>
+<p>既存の証明書がアップデートされたという通知を見るはずです。</p>
+<p>15. あなたの実際の証明書に署名する</p>
+<p>これは、手順 8, 9, 10 を実際の証明書で繰り返すときの詳細です。試験ディレクトリでの出力は以下のとおり</p>
+<pre>C:\Projects\CodeSigning&gt;signtool -d . -k "Code Signing (Certum)" -p ******* test
+using certificate directory: .
+Generating test/META-INF/manifest.mf file..
+--&gt; test.txt
+Generating zigbert.sf file..
+tree "test" signed successfully
+</pre>
+<p><font color="red"><strong>警告:</strong> 現在の NSS signtool では署名した証明書 (zigbert.rsa) には証明書チェーンを<strong>含みません</strong>。これは、Firefox は <strong>Certum Level I</strong> のような中間認証局で署名された証明書による署名されたコードのインストールを、先に中間証明書を Firefox にインストールしておかなければ拒否することを意味します。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=322603" title="FIXED: Support easy linking to bugs from the wiki.">バグ 322603</a> にて NSS チームはコード署名に利用する証明書チェーンを利用する方法を探しています。さまざまな人が望むこの機能を NSS チームが実装できるように、何かコメントがありましたら投稿してください。</font></p>
+<p>16. ビルドプロセスで署名を行う</p>
+<p>これらの手順を拡張のビルドプロセス中で行おうと考えるでしょう。<strong>build.bat</strong> ファイルを jar や xpi ファイルを作成する手順の自動化に利用しています。このサンプルは CygWin の bin/zip.exe を必要とします。</p>
+<p><strong>build.bat</strong> は拡張のルートフォルダーに保存されます。たとえば</p>
+<pre class="eval">/dev/fsb/<strong>build.bat</strong>
+/dev/fsb/install.rdf
+/dev/fsb/chrome.manifest
+/dev/fsb/chrome/
+/dev/fsb/chrome/content/
+/dev/fsb/chrome/locale/
+/dev/fsb/chrome/skin/
+</pre>
+<p>コード署名の手順 (バッチファイル) は以下のとおりです</p>
+<pre>@echo off
+set x=%cd%
+echo Building %x%.xpi ...
+echo Started at %DATE% %TIME% &gt; %x%\build.log
+md build\chrome
+cd chrome
+zip -r -0 "%x%.jar" * &gt;&gt; %x%\build.log
+move "%x%.jar" ..\build\chrome &gt;&gt; %x%\build.log
+cd ..
+copy install.rdf build &gt;&gt; %x%\build.log
+copy chrome.manifest build &gt;&gt;%x%\build.log
+signtool.exe -d C:\Projects\CodeSigning -k "Code Signing (Certum)" -p "password" build/ &gt;&gt; %x%\build.log
+cd build
+zip "%x%.xpi" META-INF/zigbert.rsa &gt;&gt; %x%\build.log
+zip -r -D "%x%.xpi" * -x META-INF/zigbert.rsa &gt;&gt; %x%\build.log
+rem copy "%x%.xpi" ..\..\..\http\fsb.xpi &gt;&gt; %x%\build.log
+move "%x%.xpi" ..\ &gt;&gt; %x%\build.log
+cd ..
+rd build /s/q
+echo Done.
+
+&lt;b&gt;password&lt;/b&gt; をあなたの NSS 証明書データベースのパスワードに変更するのを忘れないでください。
+</pre>
diff --git a/files/ja/archive/add-ons/signing_an_extension/index.html b/files/ja/archive/add-ons/signing_an_extension/index.html
new file mode 100644
index 0000000000..d9417b9e19
--- /dev/null
+++ b/files/ja/archive/add-ons/signing_an_extension/index.html
@@ -0,0 +1,62 @@
+---
+title: 拡張機能への署名
+slug: Archive/Add-ons/Signing_an_extension
+tags:
+ - Add-ons
+ - Administration
+ - Extensions
+ - Themes
+ - XPInstall
+ - enterprise
+translation_of: Archive/Add-ons/Signing_an_extension
+---
+<p>この記事では、Object Signing 対応コードサイニング証明書を利用して、Firefox や Thunderbird の<a href="/ja/Extensions" title="ja/Extensions">拡張機能</a>にデジタル署名を付ける方法について説明します。なお、以下の手順は、<a href="/ja/Themes" title="ja/Themes">テーマ</a>など他の <a href="/ja/XPI" title="ja/XPI">XPI</a> ファイルにも当てはまります。</p>
+<p>ここで説明する手順は、Mac を使用し、既に認証局から正規の証明書を取得していることを前提としています。</p>
+<h2 id="署名ツールの入手">署名ツールの入手</h2>
+<p>署名には <a href="/ja/NSS" title="ja/NSS">NSS</a> を使用します。これは <a class="external" href="http://www.macports.org/">MacPorts</a> で簡単にインストールできます。</p>
+<pre>sudo port install nss</pre>
+<h2 id="証明書のエクスポート">証明書のエクスポート</h2>
+<p>証明書が Firefox にインストールされている場合は、以下の手順でエクスポートします。筆者がベリサインから購入した証明書は Windows 版 Firefox へ直接インストールされました。</p>
+<ol> <li>[Firefox] ボタンをクリックし、[オプション] を選択します。</li> <li>オプション画面が開いたら、[詳細] パネルを開き、[暗号化] タブを選択します。</li> <li>[証明書を表示] ボタンをクリックします。</li> <li>証明書マネージャが開いたら、[あなたの証明書] タブを選択します。</li> <li>自分の組織の証明書を選択して [バックアップ] ボタンをクリックします。</li> <li>ファイル名を入力します。例「<code>codesign.p12</code>」</li> <li>証明書のバックアップファイルを保護するパスワードを入力し、[OK] ボタンをクリックします。</li> <li>デスクトップに P12 ファイルがエクスポートされます。</li>
+</ol>
+<h2 id="証明書データベースの作成">証明書データベースの作成</h2>
+<p>署名をするには、まず証明書データベースを作成する必要があります。</p>
+<pre>mkdir keystore
+cd keystore
+nss-certutil -N -d .</pre>
+<p>パスワードを聞かれますので、強固なパスワードを設定します。これで <code>cert8.db</code>、<code>key3.db</code>、<code>secmod.db</code> が作成されます。次に、上でエクスポートした証明書をインポートします。</p>
+<pre>nss-pk12util -i codesign.p12 -d .</pre>
+<p>データベース内の証明書を確認します。</p>
+<pre>nss-certutil -L -d .</pre>
+<p>ルート証明書と中間証明書の信頼を設定します。これはベリサインの例です。</p>
+<pre>nss-certutil -M -n "Verisign Class 3 Public Primary Certification Authority" -t "C,C,C" -d .
+nss-certutil -M -n "VeriSign Class 3 Public Primary Certification Authority - G5 - VeriSign, Inc." -t "C,C,C" -d .
+nss-certutil -M -n "VeriSign Class 3 Code Signing 2010 CA - VeriSign, Inc." -t "C,C,C" -d .</pre>
+<p>これでデータベースの準備は完了です。</p>
+<h2 id="署名">署名</h2>
+<p>署名ツールの基本的な使い方は以下の通りです。</p>
+<pre>nss-signtool \
+ -d (証明書データベースファイルを含むディレクトリへのパス) \
+ -k (証明書のニックネーム) \
+ -p (証明書のパスワード) \
+ -X -Z (署名済みファイルの出力先パス+ファイル名) \
+ (<strong>chrome</strong> ディレクトリ、<strong>chrome.manifest</strong> ファイル、<strong>install.rdf</strong>
+ ファイルなどを含む拡張機能の作業ディレクトリへのパス)
+</pre>
+<p>パスワードを直接スクリプトに記述するのは危険ですので、実際には以下のように使うと良いでしょう。</p>
+<pre>echo "Enter password for Object Signing:"
+read MYPASSWORD
+nss-signtool \
+ -d <em>/Volumes/Codesign/keystore</em> \
+ -k "<em>My Company の VeriSign, Inc. ID</em>" \
+ -p $MYPASSWORD \
+ -X -Z <em>~/Desktop/MyExtension/dest/MyExtension-1.0.xpi</em> \
+ <em>~/Desktop/MyExtension/source</em>
+unset MYPASSWORD</pre>
+<p>これで署名付き XPI ファイルが生成されます。</p>
+<h2 id="確認">確認</h2>
+<p>XPI ファイルを Firefox のコンテンツエリアにドラッグ&ドロップして、インストールダイアログを表示します。ファイル名とともに、あなたの組織名が表示されているはずです。</p>
+<h2 id="参考資料">参考資料</h2>
+<ul> <li><a href="/ja/Signing_a_XPI" title="ja/Signing_a_XPI">Signing a XPI</a> - テスト手順も含めた詳しい解説です。</li> <li><a class="link-https" href="https://addons.mozilla.org/ja/firefox/addon/4471">Key Manager</a> - XPI への署名機能を備えた Firefox の拡張機能</li> <li><a class="external" href="http://oyoy.eu/huh/firefox-extension-code-signed-with-spc-pvk/">Signing a Firefox extension with a Windows Authenticode SSL certificate / key</a> - 認証局 (CA) によっては、Authenticode 証明書を Object Signing に転用することを許可 (あるいはサポート) していない場合がありますので、注意が必要です。必ず利用規約を確認してください。</li> <li><a href="/ja/Signing_an_executable_with_Authenticode" title="ja/Signing_an_executable_with_Authenticode">Authenticode による実行ファイルへの署名</a> - 実行ファイル (exe) への署名手順はこちらを参照してください。</li>
+</ul>
+<p></p>
diff --git a/files/ja/archive/add-ons/supporting_search_suggestions_in_search_plugins/index.html b/files/ja/archive/add-ons/supporting_search_suggestions_in_search_plugins/index.html
new file mode 100644
index 0000000000..536b8adbb5
--- /dev/null
+++ b/files/ja/archive/add-ons/supporting_search_suggestions_in_search_plugins/index.html
@@ -0,0 +1,39 @@
+---
+title: Supporting search suggestions in search plugins
+slug: Archive/Add-ons/Supporting_search_suggestions_in_search_plugins
+tags:
+ - Add-ons
+ - Search plugins
+translation_of: Archive/Add-ons/Supporting_search_suggestions_in_search_plugins
+---
+<p>MozSearch は、サーチサジェスト (検索提案, <em>search suggestions</em>) をサポートします。 利用者が検索バーに入力することで、<a href="/ja/Firefox_2_for_developers" title="ja/Firefox_2_for_developers">Firefox 2</a> は検索プラグインに指定されたオンラインサーチサジェストの URL に問い合わせます。</p>
+<p>リストを取得すると、検索バーの下側にポップアップボックスを表示し、ユーザは提案された検索後から選択することができます。もし、ユーザが入力を続ければ、新しいサジェストをサーチエンジンに要求し、表示リストを更新します。</p>
+<p>Firefox 2 に含まれている Yahoo と Google 検索プラグインはサーチサジェストをサポートしています。</p>
+<p><span id="Implementing_suggestion_support_in_the_search_plugin"></span></p>
+<h2 id=".E6.A4.9C.E7.B4.A2.E3.83.97.E3.83.A9.E3.82.B0.E3.82.A4.E3.83.B3.E3.81.AB.E3.82.B5.E3.83.BC.E3.83.81.E3.82.B5.E3.82.B8.E3.82.A7.E3.82.B9.E3.83.88.E3.82.92.E5.AE.9F.E8.A3.85.E3.81.99.E3.82.8B" name=".E6.A4.9C.E7.B4.A2.E3.83.97.E3.83.A9.E3.82.B0.E3.82.A4.E3.83.B3.E3.81.AB.E3.82.B5.E3.83.BC.E3.83.81.E3.82.B5.E3.82.B8.E3.82.A7.E3.82.B9.E3.83.88.E3.82.92.E5.AE.9F.E8.A3.85.E3.81.99.E3.82.8B">検索プラグインにサーチサジェストを実装する</h2>
+<p>サーチサジェストをサポートするには、検索プラグインは <code>type</code> アトリビュートが <code>"application/x-suggestions+json"</code> である追加の <code>&lt;Url&gt;</code> エレメントを定義する必要があります。(これは、サジェストをサポートする検索プラグインは、二つの <code>&lt;Url&gt;</code> エレメントを持つことを意味します。もうひとつは、検索 URL を示す <code>text/html</code> のエレメントです。)</p>
+<p>たとえば、Yahoo 検索プラグインはこのような <code>&lt;Url&gt;</code> エントリを持ちます。</p>
+<pre>&lt;Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;command={searchTerms}"/&gt;
+</pre>
+<p>ユーザが "fir" を検索バーに入力し、一時休止すると、Firefox は "fir" を <code>{searchTerms}</code> へ挿入し URL へアクセスします。</p>
+<pre>&lt;Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;command=fir"/&gt;
+</pre>
+<p>応答は、リストボックスの提案を表示するのに利用されます。</p>
+<p>検索プラグインに実装する方法についての詳細は、<a href="/ja/Creating_MozSearch_plugins" title="ja/Creating_MozSearch_plugins">Creating MozSearch plugins</a> を参照してください。</p>
+<p><span id="Implementing_search_suggestion_support_on_the_server"></span></p>
+<h2 id=".E3.82.B5.E3.83.BC.E3.83.90.E3.81.AB.E3.82.B5.E3.83.BC.E3.83.81.E3.82.B5.E3.82.B8.E3.82.A7.E3.82.B9.E3.83.88.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.82.92.E5.AE.9F.E8.A3.85.E3.81.99.E3.82.8B" name=".E3.82.B5.E3.83.BC.E3.83.90.E3.81.AB.E3.82.B5.E3.83.BC.E3.83.81.E3.82.B5.E3.82.B8.E3.82.A7.E3.82.B9.E3.83.88.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.82.92.E5.AE.9F.E8.A3.85.E3.81.99.E3.82.8B">サーバにサーチサジェストサポートを実装する</h2>
+<p>実際のところ、サーチサジェストの大半の動作は、サーバ側に実装されています。もし、あなたがウェブサイトデザイナで、サーチサジェストをサポートしたいなら、与えられた検索語に対して <a class="external" href="http://www.json.org/">JavaScript Object Notation</a> (JSON) 形式でサジェスト内容を返すように実装する必要があります。</p>
+<p>ブラウザが検索語に合致するリストを要求しようとするとき、HTTP GET リクエストを <code>&lt;Url&gt;</code> エレメントで指定された URL に送ります。</p>
+<p>あなたのサーバは、与えられた文字列に当てはまるサジェストがなにであるかを決定し、最低でも二つ、最大で四つのエレメントを含む JSON 配列を構築する必要があります。</p>
+<dl><dt> <strong>検索語</strong> </dt><dd> 配列の最初のエレメントはオリジナルの検索語です。Firefox はこれを利用して現在の検索語と合致しているか確認します。 </dd></dl> <dl><dt> <strong>候補リスト</strong> </dt><dd> 提案される検索後の配列です。この配列は、角括弧で囲まれているべきです。たとえば、<code>["語 1", "語 2", "語 3", "語 4"]</code> </dd></dl> <dl><dt> <strong>説明</strong> </dt><dd> オプションのエレメントで、 <strong>候補リスト</strong> にある提案された検索語に対する解説の配列です。取得可能な検索件数などといった、検索エンジンがブラウザで表示させたい追加の情報です。 </dd></dl>
+<div class="note">説明は Firefox 2 ではサポートされておらず、指定されても無視されます。</div>
+<dl><dt> <strong>検索 URL</strong> </dt><dd> このオプションエレメントは、<em>候補リスト</em> での提案語の代替 URL の配列です。たとえば、もし、検索語に対して、検索結果のページではなく、マップリンクなどを提供したい場合に、この配列に URL を入れて返すことができます。 </dd></dl> <dl><dd> もし、検索 URL を指定しないなら、検索プラグインの XML で述べたように <code>&lt;Url&gt;</code> エレメントを元にしてクエリを作成します。 </dd></dl>
+<div class="note">検索 URL は Firefox 2 ではサポートされておらず、無視されます。<br>
+This enhancement request - the handling of a selected suggestion, namely calling of a full specified URL as <a class="external" href="http://www.opensearch.org/Specifications/OpenSearch/Extensions/Suggestions/1.0#Query_URLs">proposed in the opensearch standard</a> - is tracked in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=386591" title='Support "result URLs" for search suggestion results (OpenSearch)'>バグ 386591</a>.</div>
+<p>たとえば、"fir" が検索語で、説明も代替検索 URL も必要ないならば、返す JSON は次のようになります。</p>
+<pre class="eval">["fir", ["firefox", "first choice", "mozilla firefox"]]
+</pre>
+<p>このサンプルでは、検索語と候補リストのみが指定されて、オプションエレメントは入っていません。</p>
+<p>候補リストは、必要なだけ入れることが出来ますが、表示されるリストはユーザが検索文字列を入力するたびにアップデートされるため、扱いやすい数にとどめておくべきです。さらに言えば、サジェスト内容を決定する方法は、あなたが決定するところです。</p>
+
+<p></p>
diff --git a/files/ja/archive/add-ons/using_the_stylesheet_service/index.html b/files/ja/archive/add-ons/using_the_stylesheet_service/index.html
new file mode 100644
index 0000000000..9a3f80adcf
--- /dev/null
+++ b/files/ja/archive/add-ons/using_the_stylesheet_service/index.html
@@ -0,0 +1,65 @@
+---
+title: Using the Stylesheet Service
+slug: Archive/Add-ons/Using_the_Stylesheet_Service
+tags:
+ - Add-ons
+ - Extensions
+translation_of: Archive/Add-ons/Using_the_Stylesheet_Service
+---
+<p>
+</p>
+<h3 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB"> はじめに </h3>
+<p><a href="ja/Firefox_1.5">Firefox 1.5</a> では、<code>userContent.css</code> ファイルや <code>userChrome.css</code> ファイルを使うことなくユーザスタイルシートや UA スタイルシートを <a href="ja/Extension">拡張機能</a> で扱えるようにする API が追加されました。この API は <a href="https://dxr.mozilla.org/mozilla-central/source/layout/base/nsIStyleSheetService.idl" rel="custom">nsIStyleSheetService.idl</a> で定義されています。
+</p><p>そのようなスタイルシートの追加や除去はページが次にロードされるときに効果を現します。登録されたスタイルシートは再起動時には登録が解除されます。
+</p><p>このサービスを使用して追加されたスタイルシートは、chrome 文書にも content 文書にも適用されます。XUL 文書にスタイルシートを適用したい場合は、正しい名前空間を宣言するのを忘れないでください。
+</p><p>この文書での例はすべて <a href="ja/XPCOM">XPCOM</a> を使った <a href="ja/JavaScript">JavaScript</a> で示します。
+</p>
+<h3 id="API_.E3.81.AE.E4.BD.BF.E7.94.A8" name="API_.E3.81.AE.E4.BD.BF.E7.94.A8"> API の使用 </h3>
+<p>以下の例の <code>"<a class=" external" rel="freelink">chrome://myext/content/myext.css</a>"</code> という文字列はただの例です。それをロードしたい CSS ファイルの URL に置換してください。
+</p><p><code>USER_SHEET</code> を <code>AGENT_SHEET</code> に置き換えることもできます。これは CSS カスケードにおいてシートをどこに配置したいかによります。詳しくは <a class="external" href="http://www.w3.org/TR/CSS21/cascade.html#cascading-order">CSS の仕様</a> をご覧ください。
+</p>
+<h4 id=".E3.82.B9.E3.82.BF.E3.82.A4.E3.83.AB.E3.82.B7.E3.83.BC.E3.83.88.E3.81.AE.E8.BF.BD.E5.8A.A0" name=".E3.82.B9.E3.82.BF.E3.82.A4.E3.83.AB.E3.82.B7.E3.83.BC.E3.83.88.E3.81.AE.E8.BF.BD.E5.8A.A0"> スタイルシートの追加 </h4>
+<p>スタイルシートサービスを使用するには、サービスへの参照を取得し、URI を作成し、その URI をスタイルシートサービスの <code>loadAndRegisterSheet</code> メソッドに渡してください。
+</p>
+<pre class="eval">var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
+ .getService(Components.interfaces.nsIStyleSheetService);
+var ios = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+var uri = ios.newURI("<a class=" external" rel="freelink">chrome://myext/content/myext.css</a>", null, null);
+sss.loadAndRegisterSheet(uri, sss.USER_SHEET);
+</pre>
+<div class="note"><b>注意:</b><code>loadAndRegisterSheet</code> は同期してスタイルシートをロードするため、ローカル URI を使ったこのメソッドしか呼び出すべきではありません。</div>
+<h4 id=".E3.82.B7.E3.83.BC.E3.83.88.E3.81.8C.E3.83.AD.E3.83.BC.E3.83.89.E3.81.95.E3.82.8C.E3.81.9F.E3.81.8B.E3.81.A9.E3.81.86.E3.81.8B.E3.81.AE.E5.88.A4.E5.AE.9A" name=".E3.82.B7.E3.83.BC.E3.83.88.E3.81.8C.E3.83.AD.E3.83.BC.E3.83.89.E3.81.95.E3.82.8C.E3.81.9F.E3.81.8B.E3.81.A9.E3.81.86.E3.81.8B.E3.81.AE.E5.88.A4.E5.AE.9A"> シートがロードされたかどうかの判定 </h4>
+<p>拡張機能を作成し、<code>onload</code> ハンドラ内でスタイルシートを追加する場合は、シートがすでに追加されているかどうかを確かめるべきです。それを確かめないと、ウィンドウがロードされるたびにシートを追加してしまうことになります。
+</p>
+<pre class="eval">var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
+ .getService(Components.interfaces.nsIStyleSheetService);
+var ios = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+var uri = ios.newURI("<a class=" external" rel="freelink">chrome://myext/content/myext.css</a>", null, null);
+if(!sss.sheetRegistered(uri, sss.USER_SHEET))
+ sss.loadAndRegisterSheet(uri, sss.USER_SHEET);
+</pre>
+<h4 id=".E4.BB.A5.E5.89.8D.E3.81.AB.E7.99.BB.E9.8C.B2.E3.81.95.E3.82.8C.E3.81.9F.E3.82.B9.E3.82.BF.E3.82.A4.E3.83.AB.E3.82.B7.E3.83.BC.E3.83.88.E3.81.AE.E9.99.A4.E5.8E.BB" name=".E4.BB.A5.E5.89.8D.E3.81.AB.E7.99.BB.E9.8C.B2.E3.81.95.E3.82.8C.E3.81.9F.E3.82.B9.E3.82.BF.E3.82.A4.E3.83.AB.E3.82.B7.E3.83.BC.E3.83.88.E3.81.AE.E9.99.A4.E5.8E.BB"> 以前に登録されたスタイルシートの除去 </h4>
+<p>以前に登録したスタイルシートを除去したい場合、単純に <code>unregisterSheet</code> メソッドを使用してください。
+</p>
+<pre class="eval">var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
+ .getService(Components.interfaces.nsIStyleSheetService);
+var ios = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+var u = ios.newURI("<a class=" external" rel="freelink">chrome://myext/content/myext.css</a>", null, null);
+if(sss.sheetRegistered(u, sss.USER_SHEET))
+ sss.unregisterSheet(u, sss.USER_SHEET);
+</pre>
+<h3 id=".E5.BE.8C.E6.96.B9.E4.BA.92.E6.8F.9B.E6.80.A7" name=".E5.BE.8C.E6.96.B9.E4.BA.92.E6.8F.9B.E6.80.A7"> 後方互換性 </h3>
+<p>Firefox 1.0 (Gecko 1.7) 系のブラウザをサポートする必要がある場合、その新しいスタイルシートサービスが利用できるかどうかを確かめる必要があります。<code>Components.classes</code> オブジェクトにそのコントラクト ID があるかどうかを探すことで確かめることができます。たとえば:
+</p>
+<pre class="eval">if("@mozilla.org/content/style-sheet-service;1" in Components.classes)
+{
+ // 新しいスタイルシート API が利用可能
+}
+else
+{
+ // 利用不可
+}
+</pre>