このページを頻繁にチェックして、Chrome 拡張機能、拡張機能のドキュメント、関連ポリシーの変更、その他の変更を確認してください。その他のお知らせは、拡張機能の Google グループに投稿されています。Chrome のスケジュールには、安定版とベータ版のリリース日が記載されています。
動画: Trust & Safety チームのインタビュー
Chrome 拡張機能 DevRel チームは、Chrome ウェブストアの審査を主導する Trust & Safety チームと連携し、質問を受け付けました。フルサイズのミュージック ビデオを視聴する
ブログ投稿: Manifest V2 の段階的廃止の開始
6 月 3 日より、Chrome Beta、Dev、Canary の各チャンネルで Manifest V2 拡張機能がまだインストールされている場合、一部のユーザーに対して拡張機能の管理ページ(chrome://extensions)にアクセスすると、インストール済みの一部の拡張機能(Manifest V2)のサポートがまもなく終了することを知らせる警告バナーが表示されるようになります。詳しくは、公式発表をご覧ください。
サイドパネル UI の更新
最近、サイドパネル UI に、固定アイコンの追加やグローバルなサイドパネル アイコンの削除など、いくつかの変更を加えました。詳しくは、PSA をご覧ください。また、最新のドキュメントとサンプルをご覧ください。
ブログ投稿: Google I/O 2024 における Chrome 拡張機能
開催後は Google I/O を開催し、拡張機能に関する最新情報をすべてご紹介しました。YouTube で動画全体を確認し、ブログ投稿でいくつかのハイライトをご覧ください。
対象となる宣言型ネット リクエストの変更について審査をスキップする
Chrome ウェブストアで、Declarative Net Request API を使用する際に、対象となる変更の審査をスキップできるようになりました。利用資格とオプトインの方法について詳しくは、Chrome ウェブストアのドキュメントをご覧ください。
Chrome ウェブストア API で利用可能な deployPercentage
先日 Chrome ウェブストア API のドキュメントを更新し、deployPercentage
に関する情報を追加しました。これにより、部分的なロールアウトのデプロイの割合を割り当てることができます。deployPercentage
の詳細
Chrome 126: 拡張機能のオリジン トライアル
Chrome 126 では、新しい manifest.json フィールド trial_tokens
が導入され、すべての拡張機能サーフェスでオリジン トライアルとサポート終了トライアルにオプトインできます。詳しくは、ガイドをご覧ください。
ブログ投稿: Chrome 拡張機能の変更内容 - 2024 年 4 月
Chrome 拡張機能の変更内容の新版を公開しました。この投稿では、この数か月間、拡張機能チームが取り組んできたことを説明します。具体的には、Chrome ウェブストアでのバージョン ロールバック、Firebase Auth のサポートの強化、API のリリースと更新の拡充などを行いました。
Chrome ウェブストア デベロッパー ダッシュボードでのバージョン ロールバック
追加審査を行うことなく、Chrome ウェブストアで拡張機能を以前に公開したバージョンにロールバックできます。詳しくは、ブログ投稿とドキュメントをご覧ください。
Chrome 124: 高度な documentScan API
ChromeOS で高度な documentScan
API を使用して、接続されたドキュメント スキャナから画像を検出して取得できるようになりました。
Chrome 124: Service Worker での WebGPU のサポート
Chrome 124 以降、Service Worker は WebGPU をサポートしています。クイック スタートについては、WebGPU 拡張機能のサンプルをご覧ください。
Chrome 123: Events API が CIDR ブロックによるフィルタリングをサポート
Events API で、クラスレス ドメイン間ルーティング(CIDR)ブロックによるフィルタリングがサポートされるようになりました。CIDR ブロックは、ネットワーク プレフィックスと同じビット数を共有する IP アドレスの集まりです。以前は、デベロッパーはブロック範囲内の各アドレスにフィルタルールを構成するために、複数の IP アドレスをフィルタリングする必要がありました。拡張機能が addListener()
を呼び出すと、ルールが渡されたため、URL のホスト部分が IP アドレスで、配列で指定された CIDR ブロックのいずれかに含まれている場合にのみ、イベント ハンドラが呼び出されます。
Chrome ウェブストア: 拡張機能名の長さに関する要件の更新
Chrome ウェブストアでは、manifest.json の拡張機能の "name"
フィールドの値が 75 文字に統一されました。以前は、英語の場合の上限は 45 文字でしたが、他のロケールでは "name"
フィールドに制限はありませんでした。
これは元々、同じ文字数では捕捉できない文化や言語の違いに対応するためでした。残念ながら、この機能はストアにスパム行為を働く目的で悪用され、少数のデベロッパーによって悪用されていました。これに伴い、新しい汎用的な上限が 75 文字に引き上げられます。この制限は、現在 Google ストアに公開されているほぼすべての拡張機能を対象としているため、今回の変更に関して特にご対応いただく必要はございません。名前が上限を超える拡張機能をアップロードしようとすると、ストアによってアップロードがブロックされます。
ブログ投稿: Eyeo が Service Worker の停止をテストするまでのプロセス
eyeo の Extension Engine チームのこの投稿では、拡張機能 Service Worker のテストに関する問題について説明します。Manifest V2 では、拡張機能のライフサイクルを通じてバックグラウンド ページが起動されるバックグラウンド ページに拡張機能が存在していました。Manifest V3 では代わりに Service Worker を使用します。Service Worker は、設計上、必要なくなったときにシャットダウンすることでリソースを節約します。これには、テストに関していくつかの課題があります。この投稿では、Eyeo がこれらの課題にどう取り組んだかについて説明しています。
Chrome 123: デバイスがスリープ状態のときにアラームを実行
chrome.alarms
API を使用して設定したアラームは、デバイスがスリープ状態になっても遅延しなくなりました。デバイスが復帰すると、見逃されたアラームの数に関係なく、1 回アラームが起動します。たとえば、アラームが 1 時間に 1 回鳴るように設定されていて、そのデバイスが午前 12 時 55 分から午前 2 時 5 分までスリープしている場合、午前 2 時のアラームのみが onAlarm
イベントをトリガーします。できる限り午前 2 時に起動し、スリープ状態の場合はデバイスが復帰した直後に起動します。
この変更により、Chrome はウェブ拡張機能コミュニティ グループで合意された動作に沿うようになります。
ブログ投稿: 拡張機能のメッセージ ポートに関する bfcache の動作の変更
バックフォワード キャッシュ(bfcache)は、すぐに戻る/進むナビゲーションを可能にするブラウザの最適化です。Chrome 123 以降では、拡張ポートが開いているページが bfcache に保存されると、メッセージ チャネルが閉じられます。つまり、そのページにメッセージは送信されなくなります。そのため、拡張機能スクリプトは onDisconnect
などのライフサイクル イベントをリッスンし、ページが BFCache から復元されたときに新しい接続を設定する必要があります。
詳細とサンプルコードについては、拡張メッセージ ポートを使用した BFCache の動作の変更をご覧ください。
Chrome 122: 非同期拡張機能 API での Promise のサポート
すべての非同期拡張 API メソッドへの Promise サポートの実装が完了しました。これは、非同期オペレーションの処理のエルゴノミクスを改善することで API メソッドをモダナイズするために行われました。現在のサーフェスが Promise と互換性がないため、少数のメソッド(desktopCapture.chooseDesktopMedia()
など)は引き続きコールバックのみをサポートします。下位互換性を確保するため、コールバックは引き続きサポートされます。失敗した Promise を見つけた場合は、バグを報告してください。
リアルタイムのコミュニケーションのための新しいガイダンス
拡張機能のリアルタイム オプションに関するガイドを公開しました。リアルタイム更新により、サーバーから直接拡張機能のインストールに即座に通信できます。また、chrome.gcm とウェブプッシュを使用するための新しいガイダンスも追加しました。
新しいガイダンスとサンプル: Service Worker の終了のテスト
Puppeteer を使用して Service Worker の終了をテストする方法に関するガイドを公開しました。付属のサンプルでは、Puppeteer と Selenium でこれを例示します。
ネイティブ メッセージングのサンプルを更新しました
ネイティブ メッセージングの更新されたサンプルを公開しました。この API を使用すると、拡張機能を起動して別のアプリケーションと通信できます。この作業に協力してくれた GitHub 投稿者の Shubham-Rasal に感謝します。
Chrome 121: tab.Tab に新しい lastAccessed プロパティを追加
lastAccessed
という名前の新しいプロパティが tabs.Tab
オブジェクトに追加されました。このプロパティは、タブが最後にアクティブになった日時を示します。返される値は、エポックからのミリ秒数です。
Chrome 121: サポートされていない「バックグラウンド」キーに対して警告が表示されるようになりました
Manifest V2 から Manifest V3 への変更では、バックグラウンド スクリプトを拡張機能 Service Worker に置き換えるために、"background"
マニフェスト キーの子が変更されました。これまでは、Manifest V2 のキー "scripts"
、"page"
、"persistent"
を Manifest V3 拡張機能の "background"
キーに追加すると、エラーがスローされていました。これらのキーが存在すると、警告がトリガーされます。
これは、コミュニティ グループでの提案に従い、複数のブラウザで 1 つのマニフェスト ファイルを拡張機能で使用できるようにするためです。
Chrome 120: アラームの最小粒度を 30 秒に短縮
Chrome 120 以降、Manifest V3 拡張機能で chrome.alarms
API を使用する際、60 秒以上の値を指定するのではなく、30 秒の遅延または期間を設定できるようになりました。
ブログ投稿: Manifest V3 への移行を再開する
Manifest V2 のサポート タイムラインが更新されました。詳しくは、2023 年 11 月のブログ投稿をご覧ください。
ブログ投稿: Manifest V3 でのコンテンツ フィルタリング サポートの改善
declarativeNetRequest API の改善については、新しいブログ投稿をご覧ください。
ブログ投稿: Chrome 120 の拡張機能の新機能
Chrome 120 ベータ版が最近リリースされました。拡張機能のデベロッパーに関連する重要な更新の概要については、新しいブログ投稿「Chrome 120 の拡張機能の新機能」をご覧ください。また、このリリースでは、重要なプラットフォーム ギャップのリストから最後の 2 つのアイテム(userScript、ChromeOS のファイル ハンドラ)が削除されます。
PSA: デベロッパー ダッシュボードにおけるプライバシー ポリシーの URL の取り扱いに関する変更
デベロッパー ダッシュボードのプライバシー ポリシーがアイテム単位で追加されるようになりました。これにより、アイテムごとに異なるプライバシー ポリシーを指定できます。この変更の詳細については、PSA をご覧ください。
動画: Matt Frisbie さんとのチャット
デベロッパー向け Chrome の YouTube チャンネルに、Google Developer Expert で著者の Matt Frisbie とチャットする新しい動画を公開しました。こちらでご覧ください。
拡張機能のテストに関する新しいガイダンス
単体テストの作成方法、一般的なガイダンス、エンドツーエンド テストに関するチュートリアルなど、拡張機能の自動テストの作成方法に関する新しいガイダンスを公開しました。
ブログ投稿: Chrome 拡張機能の変更内容 - 2023 年 10 月
Chrome 拡張機能の変更内容の第 2 版を公開しました。この投稿では、Service Worker の安定性の問題への対処や、MV3 プラットフォームのすべてのギャップを埋めるために前進するなど、この数か月間拡張機能チームが取り組んだ内容について説明します。また、Reading List API や User Scripts API など、今後の API のリリースについてもお伝えします。
宣言型ネット リクエスト API の静的ルールセットの上限を引き上げ
ウェブ拡張機能コミュニティ グループのフィードバックに従い、有効な静的ルールセットの上限を 10 から 50 に大幅に引き上げます。さらに、使用できる静的ルールセットの総数を 50 から 100 に増やします。これは現在、Canary で利用できます。
リモートでホストされるコードに関するガイダンスの改善
Manifest V3 の要件として、拡張機能でリモートでホストされるコードを使用できないようにする必要があります。これは当初から移行ガイドの一部でしたが、この問題に関するガイダンスを改善する価値があると考えました。このページでは、Manifest V3 で引き続き可能なこと、アップグレードの戦略に関する詳細情報など、より多くの情報を提供しています。
Chrome ウェブストアの違反のトラブルシューティングに、関連する補足情報を追加しました。新しいセクションで、リモートでホストされるコードを含む拡張機能が拒否される一般的な理由について説明しています。
Chrome 118: isUrlFilterCaseSensitive がデフォルトで false に設定されるようになりました
Chrome 118 以降、chrome.declarativeNetRequest API の isUrlFilterCaseSensitive
プロパティがデフォルトの false
に変更されました。以前の動作を維持する場合は、declarativeNetRequest ルールで isUrlFilterCaseSensitive
を明示的に true
に設定します。
これは、ウェブ拡張機能のコミュニティ グループのディスカッションに準じています。Firefox と Safari にも、同様の変更がすでに実装されています。
Cookie とウェブ ストレージ API に関するドキュメント
Chrome 拡張機能における Cookie とウェブ ストレージ API の仕組みに関する新しいガイドを公開しました。 プライバシー サンドボックスにおける Cookie とストレージ パーティショニングの変更に関する詳細、一連の新しいウェブ プラットフォーム API の作成を通じてサードパーティ Cookie を廃止する進行中のプロジェクト、拡張機能におけるそれらの仕組みの詳細が記載されています。
拡張機能のサンプルを検索できるようになりました
Google では先日、Chrome 拡張機能のサンプルを検索できるページを作成しました。検索ページには複数のオプションがあります。検索ボックスを使用すると、サンプル タイトルのテキストを検索できます。権限または拡張機能 API によって検索を制限できます。追加のフィルタを使用すると、検索対象を API サンプルまたは機能(ユースケース)サンプルに制限できます。
この新しいサンプルページは、Google Summer of Code の参加者である Xuezhou Dai によって作成され、同じくいくつかの新しいサンプルを提供してくれました。昨年の夏に彼らが経験したことについては、Google のブログの投稿をご覧ください。
前の例と同様に、クローン作成やフォーク用のコードサンプルは GitHub から入手できます。
Chrome 118: ファイルを開く際の変更: スキームの URL
Chrome 118 以降、拡張機能で Tabs API または Windows API を使用して file:// スキーム URL を開くには、chrome://extensions
ページで [ファイルの URL へのアクセスを許可する] 設定を有効にする必要があります。このアクセス権をプログラムで確認するには、chrome.extension.isAllowedFileSchemeAccess()
を呼び出します。Firefox ではすでにファイルの URL が制限されていますが、Safari ではこの変更がサポートされています。詳しくは、拡張機能に関する Google グループへの投稿をご覧ください。
Chrome 117: 拡張機能 API のナビゲーションに対する URL 保護の拡張
以前は、tabs.update()
、tabs.create()
、windows.create()
の拡張機能 API 呼び出しからトリガーされたナビゲーションで、一部の chrome:// URL でエラーが発生しました。また、JavaScript URL での tabs.update()
の呼び出しは禁止されています。117 では、この JavaScript URL の保護が tabs.create()
メソッドに拡張され、前述のすべてのメソッドに適用される禁止 URL のリストにいくつかの chrome:// URL が追加されました。
declarativeNetRequest API のガイダンスを改善
chrome.declarativeNetRequest
API は、宣言的なルールを指定して、ネットワーク リクエストをブロックまたは変更します。これにより、拡張機能はネットワーク リクエストをインターセプトしてコンテンツを表示することなく、ネットワーク リクエストを変更できるため、ユーザーのプライバシーを強化できます。また、使い方も難しくなります。それを念頭に置いて、宣言型ルールセットの実装方法をより明確に把握できるようにガイダンスを書き直しました。上のリンクから新しいセクションをお読みください。
Chrome ウェブストアで Google アナリティクス アカウントを使用する
Chrome ウェブストアは Google アナリティクスと統合されており、デベロッパー ダッシュボードに表示されるビューに加え、Chrome ウェブストアの掲載情報の分析も表示できます。詳しくは、Chrome ウェブストアで Google アナリティクス アカウントを使用するをご覧ください。
Chrome 115: DevTools で、デフォルトでコンテンツ スクリプトより優先される
挿入されたコンテンツ スクリプトは、デフォルトで DevTools の無視リストに入るようになりました。ブレークポイントには影響しませんが、デバッグ中にコンテンツ スクリプトがステップオーバーされ、これらのスクリプトからの例外は無視されます。[ソース] タブでコンテンツ スクリプトを開くと、この機能がオンになっていることがバナーで通知され、無視リストからコンテンツ スクリプトを削除するオプションが表示されます。この動作をオフにするには、DevTools を開き、[設定]、[無視リスト] の順に移動します。詳細については、DevTools の新機能をご覧ください。
Chrome 116 ベータ版: ここに収まりきらない
Chrome 116 は拡張機能の大規模なリリースです。サイドパネルをプログラムで開けるようになりました。新しいメソッドを使用すると、アクティブな画面外ドキュメントがあるかどうかを確認できます。Service Worker は大幅な改善を達成しました。116 では十分な改善が行われており、ブログ記事でそれらについて説明しています。7 月 19 日の時点で Chrome 116 はベータ版です。
ブログ投稿: Chrome 拡張機能の最新情報
今年の拡張機能の変更と改善点の概要を公開しました。この投稿では、Side Panel API、Service Worker の機能強化、画面外ドキュメントなど、今年の大きな新機能についてご紹介します。また、今四半期の対応内容もあわせてご紹介します。この記事には、その他にも多くの情報が記載されており、そのすべてへのリンクも記載されています。
新しいガイダンスとサンプル: Chrome 拡張機能で Google アナリティクス 4 を使用する方法を確認する
Google アナリティクスと位置情報に関する新しいガイダンスとサンプルを公開しました。
- Google アナリティクス ガイダンスの更新版。Chrome 拡張機能で Google アナリティクス 4 を使用する方法を説明しています。また、GitHub のサンプル リポジトリに、実用的な Google アナリティクス 4 のサンプルを追加しました。Google アナリティクスに関連するコードは、
google-analytics.js
でご確認ください。 - 新しい位置情報ガイドと 3 つのサンプルで、Service Worker、コンテンツ スクリプト、ポップアップ、サイドパネルで位置情報にアクセスする方法について説明しています。
Chrome 115: chrome.offscreen.createDocument() で複数の理由を指定する
chrome.offscreen.createDocument()
を呼び出すときに、複数の reason
列挙型を指定できるようになりました。画面外のドキュメントを複数の異なる目的に使用する場合に使用します。ブラウザは、指定された理由に基づいて、画面外ドキュメントの存続期間を判断します。
新しいツール: 拡張機能更新テストツール
このたびリリースされた拡張機能更新テストツールは、ローカル開発中に Chrome 拡張機能の更新(権限の付与など)をテストするために使用できるローカルの拡張機能更新サーバーです。このツールには、ユーザーが新たにリクエストした権限を許可するまで拡張機能を無効にしたままにするなど、ユーザーの更新フローが表示されます。このツールは、拡張機能を Manifest V2 から Manifest V3 に更新するときにリクエストされる権限の変更をシミュレートするのに特に便利です。
Chrome 114: 新しい Side Panel API
新しい Side Panel API が導入されました。Side Panel API は、ユーザーがブラウジングしているコンテンツとともにツールにアクセスできるコンパニオン サーフェスです。詳しくは、Side Panel API リファレンスをご覧ください。また、GitHub サンプル リポジトリに多くのサイドパネル サンプルを追加しました。サイドパネルの詳細については、新しいブログ投稿「新しい Side Panel API で優れたユーザー エクスペリエンスを設計する」でも紹介しています。質の高いサイドパネルの拡張機能を作成するための詳しいガイダンスとして、品質に関するガイドラインのポリシーとベスト プラクティスも審査されました。
この API を作成するうえで、ユーザーからのフィードバックは非常に重要です。ご意見や機能リクエストについては、chromium-groups でお知らせください。Side Panel API は今後も強化されますので、今後の最新情報にご期待ください。
新しいサンプル: 拡張機能の WASM
拡張機能で WASM を使用する方法を示す新しいサンプルが 2 つあります。
- WASM モジュールを組み込む一般的な方法については、Manifest V3 での WASM の使用をご覧ください。
- Manifest V3 で WASM をモジュールとして使用するでは、モジュールで WASM を使用する方法について説明します。
これらのサンプルを提供してくれた GitHub 寄稿者 @daidr に感謝します。
Manifest V3 の移行ガイダンスの更新
Manifest V3 の移行ガイダンスの既知の問題セクションを更新し、新しい Manifest V2 のサポート終了スケジュールを発表する前に対応予定の拡張機能プラットフォームのギャップのリストを更新しました。
Manifest V3 を使用した音声と動画の録画
このたび、Manifest V3 でタブ、ウィンドウ、画面から音声や動画を録画する方法に関する音声録音とスクリーン キャプチャという新しい記事を公開しました。この記事では、chrome.tabCapture
API と getDisplayMedia()
関数を使用した録画の複数の方法について説明します。
Chrome 114: storage.local 割り当ての増加
storage.local
プロパティの割り当てが約 10 MB に引き上げられました。これは、Web Extensions コミュニティ グループで合意されています。これにより、storage.local
は Chrome 112 で変更された storage.session
に対応します。
拡張機能 Service Worker の新しいチュートリアルとヘルプ
Service Worker は Chrome 拡張機能に欠かせないものです。Service Worker の登録、デバッグ、操作の基本を説明するチュートリアルを公開しました。また、重要なコンセプトについて詳しく説明した Service Worker ガイドを新たに追加しました。今後数か月で、このセクションを拡大していく予定です。
ウェブストアの違反に関するトラブルシューティングのヒント(その他)
Chrome ウェブストアでの公開をサポートするため、2 つの分野で新しいガイダンスを追加しました。最低限の機能に関するガイダンスは、ユーザーにメリットを提供し、ブラウジング体験を充実させることに重点を置いています。アフィリエイト広告に関するガイダンスでは、収益化のためにアフィリエイト リンクまたはコードを使用する拡張機能をユーザーに認識させ、表示される前にユーザーの操作を要求することで、ユーザーがある程度管理できるようにすることが示されています。
拡張機能マニフェスト コンバータの新しい手順
拡張機能マニフェスト コンバータの README を書き直し、ツールの実行後に必要な作業を簡単に確認できるようにしました。このコンバータは、Manifest V2 で構築された拡張機能を Manifest V3 に移行するのに役立ちます。新しい README では、ツールの機能の説明に、移行ガイドのチェックリストとほぼ一致する語句が使用されています。コンバータはすべてを実行するわけではありませんが、人間による判断を必要としない多くのタスクが排除されます。
Chrome 113: 画面外にドキュメントが表示される新しい理由
Offscreen Documents API に 2 つの新しい理由タイプを追加しました。LOCAL_STORAGE
を使用して、ウェブ プラットフォームの localStorage API にアクセスします。ウェブワーカーを作成するときに WORKER
を使用します。
デベロッパー ダッシュボードに Google アナリティクス 4 を導入
Chrome ウェブストア デベロッパー ダッシュボードで Google アナリティクス 4(GA4)がサポートされるようになりました。Google アナリティクスの設定を簡素化し、グループ パブリッシャーのアクセス管理をシンプルにしました。以前に Google ユニバーサル アナリティクスを使用してストアの掲載情報のアクティビティをトラッキングしていた場合は、引き続きストアの掲載情報に関するデータを受け取れるよう、2023 年 7 月 1 日までにご対応ください。詳しくは、Chromium 拡張機能に関する Google グループへの投稿をご覧ください。
File Handling API を ChromeOS に対応
File Handler API は、ChromeOS バージョン 112 と 113 の Canary 版で試験運用版として利用できます。指定した MIME タイプとファイル拡張子を持つファイルを ChromeOS の拡張機能で開くことができます。ファイル処理を実装するには、一連のルールを manifest.json
に追加します。この機能はプログレッシブ ウェブアプリと同じように機能します。詳しくは、このサイトの他の記事をご覧ください。
ファイル処理を有効にするには:
- 112 以降では、
--enable-features=ExtensionWebFileHandlers
フラグを使用して Chrome を起動します(112 以降) - 113 以降では、Chrome のアドレスバーに「
os://flags/#extension-web-file-handlers
」を貼り付けて、プルダウン メニューから [有効] を選択してください。
この機能は 6 月下旬の Chrome 115 でリリースされる予定です。最新情報については、こちらのスペースをご覧ください。
新しいサンプル: 動的な宣言とプログラムによる挿入
chrome.scripting
API の新しいサンプルを作成しました。コンテンツ スクリプトを実行時に登録する動的な宣言と、すでに開いているタブでスクリプトを実行するプログラムによる挿入について説明します。
新しいサンプル: 宣言型ネット リクエストのユースケース
Declarative Net Request API のデモを行う 3 つのサンプルが利用可能になりました。それぞれが 1 つのユースケースの実装を示しています。1 つ目は Cookie をブロックする方法を示しています。残りの 2 つは URL のブロックとリダイレクトを示しています
Chrome 112: storage.session の割り当ての増加
Chrome 112 以降、storage.session
プロパティの割り当てが約 10 MB に引き上げられました。これは、ウェブ拡張機能のコミュニティ グループ(https://github.com/w3c/webextensions/issues/350)で合意されています。
Chrome 109: 画面外ドキュメント
Manifest V3 拡張機能で画面外ドキュメントを利用できるようになりました。バックグラウンド ページから拡張機能 Service Worker に移行する場合、DOM 関連の機能や API がサポートされます。詳しくは、こちらのブログ投稿をご覧ください。
Chrome 110: 拡張機能が有効になっている
chrome.action.isEnabled()
メソッドは、拡張機能が特定のタブで有効になっているかどうかをプログラムで確認します。これにより、タブの有効化状態を維持する必要がなくなります。この新しいメソッドは、タブ ID とコールバックへの参照を受け取り、ブール値を返します。これには 1 つの制限があります。chrome.declarativeContent
を使用して作成されたタブは常に false を返します。
(chrome.action
名前空間に最近、拡張機能バッジの外観を制御する新しいメソッドが追加されました。詳しくは、バッジの色の設定をご覧ください)。
Chrome 110: Service Worker のアイドル タイムアウトの変更
以前は、拡張機能 Service Worker は 5 分の時点で頻繁にシャットダウンしていました。この動作を、ウェブ上での Service Worker の存続期間により近いものに変更しました。拡張機能 Service Worker は、非アクティブ状態が 30 秒間続いた場合、または単一のアクティビティの処理に 5 分以上かかる場合にシャットダウンされます。詳細については、拡張機能 Service Worker の存続期間を延長するをご覧ください。
投稿: Manifest V2 の段階的廃止の一時停止
Manifest V2 のサポート終了スケジュールは現在検討中であり、2023 年初頭に予定されていたテストは延期されています。詳しくは、chromium-extensions Google グループのアップデートをご覧ください。
Chrome 110: バッジの色を設定する
chrome.action
名前空間に 2 つの新しいメソッドが追加され、外観の拡張機能バッジをより細かく制御できるようになりました。setBadgeTextColor()
メソッドと getBadgeTextColor()
メソッドを使用すると、拡張機能でツールバー アイコンのバッジのテキストの色を変更してクエリを実行できます。これらの新しいメソッドを setBadgeBackgroundColor
および getBadgeBackgroundColor
と併用すると、デザインとブランドの一貫性を適用できます。
ブログ投稿: Manifest V3 への移行に関する詳細
Manifest V2 のサポート終了スケジュールを明確にしました。この情報を反映して、Manifest V2 のサポート タイムラインも更新しました。
ドキュメントの更新: Manifest V3 に移行する際の既知の問題
現在開発中の主な機能と未解決のバグのリストをまとめました。このページの目的は、プラットフォームの現状と、将来に備えるためにターゲットにできる機能について、デベロッパーの皆様に理解を深めていただくことです。
Chrome ウェブストア: 「プロモーション タイル(大)」の画像アップロードの削除
Chrome ウェブストアのデベロッパー ダッシュボードのアイテムの [ストアの掲載情報] タブから、「プロモーション タイル(大)」のアップロード UI が削除されました。これらの画像は一般ユーザー向けの UI で使用されていなかったため、この変更はエンドユーザー エクスペリエンスには影響しません。詳しくは、こちらの Chromium 拡張機能の投稿をご覧ください。
Chrome 106: file:// urls 上のページからウェブでアクセス可能なリソースへのアクセスを許可する
crbug.com/1219825#c11 によると、サンドボックス化された iframe や動的インポートなどの不透明なオリジンからも、ウェブでアクセス可能なリソースにアクセスできるはずです。
Chrome 106: 一部の非同期 API 関数で最終的な引数が正しくないバグを修正
以前は、Manifest V3 が非同期 API を呼び出す際に無効な final 引数が指定されることがあり、Chrome ではエラーが返されませんでした。この修正により、Chrome でエラーが発生し、一致する署名がなかったことが報告されるようになりました。API 呼び出しに誤った署名を誤って使用している場合、このバグ修正によって機能しなくなる場合は、Canary で拡張機能をチェックすることをおすすめします。
ブログ投稿: Chrome ウェブストアのアナリティクスを刷新
Chrome ウェブストアのデベロッパー ダッシュボードのアイテム分析機能が改善されました。新しいダッシュボードは一目で理解しやすく、最も役立つ情報が前もって統合されます。詳しくは、ブログ投稿をご覧ください。
Chrome 105: Identity API に関する約束
Identity API の関数で、Promise ベースの呼び出しがサポートされるようになりました。これに伴い、identity.getAuthToken()
のサーフェスが若干変更されます。Promise ベースの呼び出しに設定された非同期リターンのパラメータとして、「token」と「grantedScopes」を 1 つのオブジェクトのパラメータとして持つようになります(コールバック バージョンはこれらをコールバックの別個の引数として受け取るのとは異なります)。
Chrome 104: Manifest V3 で新しいファビコン API が利用可能に
Manifest V3 拡張機能で、新しい URL パターン chrome-extension://<id>/_favicon/
を使用してファビコンにアクセスできるようになりました。chrome://favicons
API に代わるものです。詳しくは、Favicon API のドキュメントをご覧ください。
ドキュメントの更新: デベロッパーの取引業者/非取引業者の開示
取引業者/非取引業者のデベロッパー ID を追加しました。これにより、デベロッパーは取引業者/非取引業者のステータスを正確に自己申告できます。
Chrome 103: Manifest V3 の Wasm で wasm-unsafe-eval が必要
Chrome はデフォルトで拡張機能 script-src: wasm-unsafe-eval
を付与しなくなりました。WebAssembly を使用する拡張機能では、content_security_policy
宣言の extension_pages
にこのディレクティブと値を明示的に追加する必要があります。
Chrome 103: MV3 のショートカットの変更をすぐに反映
chrome://extensions/shortcuts
で Manifest V3 拡張機能のキーボード ショートカットを変更すると、更新がすぐに適用されるようになりました。以前は、変更を反映するには拡張機能を再読み込みする必要がありました。
Chrome 102: メイン環境の動的コンテンツのスクリプト
動的に登録されたコンテンツ スクリプトで、アセットが挿入される世界を指定できるようになりました。詳しくは、scripting.registerContentScripts()
をご覧ください。
Chrome 102: 新しいマニフェスト フィールド「optional_host_permissions」
Manifest V3 拡張機能で manifest.json で optional_host_permissions
キーを指定できるようになりました。これにより、Manifest V2 拡張機能が optional_permissions
キーを使用するのと同様に、Manifest V3 拡張機能でホストのオプションの一致パターンを宣言できるようになります。
Chrome 102: scripting.executeScript() の injectImmediately プロパティ
chrome.scripting.executeScript()
が、injection
引数でオプションの injectImmediately
プロパティを受け入れるようになりました。この属性が存在して true に設定されている場合、スクリプトは document_idle
を待たずに、できるだけ早くターゲットに挿入します。API 呼び出し中もページの読み込みは継続されるため、これはページ読み込み前にスクリプトが挿入することを保証するものではありません。
Chrome 102: Manifest V3 で Omnibox API をサポート
Service Worker ベースの拡張機能で Omnibox API を使用できるようになりました。以前は、この API の一部のメソッドは、DOM 機能に対する内部依存関係により、呼び出し時にスローしていました。
Chrome 102: Manifest V3 CSP で wasm-unsafe-eval が利用可能に
Manifest V3 拡張機能で、content_security_policy
宣言に wasm-unsafe-eval
を含めることができるようになりました。この変更により、Manifest V3 拡張機能で WebAssembly を使用できるようになります。
Chrome 102: 新しい storage.session API
Manifest V3 拡張機能で、メモリ ストレージ storage.session を使用できるようになりました。
ドキュメントの更新: Chrome ウェブストアのアイテム検索
Chrome ウェブストアでの公開では、ユーザーが Chrome ウェブストアでアイテムを見つける方法と、編集者がアイテムを選択する方法の概要を説明します。
Chrome 101: declarativeNetRequest ドメイン条件の改善
declarativeNetRequest ルールの条件が更新され、拡張機能がリクエストの「リクエスト」ドメインと「イニシエータ」ドメインに基づいてリクエストをより適切にターゲットにできるようになりました。関連する条件プロパティは、initiatorDomains
、excludedInitiatorDomains
、requestDomains
、excludedRequestDomains
です。こちらの chromium-extensions スレッドもご覧ください。
Chrome 100: 新しく作成されたタブでの scripting.executeScript() の問題を解決
新しく作成されたタブまたはウィンドウで scripting.executeScript()
を呼び出したときに失敗する場合があるという、長年にわたる問題を修正しました。
Chrome 100: ネイティブ メッセージング ポートで Service Worker の動作を維持
拡張機能の Service Worker で chrome.runtime.connectNative()
を使用してネイティブ メッセージング ホストに接続すると、ポートが開いている間 Service Worker は動作し続けます。
Chrome 100: omnibox.setDefaultSuggestion() が Promise とコールバックをサポート
omnibox.setDefaultSuggestion()
メソッドは、提案が正しく設定されたことをデベロッパーが確認できるように、Promise を返すかコールバックを受け入れるようになりました。
Chrome 100: 拡張機能 Service Worker での i18n.getMessage() のサポート
chrome.i18n.getMessage()
API が拡張機能 Service Worker のコンテキストでサポートされるようになりました。
Chrome 99: Canary 版 match_origin_as_fallback
コンテンツ スクリプトで、about:
、data:
、blob:
、filesystem:
の URL を持つフレームなど、一致するフレームに関連するフレームに挿入する match_origin_as_fallback
キーを指定できるようになりました。詳しくは、コンテンツ スクリプトのドキュメントをご覧ください。
Chrome 99: Canary の拡張機能 Service Worker で file: スキームをサポート
Service Worker ベースの Manifest V2 拡張機能と Manifest V3 拡張機能で、Fetch API を使用して file:
スキーム URL をリクエストできるようになりました。file:
スキーム URL にアクセスするには、ユーザーが chrome://extensions
ページで拡張機能の [ファイルの URL へのアクセスを許可する] を有効にする必要があります。
Chrome 99: Canary 版メッセージ API のサポートを約束
Manifest V3 用にビルドされた拡張機能の tabs.sendMessage
、runtime.sendMessage
、runtime.sendNativeMessage
に Promise のサポートが追加されました。
ドキュメントの更新: Chrome ウェブストアの審査に関するドキュメント
Chrome ウェブストアの審査プロセスの概要と、デベロッパー プログラム ポリシーの適用方法について説明する新しいリファレンス ページを追加しました。
Chrome 98: scripting.executeScript() と scripting.insertCSS() で複数のファイルを受け入れる
Scripting API の executeScript()
メソッドと insertCSS()
メソッドが複数のファイルを受け入れるようになりました。以前は、これらのメソッドには 1 つのファイル エントリを含む配列が必要でした。
ドキュメントの更新: 違反に関するトラブルシューティングの更新を確認する
Chrome ウェブストアの違反のトラブルシューティングページが更新され、不承認の一般的な理由に関する詳細なガイダンスがデベロッパーに提供されました。
Chrome 96: Promise のサポートを 27 個の API に拡大
このリリースには、以前のリリースよりも大幅に多くの Promise の更新内容が含まれています。アップデートには、一般的な拡張機能 API と ChromeOS 固有の拡張機能 API の両方が含まれます。詳しくは、次のセクションを開いてください。
拡張機能 API
多くの API が Manifest V3 で Promise をサポートするようになりました。
chrome.browsingData
chrome.commands
chrome.contentSettings
chrome.debugger
chrome.downloads
chrome.enterprise.hardwarePlatform
chrome.fontSettings
chrome.history
chrome.instanceID
chrome.permissions
chrome.processes
chrome.search
chrome.sessions
chrome.topSites
また、ChromeSetting
プロトタイプを使用する API でも Promise がサポートされるようになりました。この変更の影響を受ける API は以下のとおりです。
ChromeOS の API
chrome.certificateProvider
chrome.documentScan
chrome.enterprise.deviceAttributes
chrome.enterprise.networkingAttributes
chrome.fileBrowserHandler
chrome.fileSystemProvider
chrome.loginState
chrome.printingMetrics
chrome.wallpaper
Chrome 96: 動的コンテンツのスクリプト
chrome.scripting
API で、実行時にコンテンツ スクリプトの登録、更新、登録解除、リストの取得がサポートされるようになりました。これまで、コンテンツ スクリプトは拡張機能の manifest.json で静的に宣言するか、chrome.scripting.executeScript()
を使用して実行時にプログラムで挿入する必要がありました。
ドキュメントの更新: Manifest V2 のサポート タイムライン
Manifest V2 から V3 への移行スケジュールはこちらのブログ投稿で発表され、より詳細なタイムライン ページが公開されています。
Chrome 96: declarativeNetRequestWithHostAccess 権限
新しい declarativeNetRequestWithHostAccess
権限により、拡張機能がホスト権限を持つサイトで chrome.declarativeNetRequest
API を使用できるようになります。また、これにより、webRequest
、webRequestBlocking
、サイト固有のホスト権限を使用する既存の Manifest V2 拡張機能を、ユーザーが新しい権限を承認しなくても chrome.declarativeNetRequest
API に移行できるようになります。
Chrome 95: スクリプトをページに直接挿入
chrome.scripting
API の executeScript()
メソッドで、スクリプトをページのメイン環境に直接挿入できるようになりました。以前は、拡張機能は独立した環境に直接しか挿入できませんでした。分離された環境について詳しくは、コンテンツ スクリプトのドキュメントをご覧ください。
Chrome 95: Storage API のサポートを約束
chrome.storage
API の Manifest V3 バージョンのメソッドが Promise を返すようになりました。
ポリシーの更新: 2 段階認証プロセスの適用
2021 年 6 月 29 日に公開されたポリシーの更新に関するブログ投稿を更新し、2 段階認証プロセスのデプロイ タイムラインを修正しました。
Chrome 94: 宣言型ネット リクエストの静的ルールセットの変更
chrome.declarativeNetRequest
で、一度に最大 50 個の静的ルールセット(MAX_NUMBER_OF_STATIC_RULESETS)を指定し、最大 10 個のルールセット(MAX_NUMBER_OF_ENABLED_STATIC_RULESETS)を有効にできるようになりました。
Chrome 93: クロスオリジン分離のサポート
Manifest V2 拡張機能と Manifest V3 拡張機能の両方で、クロスオリジン分離を有効にできるようになりました。この機能により、拡張機能のページを読み込むことができるクロスオリジン リソースが制限され、SharedArrayBuffer
などの低レベルのウェブ プラットフォーム機能を使用できるようになります。Chrome 95 以降、オプトインが必要になります。
ポリシーの更新: デベロッパー プログラム ポリシーの更新
Chrome ウェブストアのデベロッパー プログラム ポリシーを更新し、不正なインストール手法、スパム、繰り返しの多いコンテンツに関するポリシーについて明確な説明を追加しました。 このアップデートには、Chrome ウェブストアで公開するための 2 段階認証プロセスの新しい要件も含まれています。詳しくは、ブログ投稿をご覧ください。
ブログ投稿: Manifest V3 での拡張機能の操作
Chrome 拡張機能には数年前から chrome.browserAction
API と chrome.pageActions
API がありましたが、Manifest V3 ではどちらも汎用の chrome.actions
API に置き換えられました。この投稿では、これらの API の歴史と Manifest V3 での変更点について説明します。投稿を読む
ブログ投稿: chrome.scripting のご紹介
chrome.scripting
API は、スクリプトに重点を置いた新しい Manifest V3 API です。この投稿では、この変更を行う理由と新しい機能について詳しく説明します。投稿を読む
Chrome 92: モジュールの Service Worker のサポート
Chrome で Service Worker で JavaScript モジュールがサポートされるようになりました。マニフェストでモジュールを指定するには:
"background": {
"service_worker": "script.js",
"type": "module"
}
これにより、ワーカー スクリプトが ES モジュールとして読み込まれ、ワーカーのスクリプトで import
キーワードを使用して他のモジュールをインポートできるようになります。
Chrome 91: chrome.action.getUserSettings()
新しい chrome.action.getUserSettings()
メソッドを使用すると、ユーザーが拡張機能をメイン ツールバーに固定しているかどうかを判別できます。
Chrome 90: chrome.scripting.removeCSS()
新しい chrome.scripting.removeCSS()
メソッドを使用すると、以前に chrome.scripting.insertCSS()
を介して挿入された CSS を拡張機能で削除できます。これは chrome.tabs.removeCSS()
に代わるものです。
Chrome 90: scripting.executeScript() から Promise を返す
chrome.scripting.executeScript()
が Promise を返すようになりました。スクリプト実行の結果の値が Promise の場合、Chrome は Promise が解決するまで待機し、その結果の値を返します。
Chrome 90: chrome.scripting.executeScript() の結果に frameId が含まれる
chrome.scripting.executeScript()
から返される結果に frameId が追加されました。frameId
プロパティは結果の出所であるフレームを示します。これにより、拡張機能で複数のフレームを挿入する際に、結果を個々のフレームに簡単に関連付けることができます。
Chrome 89: タブグループを管理するための新しい API
新しい chrome.tabGroups
API と chrome.tabs
の新機能を使用すると、拡張機能でタブグループの読み取りと操作を行えます。Manifest V3 が必要です。
Chrome 89: ウェブでアクセス可能なリソースに対してカスタマイズ可能な権限
Manifest V3 でのウェブでアクセス可能なリソースの定義が変更され、リクエスト元のオリジンまたは拡張機能 ID に基づいて拡張機能がリソースへのアクセスを制限できるようになりました。
ブログ投稿: 拡張機能マニフェスト コンバータ
Chrome 拡張機能チームは、「拡張機能マニフェスト コンバータ」をオープンソース化しています。これは、拡張機能を Manifest V3 に変換する際の機械的な側面の一部を自動化する Python ツールです。お知らせのブログ投稿を参照して、GitHub から入手してください。
Chrome 88: Manifest V3 の一般提供を開始
Manifest V3 は拡張機能プラットフォームのメジャー アップデートです。新機能と変更された機能の概要については、Manifest V3 の概要をご覧ください。当面は拡張機能で Manifest V2 を引き続き使用できますが、これは近い将来に段階的に廃止される予定です。新しい拡張機能には Manifest V3 を使用して、既存の拡張機能をできるだけ早く Manifest V3 に移行することを強くおすすめします。