新しいバージョンがリリースされるITP。微妙にアップデートされ、仕様がわかりにくくなっているので現時点で最新のものを解説する。ITPの目的と概要われわれウェブサイト運用者はcookieやローカルストレージなどを使ってブラウザにドメインのデータを保持し、それらのデータを必要に応じてツール間で連携することによって行動計測やコンテンツの出し分けなどのマーケティング活動を行っている。ITPはウェブサイト訪問者のプライバシー保持のためにそれを制限する仕組みである。具体的に何をやっているのかざっくりまとめると、この3つのケースにおいてcookieなどを使ったデータ保持が短期間しかできなくなる(期間の長さはケースごとそれぞれ異なる)リファラが使い物にならなくなる可能性があるということである。DataなどのCDPABテストその他あらゆるcookieを使うツールでデータが不正確になるリスクがある。高額なCDPなどのツールを導入しても、場合によっては使い物にならなくなるのである。この記事ではより正確にSafariのどのバージョンでどんな問題が発生するかを解説する。2.2)ドメインAからドメインBに遷移したとき(前提条件)ドメインAがトラッカー認定されているリンクにクリックIDなど、個人を識別する文字列が入っている(リンクデコレーション)「トラッカー認定」とは何かは後述する。(発生する結果)ドメインBにおいて以下のすべての条件を満たすcookieの有効期限(寿命)が1日になるドメインBのファーストパーティcookieでJavaScriptで生成するcookieで個人を識別する文字列の入っている値のcookieリファラの文字列がeTLD+1(ドメイン名単位)に切り上げられる(ページパスやクエリ文字列を含まなくなる→流入元ページを特定できなくなる)ドメインBとドメインAのデータ連携に制約が発生するということになる。自社ドメインがトラッカー認定されてしまい、クロスドメイントラッキングでリンクにIDを付けていると、遷移先のcookieが全滅するということもあるしかし実際にはSafari13.0.1時点ではこれと異なる挙動がみられる場合がある。「個人を識別する文字列の入っている値のcookie」でなくても有効期限が1日になることがあるし、cookieが3要件を満たしても有効期限が7日になることがある。2.0)ドメインBからドメインCのスクリプト/画像/iframe(ドメインCのリソース)を読み込むとき(前提条件)ドメインCがトラッカー認定されていると(発生する結果)ドメインBにおいてドメインCのサードパーティcookieが全く使えないつまりドメインBとドメインCのデータ連携ができなくなるということになる。2.3)どんなケースにおいてもJavaScriptで生成するあらゆるデータを1週間を超えて保存できないということで、強い制約である。当該ドメインにアクセスした(親フレームとして読み込まれた)ときに、そこからリダイレクトしたドメイン数(ITP2.0で追加)に基づいて決定される(上記のいずれかのドメイン数が4以上になると危険)。Googleなどはまさにこの条件を満たすが、自社ドメインがこれを満たしてしまうケースもないわけではない。大規模のポータルサイトやグループサイトになっていると陥りやすいし、CDNで自社ドメインを使っていると危険である。正確な挙動を言葉にしてしまったので難しい表現になってしまった。影響を受けるのは主にcookieやローカルストレージなどのストレージとリファラであり、これらがどのような影響を受けるかを整理する。2.0)※サードパーティドメインcookieを使うためには、そのドメインのリソース(スクリプト/画像/iframeなど)をページ内で読み込む必要がある。読み込んでいないとトラッカー認定されていなくても使えない。ファーストパーティcookie/リファラファーストパーティcookieだけでなく、ローカルストレージなどあらゆるストレージでデータの保持期限が制限される。制限される期間は流入のパターンによって異なる。13.0.1で挙動を検証した結果をまとめたものである。WebKitの公式記事のとおりではない挙動が一部見られるケースがあり、気を付けなければならない。現状cookieの有効期限が7日の時に、有効期限が1日になる流入(トラッカー認定されているドメインからのリンクデコレーション付き流入)があるとcookieの有効期限が短縮される。黄色背景のセルが公式の発表とは異なる挙動で、さらに有効期限が1日になったcookieはその後サイト内でページ遷移しても有効期限は変わらない。流入元がトラッカー認定されていない)があって初めて延長される。preview版でないSafariでも使えるようになった実際の問題点リンクデコレーション内の文字列とcookieの値が一致していなくても有効期限が1日に制限される。Google検索広告からの流入でGA/GoogleAdsのcookieは影響を受けるが、Facebookからの流入ではFBのcookieは影響を受けていない。同じGoogleの検索広告からの流入のはずなのにサイトによって_gcl_auの寿命が1日だったり7日だったりする。Analyticsのcookieもリンクデコレーションがないはずなのに影響を受けている自然検索流入→(寿命7日)→直後に検索広告流入→(寿命1日)になっている。Safariのバージョンhttps://support.apple.com/ja-jp/HT201222未対策の場合の問題点Googleの検索広告からの流入(URLにgclidパラメータ付き)の場合にGoogle広告やGoogleアナリティクスのcookieの有効期限が24時間になる。Analyticsのcookieも24時間になるケースがある。cookie施策がリスキーなお現時点でFacebook(広告、オーガニック)からの流入では有効期限が7日のまま自社ドメインがトラッカー認定された状態でクロスドメイントラッキングを実装していると、遷移先のcookieが全滅することがある特定のタグが生成するcookieに限定されず、JavaScriptが生成するあらゆるcookieが対象になる。本来ITPと無関係であるはずのcookieが巻き添えを食って有効期限が短縮される挙動がみられる。そのため各タグの発行プラットフォームの対応を待つ、タグごとの対応では不十分で、自前であらゆるcookieを対象にした対策が必要になる。対策方法サーバで発行したファーストパーティcookie(SFP)にデータを保持する。JavaScriptで使う直前に、JavaScriptでも読み書きできるcookieに変換して使う。使い終わったら(JavaScriptのcookie処理が終わったら)サーバサイドcookieにコピーする。cookie処理用のサーバを準備JavaScriptで生成されたcookieをサーバ生成cookieに置き換えて保存させるサーバ生成cookieに保存されたcookieをJavaScriptでも読み書きできるcookieに置き換えるDNS設定を行う。サーバはファーストパーティドメインである必要があるので、同一親ドメインのサブドメインを割り振る。CNAMEまたはANAMEを使うJavaScriptを準備サーバに必要なタイミングでアクセスしてcookie処理をリクエストするタグマネージャーを使って実装してもいい全体の処理の概要は以下になる。運用やネットワークなどの負荷があるため、以下の要件を満たさないと実運用には耐えられない。複数のタグ、複数のcookieキーに対して個別に設定する必要がない(GoogleのITP対策用、FacebookのITP対策用、...など複数のプログラムを用意しないで済む)ネットワークやサーバ負荷を最小限にする。同一セッション中はcookieが切れることはないため、毎回のページビューごとにサーバにアクセスしてcookieのコピー処理をする必要はない。1セッションに1回限りのサーバコールにして、サーバコール数を最小限に抑える。処理の流れ便利なところ上記の対策を行えばこのようなメリットがある。Chromeのプライバシー対策で何が起こるのかhttps://www.marketechlabo.com/chrome-privacy-release-2020/Chromeが2年以内にサードパーティcookieをブロックすると正式に発表しました。https://blog.chromium.org/2020/01/building-more-private-web-path-towards.htmlいろいろなことが言われていますが、具体的に何が起こるのか、混同しやすいところを含めて初心者でもわ...marketechlabobabel/webpackを使ってJavaScriptのソースをリリース用に整備するhttps://www.marketechlabo.com/babel-webpack/babelは新しいESの記法で作ったJavaScriptのソースを古いブラウザでも実行可能に変換してくれるパッケージ。webpackはJavaScriptのソースコードをminifyするパッケージ。普通は組み合わせて使うプロジェクトディレクトリにnode_modulesを作成する場合パッケージを構...marketechlaboGoogleタグマネージャーの使い方&設定をExcelで出力するツールhttps://www.marketechlabo.com/tag-management-gtm-2/Googleタグマネージャー(GTM)とはGoogleが提供している無料のタグマネージャ。Googleアナリティクスの管理に向いている。設置タグは2個あり、両方設置する。それぞれ設置個所が決まっている。Consoleなどの認証...marketechlaboGoogleアナリティクスのapp+webプロパティのデータをBigQuery出力するhttps://www.marketechlabo.com/ga-app-web-property-to-bigquery/Googleアナリティクスのapp+webプロパティがリリースされ、実はサイト訪問の行動ログをBigQueryに出力できるようになった。app+webプロパティそのものの説明これまではGoogleアナリティクス360(GA360)を利用し、そのうえでGoogleに申請しないとログデータをBigQuer...marketechlaboITP2.1の影響と対策方法、JavaScript生成cookie7日問題https://www.marketechlabo.com/itp21/iOS12.2以降で搭載されるSafari12.1からITP2.1が導入される。