AAID(Android Advertising ID)は、Google Play開発者サービスが提供するAndroidの広告用IDです。ADIDやGAIDと呼ばれることもありますが、指しているものは同じです。ユーザーは端末の設定からいつでもリセットや削除ができ、削除するとアプリには「00000000-0000-0000-0000-000000000000」が返ります。この記事では、利用者向けの確認・削除手順と、開発者向けのAD_ID権限・取得コード・広告以外の用途で使うApp Set IDを、Googleの公式ヘルプとライブラリの実物で確かめた内容に沿って説明します。
まとめ:AAIDの要点
- AAID・ADID・GAIDは同じAndroidの広告ID。公式の呼び名は「広告ID(advertising ID)」で、Google Playのポリシーでも「Android 広告 ID(AAID)」と表記されます。iOSのIDFAとは別物です。
- 確認・リセット・削除は「設定」の「広告」画面から行う。リセットは新しいIDへの付け替え、削除はIDの無効化で、削除後のアプリにはゼロ埋めの値が返ります。
- Android 13以上をターゲットにするアプリはAD_ID権限の宣言が必要。ただし広告IDライブラリ17.1.0以降やGoogle Mobile Ads SDK 20.4.0以降を使っていれば、ライブラリ側のマニフェストから自動で統合されます。
- 分析や不正防止など広告以外の用途にはApp Set IDを使うとGoogleは案内しています。
- 2025年10月17日にPrivacy Sandbox on Androidの主要技術の廃止が発表されたが、AAIDは対象外。Androidの広告計測は引き続きAAIDが基盤です。
AAIDの定義とADID・GAIDの呼称
Play Consoleヘルプは広告IDを「ユーザーがリセットや削除を行える広告用の固有の ID で、Google Play 開発者サービスから提供されるもの」と定義しています(Play Console ヘルプ「広告 ID」)。IMEIやシリアル番号のように端末に固定された識別子と違い、利用者が自分で切り替えたり無効にしたりできる点が設計の中心です。Google Playの広告ポリシーによると、このIDとAPIはGoogle Play開発者サービスのバージョン4.0で導入されました。
AAID・ADID・GAIDは同じもの
AAIDは「Android Advertising ID」、GAIDは「Google Advertising ID」、ADIDは「Advertising ID」を縮めた呼び方で、3つとも同じ値を指します。計測ツールに「GAID」、広告SDKに「AAID」と書かれていても、入力するIDは同じです。iOSで同じ役割を持つのはAppleのIDFA(Identifier for Advertisers)で、取得の条件がまったく異なります(後述)。
値の形式と発行の単位
広告IDはUUID形式の文字列で、Android Developersの例では 38400000-8cf0-11bd-b23e-10b96e40000d のように表されます。JetpackのAdvertising IDライブラリを説明したこのページは、多くの広告IDプロバイダが端末のユーザーごとに一意のIDを返すため、ゲストを含む複数ユーザーを使える端末では同じ端末でも別のIDが返りうると注記しています(Android Developers「Get a user-resettable advertising ID」)。ユーザーはアプリの起動後にもIDをリセットできるので、値をキャッシュせず、必要になるたびに取得し直すようにとも書かれています。
AAIDが使われる場面
中心は広告の効果測定(アトリビューション)です。どの広告からインストールや購入が起きたかを、広告ネットワークやMMPがAAIDで突き合わせて判定します。同じ広告の表示回数を抑えるフリークエンシー制御や、興味関心に基づく広告配信の識別子にもなります。Google Playのポリシーは、広告目的で端末を識別するときは、端末で取得できる限りIMEIなどの永続的なIDではなく広告IDを使うよう求めています(前掲のPlay Consoleヘルプ)。どこまで使ってよいかの規定は、開発者向けの章で説明します。広告の成果をどの指標で見るかは広告効果測定とは?指標・手法の選び方とレポート項目の雛形で整理しています。
AAIDの確認・リセット・削除の手順
広告IDの画面は端末の「設定」アプリにあります。Googleのヘルプには経路が2通り載っています(Android ヘルプとPlay Consoleヘルプ)。メーカーやAndroidのバージョンでメニュー名と階層が変わるため、見つからないときは設定画面の検索欄に「広告」と入力すると早く見つかります。広告IDの文字列そのものが画面に表示されるかどうかも、機種とバージョンで異なります。
| 操作 | 手順 | 結果 |
|---|---|---|
| 画面を開く(A) | 設定 → プライバシー → 広告 | Play Consoleヘルプの経路 |
| 画面を開く(B) | 設定 → Google → すべてのサービス → プライバシーとセキュリティ → 広告 | Androidヘルプの経路 |
| リセット | 広告画面の「広告 ID をリセットする」 | 新しいIDに置き換わる |
| 削除 | 広告画面の「広告 ID を削除する」 | アプリにはゼロ埋めの値が返る |
| オプトアウト(古いAndroid) | 設定 → プライバシー → 詳細設定 → 広告 →「広告のカスタマイズをオプトアウトする」をオン | パーソナライズ広告の停止 |
リセットと削除の違い
リセットはIDを新しい値に付け替える操作です。過去のIDに結び付いていた行動履歴とは切り離されますが、新しいIDで再び記録が始まります。削除はIDそのものを無効にする操作で、以降アプリが広告IDを読もうとするとゼロ埋めの文字列が返ります。アプリをまたいだ追跡を止めたいなら削除、広告IDを使う機能は残したまま履歴だけ切り離したいならリセットを選びます。なお、Play Consoleヘルプは削除後も「独自の設定を持つアプリ」では表示される広告がその設定の影響を受けると注記しています。削除しても広告そのものは表示され続けます。またAndroidヘルプによると、Googleアカウントにログインしている場合は、設定に応じてアカウントのアクティビティに基づくパーソナライズド広告が表示されることがあります。
削除機能が使えるようになった時期
「削除」は2021年後半のGoogle Play開発者サービスの更新で加わりました。Play Consoleヘルプによると、まずAndroid 12で動くアプリから適用され、2022年4月1日からGoogle Playに対応するすべての端末で動くアプリへ広がりました。それより前の端末にあったのは「広告のカスタマイズをオプトアウトする」というスイッチだけで、IDそのものは残っていました。この違いが持つ意味は後の章で説明します。
AAIDとIDFA・Cookieの違い
AAIDとIDFAはどちらもアプリ向けの広告IDですが、取得の前提が違います。iOSではATT(App Tracking Transparency)のダイアログでユーザーが許可しない限りIDFAは取得できません。Androidでは、ユーザーが広告IDを削除していなければ、アプリはAD_ID権限の宣言だけでAAIDを読めます。ブラウザのCookieはサイト(ドメイン)ごとに保存される別の仕組みで、アプリ間の識別には使えません。
| 項目 | AAID | IDFA | サードパーティCookie |
|---|---|---|---|
| 提供元 | Google Play開発者サービス | Apple(iOS・iPadOS) | ブラウザ |
| 識別できる範囲 | 同じ端末上のアプリ間 | 同じ端末上のアプリ間 | ブラウザ上のサイト間 |
| 取得の前提 | AD_ID権限の宣言(ユーザー許可は不要) | ATTでの許可 | ブラウザの設定次第 |
| 拒否・削除時の値 | ゼロ埋め | ゼロ埋め | 保存されない |
IDFAとAAIDを並べた整理と、端末ごとのリセット方法は広告識別子とは?IDFA・AAIDの違いとリセット方法を解説に、ATTの同意取得の実装はIDFAとは?個人情報との関係とATTの同意・確認方法に、ブラウザ側の事情はサードパーティCookieとは?仕組みとブラウザ別の扱いを解説【2026年最新】にまとめています。
開発者向け:AAIDの取得実装とAD_ID権限
AAIDが取れない、または計測がおかしいという相談の多くは、権限の宣言漏れ、メインスレッドからの呼び出し、ゼロ埋めの値を実IDとして扱っていることのどれかに行き着きます。
Android 13以上を対象にするアプリのAD_ID権限宣言
Play Consoleヘルプは、Android 13以上をターゲットにしたアプリのアップデートでは、マニフェストに次の権限を宣言する必要があるとしています。これは実行時の許可ダイアログが不要なnormal権限で、宣言が無いとアプリが読む広告IDはゼロ埋めになります。API 32(Android 12L)以下をターゲットにするアプリには不要です。あわせてPlay Consoleでは、組み込んだSDKによる利用も含めて広告IDを使うかどうかと、使う場合の用途を申告します。
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
ライブラリのマニフェストから自動で入るケース
同じヘルプには、Google Mobile Ads SDK(play-services-ads)など一部のSDKはライブラリ側のマニフェストでこの権限を宣言している場合があり、その場合はアプリのマニフェストに書かなくてもビルド時に統合されると書かれています。Google Mobile Ads SDKで宣言が入ったのは20.4.0からです(20.3.0と20.4.0のAARで確認)。広告IDライブラリ(play-services-ads-identifier)も同じかどうかを、Google MavenからAARを取得してマニフェストを確認しました(2026年10月20日)。
| play-services-ads-identifier | 公開(Maven) | AD_ID権限 | minSdkVersion |
|---|---|---|---|
| 17.0.0 | 2019年6月17日 | 宣言なし | 14 |
| 17.0.1 | 2021年5月26日 | 宣言なし | 14 |
| 17.1.0 | 2021年9月22日 | 宣言あり | 14 |
| 18.0.0 | 2021年12月9日 | 宣言あり | 14 |
| 18.1.0/18.2.0 | 2024年5月/12月 | 宣言あり | 21 |
| 18.3.0(最新) | 2026年1月22日 | 宣言あり | 23 |
Google Play開発者サービスのリリースノート(2021年9月22日)も、ads-identifier 17.1.0以上なら改めて宣言する必要はないとしています。17.0.1以前を使い続けているアプリは、自分でマニフェストに書かない限り、Android 13以上をターゲットにした時点で広告IDがゼロ埋めになります。一部のSDK解説には今も17.0.0の依存指定が載っているので、ゼロ埋めの原因を調べるときは依存バージョンから確認してください。
逆に、広告IDにアクセスすべきでないアプリは、同じリリースノートのとおりライブラリから入ってくる権限を tools:node="remove" で外す必要があります。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove" />
</manifest>
AdvertisingIdClientで取得するコード
Google Play開発者サービス版の取得APIは AdvertisingIdClient.getAdvertisingIdInfo(Context) です。APIリファレンスは、処理がブロックしてANRを起こしうるため、メインスレッドから呼ぶと IllegalStateException を投げると明記しています。次のJavaコードは、18.3.0のAARとAndroid 15(API 35)のandroid.jarに対して javac でコンパイルできることを確認しています(端末での実行は未確認)。
import android.content.Context;
import com.google.android.gms.ads.identifier.AdvertisingIdClient;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public final class AdIdReader {
private static final String ZERO_ID = "00000000-0000-0000-0000-000000000000";
private static final ExecutorService IO = Executors.newSingleThreadExecutor();
public interface Callback { void onResult(String adId, boolean limitAdTracking); }
// メインスレッドで呼ぶと例外になるため別スレッドで取得する
public static void read(Context context, Callback callback) {
Context app = context.getApplicationContext();
IO.execute(() -> {
try {
AdvertisingIdClient.Info info = AdvertisingIdClient.getAdvertisingIdInfo(app);
String id = info.getId();
// 削除済み・権限未宣言はゼロ埋めで返る
boolean usable = id != null && !ZERO_ID.equals(id);
callback.onResult(usable ? id : null, info.isLimitAdTrackingEnabled());
} catch (Exception e) {
// Google Play開発者サービスが無い端末などでは例外になる。
// 取得できない場合はIDなし・制限ありとして安全側に倒す
callback.onResult(null, true);
}
});
}
}
getAdvertisingIdInfo は IOException・IllegalStateException・GooglePlayServicesNotAvailableException・GooglePlayServicesRepairableException を投げるので、Google Play開発者サービスを持たない端末を想定して例外時の分岐を必ず用意します。取得したIDは保存して使い回さず、上の注記どおり必要なときに取り直します。Callback はワーカースレッドで呼ばれるので、画面を更新するときはメインスレッドへ戻してから行います。
Google PlayポリシーのAAID利用規定
取得できることと使ってよいことは別です。Google Playの広告ポリシーの「Android 広告 ID の使用」は、次のように定めています。
- 用途は広告とユーザーの分析に限る。IDにアクセスするたびに、オプトアウト設定の状態を確認する
- SSAID・MACアドレス・IMEIなどの永続的なIDと結び付けない。個人を特定できる情報と結び付けられるのは、広告目的でユーザーの明示的な同意がある場合だけで、分析目的では認められない
- リセット後の新しいIDを、ユーザーの明示的な同意なしに以前のIDやそのデータと結び付けない
- 削除されてIDの無い端末を、以前のIDに結び付いたデータと関連付けない
オプトアウトしたユーザーのIDはプロファイル作成とパーソナライズ広告に使えず、フリークエンシーキャップ・コンバージョントラッキング・レポート・不正検出などには使えると定められています。ただしAPIリファレンスによると、2021年後半のAndroid 12端末から(2022年初めからはGoogle Play開発者サービスに対応するすべての端末で)、isLimitAdTrackingEnabled() が true のとき getId() はアプリのターゲットSDKにかかわらずゼロ埋めを返します。オプトアウトしたユーザーの広告IDは今の端末では事実上取得できないため、上のコードはIDがnullかどうかで判定し、真偽値は記録用として返しています。
子ども向けアプリには別の規定があります。ファミリーポリシーは、子どもだけを対象にするアプリにAAIDの送信を禁じ、子どもと大人の両方を対象にするアプリにも、子どもまたは年齢不明のユーザーからのAAIDの送信を禁じています。ここでいう送信には自社サーバーへの送信も含まれるので、組み込んだSDKの通信まで確認が必要です。
ゼロ埋めになる条件
アプリが受け取る広告IDがゼロ埋めになるのは、ユーザーが広告IDを削除したとき、古いAndroidで「広告のカスタマイズをオプトアウトする」をオンにしているとき(isLimitAdTrackingEnabled() が true)、Android 13以上をターゲットにしたアプリがAD_ID権限を宣言していないときです。ゼロ埋めの値をそのまま計測に送ると、全ユーザーが同じIDとして集計されてしまいます。上のコードのようにゼロ埋めを「IDなし」として扱い、広告計測から外すか、IDを使わない計測方法に切り替えます。
Android版の広告計測を組み込んだアプリ開発を外部に頼む場合は、Androidアプリ開発のように、権限の宣言とSDKのバージョン管理まで見てくれる会社を選ぶと手戻りが減ります。
オプトアウトの意味の変化:送信が続いた時代から削除へ
2021年以前のAndroidにあった「広告のカスタマイズをオプトアウトする」は、IDの送信を止めるスイッチではありませんでした。スペインのデータ保護機関AEPDは2019年の技術ノートで、画面録画アプリ「AZ Screen Recorder」の通信を調べた結果を報告しています。オプトアウトの後もこのアプリはAAIDとアプリ名を graph.facebook.com へ送り続け、変わったのは IDFA_FLAG というパラメータが0になったことだけでした(AEPD「User controls for ad personalisation on Android」)。AEPDは、OSの提供者は利用者がIDを変えるだけでなくアプリからのアクセス自体を止められるようにすべきだと勧告しています。
2021年後半からの「削除」とゼロ埋めは、AEPDが求めた「アプリからのアクセスを止める」手段に当たります。受け取る側が設定を守るかどうかに左右されずに追跡を止められるので、開発者はゼロ埋めを例外ではなく、ユーザーが選べる正規の状態として設計に織り込む必要があります。
広告以外の用途に分けるApp Set ID
Play Consoleヘルプは、分析や不正防止など広告以外の重要な用途には「アプリセット ID」(App Set ID)を使うよう案内しています。Android Developersの説明では、Google Playストアからインストールされたアプリには、同じGoogle Playデベロッパーアカウントで公開したアプリの間で共通のIDが返ります。署名鍵が違うアプリでも同じ値です(Android Developers「Get a user-resettable app set ID」)。Playストア以外からインストールされた場合や、Google Play開発者サービスの無い端末では、アプリ単位のIDになります。ただしGoogle Playのユーザーデータポリシーは、App Set IDを広告のパーソナライズや広告の測定に使うことと、広告目的でAAIDと結び付けることを禁じています。AAIDが取れない場合の広告用途の代わりには使えません。App Set IDを集めて使うことと、この規約を守っていることは、プライバシーポリシーなどの法的に適切な通知でユーザーに開示する必要があります。
App Set IDも永続ではありません。同じIDを共有するアプリ群が13か月を超えてAPIを呼ばなかったとき、そのアプリ群の最後の1本がアンインストールされたとき、端末が初期化されたときにリセットされます。ログイン前の利用状況の分析や不正な登録の検知にAAIDを流用していたなら、App Set IDへ分けておくと、利用者が広告IDを削除しても分析が欠けません。ライブラリはplay-services-appset(2026年10月時点の最新は16.1.0・minSdkVersion 21)です。広告の不正検知の考え方はアドフラウドの検知方法|自社データで見抜く手順と検知ツールの選び方で扱っています。
Privacy Sandbox廃止後のAAIDの位置づけ
Googleは2025年10月17日、採用が少なかったことなどを理由に、Privacy Sandboxの技術の多くを廃止すると発表しました。Android関係では、Attribution Reporting API・Protected Audience・Topics(いずれもChromeとAndroidの両方)、Protected App Signals、On-Device Personalization、SDK Runtimeが対象です(Privacy Sandbox「Update on plans for Privacy Sandbox technologies」)。
この一覧に広告ID(AAID)は入っていません。AAIDを置き換える予定だった仕組みが廃止に向かったため、Androidの広告計測は当面AAIDが基盤であり続けます。「AAIDの代わりにTopics APIを検討する」という説明を見かけたら、2025年10月より前の情報です。モバイル広告全体の手法の選び方はモバイルマーケティングとは?手法5分類とプラットフォーム選定の実務で扱っています。
国内でAAIDを外部の広告事業者へ送る場合は、電気通信事業法の外部送信規律で通知や公表が必要になることがあります。総務省の外部送信規律FAQは「利用者に関する情報」の例に「Cookieや広告ID等の識別符号」を挙げていますが、規律の対象は電気通信事業者などに限られるため、自社が当てはまるかの判定から始めます。手順は電気通信事業法とは?外部送信規律の対象判定とタグ管理・同意取得の実装要件を解説で説明しています。
よくある質問
AAID・ADID・GAIDは何が違いますか?
違いはありません。どれもGoogle Play開発者サービスが提供するAndroidの広告IDの呼び名で、公式には「広告ID」と表記されます。iOSで同じ役割を持つIDFAだけが別物です。
自分のAAID(GAID)はどこで確認できますか?
端末の「設定」→「プライバシー」→「広告」、または「設定」→「Google」→「すべてのサービス」→「プライバシーとセキュリティ」→「広告」の画面です。メーカーやAndroidのバージョンで階層が違うため、見つからない場合は設定の検索欄で「広告」と検索してください。IDの文字列が画面に表示されるかどうかも機種とバージョンで異なります。
広告IDを削除すると広告は表示されなくなりますか?
広告は引き続き表示されます。止まるのは広告IDを使ったアプリ間の追跡と、それに基づくパーソナライズです。ログインしたGoogleアカウントのアクティビティに基づく広告や、アプリ独自の設定による広告は、広告IDの削除とは別に表示されることがあります。
広告IDが「00000000-0000-0000-0000-000000000000」になるのはなぜですか?
ユーザーが広告IDを削除したか広告のカスタマイズをオプトアウトしている、またはAndroid 13以上をターゲットにしたアプリがAD_ID権限を宣言していないためです。広告IDライブラリ17.0.1以前のように権限を同梱しない古い依存を使っている場合も、宣言漏れになります。
AAIDは個人情報に当たりますか?
AAID単体では特定の個人を識別できないことが多いものの、会員IDなど他の情報と容易に照合できる状態で管理していれば個人情報に当たりえます。また、照合できない状態のAAIDを第三者に渡す場合でも、渡した先が個人データとして取得することが想定されるときは、個人関連情報として、本人の同意が得られていることなどを提供元が確認する義務がかかります(個人情報保護法31条)。判断の考え方はIDFAの記事で詳しく説明しています。