Google Play の Data safety フォームと Apple の App Privacy の詳細の記入方法
各質問票が尋ねること、SDK による回答の変化、間違えやすい 3 つの質問、必要な回答を各ベンダーが公開している場所。
ビルドに含まれるすべての SDK を洗い出し、各ベンダー自身の開示ページまたはプライバシーマニフェストを開き、アカウントなど自分で収集するものを加えます。そして、その 1 つのリストから両方の質問票に答えます。Play は何が収集・共有され、その目的は何かを尋ねます。Apple も同じことに加え、各データの種類がユーザーにリンクされるか、トラッキングに使われるかを尋ねます。
数分で済ませる方法もあります
AppFoyer は、このガイドで扱っているページ(プライバシーポリシー、利用規約、サポート、アカウント削除、そして app-ads.txt)を、専用のサブドメインでホストします。自分のドメインもサーバーも要りません。アプリ 1 つまでは無料で、ストアが求めるものが有料プランの壁の向こうに置かれることは決してありません。
2026年9月25日 に確認。 ストアのポリシーは、予告なく変わることもあります。以下の内容はすべて公式ドキュメントにリンクしており、拠り所となるのはこのページではなくそちらです。両者が食い違う場合は、ストアが正しいものとしてください。 このガイドは英語からの翻訳です。ストアのドキュメントからの引用は原文の英語のまま掲載しています。
SDK を含め、アプリがデバイスの外に送るもののリストを 1 つ作り、そこから両方の質問票に答えてください。 Google Play の Data safety フォームと Apple の App Privacy の詳細は、同じ事実を別の言葉で尋ねています。回答が 2 つの別々の記憶から来ると、両者はずれていきます。
Google Play 上のすべてのアプリは Data safety フォームを記入する必要があり、何も収集しないアプリも例外ではありません。免除されるのは内部テストトラックでのみ公開されているアプリだけです(Google Play の Data safety ヘルプ)。Apple は App Store 上のすべてのアプリに App Privacy の詳細を求めます(Apple の App Privacy details)。
フォームの場所
- Google Play: Play Console → 対象のアプリ → App content → Data safety。
- App Store: App Store Connect → 対象のアプリ → App Privacy。
ステップ 1:リストを作る
- すべてのサードパーティ SDK。 依存関係ファイルを読みます。
build.gradle/libs.versions.toml、Podfile/Package.swift、pubspec.yaml、package.json。どちらのストアも、SDK が収集するものをあなたの収集とみなします。Apple は、あなたが書いていないコードも含め、アプリ内のすべてのコードについてあなたに責任があるとしています。 - それぞれが何を送信するか。 ベンダー自身のページを使ってください。RevenueCat、Unity Ads、OneSignal など、Play 自身の用語で回答を公開しているベンダーもあります。Google は AdMob と各Firebase プロダクトについて表を公開しています。iOS では、現在のほとんどの SDK がプライバシーマニフェスト(
PrivacyInfo.xcprivacy)を同梱しています。Xcode で Organizer を開き、アーカイブを右クリックして Generate Privacy Report を選ぶと、ビルド内のすべてのマニフェストを 1 ページで確認できます(Apple のプライバシーマニフェストのドキュメント)。 - 自分で収集するもの。 アカウント(メールアドレス、ユーザー ID)、バックエンドが保存するもの全般、自分のコードが読み取る位置情報、サーバーが保持する購入記録。
何も公開していないベンダーもあります。AppLovin はどちらのストア向けにもデータの種類のリストを公開しておらず、いくつかのアナリティクス SDK には Play 向けの対応表がありません。それらについては、SDK が何を送信するかについての SDK 自身のドキュメントを読み、欠けている部分を書き留めてください。推測してはいけません。
ステップ 2:Google Play の質問
データの種類ごとに、Play は次のことを尋ねます。
- 収集、共有、またはその両方か? 「収集」はデバイスの外に送ることを意味します。「共有」は第三者に送ることを意味します。あなたの代わりにデータを処理するサービスプロバイダーは共有に含まれず、完全に匿名化されたデータも含まれません。そのため、Firebase Analytics は通常「収集、共有なし」となり、広告 SDK は通常「収集かつ共有」となります。
- 一時的に処理されるか? その 1 回のリクエストに応えるのに必要な間だけメモリ上に保持される場合に限ります。たとえば、天気を取得するために送り、保存しない位置情報などです。
- 必須か任意か? 任意とは、収集されるかどうかをユーザーが選べることを意味します。
- 目的は? Play の目的は次のとおりです:App functionality、Analytics、Developer communications、Advertising or marketing、Fraud prevention, security, and compliance、Personalization、Account management。収集と共有にはそれぞれ別に目的を指定します。
続いてセキュリティに関する 2 つの質問があります。すべてのユーザーデータは転送時に暗号化されているか?これを確認できるのはあなただけです。素の http:// エンドポイントが 1 つでもあれば、答えは No です。ユーザーは削除をリクエストできるか? 削除をリクエストする手段を提供している場合、または 90 日以内にデータを自動的に削除する場合は Yes と答えられます。
アプリでユーザーがアカウントを作成できる場合、同じフォームの Data deletion の質問では、ユーザーがアカウント削除をリクエストできるウェブリンクも求められます(Google Play のアカウント削除の要件)。アカウント削除 URL のガイドを参照してください。
Google Play 自身の課金シートで入力された支払い情報は、アプリがそれにアクセスしない限り申告する必要はありません。アプリや SDK が受け取る購入記録は、引き続きあなたが申告するものです。
ステップ 3:Apple の質問
データの種類ごとに、Apple は目的と、はい/いいえで答える 2 つの質問を尋ねます。
- ユーザーにリンクされるか? 収集される前に匿名化されない限り、データはリンクされているものとみなされます。アカウント、ユーザー ID、デバイス ID があれば、リンクされるには十分です。
- トラッキングに使われるか? トラッキングとは、ユーザーやデバイスについてのアプリのデータを、ターゲット広告や広告効果測定のために他社のデータと組み合わせること、またはデータブローカーと共有することです。あなたがその機能を使っていなくても、SDK がこれを行うことがあります。何かがトラッキングに使われる場合、アプリはまず App Tracking Transparency を通じて許可を求める必要があります(Apple の User privacy and data use)。
Apple の目的は次のとおりです:Third-Party Advertising、Developer’s Advertising or Marketing、Analytics、Product Personalization、App Functionality、Other Purposes。
Apple がデータの種類を申告から外すことを認めるのは、4 つの条件すべてを満たす場合だけです。トラッキングや広告に使われないこと。まれにしか収集されず、アプリの主要な機能の外にあり、ユーザーの任意であること。そして、ユーザーが毎回それを承知のうえで提供すること。ほとんどの SDK のデータは最初の条件を満たしません。
間違えやすい 3 つの回答
- 「何も収集していない」。 自分のコードが何も送らなくても、クラッシュレポーターやアナリティクスはデバイス識別子と診断情報を送ります。
- 広告 SDK に「共有なし」。 広告ネットワークは、自社の広告目的のために識別子と操作を受け取ります。それは共有です。
- プライバシーポリシーと食い違うフォーム。 ストアは両者を合わせて読むので、食い違いだけで問題になります。両方を同じリストから書いてください。両者が食い違うときを参照してください。
最新に保つ
回答が最新であるかどうかは、SDK リストが最新であるかどうかで決まります。SDK を追加したら、同じ変更で両方のフォームとプライバシーポリシーを更新してください。ベンダーも、SDK の新しいバージョンに合わせて開示内容を改訂します。
AI アシスタントに SDK を探させる
時間がかかるのはステップ 1 です。アプリのリポジトリで開いたコーディングエージェント(Claude Code、Cursor、Codex など)なら、これを代わりに行えます。下のプロンプトは、ビルドファイルだけを読ませ、すべてのSDK とデータに関する事実を、出所のファイルとともに挙げさせます。各 SDK が何を収集するかは尋ねません。ベンダーの開示内容についてのモデルの記憶は推測であり、その部分はベンダーから得るべきだからです。
返答は AppFoyer のダッシュボードが読み取れる小さな JSON 形式です。AppFoyer を使わない場合でも、ステップ 2 で表示されるリストが、両方のフォームを記入する元になるリストです。
You are helping me fill in Google Play's Data safety form and Apple's App Privacy details for my mobile app. AppFoyer turns your answer into draft answers for both forms, using each SDK vendor's own published disclosure. Your job is only to find what is in the build — not to say what any SDK collects.
## About the app
- App name: [app name]
- Platforms: [Android, iOS or both]
## Step 1 — read the build files
Read only the app's build, manifest and store-metadata files — for example `build.gradle(.kts)`, `gradle/libs.versions.toml`, `AndroidManifest.xml`, `Podfile.lock`, `Package.swift`, `Package.resolved`, `Info.plist`, `*.entitlements`, `PrivacyInfo.xcprivacy`, `pubspec.yaml`, `package.json`, `app.json`. Do not open `.env` files, keystores, credentials or any other secrets, and do not change any file. If you cannot read the code, ask me which SDKs the app uses instead.
Find:
1. Every third-party SDK in the build. Match it to one of these ids where it fits:
- `admob` — Google Mobile Ads (AdMob)
- `applovin-max` — AppLovin MAX
- `unity-ads` — Unity Ads
- `firebase-analytics` — Google Analytics for Firebase
- `mixpanel` — Mixpanel
- `amplitude` — Amplitude
- `meta-app-events` — Meta SDK — App Events
- `firebase-crashlytics` — Firebase Crashlytics
- `sentry` — Sentry
- `firebase-auth` — Firebase Authentication
- `google-sign-in` — Google Sign-In
- `meta-login` — Meta SDK — Facebook Login
- `revenuecat` — RevenueCat
- `firebase-messaging` — Firebase Cloud Messaging
- `onesignal` — OneSignal
An SDK that fits none of them goes under `otherSdks` with its package name. Never force a match.
2. Which of these facts are true, from the dependencies, permissions and usage-description keys:
- `account` — users sign in or create accounts
- `analytics` — usage analytics
- `ads` — advertising
- `crash` — crash reporting or diagnostics
- `location` — the app reads the device location
- `purchases` — in-app purchases or subscriptions
If none is true, the facts are `["none"]`.
Keep the file, and the line where you can, for every SDK and every fact. A README sentence is not evidence.
## Step 2 — confirm with me
Show me the list, grouped as SDKs, other SDKs and facts, each with its file. Ask me to confirm or correct it, and to add anything the build files cannot show — for example an SDK loaded at runtime. Wait for my answer.
## Step 3 — reply in AppFoyer's format
Reply with one ```json code block and nothing after it, exactly in this shape:
```json
{
"format": "appfoyer-store-forms/1",
"platform": "android | ios | both",
"sdks": [{ "id": "admob", "file": "app/build.gradle.kts", "line": 42 }],
"otherSdks": [{ "name": "com.example:tracker", "file": "app/build.gradle.kts", "line": 57 }],
"facts": [{ "fact": "ads", "file": "app/src/main/AndroidManifest.xml", "line": 12 }]
}
```
- `id` is one of the ids above, spelled exactly. `fact` is one of the facts above, or `none`.
- `line` is a number, or leave it out when you do not know it.
- Empty lists are `[]`. No comments inside the JSON.
- Do not describe what an SDK collects, and do not add fields.
AppFoyer の場合
ダッシュボードの各アプリには Store forms タブがあります。ビルドに含まれる SDK にチェックを入れると、それらとアプリの設定から Data safety と App Privacy の回答の下書きを作成します。各回答には出所が示されます。ベンダー自身の回答、そのプライバシーマニフェスト、または当社によるそのデータリストの読み取りのいずれかです。タブは、プライバシーポリシーに記載されていない SDK を指摘し、貼り付け用のアカウント削除リンクを提示します。Claude Code プラグインは、ビルドファイルから SDK リストを埋めます。他のアシスタントを使う場合は、タブからプロンプトをコピーして実行し、返答を貼り付けてください。何かが保存される前に、その返答から導かれる回答がタブに表示されます。回答は引き続き各コンソールで入力し、そこで確認する必要があります。これらは下書きであり、法的助言ではありません。このタブはすべてのプランで無料です。