【AdGuard for iOS v4.5.8】フィルタ更新が高速化(最大30倍)
2025年直前に、良いニュースです。
iOS版AdGuard広告ブロッカーの v4.5.8 はなんと、AdGuardアプリを最大30倍高速化します。
Safari Converter に、AdGuard側でいくつかの改善を行ったことで、AdGuardのフィルタリングルールは10~30秒ではなく、わずか0.5~2秒でSafariルールに変換されるようになりました。
違いを一番実感できるのは、フィルタを更新・有効化・無効化する時やメインスイッチをオンにする時です。
ついでに、Apple側の問題も発見し報告しました。もし将来、Appleがそれを修正すれば、アプリの動作はさらに高速化します。
それでは、具体的にどのような改善を行ったのかと、その仕組みを見てみましょう。
フィルタ更新の仕組み
1. フィルタの新バージョンが出て、ダウンロードされる
最初に、AdGuardアプリにフィルタの新バージョンがダウンロードされます。この段階は特に問題ありません。
2. ルールが変換される
次に、AdGuard フィルタのフィルタリングルールがSafariルールに変換されます。
ここで、Safari Converterに最適化の知識を最大限に活用し、処理を最大30倍高速化することに成功しました。
違いの実際の様子は以下の動画でご覧ください。
ビフォー:
アフター:
3. ルールがSafariに読み込まれる
この最終段階では、Apple側の問題に触れてしまうことになります。
Safariがフィルタリングルールを適用できるようになるには、それらをDFAにコンパイルする必要があり、その処理は「com.apple.Safari.ContentBlockerLoader」と呼ばれるバックグラウンドプロセスが担当します。AdGuardはSafari用の新しいルールを読み込み、reloadContentBlocker関数を呼び出し、結果を待つしかありません。この間、ユーザーにはアプリ内で「コンテンツブロッカーを更新中…」というステータスが表示されます。
問題は、何らかの理由で iOS および iPadOS ではローダー処理のパフォーマンスが人為的に制限されており、小さ目のコンテンツブロッカー(2.8万ルール)のコンパイルにも最大 6~15 秒かかってしまうことです。(macOS では1秒以内で完了します。)
より大きなコンテンツブロッカーの場合は、全体で30秒以上かかることもあります。
言うまでもなく、これはUXにとって良いことではありません。
しかし、さらに重要なのは、フィルタ更新の頻度と迅速性が損なわれることであり、これはタイムリーな修正と広告ブロッカーのパフォーマンスにとって不可欠なものであるため、フィルタリング(広告ブロック)品質に影響してしまうのです。
現時点では、この問題をAppleに報告しました。AppleのFeedback AssistantでのチケットIDは、「FB16130983」です。
Appleが2025年にこの問題の修正を実装することを心から願っています。
今回のアップデートについては以上です。
ぜひアプリをアップデートして変更点を実感し、AdGuardのSNSまたはGitHubの「Issues」セクションでフィードバックを共有してください。
オンラインでもオフラインでも安全にお過ごしください。