App Store Connectの「Appのプライバシー」は、コードを読み取って自動生成される欄ではありません。
開発者が実態を申告し、その回答がそのまま製品ページのラベルとして表示されます。
質問は短いのに、答えを決めるにはAppleが定義している「収集」「リンク」「トラッキング」の線引きを確認する必要があります。
入力は三つの質問の繰り返しになる
App Store Connectの手順では、Appsから対象アプリを選び、サイドバーのApp Privacyを開いてGet Startedから始めます。
最初に聞かれるのは、自分または第三者パートナーがデータを収集するかどうかです。
収集しない場合はここで完了します。収集する場合はデータタイプを選び、Data Typesセクションで一つずつ次の三点に答えます。
- そのデータを何の目的で使うか
- ユーザーの識別情報にリンクされるか
- トラッキングに使うか
回答の入力と公開には、Account Holder、Admin、App Managerのいずれかの役割が必要です。
Product Page Previewで製品ページ上の見え方を確認してからPublishを押すと、回答が正確でApp Review Guidelinesと適用される法律に準拠していること、取り扱いが変わったら速やかに更新することへ同意するダイアログが表示されます。
製品ページがまだ公開されていない場合、回答は製品ページの公開時に反映されます。
「収集」は送信の有無だけでは決まらない
サーバーへ値を送っていれば必ず申告対象になる、という判断は正確ではありません。
Appleのapp privacy detailsは、Collectをデバイス外へ送信し、リクエストをリアルタイムで処理するのに必要な時間を超えて、自分や第三者パートナーが読める形で保持することと定義しています。
この定義から、次の扱いが分かれます。
| 実装 | 回答への含め方 |
|---|---|
| 認証トークンやIPアドレスをサーバー呼び出しで送るが保持しない | 含めなくてよい |
| リクエストの処理後にすぐ破棄する | 含めなくてよい |
| ログやデータベースへ残し、あとから参照できる | 含める |
判断の基準は、送っているかではなく、処理が終わったあとも読める形で残しているかです。
分析基盤やログ収集サービスへ流している値は、保存期間が短くても残っている限り対象になります。
三つの区分は別々の判定を通す
製品ページに並ぶ三つの見出しは、同じデータタイプに対する別々の質問の結果です。
| 区分 | 判定の基準 |
|---|---|
| トラッキングに使用されるデータ | 第三者データと結び付けてターゲティング広告や広告効果測定に使う、またはデータブローカーと共有する |
| ユーザーにリンクされたデータ | アカウント、デバイス、その他の情報を通じてユーザーの識別情報に結び付く |
| ユーザーにリンクされていないデータ | 識別情報から切り離され、再び結び付ける処理も行わない |
Appleは、関連するプライバシー法で定義される個人情報や個人データを、ユーザーにリンクされたものとして扱うと注記しています。
「社内では個人を特定していない」という運用上の説明だけでリンクなしを選ぶ判断は成立しません。
第三者SDKの分も自分の回答に入る
申告対象は自分が書いたコードの範囲に限りません。
Appleは、自分と第三者パートナーが収集するすべてのデータを特定するよう求めており、third-party partnersには分析ツール、広告ネットワーク、第三者SDK、コードを追加した外部ベンダーが含まれます。
トラッキングの扱いには、見落としやすい記述があります。
自分のアプリのユーザーデータを他の開発者のアプリのデータと結合して広告のターゲティングや効果測定を行うSDKを組み込んだ場合、自分がその用途で使っていなくてもトラッキングに該当するとされています。
導入済みのSDKについて、次を確認してください。
- 何のデータを送っているか、公式ドキュメントで確認できる
- 広告や効果測定の機能を含んでいないか
- 無料枠や既定設定のまま、追加のデータを送っていないか
- 導入した目的と、SDK側の用途が一致しているか
トラッキングに該当するならATTの許可が要る
区分の判定は、実装の要否にそのままつながります。
User Privacy and Data Useでは、iOS 14.5、iPadOS 14.5、tvOS 14.5以降でトラッキングを行うか端末の広告識別子へアクセスする場合、AppTrackingTransparencyフレームワークを通じて許可を得る必要があるとされています。
許可を得られない場合の挙動も明記されています。
広告識別子の値はすべてゼロになり、トラッキングを行うことはできません。
許可を得ていない状態で、ハッシュ化したメールアドレスや電話番号など別の識別子に置き換えて追跡することも認められていません。
同じ提供元のアプリ間の分析に使うID for Vendors(IDFV)は許可の対象外ですが、他社が所有するアプリやWebサイトをまたぐ追跡のために他のデータと組み合わせることはできません。
端末上だけで第三者データと結び付け、ユーザーや端末を識別できる形でデバイス外へ送信しない場合は、トラッキングに該当しないとされています。
許可を求める前に、データの用途を透明に説明すること自体は認められています。
申告が任意になるのは四条件をすべて満たすときだけ
一部のデータは開示が任意になりますが、条件は四つあり、すべてを満たす必要があります。
- トラッキング目的で使わない
- 第三者広告、自分の広告やマーケティング、その他の目的に使わない
- 収集がアプリの主要機能の一部ではなく、ユーザーにとって任意で、まれな場合に限られる
- ユーザーがアプリの画面で、何が送られるかを理解したうえで、毎回自発的に提供する
Appleは、一部の条件しか満たさないデータタイプはApp Store Connectで申告する必要があると明記しています。
判断が割れたときは、任意側ではなく申告側へ倒すほうが、あとからの修正が少なくなります。
回答はアプリを出し直さずに直せる
取り扱いが変わったとき、次のバージョンを待つ必要はありません。
Appleは、回答をいつでも更新でき、変更のためにアプリのアップデートを提出する必要はないと説明しています。
ただし、同じ画面にあるURL類は扱いが違います。
Privacy Policy URLはすべてのアプリで必須、User Privacy Choices URLは任意で、URLの変更は次のアプリバージョンとともにリリースされます。
ポリシー文書そのものに何を書くかは、App StoreのプライバシーポリシーURLに必要な内容と設定方法で扱っています。
見直しが必要になるのは、次のような変更を入れたときです。
- SDKを追加、更新、削除した
- 分析や広告の設定を変えた
- 入力項目や問い合わせの受け取り方を変えた
- データの保存期間や保存先を変えた
問い合わせで受け取る項目の扱いを決めておく
任意開示になり得るデータの例として、Appleはアプリの主要な目的と無関係な任意のフィードバックフォームやカスタマーサポートの依頼で収集されるデータを挙げています。
ただし、この例も四条件を満たす場合の話です。サポート窓口だから対象外、と単独で判断はできません。
IndieFormでアプリ用の問い合わせフォームを公開する場合も、受け取る項目を並べたうえで自分で回答を決めます。
- 返信のために受け取るメールアドレス
- 問い合わせ本文と、必要に応じた添付
- アプリから渡すバージョン、OS、端末などの情報
これらをどこから、どのくらいの頻度で、何のために受け取っているかを一覧にしておくと、SDKの棚卸しと同じ形で回答の根拠が残ります。
アプリ内に埋め込んで常時表示する場合と、設定画面から任意で開くWebページとして置く場合では、三つ目の条件の当てはまり方が変わります。IndieFormは申告の判断を代行しないため、実際の設置方法に合わせて確認してください。
Publish前に確認する
- 収集するデータタイプを、SDKの分も含めて洗い出した
- 保持しない値と保持する値を分けて判断した
- 区分ごとの三つの質問に、実装の実態で答えた
- トラッキングに該当する場合はATTの許可を求める実装がある
- 任意開示にしたデータは四条件をすべて満たしている
- Product Page Previewの表示が、公開しているポリシーと矛盾しない
回答は製品ページに残り続けます。
提出前の作業として一度で終わらせず、SDKや問い合わせ項目を変えたときに戻ってくる場所として扱ってください。