拡張機能の概念とアーキテクチャ

この記事では、Microsoft Edge 拡張機能の構築に関する概念について説明します。 続いて、マルチタブ ブラウザーのしくみを理解します。

Microsoft Edge 拡張機能 は、対象ユーザーにとって重要な特殊なエクスペリエンスまたは機能を提供するために、Microsoft Edge の機能を追加または変更する、ユーザーがオプトインできる小さなアプリです。 概要については、「 Microsoft Edge 拡張機能の概要」を参照してください。

ブラウザーのしくみを理解する

次の一覧は、拡張機能をビルドする前に理解するのに役立つ情報の概要を示しています。

ブラウザー タブは分離されたスレッドです

各ブラウザー タブは、他のすべてのタブから分離されています。各タブは、他のブラウザー タブやスレッドから分離された個別のスレッドで実行されます。

ブラウザー タブごとに 1 つのスレッド

各タブは、1 つの GET 要求を処理します

各タブは、1 つの GET 要求を処理します。 各タブでは、URL を使用して、通常は HTML ドキュメントである単一のデータ ストリームを取得します。 その単一のストリームまたはページには、JavaScript などの指示にタグ、画像参照、CSS 参照などが含まれます。 すべてのリソースがその 1 つのタブ ページにダウンロードされ、ページがタブにレンダリングされます。

各タブとリモート サーバーの間で通信が行われる

各タブとリモート サーバーの間で通信が行われます。 各タブは、分離された環境で実行されます。 各タブは引き続きインターネットに接続されていますが、それぞれが他のタブから分離されています。 タブでは、JavaScript を実行してサーバーと通信できます。 サーバーは、タブの URL バーに入力された最初の GET 要求の送信元サーバーです。

通信モデル

拡張モデルでは、別の通信モデルが使用されます。 タブ ページと同様に、拡張機能は、他のタブ ページ スレッドから分離された個々のスレッドで実行されます。 タブは、1 つの GET 要求をリモート サーバーに送信し、ページをレンダリングします。 ただし、拡張機能はリモート サーバーと同様に機能します。 ブラウザーに拡張機能をインストールすると、ブラウザーにスタンドアロン Web サーバーが作成されます。 拡張機能は、すべてのタブ ページから分離されます。

拡張機能で別の通信モデルを使用する

拡張機能アーキテクチャ

次の一覧は、拡張機能のアーキテクチャに関連する有用な情報の概要を示しています。

拡張 Web サーバー バンドル

拡張機能は、Web リソースのバンドルです。 Web リソースは、ユーザー (Web 開発者) が Web サーバーに発行する他のリソースと似ています。 拡張機能をビルドするときに、Web リソースを zip ファイルにバンドルします。

zip ファイルには、HTML、CSS、JavaScript、およびイメージ ファイルが含まれています。 zip ファイルのルートには、もう 1 つのファイルが必要です。 もう 1 つのファイルは、 という名前 manifest.jsonのマニフェスト ファイルです。 マニフェスト ファイルは拡張機能のブループリントであり、拡張機能のバージョン、タイトル、拡張機能の実行に必要なアクセス許可などが含まれます。

拡張機能サーバーの起動

Web サーバーには、Web バンドルが含まれています。 ブラウザーはサーバー上の URL に移動し、ブラウザーでレンダリングするファイルをダウンロードします。 ブラウザーは、証明書や構成ファイルなどを使用して移動します。 ファイルが index.html 指定されている場合、ファイルは Web サーバー上の特別な場所に格納されます。

拡張機能を使用すると、ブラウザーのタブ ページが拡張機能ランタイムを使用して拡張機能の Web バンドルに移動します。 拡張機能ランタイムは、URL extension://{some-long-unique-identifier}/index.htmlからファイルを提供します。ここで {some-long-unique-identifier} 、 は、インストール中に拡張機能に割り当てられた一意の識別子です。 各拡張機能では、異なる一意の識別子が使用されます。 各識別子は、ブラウザーにインストールされている Web バンドルを指します。

タブとブラウザー ツール バーとの通信

拡張機能は、タブとブラウザー ツール バーと通信できます。 拡張機能は、ブラウザーのツール バーと対話できます。 各拡張機能は、実行中のタブ ページを個別のスレッドで管理し、各タブ ページでの DOM 操作は分離されます。 拡張機能では、拡張機能 API を使用して拡張機能とタブ ページの間で通信します。 Extensions API には、通知管理、ストレージ管理などの追加機能が用意されています。

Web サーバーと同様に、拡張機能はブラウザーが開いているときに通知を待機します。 拡張機能ページとタブ ページは、相互に分離されたスレッドで実行されます。 拡張機能が任意のタブ ページで動作できるようにするには、extensions API を使用し、マニフェスト ファイルでアクセス許可を設定します。

インストール時のオプトインアクセス許可

拡張機能は、インストール時にオプトインアクセス許可を提供します。 ファイルで拡張機能のアクセス許可を指定します manifest.json 。 ユーザーが拡張機能をインストールすると、拡張機能に必要なアクセス許可に関する情報が表示されます。 必要なアクセス許可の種類に基づいて、拡張機能はブラウザーから情報を抽出して使用できます。

次の手順

拡張機能の概要については、「拡張機能 の作成チュートリアル(パート 1)」を参照してください。