69
その裏に隠されたもの:iOS 9 Safariのコンテンツブロッカーについて知っておくべきこと

Appleは6月のWWDCで、広告を掲載するウェブサイトに関して衝撃的な発表をしました。iOS 9のSafariはコンテンツブロックSafari拡張機能をサポートするとのことです。El Capitanでも同様にサポートされますが、OS XのSafariは既にあらゆる種類の拡張機能をサポートしています。Appleはこの点についてあまり明言しませんでした。これらの拡張機能は…つまり、コンテンツをブロックするものです。(AppleのiOS 9 Newsアプリの広告や、他のアプリのiAdsには適用されません。)

それが何を意味するのか、これまで多くの議論が交わされてきました。つまり、iOS を使用するモバイル訪問者からの広告表示やクリックスルーによって収益を得ているサイトは、おそらく不運に見舞われるでしょう。

実際に試してみるために、最新のiOS 9パブリックビルドで3つのベータ版コンテンツブロッカー(Adamant、Blockr、Crystal)をテストしました。(A、B、Cの3つがランクインしているのは全くの偶然です!)これらの拡張機能は、iOS 9のリリースに合わせてバージョンをリリースする予定の開発者によるものです。

新しい iOS デバイスでわかったのは、読み込み時間よりも、読み込まれているものの目に見えない部分の方が、ページを操作した後もずっとダウンロードが継続されるということだ。

第4世代iPad(2012年後半モデル)を使って、人気のニュースサイトやMac関連サイトをいくつかテストしました。まず、Safariの設定を使ってキャッシュデータ(設定 > Safari > 履歴とWebサイトデータを消去)を消去し、既に読み込まれているJavaScript、メディア、CSSが読み込み時間を歪めていないことを確認しました。次に、リンクをタップした瞬間からページが使用可能になるまでの各ページの読み込み時間をストップウォッチで計測しました。 

サイトの読み込み時間チャート

URLを入力してから最終的に参照された項目が読み込まれるまでの時間を追跡した比較が多く見られますが、私はページが使用可能になるまでの時間を調べていたため、この方法は使用しませんでした。サイトによって差はごくわずかの場合もあれば、かなり大きい場合もあります。

もう一つ興味深い点があります。iPadやモバイル向けに最適化された多くのサイトは、コンテンツブロッカーの有無に関わらず、実質的には変わりません。デスクトップでは読み込みに途方もなく時間がかかり、コンテンツ以外の要素がぎっしり詰まったサイトでさえ、モバイルではよりシンプルな表示へと急速に移行していることは明らかです。

ブロッカーCNNサイドバイサイド

こちらはフィルターをかけた CNN (左) とフィルターをかけていない CNN (右) です。 

ネイティブ広告の先駆者であるBuzzFeedを見てみると興味深い。ネイティブ広告とは、広告主向けに編集コンテンツを開発し、スポンサー記事などとして提供する広告手法である。Blockrを有効にして広告ネットワークやプライバシーに懸念のあるスクリプトをブロックした場合と無効にした場合のBuzzFeedのホームページの読み込み時間はわずか1秒ほどしか変わらず、広告要素が1つ消えただけだった。

ブロッカーBuzzFeed比較

Buzzfeed のネイティブ広告のアプローチでは、フィルタリングされたページ (左) とフィルタリングされていないページ (右) の間にほとんど違いがありません。

最も大きな違いは、裏側で明らかになりました。コンテンツ以外の様々なアイテムのダウンロードをブロックすることで、初回読み込み時にサイトあたりのメモリ使用量が削減されます(その一部は次回の読み込み時にキャッシュされるため、すべてのページのオーバーヘッドにはなりません)。また、ブロックされたスクリプトによるサイト利用中のJavaScriptベースの行動追跡(タスクの実行時間、マウスオーバーした場所、クリックした場所の追跡など)は完全に無効化されます。これにより、バッテリーの消耗が抑えられると同時に、サイトのインタラクティブ性も向上します。(7月に Monday Noteの Frédéric Filloux氏が、デスクトップ広告ブロックとモバイルページの読み込みに関する数値データを発表しましたが、これは改めて確認する価値があります。)

blockers blockr config

