Privacy Manifestの項目設定要領

PrivacyInfo.xcprivacyの各項目の設定値の説明・対応表です。

参考ページ：

https://developer.apple.com/jp/app-store/app-privacy-details/

https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests

https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api

# Privacy Nutrition Label Types

`NSPrivacyCollectedDataTypes`キーの値（配列）の１項目（辞書）の設定値の対応表です。

## データの種類 (Types of data)

下表を参考にCollected Data Type(`NSPrivacyCollectedDataType`)のValueを設定する

### 連絡先情報 (Contact Info)

|項目名|Collected Data Type|説明|
|---|---|---|
|名前|Name|姓や名など|
|メールアドレス|Email Address|ハッシュ化されたメールアドレスを含むが、これに限定されない|
|電話番号|Phone Number|ハッシュ化された電話番号を含むが、これに限定されない|
|物理的な住所|Physical Address|自宅住所、物理的な住所、郵送先住所など|
|ユーザーのその他の連絡先情報|Other User Contact Info|アプリ外でユーザーへの連絡手段として使用できるその他の情報|

### ヘルスケア／フィットネス (Health & Fitness)

|項目名|Collected Data Type|説明|
|---|---|---|
|健康|Health|健康および医療に関するデータ（Clinical Health Records API、HealthKit API、Movement Disorder APIからのデータ、人を対象とする健康に関する調査研究からのデータ、またはユーザーが提供する健康もしくは医療に関するその他データを含むが、これらに限定されない）|
|フィットネス|Fitness|フィットネスおよび運動データ（Motion APIおよびFitness APIを含むが、これらに限定されない）|

### 財務情報 (Financial Info)

|項目名|Collected Data Type|説明|
|---|---|---|
|支払い情報|Payment Info|支払い方法、支払いカード番号、銀行口座番号など。アプリで決済サービスを利用する場合、支払い情報はアプリ以外の場所で入力されます。デベロッパがその情報にアクセスすることは一切なく、その情報が収集されることもないため、開示する必要はありません。|
|クレジット情報|Credit Info|クレジットスコアなど|
|その他の財務情報|Other Financial Info|給与、収入、資産、負債、その他の財務情報など|

### 位置情報 (Location)

|項目名|Collected Data Type|説明|
|---|---|---|
|詳細な位置情報|Precise Location|小数点以下3桁以上の緯度経度と同等、またはそれよりも高い詳細レベルでの、ユーザーまたはデバイスの場所を示す情報|
|おおよその位置情報|Coarse Location|小数点以下3桁以上の緯度経度よりも低い解像度でユーザーまたはデバイスの場所を示す情報（おおよその位置情報サービスなど）|

### 機密情報 (Sensitive Info)

|項目名|Collected Data Type|説明|
|---|---|---|
|機密情報|Sensitive Info|人種または民族に関する情報、性的指向、妊娠または出産に関する情報、障がい、宗教または哲学的信念、労働組合への加入、政治的意見、遺伝情報、または生体情報など|

### 連絡先 (Contacts)

|項目名|Collected Data Type|説明|
|---|---|---|
|連絡先|Contacts|ユーザーの電話、アドレス帳、ソーシャルグラフ内の連絡先リストなど|

### ユーザーコンテンツ (User Content)

|項目名|Collected Data Type|説明|
|---|---|---|
|Eメールまたはテキストメッセージ|Emails or Text Messages|Eメールまたはメッセージの件名、送信者、受信者、および内容を含む|
|写真またはビデオ|Photos or Videos|ユーザーの写真またはビデオ|
|オーディオデータ|Audio Data|ユーザーの声またはサウンドの録音|
|ゲームプレイコンテンツ|Gameplay Content|保存したゲーム、マルチプレイヤー対戦機能、ゲームプレイのロジックのデータ、またはゲーム内のユーザー生成コンテンツなど|
|カスタマーサポート|Customer Support|カスタマーサポートの依頼中にユーザーが生成したデータ|
|その他のユーザーコンテンツ|Other User Content|ユーザーが生成したその他のコンテンツ|

### 閲覧履歴 (Browsing History)

|項目名|Collected Data Type|説明|
|---|---|---|
|閲覧履歴|Browsing History|ユーザーが閲覧した、Webサイトなどアプリの外部にあるコンテンツに関する情報|

### 検索履歴 (Search History)

|項目名|Collected Data Type|説明|
|---|---|---|
|検索履歴|Search History|アプリ内で実行された検索に関する情報|

