メニュー
日本語

【AdGuard for iOS v4.5.1】iOS 17 のルール数制限バグへの対策

このアップデートにはちょっとしたストーリーがあります。
iOS 17 でコンテンツブロッカーのルール数が実質的に制限されているという予期せぬバグを発見した話です。

このバグの回避策に加えて、v4.5.1 にはアプリのパフォーマンスと安定性に有用な改善と修正もいくつか含まれています。

Appleさん、Safariで最大15万のコンテンツブロックルールを使えるって言ってたけど、どうしたの?

問題

この話は、iOS 17でフィルターが実際に更新されることなく永遠に更新しつづける問題の解決策を見つけようとしたところから始まりました。

そうです、AdGuardのメイン画面の右上にある🔄アイコンをタップすると、何も起こらず、アニメーションが無限回転するだけという現象が起きていました。
場合によっては、フィルター更新エラーことになることもありました。

起因

当初、私たちは自分たちのアプリのコードに問題を見つけようとしていました(責任ある開発者なら誰でもそうすると思いますが)。
しかし、試せば試すほど、この問題が最も最適化されているはずの最新iOSでのみ発生するという事実が発覚しました。
この点とユーザーから増えるフィードバックにより、問題の根源はアップデートされたiOSにあることに気づきました。

次に、ユーザーが有効にしている(というか、むしろ有効にしていない)フィルターの数・種類によっては、フィルターが正常に更新されることがあって、その結果、Safariへのルール読み込みがメモリ制限にヒットしてしまうことがあることがあわかりました。

Appleは開発者に対し、Safari コンテンツブロッカー機能をアプリに実装する可能性を提供しており、これにより開発者はコンテンツブロック機能をユーザーに提供することができます。もちろんのこと、これはSafariでアクセスしたページにフィルタリングルールを適用する手口であるため、iOS用広告ブロックアプリにとっては不可欠なツールであります。現在、Safari Content Blocking APIのドキュメンテーションによると、1つのコンテンツブロッカーで最大15万のルールを使用できます(1つのアプリで複数のコンテンツブロッカーを仕様することも可能)

矛盾

AdGuardが15万フィルタリングルールを含む定番Safariコンテンツブロッカーを使用すると、iOS 17では突然クラッシュが発生するようになっているという驚くべき現実に直面しました。
それは、Safariが特定のサイズ以上のファイルを受け付けなくなったからよいうことがわかりました。
4万~6万件のルール(これは15万件制限の3倍減少)を持つコンテンツブロッカーでさえ、含まれるルールによってはクラッシュすることがありました。

Safariが公式に15万のルールを許可しているのに、どうして4万ルールのコンテンツブロッカーもクラッシュすることがあるのか?

これは明らかにiOS 17のバグなので、すでにAppleのフォーラムで報告しました
そちらで「Me too」を押してアップヴォートしていただけると助かります。
また、AppleのフィードバックアシスタントでのチケットIDはこちら: FB13282146

回避策

この新しい"サイズ要件"に収まるように、AdGuardコンテンツブロッカーのJSONファイルのサイズを制限し、主要フィルター(AdGuard ベースフィルタ等)も全部最適化しました。
コンテンツブロッカーがiOSからしてまだ大きすぎる場合(最終的なサイズは、ユーザーが有効にしているフィルタの数と種類に依存します)、AdGuardは自動的にそのサイズを削減し、サイズ要件を満たすルールの少なくとも一部がSafariで適用されるようにします。

そのため、現時点ではほとんどのユーザーにとって問題なく動作するはずではありますが、Appleが早急にこのバグを修正してくれることを心待ちにしています。

SafariConverterLib、Scriptlets、TSUrlFilter の更新

v4.5.1 には問題対策だけでなく、改善もあります。

例えば、SafariConverterLib、Scriptlets、TSUrlFilterの依存関係を更新しました。
これら3つのコンポーネントの更新と相互接続により、高いフィルタリング品質、つまりブロックルールの最新状態と効率的なパフォーマンスを維持することができます。

SafariConverterLibは、AdGuardのフィルタリングルールをSafariのコンテンツブロックルールに変換するライブラリで、AdGuard for iOS でフィルタのフルパワーを使用することを可能にします。
ScriptletsTSUrlFilterも、AdGuard for iOS の「高度な保護機能」の実装に役立つので、重要なものです。

DnsLibs の改新

DnsLibs (AdGuardのDNSフィルタリングエンジン) v2.3では、AdGuardのDNS-over-HTTP/3のパフォーマンスと安定性を大幅に改善するいくつかの重大な手直しと調整を行いました。

また、iOS 13.xでAdGuardが開かない問題も修正いたしました。


このアップデートについてご意見、ご感想がございましたら、以下にコメントを残していただいたり、SNSでお寄せください。

AdGuard for iOS v4.5.1 の完全な変更履歴は、Github にあります。
また、Github issues経由のフィードバックも大歓迎しております。

この記事を気に入っていただけましたか?

AdGuard for Windows

AdGuard for Windowsは、単なる広告ブロッカーではなく、広告をブロックし、危険なサイトへのアクセスを制御し、ページの読み込みを高速化し、不適切なコンテンツから子供を保護する、多目的ツールです。
ユーザーレビュー: 13921
星5つのうち4.7
ダウンロードされますと、使用許諾契約書に同意したことになります。
詳細

AdGuard for Mac

AdGuardはmacOSの仕様を念頭に設計されたユニークな広告ブロッカーです。 ブラウザやアプリで広告を取り除くだけでなく、個人情報追跡、フィッシング、詐欺から端末を守ります。
ユーザーレビュー: 13921
星5つのうち4.7
ダウンロードされますと、使用許諾契約書に同意したことになります。
詳細

AdGuard for Android

AdGuard for Androidは、Android搭載端末に最適なソリューションです。 他のほとんどの広告ブロッカーと違って、root権限を必要とせず、アプリでのフィルタリング、アプリ管理など、幅広い機能を提供しています。
ユーザーレビュー: 13921
星5つのうち4.7
ダウンロードされますと、使用許諾契約書に同意したことになります。

AdGuard for iOS

一番効果的なSafari用広告ブロッカー。ポップアップ広告を除去し、ページの読み込みを高速化し、個人情報を保護します。手動要素ブロックツールと柔軟にカスタマイズ可能な設定により、ニーズにぴったり合ったフィルタリングを楽しみいただけます。
ユーザーレビュー: 13921
星5つのうち4.7
ダウンロードされますと、使用許諾契約書に同意したことになります。

AdGuard ブラウザ拡張機能

AdGuardは、Webページ上のすあらゆる広告を効果的にブロックします。また最速で軽量な広告ブロック拡張機能です!是非AdGuardを使って広告のない高速で安全なブラウジングをお楽しみください。
ユーザーレビュー: 13921
星5つのうち4.7

AdGuard for Safari

Appleが新しいSDKの使用を開発者全員に強制し始めてから、Safari用の広告ブロック拡張機能は苦境に立たされています。AdGuard拡張機能は、Safari用の高品質な広告ブロック機能を復活させることがミッションです。
ユーザーレビュー: 13921
星5つのうち4.7
App Store
ダウンロード
ダウンロードされますと、使用許諾契約書に同意したことになります。

AdGuard Home

AdGuard Home は、広告とトラッキング(追跡)をブロックするネットワーク全体用ソフトウェアです。 セットアップを完成すると、全ての家庭内デバイスをカバーし、クライアント側のソフトウェアさえ必要ありません。 Internet-Of-Thingsや接続するデバイスの登場と伴って、ネットワーク全体を制御することがますます重要になってきています。
ユーザーレビュー: 13921
星5つのうち4.7

AdGuardコンテンツブロッカー

AdGuard Content Blockerは、コンテンツブロッカーテクノロジーをサポートするモバイルブラウザー(Samsung Internet、Yandex.Browser)のすべての種類の広告を排除します。 Android for AdGuardよりも制限されていますが、無料で簡単にインストールでき、広告のブロック品質も高いです。
ユーザーレビュー: 13921
星5つのうち4.7
ダウンロードされますと、使用許諾契約書に同意したことになります。
詳細

AdGuardアシスタント

“AdGuardデスクトップアプリのお手伝い役”ブラウザー拡張機能。カスタム要素のブロック、Webサイトのホワイトリストへの登録、報告の送信などといった機能に直接ブラウザーからアクセスできるようにします。
ユーザーレビュー: 13921
星5つのうち4.7
Chrome用アシスタント これは現在お使いのブラウザですか?
インストール
ダウンロードされますと、使用許諾契約書に同意したことになります。
Firefox用アシスタント これは現在お使いのブラウザですか?
インストール
ダウンロードされますと、使用許諾契約書に同意したことになります。
Edge用アシスタント これは現在お使いのブラウザですか?
インストール
ダウンロードされますと、使用許諾契約書に同意したことになります。
Opera用アシスタント これは現在お使いのブラウザですか?
インストール
ダウンロードされますと、使用許諾契約書に同意したことになります。
Yandex用アシスタント これは現在お使いのブラウザですか?
インストール
ダウンロードされますと、使用許諾契約書に同意したことになります。
Safari用アシスタント これは現在お使いのブラウザですか?
お使いのブラウザが見つからない場合は、AdGuard拡張機能の設定にある旧レガシーアシスタント版を試してみてください。

AdGuard Temp Mail β

匿名性とプライバシーを保護する、無料の捨てメアド(一時メールアドレス)ジェネレーター。メインのメールサービスに迷惑メールは届きません!
ユーザーレビュー: 13921
星5つのうち4.7

AdGuard for Android TV

AdGuard for Android TV は、広告をブロックし、プライバシーを保護し、スマートテレビのファイアウォールとして機能する唯一のアプリです。Webの脅威に関する警告を受け取り、セキュアDNSを使用し、トラフィックを暗号化しましょう。セキュリティを向上して、広告なしでお気に入りの番組をお楽しみください!
ユーザーレビュー: 13921
星5つのうち4.7
AdGuardをダウンロード中です AdGuardをインストールするには、矢印が指してるファイルをクリックしてください 「開く」を選択し、「OK」をクリックして、ファイルがダウンロードされるのをお待ちください。 ダウンロードが終了し開きましたウィンドウでAdGuardを「Applications」フォルダにドラッグで移動させてください。 AdGuardをダウンロードして頂きありがとうございます! 「開く」を選択し、「OK」をクリックして、ファイルがダウンロードされるのをお待ちください。 ダウンロードが終了し開きましたウィンドウで「インストール」をクリックしてください。 AdGuardをダウンロードして頂きありがとうございます!
以下のQRコードをスキャンすることでモバイル端末にもAdGuardをインストールできます。