Chrome 拡張機能、拡張機能のドキュメント、関連するポリシーなどの変更については、このページを頻繁にご確認ください。その他のお知らせは、拡張機能の Google グループで確認できます。Chrome のスケジュールには、安定版とベータ版のリリース日が記載されています。
ブログ投稿: 新しい拡張機能メニュー
Google I/O 2024 では、拡張機能メニューの今後の変更に関する初期デザインをいくつかご紹介しました。この変更により、拡張機能がアクセスできるサイトをユーザーがより細かく管理できるようになります。これらの変更は、カナリア版のごく一部のユーザーを対象にテストを開始し、今後はより多くのユーザーに展開していく予定です。
また、chrome.permissions.addHostAccessRequest()
API も導入されます。
詳しくは、ブログ投稿をご覧ください。
Chrome 132: Tabs API の新しい frozen プロパティ
Chrome 132 以降、Tabs API の frozen
プロパティは、タブがブラウザによってフリーズされているかどうかを示します。フリーズされたタブに送信されたメッセージはキューに追加され、タブのフリーズが解除されると処理されます。
Chrome 拡張機能の Prompt API
拡張機能向けの Prompt API がオリジン トライアルで利用可能になりました。これにより、Google の最も効率的な言語モデルである Gemini Nano を使用する Chrome 拡張機能をブラウザで構築できるようになりました。
Chrome 131 ~ 136 で実施されている Prompt API のオリジン トライアルに参加して、フィードバックをお寄せください。ご意見は、この API の今後のバージョンと、すべての組み込み AI API の構築と実装に直接影響します。
ブログ投稿: Chrome 拡張機能の最新情報(2024 年 10 月)
Chrome 拡張機能の最新情報をお知らせします。AI インテグレーション、新しい API、イベント、動画に関する最新情報をお届けします。詳しくは、Chrome 拡張機能の最新情報(10 月版)をご覧ください。
組み込み AI チャレンジに参加する
Chrome では、組み込み AI チャレンジを開始しました。Chrome の統合 AI モデルと API を使用して革新的なウェブ アプリケーションや Chrome 拡張機能を作成し、総額 65,000 米ドルの賞金を獲得するチャンスにぜひご参加ください。
登録して詳細を確認するには、組み込み AI チャレンジのウェブサイトをご覧ください。ウェブに AI を組み込んで、皆様がどのようなものを作成されるのか、楽しみにしております。
Chrome 130: action.onUserSettingsChanged
Chrome 130 以降では、action.onUserSettingsChanged イベントを使用できます。これは、WebExtensions コミュニティ グループの提案に基づくものです。Chromium への貢献に感謝いたします。
Chrome 130: StorageArea.getKeys()
Chrome 130 以降では、chrome.storage
API で使用される StorageArea インターフェースで getKeys() メソッドを使用できます。これは、WebExtensions コミュニティ グループの提案に基づくものです。
Chrome 128: 宣言型ネット リクエストでのレスポンス ヘッダーの照合
Chrome 128 以降では、Declarative Net Request API でレスポンス ヘッダーのマッチングがサポートされます。これは、特に Content-Type ヘッダーの照合に関する一般的なリクエストでした。Google は、WebExtensions コミュニティ グループと協力して適切な API を設計しました。
API リファレンスが更新され、新しい responseHeaders
フィールドと excludedResponseHeaders
フィールドが追加されました。これを使用して、特定のヘッダーの存在と値を確認できます。
今回の更新の一環として、ルールの照合方法を説明するルールの評価のセクションをドキュメントに追加しました。特にヘッダー マッチングの場合、ルールはレスポンス ヘッダーが受信された後にのみ実行できるため、他のルールよりも後の段階で適用されます。つまり、リクエストはブロックまたはリダイレクトされる前にサーバーに到達します。
動画: コンテンツ スクリプトとは
Chrome 拡張機能のコンテンツ スクリプトについて学びます。特定のページで実行する CSS と JavaScript を登録する方法などについて説明します。動画全編をチェック
重要なポリシーの更新
Chrome ウェブストア チームは、高品質なプロダクトの開発を促進し、欺瞞的な行為を防止し、ユーザーの十分な同意を確保することを目的として、デベロッパー プログラム ポリシーのページを更新しました。Chrome ウェブストアのポリシー マネージャーである Rebecca Soares が、Chrome 拡張機能: 重要なポリシーの更新に関するブログ投稿で、すべての更新内容をまとめています。
ブログ投稿: Chrome 拡張機能の最新情報(2024 年 7 月)
過去 3 か月間に、Manifest V2 の段階的な廃止の開始など、いくつかの重要なアップデートと新機能がリリースされました。Chrome 拡張機能の最新情報(7 月版)で最新情報をご確認ください。
動画: リモート ホストコードとは
Chrome 拡張機能チームの Patrick が、Chrome 拡張機能のリモート ホストコード(RHC)のコンセプトについて説明します。RHC が許可されなくなった理由、検出方法、拡張機能の更新が必要な場合の対処方法について説明します。動画全編をチェック
Chrome 127: 新しい action.openPopup API
Chrome 127 以降、action.openPopup
API はすべての拡張機能で使用できます。これまで、この機能は Canary でのみ、またはポリシーによってインストールされた拡張機能でのみ使用できました。
動画: Trust & Safety チームへのインタビュー
Chrome 拡張機能 DevRel チームは、Chrome ウェブストアの審査を担当する信頼性と安全性チームと連携し、ユーザーの皆様から寄せられた質問に回答しました。動画全編をチェック
ブログ投稿: Manifest V2 の段階的な廃止の開始
6 月 3 日より、Chrome ベータ版、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 Web Store 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 文字に引き上げます。この上限は現在ストアにある拡張機能のほぼすべてに適用されるため、この変更によってお客様側で必要な対応はほとんどありません。名前が最大上限を超える拡張機能をアップロードしようとすると、ストアによってアップロードがブロックされます。
ブログ投稿: eyeo によるサービス ワーカーの停止テストの取り組み
eyeo の拡張機能エンジン チームによるこの投稿では、拡張機能サービス ワーカーのテストに関する問題について説明します。Manifest V2 では、拡張機能は拡張機能のライフサイクル全体で常時アクティブなバックグラウンド ページに存在していました。Manifest V3 では代わりにサービス ワーカーが使用されます。サービス ワーカーは、不要になったときにシャットダウンすることでリソースを節約するように設計されています。これには、特定のテストに関する課題があります。この記事では、eyeo がこれらの課題にどのように取り組んだかについて説明します。
Chrome 123: デバイスがスリープ状態のときにアラームが実行されるようになりました
chrome.alarms
API を使用して設定されたアラームが、デバイスがスリープ状態になったときに遅延しなくなりました。デバイスがスリープ状態から復帰すると、アラームは、アラームを何回でもスルーしていた場合でも 1 回だけ鳴ります。たとえば、アラームが 1 時間に 1 回鳴るように設定されていて、アラームが設定されているデバイスが午前 12 時 55 分から午前 2 時 5 分までスリープ状態の場合、onAlarm
イベントは午前 2 時のアラームによってのみトリガーされます。できるだけ午前 2 時近くにトリガーされ、デバイスがスリープ状態から復帰するとすぐにトリガーされます。
この変更により、Chrome はウェブ拡張機能コミュニティ グループで合意された動作に沿うようになります。
ブログ投稿: 拡張機能メッセージ ポートでの bfcache 動作の変更
バックフォワード キャッシュ(bfcache)は、前のページと次のページにすぐに移動できるようにブラウザを最適化する機能です。Chrome 123 以降では、オープンな拡張機能ポートを持つページが bfcache に保存されると、メッセージ チャネルが閉じられます。つまり、そのページにはメッセージが送信されなくなります。そのため、拡張機能のスクリプトは onDisconnect
などのライフサイクル イベントをリッスンし、ページが BFCache から復元されたときに新しい接続をセットアップする必要があります。
詳細とサンプルコードについては、拡張メッセージ ポートを使用した BFCache の動作の変更をご覧ください。
Chrome 122: 非同期拡張機能 API での Promise のサポート
すべての非同期拡張機能 API メソッドに対する Promise のサポートの実装が完了しました。これは、非同期オペレーションの処理の人間工学を改善することで、API メソッドをモダナイズするために行われました。一部のメソッド(desktopCapture.chooseDesktopMedia()
など)は、現在のサーフェスが Promise と互換性がないため、引き続きコールバックのみをサポートします。下位互換性のため、コールバックは引き続きサポートされています。失敗する Promise が見つかった場合は、バグを報告してください。
リアルタイムのコミュニケーションに関する新しいガイダンス
拡張機能のリアルタイム オプションに関するガイドを公開しました。リアルタイム更新では、サーバーから拡張機能のインストールに直接即時通信パスが確立されます。また、chrome.gcm と ウェブプッシュの使用に関する新しいガイダンスも提供しています。
新しいガイダンスとサンプル: サービス ワーカーの終了をテストする
Puppeteer でサービス ワーカーの終了をテストする方法に関するガイドを公開しました。付属のサンプルでは、Puppeteer と Selenium でこのことを示しています。
ネイティブ メッセージのサンプルを更新しました
ネイティブ メッセージングの更新されたサンプルを公開しました。この API を使用すると、拡張機能が別のアプリを起動して通信できます。この作業にご協力いただいた GitHub コントリビューター Shubham-Rasal 様に感謝いたします。
Chrome 121: tabs.Tab の新しい lastAccessed プロパティ
tabs.Tab
オブジェクトに lastAccessed
という新しいプロパティが追加されました。このプロパティは、タブが最後に有効にされた日時を示します。返される値は、エポックからのミリ秒単位です。
Chrome 121: サポートされていない「background」キーに対して警告を出す
Manifest V2 から Manifest V3 への変更では、バックグラウンド スクリプトを拡張機能の Service Worker に置き換えるために、"background"
マニフェスト キーの子要素が変更されました。以前は、Manifest V2 キー "scripts"
、"page"
、"persistent"
を Manifest V3 拡張機能の "background"
キーに追加するとエラーが発生していました。これらのキーが存在すると、警告がトリガーされるようになりました。
これは、コミュニティ グループの提案に基づき、複数のブラウザの拡張機能で単一のマニフェスト ファイルを使用することを可能にするための措置です。
Chrome 120: アラームの最小粒度を 30 秒に短縮
Chrome 120 以降、Manifest V3 拡張機能では、60 秒以上の値を必要とせず、30 秒の遅延または期間で chrome.alarms
API を使用できます。
ブログ投稿: Manifest V3 への移行の再開
Manifest V2 のサポート タイムラインが更新されました。詳しくは、2023 年 11 月の投稿をご覧ください。
ブログ投稿: Manifest V3 でのコンテンツ フィルタリング サポートの改善
declarativeNetRequest API の改善点については、新しいブログ投稿をご覧ください。
ブログ投稿: Chrome 120 の拡張機能の新機能
Chrome 120 ベータ版が最近リリースされました。拡張機能のデベロッパーに関連する重要な更新の概要については、新しいブログ投稿「Chrome 120 の拡張機能に関する新機能」をご覧ください。また、このリリースでは、重要なプラットフォームのギャップのリストから最後の 2 つの項目(userScripts、ChromeOS のファイル ハンドラ)が削除されるため、大きなマイルストーンとなります。
公開情報: デベロッパー ダッシュボードでのプライバシー ポリシーの URL の取り扱いに関する変更
デベロッパー ダッシュボードのプライバシー ポリシーがアイテム単位で追加されるようになりました。これにより、アイテムごとに異なるプライバシー ポリシーを指定できます。この変更について詳しくは、PSA をご覧ください。
動画: Matt Frisbie とのチャット
Chrome for Developers YouTube チャンネルに、Google デベロッパー エキスパートで著者の Matt Frisbie とのチャット動画を公開しました。こちらからご覧ください。
拡張機能のテストに関する新しいガイダンス
拡張機能の自動テストを作成する方法に関する新しいガイダンスを公開しました。これには、単体テストを作成する方法、一般的なガイダンス、エンドツーエンド テストに関するチュートリアルが含まれます。
ブログ投稿: Chrome 拡張機能の最新情報 - 2023 年 10 月
Chrome 拡張機能の最新情報の第 2 版を公開しました。この投稿では、サービス ワーカーの安定性に関する問題への対応や、MV3 プラットフォームのギャップの解消など、拡張機能チームがここ数か月間取り組んできた内容について説明しています。また、Reading List API や User Scripts API など、今後リリースされる API についてもご紹介します。
Declarative Net Request 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 と Web Storage API に関するドキュメント
Chrome 拡張機能で Cookie と Web Storage API がどのように機能するかに関する新しいガイドを公開しました。プライバシー サンドボックスの Cookie とストレージ パーティションの変更、一連の新しいウェブ プラットフォーム API の作成を通じてサードパーティ Cookie を非推奨にする継続的なプロジェクト、拡張機能でのこれらの機能の詳細が含まれています。
広告表示オプションのサンプルを検索できるようになりました
先日、Chrome 拡張機能のサンプルを検索できるページを作成しました。検索ページには複数のオプションがあります。検索ボックスを使用すると、サンプルのタイトル内のテキストを検索できます。権限または拡張機能 API で検索を制限できます。追加のフィルタを使用すると、API サンプルまたは機能(ユースケース)サンプルに検索を制限できます。
この新しいサンプルページは、Google Summer of Code 参加者の Xuezhou Dai によって作成されました。Xuezhou Dai は、いくつかの新しいサンプルも提供しています。昨年夏の経験については、Google のブログ投稿をご覧ください。
以前と同様に、コードサンプルは GitHub で引き続きクローンを作成またはフォークできます。
Chrome 118: file: スキーム 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 には多くの改善が含まれているため、それらについて説明するブログ投稿を作成しました。Chrome 116 は 7 月 19 日時点でベータ版です。
ブログ投稿: Chrome 拡張機能の最新情報
今年の拡張機能の変更と改善の概要を公開しました。この投稿では、サイドパネル API、サービス ワーカーの機能強化、オフスクリーン ドキュメントなど、今年の大きな新機能について説明しています。また、今四半期の取り組みについてもご紹介します。この記事では、その他の多くの機能と、それらへのリンクを紹介します。
新しいガイダンスとサンプル: Chrome 拡張機能で Google アナリティクス 4 を使用する方法
Google アナリティクスと位置情報に関する新しいガイダンスとサンプルを公開しました。
- Chrome 拡張機能で Google アナリティクス 4 を使用する方法を説明したGoogle アナリティクスのガイダンスの最新版。また、GitHub のサンプル リポジトリに、動作する Google アナリティクス 4 のサンプルを追加しました。Google アナリティクスに関連するコードについては、
google-analytics.js
をご覧ください。 - 新しい位置情報ガイドと、サービス ワーカー、コンテンツ スクリプト、ポップアップ、サイドパネルで位置情報にアクセスする方法を示した3 つのサンプル。
Chrome 115: chrome.offscreen.createDocument() で複数の理由を指定
chrome.offscreen.createDocument()
を呼び出すときに、複数の reason
列挙型を指定できるようになりました。オフスクリーン ドキュメントを複数の目的で使用する場合に使用します。ブラウザは、指定された理由を使用して、オフスクリーン ドキュメントの存続期間を決定します。
新しいツール: 拡張機能の更新テストツール
拡張機能の更新テストツールがリリースされました。これは、ローカル開発中に Chrome 拡張機能の更新(権限の付与など)をテストするために使用できるローカル拡張機能更新サーバーです。このツールには、ユーザーの更新フローが表示されます。たとえば、ユーザーが新たにリクエストされた権限を付与するまで拡張機能を無効にします。このツールは、拡張機能を Manifest V2 から Manifest V3 に更新する際にリクエストされる権限の変更をシミュレートする場合に特に便利です。
Chrome 114: 新しい Side Panel API
新しい Side Panel API が導入されました。これは、ユーザーがブラウジング中のコンテンツとともにツールにアクセスできるコンパニオン サーフェスです。詳しくは、サイドパネル API リファレンスをご覧ください。また、GitHub のサンプル リポジトリにサイドパネルのサンプルを多数追加しました。サイドパネルの詳細については、新しいブログ投稿「新しいサイドパネル API による優れたユーザー エクスペリエンスの設計」もご覧ください。また、品質に関するガイドライン ポリシーとベスト プラクティスも見直され、高品質なサイドパネル拡張機能の作成に関するガイダンスが追加されました。
この API の作成には皆様のフィードバックが重要です。ご意見や機能リクエストは chromium-groups で共有してください。今後も Side Panel API の機能強化に取り組んでまいりますので、最新情報をご確認ください。
新しいサンプル: 拡張機能の WASM
拡張機能で WASM を使用する方法を示す新しいサンプルが 2 つあります。
- Manifest V3 で WASM を使用するでは、WASM モジュールを含める一般的な方法について説明しています。
- Manifest V3 で WASM をモジュールとして使用するでは、モジュールでの使用方法について説明しています。
これらのサンプルを提供してくれた GitHub コントリビューター @daidr に感謝します。
Manifest V3 の移行ガイダンスの更新
Manifest V3 への移行ガイダンスの既知の問題セクションを更新し、Manifest V2 のサポート終了の新しいタイムラインを発表する前に解消する予定の拡張機能プラットフォームのギャップのリストを更新しました。
Manifest V3 による音声と動画の録画
マニフェスト V3 でタブ、ウィンドウ、画面から音声や動画を録画する方法について説明する新しい記事「音声録音と画面キャプチャ」を公開しました。この記事では、chrome.tabCapture
API と getDisplayMedia()
関数を使用した録音の複数のアプローチについて説明します。
Chrome 114: storage.local の割り当てを増加
storage.local
プロパティの割り当てを約 10 MB に引き上げました。これは、ウェブ拡張機能コミュニティ グループで合意されたものです。これにより、storage.local
は Chrome 112 で変更された storage.session
と整合するようになります。
新しい拡張機能サービス ワーカーのチュートリアルとヘルプ
サービス ワーカーは Chrome 拡張機能の不可欠な要素です。サービス ワーカーの登録、デバッグ、操作の基本について説明するチュートリアルを公開しました。また、重要なコンセプトを詳しく説明する新しいサービス ワーカー ガイドも追加しました。このセクションは今後数か月以内に拡張される予定です。
ウェブストアの違反に関するその他のトラブルシューティングのヒント
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 Extensions の Google グループの投稿をご覧ください。
File Handling API が ChromeOS に登場
File Handler API は、ChromeOS の Canary バージョン 112 と 113 でテストできます。これにより、ChromeOS の拡張機能は、指定した MIME タイプとファイル拡張子を持つファイルを開くことができます。ファイル処理を実装するには、manifest.json
にルールセットを追加します。この機能はプログレッシブ ウェブアプリの場合と同じように機能します。詳しくは、このサイトの記事をご覧ください。
ファイル処理を有効にするには:
--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 に引き上げられました。これは、Web Extensions コミュニティ グループ(https://github.com/w3c/webextensions/issues/350)で合意されました。
Chrome 109: 画面外ドキュメント
画面外ドキュメントを Manifest V3 拡張機能で使用できるようになりました。これらは、DOM 関連の機能と API をサポートすることで、バックグラウンド ページから拡張機能 Service Worker への移行を支援します。詳しくは、ブログ投稿をご覧ください。
Chrome 110: 拡張機能が有効になっているかどうか
chrome.action.isEnabled()
メソッドは、特定のタブで拡張機能が有効になっているかどうかをプログラムで確認します。これにより、タブの有効状態を維持する必要がなくなります。この新しいメソッドは、タブ ID とコールバックへの参照を受け取り、ブール値を返します。ただし、chrome.declarativeContent
を使用して作成されたタブは常に false を返します。
(chrome.action
名前空間には最近、拡張機能バッジの表示を制御する新しいメソッドが追加されました。詳しくは、バッジの色を設定するをご覧ください)。
Chrome 110: Service Worker のアイドル状態のタイムアウトの変更
これまで、拡張機能のサービス ワーカーは 5 分経過すると頻繁にシャットダウンしていました。この動作は、ウェブでの Service Worker の存続期間に近づけるように変更されました。拡張機能のサービス ワーカーは、30 秒間操作がない場合、または 1 つのアクティビティの処理に 5 分以上かかる場合にシャットダウンされます。詳細については、拡張機能サービス ワーカーの存続時間を延長するをご覧ください。
投稿: 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-extensions の投稿をご覧ください。
Chrome 106: file:// URL のページがウェブでアクセス可能なリソースにアクセスできるようにする
crbug.com/1219825#c11 によると、サンドボックス化された iframe や動的インポートなどの不透明なオリジンも、ウェブにアクセス可能なリソースにアクセスできる必要があります。
Chrome 106: 一部の非同期 API 関数で間違った最終引数を許可するバグを修正しました
以前の Manifest V3 では、非同期 API を呼び出す際に無効な最終引数を指定しても、Chrome でエラーは発生しませんでした。この修正により、Chrome は正しくエラーを報告し、一致する署名がないことを報告するようになりました。デベロッパーは、このバグ修正によって破損する API 呼び出しで誤った署名を誤って使用している場合に備えて、Canary で拡張機能のエラーを確認することをおすすめします。
ブログ投稿: Chrome ウェブストアのアナリティクスの刷新
Chrome ウェブストアのデベロッパー ダッシュボードのアイテム分析機能が刷新されました。新しいダッシュボードは、一目で理解しやすく、最も有用な情報が最初に表示されます。詳しくは、こちらのブログ投稿をご覧ください。
Chrome 105: Identity API の Promise
Identity API の関数で、Promise ベースの呼び出しがサポートされるようになりました。これにより、identity.getAuthToken()
のサーフェスが若干変更されます。Promise ベースの呼び出しに設定された非同期リターンには、1 つのオブジェクトのパラメータとして「token」と「grantedScopes」が含まれます(コールバック バージョンでは、コールバックの個別の引数として受け取られます)。
Chrome 104: Manifest V3 用の新しい favicons API
Manifest V3 拡張機能は、新しい URL パターン chrome-extension://<id>/_favicon/
を使用してファビコンにアクセスできるようになりました。ここで、chrome://favicons
API に代わるものです。詳しくは、Favicon API のドキュメントをご覧ください。
ドキュメントの更新: デベロッパーの取引業者/非取引業者の開示
トレーダー/非トレーダーのデベロッパー識別情報を追加しました。これにより、トレーダー/非トレーダーのステータスを正確に自己申告するようデベロッパーに通知します。
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 のサポート
サービス ワーカー ベースの拡張機能で Omnibox API を使用できるようになりました。以前は、DOM 機能に対する内部依存関係により、この API の一部の関数は呼び出し時にスローされていました。
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 ウェブストアでアイテムを見つける方法と、Google の編集者が注目のアイテムを選択する方法について説明しています。
Chrome 101: declarativeNetRequest ドメイン条件の改善
declarativeNetRequest ルールの条件が更新され、拡張機能がリクエストの「request」ドメインと「initiator」ドメインに基づいてリクエストをより適切にターゲティングできるようになりました。関連する条件プロパティは initiatorDomains
、excludedInitiatorDomains
、requestDomains
、excludedRequestDomains
です。こちらの chromium-extensions スレッドもご覧ください。
Chrome 100: 新しく作成されたタブでの scripting.executeScript() に関する問題を解決
新しく作成されたタブまたはウィンドウで scripting.executeScript()
を呼び出すと失敗する、長年の問題を修正しました。
Chrome 100: ネイティブ メッセージング ポートがサービス ワーカーを存続させる
拡張機能のサービス ワーカーで chrome.runtime.connectNative()
を使用してネイティブ メッセージング ホストに接続すると、ポートが開いている限り、サービス ワーカーは存続します。
Chrome 100: omnibox.setDefaultSuggestion() がプロミスとコールバックをサポート
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 で file: スキームの拡張機能 Service Worker のサポート
Service Worker ベースの Manifest V2 拡張機能と Manifest V3 拡張機能は、Fetch API を使用して file:
スキームの URL をリクエストできるようになりました。file:
スキームの URL にアクセスするには、引き続きユーザーが chrome://extensions
ページで拡張機能の [ファイル URL へのアクセスを許可] を有効にする必要があります。
Chrome 99: Canary でメッセージング API の Promise をサポート
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: 27 個の API にプロミスのサポートを拡大
このリリースには、これまでのリリースよりも大幅に多くのプロミスの更新が含まれています。更新には、一般的な拡張機能 API と ChromeOS 固有の拡張機能 API の両方が含まれます。詳細については、以下のセクションを開いてください。
Extensions API
多くの API が、マニフェスト V3 でプロミスをサポートするようになりました。
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 の Promise サポート
マニフェスト V3 バージョンの chrome.storage
API のメソッドがプロミスを返すようになりました。
ポリシーの更新: 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: モジュール サービスワーカーのサポート
Chrome で、サービス ワーカーの 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 拡張機能チームは、「Extension Manifest Converter」をオープンソース化しました。これは、拡張機能を Manifest V3 に変換する際の機械的な部分を自動化する Python ツールです。お知らせの投稿と GitHub から入手してください。
Chrome 88: Manifest V3 の一般提供
Manifest V3 は拡張機能プラットフォームのメジャー アップデートです。新機能と変更点の概要については、Manifest V3 の概要をご覧ください。拡張機能は現時点では引き続き Manifest V2 を使用できますが、近い将来に段階的に廃止されます。新しい拡張機能には Manifest V3 を使用し、既存の拡張機能の Manifest V3 への移行をできるだけ早く開始することを強くおすすめします。