### ID (Identifiers)

|項目名|Collected Data Type|説明|
|---|---|---|
|ユーザーID|User ID|スクリーン名、ハンドル、アカウントID、割り当てられたユーザーID、顧客番号、特定のユーザーやアカウントの識別に利用できるユーザーレベルやアカウントレベルのその他のIDなど|
|デバイスID|Device ID|デバイスの広告IDやデバイスレベルのその他のID|

### 購入 (Purchases)

|項目名|Collected Data Type|説明|
|---|---|---|
|購入履歴|Purchase History|アカウントや個人の購入履歴または購買傾向|

### 使用状況データ (Usage Data)

|項目名|Collected Data Type|説明|
|---|---|---|
|アプリ内の操作|Product Interaction|アプリの起動、タップ、クリック、スクロール情報、音楽の視聴データ、ビデオの視聴数、ゲームやビデオや曲の保存場所、ユーザーのアプリ操作に関するその他の情報など|
|広告データ|Advertising Data|ユーザーが見た広告に関する情報など|
|その他の使用状況データ|Other Usage Data|アプリのユーザーアクティビティに関するその他のデータ|

### 診断 (Diagnostics)

|項目名|Collected Data Type|説明|
|---|---|---|
|クラッシュデータ|Crash Data|クラッシュログなど|
|パフォーマンスデータ|Performance Data|起動時間、ハング率、エネルギー使用量など|
|その他の診断データ|Other Diagnostic Data|アプリに関連する技術的診断を測定する目的で収集されたその他のデータ|

### 周囲の環境 (Surroundings)

|項目名|Collected Data Type|説明|
|---|---|---|
|環境のスキャン|Environment Scanning|ユーザー環境におけるメッシュ、ペイン（面）、シーンの認識、または画像検出|

### 身体 (Body)

|項目名|Collected Data Type|説明|
|---|---|---|
|手|Hands|ユーザーの手の構造と手の動き|
|頭部|Head|ユーザーの頭部の動き|

### その他のデータ (Other Data)

|項目名|Collected Data Type|説明|
|---|---|---|
|その他の種類のデータ|Other Data Types|ここで言及されていないその他の種類のデータ|

## ユーザーに紐付けられるデータ (Data linked to the user)

[こちらの記載内容](https://developer.apple.com/jp/app-store/app-privacy-details/#linked-data)を確認し、各自Linked to User(`NSPrivacyCollectedDataTypeLinked`)のValueのYES/NOを判断する

## トラッキング (Tracking)

[こちらの記載内容](https://developer.apple.com/jp/app-store/app-privacy-details/#user-tracking)を確認し、各自Used for Tracking(`NSPrivacyCollectedDataTypeTracking`)のValueのYES/NOを判断する

## データの使用 (Data use)

下表を参考にCollection Purposes(`NSPrivacyCollectedDataTypePurposes`)のValueを設定する

|目的|Collection Purposes|定義|
|---|---|---|
|サードパーティ広告|Third-Party Advertising|アプリにサードパーティ広告を表示したり、サードパーティ広告を表示する組織にデータを共有したりするなど|
|デベロッパの広告やマーケティング|Developer’s Advertising or Marketing|アプリに自社の広告を表示したり、マーケティングコミュニケーションをユーザーに直接送信したり、自社の広告を表示する組織にデータを共有したりするなど|
|アナリティクス|Analytics|データを使用してユーザーの行動を評価すること。たとえば、既存の製品機能の有効性を把握する、新機能を計画する、ユーザー層の規模や特性を測定するなど|
|製品のパーソナライズ|Product Personalization|おすすめの製品、投稿、提案のリストなど、ユーザーに表示される内容をカスタマイズすること|
|アプリの機能|App Functionality|ユーザー認証、機能の有効化、不正行為の防止、セキュリティ対策の実施、サーバ稼働時間の確保、アプリのクラッシュの最小化、拡張性とパフォーマンスの向上、カスタマーサポートの提供など|
|その他の目的|Other Purposes|記載されていないその他の目的|


# Privacy Accessed API Types

`NSPrivacyAccessedAPITypes`キーの値（配列）の１項目（辞書）の設定値の対応表です。


## File timestamp APIs

ファイルのタイムスタンプにアクセスするための以下のAPIを使用するには理由が必要です。文字列 `NSPrivacyAccessedAPICategoryFileTimestamp`を、`NSPrivacyAccessedAPITypes`辞書の`NSPrivacyAccessedAPIType`キーの値として使用してください。

- creationDate
- modificationDate
- fileModificationDate
- contentModificationDateKey
- creationDateKey
- getattrlist(_:_:_:_:_:)
- getattrlistbulk(_:_:_:_:_:)
- fgetattrlist(_:_:_:_:_:)
- stat
- fstat(_:_:)
- fstatat(_:_:_:_:)
- lstat(_:_:)
- getattrlistat(_:_:_:_:_:_:)

`NSPrivacyAccessedAPITypeReasons`配列に、下表から該当する値を指定します：

|設定値|解説|
|---|---|
|DDA9.1|デバイスを使用する人にファイルのタイムスタンプを表示するために、この理由を宣言します。<br>この理由でアクセスされた情報、または派生する情報は、デバイス外に送信してはなりません。|
|C617.1|アプリコンテナ、アプリグループコンテナ、アプリのCloudKitコンテナ内のファイルのタイムスタンプ、サイズ、その他のメタデータにアクセスするためにこの理由を宣言します。|
|3B52.1|ドキュメントピッカービューコントローラを使用する場合など、ユーザーが特にアクセスを許可したファイルやディレクトリのタイムスタンプ、サイズ、その他のメタデータにアクセスするためにこの理由を宣言します。|
|0A2A.1|サードパーティSDKが、アプリが使用するファイルタイムスタンプAPIのラッパー関数を提供しており、アプリがラッパー関数を呼び出すときだけファイルタイムスタンプAPIにアクセスする場合、この理由を宣言します。この理由は、サードパーティSDKによってのみ宣言することができます。サードパーティSDKが、主に必要な理由APIをラップするために作成された場合、この理由を宣言することはできません。<br>この理由でアクセスされた情報、または派生する情報は、サードパーティSDK自身の目的のために利用したり、 サードパーティSDKによってデバイス外に送信したりすることはできません。|


## System boot time APIs

システム起動時間にアクセスするための以下のAPIを使用するには理由が必要です。文字列`NSPrivacyAccessedAPICategorySystemBootTime`を、`NSPrivacyAccessedAPITypes`辞書の`NSPrivacyAccessedAPIType`キーの値として使用します。

- systemUptime
- mach_absolute_time()

`NSPrivacyAccessedAPITypeReasons`配列に、下表から該当する値を指定します：

|設定値|解説|
|---|---|
|35F9.1|アプリ内で発生したイベント間の経過時間を測定したり、タイマーを有効にするための計算を実行するために、システム起動時間にアクセスするためにこの理由を宣言します。<br>この理由でアクセスされた情報、または派生する情報は、デバイス外に送信することはできません。ただし、アプリ内で発生したイベント間の経過時間に関する情報は例外であり、デバイス外に送信することができます。|


## Disk space APIs

使用可能なディスク容量にアクセスするための以下のAPIを使用するには理由が必要です。文字列 `NSPrivacyAccessedAPICategoryDiskSpace`を、`NSPrivacyAccessedAPITypes`辞書の`NSPrivacyAccessedAPIType`キーの値として使用します。

- volumeAvailableCapacityKey
- volumeAvailableCapacityForImportantUsageKey
- volumeAvailableCapacityForOpportunisticUsageKey
- volumeTotalCapacityKey
- systemFreeSize
- systemSize
- statfs(_:_:)
- statvfs(_:_:)
- fstatfs(_:_:)
- fstatvfs(_:_:)
- getattrlist(_:_:_:_:_:)
- fgetattrlist(_:_:_:_:_:)
- getattrlistat(_:_:_:_:_:_:)

`NSPrivacyAccessedAPITypeReasons`配列に、下表から該当する値を指定します：

|設定値|解説|
|---|---|
|85F4.1|デバイスを使用する人にディスク容量情報を表示するために、この理由を宣言します。ディスク容量は、情報単位（バイトなど）またはメディアタイプと組み合わせた時間単位（HDビデオの分単位など）で表示できます。<br>このような理由でアクセスされた情報、または派生する情報は、デバイス外に送信することはできません。この例外は、ディスク容量情報を送信するための明示的な許可をユーザーが提供した場合にのみ適用され、情報はインターネット経由で送信することはできません。|
|E174.1|ファイルを書き込むのに十分なディスク容量があるかどうかをチェックするため、またはディスク容量が少ないときにアプリがファイルを削除できるように、ディスク容量が少ないかどうかをチェックするために、この理由を宣言します。アプリは、ユーザーが観察可能な方法で、ディスク容量に応じて異なる動作をしなければならない。<br>このような理由でアクセスされた情報、または派生する情報は、デバイス外に送信することはできません。ディスクの空き容量が不足している場合、アプリがサーバーからファイルをダウンロードしないようにする例外があります。|
|7D9E.1|この理由は、デバイスを使用する人が任意で提出するバグレポートにディスク容量情報を含めるために宣言します。ディスク容量情報は、レポートの一部として、その人に目立つように表示されなければなりません。<br>この理由でアクセスされた情報、または派生する情報は、ユーザーがディスクスペース情報を含む特定のバグ報告を提出することを明確に選択した後、バグ報告の調査または対応の目的でのみ、デバイス外に送信することができます。|

## Active keyboard APIs

アクティブなキーボードのリストにアクセスするための以下のAPIを使用するには理由が必要です。`NSPrivacyAccessedAPICategoryActiveKeyboards`という文字列を、`NSPrivacyAccessedAPITypes`辞書の`NSPrivacyAccessedAPIType`キーの値として使用します。

- activeInputModes

`NSPrivacyAccessedAPITypeReasons`配列に、下表から該当する値を指定します：

|設定値|解説|
|---|---|
|3EC4.1|あなたのアプリがカスタムキーボードアプリで、デバイス上でアクティブなキーボードを決定するためにこのAPIカテゴリにアクセスする場合、この理由を宣言します。<br>ユーザーにシステム全体のカスタムキーボードを提供することが、アプリの主要な機能でなければなりません。<br>この理由でアクセスされた情報、または派生する情報は、デバイス外に送信することはできません。|
|54BD.1|この理由は、デバイスを使用する人に正しくカスタマイズされたユーザー・インターフェースを提示するために、アクティブ・キーボード情報にアクセスするために宣言します。アプリはテキストを入力または編集するためのテキストフィールドを持たなければならず、ユーザーが観察可能な方法でアクティブキーボードに基づいて異なる動作をしなければなりません。<br>このような理由でアクセスされた情報、または派生する情報は、デバイス外に送信することはできません。|


## User defaults APIs

User defaultsにアクセスするための以下のAPIを使用するには理由が必要です。文字列`NSPrivacyAccessedAPICategoryUserDefaults`を、`NSPrivacyAccessedAPITypes`辞書の`NSPrivacyAccessedAPIType`キーの値として使用します。

- UserDefaults

`NSPrivacyAccessedAPITypeReasons`配列に、下表から該当する値を指定します：

|設定値|解説|
|---|---|
|CA92.1|ユーザー・デフォルトにアクセスし、アプリ自身しかアクセスできない情報を読み書きするために、この理由を宣言します。<br>この理由は、他のアプリやシステムによって書き込まれた情報の読み取りや、他のアプリがアクセスできる情報の書き込みを許可しません。|
|1C8F.1|この理由は、アプリ自身と同じApp Groupのメンバーであるアプリ、アプリの拡張機能、およびApp Clipのみがアクセス可能な情報を読み書きするために、ユーザーのデフォルトにアクセスすることを宣言します。<br>この理由では、同じ App Group 外のアプリ、アプリ拡張機能、App Clip、またはシステムによって書き込まれた情報の読み取りは許可されません。この理由はまた、同じApp Group外のアプリ、アプリ拡張、またはApp Clipがアクセスできる情報の書き込みを許可しません。|
|C56D.1|サードパーティSDKが、アプリが使用するユーザーデフォルトAPIのラッパー関数を提供しており、アプリがラッパー関数を呼び出すときのみユーザーデフォルトAPIにアクセスする場合、この理由を宣言します。この理由は、サードパーティSDKによってのみ宣言することができます。サードパーティのSDKが主に必要な理由APIをラップするために作成された場合、この理由は宣言できません。<br>この理由のためにアクセスされる情報、あるいは、派生する情報は、サードパーティSDK自身の目的のために利用されたり、 サードパーティSDKによってデバイス外に送信されることはありません。|
|AC6B.1|この理由は、Apple Mobile Device Management Protocol Referenceドキュメントに記載されているように、MDMによって設定された管理対象アプリの設定を取得するために`com.apple.configuration.managed`キーを読み取るためのユーザーデフォルトにアクセスするため、またはMDMを介してクエリされるフィードバック情報を格納するために`com.apple.feedback.managed`キーを設定するために宣言します。|