【AdGuard ブラウザ拡張機能 v4.2】Manifest V3 への対応、準備OK
AdGuard ブラウザ拡張機能の新バージョンでは、すぐには見えないが非常に大事な変更を行いました。
フィルタリングのコード全体をTypeScriptで書き直し、新しい個別のライブラリに移しました。
これにより、AdGuard ブラウザ拡張機能を「Manifest V3」にシームレスに対応させることが可能になりました。
Manifest V3(MV3)は、Chromeの新しい拡張機能APIです。なかでも、この新仕様では、適用できるフィルタリングルールの数が制限され、ブラウザ拡張機能による広告ブロックが大幅に難しくなります。Chromeの制限と、世界初でManifest V3対応の広告ブロッカーでそれどう適応しようとしたのかについては、こちらをご覧ください。
背景についてちょっとご説明
少し前に、AdGuardブラウザ拡張機能のURLフィルタリングエンジンをtsurlfilter
という個別のライブラリに移しました。
このライブラリの主な目的は、私たちの製品(ChromeとFirefox用のブラウザ拡張機能、Safari用のルールコンバータ、linterなど)のフィルタリングロジックを再利用することです。
tsurlfilter
には2つの主要な部分がありました:
- 読み込まれたルールとURLのマッチングを行うフィルタリングエンジン
- 見つかったルールを適用するChrome/Firefox専用のプログラミングインターフェース
Manifest V3 (MV3)環境では、異なるブラウザだけでなく、異なるマニフェストバージョンに対してもフィルタリングコードを維持する必要があります。
また、ブラウザが旧APIであるManifest V2(MV2)を削除する際に、MV2からMV3へのシームレスな移行を提供する必要もあります。
MV3 の API は制限が多いため、時がくるまでは MV3 に移行するつもりはございません。
この問題を解決するために新しいロジックを tsurlfilter
に追加すると、ライブラリが重くなりすぎるという問題が出たので、それぞれのブラウザやマニフェストのための固有ロジックをシンプルな単一APIの後ろに隠す新しいソフトウェア・プラットフォームを設計することにしました。
その新しいライブラリは tswebextension
と名付けました。
新しい tswebextension
ライブラリ
tswebextension
を使用することで、AdGuard製品のメンテナンスとアップデートが容易になります。
Chrome/Firefox用のAdGuardブラウザ拡張機能の新バージョンでは、tswebextension
を使用してバックグラウンドサービスを完全に再設計しました。
これにより、将来のバージョンアップで Chrome の Manifest V3 にシームレスに移行できるようになります。
さらに、同じく tswebextension
を使用している AdGuard API も更新しました。
完全な変更履歴は、GitHubでご確認いただけます。
また、SNS(お使いのSNSで AdGuard を検索してください)または GitHub issues で、ぜひAdGuardブラウザ拡張機能についてのご意見・フィードバックをお寄せください。