Apple の App Store データ開示要件に備える

Apple は、App Store でアプリを公開するデベロッパーに対して、アプリデータの使用に関する特定の情報の開示を求めています。こうした情報開示について Apple は、2020 年 12 月 8 日以降の新しいアプリとアプリのアップデートを対象にすると発表しました。

このドキュメントでは、Apple のガイドラインに従って開示が求められる可能性のある、Firebase Apple プラットフォーム ライブラリの動作について説明します。Firebase をインストールする場合は、選択した依存関係マネージャーによってアプリにインストールされているビルド ターゲットをメモします。依存関係マネージャーによって一覧表示されたターゲットごとに、このドキュメントの対応するセクションを確認して、開示する必要があるデータ収集を決定します。Firebase ビルド ターゲットの中には、他のビルド ターゲットとの間で一時的な依存関係があるものがあるため、インストールされている Firebase ビルド ターゲットの数が、想定した数よりも多くなることがあります。

追加データに関わるオプションのプロダクト機能を使用している場合や、追加データを伴う新しいプロダクト機能のテストに参加している場合は、その機能やテストで追加のデータ開示が必要かどうかを確認してください。

アプリの開示を正しく行うためには、常に各 Firebase SDK の最新バージョンを使用することをおすすめします。

Firebase ユーザー エージェント

Firebase ユーザー エージェントは、ほとんどの Firebase SDK から収集された情報を集めたもので、デバイス、OS、App Bundle ID、デベロッパー プラットフォームが含まれます。ユーザー エージェントはユーザー ID やデバイス ID にリンクされず、Firebase チームが Firebase の機能に関する判断を行うにあたってプラットフォームとバージョンの採用状況を確認するために利用します。

Core

FirebaseCore

  • データを収集しません。

GoogleUtilities

  • データは収集しませんが、他の SDK がデータの収集に使用できるネットワーキング ユーティリティが含まれます。

GoogleDataTransport

他の SDK がデータの収集に使用できるネットワーキング ユーティリティが含まれます。

常時収集

  • プロダクトの品質をモニタリングして維持するため、クライアント ログのイベント キャッシュのサイズや、さまざまな理由でドロップされたクライアント ログのイベント数など、SDK のパフォーマンスに関するメタデータを収集します。

A/B Testing

FirebaseABTesting

A/B Testing ではデータの収集は行いません。

Firebase A/B Testing SDK は Google アナリティクスのユーザー プロパティを設定し、これを使用して、Firebase Remote Config と Firebase In-App Messaging のテストグループのメンバーシップを指定します。

Google アナリティクス

Google アナリティクスのデータ収集情報については、こちらのサポート記事をご覧ください。

App Check

FirebaseAppCheck

使用形態によって異なる

  • DeviceCheck プロバイダがインストールされている場合は、DeviceCheck から DCDevice トークンを収集します。
  • App Attest プロバイダがインストールされている場合は、App Attest からアテステーション オブジェクトとアサーション オブジェクトを収集します。
  • データの収集が有効になっている場合は、Firebase ユーザー エージェントを収集します。

App Distribution

App Distribution SDK は、ベータ版テストでの使用のみを前提としています。App Store への送信時には、アプリに App Distribution SDK を含めないでください。

Authentication

FirebaseAuthentication

常時収集

  • ユーザー認証の目的で ID を生成して保存します。

使用形態によって異なる

  • デベロッパーがユーザーの表示名を提供している場合は、表示名を収集します。
  • メールのパスワードやメールのリンク認証を使用している場合、デベロッパーが提供するユーザーのメールアドレスを収集します。または、デベロッパーがフェデレーション ID を使用する場合は、連携プロバイダからのレスポンスに含まるユーザーのメールアドレスを収集します。
  • 電話認証を使用している場合、またはユーザーの電話番号が認証方法として追加されている場合、デベロッパーが提供するユーザーの電話番号を収集します。また、SMS による 2 段階認証プロセスフロー中にも収集されます。
  • デベロッパーが Firebase Authentication でサードパーティの認証プロバイダを使用する場合、サードパーティの認証プロバイダに関連する連絡先情報を収集します。たとえば、デベロッパーが Facebook 認証を使用する場合、付与されているスコープに応じて、ユーザーの ID を Facebook のプロフィールにリンクできます。詳細については、認証プロバイダのドキュメントをご覧ください。
  • アプリが Game Center にリンクされている場合、ユーザーの Game Center ID を保存します。
  • アプリが reCAPTCHA Enterprise を使用して認証フローを保護している場合、このトークンを収集します。reCAPTCHA Enterprise に関する Apple のプライバシーの詳細をご覧ください。
  • データの収集が有効になっている場合は、Firebase ユーザー エージェントを収集します。

Crashlytics

FirebaseCrashlytics

常時収集

  • アプリケーションがクラッシュしたときにスタック トレースと関連アプリケーションの状態を収集します。
  • デバイスと OS の情報を収集して、クラッシュのデバッグに役立てます。

使用形態によって異なる

  • デベロッパーがクラッシュ レポートに添付するカスタムキー、ログ、自由テキストのユーザー ID を収集します。カスタム スタック トレースを使用してデベロッパーが定義した非致命的なイベントも収集します。
  • Crashlytics を Google アナリティクスと併用している場合は、「パンくずリスト」ログを収集します。このログで、クラッシュの直前のユーザー アクションとクラッシュ数を特定できます。

Realtime Database

