IDFAとは何か、仕組み、iOSでの許可リクエスト

著者: IT Sectr 公開日: 2026-05-22 読了時間: 8 分

IDFA(Identifier for Advertisers)は、広告目的とインストール属性のために設計されたiOSの一意のデバイス識別子です。iOS 14.5でApp Tracking Transparency(ATT)が導入されたことにより、IDFAを取得するにはシステムダイアログを通じてユーザーの明示的な同意が必要になりました。Apple App Tracking Transparency Documentation、2025によると、ATTの許可がない場合、アプリはゼロ化された識別子を受け取ります。App Tracking Transparencyはモバイル広告エコシステムを根本的に変え、実装後にIDFAの利用可能性を80%減少させました。

重要なポイント

  • IDFA — ユーザーのトラッキングとアプリインストール属性のためのiOS広告識別子。
  • App Tracking Transparency — IDFAを取得する前にユーザーの明示的な同意を必要とするAppleのフレームワーク。
  • ATTrackingManager — requestTrackingAuthorizationを介してトラッキング許可をリクエストするための主要なiOSクラス。
  • SKAdNetwork — IDFAやユーザーの同意を必要としないAppleの代替属性メカニズム。
  • Privacy Manifest — iOS 18+で必須のファイルで、広告識別子を使用する理由を宣言します。

IDFAとは?

IDFA(Identifier for Advertisers)は、広告目的で各Appleデバイスに割り当てられる一意の英数字識別子です。IDFV(Identifier for Vendor)とは異なり、IDFAはデバイス上のすべてのアプリで共通であり、ユーザーはいつでも設定 — プライバシー — 広告 — 識別子をリセットからリセットできます。

IDFAの主な目的は、Appleデバイスでのインストール属性と広告キャンペーンの効果測定です。広告ネットワークはIDFAを使用して、広告クリックをアプリインストールにリンクし、ユーザープロファイルを構築し、パーソナライズされた広告を表示します。ATTの実装以降、さまざまな分析プラットフォームによると、IDFAへのアクセスを許可するユーザーの割合は平均20~35%です。

Flurry Analytics(2025)によると、iOS 18以降、ATTの採用率はアクティブデバイスの92%に達しましたが、トラッキングに同意するユーザーの割合は22%に低下しました。これによりモバイル広告業界に根本的な変化が生じ、広告ネットワークは代替の属性方法を模索せざるを得なくなりました。

IDFAの主な特徴は、ユーザーの個人データを含まず、Apple IDにもリンクされていないことです。ただし、AppleはこれをApp Tracking Transparencyの規制対象となる識別子として分類しています。

IDFAとApp Tracking Transparencyの仕組み

App Tracking Transparency(ATT)はiOS 14.5で導入されたAppleのフレームワークで、IDFAを読み取る前にユーザーの明示的な同意を必要とします。同意がない場合、asIdentifierManagerメソッドはゼロ化された識別子(00000000-0000-0000-0000-000000000000)を返し、アプリはユーザーをトラッキングできません。

App Tracking Transparencyフレームワーク

ATTは、唯一のパブリックメソッドrequestTrackingAuthorization(completionHandler:)を持つATTrackingManagerクラスを通じて実装されます。このメソッドが呼び出されると、システムはInfo.plistのNSUserTrackingUsageDescriptionキーを介して開発者が設定したテキストを含むネイティブダイアログを表示します。ユーザーは“トラッキングを許可”、“アプリにトラッキングしないよう依頼”、“拒否”の3つのオプションから選択できます。

承認ステータスはATTrackingManager.trackingAuthorizationStatusを介して追跡され、notDetermined、restricted、denied、authorizedの4つの値を取ることができます。ATTをリクエストする前に、現在のステータスを確認し、ステータスがすでに決定されている場合はダイアログを呼び出さないことをお勧めします — iOS 17以降、deniedステータスでrequestTrackingAuthorizationを再度呼び出してもダイアログは表示されず、エラーを返します。

いつ許可をリクエストするか

ATTリクエストのタイミングは同意率に大きく影響します。Singular(2025)の調査によると、オンボーディング画面(初回起動時)でATTをリクエストすると35~45%の変換率が得られますが、アクション完了後(例:登録後)にリクエストすると変換率は55~65%に上昇します。システムのATTダイアログの前に、カスタムデザインの事前許可画面を表示して、トラッキングの価値をユーザーに説明することをお勧めします。

