見出し画像

SKAdNetwork - Appleの広告規格 (1)

アプリマーケターの皆さん こんにちは!アドネットワークnend (ネンド) の「えばんじぇりすととーる」です。今週から始まったGoogle IO 2021、皆さん見てますか!GoogleがChromeでcookieを廃止していくプロジェクト・Privacy Sandboxが、かなり進んできましたね。我々にも関係があるので、後々記事にしてまとめたいと思います。

本題に入る前に少しnendとAndroidについて。nendは国内屈指の巨大な広告ネットワークです。そのため、日本のおおよそのスマホOSシェア率が広告配信の数値に反映されます。Androidも大事な売上構成比率を占めており、Googleが最新Android OS 12でどんなことを発表するのかとても注目しています。Google IO 2021の中で、いくつかプライバシー関連の新機能が発表されましたが、今のところGoogleはプラットフォーマーとしてプライバシーでAppleを追随する気配はないように見受けられます。

SKAdNetwork: エスケー・アドネットワーク (名称)

さて、今回のnoteは皆さんが注目しているAppleのSKAdNetwork (エスケー・アドネットワーク)について。先ず、名称から。
SK / AdNetwork、後者はnendの様なアドネットワークの事になるので、プロモーションを行う広告主と、広告表示を行うパブリッシャーを広告 (ad)で繋げるネットワークという意味になるかと思いますが、このAdNetworkは我々nendの様な実際のビジネスを目的としたアドネットワークではないので、規格に近いイメージになります。

そしてSK、これはAppleのStoreKit(ストアキット)の略称の様です。StoreKitは前回説明したATTと同様、AppleがiOS/iPadOS/tvOSのアプリディベロッパー向けに定めた大枠の規格・骨組み(フレームワーク)です。名前の通り、Appleのストア=App Storeに関係があるキット(道具一式)です。StoreKitのフレームワーク中にIn-App Purchase (アプリ内課金)が入っています。どちらもApp Storeと直接関係があり、ざっくりいうとIn-App Purchaseはストア手数料、SKAdNetworkはApp Storeでのアプリインストールで関係があります。

もう一つ名称で触れたいことは、国内での略称と海外での略称の違いです。国内はSKA(エスケーエー)もしくはSKAD(エスケーアド)と呼ぶことが多く、海外では頭文字のSKAN(スキャン)が良く使われています。私自身、海外を攻、国内を守として両方と向き合う立場なので、これがとてもややこしい。そのため、私は国内外一貫して文字ではSKAdNetworkと書き、話の中ではエスケーアドネットワークと全部言ってます。

SKAdNetwork - StoreKit <> WebKit

StoreKitの対義語として、WebKit(ウェブキット)があります。どちらもAppleのソフトウェアに関連するIT規格となり、Appleが所有していますが、URLの違い(StoreKit-apple.com, Webkit-.org)にある通り、WebKitはオープンソース化されています。今回のSKAdNetworkの仕様の中で、WebKitに関係する箇所がありますので、一連の記事の中で触れたいと思います。WebKitの詳しい説明はwikipediaをご参照下さい。

ATTフレームワークとの決定的な違い

前回、ATTフレームワークについて説明しました。折角なので先ず、ATTフレームワークとビジネス上最も異なる点について。iOS/iPadOS 14.5以降、プライバシーが関わるSDKに対して、AppleはATTを対応必須としました。その反面、AppleはまだSKAdNetworkを対応必須にしていません。双方共にプライバシーと、とても深い関係があります。対応必須になっていない理由は恐らく、広告は全てのアプリに関係するものではないとか、広告計測の分野でSKAdNetworkは新参者で、これまで他事業社の計測ツールが主流だったからとか、複数あると思います。Appleが今後もSKAdNetworkの開発に注力して、定期的なバージョンアップを行い、iOS/iPadOS/tvOSでの広告計測シェアが増え続けるようであれば、もしかするとATT同様、対応必須の項目にしていくかもしれません。

SKAdNetworkの外側の話はこのへんで一旦止めるとして、中の仕様を見ていきましょう。

SKAdNetwork 1.0, 2.0, 2.1, 2.2, 3.0...

上記の数字はSKAdNetworkのこれまでのバージョンです。現在3.0。(Apple更新ページ) SKAdNetworkという広告計測は、最近までスマホ広告業界で良く話されてきた広告関連のトピックではなかったです。そのため、AppleがWWDC2020でiOS14の発表を行い、プライバシーのセッションでSKAdNetwork 2.0の仕組みについて説明した時に、初めてその仕組みがあることを知った人は多かったのではないでしょうか。私もその一人ですが、過去を知れば今が分かる、そして未来が見えてくるという格言もありそうなので、折角なので1.0から駆け足で見ていきましょう。