Blockr は、正確に何をフィルタリングするかに関するさまざまな設定オプションを提供します。

Blockrのユニークな機能は、すべてのメディアをブロックするオプションです。一見極端に思えるかもしれませんが、接続速度が遅い場合(T-Mobileユーザーが2Gで国際ローミングをしている場合や、ホットスポットのネットワークが不安定な場合など)、帯域幅の上限が設定されている場合、または使用量に応じて課金される場合、このオプションがあれば、専用のブラウザに切り替えることなくWebを利用できます。しかも、ページの読み込み速度が格段に速くなります。

コンテンツブロックの仕組み

コンテンツブロッカーは、JavaScriptで記述されたOS X Safari拡張機能よりもはるかにシンプルです。ソフトウェアプログラムではなく、一連の命令で構成されています。Appleは読み込まれたすべてのコンテンツブロッカー命令を検証し、実行速度を向上させるためにコンパイルし、ウェブページ全体、あるいはページから取得されたメディア、スタイルシート、スクリプト、その他のコンテンツなど、あらゆる取得処理でこれらの命令を実行します。このパフォーマンスへのアプローチは、モバイル版Safariに最適ですが、デスクトップ版Safariでもフィルタリング速度の向上(およびノー​​トパソコンのバッテリー消費の削減)に貢献します。