重要:アプリは応答を受け取る前にrequestTrackingAuthorizationを1回しか呼び出せません。ユーザーが“拒否”または“アプリにトラッキングしないよう依頼”を選択すると、そのデバイスではダイアログは二度と表示されません。開発者は、制限されたトラッキング条件下でもアプリが正しく機能し続けるよう、IDFAなしで動作するためのフォールバックメカニズムを実装する必要があります。

iOS 18+のトラッキング要件

iOS 18のリリースに伴い、Appleは広告識別子を使用するアプリに対する要件を強化しました。IDFAをリクエストするか、広告目的でデバイスデータを送信するすべてのアプリは、新しいApp Storeルールに準拠する必要があります。準拠しない場合、App Store Connectのレビュー中にビルドが却下されます。

Privacy Manifestとトラッキング

iOS 18以降、すべてのアプリはトラッキングに使用されるすべてのAPIを宣言するPrivacy Manifest(privacy.xcprivacyファイル)を含める必要があります。IDFAについては、識別子が送信される広告ネットワークドメインを指定するNSPrivacyTrackingとNSPrivacyTrackingDomainsキーが使用されます。正しいマニフェストがない場合、アプリはApp Store Connectのモデレーション中に却下されます。

Appleはまた、アプリの説明に広告識別子を使用する理由を明記する要件を導入しました。アプリがインストール属性にIDFAを使用する場合、SKAdNetworkを主要な方法として使用し、IDFAは属性の精度を向上させるための追加シグナルとしてのみ使用する必要があります。

IDFAの代替手段

IDFAへの制限が強化されるにつれて、業界はいくつかの代替アプローチを開発しました。SKAdNetwork(StoreKit Ad Network)は、IDFAなしで動作し、ユーザーの同意を必要としないAppleの公式属性メカニズムです。SKAdNetworkは、広告ネットワークとApp Storeの間で署名付きポストバックリクエストを使用し、ユーザーのプライバシーを保証します。

その他の代替手段には、IPアドレス、OSバージョン、その他のデバイスシグナルに基づく確率的属性、WebKitのPrivate Click Measurement(PCM)などのプライベート集約API、機械学習を使用してコンバージョンを予測する独自の広告プラットフォームソリューションが含まれます。中国市場では、モバイルオペレーターネットワークデータに基づくCAID(Cellular Advertising ID)も使用されています。

IDFAリクエストのコード例

IDFAリクエストを実装するには、App Tracking Transparencyを統合し、すべての可能な承認ステータスを適切に処理する必要があります。以下は、事前許可画面を備えたSwiftの完全な例です。

SwiftでのATTリクエスト

この例は、IDFAを使用した完全なワークフローを示しています:ステータスの確認、事前許可画面の表示、ATTシステムダイアログの呼び出し、承認後の識別子の取得。

swift
import AppTrackingTransparency
import AdSupport

func requestIDFAAccess() {
    let status = ATTrackingManager.trackingAuthorizationStatus

    switch status {
    case .notDetermined:
        // 説明付きの事前許可画面を表示
        showPrePermissionScreen { accepted in
            guard accepted else { return }
            ATTrackingManager.requestTrackingAuthorization { newStatus in
                handleATTStatus(newStatus)
            }
        }
    case .authorized:
        // ユーザーはすでに同意済み — IDFAを取得中
        let idfa = ASIdentifierManager.shared().advertisingIdentifier
        print("IDFA: \(idfa.uuidString)")
    case .denied, .restricted:
        // ユーザーを設定にリダイレクト
        redirectToSettings()
    @unknown default:
        break
    }
}

private func handleATTStatus(status: ATTrackingManager.AuthorizationStatus) {
    if status == .authorized {
        let idfa = ASIdentifierManager.shared().advertisingIdentifier
        // IDFAを広告ネットワークに送信
        sendIDFAToAdNetwork(idfa.uuidString)
    }
}

IDFAなしで動作する戦略

ほとんどのユーザーがATTリクエストを拒否するため、開発者は識別子なしで効果的に動作するための一連の戦略を必要とします。主なアプローチは、SKAdNetworkと確率的属性方法の組み合わせです。

SKAdNetworkと属性

