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がインストールされている各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では、広告識別子の取得はGoogle Play ServicesとAdvertisingIdClientクラスを通じて実装されます。IDFAに明示的なATTダイアログが必要なiOSとは異なり、ユーザーがデバイス設定で広告のパーソナライゼーションを無効にしていない限り、GAIDはデフォルトでアプリが利用できます。
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(API 34)以降、Googleは広告識別子へのアクセスに新たな制限を導入しました。GAIDを取得するには、AD_ID権限をアプリのマニフェストで明示的に宣言する必要があります。アプリが権限を宣言せず、API 34+をターゲットにしている場合、AdvertisingIdClientの呼び出しはnull識別子を返します。
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ポリシーで厳しく禁止されており、異議申し立ての可能性なしに即座にアプリが停止されます。
AndroidでGAIDを取得するには、AdvertisingIdClientを非同期で呼び出し、可能性のある例外を処理する必要があります。以下に、コルーチンを使用したKotlinの完全な例を示します。
この例では、コルーチンとtry-catchを使用してGoogle Play Servicesのエラーを処理しながら、広告識別子を取得し、isLimitAdTrackingEnabledフラグを確認する方法を示しています。
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
)
}
}
両方のOSで広告属性に関わる開発者にとって、異なるプラットフォーム間の広告識別子の違いを理解することは極めて重要です。以下に、GAID、AAID、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(Google Advertising ID)は、Google Play Servicesを搭載したデバイス向けの広告識別子です。AAID(Android Advertising ID)は、Googleサービスなしのデバイス(Huawei、Amazon Fire)を含むAndroid広告識別子の総称です。GAIDはGoogle Playを介して取得され、AAIDは該当するアプリストアのSDKを介して取得されます。
はい、Android 14(API 34)以降、マニフェストでAD_ID権限を指定する必要があります。アプリがtargetSdkVersion 34+でAD_IDを指定しない場合、AdvertisingIdClientはnull識別子を返します。権限は
はい、ユーザーはいつでも設定 — Google — 広告 — 広告IDをリセットからGAIDをリセットできます。リセット後、すべてのアプリは新しい識別子を受け取り、広告インタラクション履歴との関連付けは失われます。
OAID(Open Anonymous ID)は、中国のスマートフォンメーカー連合(Xiaomi、OPPO、vivo、Huawei)によって開発された広告識別子の標準です。中国市場向けにGoogle Play Servicesなしのデバイスで使用されます。GAIDとは異なり、OAIDはGoogle Playを必要とせず、デバイスメーカーのSDKを通じて動作します。
isLimitAdTrackingEnabledがtrueの場合、アプリはGAIDを広告のパーソナライゼーション、ユーザープロファイリング、リターゲティングに使用できません。ただし、識別子は限定された目的(インストール属性、分析、不正防止、フリークエンシーキャップ)には使用できます。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。