--- title: ネイティブマニフェスト slug: Mozilla/Add-ons/WebExtensions/Native_manifests tags: - Extensions - WebExtensions translation_of: Mozilla/Add-ons/WebExtensions/Native_manifests ---
ネイティブマニフェストは特別な形式の JSON ファイルで、拡張機能のインストールプロセスの範囲外の方法でユーザーのコンピューターに配布されます。例えば、ネイティブマニフェストは端末の管理者やネイティブアプリケーションのインストーラーによって配布されます。
3つの異なる種類のネイティブマニフェストがあります:
Native messaging マニフェスト | native messaging と呼ぶ機能を可能にします、ここでは拡張機能は端末にインストールされたネイティブアプリとやりとりできます。 |
Managed storage マニフェスト |
{{WebExtAPIRef("storage.managed")}} API 使って拡張機能がアクセスする読み込み専用データを定義します。 |
PKCS #11 マニフェスト |
拡張機能が {{WebExtAPIRef("pkcs11")}} API を使って PKCS #11 セキュリティモジュールを列挙して、Firefox にインストールできるようにします。 |
すべてのネイティブマニフェスト用に、ブラウザーがマニフェストを見つけられるように調整する必要があります。 マニフェストの場所 のセクションでこのルールを述べています。
native messaging マニフェストは以下のプロパティを含む単一の JSON オブジェクトです:
名前 | 種類 | 説明 |
---|---|---|
name |
String |
ネイティブアプリケーションの名前です。 この名前は拡張機能の {{WebExtAPIRef("runtime.connectNative()")}} か {{WebExtAPIRef("runtime.sendNativeMessage()")}} に渡される名前と一致している必要があります。 OS X と Linux では、native messaging マニフェストの(.json 拡張子を除いた)ファイル名とも一致していなければなりません。 Windows では、native messaging マニフェストの場所を記した作成済みレジストリキーの名前と一致している必要があります。 次の正規表現にマッチする必要があります: "^\w+(\.\w+)*$" つまり、名前には(大文字か小文字の)英数字とアンダースコア、ドットのみ含めることができます。最初または最後の文字にドットを使用することはできず、ドットを2つ以上連続させることもできません。 |
description |
String |
ネイティブアプリケーションの説明です。 |
path |
String |
ネイティブアプリケーションのパスです。 Windows では、マニフェスト自身からの相対パスを指定することもできます。OS X や Linux では絶対パスでなければなりません。 |
type |
String |
拡張機能にアプリケーションが接続するために使用する方法を記述します。 現在のところ、"stdio" のみが指定可能です。これはアプリケーションが標準入力 (stdin) を介してメッセージを受信し、標準出力 (stdout) を使用してメッセージを送信することを示します。 |
allowed_extensions |
Array of String |
Add-on ID の配列です。配列中のそれぞれの値はこのネイティブアプリケーションとの通信が許可されている拡張機能を表します。 つまり、作成する拡張機能の manifest.json ファイルに applications キーを含めたくなるものと思われるため、開発中に明示的なIDを設定しておくと良いでしょう。 |
例として、"ping_pong" ネイティブアプリケーションのマニフェストを以下に示します:
{ "name": "ping_pong", "description": "Example host for native messaging", "path": "/path/to/native-messaging/app/ping_pong.py", "type": "stdio", "allowed_extensions": [ "ping_pong@example.org" ] }
この設定では、"ping_pong@example.org" という ID の拡張機能が "ping_pong" という名前を適切な {{WebExtAPIRef("runtime")}} API 関数に渡すことで接続を許可されます。 アプリケーション自体は "/path/to/native-messaging/app/ping_pong.py" にあります。
managed storage マニフェストには次のプロパティを含む単一の JSON オブジェクトです:
名前 | 種類 | 説明 |
---|---|---|
name |
String |
ストレージにアクセスできる拡張機能の ID で、拡張機能の applications キーで指定したのと同じものです。 |
description |
String | 人間が読める説明で、Firefox には無視されます。 |
type |
String |
"storage" でなければなりません。 |
data |
Object |
JSON オブジェクトで、その中にあらゆる有効な JSON 値(文字列、数値、真偽値、配列、オブジェクトを含む)が入ります。これは |
例えば:
{
"name": "favourite-colour-examples@mozilla.org",
"description": "ignored",
"type": "storage",
"data":
{
"colour": "management thinks it should be blue!"
}
}
この JSON マニフェストでは、"favourite-colour-examples@mozilla.org" 拡張機能は次のようなコードを使ってデータにアクセスできます:
var storageItem = browser.storage.managed.get('colour');
storageItem.then((res) => {
console.log(`Managed colour is: ${res.colour}`);
});
PKCS #11 マニフェストは以下のプロパティを持った JSON オブジェクトを含むファイルです:
名前 | 種類 | 説明 |
---|---|---|
name |
String |
PKCS #11 モジュールの名前です。
OS X と Linux では、マニフェストの (拡張子を除いた) ファイル名とも一致していなければなりません。 Windows では、マニフェストの場所を記した作成済みレジストリキーの名前と一致している必要があります。 次の正規表現にマッチする必要があります: "^\w+(\.\w+)*$" つまり、名前には(大文字か小文字の)英数字とアンダースコア、ドットのみ含めることができます。最初または最後の文字にドットを使用することはできず、ドットを2つ以上連続させることもできません。 |
description |
String |
モジュールの説明です。 ブラウザー UI (例えば、Firefox の "Security Devices" ダイアログ) で表示される、読みやすい名前を付けるのに使われます。 |
path |
String |
モジュールのパスです。 Windows では、マニフェスト自身からの相対パスを指定することもできます。OS X や Linux では絶対パスでなければなりません。 |
type |
String | "pkcs11" でなければなりません。 |
allowed_extensions |
Array of String |
Add-on ID の配列です。配列中のそれぞれの値はモジュールとの通信が許可されている拡張機能を表します。 つまり、作成する拡張機能の manifest.json ファイルに applications キーを含めたくなるものと思われるため、開発中に明示的な ID を設定しておくと良いでしょう。 |
例えば:
{ "name": "my_module", "description": "My test module", "type": "pkcs11", "path": "/path/to/libpkcs11testmodule.dylib", "allowed_extensions": ["my-extension@mozilla.org"] }
この JSON マニフェストでは、"my_module.json" として保存すれば、"my-extension@mozilla.org" 拡張機能はこのようなコードから "/path/to/libpkcs11testmodule.dylib" のセキュリティーモジュールをインストールすることもできます:
browser.pkcs11.installModule("my_module");
Linux と Mac OS X では、マニフェストを特定の場所に保管する必要があります。Windows では、マニフェストの場所を指定するレジストリキーを作成する必要があります。
詳しいルールはどのマニフェストの種類でも同じですが、例外として最後から2番目のパスのコンポーネントはマニフェストの種類を特定します。下記の例では、3種類のそれぞれの形を示しています。すべての例において、<name> はマニフェスト内の name
プロパティの値です。
グローバルな設定としては、以下の名前のレジストリキーを作成します:
HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\NativeMessagingHosts\<name> HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\ManagedStorage\<name> HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\PKCS11Modules\<name>
このキーにマニフェストへのパスを示す単一の既定の値を設定します。
Firefox バージョン 64 以降では、32ビットレジストリ view (Wow6432Node) がこれらのキーの中でまずチェックされ、"native" レジストリ view が続いてチェックされます。いずれの view にしてもアプリケーションにふさわしいレジストリを使用してください。
Firefox バージョン 63 以前では、もし32ビットのアプリケーションであっても、このキーは Wow6432Node 下に作成しないで下さい。以前のバージョンのブラウザは常に32-bit エミュレーションではなくレジストリの "native" view 下のキーを探します。確実に "native" view にキーを作成するために、KEY_WOW64_64KEY または KEY_WOW64_32KEY フラグを RegCreateKeyEx に渡すことができます。Accessing an Alternate Registry View を参照して下さい。
ユーザごとの設定としては、以下の名前のレジストリキーを作成します:
HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\<name> HKEY_CURRENT_USER\SOFTWARE\Mozilla\ManagedStorage\<name> HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\<name>
このキーにマニフェストへのパスを示す単一の既定の値を設定します。
グローバルな設定としては、マニフェストを以下に配置します:
/Library/Application Support/Mozilla/NativeMessagingHosts/<name>.json /Library/Application Support/Mozilla/ManagedStorage/<name>.json /Library/Application Support/Mozilla/PKCS11Modules/<name>.json
個人ごとの設定としては、マニフェストを以下に配置します:
~/Library/Application Support/Mozilla/NativeMessagingHosts/<name>.json ~/Library/Application Support/Mozilla/ManagedStorage/<name>.json ~/Library/Application Support/Mozilla/PKCS11Modules/<name>.json
グローバルな設定としては、マニフェストを以下のいずれかに配置します:
/usr/lib/mozilla/native-messaging-hosts/<name>.json /usr/lib/mozilla/managed-storage/<name>.json /usr/lib/mozilla/pkcs11-modules/<name>.json
あるいは:
/usr/lib64/mozilla/native-messaging-hosts/<name>.json /usr/lib64/mozilla/managed-storage/<name>.json /usr/lib64/mozilla/pkcs11-modules/<name>.json
個人ごとの設定としては、マニフェストを以下に配置します:
~/.mozilla/native-messaging-hosts/<name>.json ~/.mozilla/managed-storage/<name>.json ~/.mozilla/pkcs11-modules/<name>.json