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

この記事では、Microsoft Edge 拡張機能の構築に関する開発者の概念について説明します。 拡張機能開発者として、マルチタブ ブラウザーのしくみを理解するためにフォローすることができます。

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

ユーザーは、 Microsoft Edge アドオン Web サイトから Microsoft Edge の拡張機能を参照してインストールします。

詳細な内容:

ブラウザーの動作を理解する

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

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

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

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

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

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

通信は、各タブとリモート サーバーの間で行われます

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

コミュニケーション モデル

拡張モデルでは、別の通信モデルが使用されます。 タブ ページと同様に、拡張機能は、他のタブ ページ スレッドから分離された個々のスレッドで実行されます。 タブは単一の 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 を使用して、拡張機能ページとタブ ページの間で通信します。 拡張機能 API には、通知管理、ストレージ管理などの追加機能が用意されています。

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

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

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

関連項目