拡張機能をマニフェスト V2 から V3 に移行する

この記事では、Chromium 拡張機能プラットフォームの現在のバージョンである Manifest V3 の重要な側面を一覧表示します。 Chromium プロジェクトからマニフェスト V3 への拡張機能の移行に関するガイダンスについては、「マニフェスト V3 への移行」を参照してください。

マニフェスト V3 の変更点の概要

拡張機能をマニフェスト V2 使用からマニフェスト V3 使用に移行すると、拡張機能がブラウザーによって処理される方法にいくつかの構造上の変更が加えられます。

  • リモートでホストされるコードは許可されなくなりました。 拡張機能は、独自のパッケージに含まれている JavaScript のみを実行できます。 以下の 「リモートでホストされるコード」を参照してください。

  • Edge 拡張機能では、実行時に Web サイトへのアクセスを許可または制限できるコントロールを使用できます。 以下の 「実行時ホストのアクセス許可」を参照してください。

  • コンテンツ スクリプトには、スクリプトが挿入される Web ページと同じアクセス許可が必要です。 以下の コンテンツ スクリプトでのクロスオリジン要求を参照してください。

  • ネットワーク要求の変更は、新しい declarativeNetRequest API によって処理されるようになりました。 以下の 「Web 要求 API」を参照してください。

  • バックグラウンド ページはサービス ワーカーに置き換えられました。 以下の バックグラウンド サービス ワーカーを参照してください。

  • Promise のサポートが多くのメソッドに追加されました。 代わりに、コールバックは引き続きサポートされます。

  • さまざまなマイナーな機能強化。

リモートでホストされるコード

現在、拡張機能コードの一部はリモートでホストされており、検証プロセス中に拡張機能パッケージの一部としては含まれていません。 これにより、 Microsoft Edge アドオンで拡張機能を再送信せずにコードを変更できる柔軟性が提供されますが、インストール後にコードが悪用される可能性があります。

Microsoft Edge アドオンの拡張機能を確実に検証するために、Microsoft Edge 拡張機能チームは、拡張機能がリモートでホストされているコードを使用することを禁止しています。 この変更により、拡張機能のセキュリティが向上します。

検証のために、拡張機能で使用されるすべてのコードをパッケージ化して送信する必要があります。 または、サンドボックス化された iframe で eval() 関数を使用することもできます。 サンドボックス化された iframe で eval() を使用するを参照してください。

実行時ホストのアクセス許可

インストール時に、拡張機能がすべてのサイトとコンテンツにアクセスするための包括的なアクセス許可を要求することができます。 これらのアクセス許可により、拡張機能は最小限の介入で動作できるため、ユーザーのプライバシーとセキュリティに対するリスクが生じます。

透明性を向上させるために、Microsoft Edge 拡張機能チームは、ユーザーが実行時に Web サイトへのアクセスを許可または制限できるコントロールを提供します。

コンテンツ スクリプトでのクロスオリジン要求

現在、コンテンツ スクリプトは、Web サイトで許可されていないオリジンを含め、あらゆるオリジンへのアクセスを要求できます。 この動作は、クロスオリジンの原則に違反します。 今後、Microsoft Edge 拡張機能チームは、コンテンツ スクリプトが、スクリプトが挿入される Web ページと同じアクセス許可を持つように要求します。 この要件により、潜在的なセキュリティの抜け穴が塞がれます。

クロスオリジン要求を実行するには、バックグラウンド スクリプトを使用してコンテンツ スクリプトに応答を中継する必要があります。 これらの変更は利用可能であり、フラグの背後にあります。 詳細については、「 Chrome 拡張機能コンテンツ スクリプトにおけるクロスオリジン要求の変更」を参照してください。

Web 要求 API

Microsoft Edge 拡張機能チームはWeb Request API を Declarative Net Request API に置き換えますがWeb Request API のオブザベーション機能は引き続き維持されます。 Web 要求 API の観測機能が拡張機能によって必要である特定のシナリオを除き、Web 要求 API ではなく、宣言型ネット要求 (DNR) API のみを使用することをお勧めします。

この変更は、機能豊富な宣言機能を使用する拡張機能にプラスの影響を与えます。 さらに多くの拡張機能が Declarative Net Request API に移行するにつれて、この変更によりユーザーのプライバシーが向上し、拡張機能の使用に対する信頼性に貢献します。

企業は、エンタープライズ ポリシーによって管理される拡張機能に対して、Web 要求 API のブロック動作を引き続き使用できます。 拡張機能ポリシーの詳細については、「Microsoft Edge の 拡張機能– ポリシー」を参照してください。

バックグラウンド サービス ワーカー

拡張機能をバックグラウンド ページからサービス ワーカーに移行するには、「 サービス ワーカーへの移行」を参照してください。

これらの変更が Microsoft Edge で利用できるのはいつですか

現在の宣言型ネット要求 API 実装は、Microsoft Edge の安定版およびベータ版チャネルで利用できます。 変更をテストして、フィードバックを提供してください。

Microsoft Edge 拡張機能チームは、ブログで更新情報を公開しています。 Microsoft Tech Community を通じて変更に関するフィードバックを提供できます。詳細については、「マニフェスト V3 の変更が Microsoft Edge で利用できるようになりました」を参照してください。

manifest.json V3 と V2 での変更点

V3 V2
"manifest_version": 3, "manifest_version": 2,
"action": {...}, "browser_action": {...},
"action": {...}, "page_action": {...},
削除 "persistent": false,
backgroundが含まれている場合は、service_ workerが必要です background が含まれる場合、service_ worker は省略可能です
2 つのキーに分けられます。 "permissions": [...], "host_permissions": [...], "permissions": [...],

関連項目

外部:

Chromiumドキュメント: