メニュー
日本語

SafariでのYouTube広告表示の対策とこれからについて

最近、iOSでYouTubeの広告が表示されてしまうという苦情が増えていました。
重要なのは、SafariブラウザでYouTubeを視聴した際の広告のことであったことです。
これは、YouTubeが新しいアルゴリズムを採用して、YouTubeにログインしているユーザーに広告を表示するようにしたため、広告ブロックの品質に悪影響を与えたためです。

事実上、現在YouTubeは、広告動画を通常の動画とほぼ同じように読み込んでいます。

私たちは、iOSのSafariで通用するソリューションを見つけましたが、他のプラットフォームやブラウザと比較すると大いに不満があります。
簡単に言えば、短い動画(その99.99%は広告)をブロックする対策です。

追記:もっといい方法を見つけました。iOSのSafariでYouTube広告をブロックする方法はこちらのさらに新しい記事をご覧ください。

しかし、このようなブロック方法では、ユーザーエクスペリエンスが大きく損なわれます。
動画が読み込まれるまでに目立つ遅延が発生するか、動画広告の代わりにプレースホルダーが表示されてしまいます。

あらすじ

数ヶ月前、YouTubeはChromeユーザーに動画広告を表示する際に同じ方法を使い始めましたが、私たちはそれほど問題なく対応することができました。
Safariの場合、何が違うのか?
残念ながら、Safariのコンテンツブロッキングは、他のブラウザの本格的なコンテンツブロッキングに比べて大きく制限されています。Safari Content Blocking APIは、2015年に導入されて以来、あまり大きな変更はありません。

お使いのOSにもよりますが、以下のようになります。

  • iOS/iPadOSの場合: 現在のソリューションは、状況下で現在提供できる最善のソリューションです。Appleが劇的な変化を遂げない限り、私たちはそれに耐えなければなりません(詳細は後述)。
  • macOSの場合:
    • スタンドアロンのAdGuard for Macアプリを使用している場合は、全く影響ないので、すり抜ける広告も出ません。
    • AdGuard for Safariを使用している場合は、「AdGuard高度なブロック」拡張機能が環境設定で有効になっていることを確認してください。この拡張機能は、Safari Content Blockingに欠けている機能の一部を補います。残念ながら、iOS/iPadOSには移植できません。

Safariがコンテンツブロッキングの観点から関連性を維持するためには、いくつかの点を改善する必要があります。
私たちは、それに必要とされる可能性のある専門知識を提供し、支援する準備があります。
というどころか、私たちはここ数年、数々のバグレポートや機能リクエストをSafari開発者へ提出しています。

さて、Safariのコンテンツブロッキングの何が問題なのかを知りたい方は、この先をお読みください。
※技術的な知識が必要なので、興味がない方や詳しくない方は、最後の章までスクロールして結構です。

Safariコンテンツブロッキングの仕組み

Safariの制限と、それをAdGuardがどのように緩和しているかを説明する前に、まずSafariコンテンツブロッキングがそもそもどのように機能しているかを知っておいた方がいいと思います。

コンテンツブロッカーは、基本的に、アプリケーションの拡張機能であり、個別のプロセスで実行され、この拡張機能の唯一の目的は、コンテンツブロッキングルールのリストを含むJSONファイルを提供することです。
これらのルールは、Safariが実際に「ブロック」を行う際に使用されます。

この図は、Safariでのコンテンツブロッカーの動作を示しています。

各コンテンツブロッキングルールは JSON オブジェクトであり、"trigger" と "action"という2つの部分から構成されています。

"trigger"の部分は、ルールがどのリクエストに対して適用されるべきかを定義します。
そして、"action"の部分は、その名の通り、マッチしたリクエストに対して何をすべきかを定義します。

Safariでのブロックルールのイメージ

また、指定されたCSSセレクタに一致するページ要素を隠すコスメティックルールもあります:

Safariでのコスメティックルール

ここでは、「リクエストのブロック」と「要素の非表示」の2種類のアクションについて取り上げましたが、他にもアクションの種類がいくつかあります:

  • 他のマッチングルールを無効にできるもの
  • Cookieをブロックするもの
  • 接続をHTTPSにアップグレードするためのもの

さて、Safari Content Blockingがどのようなもので、どのように機能するかがわかったところで、その制限について説明します。

Safari Content Blockingの制限事項

ここでは、私たち(広告ブロックコミュニティ)が最も気になっている制限事項を簡単に紹介します。
これらのうちのいくつかは、ある程度軽減することができますが、あくまでも回避策であり、完全に解決されるとは言えません。

  • デバッグツールがない
  • 異なる構文 (一部解決可能)
  • コンパイルが遅い
  • コンテンツブロッカーごとに5万ルールの制限(これは本当に痛く、我慢しています)
  • 正規表現の限られたサポート
  • コンテンツブロッキング関連はSafari開発チームにとって優先度が低い

これらの問題をそれぞれ分析してみましょう。

デバッグツールがない

まず最初に、シンプルでありながら解決策のない問題について説明します。
効果的なフィルタリングルールを作成するには、開発者はデバッグする必要があり、そのためにはデバッグツールが必要です。
現在、Safariのコンテンツブロッキングには、デバッグ用のツールが付属していません。
フィルタ開発者にとって役立つ唯一のツールは、ブラウザコンソールで、どのリクエストがブロックされたかを確認することができます。
どのルールがこのリクエストをブロックしているのかを理解することは不可能であり、それを特定するのは非常に面倒な作業だったりします。
また、コスメティックルールをデバッグする適切な方法もありません。

Safariのブラウザコンソール

このため、Safari用のフィルタ開発は非常に非効率的なプロセスとなっており、多くのフィルタのメンテナ(開発者)は、フィルタリングルールを作成する際に、可能であればSafariよりも他のブラウザを優先しています。
この制限は、他のブラウザと比較して、Safariのフィルタリストの品質を低下させています。

異なる構文

AdGuardのフィルター、EasyList、uBlockのフィルターは、いずれもAdblock Plusのオリジナルのコア構文をベースにしています。
その構文は拡張されましたが、「コア」の部分は全ての人気なコンテンツブロッカーの間で共通しています。

一般的なフィルタリングルールの"解剖"

前述の図で見たように、Safariのブロックルールは、この構文とは何の共通点もありません。
これが問題である理由は、わざわざ「Safari専用」のフィルタリストを作るのは余計な手間がかかるからです。
怠け者というわけではありません。Safariには、このようなリストを作成するための十分なツールが単にないのです。

私たちが求めているのは、AdGuardフィルターやEasyListのような古き良き伝統的なフィルターリストを使うことです。

解決策

明白な解決策は、私たちの一般ルールをSafariのコンテンツブロッキングルールに自動的に変換することです。
AdGuardはまさにそれをユーザーのデバイス上でリアルタイムに行います。

Safariの構文問題の解決策案

もちろん、これは広告ブロッカーの効率化にはつながらない余計な作業であることは想像に難くありません。

遅いコンパイル

Safariは各コンテンツブロッカーの JSON を「prefix tree」にコンパイルして、lookupを高速化しています。

しかし、このprefix treeのコンパイルには時間がかかります。
例えば、プロファイラの出力を見ると、新しいMacBook Proでは、3万ルール強(フィルタとしては現実的サイズ)のJSONをコンパイルするのに2秒以上かかっています。

Safariでのコンパイル時間

これは遅いです。
他のプラットフォームのコンテンツブロッカーと比較すると、例えばAdGuard for Androidアプリが10万以上のルールを持つリストを解析してコンパイルするのに1秒もかかりません。
しかし、明らかな違いは、当社のAndroidアプリでは、正規表現ほど複雑ではなく、柔軟性もないかもしれませんが、URLのマッチングに特化して最適化された異なる構文を使用していることです。

ユーザーはこのようなことを目にすることはなく、直接影響を受けることはありませんが、この点が他の制限の原因となるチョークポイントとなるため、実際にはかなり大きな問題となります。

5万ルールの制限

コンパイルにかなりの時間がかかることがわかったので、次の制限を理解するのは簡単です。
1つのコンテンツブロッカーには50,000以上のルールを含めることができません。
これはSafariのハードコーディングによる制限です。Appleの開発者によると、この制限の主な理由は、コンパイルに時間がかかることだそうです。新しいデバイスはより高速になっているので、Appleはルール数を少し増やすかもしれませんが、だからといって魔法のようにすべての問題が解決するわけではありません。

正規表現を利用したルールである限り、大幅な改善の余地はありません。
例えば、AdGuardベースフィルターとEasyListの合計ルール数は100,000であり、これはたった2つのフィルターに過ぎません。
他のプラットフォームでは、同時に5~10個のフィルターを持つユーザーも珍しくありませんし、それ以上の数になることもあります。

AdGuardによる解決策

実際には、様々な解決策があります。
残念ながら、それらを組み合わせても、期待した結果は得られません。しかし、それらが全く無意味というわけでもありません。

フィルターの最適化

フィルター開発者として、私たちはSafariに特化したフィルターの最適化に努めています。
そのひとつが、類似した要素の非表示ルールをひとつにまとめることです。下の例では、5つの異なるルールが2つにまとめられています:

Safariにおけるフィルター最適化

これでかなり改善されましたが、まだ十分ではありません。

廃止されたルールの削除

もう1つは、最適化されたバージョンのフィルタから、廃止されたルールやあまり使用されていないルールを削除することです。
AdGuardブラウザ拡張機能のユーザーがボランティアで匿名のフィルタ使用統計を共有してくれているおかげで(デフォルトではこの共有機能は無効になっています)、どのルールが他のルールよりも使用頻度が低いかがわかります。
人気のあるリスト(AdGuardベースフィルタなど)の特別バージョンを構築し、そこで廃止されたルールやあまり使用されていないルールを除去しています。

フィルタのメンテナ(開発者)は、特別な「ヒント」を使って、「最適化」プロセスにもかかわらず、どのルールを残すべきかをコントロールすることができます。

確かにフィルターは小さくなりますが、その代償として広告ブロックの品質が低下します。
また、この方法は万全ではありません。ブラウザ拡張機能で使用されていないために統計が取れないルールがあったり、フィルタ開発者の中にはルールの横にヒントを記載しない人がいたりします。

複数のコンテンツブロッカー

Safari広告ブロッカーの開発者のほとんどが採用しているもう一つの回避策は、広告ブロッカーを複数の独立したコンテンツブロッカーに分割することです。

AdGuard for iOSは、6つのコンテンツブロッカーで構成されています。

技術的には、それぞれのルールは5万未満ですが、合計するとより多くのルールを行使しています。
しかし、広告ブロックでは、いくつかの理由から、50,000×6=300,000というストレートな計算にはなりません:

  • 1つのフィルタが他のフィルタのルールに対応することはよくあることです。しかし、この複数コンテンツブロッカーのアプローチだと、異なるSafariコンテンツブロッカーは完全に独立しており、その中のルールが互いに影響し合うことはできません。
  • 5万以上のルールを持つフィルタがあった場合、そのフィルタを追加することはできません。

今後もSafariの制限に合わせてAdGuardを分割していく予定ですが、なぜそれが楽しくないのかは上記の説明でお分かりいただいたと思います。

開発の優先度が低い

これは非常に分かりやすいので、最後に残しておきました。
ここでは、過去6年間のSafari Content Blocking APIの変更履歴を紹介します。

2015年 - Safari Content Blockingを実装
2016年 - 1つの新機能(make-https)を追加し、いくつかの大きなバグを修正
2017年 - 新機能を1つ追加(if-top-url) (ほとんど使えない機能ですが)、WKWebViewにコンテンツブロッカーを追加、いくつかのバグを修正
2018年 - いくつかのバグを修正、コードのリファクタリング
2019年 - いくつかのバグを修正
2020年 - 大きな変更なし

このペースでは、最新の広告挿入技術に追いつくことができないのは明らかです。
何らかの変化がなければなりません。私たちは、Safari開発者の優先順位がこれらの問題を修正する方向にシフトすることを望んでおり、必要な支援を提供する準備ができています。

(Safari Content Blocking APIにおいて)何をすべきか

広告ブロックのコミュニティは、何年も前から警鐘を鳴らしています。
今まで提出されている機能要求の例を挙げてみましょう:

これは、YouTube広告の問題を解決するに大変役立つのもので、特に興味深いものです。

他にもたくさんありますが、これらは最も差し迫った問題の一部です。
このコミュニティの一員として、私たちはAppleの注意を喚起するのに十分すぎるほどのことをしたと信じています。
もし、さらなる支援が必要であれば、私たちはできる限りの支援を提供したいと思っています。

私たちは今、絶対に変化が起きなければならない段階にいます。
そうでなければ、(広告提供者を除いて)誰もが損をすることになります。

追記: 2021年に向けて、状況は変わりつつあるようです。例えば、ルール5万本の上限が15万本に引き上げられましてそれだけではありません

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

AdGuard for Windows

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

AdGuard for Mac

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

AdGuard for Android

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

AdGuard for iOS

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

AdGuard ブラウザ拡張機能

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

AdGuard for Safari

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

AdGuard Home

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

AdGuardコンテンツブロッカー

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

AdGuardアシスタント

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

AdGuard Temp Mail β

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

AdGuard for Android TV

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