iOS14からIDFA取得がオプトイン形式になる理由と今後予想される動き


iOS14でも様々な機能で仕様変更がありましたね。
デフォルトブラウザを選択できるようになったので、Chromeに変更してみました。

そんなある日、ふとあることに気がつきます。
開発しているアプリでWebViewが開かないじゃないですか...!?

調査をしたところ、`LSApplicationQueriesSchemes`にURLスキームを追加していないのが原因でした。
そうしないと`UIApplication`の`canOpenURL`は常に`false`を返す仕様になっていました。

> you must declare the URL schemes you pass to this method by adding the LSApplicationQueriesSchemes key to your app's Info.plist file. This method always returns false for undeclared schemes, whether or not an appropriate app is installed.
>
> 引用：[canOpenURL\(\_:\) \| Apple Developer Documentation](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl#discussion)

## iOS14からIDFA取得をオプトイン形式に...!?
上記の調査の過程で、iOS14からのIDFA取得が世間で騒がれていることを知りました。
騒がれている理由を調べると、iOS14からIDFAの取得をオプトイン形式に変更する必要があるからでした。

> With iOS 14, iPadOS 14, and tvOS 14, you will need to receive the user’s permission through the AppTrackingTransparency framework to track them or access their device’s advertising identifier.
>
> [User Privacy and Data Use \- App Store \- Apple Developer](https://developer.apple.com/app-store/user-privacy-and-data-use/) より引用

ただ私はIDFAが何なのかも全くわかっていませんし、なぜ騒がれているのかもわかりませんでした。
そこでまずは全容を把握するために、基本的なところから地道に調査しました。

## そもそもIDFAってなに？
`Identifier for Advertisers`（`IDFA`）は、iOS端末にランダムに割り当てる識別子とのこと。
広告主はIDFAを使って広告のエンゲージメントやアプリ内の行動を計測することできるようです。

> The Identifier for Advertisers (IDFA) is a random device identifier assigned by Apple to a user’s device. Advertisers use this to track data so they can deliver customized advertising. The IDFA is used for tracking and identifying a user (without revealing personal information).
>
> 引用： [What is an IDFA? Find out what an IDFA is here \| Adjust \| Adjust](https://www.adjust.com/glossary/idfa/)

この説明を読んで気になったのは、IDFAを使って広告からのインストールなどを計測する仕組みです。
WWDC20での説明がわかりやすかったので簡単にまとめると、

- 広告タップ時に、広告のキャンペーンIDとタップしたユーザを識別できるIDFAを広告ネットワークに送信
- アプリインストールして起動した時に、同じIDを広告ネットワークに送信
- 送信された情報を広告ネットワークで突き合わせて、どの広告からインストールされたかを把握する

![Screen Shot 2020-11-15 at 20.44.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/87c5f4a3-f9d0-a741-9360-67567a481cd5.png)

引用：[Build trust through better privacy \- WWDC 2020 \- Videos \- Apple Developer](https://developer.apple.com/videos/play/wwdc2020/10676/)
※ 動画の27分あたりからユーザトラッキングに関する説明が始まります。

## IDFA取得のこれまでとこれから
ここまでの調査で、IDFAを使用することでユーザの行動を計測できることがわかりました。
では、IDFA取得の仕様変更がなぜ世間で騒がれているのでしょうか？
まずはIDFA取得のこれまでの仕様とこれからの仕様について調べてみました。

### iOS13以前の仕様
iOS13までは、**ユーザの同意を得なくてもデフォルトでIDFAを取得できていました**。
ユーザがIDFAの取得を拒否したい場合は設定から変更できる、いわゆるオプトアウト形式だったようですね。

### iOS14以降の仕様
iOS14からは、**ユーザの同意を得ないとIDFAを取得できなくなる**ようです。
IDFAを取得する前に、以下のようなプロンプトを表示して、ユーザに同意してもらう必要があるようです。
iOS14で新しく提供される`AppTrackingTransparency framework`を使えば実装できるようです。
もしユーザが拒否した場合、IDFAはすべて 0 になるという仕様になっていました。

![Screen Shot 2020-11-15 at 21.58.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/dd1d1820-3b00-a428-e10b-d3f46d98fe92.png)

![Screen Shot 2020-11-15 at 22.04.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/21488a7f-78ee-cc96-18ae-81c8c336f473.png)

引用：[Build trust through better privacy \- WWDC 2020 \- Videos \- Apple Developer](https://developer.apple.com/videos/play/wwdc2020/10676/)
※ 動画の27分あたりからユーザトラッキングに関する説明が始まります。

### オプトイン形式に変わることの影響
ではオプトイン形式に変わることで、どういう影響があるのでしょうか？

だいたい予想ができますが、IDFAの取得を**拒否するユーザは増えそう**ですね。
自分がユーザでも許可するメリットがわからないので、拒否してしまいそうです。

拒否するユーザが増えると、IDFAを使用した広告効果の計測が難しくなります。
さらにターゲティング広告の配信などもできなくなるため、広告収益の低下にも繋がるようです。

参考：[iOS 14、ターゲティング型広告への影響は？ 対応方法と今後の広告業界について【WWDC 2020】 – fluct magazine](https://magazine.fluct.jp/2020/07/17/7940)

ここまで調査して、やっとことの重大さがわかってきました。
広告業界にとって、この変更による影響はかなり大きいように思えますね。

## なぜオプトイン形式にする必要があるの？
でもどうしてAppleは世間が騒ぐような変更を行うのでしょうか？
調査してわかったことですが、AppleのCMにもヒントはあったようです。

[![Apple Privacy CM](http://img.youtube.com/vi/S28iIpNYJ_c/0.jpg)](https://www.youtube.com/watch?v=S28iIpNYJ_c)

引用：[プライバシー。これがiPhone。 ― 共有すべきでないこと \- YouTube](https://www.youtube.com/watch?v=S28iIpNYJ_c)

### Appleのプライバシー機能の強化戦略
Appleは最近プライバシー機能の強化に力を入れているようです。
よくよく調べてみるとiOS14では、プライバシー関連で複数の機能に変更がありました。（下記は一部です）

- 写真：端末内の写真にアクセスする際に一部の写真のみ読み書きができるパーミッションが増えた
- 位置情報：アプリに渡す位置情報を大幅に曖昧にするプライバシー保護機能が増えた
- 連絡先：アプリが連絡先リストの全体ではなく、特定の必要な連絡先のみへのアクセスに限定されるようになる

![Screen Shot 2020-11-15 at 22.22.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/1284fe9c-a8d4-9cd0-b559-36d9fbd5147c.png)

引用：[Build trust through better privacy \- WWDC 2020 \- Videos \- Apple Developer](https://developer.apple.com/videos/play/wwdc2020/10676/)
※ 動画の4分30秒あたりから写真・位置情報・連絡先に関する説明が始まります。

### IDFAの取得許可もプライバシーを守るため
IDFAをオプトイン形式にしたのも、プライバシーを守るためのようです。
データブローカーがIDFAと個人情報を突き合わせてプロフィールを作成することもできてしまうらしいです。
そういったことからユーザを守るために、IDFAの取得をオプトイン形式にしているのですね。納得。

## 注目が集まり始めるSKAdNetwork
Appleの主張に納得できる一方で、IDFAの取得が拒否されたら計測できないのではという疑問も湧きました。
IDFAの取得が拒否されることは仕方がないと受け入れて開発しなければならないのでしょうか？

### WWDC20で機能改善が報告された
WWDC20を最後までみてみると、どうやらそうでもなさそうです。
`SKAdNetwork`という機能がiOS14でアップデートされました。
まだ仕組みを完全に理解できていないのですが、WWDC20の説明を箇条書きにすると、

- 広告のタップ時にStoreKitフレームワークを呼び出し、キャンペーンIDを渡す
- キャンペーンIDがApp Storeクライアントによって保存される
- アプリダウンロードも記録される
- アプリ起動時にStoreKitにアプリが正常に起動したことを知らせる
- StoreKitは、その情報をApp Storeクライアントに知らせる
- 送信元アプリと宛先アプリの一意の組み合わせでユーザが特定されないよう、変換データをAppleに送信
- Appleで正常に変換されたかどうかを検査する
- 検査に合格したらデバイスに通知され、変換データを広告ネットワークに送信する
- このやりとりの間が終始、暗号化されていてるため、データの完全性を担保している

![Screen Shot 2020-11-15 at 22.52.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/d3a7d458-a67b-b2d1-8fe5-9218e5a411ee.png)

引用：[Build trust through better privacy \- WWDC 2020 \- Videos \- Apple Developer](https://developer.apple.com/videos/play/wwdc2020/10676/)
※ 動画の27分あたりからユーザトラッキングに関する説明が始まります。

### プライバシーが守られているから同意の必要がないSKAdNewwork
上記の説明から、ユーザが特定できないような仕組みになっていることがわかります。
公式ドキュメントにもユーザ固有のデータは含まれていないということが書かれています。

> The Apple-signed notification includes the campaign ID but doesn’t include user- or device-specific data.
>
> 引用：[SKAdNetwork \| Apple Developer Documentation](https://developer.apple.com/documentation/storekit/skadnetwork)

これらのやりとりは終始暗号化されて行われるので、プライバシーが守ることができています。
よって、`SKAdNetwork`でユーザの同意は必要ないとWWDC20の最後あたりで明言されていました。

![Screen Shot 2020-11-15 at 23.31.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/8d13e570-77c3-75bb-5fd1-99ffff91a687.png)

引用：[Build trust through better privacy \- WWDC 2020 \- Videos \- Apple Developer](https://developer.apple.com/videos/play/wwdc2020/10676/)
※ 動画の27分あたりからユーザトラッキングに関する説明が始まります。

### 予想される今後の流れ
WWDC20の内容を見る限り、今後は`SKAdNetwork`の使用が推奨されていくような気がします。
WWDC20の発表から`SKAdNetwork`に関する記事が増えているそうです。
AppsFlyerのとある記事では、IDFAは廃止される方向に進むのではと予想されていました。

> Following these important improvements, Apple introduced the AppTrackingTransparency (ATT) framework, which will ultimately eliminate the IDFA. 
>
> 引用：[Does privacy have to come at the expense of UX? \| AppsFlyer](https://www.appsflyer.com/blog/user-privacy-ios14-idfa/)

Appleのこれまでのプライバシー機能の強化戦略をみると、あながち間違ってないのかな〜と思ったり。

## まとめ
これまでの調査を、以下の3行でまとめてみました。

- iOS14からIDFAの取得がオプトイン形式に変わる
- オプトイン形式に変わったのは、ユーザのプライバシーを守るため
- 今後は`SkAdNetwork`が主流になっていくかも？？？