フィルターは、対象となるURLまたはURLパターンと、それに対してどのような動作を行うかを示す一連のステートメントとして記述されます。これには、画像、ドキュメント、ポップアップなどのリソースタイプ(オプション)も含まれており、これにより、指定された種類のデータのみが影響を受けます。(技術的な詳細については、WebKitチームのSurfin' Safariブログ記事に詳しく記載されています。)

一致したアイテムについては、それを読み込んでいるウェブページと同じオリジンからフィードされているか、サードパーティのサイトからフィードされているかによってフィルタリングすることも可能です。広告ネットワークやその他のトラッキングシステムには、フィード元のサイトに合わせてカスタマイズされたサブドメインを実行するなど、この問題を回避する方法があります。

最後に、フィルタはページ全体をブロックする必要はありません。ページ全体をブロックすることも可能ですが、すべてのCookieを削除したり、特定のCSS(カスケーディングスタイルシート)セレクタを削除したりすることも可能です。これら2つのオプションは、目的が大きく異なります。Cookieはブラウザに固有の識別子を提供する手段の一つであり、ブラウザはこの識別子を格納し、同じサーバー(場合によっては同じドメイン)からページやその他のアイテムをリクエストするたびに送信します。残念ながら、evercookiesやsupercookiesを使用することで、通常のブラウザCookieの制限を回避する方法は他にも数多く存在します。ブラウザCookieをブロックしても、意図的なトラッキングネットワークが他の種類のIDをシードするのを防ぐことはできません。Appleはフィルタを拡張し、Cookieが本来設定されるべきではない場合や、意図的に削除された後にCookieを永続化するために使われるHTML5ベースの機能へのアクセスを禁止する可能性があります。

CSSを削ぎ落とすというのは、Webページのデザインや開発の経験がない方には少し難しそうに聞こえるかもしれませんが、実際には簡単です。HTMLは、高層ビルの梁のようにページの骨組みを定義し、テキストや画像などの内部構造を規定します。オフィスに従業員や家具、プリンターがあるのと同じです。CSSは、高層ビルを覆うガラスや金属のパネルであり、外側を塗装し、壁や区画の壁を作る役割も担います。つまり、固定レイアウト領域と、ページ上に浮かんでいるように見えるボックスの両方の寸法や配置を含め、見た目を定義するのです。

blockers safari config

iOS 9 では、Safari で使用するためにインストール済みのブロッカーを 1 つ以上選択できます。

CSS「セレクター」は、スタイル定義の適用範囲を定義します。セレクターはHTML要素に付加したり、ページの複数の部分で再利用したり、フローティングボックスなどに使用される特定の構造を定義したりするために使用できます。ブロッキングフィルターで特定のセレクターを除外できるようにすることで、広告オーバーレイやその他の迷惑な動作や侵入的な動作を抑制することができます。

Appleは、「設定」>「Safari」>「コンテンツブロッカー」から、コンテンツブロッキング拡張機能を任意の組み合わせで一度に有効にすることを許可しています。また、リロードボタンを数秒間長押しすることで、すべてのコンテンツフィルターを無効にできます。単純なリロードではなく、「フィルタリングなしのリロード」になります。

フィルターが実際にどのように機能するか

blockers reload without

コンテンツ ブロッキング フィルターを有効にした状態で iOS 9 の再読み込みボタンを押し続けると、フィルターされていないページが表示されます。

コンテンツブロッカーはアプリ内にパッケージ化する必要がありますが、アプリ自体は非常にシンプルなものでも構いません。たった3つの拡張機能をテストしただけでも、既に非常に多様な機能があることがわかりました。iOS 9のリリース段階になると、フィルターアプリの巨大なエコシステムが形成され、中にはより高度で設定可能なものもあると予想しています。

シンプルなものもあるでしょう。開発段階のCrystalは、開発者が設定したルールを保存する場所に過ぎません。Adamantには設定項目がいくつかしかありません。Blockrは、3種類のブロックタイプと、アプリ側でホワイトリストを作成できる完全な設定画面を備えています。今後、きっと多くの複雑なオプションが登場するでしょう。Ghosteryが拡張機能として実装された場合、ポップアップ画面は表示されませんが、アプリ側でネットワークごとの複雑な設定をすべて提供できるようになります。

ブラックリストとホワイトリストに特化したアプリの市場は確実に存在するでしょう。ブラックリストはインターネット上のあらゆる機能のサブセットであるため、比較的容易です。開発者はフィッシング対策やマルウェア対策といった分野を開拓していくでしょう。テクノロジーには興味がないけれど、安全にブラウジングしたいという親戚や友人にとって、ブラックリストはインストールする価値のある素晴らしいツールとなるでしょう。

アプリのホワイトリスト化はより複雑になります。なぜなら、すべてをブロックし、一部のサイト、例えば子供向けサイト(Appleが選択した基準による)や、アダルトコンテンツやわいせつな内容を含まないサイト(これもAppleの定義による)のみを許可する必要があるからです。Appleは、過度に広範な一致が多すぎると問題になると述べており、WebKitチームのブログ記事には「それらを使いすぎると、ルールセットが拒否される可能性があります」と記載されています。ルールはリモートから動的に更新できるため、これはSafariの制限のようです。Safariは、コンパイル時にルールが一定のしきい値を超えた場合、ルールを無視することになります。

一部のブロッカーは、iCloud やその他のサービスを介して同期を提供し、ホワイトリストに登録されたサイトなど、ユーザーがカスタマイズした設定を複数の iOS デバイス (おそらく OS X) 間で同じに維持できるようにします。

差別化はパフォーマンスでは実現しません。なぜなら、実際にはAppleがパフォーマンスをコントロールしているからです。むしろ、機能、使いやすさ、そしてコストによって差別化が図られるでしょう。

AT&Tは最近、ワシントンD.C.地域の2つの空港で疑わしい実験を行いました。無料Wi-Fiネットワークのユーザーが読み込むページに、ウェブサイトに広告を重ねて表示するJavaScriptコードを挿入したのです。プライバシーとセキュリティの専門家によって発見されたAT&Tは、すぐにこの実験は終了し、限定的なものにすることを発表しました。(AT&Tのこの行為がなぜ最悪だったのかについては、Private Iコラムで解説しました。)

こうした行為はコンテンツブロッカーで防ぐことができる。なぜなら、こうした戦術を採用する広告ネットワークは、単なる商業情報の提供者ではなく、プライバシー侵害者やスクリプト侵入者として、すぐに最も暗いブラックリストに載せられてしまうからだ。

ロイタージャーナリズム研究所の最近の報告書によると、米国では定期的にオンラインニュースを閲覧する人の47%、英国では39%が広告ブロックソフトを定期的に利用していることがわかりました。広告ブロックソフトの導入、コンテンツに関係のない大量のデータの読み込み、読み込み時間の遅延、プライバシーへの懸念を考えると、iOSのコンテンツブロッカーも同様の人気を得ると予想されます。