RORK LABEN
MAX — Rork MaxはClaude CodeとClaude Opus 4.6を基盤に、React NativeではなくネイティブSwiftアプリを直接生成しますAPPLE — Rork MaxはiPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageまでAppleエコシステム全体を対象にしますWORKFLOW — 実運用ではAIに足場を作らせ、状態管理とデータ層は自分で書き直す分担に落ち着いてきたという声が目立ちますSEED — 4月にLeft Lane Capital主導で$15Mのシードを調達しました(Peak XV・True Ventures・a16z Speedrunが参加)PAPERLINE — アプリビルダーPaperlineを買収。エンジニア人材の獲得へ今後も買収を続ける方針ですREVIEW — 3ヶ月使ったユーザーの再訪レビューが増え、得意・不得意と向く用途の見極めが進んでいますMAX — Rork MaxはClaude CodeとClaude Opus 4.6を基盤に、React NativeではなくネイティブSwiftアプリを直接生成しますAPPLE — Rork MaxはiPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageまでAppleエコシステム全体を対象にしますWORKFLOW — 実運用ではAIに足場を作らせ、状態管理とデータ層は自分で書き直す分担に落ち着いてきたという声が目立ちますSEED — 4月にLeft Lane Capital主導で$15Mのシードを調達しました(Peak XV・True Ventures・a16z Speedrunが参加)PAPERLINE — アプリビルダーPaperlineを買収。エンジニア人材の獲得へ今後も買収を続ける方針ですREVIEW — 3ヶ月使ったユーザーの再訪レビューが増え、得意・不得意と向く用途の見極めが進んでいます
記事一覧/ビジネス
ビジネス/2026-05-14中級

RorkアプリにAdMobメディエーションを導入してeCPMが下がった話 — 設定の落とし穴と回復までの道

AdMobメディエーションを設定した直後にeCPMが30%下落した。12年のアプリ開発・累計5,000万DLの経験から見えた、Rorkアプリでよくある3つの落とし穴と回復策を正直に共有する。

AdMob69メディエーション10Rork502収益化66個人開発183

AdMob メディエーションを設定した翌朝、ダッシュボードを開いて思わず固まりました。

eCPM が30%下がっていたのです。「複数の広告ネットワークを競わせれば収益が上がる」という理屈で導入したのに、逆の結果が出ました。あの日の感覚は今でも覚えています。2014年から個人でアプリ開発を続けてきた中で、収益周りでこれほど「やってしまった」と思った瞬間はほとんどありませんでした。

累計5,000万ダウンロードを超えるアプリ事業を運営しながら、AdMob とは長い付き合いがあります。月の広告収益がピーク時に150万円を超えた時期もあり、収益最大化のための試行錯誤はかなりの量をこなしてきました。その経験からすると、メディエーション導入直後の失敗は「あるある」です。特にRorkで作ったアプリは、設定の落とし穴にはまりやすいポイントが独自にあると気づきました。

AdMob メディエーションで何が起きていたか

メディエーションとは、複数の広告ネットワーク(AppLovin、Unity Ads、Meta Audience Network など)に入札させて、最高額を提示したネットワークの広告を表示する仕組みです。うまく機能すれば eCPM は上がります。

ただし「うまく機能すれば」という条件付きです。

私が経験した eCPM 下落の原因は、後から振り返ると明確でした。ウォーターフォール(各ネットワークへの入札順序)の設定が間違っていたのです。AdMob が最初に呼ばれるべき場面で、単価の低いネットワークが先に応答してしまっていました。

Rorkで広告実装をするとき、AIが生成するコードはAdMobの基本設定としては問題ありません。ただしメディエーションアダプターの追加設定は、コード外のコンソール操作が多く、AIの出力だけでは完結しない部分が残ります。そこが詰まりやすいポイントです。

Rork アプリ特有の3つの落とし穴

落とし穴1: ウォーターフォールの順序をデフォルトのまま放置する

AdMob コンソールでメディエーションを設定するとき、各ネットワークの eCPM フロアをデフォルト値のままにしていませんか。

Googleが推奨する「Bidding(入札型)」方式を使えば自動最適化されますが、一部のネットワークは現時点でもウォーターフォール方式にしか対応していません。この場合、eCPM フロアを実際の表示単価から±10〜15%の範囲で手動設定する必要があります。

私の失敗は、初期設定の $0.50 というフロアをそのまま使ったことでした。実際の eCPM が $1.80 〜 $2.20 のレンジで推移していたため、$0.50 フロアの低品質な広告が大量に表示されてしまいました。フロアを $1.50 に設定し直したところ、3日で元の水準に戻りました。

落とし穴2: iOS の ATT と広告 ID の連携が切れる

