GAIDとAAID — その概要、仕組み、Androidでのリクエスト

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

GAID(Google Advertising ID)とAAID(Android Advertising ID)は、インストール属性と広告のパーソナライゼーションに使用されるAndroidデバイスの一意の広告識別子です。GAIDはGoogle Play Servicesを搭載したデバイスの正式名称であり、AAIDはGoogleサービスを含まないビルドを含むすべてのAndroidデバイスの汎用用語です。Google Developer Documentation、2025によると、GAIDの取得にはGoogle Play Servicesが必要です。AdvertisingIdClientは、Androidで広告識別子を取得するための主要なAPIです。

重要なポイント

  • GAID — Google Advertising ID、Google Play Services搭載デバイスの広告識別子。
  • AAID — Android Advertising ID、すべてのAndroidデバイス向け広告識別子の汎用名。
  • AdvertisingIdClient — AndroidでGAIDを取得するための主要なGoogle Play Servicesクラス。
  • opt-out — 識別子に基づく広告のパーソナライゼーションを禁止するユーザー設定。
  • Android 14+ — アプリの広告識別子へのアクセスルールを厳格化したOSバージョン。

GAIDとAAIDとは?

GAID(Google Advertising ID)は、Google Play Servicesがインストールされている各Androidデバイスに割り当てられる一意の識別子です。これは広告目的(インストール属性、キャンペーン測定、パーソナライズされた広告の配信)を対象としています。AAID(Android Advertising ID)はより広い用語であり、HMS搭載のHuaweiデバイス、Amazon Fire、GoogleサービスなしのAOSPビルドを含むすべてのAndroidデバイスの広告識別子を包含します。

GAIDとiOSのIDFAの主な違いは、GAIDは明示的な許可リクエストなしで利用できることですが、Android 14以降、アプリはマニフェストで広告識別子の使用を宣言し、Google Playのプライバシーポリシーに従ってユーザーの同意を得る必要があります。Googleは(iOSのATTのような)システムダイアログを要求しませんが、開発者はユーザーの同意ルールに従う必要があります。

Google Play Console Statistics(2025)によると、アクティブなAndroidデバイスの95%以上がGoogle Play Servicesを介してGAIDをサポートしています。Googleサービスなしのデバイス(中国市場、Huawei AppGallery)では、該当するアプリストアのAAID、または中国メーカー向けのOAID(Open Anonymous ID)などの代替識別子が使用されます。

IDFAに対するGAIDの主な利点は、ブロックするシステムダイアログなしで識別子を取得できることです。ただし、Googleは要件を継続的に厳格化しています。Android 14以降、API 34以上をターゲットとするアプリは、マニフェストでAD_ID権限を明示的に宣言する必要があります。

Androidの広告識別子の仕組み

Androidでは、広告識別子の取得はGoogle Play ServicesとAdvertisingIdClientクラスを通じて実装されます。IDFAに明示的なATTダイアログが必要なiOSとは異なり、ユーザーがデバイス設定で広告のパーソナライゼーションを無効にしていない限り、GAIDはデフォルトでアプリが利用できます。

AdvertisingIdClient API

com.google.android.gms.ads.identifierパッケージのAdvertisingIdClientクラスは、getAdvertisingIdInfo(コンテキスト)とstart(コンテキスト)の2つの主要なメソッドを提供します。このメソッドは、識別子(UUID文字列)と、ユーザーが広告のパーソナライゼーションを無効にしたかどうかを示すisLimitAdTrackingEnabledフラグを含むAdvertisingIdInfoオブジェクトを返します。

AdvertisingIdClientの呼び出しはバックグラウンドスレッドで実行する必要があります。このメソッドはリモートのGoogle Playサービスにアクセスするためです。識別子を非同期に取得するには、コルーチンまたはAsyncTaskを使用することをお勧めします。デバイスでGoogle Play Servicesが利用できない場合、メソッドはGooglePlayServicesNotAvailableExceptionをスローします。この場合、開発者は代替の識別方法を使用する必要があります。

リセットと制限

ユーザーはいつでも設定 — Google — 広告 — 広告IDをリセットからGAIDをリセットできます。リセット後、アプリは新しい識別子を受け取り、以前のデータとの関連付けは失われます。ユーザーは「広告のパーソナライゼーションを無効にする」オプションを有効にすることもでき、これによりisLimitAdTrackingEnabledフラグがtrueに設定されます。

開発者はisLimitAdTrackingEnabledフラグを尊重する必要があります。trueの場合、アプリは広告のパーソナライゼーションにGAIDを使用してはなりませんが、コンバージョン測定、不正防止、フリークエンシーキャップなどの限定された目的には使用できます。このルールに違反すると、Google Playでアプリが停止されます。

広告識別子に関するAndroid 14+の制限

Android 14(API 34)以降、Googleは広告識別子へのアクセスに新たな制限を導入しました。GAIDを取得するには、AD_ID権限をアプリのマニフェストで明示的に宣言する必要があります。アプリが権限を宣言せず、API 34+をターゲットにしている場合、AdvertisingIdClientの呼び出しはnull識別子を返します。

Google Playプライバシーポリシー

Google Playポリシーでは、GAIDを使用するアプリはいくつかのルールに従う必要があります。識別子は広告および分析目的にのみ使用できます。アプリは明示的なユーザーの同意なしにGAIDを個人データにリンクしてはなりません。GAIDはプライバシーポリシーに明記せずに第三者と共有してはなりません。2025年以降、Google PlayはPlay Integrity APIを使用して、これらのルールへの準拠についてアプリを自動的にスキャンし始めました。

子ども向けアプリには特に注意が必要です。Google Play Families Policyによると、子どもを対象としたアプリは、いかなる状況でも広告のパーソナライゼーションにGAIDを使用できません。開発者は、子ども向け視聴者向けに認定された広告ネットワークを使用する必要があります。

パーソナライゼーションのオプトアウト

isLimitAdTrackingEnabledフラグは、ユーザーの選択をアプリに通知します。フラグがtrueの場合、アプリは基本操作(インストール属性、分析、不正防止、フリークエンシーキャップ)にのみGAIDを使用できます。この場合、GAIDに基づく広告のパーソナライゼーション、ユーザープロファイリング、リターゲティングは禁止されています。

Googleは、代替識別子(IMEI、MACアドレス、Android ID)を介してisLimitAdTrackingEnabledフラグをバイパスしようとしないことを推奨しています。永続的なハードウェア識別子の使用はGoogle Playポリシーで厳しく禁止されており、異議申し立ての可能性なしに即座にアプリが停止されます。

GAIDを取得するコード例

AndroidでGAIDを取得するには、AdvertisingIdClientを非同期で呼び出し、可能性のある例外を処理する必要があります。以下に、コルーチンを使用したKotlinの完全な例を示します。

KotlinでGAIDを取得する

この例では、コルーチンとtry-catchを使用してGoogle Play Servicesのエラーを処理しながら、広告識別子を取得し、isLimitAdTrackingEnabledフラグを確認する方法を示しています。

kotlin
import com.google.android.gms.ads.identifier.AdvertisingIdClient
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext

data class AdvertisingInfo(
    val gaid: String,
    val isLimitAdTrackingEnabled: Boolean
)

suspend fun getAdvertisingInfo(context: Context): AdvertisingInfo? {
    return withContext(Dispatchers.IO) {
        try {
            val adInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
            AdvertisingInfo(
                gaid = adInfo.id,
                isLimitAdTrackingEnabled = adInfo.isLimitAdTrackingEnabled(true)
            )
        } catch (e: GooglePlayServicesNotAvailableException) {
            // Google Play Servicesが利用できません — 代替IDを使用します
            null
        } catch (e: IOException) {
            // サービスへのアクセス中にネットワークエラーが発生しました
            null
        }
    }
}

// ActivityまたはViewModelでの使用
fun onGaidRequested() {
    lifecycleScope.launch {
        val info = getAdvertisingInfo(this@MainActivity)
        setupAdNetwork(
            gaid = info?.gaid,
            limitTracking = info?.isLimitAdTrackingEnabled ?: true
        )
    }
}

GAID、AAID、IDFAの比較

両方のOSで広告属性に関わる開発者にとって、異なるプラットフォーム間の広告識別子の違いを理解することは極めて重要です。以下に、GAIDAAIDIDFAの主要な側面の比較を示します。

