CLAUDE LABEN
ENTERPRISE — Claude Enterpriseに詳細な管理分析・モデル単位のエンタイトルメント・支出アラートが追加されましたDEVICES — Team・Enterprise向けにTrusted Devicesが加わり、リモートでClaude Codeを操作する前にデバイス検証を必須化できますCODE — Claude Codeに組織既定モデル・読みやすいセッション名・クリックできる添付ファイルが加わりましたMODEL — Claude Sonnet 5が全プランの既定モデルで、導入価格は100万トークンあたり入力$2・出力$10(8月31日まで)ですFABLE 5 — 輸出規制解除により7月1日からClaude Fable 5が全世界で提供再開、新しいサイバーセキュリティ分類器も追加されましたLIMITS — Claude Codeの週次利用上限は7月13日まで50%引き上げ、Claude Scienceの応募は7月15日までですENTERPRISE — Claude Enterpriseに詳細な管理分析・モデル単位のエンタイトルメント・支出アラートが追加されましたDEVICES — Team・Enterprise向けにTrusted Devicesが加わり、リモートでClaude Codeを操作する前にデバイス検証を必須化できますCODE — Claude Codeに組織既定モデル・読みやすいセッション名・クリックできる添付ファイルが加わりましたMODEL — Claude Sonnet 5が全プランの既定モデルで、導入価格は100万トークンあたり入力$2・出力$10(8月31日まで)ですFABLE 5 — 輸出規制解除により7月1日からClaude Fable 5が全世界で提供再開、新しいサイバーセキュリティ分類器も追加されましたLIMITS — Claude Codeの週次利用上限は7月13日まで50%引き上げ、Claude Scienceの応募は7月15日までです
記事一覧/Claude Code
Claude Code/2026-07-06上級

同意ダイアログより先に広告SDKを初期化していた — Claude Code で ATT と AdMob の順序を直す

起動と同時に広告SDKを開始すると、ATT の同意が取れる前に IDFA が空のまま初期化され、フィルレートは正常なのに計測だけが薄くなります。散らばった初期化順序を Claude Code で洗い出し、ATT の解決を待ってから広告を開始する形へ直した実装を共有します。

Claude Code182iOS23AdMob13ATT個人開発95

プレミアム記事

新しいアプリを段階公開している最中に、AdMob の管理画面で妙なことに気づきました。フィルレートも eCPM もほぼ普段どおりなのに、SKAdNetwork 経由で計測できたインプレッションの割合だけが、以前より明らかに薄いのです。広告は出ているのに、広告の「計測」だけが欠けている、という状態でした。

心当たりを一つずつ潰していって、最後に残ったのが初期化の順序でした。私が個人開発で続けている壁紙アプリでは、起動と同時に広告SDKを開始していました。その時点ではまだ App Tracking Transparency(ATT)の同意ダイアログを出しておらず、広告SDKは IDFA が空のまま立ち上がっていたのです。同意を求めるより先に、計測の土台を組み立ててしまっていました。

原因が腑に落ちるまでは、何が欠けているのかから順にたどるのがいちばんの近道でした。Claude Code に初期化経路の全量を出させ、ATT の解決を待ってから広告を開始する形へ束ね直し、二度と順序が崩れないようにガードを掛けるまでを、実際のコードとともに残しておきます。

同意ダイアログの前に MobileAds を開始すると何が欠けるのか

iOS では、アプリがトラッキング用の識別子(IDFA)にアクセスするために、ATT の許可が必要です。ユーザーが「許可」を選ぶまで、ASIdentifierManager が返す IDFA は全ゼロの値になります。

広告SDKは初期化のタイミングで、利用できる識別子や計測の設定を読み込みます。ここで IDFA がまだ空だと、SKAdNetwork のアトリビューションや、メディエーション各社へ渡る初期化情報が、同意前の状態を前提に組み上がってしまいます。広告の配信そのものは IDFA がなくても成立するため、フィルレートは下がりません。落ちるのは計測の側だけです。だからこそ、収益の数字を見ているだけでは気づきにくいのです。

初期化の順序広告配信IDFA計測(SKAdNetwork 等)
ATT より先に広告SDKを開始出る空のまま初期化薄くなる
ATT の解決後に広告SDKを開始出る許可時は取得済み揃う

配信は変わらないのに計測だけがずれる。この「静かなズレ」が、順序バグのいちばん厄介なところでした。

壊れていた初期化順序(Before)

問題のコードは、SwiftUI のアプリ起動時に広告SDKを開始していました。ATT の要求は、別の画面で広告が何度か表示された後に、思い出したように呼ばれていました。

import GoogleMobileAds
 
@main
struct WallpaperApp: App {
    init() {
        // ❌ 起動と同時に広告SDKを開始している。
        // この時点では ATT の同意が取れておらず、IDFA は空のまま初期化される。
        MobileAds.shared.start()
    }
 
    var body: some Scene {
        WindowGroup { RootView() }
    }
    // ATT の要求は、この後どこか別の画面で
    // requestTrackingAuthorization を呼んでいた(=手遅れ)
}

init() は起動のいちばん早い段階で走ります。ATT のダイアログはアプリがアクティブになってからでないと表示すらされないため、この順序では「同意を取る前に計測基盤を確定させる」ことが構造的に避けられませんでした。

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

この記事の続きを読む

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

この記事で得られること
フィルレートは落ちていないのに SKAdNetwork の計測だけが薄いとき、原因が ATT より先の広告SDK初期化にあると切り分けられるようになる
起動時に MobileAds を開始していた壊れた順序を、ATT の解決を待ってから開始する形へ Before/After のコード付きで直せるようになる
二度と順序が崩れないように、初期化経路を1本に束ねて CI とアサーションで守る設計を自分のアプリに入れられるようになる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Claude Code2026-05-23
Claude Code で App Store Connect と AdMob の売上を毎朝集計するパイプライン — 壁紙アプリ 4 本で 8 週運用した実装ノート
App Store Connect API と AdMob Reporting API のレスポンス揺れを Claude Code で吸収しながら、4 本の iOS 壁紙アプリの売上・AdMob 収益・サブスク継続率を毎朝 7:00 JST に統合集計する運用を 8 週間続けた、設計と実装と落とし穴の記録です。
Claude Code2026-06-30
新型 iPhone で壁紙がぼやける問題を Claude Code で直す — 端末別解像度の振り分けを安全に増やす
新しい iPhone が出るたびに壁紙アプリで画像がぼやけたり余白が出たりする原因と、散らばった端末分岐を一枚のテーブルに集約して安全に拡張する方法を、Claude Code を使った実際のリファクタリング工程として共有します。
Claude Code2026-06-04
Crashlytics の「Missing dSYM」をClaude Codeで潰した実装メモ
Firebase を SPM へ移行した直後、Crashlytics のクラッシュが記号化されず address のまま並びました。Missing dSYM 警告の原因をClaude Codeで切り分け、再発しないアップロード経路を組むまでの実作業メモです。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →