どっこと備忘録群

アウトプットしないとインプットできない私が Androidアプリ開発をメインとした備忘録を載せています。

Admobを扱う

経緯

AdMobとFirebase のドキュメントあたりから読み進めたので、内容の整理を行う。

AdMobについて

AdMobを利用すると、さまざまなフォーマットオプションでアプリ内に広告を表示することができる。

  • バナー
  • インタースティシャル
  • ネイティブ
  • リワード

広告を表示するためには、Google Mobile Ads SDK を統合するための AdMob 登録アプリが必要となる。 要するに、開発したアプリを事前にAdMob管理画面に登録しておく必要がある。

実装の流れ

  1. Firebaseにアプリを登録
  2. AdMobアカウントを作成
    1. アプリを登録
    2. ユーザに関する指標を有効にする
    3. AdMobアプリをFirebaseにリンクする
  3. プロジェクト依存関係の更新
    1. Google Mobile Ads SDK を追加
  4. 広告の実装

大まかな流れを見る限り、これといって難しそうなところはなさそうだ。

Androidスタートガイド

AdMobアカウントでアプリを設定する

  1. アカウントを作成
  2. アプリを登録

アプリをFirebaseにリンクする

公式でも強く推奨されている。AdMobアカウントのダッシュボードページで以下の設定を行う。

  1. ユーザに関する指標を有効化
  2. アプリをFirebaseにリンク

具体的な実装の手順

  1. アプリIDを AndroidManifest.xml に追加
  2. Mobile Ads SDK を build.gradle に追加
    • MobileAds.initialize() をコールして初期化(★気になる一文あり)
  3. ユーザに関する指標とアナリティクスデータ
    • Mobile Ads SDK で初期化を行うと自動的にロギングが開始されるため、正常に初期化できているかを確認する。
  4. (省略可)Google Analytics や Firebase の機能を使用
    • さまざまな分析・リモート機能を使って、ユーザの利用数(エンゲージメント)を増やす施策に繋げる。
  5. アプリに実装する広告フォーマットの選択
    • アプリの画面構成やユーザー体験に合わせて、実装する広告のフォーマットを選択する。

(★気になる一文あり)について

ガイド内に以下の文言を見つけた。

広告を読み込む前になんらかの操作を行う必要がある場合は、必ず Mobile Ads SDKを初期化する前に行ってください。初期化の前に必要なアクションの例を次に示します。 欧州経済領域(EEA)のユーザーから同意を得る

ヨーロッパ(欧州)圏では、広告を配信する前にユーザから同意を得なければならないルールがある。どこかのWebサイトにアクセスするたびに「Cookieを使用しますがよろしいですか?」という警告が出るようになった背景には、こうした背景が関係している。スタートガイドの段階で、このような法的な注意喚起(アナウンス)をしてくれるのは親切な設計だ。

EU ユーザーからの同意の取得

EUユーザに対しては、主に以下のケースにおいて事前に同意を得る必要がある。

  • Cookieやローカルストレージの利用
  • 広告配信を目的とした個人データ(AdIDなど)の利用

Googleでは、この義務の遂行(GDPR等への対応)をサポートするための Consent SDK(※現在のUMP SDK等)を提供している。これを利用すれば実装のハードルを下げられるため非常にありがたい。

なお、Googleが配信する広告には「パーソナライズされている広告」と「パーソナライズされていない広告」の2種類が存在する。

  • デフォルトは「されている」だが、「されていない」に変更することも可能。
  • ただし、EUユーザに対してはどちらの広告を利用するにしても事前に同意が必要となる。

詳細

前提として、AdMobアカウント上で「広告技術プロバイダ」を選択しておく必要がある。

  • build.gradle に Consent SDK を追加する。
  • Consent SDK を使うときは、必ず事前に同意ステータス(ユーザーが同意しているかどうか)を更新(把握)しておく。
  • アプリ起動時にSDKへ同意ステータスのアップデートをリクエストするAPIがあるため、まずはそれをコールする。
  • ユーザーが一度同意した後に、アプリ側が連携する広告技術プロバイダを変更すると、同意ステータスが「取得できていない状態(不明ステータス)」に戻る点に注意する。

メディエーションを利用しない場合・する場合について

ドキュメント内で「メディエーション」というキーワードが登場した。公式ヘルプによると、複数の第三者広告ネットワークを使って広告収益の向上を図る仕組み(アドネットワークの仲介機能)を指すようだ。

「収益性が良さそうな広告を自動で選んで一元管理してくれるマネージャー」のようなものと捉えると分かりやすい。

メディエーションを利用しない場合

Consent SDK で同意を得る実装方針は以下の2つがある。

  1. Google提供の同意フォームを掲示する
  • このフォームには、開発者が管理画面で選択した広告技術プロバイダのリストが自動で表示される。
  1. 開発者自身でカスタムUIを実装する
  • すべての広告技術プロバイダのリストをAdMobから動的に取得し、開発者自身がそれらをユーザに掲示するための実装を行う。デザイン等にこだわりがある場合の手法だ。

ユーザがフォームに回答したら、その回答情報をSDKに保存するよう指示できる。これが完了して初めて、Google Mobile Ads SDK に回答(同意ステータス)を送信できるようになる。

AdMobメディエーションを利用する場合

すべての広告技術プロバイダのリストをAdMobから動的に取得し、開発者自身がそれらをユーザに掲示するための実装(カスタムUI等)を行う必要がある。Google側ですべてのメディエーションネットワークに関する同意の取得・処理を完全自動化することはできないためだ。

一部のメディエーションネットワークに対する同意の転送方法についてはドキュメントが公開されているが、便利な共通SDKの恩恵が薄れるため、個人開発の初期段階ではあまり手を出したくない領域だと感じる。

同意ステータスの更新

アプリ起動時に毎回実施する必要がある。具体的な実装手順はドキュメント通りに進める。

同意の取得(Google提供フォームの場合)

以下のオプションを組み合わせてユーザに掲示できる。

  • パーソナライズ広告表示に同意
  • パーソナライズされていない広告表示に同意
  • 広告を表示しない有料版を利用(※アプリ側で有料プランなどを用意している場合)

同意テキストを更新・ローカライズする場合は consentform.html(※当時の仕様)などの内容を変更する。また、 ConsentForm オブジェクトを使ってフォームを表示する際には、プライバシーポリシーのURLが必須となる。

同意の変更や取り消し

ユーザーが一度選択した過去の同意内容を、後からアプリ内で変更・取り消しができる導線(設定画面など)を用意しておく必要がある。

同意年齢に満たないユーザ

同意年齢に満たないユーザであると判明している場合は、すべての広告リクエストに TFUA(欧州の同意年齢に満たないユーザー向けのタグ)を設定しなければならない。アプリ側でこれをどう検知するか(年齢確認の実装など)は、別途検討が必要だ。

テスト

EU圏の内外どちらの挙動も手軽にシミュレートできるよう、Consent SDK には特定の地域(EEA内など)を偽装できるデバッグオプションが用意されている。

所感

  • AdMobメディエーションを利用すると各社のポリシーや同意の転送が絡んで実装が非常に煩雑になりそうだ。まずはメディエーションを利用しない(AdMob一本に絞る)方針で進めるのが無難だ。
  • 配信国にEU圏を含める場合、プライバシーポリシーを掲載したWebページが絶対に必要になる。
  • アプリ内の設定画面などに「同意を再設定する」ための導線を作っておく必要がある。

最終更新: 2026.6.13