これまでのところ、2023 年は Chrome 拡張機能の世界で忙しい年でした。皆様の貴重なフィードバックは、拡張機能プラットフォームとドキュメントの改善に役立っています。また、拡張機能 API がブラウザ間で一貫して動作するように、WebExtensions Community Group の他のブラウザ ベンダーとも協力し続けています。
この投稿では、Chrome 拡張機能チームが今年上半期に行った変更と、今四半期中にリリースされる予定の機能について説明します。では始めましょう。
新しい拡張機能 API と機能
このセクションでは、API の重要なリリースをいくつか紹介し、その他の API の改善点について簡単に振り返り、今後の API リリースについて紹介します。
ハイライト
画面外ドキュメント
Offscreen API は Chrome 109 で導入されました。これにより、拡張機能 Service Worker では実行できない DOM やウィンドウの操作が必要なユースケースを、Manifest V3 拡張機能で処理できるようになります。また、Chrome 114 では、画面外の理由が 2 つ追加されました。'WORKERS'
(ドキュメントでワーカーを生成する必要がある場合)と 'LOCAL_STORAGE'
(window.localStorage
から chrome.storage
API へのデータ移行)です。
Chrome 115 以降では、画面外ドキュメントを作成する際に複数の理由を指定できます。これにより、同じドキュメントで 2 つの関連するタスクを実行できます。
新しいサイドパネル API 🎉?
これまで、拡張機能にサイドバーを作成するには、各ページにコンテンツ スクリプトを含む新しい要素を挿入するしかありませんでした。Chrome 114 では Side Panel API がリリースされました。コンパニオン サイドバーの操作性をはるかに簡単な方法で開発できるようになりました。詳しくは、Side Panel API で優れたユーザー エクスペリエンスを設計する方法をご覧ください。
より堅牢な Service Worker
すべての拡張機能イベントで、拡張機能 Service Worker のアイドル タイマーが再起動されるようになりました。Chrome 110 では、拡張機能 Service Worker の最長存続期間である 5 分が削除されました。また、ネイティブ アプリケーションへのメッセージと拡張機能内のメッセージにより、アイドル タイマーが再開されます。詳しくは、拡張機能 Service Worker のライフサイクルの記事をご覧ください。
その他の 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 でVisitItem
にisLocal
が追加されました(今月後半の安定版でリリースが予定されています)。これにより、来店データでのみフィルタできるようになりました。 - 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 提案をご覧ください。 - Service Worker: ユーザー プロンプト(
permissions.request()
、desktopCapture.chooseDesktopMedia()
、identity.launchWebAuthFlow()
、management.uninstall()
)を表示する強力なキープアライブを Chrome API に追加します。 - Side Panel API:
sidepanel.open()
をリリースします。これにより、コンテキスト メニューのクリックなどのユーザー操作に応じて、拡張機能のサイドパネルがプログラムで開かれます。 - TabCapture API: 拡張機能 Service Worker から
getMediaStreamId()
を呼び出し、画面外ドキュメントのストリーム ID から MediaStream を取得する機能を追加します。例については、音声録音とスクリーン キャプチャをご覧ください。
Chrome ベータ版で公開され次第、拡張機能の新機能ページに最新情報をご確認ください。
ドキュメントのアップグレードと Manifest V3 に関するその他のガイダンス
また、デベロッパーの学習体験の向上にも取り組んできました。chromium-group で質問し、developer.chrome.com でドキュメントに関する問題をご報告くださったすべての方に、深く感謝いたします。
ハイライト
- 新しい MV3 の移行セクションでは、Manifest V2 拡張機能を Manifest V3 に変換する実用的な方法について説明しています。
- 拡張機能 Service Worker のガイドには、拡張機能 Service Worker のトピックに関する詳細情報が記載されています。これには、登録および更新方法、ライフサイクルの概要、インポートの仕組みなどが含まれます。
- 拡張機能 Service Worker の基本については、Service Worker でイベントを処理するのチュートリアルをご覧ください。拡張機能 API リファレンス ページにすばやくアクセスできるアドレスバー拡張機能を構築します。
その他の更新
- Google アナリティクス 4 の使用では、拡張機能のポップアップと Service Worker イベントの使用状況をトラッキングする方法を示しています。
- 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 をお試しいただけます(ただし、この API はまだ開発中です)。
- Puppeteer で、
--headless=new
を使用したヘッドレス モードでのテストがサポートされるようになりました。詳しくは、Chrome のヘッドレス モードへのアップグレードに関するブログ投稿をご覧ください。 - 拡張機能更新テストツールを使用すると、マニフェストで権限が変更されたときにトリガーされる警告を確認できます。そうすることで、更新処理をユーザーと同じように体験できます。権限によっては、ユーザーが再びアクセスを許可するまで拡張機能が無効になる可能性があるため、これは重要です。
つながりましょう!🙌
今年の Google I/O Connect イベントでは、拡張機能チームが拡張機能のデベロッパーと直接お会いし、現在、フォーカス グループやミートアップ イベントの開設など、ユーザーとつながるための新しいスペースの構築に取り組んでいます。
お手数をおかけしますが、引き続き chromium-groups に関するご質問、WECG への参加をご検討ください。また、ドキュメントに関する問題については、developer.chrome.com GitHub リポジトリでご報告いただけますと幸いです。
拡張機能のデベロッパー コミュニティにご参加いただき、重ねてお礼申し上げます。