iOS15.2以降で使えるAppプライバシーレポート機能で確認できる内容について

# 概要
先日12/14にiOS15.2がリリースされましたが、新たにAppプライバシーレポートという機能が使えるようになりました。
最近この機能で具体的にどういった内容を見ることが出来るかについて調べる機会があったのでそのメモです。
ベータ版時点で当該機能については知っていましたが、思った以上に丸見えなので特にアプリ開発者は把握したうえで設計・実装時に留意しておくのが良いと思います。

# Appプライバシーレポート機能で確認できる内容
次のとおりです。また、これらのログは過去7日間分まで保持しているようです。

- データとセンサーアクセス
    - 個々のアプリが位置情報やマイクなどデバイスセンサーや機密性の高いリソースへアクセスした日時のログ
- アプリのネットワークアクティビティ
    - に個々のアプリがネットワークアクセスした際のドメイン情報や累積アクセス回数のログ
- Webサイトのネットワークアクティビティ
    - 個々のアプリがWebサイトアクセスした際のドメイン情報や累積アクセス回数のログ

# 実際の画面
[プライバシー]> [Appプライバシーレポート]から設定をオンにすると記録がはじまります。
記録される内容はアプリがバックグラウンド、フォアグラウンドいずれのアクティビティも記録されるようです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2392124/eec04622-81de-507d-058b-3386f6feb42c.png" alt="Appプライバシーレポート_1" width="350"> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2392124/b656b47e-6cb8-9a29-0f60-e935cfe8a189.png" alt="Appプライバシーレポート_2" width="350"> 

以下のようにセンサーアクセス、ネットワークアクティビティともにアプリ別に詳細を見ることも可能です。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2392124/2449f577-d2ff-6654-3d4c-e34da59089a0.png" alt="Appプライバシーレポート_3" width="350"> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2392124/74f49cbb-7762-7d15-67ce-39e18c4216d0.png" alt="Appプライバシーレポート_4" width="350">

アクセス時刻や頻度などがまるわかり。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2392124/f3012a77-372f-40b1-c15c-452cb0777e19.png" alt="Appプライバシーレポート_4" width="350"> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2392124/c74533e6-2ea1-fc6f-414e-8a08a7662444.png" alt="Appプライバシーレポート_5" width="350">

必要以上に参照していないかを確認するのにつかえそうです。

# エクスポートしたログ

共有ボタンからこれらの生ログをNDJSON形式でエクスポート可能です。
概ね画面に表示されている項目のそのままですが、domainOwnerやinitiatedType(接続を開始したのがアプリ起因であるかユーザ起因であるか)のような細かい情報も記録されています。

データ例：

```
{"accessor":{"identifier":"com.apple.mobilemail","identifierType":"bundleID"},"category":"contacts","identifier":"B77C5048-4492-4408-99D1-9E2187ED8124","kind":"intervalBegin","timeStamp":"2021-12-27T19:39:44.032+09:00","type":"access"}
{"accessor":{"identifier":"com.apple.mobilemail","identifierType":"bundleID"},"category":"contacts","identifier":"B77C5048-4492-4408-99D1-9E2187ED8124","kind":"intervalEnd","timeStamp":"2021-12-27T19:40:29.023+09:00","type":"access"}
{"accessor":{"identifier":"otoshimono.com.lost.mamorio","identifierType":"bundleID"},"category":"location","identifier":"2E581E8A-FD8D-4735-9763-DD61B20601BD","kind":"intervalBegin","timeStamp":"2021-12-27T19:40:32.791+09:00","type":"access"}
{"accessor":{"identifier":"otoshimono.com.lost.mamorio","identifierType":"bundleID"},"category":"location","identifier":"2E581E8A-FD8D-4735-9763-DD61B20601BD","kind":"intervalEnd","timeStamp":"2021-12-27T19:40:54.807+09:00","type":"access"}
{"timeStamp":"2021-12-27T19:38:52.532+09:00","initiatedType":"AppInitiated","context":"","domain":"yt3.ggpht.com","contextVerificationType":0,"type":"networkActivity","domainType":2,"firstTimeStamp":"2021-12-27T19:38:52.532+09:00","bundleID":"com.google.ios.youtube","domainOwner":"","hits":1,"domainClassification":1}
{"timeStamp":"2021-12-27T19:38:56.128+09:00","initiatedType":"AppInitiated","context":"","domain":"lh5.googleusercontent.com","contextVerificationType":0,"type":"networkActivity","domainType":2,"firstTimeStamp":"2021-12-27T19:38:56.128+09:00","bundleID":"com.google.ios.youtube","domainOwner":"","hits":1,"domainClassification":1}
{"timeStamp":"2021-12-27T19:39:50.557+09:00","initiatedType":"NonAppInitiated","context":"","domain":"p24-contacts.icloud.com","contextVerificationType":0,"type":"networkActivity","domainType":2,"firstTimeStamp":"2021-12-27T19:39:49.534+09:00","bundleID":"com.apple.MobileAddressBook","domainOwner":"","hits":5,"domainClassification":1}
{"timeStamp":"2021-12-27T19:38:58.532+09:00","initiatedType":"AppInitiated","context":"","domain":"is4-ssl.mzstatic.com","contextVerificationType":0,"type":"networkActivity","domainType":2,"firstTimeStamp":"2021-12-27T19:38:58.531+09:00","bundleID":"com.apple.AppStore","domainOwner":"","hits":6,"domainClassification":1}
{"timeStamp":"2021-12-27T19:38:57.332+09:00","initiatedType":"AppInitiated","context":"","domain":"amp-api.apps.apple.com","contextVerificationType":0,"type":"networkActivity","domainType":2,"firstTimeStamp":"2021-12-27T19:38:57.332+09:00","bundleID":"com.apple.AppStore","domainOwner":"","hits":1,"domainClassification":1}
{"timeStamp":"2021-12-27T19:38:58.533+09:00","initiatedType":"AppInitiated","context":"","domain":"is1-ssl.mzstatic.com","contextVerificationType":0,"type":"networkActivity","domainType":2,"firstTimeStamp":"2021-12-27T19:38:58.532+09:00","bundleID":"com.apple.AppStore","domainOwner":"","hits":1,"domainClassification":1}
{"timeStamp":"2021-12-27T19:38:58.532+09:00","initiatedType":"AppInitiated","context":"","domain":"is5-ssl.mzstatic.com","contextVerificationType":0,"type":"networkActivity","domainType":2,"firstTimeStamp":"2021-12-27T19:38:58.531+09:00","bundleID":"com.apple.AppStore","domainOwner":"","hits":6,"domainClassification":1}
{"timeStamp":"2021-12-27T19:38:57.332+09:00","initiatedType":"AppInitiated","context":"","domain":"ocsp2.apple.com","contextVerificationType":0,"type":"networkActivity","domainType":2,"firstTimeStamp":"2021-12-27T19:38:57.332+09:00","bundleID":"com.apple.AppStore","domainOwner":"","hits":1,"domainClassification":1}
{"timeStamp":"2021-12-27T19:38:58.531+09:00","initiatedType":"AppInitiated","context":"","domain":"is3-ssl.mzstatic.com","contextVerificationType":0,"type":"networkActivity","domainType":2,"firstTimeStamp":"2021-12-27T19:38:58.530+09:00","bundleID":"com.apple.AppStore","domainOwner":"","hits":6,"domainClassification":1}
```
# 雑感
この機能は今はデフォルトでオフになっているようですが、表からは見えない部分についても行儀よくしておかないとすぐにわかってしまいますね。
これまで以上にアクセス先エンドポイントなどの情報はユーザに知られても問題ないよう設計しておく必要がありそうです。

以上です。