Chrome 拡張機能の変更内容

7 月に、拡張機能の開発に関する最新情報をお届けする新しいブログシリーズを開始しました。皆様からの貴重なフィードバックと、WebExtensions コミュニティ グループの他のブラウザ ベンダーとの継続的な連携により、Google は拡張機能 API の強化を継続し、ブラウザ間の一貫性を高めるために取り組んでいます。

10 月版のニュースレターにようこそ。この投稿では、Chrome 拡張機能チームが過去数か月間に行った変更の一部と、今年中にリリースされる新機能について説明します。では始めましょう。

新しい拡張機能の API と機能

このセクションでは、重要な API のリリース、その他の API の改善点、今後のリリースについて説明します。現在、すべてのリリースは最新のベータ版で利用できます。詳細については、Chromium のリリース スケジュールをご覧ください。

ハイライト

解決済みの既知の問題

拡張機能チームは、Manifest V3 の安定性に関する問題の解決に積極的に取り組んでおります。Chrome 116 では多くの改善が導入され、Manifest V2 と V3 の機能の差を埋めるための大きな進歩を遂げました。Chrome 120 では、優先度の高いすべてのプラットフォームのギャップに対処し、既知の問題のページに記載されている重大なバグをすべてクローズします。現在、ChromeOS Lacros の fileHandler のサポートと、今月中にリリースされる userScripts API を除き、すべての機能が Chrome 120 Canary で利用できます。詳しくは、更新された既知の問題のページをご覧ください。

Service Worker の安定性の向上

サービス ワーカー関連の安定性の問題が解決されました。Chrome 116 では、ユーザー プロンプトを表示する強力なキープアライブを拡張機能 API に追加し、WebSocket のサポートを改善しました(拡張機能で WebSocket を使用するチュートリアルをご覧ください)。Chrome 118 以降、Service Worker はアクティブな Debugger API セッション中に存続します。

詳しくは、最新のService Worker ガイダンスをご覧ください。119 以降の Chrome バージョンで、サービス ワーカー関連の安定性の問題が引き続き発生する場合は、お知らせください

セキュリティの強化

以前は、tabs.update()tabs.createwindows.create() を使用して一部の chrome:// URL に移動すると、エラーが発生するか、Chrome がクラッシュしていました。また、tabs.update() は JavaScript の URL を開けませんでした。Chrome 117 では、サポートされている chrome:// URL の数を増やし、JavaScript URL のブロックがすべての拡張機能 API メソッドにも適用されるようになりました。

Chrome 117 では、インストールした拡張機能が Chrome ウェブストアで利用できなくなった場合、Chrome 拡張機能ページに事前通知が表示されます。これは、デベロッパーが拡張機能を公開停止した場合、ポリシー違反により削除された場合、またはマルウェアとして識別された場合に発生することがあります。詳しくは、chrome://extensions ページに安全チェックを導入するをご覧ください。

Chrome 118 では、拡張機能の詳細ページで [ファイルの URL へのアクセスを許可する] オプションが有効になっていない場合、拡張機能は chrome.tabs API と chrome.windows API を使用して file:// URL に移動できなくなります。WECG のディスカッションをご覧ください。

その他の API のリリース

  • Runtime API: Chrome 116 以降では、runtime.getContexts() を使用してアクティブなコンテキストに関する情報を取得できます。たとえば、アクティブな画面外ドキュメントがあるかどうかを確認できます。
  • サイドパネル API Chrome 116 では、sidepanel.open() を使用して、コンテキスト メニューのクリックなどのユーザー操作に応じて、拡張機能のサイドパネルをプログラムで開くことができます。
  • TabCapture API Chrome 116 で、拡張機能 Service Worker から getMediaStreamId() を呼び出し、オフスクリーン ドキュメントのストリーム ID から MediaStream オブジェクトを取得する機能を追加しました。例については、音声録音と画面キャプチャをご覧ください。
  • DeclarativeNetRequest API: Chrome 118 で、isUrlFilterCaseSensitive プロパティのデフォルト値が false に変更されました。

