RORK LABEN
PLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっていますPLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっています
記事一覧/ビジネス
ビジネス/2026-05-21上級

Rork アプリで AdMob Bidding を本番投入した実装メモ — 5 AdNetwork 同時入札の eCPM 推移と運用設計

Rork で生成したアプリに AdMob Bidding を導入し、5 AdNetwork の同時入札を本番運用しています。ウォーターフォールから移行した eCPM 推移、fill rate の変化、Claude in Chrome での日次運用までを実装メモとして整理しました。

AdMob70Biddingメディエーション10Rork547eCPM4個人開発204

プレミアム記事

朝、AdMob のダッシュボードを開いて Bidding 採択率がほぼ 100% で安定しているのを見たとき、ようやく長かった移行作業の出口が見えました。Rork で生成したアプリのうち、メディエーションをウォーターフォールから Bidding に切り替えてから、おおむね3週間が経った頃の話です。

2014年から個人でアプリ開発を続けてきましたが、メディエーションの仕組みが「ウォーターフォール(順番に問い合わせる)」から「Bidding(同時入札させる)」へと主流が移っていく流れは、AdMob まわりの中でも特に大きな変化のひとつだと感じています。一見、AdMob コンソールでチェックを入れるだけの設定変更に見えますが、本番アプリで安定運用しようとすると、SDK の組み込み・コンソール設定・運用監視まで含めて細かなチューニングが必要になります。

移行を進めたのは、壁紙アプリ6本です。1本ずつ順に切り替えるつもりでしたが、SDK 更新のタイミングが重なったこともあり、結果として3週間のあいだに6本が並行して Bidding 化されていきました。同じ設定を6回繰り返すことになったおかげで、どこが毎回引っかかる場所なのかがはっきりしたのは、思わぬ収穫でした。

この記事は、その実装メモです。Rork で生成したコードをベースに、AdMob + 5社の AdNetwork(AppLovin / Meta Audience Network / Unity Ads / Pangle / Liftoff)を同時入札させる構成について、本番に乗せるまでに踏んだ手順、切り分けに最も時間を取られた箇所、そして Claude in Chrome を使った日次運用までを順に書いていきます。

Bidding に踏み切った理由 — ウォーターフォールでは見えなかった上限

ウォーターフォール方式では、AdMob は eCPM フロアの高い順に AdNetwork へ広告リクエストを投げます。たとえば AppLovin の eCPM フロアを $2.00、Unity Ads を $1.50 と設定しておくと、AppLovin から fill されなかったときだけ Unity Ads に問い合わせが行く、という挙動です。

この方式には、私のアプリでは2つの限界がありました。

ひとつは、フロア設定が固定値であるために、為替・時間帯・ユーザー層の変動を吸収できないことです。日本ユーザーが多い時間帯は AppLovin の eCPM が高いのに、海外時間帯になると Meta Audience Network の方が単価が出る、という現象は実測値として観測できていましたが、フロア値の手動切り替えで追いかけるには限界がありました。

もうひとつは、「未充足インプレッション」の機会損失が見えにくいことでした。ウォーターフォール下では「AppLovin が応えなかったから次のネットワークに行った」という履歴は残りますが、「もし全社が同時に入札していたら eCPM がいくら出ていたか」は推定でしか測れません。

Bidding 方式は、複数の AdNetwork に対して同時に入札リクエストを送り、その瞬間の最高入札額を即時採用します。理論上はインプレッションごとに最適な単価を引き出すので、上記の機会損失がなくなります。AdMob のドキュメントでも Bidding が推奨方式として案内されており、特に複数の SDK を同居させる構成ではメリットが大きいと判断しました。

最終的には、ウォーターフォールに残しておく1〜2社と、Bidding に組み込む5社を併用するハイブリッド構成に着地しています。

SDK 統合の前提整理 — Rork コードに「触らない部分」と「触る部分」を切り分ける

Rork で生成したアプリは、AdMob SDK の初期化処理がしっかり書かれている場合とそうでない場合があります。私が運用している壁紙アプリ群では、初期化を App.tsx の起動直後に集約し、AdMob 以外のメディエーション SDK は AdMob 経由で読み込まれるアダプター方式に統一しました。

@react-native-firebase/admob 系ではなく、Google 公式の react-native-google-mobile-ads を採用しています。Bidding を使う上での要件は、SDK バージョンとアダプターの対応状況がシビアで、ここを間違えると「Bidding が有効化されているように見えてもインプレッションが発生しない」状態になります。

