【FAQ】SafariのITPへの対応について知りたい
Safari は、個人情報の観点からcookieの取り扱いを制限するため、Intelligent Tracking Prevention (ITP) 2.1、2.2 及び 2.3 を導入しました。
VWOの計測にはcookieを使用しているため、クロスドメイントラッキング(2つ以上のドメインを跨いだ計測)は制限され、同ドメイン内のテスト計測においても影響が出るようになりました。
ITPがVWOに与える影響
ITPは段階的に制限が厳しくなっていきます。3rdパーティクッキーは完全に制限されていますが、1stパーティクッキーも大きく制限されることになりました。
ITP2.1
1stパーティクッキーの中でJavascriptを用いたクッキーの有効期限が7日間に短縮されました。クッキーはdocument.cookie を利用してビジターのブラウザに作成され、7日が経過するとそれ以降は無効となります。
VWOへの影響:VWO側で対応済みのため影響なし
対応:VWOではトラッキング情報をクッキーからローカルストレージに移行しました。
ITP 2.2
1stパーティクッキーの有効期限が7日間であることに加え、トラッカー認定(後述)されたサイトから流入し、トラッキング目的のパラメータが付加されているURLに該当すると判断されたトラフィックは、クッキーが24時間後に切れるようになりました。
VWOへの影響:VWO側で対応済みのため影響なし
対応:VWOではトラッキング情報をクッキーからローカルストレージに移行することでこれを解決しました。
ITP 2.3
ITP2.2と同様に1stパーティクッキーの有効期限が7日間・トラッキング目的のトラフィックはクッキーが24時間で切れることに加えて、クッキー以外のストレージデータも最大7日間で無効となります。
VWOへの影響:クッキーとローカルストレージ共に最大7日間と制限されたため影響があります。
キャンペーンのテスト対象となったビジターが、7日経過した後にサイトを再訪した場合、新規のビジターとしてカウントされてしまいます。
また、トラッキング目的の流入に関しては訪問から24時間経過すると新規ビジターとしてカウントされます。
新規ビジターとしてカウントされることによって、初回とは違うパターンに割り振られたり、UUが余分に消化されたり、再度ゴールが発火する等の影響があります。
対応:サーバー上にクッキー同期のためのエンドポイントを設置することで対応可能
Tips
サイトがトラッカー認定される条件:下記の基準に基づいて決定されます。
・そのサイトがサブリソースとして他のドメインで読み込まれている数
・そのサイトがiframeとして他のドメインで読み込まれている数
・そのサイトが他のドメインで読み込まれたときの、そこからリダイレクトしたドメイン数
・そのサイトにアクセスしたときに、そこからリダイレクトしたドメイン数(ITP2.0で追加)
対策によって解決できること・できないこと
ユーザーが直近の訪問から7日以内に訪問し続けるのであれば、対策をしなくても影響はありません。
もし直近の訪問から7日以上経過する可能性がある場合は、サーバー上にクッキー同期のためのエンドポイントを設置することで、ITPがVWO計測に及ぼす問題のほとんどを解決することができます。
エンドポイントの設置方法についての詳細は対策方法の詳細をご覧ください。
ここでは、エンドポイントの設置によって解決できることとそうでないことを記載します。
VWO計測への影響詳細とその理由
VWOでは、ビジターのトラッキング情報をクッキーに保存します。クライアントサイドで動くVWOプラットフォームでは、document.cookie を利用しクッキーを作成しています。
ITP 2.1 導入後はトラッキング情報を補うため、VWOはこの情報をクッキーからローカルストレージに移行しました。
しかし ITP 2.3導入後は、トラッキング目的のトラフィックに対しては、ローカルストレージを使うというオプションも制限され、ストレージの保存期間の上限も7日間に設定されました。
結局、全ての 1stパーティクッキー及びローカルストレージデータはそれぞれ24時間、7日間と有効期間が定められました。つまり、ローカルストレージを使ったとしても、キャンペーンのテスト対象となったビジターが、7日経過した後にサイトを再訪した場合、新規のビジターとしてカウントされてしまいます。これではビジターの数を実際より多くカウントし、ABテストキャンペーンのCVRに影響を与える可能性があります。この影響はVWOで収集する全てのデータに及びます。
影響について
ユーザーが、直近の訪問から7日以内に再訪問し続けるのであれば問題はありません。
しかし、ユーザーがテスト対象ページに訪問してから7日経過してしまうと、前回訪問の時とはVWOクッキーが一致せず、次のようなことが起こる可能性があります。
7日経過後の再訪時に、ユーザーが新しいビジターとして計測され、UUが再度カウントされてしまう
初回の訪問と再訪とで同じパターンを見せない可能性がある
1.のユーザーが再度ゴール設定項目のアクションをした際は再びゴールがカウントされる
ファネル計測中に7日経過してしまうと、ファネルから離脱したとみなされる。
たとえば、あるテストで設定したファネルに3つのステップがあり、ビジターが最後のステップを8日目に完了したとする。しかし、7日間が経過しているため初回訪問時のデータが無効となり、ビジターは全てのステップに到達しているにも関わらず、このファネルを最後まで完了したとカウントされない
これらは、収集されたデータが(ローカルストレージに保存されるため)7日間で有効期限が切れてしまうためです。ユーザーは新規のビジターとして扱われ、データ収集もいちから始まります。同じユーザであるにも関わらず、複数回トラックされることでテスト結果は曖昧になります。
ということは、7日経過後に再訪したユーザーに、同じテストの異なるパターンが表示されることもあります。一貫性がないユーザーエクスペリエンスとなり、キャンペーンの正確性に影響がでかねません。また、トラッキングを目的としたURLから到達したユーザーは、ページに到達してから24時間が経つとすぐに、新しいビジターとしてカウントされることになってしまします。これはクッキーに基づいて、ユーザーにテストパターンを表示しているためです。
対策方法の詳細
クッキー同期用エンドポイントの設置
ITP関連の問題を回避するには、サーバー上にクッキー同期のためのエンドポイントを設置します。
エンドポイントを設置することで、クッキーの保持期間を延長することが可能です。VWOが生成したクッキーを読んで永久的な期限(例えば、10年)を設定する必要があります。
VWOでは、このスクリプトをバックエンド開発で利用されるプログラミング言語 PHPの他、Node.js、Java、Pythonなどでご提供しています。
コードスニペットを追加するには、2つのステップがあります
同期コードファイルを作成し、扱う言語に対応した拡張子を付けて保存します。
例えば、PHP実装を扱う場合は、ファイル名を<fileName>.phpとする必要があります。
注:.NET実装を使用する場合は、同期コードをコントローラファイルに記述します。
コードスニペットのsyncUrl属性に同期ファイルのURLを入力し、このコードスニペットファイルをVWO SmartCodeの前に配置します。
PHPの場合
・PHPを呼び出すscript(サイトページに設置します)
PHPの場合、このjsをVWOタグの前に設置する必要があります。
開発元Gist:syncphpImplementation.js
・呼び出されるPHPファイル(サーバーに設置します)
次のスクリプトを追加することで、クッキーは期限が切れなくなり、
ローカルストレージに頼る必要もなくなります。
開発元Gist:cookieDontExpire.php
Node.jsの場合
・Node.jsを呼び出すscript(サイトページに設置します)
Node.jsの場合、このjsをVWOタグの前に設置する必要があります。
開発元Gist:syncnodeJsImplementation.js
・呼び出されるNode.js(サーバーに設置します)
ファイル名:Sync.js。Node.jsでの実装
開発元Gist:syncjsnodeJsImplementation.js
SYNC.NETの場合
・Server Controller(サイトページに設置します)
.NET の場合、VWOタグの前にこの設定を設置する必要があります。
開発元Gist:dotNetController
NetStandard2.0 を利用されている場合は、上記のコードを次のように利用できます。
開発元Gist:dotNetStandard2.0Snippet
複数ドメインで実施されるテスト
VWOでは現在、Safariブラウザを利用しているユーザーのクロスドメイントラッキングはサポートしていません。
Tips
ビジターが、トラッキングを目的としないリンク、つまりクエリ文字列ややフラグメントがついていないドメインからきた場合、特に追加でご対応いただく必要ありません。
VWOでは、クライアントサイドのクッキーデータは、自動的にローカルストレージへフォールバックさせることで、7日間の制限に対応しています。
クッキー同期用エンドポイントを利用した対策での注意
クッキー同期用のエンドポイントをインストールしたとしても、Webアンケートでは影響が残ります。これは1stパーティクッキーの制限によるものです。
7日間の間に、ビジターがアンケートの全ての項目を入力完了できなかったとします。ローカルストレージ上のデータは7日経過後に期限が切れてしまうため、アンケート上でそれまでに入力されたデータは消えてしまいます。
更にそのビジターは、新規のビジターとしても扱われず、アンケートが再び表示されることはありません。これは、クッキー同期用エンドポイントをインストールすることで新規/再訪のデータがクッキーに格納されているため、データが消えているからです。
ITPとiOSの対応表
Q&A
クッキー同期用コードの仕組みについて教えてください
全てのクライアントサイドのVWOクッキーを、サーバーサイドクッキーに変換し、10年の有効期限を設定します。サーバーサイドクッキーには7日間の期限が適用されないため、計測や他のVWO機能が通常通り動きます。
10年経つまでVWOのクッキーは絶対有効期限が切れない、ということですか
いいえ。 VWOはクッキーの値と一緒に各クッキーの適正な有効期限を持っています。期限がきたら、ブラウザのVWOクッキーは切れるようになっています。
セキュリティ上の脅威はありませんか。クッキーがVWOを通じて漏洩する可能性は
全くありません。 VWOは上記の同期用スクリプトに送信されるクッキーを受信したり、保存することはありません。全てのロジックは、スクリプトが置かれたサーバー内で完結します。よってセキュリティ上の脅威やVWOを通じたクッキー漏洩のご心配はありません。