iOS17 プライバシー マニフェストとは？

## ```プライバシー マニフェスト```とは？
**iOS17**のプライバシー機能の１つである、```プライバシー マニフェスト ファイル```と呼ばれるものです。

連携するサードパーティSDKが**収集したデータをどのように使用するか**について、アプリ開発者に完全な透明性を提供するように設計されています。
**iOS17**の他のプライバシー機能の１つである、**APIを必要とする理由**です。これは、各```プライバシー マニフェスト```に重要な要素(key element)として記載する必要があります。

:::note info
Appleによれば、```プライバシー マニフェスト```は、「アプリまたはサードパーティSDKによって**収集されるデータの種類**と、アプリまたはサードパーティSDKが使用する**APIに必要な理由**を記載するプロパティリスト」です。
:::
:::note warn
**2024年春までには必要になります。**
:::

| 対象者 | ```プライバシー マニフェスト```に記載する情報 |
|:-:|:-:|
| アプリ開発者  | 「[理由の宣言が求められるAPI](#理由の宣言が求められるapiの記載)」 「[収集データと用途](#収集されるデータの種類と用途の記載)」 「[外部ドメイン使用](#外部ドメイン使用の記載)」 |
| SDK 開発者  | 「[理由の宣言が求められるAPI](#理由の宣言が求められるapiの記載)」 「[収集データと用途](#収集されるデータの種類と用途の記載)」 「[外部ドメイン使用](#外部ドメイン使用の記載)」 |

## ```プライバシー マニフェスト```の操作
Xcodeは、すべてのSDKによって提供される```プライバシー マニフェスト```をアプリに結合します。
App Storeへの公開時に、この情報を１枚のPDFレポート（プライバシー レポート）として開発者に送信します。
このレポートはにより、正確な[**Privacy Nutrition Label**](https://qiita.com/4q_sano/items/9023f6119d2100964757)を作成できるようにすることです。

アプリ開発者が受け取るプライバシー レポート (すべての```プライバシー マニフェスト```を組み合わせたもの) は以下のようになります。
![privacyreport.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82835/8c0f51ed-39f9-0971-23ee-5b4f26755b41.png)
つまり、```プライバシー マニフェスト```の最終的な目的は、ユーザーにデータの使用目的を明確にするためのアプリの理解とレポートを容易にすることになります。

:::note info
プロセスは以下のとおりです
* アプリとSDKは```プライバシー マニフェスト```を作成し、Xcodeがそれを集約した情報（PDFファイル）を開発者に送信します。
* 開発者はこの情報（PDFファイル）を使用して、[**Privacy Nutrition Label**](https://qiita.com/4q_sano/items/9023f6119d2100964757)を正確に作成できます。
* ユーザーはデバイス上で、[**Privacy Nutrition Label**](https://qiita.com/4q_sano/items/9023f6119d2100964757)を確認できるようになります。
:::

## ```プライバシー マニフェスト```は以下のようになります
![privacymanifest.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82835/6c12c81c-a3e4-fe8f-8e2b-31a66c301725.png)

## ```プライバシー マニフェスト```に記載する情報
:::note warn
新しいアプリを公開するとき、または既存のアプリをアップデートときの両方で必要になります。
:::

##### 「理由の宣言が求められるAPI」の記載
アプリまたはサードパーティSDKは、「理由の宣言が求められるAPI」とされる[**新しいカテゴリのAPI**](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api/)に関して承認される理由を記載する必要があります。

:::note info
Appleは、一部のAPIがフィンガープリンティング（Apple Developer Program使用許諾契約で禁止されている行為）により、ユーザーのデバイスに関するデータを収集する目的で誤用される可能性があることを認識しています。こうしたAPIの誤用を防止するため、それらのAPIを使用する場合に、その理由をアプリの```プライバシー マニフェスト```で宣言することをデベロッパに義務付けることを[発表しました](https://developer.apple.com/jp/news/?id=z6fu1dcu)。
:::

##### 「収集されるデータの種類と用途」の記載
アプリまたはサードパーティSDKは、収集する[特定カテゴリ](https://developer.apple.com/jp/app-store/app-privacy-details/#data-type)のデータ使用を説明する「辞書」を```プライバシー マニフェスト```に記載するように、[Appleはアプリ開発者に対し求めています](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests/)。


この「辞書」には次の 4 つのキーが含まれている必要があります
1. 収集するデータのタイプ。
1. データがエンドユーザーのIDにリンクされているかどうか。
1. データが何らかのタイプの[トラッキング](https://developer.apple.com/jp/app-store/app-privacy-details/#user-tracking)を実行するために使用されるかどうか。
1. データが収集される理由のリスト。

##### 「外部ドメイン使用」の記載
アプリまたはサードパーティSDKは、[トラッキング](https://developer.apple.com/jp/app-store/app-privacy-details/#user-tracking)目的で使用するすべての外部ドメインを識別するリストを```プライバシー マニフェスト```に記載する必要があります。
これは、追跡目的で使用される可能性のあるすべてのドメインの存在に対する完全な透明性を確保するためです。

:::note info
Appleの最新のプライバシーガイドラインとApp Tracking Transparency（ATT）要件に準拠していないドメインは、ユーザーがオプトインしていない限り、予防的ブロックの対象となる場合があります。
:::

## プライバシーに影響を与えるSDK（Privacy-Impacting SDKs）
###### サードパーティSDKのみ対象

iOS17には新しいSDK署名が導入されたことから、サードパーティーSDKの新しいバージョンへの署名とAppleによる検証が可能になります。そのため、新しいバージョンのSDKがインストールされると、同じ開発者によって署名されているかどうかをXcodeが検証します。この目的は、ソフトウェアサプライチェーンの透明性と完全性を向上させることです。

:::note warn
Appleは、ユーザーのプライバシーに特に大きな影響を与えるサードパーティーSDKをいくつか特定しました。このSDKのリストは[**こちらで公開されております。**](https://developer.apple.com/jp/support/third-party-SDK-requirements/)
iOS17以降、これらのSDKはAppleによって分類され、プライバシーに影響を与えるSDKを含むアプリは、そのSDKが署名されていることを確認することが**必須**となります。
:::

## Apple解説動画
[プライバシー マニフェストを始めましょう](https://developer.apple.com/videos/play/wwdc2023/10060/)
[デジタル署名を使用してアプリの依存関係を検証する](https://developer.apple.com/videos/play/wwdc2023/10061/)