<SKAdNetwork 1.0>
対象OS
iOS11.3 (2018年3月29日~***) ~ iOS13.7 (2020年9月2日~) 
特徴:CV計測はクリック (StoreKit-Rendered Ads) のみ
ポストバックパラメーター:(version), ad-network-id, campaign-id, transaction-id, app-id, attribution-signature
***2018年5月からヨーロッパ経済圏 (EEA) でGDPR施行
***2020年1月1日から米・加州消費者プライバシー法 (CCPA) 施行

<SKAdNetwork 2.0>
リリース日:
2020年11月24日
対象OSiOS14 (2020年9月16日~) 以降
特徴 (追加機能):新規獲得と削除/再ダウンロードユーザーの識別可、パブリッシャーID追加、インストール後のイベント計測可
ポストバックパラメーター:version, ad-network-id, campaign-id, transaction-id, app-id, attribution-signature, redownload, source-app-id, conversion-value (太字は追加分)

<SKAdNetwork 2.1>
リリース日:2020年12月ごろ
対象OS
:iOS14 (2020年9月16日~) 以降
特徴 (変更点):(主にアドネットワーク側) ポストバックのパブリックキーが "Apple P-192" から "Apple NIST P-256" に変更
ポストバックパラメーター:version, ad-network-id, campaign-id, transaction-id, app-id, attribution-signature, redownload, source-app-id, conversion-value (変更なし)

<SKAdNetwork 2.2>
リリース日:
2021年2月1日
対象OS:iOS14.5*** (2021年4月26日~) 以降
特徴 (追加機能):ビュースルーCV計測可、Private Click Measurement (app-web計測) 追加
ポストバックパラメーター:version, ad-network-id, campaign-id, transaction-id, app-id, attribution-signature, redownload, source-app-id, conversion-value, fidelity-type (太字は追加分)
***ATT対応必須

<SKAdNetwork 3.0>
リリース日:
2021年4月27日
対象OS:iOS14.6 (~) 以降
特徴 (追加機能):有効インプレッションがラストクリックCVに結びつかなかった場合、該当のネットワークにdid-win: false 付のポストバックが送られる。IPアドレスの保護 (i) 
ポストバックパラメーター:version, ad-network-id, campaign-id, transaction-id, app-id, attribution-signature, redownload, source-app-id, conversion-value, fidelity-type, did-win (太字は追加分)

(ii) 対象OS:iOS15 (~) 以降
追加機能:NSAdvertisingAttributionReportEndpoint。プロモーションアプリのinfo.plist内、上記コードの送付先URLを追加することで、従来Apple→AdNetworkのみだったポストバック配信先をもう1つ追加することが出来る。

SKAdNetwork 2.0リリース以後、次のアップデートまでの期間がかなり短くなっています。これからのOSアップデートも考えると、更にSKAdNetwork APIの複雑化が予想されます。上記はできる限り最新情報にアップデートしていきたいと思いますので、困ったときなど、この早見表を参考にしてもらえると嬉しいです。

更新履歴:

20210616 (i) - SKAdNetwork3.0 / IPアドレスの保護を追加。WWDC21 Apple's Privacy Pillars in Focus (URL 22:20~) 
20210616 (ii) - NSAdvertisingAttributionReportEndpoint 追加。SKAdNetwork 3.0 / iOS15~

ポストバックパラメーターの説明

「データは嘘をつかない」「データが全て」と私はアプリマーケティングの現場で話すことがあります。マーケターの皆さんは良くご存じだと思いますが、この「データ」は何かというと、ポストバックされる一つ一つのパラメーターの値をまとめたものを、我々は「データ」と呼んでいます。そのため、それぞれのパラメーターの正確な意味が分かっていないと、正しいデータの見方が出来ません。

nendが正式連携している広告の計測ツールは、adjust, appsflyer, kochava, singular, tune, tenjin, adbrix, myTracker, firebase, metaps analytics, yahoo mobile insightなどがあります。それぞれ一つ一つに異なるパラメーターとnend側の数値を返すマクロがあります。この一群にAppleのSKAdNetworkが追加された形になりますが、プライバシーが重視された初めての広告計測ツールになるため、パラメーターもかなり独特です。前述の項目でしれっと入れてしまいましたが、現時点 (2021年5月20日) 最新のSKAdNetwork 3.0のパラメーターを、一つ一つ見ていきましょう。3.0の仕様はこちら。3.0未満の仕様はこちら

ポストバックパラメーターの詳細

"version" - SKAdNetworkのバージョン情報。値は "1.0" ~ "3.0"
"ad-network-id" - 広告配信を行うネットワークのID。ネットワークがAppleに登録申請をして、付与されたID。nendのidはこちら(Appleはnetwork IDの中のアルファベットは小文字であるべきと回答しています)nendSDKなど広告SDKを積むパブリッシャーアプリのinfo.plist内に記入される。
"campaign-id" - 広告配信のキャンペーンID。配信する1ネットワークあたりのID上限は100まで。ネットワークによって更に低いID上限を設けるところもある(例:Facebook - 9 campaigns / 5 ad sets = 45 campaign-id)
"transaction-id" - トランザクション=取引/処理 ID
"app-id" - プロモーションのアプリID (App StoreのアプリID:例 GERA = 1501666810, URL右端のidXXXXX)
"attribution-signature" - 配信 (アトリビューション) における署名
"redownload" - 獲得ユーザーのタイプ。"true" = 過去アプリ消去して、再ダウンロードのユーザー。"false" = 新規獲得ユーザー
"source-app-id" - 広告配信先のパブリッシャーアプリID (App StoreのアプリID)
"fidelity-type" - CVに結びついた広告タイプ。"0" = ビュースルー (view-through ad)、"1" = クリック (StoreKit rendered ad)
"conversion-value" - CV値。"0" = インストール。6bit (6桁)の二進数を自然数に置き換えた値。マッピングすることによりインストール後の数値計測が可能。0~63。
"did-win" - 有効インプレッション、もしくは有効クリックがCVに結びついたかどうかの判定。"true" = CVに結びついた。"false" = ビュースルーCV、あるいはラストクリックCVに結びつかなかった=他社ネットワークの配信が結びついた。後者のfalseの場合、 "source-app-id"と"conversion-value"のパラメーターはポストバックに含まれない。falseを受け取れるネットワークの最大数は5つまで。

"did-win" の詳細はAppleのアトリビューションウィンドウ=(クリックやインプレッションの) 有効期間の記載があるこのページ(英語)をご参照下さい。英語の読解で気を付けて欲しいのは、Appleの指す "ad impression"というのは、広告業界で良く使われる広告インプレッション=広告表示の事ではなく、Apple側で記録された有効クリック (StoreKit-rendered ad) もしくは有効インプレッション (view-though ad) のことです。そして fidelity-typeの高い方 (1) =クリック>インプレッション = (0) がCVと結びつけられる時に、優先される力関係があります。

SKAdNetwork<一連の流れ>

SKAdNetworkについて少しでも調べたことがあれば、Appleのこの図は見たことがあるかと思います。これを1場面1場面、一つ一つ、矢印に沿って補足説明します。図を見て意味が分からない箇所は、以下の該当の補足文を参照ください。この図の中のad network はnendにします。

<一つ目>
Ad for app B = プロモーションするアプリB (青■) の広告
iTunes item ID = アプリBのiTunes item ID (= App Store ID)

<二つ目>
Ad network = 広告を配信するアドネットワークnend(赤■)
橙〇=アドネットワークnendの署名
loadProduct (...) = (nendパブリッシャーのnend広告SDKによる)広告の読込

<三つ目>
Display ad inside app A = nendパブリッシャーアプリAの中で青■の広告が表示
User taps = 端末を使うユーザーが青■の広告をタップ=クリック

<四つ目>
App Store / App B = 端末下部から出てきたApp B (青■) のApp Store ページ、nendの署名付き (橙〇)

<五つ目>
User installs = (タップした) ユーザーが 青■のアプリBをインストール
Launch = アプリ起動

<六つ目、七つ目(タイマー)>
App B = 青■のアプリBが立ち上がり、
registerAppForAdNetworkAttribution ( ) = 先ずこのコードが読み込まれ、インストール/起動が記録される →
Start timer = 24時間タイマーがスタート →点線 (Optional = 任意)
updateConversionValue (_:) = アプリBの中で予め設定されているConversionValueの数値が上昇する (上昇する度に何度でも繰り返される) →
Start timer = 24時間タイマーがリフレッシュされ再びスタート → 
Timer expires = 24時間タイマーが切れる

<八つ目、九つ目>
ad network URL / Postback - 赤■ アドネットワークnendに、CVポストバックが送られる →
nendはAppleにポストバック内容を確認した承認ポストバックを返す。

