◉ANTIGRAVITY LABEN
記事一覧/アプリ開発
▣ アプリ開発/2026-06-19上級

ATT を取る前に広告SDKを初期化していた — 初回起動だけ eCPM が下がる順序の罠

iOS の AdMob メディエーションを4本のアプリへ広げたとき、初回セッションだけ広告収益が落ちる現象に気づきました。原因は ATT 許諾と MobileAds 初期化の順序です。順序が効く理由と、Antigravity にその順序を監査させた実装記録をまとめました。

antigravity464ios37admob16attmonetization15

✦ プレミアム記事

AdMob メディエーションを iOS の4アプリに広げた直後、Firebase のダッシュボードで妙な段差を見つけました。日次の eCPM は安定しているのに、「セッション初回のインプレッション」だけ fill rate が一段低いのです。クラッシュもなく、広告は出ている。ただ、新規インストール直後の最初の1〜2枠だけ、明らかに単価の低い広告で埋まっていました。

原因にたどり着くまで数日かかりました。結論から書くと、ATT(App Tracking Transparency)の許諾ダイアログを出す前に広告SDKを初期化していた、という初期化順序の問題でした。コードはコンパイルも通るし、警告も出ません。だからこそ気づきにくい種類の不具合です。

この記事は、私が個人開発で運用している壁紙・ヒーリング系のアプリ群で実際に踏んだこの順序の罠を、なぜ効くのかという仕組みと、Antigravity に初期化シーケンスを監査させた手順とあわせて記録したものです。

初回セッションだけ収益が落ちる、という違和感

メディエーション構成では、各広告ネットワークが入札のために端末のシグナルを参照します。iOS で最も効くシグナルが IDFA(広告識別子)です。ATT で「トラッキングを許可」が得られた端末では IDFA が返り、得られない端末ではゼロ埋めの値になります。

ここで重要なのは、IDFA の値が「いつ確定するか」です。ATT の許諾結果が出る前に広告リクエストが走ると、その時点では IDFA がまだ取得できません。広告SDKは「トラッキング不可」とみなして入札を組み立てます。結果として、初回リクエストだけ非ターゲティング在庫に寄り、単価が落ちる。これが、私が見た「初回だけ fill rate が低い」の正体でした。

2回目以降のセッションでは、すでに ATT の結果が OS に記録されているため IDFA がすぐ返り、段差は消えます。だから日次平均では埋もれてしまい、セグメントを「初回 / 2回目以降」で割って初めて見える種類の劣化でした。

なぜ順序がそこまで効くのか

関係する4つの登場人物を、依存の向きで並べておきます。

要素役割初期化順序での位置
ATTrackingManagerトラッキング許諾を取り、IDFA の可否を決める最初
IDFA許諾後に確定する広告識別子ATT の結果に従属
GMA SDK(MobileAds)許諾結果を見て入札・配信を組むATT の後
SKAdNetwork許諾に依らないアトリビューション経路SDK が自動処理

依存の向きは一方通行です。ATTrackingManager が結果を出す → IDFA が確定する → MobileAds がその状態で入札を組む。この順序が崩れると、MobileAds は「まだ何も決まっていない状態」で走り出します。

公式ドキュメントは「ATT のリクエストは広告をロードする前に」と書いていますが、実際にハマるのは「リクエストを出した直後」と「許諾が返った後」の区別です。requestTrackingAuthorization はコールバックで結果を返す非同期APIなので、呼び出した直後はまだ何も確定していません。許諾のコールバックの中で MobileAds を起動しないと、順序を守ったつもりでレースに負けます。私が最初に書いたコードは、まさにこの「呼んだ直後に MobileAds を起動する」形でした。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦初回起動だけ fill rate と eCPM が落ちる原因を、ATT・IDFA・MobileAds 初期化の順序という一点に絞って今日特定できる
✦ATTrackingManager と MobileAds.start の正しい順序を、レースを避ける完成形の Swift コードごと自分のアプリに移植できる
✦散らばった初期化呼び出しの順序チェックを Antigravity のエージェントに任せ、配信ポリシーの判断は人が握る線引きを持ち帰れる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

▣ アプリ開発2026-05-24
iOS Push 通知の A/B 運用を Antigravity Agent で週次回す — 文面・配信時刻・セグメントの自律改善ループ
個人開発で長く運用してきた壁紙系・癒し系アプリの実体験から、iOS Push 通知の A/B を Antigravity Agent に任せる週次運用設計をまとめました。FCM・Firebase Analytics・BigQuery の具体実装に加え、毎週の勝者宣言がどれだけ当たっているかを手元のシミュレータで測り、アーム数と判定条件を測定結果に合わせて直しています。
▣ アプリ開発2026-03-27
AdMob のウォーターフォールを残したまま、ビッディングを足す判断
運用中の iOS 4 アプリでウォーターフォールを残したままビッディングを加えた判断を、ATT と初期化の順序、広告ゲートの設計、見るべき指標とともに整理しました。
▣ アプリ開発2026-08-29
ビルドが通ったことは、pbxproj の編集が正しかった証明になりません
エージェントに project.pbxproj を編集させると、ビルドは緑のままリソースやスクリプトだけが静かに外れます。構造で確かめる4つの検査と、1,200ファイル規模でも0.1秒で終わる監査スクリプトを、iOS アプリの実運用の側からまとめます。