私の構成は以下のとおりです。

# package.json の dependencies
"react-native-google-mobile-ads": "^14.7.0",
"@react-native-async-storage/async-storage": "^1.23.1",

アダプターは EAS Build 経由でネイティブビルドする前提です。app.json の plugins 設定で次のように指定します。

{
  "plugins": [
    [
      "react-native-google-mobile-ads",
      {
        "androidAppId": "ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX",
        "iosAppId": "ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX",
        "userTrackingUsageDescription": "広告のパフォーマンス測定にトラッキング権限を利用します",
        "skAdNetworkItems": [
          "cstr6suwn9.skadnetwork",
          "4fzdc2evr5.skadnetwork",
          "ydx93a7ass.skadnetwork"
        ]
      }
    ]
  ]
}

skAdNetworkItems は AdNetwork ごとに必須の識別子があり、AppLovin・Unity Ads・Pangle・Liftoff・Meta Audience Network のそれぞれが公開している ID を全て列挙する必要があります。ここを抜くと、特に iOS で広告は表示されているように見えるのにアトリビューションが効かず、後から eCPM レポートに反映されないという厄介な現象が起きます。

Rork が生成したコードに対して、私が手を入れる部分はおおむね「初期化フックの追加」「広告ユニット ID の環境変数化」「ATT 取得タイミングの調整」の3点だけです。生成されたコードを大幅に書き換える必要はありません。

// hooks/useAdMobInit.ts
import { useEffect } from "react";
import { Platform } from "react-native";
import mobileAds, { MaxAdContentRating } from "react-native-google-mobile-ads";
import { request, PERMISSIONS, RESULTS } from "react-native-permissions";
 
export const useAdMobInit = () => {
  useEffect(() => {
    const init = async () => {
      if (Platform.OS === "ios") {
        // ATT は AdMob 初期化の前に解決させる
        await request(PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY);
      }
      await mobileAds()
        .setRequestConfiguration({
          maxAdContentRating: MaxAdContentRating.PG,
          tagForChildDirectedTreatment: false,
          tagForUnderAgeOfConsent: false,
        })
        .then(() => mobileAds().initialize());
    };
    void init();
  }, []);
};

ポイントは、ATT ダイアログを AdMob 初期化「前」に解決させることです。順序を逆にすると iOS 14.5 以降のデバイスでパーソナライズ広告が出にくくなり、Bidding 時の eCPM が体感で 20〜25% 下がります。これはウォーターフォール時代から変わらない原則ですが、Bidding に切り替えてからの方が影響度が大きいと感じています。

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

この記事の続きを読む

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

この記事で得られること
AdMob Bidding(リアルタイム入札)の SDK 統合手順とウォーターフォール併用時の落とし穴
AppLovin / Meta Audience Network / Unity Ads / Pangle / Liftoff の5社同時入札を3週間運用した eCPM・fill rate の実測値と、落札シェアが社ごとにどう分かれたかの内訳
「入札が届いていない」「負けている」「落札後にロード失敗」を切り分ける診断手順と、Claude in Chrome に毎朝の巡回を委ねる運用プロンプトの設計
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

ビジネス2026-05-30
AdMobのウォーターフォールにPangleとMintegralを足して2週間 — eCPMとフィル率を見比べた所感
5,000万DL規模の壁紙アプリで、AdMobのメディエーションにPangleとMintegralを追加し、2週間ぶんのeCPMとフィル率を実データで見比べた記録です。ビディングとウォーターフォールの混在設計、実効収益の分解式、地域別グループ分割、日次モニタリングのコードまで、運用で使える形で残します。
ビジネス2026-05-30
AdMobのフロアを下げたら収益が崩れた — 個人開発のメディエーション運用で効いた判断軸
個人開発の壁紙アプリでAdMobメディエーションのeCPMフロアを実勢に合わせて調整し、Unity Adsのウォーターフォール終了に対応した実運用の記録です。フロアをOFFにしてはいけない理由、マッチ率80%の境界、月2回のレビュー手順までを残します。
ビジネス2026-05-14
RorkアプリにAdMobメディエーションを導入してeCPMが下がった話 — 設定の落とし穴と回復までの道
AdMobメディエーションを設定した直後にeCPMが30%下落した。長年アプリ収益化と向き合ってきた個人開発の視点から、Rorkアプリでよくある落とし穴と回復策、アダプターの生存確認、フロアの決め方、そして導入判断の基準までを正直に共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →