2023 年はこれまでのところ、Chrome 拡張機能の世界では多忙な 1 年でした。皆様の貴重なフィードバックにより、拡張機能プラットフォームとドキュメントを改善できました。また、拡張機能 API がブラウザ間で一貫して動作するように、WebExtensions コミュニティ グループで他のブラウザ ベンダーと引き続き連携しています。
この投稿では、Chrome 拡張機能チームが今年の上半期に取り組んできた変更点と、今四半期中にリリース予定の機能をご紹介します。では始めましょう。
新しい拡張機能の API と機能
このセクションでは、重要な API リリースのハイライト、その他の API の改善点を簡単に振り返り、今後の API リリースを共有します。
特長
画面外ドキュメント
Offscreen API は Chrome 109 で導入されました。これにより、拡張機能の Service Worker では実行できない DOM やウィンドウの操作を必要とするユースケースを Manifest V3 拡張機能で処理できます。また、Chrome 114 では、画面外の理由として、ドキュメントでワーカーを生成する必要がある場合の 'WORKERS'
と、window.localStorage
から chrome.storage
API へのデータ移行に役立つ 'LOCAL_STORAGE'
が追加されました。
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 で修正されました。 - ダウンロード API: Chrome のデフォルトのダウンロード UI が、下部のシェルフからアドレスバーの右側に移動しました。この動作を無効にするには、
setShelfEnabled()
に代わるdownloads.setUiOptions()
を使用します。 - History API:
chrome.history.getVisits()
とchrome.history.search()
は、ローカルの履歴データベースに同期された他のデバイスのデータも返します。その結果、履歴エントリと訪問数が増える可能性があります。Chrome 115 でisLocal
がVisitItem
に追加されました(今月後半に Stable 版でリリース予定)、ローカルのアクセス数のみでフィルタできるようになりました。 - 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 タイプとファイル拡張子のファイルを開くことができます。この機能は現在、試験運用中の機能です。
- ランタイム 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 Beta で公開され次第、拡張機能の新機能に関するページでお知らせします。
ドキュメントのアップグレードと 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 をいじって試すことができます(現在開発中の機能です)。
- Puppeteer は、
--headless=new
を使用したヘッドレス モードでのテストをサポートするようになりました。詳しくは、Chrome のヘッドレス モードのアップグレードに関するブログ投稿をご覧ください。 - 拡張機能更新テストツールを使用すると、マニフェストで権限が変更されたときにトリガーされる警告を確認できます。これにより、ユーザーが行うのと同じようにアップデート プロセスを体験できます。権限によっては、ユーザーが再度アクセス権を付与するまで拡張機能が無効になる場合があるため、この確認は重要です。
接続しましょう!🙌
今年の拡張機能チームは、Google I/O Connect イベントで拡張機能のデベロッパーと直接会うことができました。Google では、フォーカス グループやミートアップ イベントの開始など、クリエイターとつながるための新しいスペースの構築に取り組んでいます。
当面の間は、引き続き chromium-groups でご質問いただくか、WECG への参加をご検討ください。また、ドキュメントに関する問題は developer.chrome.com GitHub リポジトリから報告してください。
今後とも拡張機能のデベロッパー コミュニティをよろしくお願いいたします。