iOS IDFAとの違い

GAIDとIDFAの主な違いは取得メカニズムです。IDFAはATTによる明示的な同意が必要であり、これがないとnull識別子が返されます。GAIDはシステムダイアログなしで利用できますが、Android 14+ではマニフェストでAD_ID権限の宣言が必要です。GAIDにはより柔軟なフラグシステムもあります。isLimitAdTrackingEnabledは識別子の取得をブロックせず、使用を制限するようアプリに通知するだけです。

Adjust(2025)によると、AndroidでのGAIDの利用可能性はアクティブデバイスの98%であり、iOSでのIDFAの利用可能性は20~35%です。これにより、Androidは広告属性においてより予測可能なプラットフォームとなっていますが、Googleのポリシー強化により徐々にこの差は縮まっています。

AAIDはGAIDとは異なり、Google Play Servicesに依存せず、Huawei(HMS)、Amazon Fire OS、中国メーカーのデバイスで使用できます。Huaweiデバイスでは、AAIDはcom.huawei.hms.ads.identifierパッケージのAdvertisingIdClientクラスを使用してHuawei Mobile Services(HMS)を通じて実装されています。中国市場では、OAID(Open Anonymous ID)も一般的です。これは、GoogleサービスなしのデバイスでGAIDを置き換えるために中国メーカー連合によって開発された標準です。識別子を取得するための適切なAPIの選択は、さまざまな市場での広告属性の利用可能性に直接影響します。

よくある質問

GAIDとAAIDの違いは何ですか?

GAID(Google Advertising ID)は、Google Play Servicesを搭載したデバイス向けの広告識別子です。AAID(Android Advertising ID)は、Googleサービスなしのデバイス(Huawei、Amazon Fire)を含むAndroid広告識別子の総称です。GAIDはGoogle Playを介して取得され、AAIDは該当するアプリストアのSDKを介して取得されます。

Android 14でGAIDを取得するには権限が必要ですか?

はい、Android 14(API 34)以降、マニフェストでAD_ID権限を指定する必要があります。アプリがtargetSdkVersion 34+でAD_IDを指定しない場合、AdvertisingIdClientはnull識別子を返します。権限はタグで指定します。

デバイスでGAIDをリセットできますか?

はい、ユーザーはいつでも設定 — Google — 広告 — 広告IDをリセットからGAIDをリセットできます。リセット後、すべてのアプリは新しい識別子を受け取り、広告インタラクション履歴との関連付けは失われます。

OAIDとは何ですか?GAIDとの違いは?

OAID(Open Anonymous ID)は、中国のスマートフォンメーカー連合(Xiaomi、OPPO、vivo、Huawei)によって開発された広告識別子の標準です。中国市場向けにGoogle Play Servicesなしのデバイスで使用されます。GAIDとは異なり、OAIDはGoogle Playを必要とせず、デバイスメーカーのSDKを通じて動作します。

isLimitAdTrackingEnabledフラグはGAIDの動作にどのように影響しますか?

isLimitAdTrackingEnabledがtrueの場合、アプリはGAIDを広告のパーソナライゼーション、ユーザープロファイリング、リターゲティングに使用できません。ただし、識別子は限定された目的(インストール属性、分析、不正防止、フリークエンシーキャップ)には使用できます。

まとめ

  • GAID — Google Play Services搭載デバイス向けのGoogle Advertising ID、Androidの主要な広告識別子。
  • AAID — HuaweiやAmazon Fireを含むすべてのAndroidデバイスの広告識別子の総称。
  • AdvertisingIdClient — AndroidでGAIDを取得するための主要なGoogle Play Services API。
  • AD_ID権限 — Android 14+でtargetSdkVersion 34+のアプリに必須の権限。
  • isLimitAdTrackingEnabled — ユーザーによる広告パーソナライゼーションの禁止を示すフラグ。
  • OAID — Googleサービスなしのデバイス向け中国市場の代替広告識別子。
  • IDFAとの違い — GAIDはシステム同意ダイアログを必要としませんが、Google PlayポリシーはisLimitAdTrackingEnabled = trueの場合に制限を遵守することを義務付けています。

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

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

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

こちらもお読みください