Manifest V3 での拡張機能の操作

Chrome 拡張機能のリリース以来、プラットフォームではデベロッパーが拡張機能を 直接アクションを使用して、トップレベルの Chrome UI で直接行うことができます。アクションは ポップアップを開いたり、拡張機能の一部の機能をトリガーしたりできます。これまで Chrome では、 ブラウザやページのアクションの種類Manifest V3 では、 機能を実装しました。chrome.action

拡張機能の操作の簡単な履歴

chrome.action 自体は Manifest V3 では新しいものですが、基本的な機能は過去にさかのぼります 2010 年 1 月に拡張機能が Stable でリリースされた時点との比較です。最初の安定版 リリースされている Chrome の拡張機能プラットフォームでは、次の 2 種類のアクションがサポートされていました。ブラウザ アクションページ アクションの 2 つがあります。

拡張機能のデベロッパーはブラウザ操作により、メインの Google Chrome ツールバーにアイコンを表示できるようになりました。 アドレスバーの右に表示されます。(出典)ユーザーに簡単な方法を 任意のページで拡張機能をトリガーできますこれに対してページアクションは 「現在のページで行えるが、すべてのページには当てはまらない操作を表す」 (出典)。

アドレスバーにページ操作(左)が表示され、拡張機能がこのページでなんらかの操作を行えることを示しています。ブラウザ操作(右)は常に表示されている。

言い換えれば、ブラウザ アクションによって拡張機能のデベロッパーがブラウザの UI サーフェスを常に維持できるということです。 一方、ページ アクションは、現在のページで拡張機能が何か有用なことができる可能性がある場合にのみ表示されます。

どちらのタイプのアクションも省略可能であるため、拡張機能のデベロッパーは「No」 アクション、ページ アクション、ブラウザ アクションのいずれかです(複数のアクションを指定することはできません)。

約 6 年後、Chrome 49 では拡張機能の新しい UI パラダイムが導入されました。そこで、 拡張機能を使用できる状態になったため、 入力します。ユーザーが「オーバーフロー」する可能性があるChrome メニューに追加できます。

非表示の拡張機能アイコンが Chrome メニューに表示される。

また、各拡張機能のアイコンを表示するための 2 つの重要な変更が行われました。 拡張機能の動作を確認できますまず、すべての拡張機能のツールバーにアイコンが表示されるようになりました。 拡張機能にアイコンがない場合は、Chrome でアイコンが自動生成されます。2 つ目はページ操作です ブラウザのアクションと一緒にツールバーに移動し、 「番組」の[非表示] を選択構成されます。

無効になっているページ操作(左)はツールバーにグレースケールの画像で表示され、有効にした操作(右)はフルカラーで表示されます。

この変更により、ページ操作拡張機能は想定どおりに動作し続けましたが、機能も低下しました ページアクションの役割の推移を確認できますUI デザイン変更の影響の 1 つは、ページ アクションが ブラウザのアクションに効果的に組み込まれますすべての拡張機能がツールバーに表示されて初めて、 拡張機能のツールバー アイコンをクリックすると拡張機能が呼び出され、ブラウザのアクションが呼び出されることを想定している が Chrome 拡張機能のインタラクションとしてますます重要になっています。

Manifest V3 の変更

Chrome の UI と拡張機能は、2016 年の拡張機能の UI から数年間も進化し続けている が再設計されましたが、ブラウザのアクションとページ アクションはほとんど変わっていません。つまり、少なくとも Google は Manifest V3 で拡張機能プラットフォームをモダナイズする方法を計画し始めました。

拡張機能チームにとっては、ブラウザのアクションとページでのアクションがますます重要性を増していることは明らかでした。 区別もつきません。さらに悪いことに、動作の微妙な違いにより、デベロッパーが どちらを使用するかを判断しますブラウザとブラウザを 統合することで 1 つの「アクション」に統合できます。

Action API の登場です。chrome.actionchrome.browserAction に最も類似していますが、 いくつかの顕著な違いがあります。

まず、chrome.action には getUserSettings() という名前の新しいメソッドが導入されています。この方法は 拡張機能のデベロッパーは、ユーザーが拡張機能のアクションを 。

let userSettings = await chrome.action.getUserSettings();
console.log(`Is the action pinned? ${userSettings.isOnToolbar ? 'Yes' : 'No'}.`);

「getUserSettings」一見変わった名前のように思えるかもしれませんが、 「isPinned」であるにもかかわらず、Chrome のアクション履歴を見ると、ブラウザ UI の変更が 拡張 API です。そのため、この API の目標は、Google Chat でアクション関連のユーザー設定を 汎用インターフェースの使用を検討してください。また、他のブラウザ ベンダーが Google の このによって返される UserSettings オブジェクト内のブラウザ固有の UI コンセプト メソッドを呼び出します。

次に、拡張機能のアクションのアイコンと有効/無効状態は、 宣言型 Content API拡張機能がユーザーのブラウジングに反応するため、これは重要です。 ユーザーがアクセスしたページの URL やコンテンツにはアクセスせずに、たとえば、 ユーザーが example.com のページにアクセスした際に拡張機能の動作を有効にする方法について説明します。

// Manifest V3
chrome.runtime.onInstalled.addListener(() => {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
    chrome.declarativeContent.onPageChanged.addRules([
      {
        conditions: [
          new chrome.declarativeContent.PageStateMatcher({
            pageUrl: {hostSuffix: '.example.com'},
          })
        ],
        actions: [new chrome.declarativeContent.ShowAction()]
      }
    ]);
  });
});

上記のコードは、拡張機能がページ アクションで行うものとほぼ同じです。唯一の Manifest V3 で declarativeContent.ShowAction を Manifest V2 の declarativeContent.ShowPageAction

最後に、コンテンツ ブロッカーは declarativeNetRequest API の setExtensionActionOptions など)メソッドを使用して、 ブロックするリクエストの数を確認できます。この機能が重要なのは、 コンテンツ ブロッカー。機密情報になり得る閲覧メタデータを公開することなく、エンドユーザーに最新情報を提供 追加します。

まとめ

Chrome 拡張機能プラットフォームをモダナイズしたことが、Manifest V3 の主な動機の一つでした。多くの 新しいテクノロジーに切り替えると同時に API サーフェスを簡素化するケース。 それが私たちの目標です

この投稿が Manifest V3 プラットフォームのこの特定の分野に光を当ててくれることを願っています。宛先 ブラウザ拡張機能の未来に対する Chrome チームの取り組みについて詳しくは、 Google のプラットフォームのビジョンManifest V3 の概要のページ デベロッパー向けドキュメントをご覧くださいまた、 chromium-extensions Google グループに追加します。