数億人のユーザーが Chrome ウェブストアで公開されている 250,000 件以上の拡張機能を利用しています。拡張機能は、多くの人々がウェブを体験し、オンラインで作業する際に欠かせないものになっています。私たちは、拡張機能はデフォルトで信頼できるものでなければならないと考えています。そのため、この 1 年を通して拡張機能をあらゆる人にとって安全なものにする取り組みを行ってきました。
本日は、Chrome 拡張機能の Manifest V3 の計画的ロールアウトについて正式にお知らせします。Manifest V3 は拡張機能プラットフォームの新バージョンで、デフォルトで拡張機能の安全性、パフォーマンス、プライバシーを強化します。
Manifest V3 の導入と合わせて、リモートでホストされるコードを禁止します。この仕組みは、悪意のあるユーザーが Google のマルウェア検出ツールを回避する攻撃ベクトルとして使われることがあり、ユーザーのプライバシーやセキュリティに重大なリスクを与えています。
リモートでホストされるコードがなくなることで、Chrome ウェブストアの申請に対するレビューをより細かく、迅速に行えるようにもなります。そのため、デベロッパーはすばやくアップデートをユーザーに提供できます。
拡張機能チームは、信頼性の高い Chrome と信頼性の高い拡張機能はユーザーにとってすばらしいだけでなく、デベロッパーにとっても不可欠だと考えています。長期的に見れば、Manifest V3 は、拡張機能エコシステムが信頼できる場所であり続けるために役立つはずです。
すばらしいユーザー エクスペリエンスにはパフォーマンスが欠かせません。そのため、3 世代目となる拡張機能プラットフォームの検討に着手するにあたって、パフォーマンスが基本的な検討事項でした。これが明確に現れているのが、バックグラウンド ロジックと API 設計という 2 つの領域へのアプローチです。
まず、バックグラウンド ページを置き換えるものとして Service Worker を導入します。バックグラウンド ページは永続的なので、アクティブな状態がバックグラウンドで維持され、システム リソースを積極的に使っているかどうかにかかわらずリソースを消費します。それとは異なり、Service Worker は一時的です。つまり、Chrome は必要に応じて Service Worker を起動したり破棄したりできるので、全体的なシステム リソースの使用量を削減できます。
次に、拡張機能の API 全体を、宣言的なモデルに移行します。この効果は、セキュリティ面のメリットだけではありません。シリアル化やプロセス内通信が不要になるため、全般的なエンドユーザーのパフォーマンスを確実に保証できるようになります。これにより、拡張機能のほとんどのユーザーで全般的なパフォーマンスが向上し、プライバシーが保証されるようになります。
拡張機能がデータをどのように使い、どのように共有するかをユーザーが認識して制御できるように、拡張機能のモデルを移行します。つまり、オプション扱いのパーミッションを増やし、ユーザーがインストール時に機密性の高いパーミッションを許可しないこともできるようにします。拡張機能のデベロッパーは、長期的な視野を持ち、ユーザーがいつでもパーミッションをオプトインまたはオプトアウトすることを想定する必要があります。
ウェブ アクティビティに反応して処理する必要がある拡張機能では、ユーザーのプライバシーを保護しつつこのようなユースケースに対応できる新機能の検討と試行を続けています。たとえば、新しい declarativeNetRequest API は、拡張機能がプライバシーを保護しつつ、機密データにアクセスせずにネットワーク リクエストをブロックできる方法として設計されています。
declarativeNetRequest
広告ブロッカーを含めた拡張機能は、ユーザーの機密情報を含む可能性があるデータにアクセスすることなく、コア機能を提供し続ける必要があります。declarativeNetRequest API は、それを実現するために Chrome が行っていることの一例です。これにより、エコシステム内のたくさんの強力な拡張機能が、ユーザーのプライバシーを尊重しつつ、シームレスなユーザー エクスペリエンスを提供し続けることができるようになります。
Manifest V3 のドラフト提案を初めて Chromium デベロッパー コミュニティに共有したとき、たくさんの有用なフィードバックをいただきました。どうもありがとうございました。私たちは、プラットフォームの進化に向けて、広告ブロッカー、ショッピング拡張機能、生産性向上、デベロッパー ツールなど、多くの拡張機能のデベロッパーの皆さんと共同で作業を進めています。
このフィードバックは、Manifest V3 に関連する API サーフェスの機能や使いやすさの改善に活用されています。たとえば declarativeNetRequest には、複数の静的ルールセットやルール内の正規表現、宣言的なヘッダーの変更などのサポートを追加しました。
「Manifest V3 の導入後も広告ブロック拡張機能を確実に利用できるようにするため、Google の Chrome 拡張機能チームと当社のエンジニアリング チームの間で密接な協力関係が培われました。そのことをとてもうれしく思っています」 — eyeo(Adblock Plus)、テックリード、Sofia Lindberg 氏
ユーザーのプライバシーを保護しつつ、デベロッパーにとってさらに強力な V3 を実現できるように、フィードバックの反映や新機能の追加を継続する予定です。そのため、Manifest V3 のリリース後も、機能追加や試行は続きます。この検討に参加したい方は、chromium-extensions Google Group でコメントを追加するか、発言してください。
現在、Manifest V3 は Chrome 88 ベータ版で試験運用版として利用できます。今後のリリースでは、すばらしい機能がさらに導入される予定です。Chrome ウェブストアでは、Chrome 88 が安定版になる 1 月中旬より、Manifest V3 拡張機能を受け付ける予定です。Manifest V2 拡張機能のサポートが終了する厳密な日付は決まっていませんが、Manifest V3 が安定版チャンネルに到達してから、少なくとも 1 年の移行期間が設けられます。スケジュールについては、今後数か月でさらに詳しくお伝えする予定です。