六つ目と七つ目のタイマーの仕組みをもう少し説明します。ConversionValueはインストール後のユーザーの動きを計測するための値です。個々のアプリに合わせて、ConversionValueのマッピングをカスタマイズすることにより、インストール後のユーザー行動データが計測できるようになります。ConversionValueは前述の通り0~63までの数値になり、ユーザーのアプリ内アクションによって、ConversionValueが1つでも上昇する度に、24時間のタイマーがリフレッシュされ、0からリスタートします。その後、ConversionValueの値に何も変化が起きないでタイマーが切れた場合、切れた後の0~24時間以内のランダムなタイミングで、前述したパラメーターを含んだポストバックがアドネットワークnendに送られます。

SKAdNetwork<一連の流れ (例) 課金ゲームアプリ>

例を交えて説明をします。チュートリアル完了後、課金ができるゲームアプリがあるとします。ユーザーがそのゲームの広告をマンガアプリの中でクリックして (三つ目)、出てきたApp Storeページから (四つ目) そのゲームをインストールします (五つ目)。起動したら(六つ目)即座にアプリの裏側で "registerAppForAdNetworkAttribution ( )" のコードが読み込まれ、タイマーがスタートします (七つ目)。

10分後、ユーザーがチュートリアルを完了して、updateConversionValueの値が1になります (六つ目に戻る)。ConversionValueの値が上昇したので、10分経過したタイマーはリフレッシュされ、再び0からリスタートします (七つ目)。

その20分後、チュートリアルを完了したそのユーザーは1200円の課金をして、updateConversionValueの値が2になります (六つ目に戻る)。再びConversionValueの値が上昇したので、20分経過したタイマーはリフレッシュされ、再び0からリスタートします (七つ目)。
課金して、もう少し遊んだそのユーザーはゲームを閉じ、再びゲームを立ち上げて遊ぶ前に、24時間のタイマーが切れるとします。

タイマーが切れた後、Appleは0~24時間以内のランダムなタイミングで、CV成果を上げたアドネットワークnendにポストバックを送り、そのポストバックがnendの管理画面上に反映されます。

ここで大事な点は、Appleから成果を上げたnendにポストバックが送られるまでの遅延時間(ラグ)です。ユーザーがそのゲームを端末にインストール (起動) して、成果を上げたnendにCVポストバックが届くまで、どれくらいの時間が掛かっているのでしょうか。早速、計算してみましょう。

SKAdNetwork<ポストバックが到着するまでのラグ>

アプリをインストール (起動)して、10分が経った時にチュートリアル完了。その20分後に1200円の課金。その後、ConversionValueの値は上昇せず、そのままタイマーが切れる。ここまで24時間30分が経過しています。

Appleがnendにポストバックを送るタイミングはタイマーが切れてから、0~24時間以内のどこかになるので、今回の例では、そのユーザーがインストール (起動) した後、最短で24時間30分後、最長で48時間30分経った後、nendはそのユーザーの情報 (conversion-value 2 = チュートリアル完了+1200円課金) をAppleからのポストバックで得ることができます。

これまでadjustやappsflyerなどのMMPを使った広告計測ツールは、ほぼリアルタイムでインストールや課金イベントが完了した瞬間に、CVポストバックをnendに送ってきました。SKAdNetworkはプライバシー保護に重点を置いた広告計測ツールのため、情報の伝達にかなりのラグがあり、ネットワークにポストバックする回数も一回のみ、インストール後のユーザー行動を計測する場合はConversionValueのマッピングを予め用意しないといけません。

SKAdNetworkを使った広告計測では、ユーザーの細かい行動情報を上手くConversionValueに乗せて=マッピングをして、必ず発生するラグをいかに短くするかが重要になってきます。

結構記事が長くなったので、今回の説明はここまでにしたいと思います。次回はSKAdNetwork配信で成功の鍵を握るConversionValueマッピングを中心に、更にSKAdNetworkについて深堀っていきたいと思います。

「プライバシーMktg」のSlackグループご案内

nendでは「プライバシーMktg/marketing」のオープンSlackチャンネルを用意しています。このリンクからどなたでも参加できます。その中で質問/コメントいただければ、私 or 参加者が分かる範囲で返答しています。是非、気軽に参加してもらい、互いに有益な情報を交換・蓄積していくことで各々のマーケティングの一助となれば幸いです。

次回も情報満載で良質な記事にしたいと思います!それまで、皆さんお元気で!