2023 年は、Chrome 拡張機能にとって忙しい年でした。皆様からお寄せいただいた貴重なフィードバックは、拡張機能プラットフォームとドキュメントの改善に役立ててまいりました。また、拡張機能 API がブラウザ間でより一貫して機能するよう、WebExtensions コミュニティ グループの他のブラウザ ベンダーとも引き続き連携しています。
この投稿では、Chrome 拡張機能チームが今年上半期に取り組んだ変更と、今四半期中にリリースされる新機能について説明します。では始めましょう。
新しい拡張機能の API と機能
このセクションでは、重要な API のリリースをいくつか紹介し、その他の API の改善点について簡単に説明します。また、今後の API のリリースについてもお知らせします。
ハイライト
画面外ドキュメント
Offscreen API は Chrome 109 で導入されました。これにより、Manifest V3 拡張機能は、拡張機能の Service Worker では実行できない、DOM またはウィンドウの操作が必要なユースケースを処理できます。また、Chrome 114 では、オフスクリーンの理由として 2 つが追加されました。'WORKERS'
は、ドキュメントでワーカーを生成する必要がある場合、'LOCAL_STORAGE'
は window.localStorage
から chrome.storage
API にデータを移行する場合に使用します。
Chrome 115 以降では、オフスクリーン ドキュメントを作成するときに複数の理由を指定できるようになりました。これにより、同じドキュメントで 2 つの関連タスクを実行できます。
新しい Side Panel API 🎉?
これまで、拡張機能でサイドバーを作成する唯一の方法は、コンテンツ スクリプトを使用してすべてのページに新しい要素を挿入することでした。Chrome 114 では、サイドパネル API がリリースされました。これにより、ユーザー向けのコンパニオン サイドバー エクスペリエンスをより直感的な方法で開発できるようになりました。サイドパネル API を使用して優れたユーザー エクスペリエンスを設計する方法の詳細を確認する。
より堅牢な Service Worker
すべての拡張機能イベントで、拡張機能サービス ワーカーのアイドル タイマーが再起動されるようになりました。Chrome 110 では、拡張機能 Service Worker の最大有効時間が 5 分に制限されていたのが解除されました。また、ネイティブ アプリケーションへのメッセージと拡張機能内のメッセージは、アイドル状態タイマーを再起動します。詳しくは、拡張機能サービス ワーカーのライフサイクルの記事をご覧ください。
その他の API のリリース
- Action API: Chrome 110 以降では、
setBadgeTextColor
() とgetBadgeTextColor()
を使用してバッジ テキストをカスタマイズできます。また、isEnabled()
を使用すると、現在のタブでアクションが有効になっているかどうかを確認できます。 - Commands API: マニフェストの
"commands._execute_action"
で宣言された拡張機能のショートカットが MV3 への変換中に保持されないバグが、Chrome 111 で修正されました。 - Downloads API: Chrome のデフォルトのダウンロード UI が、下部のセクションからオムニボックスの右側に移動しました。この動作を無効にするには、
setShelfEnabled()
に代わるdownloads.setUiOptions()
を使用します。 - History API:
chrome.history.getVisits()
とchrome.history.search()
は、ローカル履歴データベースに同期された他のデバイスのデータも返します。その結果、履歴のエントリが増え、アクセス回数が増える可能性があります。Chrome 115(今月下旬に安定版リリース予定)でisLocal
がVisitItem
に追加され、ローカル訪問のみでフィルタできるようになりました。 - Identity API: 認証ウィンドウが、アプリケーション ウィンドウ全体を占有するのではなく、ポップアップとして表示されるようになりました。JavaScript リダイレクトのプロセスをより細かく制御できるように、
abortOnLoadForNonInteractive
とtimeoutMsForNonInteractive
の 2 つの新しいオプションが追加されました。 - Storage API: Chrome 112 で、
chrome.session
のストレージ サイズが 10 MB に引き上げられました。Chrome 114 では、chrome.local
のストレージ サイズが一致するように変更されました。
近日提供予定...
今後の Chrome バージョンでは、拡張機能の Manifest V3 への移行を容易にする多くの機能が導入される予定です。MV3 移行に関連する今後の変更の一覧については、既知の問題のページをご覧ください。また、以下の機能も追加する予定です。
- DeclarativeNetRequest API: isUrlFilterCaseSensitive プロパティのデフォルト値が
false
に変更されます。WECG スレッドをご覧ください。 - File Handling API を使用すると、ChromeOS 拡張機能は指定された MIME タイプとファイル拡張子を持つファイルを開くことができます。この機能は現在試験運用版です。
- Runtime API: 非推奨となった
extension.getViews()
に代わるruntime.getContexts()
をリリースします。これにより、拡張機能はサイドパネルや画面外のドキュメントなどの拡張機能ページが開いているかどうかを判断できるようになります。WECG の提案をご覧ください。 - サービス ワーカー: ユーザー プロンプトを表示する Chrome API(
permissions.request()
、desktopCapture.chooseDesktopMedia()
、identity.launchWebAuthFlow()
、management.uninstall()
)に強力なキープアライブを追加します。 - サイドパネル API:
sidepanel.open()
がリリースされます。この API を使用すると、コンテキスト メニューのクリックなどのユーザー操作に応じて、拡張機能のサイドパネルをプログラムで開くことができます。 - TabCapture API: 拡張機能サービス ワーカーから
getMediaStreamId()
を呼び出し、オフスクリーン ドキュメント内のストリーム ID から MediaStream を取得する機能が追加されます。例については、音声録音と画面キャプチャをご覧ください。
Chrome ベータ版で利用可能になり次第、拡張機能の新機能ページで最新情報をご確認ください。
ドキュメントのアップグレードと Manifest V3 に関するその他のガイダンス
また、デベロッパーの学習体験の向上にも取り組んできました。chromium-group で質問をしてくださった方、developer.chrome.com でドキュメントに関する問題を報告してくださった方、誠にありがとうございました。
ハイライト
- 新しい MV3 への移行セクションでは、Manifest V2 拡張機能を Manifest V3 に変換する実用的な方法を説明しています。
- 拡張機能サービス ワーカー ガイドでは、拡張機能サービス ワーカーのトピックについて詳しく説明しています。これには、登録と更新の方法、ライフサイクルの概要、インポートの仕組みなどが含まれます。
- Service Worker でイベントを処理するチュートリアルでは、拡張機能の Service Worker の基本について説明します。拡張機能の API リファレンス ページに簡単にアクセスできるオムニボックス拡張機能を作成します。
その他の更新
- Google アナリティクス 4 を使用したトラッキングでは、拡張機能のポップアップ イベントとサービス ワーカー イベントの使用状況をトラッキングする方法について説明しています。
- 位置情報の使用では、Offscreen API を使用して拡張機能の地理的位置を取得する方法について説明します。
- 音声録音と画面キャプチャでは、
chrome.tabCapture
API とnavigator.mediaDevices.getDisplayMedia()
API を使用して、タブ、ウィンドウ、画面から音声と動画をキャプチャする方法について説明します。 - 拡張機能のデバッグガイドに、新しいデバッグ ヒントを追加しました。
- 権限に関する警告のガイドラインを更新し、権限に関する警告の仕組みと、より優れたユーザー エクスペリエンスを提供するための方法をわかりやすくしました。また、ユーザーに表示される警告を確認する実用的な方法もあります。
- また、Google のチームとコントリビューターが、新しい Manifest V3 拡張機能のサンプル(拡張機能の WASM、Scripting API のデモ、Side Panel API のクックブック、DeclarativeNetRequest API のサンプル)を追加しました。他の拡張機能のサンプルについては、GitHub のサンプル リポジトリをご覧ください。
近日提供予定...
- リモートでホストされるコードを Manifest V3 に移行する方法。
- Chrome 拡張機能の自動テストを実行する方法。
- 宣言型ネット リクエストのガイダンスを改善しました。
- コンテンツ スクリプトの説明を改善しました。
💡? ご存じですか?
最後に、役立つツールと分析情報をいくつかご紹介します。
- Chrome では WebHID のサポートが開始されました。Chrome 115 以降では、この API を試すことができます(ただし、まだ開発中です)。
- Puppeteer で、
--headless=new
を使用したヘッドレス モードでのテストがサポートされるようになりました。詳しくは、Chrome のヘッドレス モードのアップグレードに関するブログ投稿をご覧ください。 - 拡張機能の更新テストツールを使用すると、マニフェストで権限が変更されたときにトリガーされる警告を確認できます。これにより、ユーザーが更新プロセスを体験できます。一部の権限では、ユーザーが再度アクセス権を付与するまで拡張機能が無効になる可能性があるため、これは重要です。
ぜひ一度、お話させてください。🙌
今年、拡張機能チームは Google I/O Connect イベントで拡張機能デベロッパーと直接お会いしました。Google は、ユーザーの皆様とつながるための新しいスペースの創設に取り組んでいます。たとえば、フォーカス グループやミートアップ イベントの開催などです。
それまでは、chromium-groups で引き続き質問し、WECG への参加を検討してください。ドキュメントに関する問題については、developer.chrome.com GitHub リポジトリで報告してください。
拡張機能デベロッパー コミュニティにご参加いただきありがとうございます。