Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Tech x Marketing meetup #6 iOS x AD
Search
msano
November 26, 2020
Programming
0
1.4k
Tech x Marketing meetup #6 iOS x AD
msano
November 26, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
「次に何を学べばいいか分からない」あなたへ──若手エンジニアのための学習地図
panda_program
3
680
Claude Code で Astro blog を Pages から Workers へ移行してみた
codehex
0
170
MCP連携で加速するAI駆動開発/mcp integration accelerates ai-driven-development
bpstudy
0
190
Gemini CLI のはじめ方
ttnyt8701
1
110
Comparing decimals in Swift Testing
417_72ki
0
130
大規模FlutterプロジェクトのCI実行時間を約8割削減した話
teamlab
PRO
0
250
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
180
フロントエンドのパフォーマンスチューニング
koukimiura
6
2.3k
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
830
AWS Summit Japan 2024と2025の比較/はじめてのKiro、今あなたは岐路に立つ
satoshi256kbyte
1
260
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
1k
CDK引数設計道場100本ノック
badmintoncryer
2
590
Featured
See All Featured
Practical Orchestrator
shlominoach
190
11k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
BBQ
matthewcrist
89
9.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
A Tale of Four Properties
chriscoyier
160
23k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Being A Developer After 40
akosma
90
590k
Into the Great Unknown - MozCon
thekraken
40
1.9k
How to Ace a Technical Interview
jacobian
278
23k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Transcript
iOS14 GANMA!の対応 セプテーニ・オリジナル 佐野真之 2020/11/24
自己紹介 セプテーニ・オリジナル / GANMA! iOSエンジニア 1400万ダウンロード突破! プレミアム会員(サブスク)、広告、GANMA!コイン、グッズ、書籍など
アジェンダ • WWDC2020とその影響 • GANMA!で対応したこと
WWDC Build trust through better privacyでの発表 プライバシーに関する4つの柱 • オンデバイス処理 •
データの最小化 • セキュリティ保護 • 透明性とコントロール https://developer.apple.com/videos/play/wwdc2020/10676/
オンデバイス処理 SiriやQuickType(予測変換)の例 プライバシー情報はデバイス内で学習させる PFL(Private Federated Learning) • Appleのサーバーで学習したモデルをもとにデバイスで個人に最適化 • プライバシー情報はデバイス内でのみ扱われサーバーに送信されない
• デバイスで学習した差分のみサーバに送られ元のモデルが改善 https://developer.apple.com/videos/play/wwdc2020/10676/
データの最小化 写真選択のアップデートの例 • Limited Photos Library アプリに対して全ての写真を許可するのではなくユーザーが選択 した写真にのみ権限が付与される • PHPickerの導入
アプリとは別プロセスで動作し、アクセス許可の必要はない選ん だ内容のみアプリに渡され、選択中もスクショされたりしない https://developer.apple.com/videos/play/wwdc2020/10641/ https://developer.apple.com/videos/play/wwdc2020/10652/
透明性とコントロール AppStoreConnectの登録情報追加(12/8まで) • データの種類 • データの使用用途など • 個人情報に紐づいているデータ • トラッキングに使用するデータ
https://developer.apple.com/jp/app-store/user-privacy-and-data-use/ https://developer.apple.com/jp/support/app-privacy-on-the-app-store/ ユーザーはインストールする前に何のデータがどう 使われるか知ることができる サードパーティのデータの取り扱いに関しても把握する必要がある
透明性とコントロール ユーザーのトラッキング Safariの初期のトラッキング防止機能が組み込みやサードパーティの Cookie をデフォルトでブロッ クするプライバシー保護の改善を取り組んできた。 今後、App Storeのポリシーでは、他社が所有するアプリや Webサイトをまたいでユーザーをトラッキ ングする前に、許可を必要とする
App Tracking Transparency or SkAdNetwork
仕様 IDFAの取得が許諾性になる (2021年に延期) 許諾ダイアログは1度しか表示できない 設定アプリからアプリごとに変更可能 アプリに埋め込みなので同じ時間でのA/Bテストはできない 実装 ATTrackingManager.requestTrackingAuthorization()でダイアログを表示 info.plstの Tracking
Usage Descriptionを設定 Authorization Status • authorized • notDetermined • restricted • denied ※ そもそも端末設定が拒否だとダイアログはでずにdenied扱いになる ※ deniedの場合はIDFAは0埋め App Tracking Transparency (ATT)
SKAdNetwork トラッキングの許可を得られない場合でもプライバシーを守りつつ 広告パフォーマンスの測定を実現 広告出稿側アプリ、広告掲載側アプリ、 ADNW の三者が対応していく必要がある 欠点 • 測定には遅延がある •
キャンペーン数が100まで • リエンゲージメントできない https://developer.apple.com/documentation/storekit/skadnetwork
ADNWに与えた影響 影響 • ターゲティングできない • 収益落ちる • CV計測できない 対応 •
SKAdNetworkには対応 • ATT許可への実装をアプリに勧める ※ 広告ロード時にATT許可リクエスト出すSDKもあるので注意
MMP(mobile measurement partner) に与えた影響 影響 • リターゲティング、リエンゲージメントなどマーケティングが困難 • IDFAの代わりに使っていたフィンガープリントでの予測を強いられる 対応
• SKAdNetworkに対応 • ATT許諾への実装をアプリに勧める • フィンガープリントなどの予測精度向上 ※ IDFVを他のデータと組み合わせて、外部サイトでユーザーを追跡することはできない
GANMA!の動き 影響 • マーケティングの幅が狭まる • 広告収益が下がる 対応 • SKAdNetworkでCV通知を送れるよう実装 •
SKAdNetworkに対応したSDKのアップデートに順次対応 • ATTフレームワークを使ってIDFAを取得許諾してもらえるように対応
オプトインをしてもらうために • どうやったらオプトインの必要性をユーザーに理解してもらえるのか • いつユーザーにリクエストしたらいいのか • どんなUIがユーザーにわかりやすいのか • 拒否した人に再度お願いする
レビューガイドライン https://developer.apple.com/jp/app-store/review/guidelines/ 5.1.1(iv)アクセス:Appでは、ユーザーのアクセス許可設定を尊重する必要があります。不要なデータアクセスに同意するようユーザーを誘導したり、だ ましたり、強制したりすることはできません。たとえば、ソーシャルネットワークに写真を投稿できるAppで、マイクへのアクセスに同意しなければ写真を アップロードできない仕様とすることは許可されません。可能であれば、アクセスに同意しないユーザー向けに別の方法を用意してください。たとえば、 位置情報の共有に同意しないユーザーには、住所を手動で入力できる機能を用意することができます。 事前説明はいいけど強制や誘導はダメ 3.2.2 (vi) Appでは、ユーザーが対価を支払ったコンテンツを、追加作業(ソーシャルメディアへの投稿、連絡先のアップロード、Appを特定の回数開くことな
ど)を実行しなくても入手できるようにする必要があります。Appは、ユーザーにAppの評価やレビュー、ビデオの視聴、他のAppのダウンロード、広告の タップ、トラッキングの有効化を求めるべきではありません。また、機能やコンテンツへのアクセス、Appの利用、(ギフトカードやコードを含むがこれに限ら ない)金銭やその他の報酬を受け取るために、同様のアクションを取ることもユーザーに求めるべきではありません オンにしたらコイン付与とかはダメ
プレパーミッション ダイアログの文言のみで意図を伝えるのは難しいので 許諾ダイアログの表示の前にプレパーミッションを用意する ポイント • 単純明快になぜ許諾をして欲しいのかを伝える • 誘導、強制、報酬を匂わせない • ボタンを押しやすい位置
• ボタンのデザイン • 最適解をA/Bテストで確かめていく Twitterの例
いつ許諾をお願いするのか ありそうなタイミング • 初回起動のチュートリアル時の後 • アプリの初期設定の後に • 広告表示の前後に • アプリをある程度使ってくれた後に
ポイント • 奥まりすぎるとトリガー数も少なくなるので注意 • 最適解はA/Bテストで確かめていく
オプトインを拒否した人に対して • 1回しか許諾ダイアログをだせない • 設定アプリからは変更できる ユーザーの許諾状況を把握して再アプローチする ポイント • いつだすのか、どのくらいの頻度でだすのか •
ユーザーにとって不快、強制感を与えないように • ダイアログ再度表示できないので設定アプリから変更可能なことを伝える • 最適解はA/Bテストで確かめていく
GANMA!では? 現状 初回起動時にPUSH通知許諾をお願いしていた。 (さらに前はPUSH通知設定ページだったが奥深すぎた ) 対応策 • 説明も兼ねてプレパーミッションを導入 • PUSH通知と同タイミングで出す
• 一連のフローをどこで出すべきかA/Bテストの実装 • 許諾状況を把握し再アプローチの実装
A/Bテストの実現 Firebase RemoteConfig • アプリ内パラメータを定義し、その値をクラウドで更新する • アプリのリリース必要なし Firebase A/B Testing
• RemoteConfigのパラメータをA/Bテストできる • Firebase Analyticsのイベントを目標値として設定 • テストグループの割合調整可能 • 自動でレポート作成してくれる https://www.youtube.com/watch?v=ph-gNsKX2oA
A/Bテストする内容 パラメータ • プレパーミッションをどこでだすのか • 再アプローチをどこでだすのか • 再アプローチをどの頻度で出すのか • プレパーミッションのデザイン
目標値 • ATT許諾率 • PUSH通知許諾率
まとめ • SDKの動向を観察してく • AppStoreConnectのデータ可視化のための準備を進めていく • ATT実装とA/Bテストの準備を進めていく