近日提供予定...

残りのすべての項目については、Chrome 120 のリリースに合わせて既知の問題のページで対処する予定です。また、以下の機能も追加する予定です。

  • UserScripts API を使用すると、ユーザー スクリプト マネージャーは、ユーザー スクリプトのコレクションをウェブページに挿入する方法とタイミングを調整できます。詳しくは、WECG の提案をご覧ください。
  • ReadingList API を使用すると、サイドパネルの [Reading List] パネルにあるメタデータを作成、読み取り、更新、削除できます。詳しくは、Chrome 拡張機能の新機能をご覧ください。
  • ウェブ拡張機能コミュニティ グループのフィードバックに基づき、有効な静的ルールセットの上限を 10 から 50 に大幅に引き上げました。また、許可される静的ルールセットの合計数を 50 から 100 に増やします。現在、この機能は Canary で利用できます。
  • File Handling API: ChromeOS 120 以降の ChromeOS 拡張機能で利用可能になります。これにより、拡張機能は、ウェブ プラットフォームのファイル処理と同様に、指定された MIME タイプとファイル拡張子を持つファイルを開くことができます。
  • 拡張機能は、userVisibleOnlyfalse に設定することで、ユーザーに表示される通知を表示せずに、self.registration.pushManager.subscribe() を介してウェブ Push API を使用できるようになります。これにより、非同期のクライアント サーバー通信にサービス ワーカー(MV3)の WebSocket の代わりに、プッシュ通知をシームレスに使用できるようになります。詳しくは、Chromium のバグWECG のディスカッションをご覧ください。

これらの機能が Chrome ベータ版で利用可能になり次第、拡張機能の新機能ページでお知らせします。

ドキュメントのアップグレード

また、ドキュメントの改善と追加にも取り組んできました。引き続き chromium-group で質問し、ドキュメントに関する問題を報告してください。

ハイライト

  • サンプルのランディング ページを刷新しました。API、権限、タイプでフィルタできるようになりました。これにより、特定のサンプルを簡単に見つけることができます。この機能強化は、Google Summer of Code のインターンである Xuezhou Dai との共同作業で実現しました。彼の経験については、こちらのブログ投稿をご覧ください。
  • Chrome ウェブストアで Google アナリティクス アカウントを使用するでは、デベロッパー ダッシュボードで提供されるデータに加えて、Chrome ウェブストアのリスティングの Google アナリティクス 4 データを表示する方法について説明しています。このガイドでは、Google アナリティクスを有効にして広告のパフォーマンスをモニタリングし、コンバージョンをトラッキングする方法と、他のアカウントに Google アナリティクスのデータへのアクセス権を付与する方法について説明します。
  • Chrome 拡張機能で Cookie と Web Storage API がどのように機能するかに関する新しいガイドを公開しました。拡張機能のデベロッパーとしてプライバシー サンドボックスについて知っておくべきことがすべて記載されています。
  • 拡張機能プロジェクトにテストを統合する方法に関する新しい記事が公開されました。Chrome 拡張機能の単体テスト拡張機能のエンドツーエンド テストでは、一般的なガイダンスと、さまざまな一般的なフレームワークに関するベスト プラクティスについて説明しています。実践的なチュートリアルについては、Puppeteer による Chrome 拡張機能のテストをご覧ください。

その他の更新

近日提供予定...

  • User Scripts API のリファレンスとチュートリアル。
  • Firebase のチュートリアルとサンプル。
  • ReadingList API リファレンス。

Chrome ウェブストアのデザイン変更 🌈?

Chrome ウェブストアのホームページのスクリーンショット。.
Chrome ウェブストアの新しいホームページ

Google I/O で予告したとおり、今月初めに Chrome ウェブストアの刷新版の早期プレビューを発表しました。ぜひ https://chromewebstore.google.com/ でご確認ください。主な変更点は次のとおりです。

  • カテゴリのリストを 11 個から、3 つのカテゴリ グループに分かれた 17 個の新しいリストに増やしました。
  • 検索のオートコンプリートを改善しました。
  • スクリーンショットの品質が大幅に向上しました。1280x800 のスクリーンショットをアップロードします(まだアップロードしていない場合)。
  • [サポート] タブの質問への返信に改行が表示されるようになりました。
  • ユーザーのレビューやサポートの質問に返信する際、返信に名前の横に「デベロッパー」バッジが表示されるようになりました。
  • ストア商品の URL の末尾に「/reviews」を追加すると、レビュー ページへの直接リンクをユーザーに提供できます。例: https://chromewebstore.google.com/detail/_EXTENSION_ID_/reviews

chromium-google グループでこれまでにご提供いただいた皆様のご意見に感謝いたします。ぜひディスカッションに参加してください。また、[フィードバックをお寄せください] メニュー項目を使用して、CWS チームに直接フィードバックを送信することもできます。

Chrome ウェブストアのページでフィードバックを送信する
Chrome ウェブストアのページでフィードバックを送信する

また、自己推薦フォームを送信して、エディターズ ピック コレクションに掲載することもできます。デベロッパー ダッシュボードも近日中に改善される予定です。

💡? ご存じですか?

  • Chrome 拡張機能のデバッグに関する新しい動画が公開されました。すでにご存じの多くのトピックを取り上げていますが、拡張機能で DevTools を使用する際の便利なテクニックもいくつか紹介しています。
  • 拡張機能ごとにプライバシー ポリシーを提供することが義務付けられました。これまでは、デベロッパー アカウントごとに追加できるプライバシー ポリシーは 1 つだけでした。そのため、1 つのデベロッパー アカウントで複数の拡張機能を管理する場合は不便でした。この新しいインターフェースは、デベロッパー ダッシュボードのアイテムの [プライバシー] タブで利用できます。つまり、アカウント単位のプライバシー ポリシーはサポートされなくなります。
    プライバシー ポリシー ボックスのスクリーンショット
    プライバシー ポリシー ボックスのスクリーンショット

連絡いたします 🙌?

Google は、個別面談、新しいプログラムのリリース、サミットへの参加を通じて、拡張機能デベロッパー コミュニティに継続的に働きかけています。主な機能は次のとおりです。

  • 拡張機能の Google デベロッパー エキスパート プログラムは 8 月に開始されました。世界中から 10 人を超える Chrome 拡張機能に特化した GDE が新たに加わり、貴重なフィードバックを寄せています。プログラムにとって非常にエキサイティングな時期です。
  • Google は ウェブ拡張機能コミュニティ グループの一員として TPAC(W3C の年次カンファレンス)に参加し、Firefox と Safari の代表者、およびコミュニティの複数のメンバーと会談しました。拡張機能 API の整合性の向上、仕様への取り組み、Web Platform Tests を基盤とした新しいテストスイートの作成など、いくつかのトピックで大きな進展がありました。WECG リポジトリで議事録全文をご覧ください。
  • 先週、拡張機能チームは、アムステルダムで開催された広告フィルタリング デベロッパー サミットに参加しました。サミット前のコーヒー チャットと金曜日のオープン オフィス アワーで、数人の社員と会いました。
    広告フィルタリングに関するデベロッパー サミットでの拡張機能チーム
    広告フィルタ Dev Summit の拡張機能チーム

これらのイベントに参加できなかった場合でも、chromium-extensions Google グループで質問したり、WECG でブラウザ パートナーのディスカッションに参加したり、ドキュメントに関する問題を報告したりすることで、引き続き参加できます。

拡張機能デベロッパー コミュニティにご参加いただきありがとうございます。