FirebaseDatabase

常時収集

常時収集

  • 遅延ディープリンク(アプリ インストール後のディープリンク)用に、デバイスの画面サイズ、言語、OS バージョン、バンドル ID、IP アドレス、Firebase SDK のバージョンなどのデバイスデータを一時的に収集します。

デフォルトで収集

  • FirebaseAnalytics フレームワークが存在する場合、Google アナリティクスを介してリンク操作イベントを自動的にログに記録します。自動イベントログを無効にするには、アプリから FirebaseAnalytics を削除します。
  • アプリの初回起動時に、利用可能であれば、デバイス ペーストボードのダイナミック リンク URL を一時的に収集します。デベロッパーは、アプリの Info.plist ファイルで FirebaseDeepLinkPasteboardRetrievalEnabled プロパティを NO に設定することで、ペーストボードの使用を無効にできます。

Cloud Firestore

FirebaseFirestore

常時収集

Cloud Functions

FirebaseFunctions

常時収集

  • 関数呼び出し元の関数名と IP アドレスを含む、関数呼び出しのメタデータを収集します。

In-App Messaging

FirebaseInAppMessaging

常時収集

  • In-App Messaging での操作を記録します。操作(インプレッション、クリック、拒否)は、Google アナリティクス経由で記録されます。操作は Firebase によっても記録され、デベロッパーがメッセージング キャンペーンの効果を評価するのに利用できます。

Firebase インストール

FirebaseInstallations

常時収集

FirebaseInstanceID(非推奨)

FirebaseInstanceID は非推奨となりました。

常時収集

  • ユーザーや物理デバイスを一意に識別しない、インストールごとの ID を生成します。
  • FCM 登録トークン(FirebaseMessaging がプッシュ通知に使用するアプリ インスタンスの ID)を生成して収集します。
  • APN トークンを記録して、Firebase インスタンス ID(FCM 登録トークン)に関連付けます。
  • FCM 登録トークンを生成するために、デバイスモデル、言語、タイムゾーン、OS のバージョン、アプリケーション ID、アプリケーションのバージョンを収集します。

Cloud Messaging

FirebaseMessaging

常時収集

  • トピックのサブスクリプションの登録と解除用に、アプリケーション ID とアプリケーションのバージョンを収集します。

デフォルトで収集

  • FirebaseAnalytics フレームワークが存在する場合、Google アナリティクスを介して通知の操作を自動的にログに記録します。この動作を無効にするには、アプリから FirebaseAnalytics を削除します。

使用形態によって異なる

Firebase ML

FirebaseMLCommon

  • データを収集しません。

FirebaseMLModelDownloader

常時収集

  • ML モデルのダウンロード メタデータ(ダウンロード イベント、削除イベント、エラーなど)を収集します。

FirebaseMLModelInterpreter

デフォルトで収集

  • ML の推論メタデータ(推論期間やエラー率など)を収集します。無効にするには、ModelInterpreter.isStatsCollectionEnabled プロパティを false に設定します。

FirebaseMLVision

デフォルトで収集

  • ML Vision モデルのメタデータ(作成イベントや検出イベントなど)を収集します。無効にするには、Vision.isStatsCollectionEnabled プロパティを false に設定します。

Performance Monitoring

FirebasePerformance

常時収集

  • IP アドレスを収集し、位置情報に基づいてパフォーマンス データを分類します。
  • アプリのパフォーマンス指標(アプリの起動時間やネットワーク リクエストのレイテンシなど)と、デベロッパーが指定したカスタム トレースを収集して、アプリのパフォーマンスを測定します。
  • アプリケーションの CPU とメモリの使用状況を収集し、アプリ パフォーマンスのタイムライン ビューを提供します。
  • デバイス情報、OS 情報、アプリ情報を収集し、さまざまなデバイス セグメントでパフォーマンス データをフィルタリングします。

Remote Config

FirebaseRemoteConfig

常時収集

  • Firebase ユーザー エージェントを収集します。
  • デバイスの国コード、言語コード、タイムゾーン、OS バージョン、Firebase Apple アプリ ID、バンドル ID を収集して、このデータに基づいたパラメータを設定します。使用傾向と製品の方向性を把握するために、OS のバージョンと SDK のバージョンも収集、集約されます。

使用形態によって異なる

Remote Config と Google アナリティクスを併用する場合は、次のようになります。

  • ユーザー プロパティの条件に基づくパラメータを対象にするには、Google アナリティクス用の Firebase SDK によって取得されるユーザー プロパティを収集します。
  • 初回起動時間に基づくパラメータを対象にするには、Google アナリティクス用の Firebase SDK によって取得される first_open イベント タイムスタンプを収集します。

Remote Config のパーソナライズを使用する場合は、次のようになります。

  • Firebase Remote Config SDK によって取得されたデータや Google アナリティクス用の Firebase SDK によって取得されたイベントを使用して、予測モデルを構築し、モデルのパフォーマンスを測定できます。

Firebase セッション

FirebaseSessions

常時収集

  • アプリの品質をモニタリングするために、バンドル ID、OS 情報、SDK バージョン、ネットワーク接続タイプなど、アプリのパフォーマンスに関するメタデータを収集します。
  • 使用状況データ(アプリがバックグラウンドで動作していた時間など)を収集して、パフォーマンス指標をユーザー セッションにグループ分けし、セッションごとに使用状況をフィルタリングします。

Cloud Storage

FirebaseStorage

常時収集