拡張機能に関する Chrome 120 の新機能

Chrome 120 のベータ版がリリースされました。Chrome 拡張機能のデベロッパー向けに、多くの魅力的な更新が含まれています。

Chrome 拡張機能チームにとって多忙な 1 年でした。昨日の Chrome 120 ベータ版リリースを皮切りに、この拡張機能プラットフォームはさらに大きな前進を遂げています。今年の状況の概要については、7 月10 月の四半期ごとの最新情報をご覧ください。拡張機能に関する Chrome 120 の新機能をご覧ください。

プラットフォームのギャップを埋める

Chrome 120 のリリースに伴い、Manifest V3 の既知の問題のページに記載されている残りのプラットフォームのギャップが解消します。新しい userScript API と ChromeOS でのファイル処理のサポートは、リストに残る残りの 2 つの項目です。前の四半期ごとの更新情報でお知らせした変更に加え、Chrome 拡張機能プラットフォームの現状とこの 1 年間に達成したことに大変満足しています。

新しい userScripts API

ユーザー スクリプトがサポートされるようになりました。ユーザー スクリプトは、通常は比較的小さなコード スニペットで、拡張機能がウェブページに挿入してページの外観や動作を変更できるものです。ユーザーで直接作成することも、ウェブ上のさまざまなユーザー スクリプト リポジトリから検索することもできます。Chrome 120 より、Manifest V3 拡張機能でユーザー スクリプトのコレクションを管理し、ウェブページにスクリプトをいつどのように挿入するかを決定できるようになりました。

ユーザー スクリプトのサポートには、Manifest V2 と Manifest V3 で大きな違いが 1 つあります。ユーザー スクリプトは強力で、その作成に対する信頼が必要なため、Chrome チームは、ユーザーがデベロッパー モードにオプトインしないとユーザー スクリプトを実行できないと判断しました。

[広告表示オプション] ページ
拡張機能ページ(chrome://extensions)

新しい userScript サンプルは、デベロッパー モードが有効になっているかどうかを検出し、シンプルなオンボーディング フローを提供するシンプルなアプローチを示しています。

ユーザー スクリプトのオンボーディング フローの例。
デベロッパー モードが無効になっているときにユーザーをオンボーディングする。

開始するには、ドキュメントまたは公式サンプルをご覧ください。

静的 DNR ルールセットの上限の引き上げ

有効な静的ルールセットの上限が 10 から 50 に大幅に引き上げられました。さらに、使用できる静的ルールセットの総数を 50 から 100 に増やしました。これは、ウェブ拡張機能のコミュニティ グループに寄せられたフィードバックにお応えしたものです。

新しい ReadingList API

Chrome は 2021 年にリーディング リストを導入しました。昨年、Chrome チームはサイドパネルからリーディング リストにさらに簡単にアクセスできるようにしました。Chrome 120 では、Chrome 拡張機能でリーディング リストのエントリを作成、読み取り、更新、削除する機能が追加されます。詳細については、API ドキュメント新しいサンプルをご覧ください。

拡張機能のドキュメントのページを示す Chrome のリーディング リスト。
Chrome のリーディング リストのサイドパネル。

ChromeOS でのファイル処理

ファイル処理を使用すると、拡張機能は、ウェブ プラットフォームのファイル処理と同様の方法で、指定された MIME タイプとファイル拡張子を持つファイルを開くことができます。使用方法について詳しくは、ChromeOS でのファイル処理をご覧ください。

ChromeOS の [拡張機能を使用してファイルを開く] ダイアログのスクリーンショット
ChromeOS の拡張機能でファイルを開く。

30 秒後にアラームを鳴らす

これは小さな更新ですが、Service Worker のライフサイクルにおける重要なギャップが解消されています。Service Worker はイベント ドリブンな性質を持つため、今後イベントを発生させる際は chrome.alarms を使用することをおすすめします。アラーム API により、その間に Service Worker がシャットダウンした場合でもイベントが発生します。

ただし、落とし穴があります。Chrome 120 より前では、アラームをトリガーする最短時間は 1 分でした。ただし、Service Worker は 30 秒間操作がないとシャットダウンされます。そのため、アラームを 45 秒後に発生させる簡単な方法はありませんでした。setTimeout() を使って 45 秒でイベントを設定すると、イベントが発生する前に Service Worker がシャットダウンされる可能性があったからです。

Chrome 120 以降では、次のどちらかでイベントを送信できるようになりました。

  • setTimeout() を使用して 30 秒未満にする必要があります。
  • chrome.alarms を使用して 30 秒以上の場合:
await chrome.alarms.create('demo-default-alarm', {
   periodInMinutes: 0.45
 });

まとめ

この 1 年間で拡張機能プラットフォームが進歩したことを大変嬉しく思います。Chrome 120 では、DNR の上限の引き上げとユーザー スクリプトのサポートが追加されました。