Rork のプロジェクトで ATT(App Tracking Transparency)の実装を後から追加したとき、メディエーション側のネットワークが広告IDを受け取れていない状態になることがあります。

ATT の許可を取得した後、メディエーションアダプターを初期化するタイミングが重要です。ATT の許可を取得する前にアダプターを初期化してしまうと、iOS 14以降では広告IDなしで動作するため、ターゲティングなし広告が表示され続けます。

import { requestTrackingPermission } from 'react-native-tracking-transparency';
import MobileAds from 'react-native-google-mobile-ads';
 
// ✅ ATT許可取得 → アダプター初期化の順番が正しい
const initializeAdsAfterATT = async () => {
  // iOS のみ ATT を先に処理
  if (Platform.OS === 'ios') {
    const status = await requestTrackingPermission();
    console.log('ATT status:', status);
  }
 
  // ATT 処理後に AdMob SDK を初期化
  await MobileAds().initialize();
 
  // この時点でメディエーションアダプターも自動初期化される
};

Rork のプロンプトで「ATT許可取得後にAdMob SDKを初期化する」と明示すると、AIもこの順番でコードを生成します。ただし既存プロジェクトに後からATTを追加するときは、生成コードをそのまま使わず、初期化タイミングを必ず確認してください。

落とし穴3: Android と iOS でアダプター設定を分けていない

Rork は iOS/Android 両対応のコードを一括で生成しますが、AdMob メディエーションのアダプターは OS ごとに別のパッケージIDが必要です。

app.json のプラグイン設定で iOS 用と Android 用を分けて記述していないと、どちらかのプラットフォームでアダプターが認識されずに広告が表示されないことがあります。

// app.json のプラグイン設定例(iOS/Android 分離)
{
  "plugins": [
    [
      "react-native-google-mobile-ads",
      {
        "androidAppId": "ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX",
        "iosAppId": "ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX",
        "userTrackingUsageDescription": "This identifier will be used to deliver personalized ads to you.",
        "skAdNetworkItems": [
          { "SKAdNetworkIdentifier": "cstr6suwn9.skadnetwork" },
          { "SKAdNetworkIdentifier": "4fzdc2evr5.skadnetwork" }
        ]
      }
    ]
  ]
}

SKAdNetworkItems の一覧は各ネットワークが公式ドキュメントで提供していますが、バージョン更新のたびに内容が変わります。月に1回は確認する習慣をつけておくと、iOS 広告の表示率が落ちるトラブルを防げます。

回復してわかったこと

設定を修正してから2週間後、eCPM は導入前の水準に戻り、さらに8%ほど上回るようになりました。メディエーションが本来の機能を発揮し始めたのです。

个人開発でメディエーションを扱うとき、最初の設定に時間をかけることが後の収益に大きく効きます。Rorkでアプリを素早く作れるようになったぶん、広告設定のような「コード外の作業」に時間を割く余裕も生まれました。それは良い変化だと思っています。

基本的なAdMob設定についてはRork AdMob広告収益化ガイドを、ATTの承認率を上げる実装についてはATT承認率を最大化する方法も参照してみてください。

まず AdMob コンソールでウォーターフォールのeCPMフロアを実態に近い値に設定し直すことが、今日からできる最初のアクションです。過去のデータがあれば、直近7日間の平均 eCPM から±10%の範囲を目安にしてみてください。

同じ失敗をしている方の参考になれば幸いです。

シェア

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

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

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

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

ビジネス2026-07-05
AdMob の収益が突然「保留」になったら — 無効なトラフィックを個人開発で防ぐ実務メモ
AdMob の無効なトラフィック(Invalid Traffic)で収益が保留されると、原因がわからず不安になります。個人開発で複数アプリを運用する立場から、事故を未然に防ぐ最小構成のコードと、保留が来たときの動き方をまとめました。
ビジネス2026-06-28
リワード広告の報酬を、端末からの合図だけで配らない — Rork(Expo)アプリのSSV検証をWorkerで組む
リワード広告の「視聴完了」を端末側のコールバックだけで信じると、報酬の二重付与やなりすましが起こります。AdMobのサーバーサイド検証(SSV)コールバックをCloudflare Workerで署名検証し、transaction_idで冪等化して報酬を安全に配るまでの実装をまとめます。
ビジネス2026-05-21
Rork アプリで AdMob Bidding を本番投入した実装メモ — 5 AdNetwork 同時入札の eCPM 推移と運用設計
Rork で生成したアプリに AdMob Bidding を導入し、5 AdNetwork の同時入札を本番運用しています。ウォーターフォールから移行した eCPM 推移、fill rate の変化、Claude in Chrome での日次運用までを実装メモとして整理しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →