iPhoneのアプリ内広告はブロックできるのか:本当にできることの全貌
「アプリ 広告ブロッカー iphone」と検索すると、ゲームでもストリーミングアプリでもiOSのあらゆる場所で広告を消すと約束するアプリが山ほど見つかります。どれか1つをダウンロードする前に、正直な答えをお伝えします。サードパーティ製アプリが自分の画面に描画する広告を、他のアプリが完全にブロックすることはApp Store上のどのアプリにもできません。理由を理解しておけば、スクリーンショットが匂わせるようなことができない製品を買わずに済みます。
だからといって何もできないわけではありません。本当の答えは2つに分かれます。iOS上で技術的に不可能なことと、実際にうまく機能することです。Blindfoldは後者のために作られているので、この記事は技術の解説であると同時に、正直であることそのものがテーマです。
なぜ他のアプリの広告に手が届かないのか
iOSはすべてのアプリを独自のサンドボックスに閉じ込めています。アプリは自分のファイルを読み書きし、ネットワークを使い、自分の画面を描画できますが、他のアプリが画面に描画しているものを検査したり書き換えたりする経路は一切なく、そのアプリが内部で行っている広告ネットワークの呼び出しに割り込むフックもありません。この隔離は意図的なものです。アプリ間のアクセスが緩いプラットフォームに比べて、iOSのマルウェアやスパイウェアの問題がはるかに小さい理由の大部分はここにあります。
Blindfoldのような広告ブロッカーが使うSafari拡張機能のAPI、つまりコンテンツブロッカーとSafari Web Extensionは、Safariのレンダリングエンジンだけを対象に設計されています。Appleがこれらを作ったのは、拡張機能があなたの閲覧履歴を一切見ることなくブロックルールを提供したりページ要素を隠したりできるようにするためであり、その範囲はSafariで止まります。インストール済みのアプリがゲームのUIに入り込んだり、無料アプリがレベルの合間にバナーを表示するために組み込んでいる広告SDKに割り込んだりできる同等のAPIは存在しません。もしあるアプリが「一切の制約なくシステム全体でそれができる」と主張しているなら、それはiOSが許可している範囲を超えた話をしていることになります。
システム全体をカバーするDNS/VPN型ブロッカーが実際にしていること
Safariより広い範囲に届く、本当に存在するアプリのカテゴリーがあります。DNSおよびVPNベースのブロッカーです。iOSはアプリがローカルVPNプロファイルをインストールすることを許可していて、これによって端末のネットワークトラフィックが、外に出る前に端末内のフィルターを経由するようになります。このフィルターは各リクエストの宛先ドメインを、既知の広告・トラッキングネットワークのブロックリストと照合し、一致すれば接続を落とします。
これは実際にいくつかのアプリ内広告を防げます。ゲームの広告SDKがよく知られた広告ネットワークのドメインを呼び出す場合、フィルターがそのドメインの名前解決を拒否すれば、広告はそのまま読み込みに失敗します。これは実在する有用な仕組みで、「iPhoneアプリ向けのシステム全体をカバーする広告ブロッカー」に一番近いものと言えます。
ただし現実的なトレードオフもあります。
- 暗号化されたHTTPS通信の中身は見えません。わかるのはリクエストがどのドメインに向かっているかだけで、ページや広告の中身まではわかりません。そのため、ドメインをまるごとブロックするか許可するかしかできず、Safariのコンテンツブロッカーのように「この要素だけ隠す」という精密なルールは書けません。
- 広告と正当なアプリ機能が同じドメインやインフラを共有するケースが増えています。広告を止めるためにドメインをブロックすると、ログイン処理や動画プレーヤー、たまたま同じ経路を通るプッシュ通知まで壊してしまうことがあります。
- 何かをフィルタリングするには常時VPNプロファイルを動かしておく必要があり、これはワンタップでオン/オフできるSafari拡張機能とは種類の異なる権限をアプリに与えることになります。
だからといってDNSベースのブロックが悪いわけではありません。技術的に見られる範囲の性質上、コンテンツブロッカーより粗いツールになるというだけの話です。
Blindfoldが完全に力を発揮する範囲
Safariの実際のレンダリングエンジンの内側で読み込まれるものは、すべてBlindfoldのコンテンツブロッカーの対象になり、その範囲は多くの人が思っているより広く及びます。Safariそのものはもちろん、他のアプリがSafariに切り替えずにWebリンクを開くための画面であるSafari View Controllerも含まれます。メールやメッセージ、ニュースアプリがその画面で記事を開くとき、その裏では変わらずSafariのエンジンが動いているため、同じコンテンツブロッカーのルールが自動的に適用されます。リンクを開いたアプリ側が何か特別なことをする必要はありませんし、それを回避することもできません。
これは記事やブログ、ショッピングサイトなど、どのアプリから飛んできたリンクであっても行き着く実際のWeb閲覧のかなりの部分をカバーします。カバーされないのは、ゲーム自体のネイティブな広告バナーや、Webページではなくアプリのインターフェースに直接組み込まれた広告SDKです。これがサンドボックスの境界線であり、Blindfoldを含めどんなSafariベースのブロッカーもそこを越えることはできません。
正直な答え
消したい広告が特定のゲームやアプリ自身のUIの中にあるなら、Safariベースのブロッカーはそこには届きません。現実的な選択肢は、そのアプリ自身の広告非表示購入か、上記のトレードオフを踏まえたうえで一部だけをドメインレベルで防ぐDNS/VPN型ブロッカーになります。
もし戦っている広告やトラッカーがiPhoneで閲覧している最中、Safariの中や、他のアプリが開くアプリ内ブラウザの画面で出てくるものなら、それは今日すでに完全に解決できる問題です。iPhoneで広告をブロックする方法のガイドでは、コンテンツブロッカーやSafari Web Extension、DNSプロファイルがどう組み合わさるかを含め、この半分の問題に効くすべての方法を解説しています。
BlindfoldはSafari側を担当します。広告、トラッカー、ページの煩わしい要素を、Safariと任意のSafari View Controllerの画面全体でネイティブにブロックし、すべて端末内で完結し、すべてのルールをアプリ内で確認・編集できます。30日間の無料トライアル後は$7.99/年、または買い切りで$19.99、ファミリー共有付きでアカウント登録は不要です。App StoreでBlindfoldを入手するか、ホームページで実際の動作を確認してください。