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

Chrome 120 のベータ版がリリースされました。このバージョンには、Chrome 拡張機能のデベロッパー向けの多くの新機能が含まれています。

今年は Chrome 拡張機能チームにとって忙しい年でした。昨日の 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 のライフサイクルの重要なギャップを解決します。サービス ワーカーはイベント駆動型であるため、今後イベントを発生させるには chrome.alarms を使用することをおすすめします。Alarms API を使用すると、その間にサービス ワーカーがシャットダウンされた場合でも、イベントが確実にトリガーされます。

ただし、Chrome 120 より前は、アラームをトリガーする最短時間は 1 分でした。ただし、サービス ワーカーは 30 秒間操作がないとシャットダウンされます。そのため、45 秒後にアラームを設定するスケジュールを設定することは簡単ではありませんでした。setTimeout() を使用して 45 秒後にイベントを設定すると、イベントが発生する前にサービス ワーカーがシャットダウンされる可能性があるためです。

Chrome 120 以降では、次のいずれかでイベントを発生させることができます。

await chrome.alarms.create('demo-default-alarm', {
   periodInMinutes: 0.45
 });

概要

過去 1 年間に拡張機能プラットフォームが進歩したことを心より嬉しく思っております。Chrome 120 では、DNR の上限の引き上げとユーザー スクリプトのサポートがさらに進みました。