SKAdNetwork(SKAN)は、IDFAを必要とせず、同意ダイアログを表示しないインストール属性のためのAppleのフレームワークです。広告ネットワークはアプリのInfo.plistにSKAdNetwork IDを登録し、インストール後にApp Storeがキャンペーン情報を含む署名付きポストバックを送信します。iOS 17で導入されたSKAN 4.0は、複数のコンバージョン、ソース識別子、粗い粒度のコンバージョン値をサポートしています。

SKANの制限:ポストバックの遅延が24~48時間、ユーザー識別子なし、限られたコンバージョン値(最大64)。それにもかかわらず、SKANはATT実装後のiOS属性の事実上の標準となっており、すべての主要な広告ネットワークはAppleデバイスで動作するためにSKANをサポートする必要があります。

予測識別子

MetaGoogleなどの広告ネットワークは、ユーザー識別子なしでコンバージョンを予測する独自の機械学習ベースのソリューションを開発しました。Meta Aggregated Events Measurement(AEM)は集約データを属性に使用し、Google Attributionは履歴データに基づいてコンバージョンをモデル化します。

開発者にとっては、SKAdNetworkを主要な方法として、広告ネットワークを介したサーバーサイド属性、コンバージョンモデリングを使用した独自の分析ツールなど、複数の属性方法を同時に実装することが重要です。方法を組み合わせることで、IDFA時代と比較して属性の精度を最大70~80%回復できます。ベータテスト段階でさまざまな方法の組み合わせをテストし、特定のアプリとターゲットオーディエンスに最適なセットを選択することをお勧めします。

よくある質問

IDFAを簡単に言うと何ですか?

IDFAは、広告ネットワークがパーソナライズされた広告を表示し、キャンペーンの効果を測定するために使用するiPhoneまたはiPadデバイスの一意のコードです。iOS 14.5以降、アプリはApp Tracking Transparencyシステムダイアログを介してIDFAにアクセスする前にあなたの許可を求める必要があります。

IDFAとIDFVの違いは何ですか?

IDFV(Identifier for Vendor)は、デバイス上の同じ開発者のすべてのアプリに固有の識別子です。IDFAとは異なり、IDFVはATTの同意を必要とせず、常に利用可能です。IDFAはすべてのアプリで共通ですが、IDFVは1つのベンダーのアプリに固有です(bundle IDによる)。

ユーザーの同意なしにIDFAを取得するには?

ユーザーの同意なしにIDFAを取得することは不可能です。iOS 14.5以降、ユーザーがATTを介して同意していない場合、ASIdentifierManager.advertisingIdentifierはゼロ化された識別子(00000000-0000-0000-0000-000000000000)を返します。唯一の合法的な方法は、ATTrackingManager.requestTrackingAuthorizationを呼び出し、authorizedステータスを取得することです。

NSUserTrackingUsageDescriptionとは?

NSUserTrackingUsageDescriptionは、ATTシステムダイアログに表示されるテキストを含むアプリのInfo.plistのキーです。テキストは、アプリがトラッキングを必要とする理由をユーザーに説明する必要があります。例:“お客様のIDFAは、パーソナライズされた広告の表示とキャンペーンの効果測定に使用されます。”

IDFAはAndroidで動作しますか?

いいえ、IDFAはAppleエコシステムの排他的な識別子です。AndroidはGAID(Google Advertising ID)またはAAID(Android Advertising ID)を使用します。両方とも同様の機能を果たしますが、異なるルールで規制されています — Androidでは、ユーザーはGoogle設定で識別子をリセットするか、広告のパーソナライゼーションを無効にできます。

まとめ

  • IDFA — 属性とパーソナライズド広告に使用されるAppleデバイスの広告識別子。
  • App Tracking Transparency — IDFAを取得する前にユーザーの明示的な同意を必要とするiOS 14.5+フレームワーク。
  • ATTrackingManager — iOSでトラッキング許可をリクエストするための主要クラス。
  • SKAdNetwork — ユーザーの同意やIDFAを必要としないAppleの代替属性メカニズム。
  • Privacy Manifest — iOS 18+で必須のファイルで、広告識別子を使用する理由を宣言します。
  • 事前許可画面 — システムATTの前に説明付きのカスタムダイアログを表示し、変換率を55~65%に向上。
  • 複数属性 — SKAdNetwork、確率的手法、機械学習を組み合わせてキャンペーン測定の精度を回復。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください