React Native個人開発アプリのAdMob収益化実装手順とeCPM改善の実践ガイド
結論: AdMob収益化は「導入」より「配置設計」で決まる
React Native個人開発アプリの広告収益は、実装の巧拙よりもどこに・どの種類の広告を置くかでほぼ決まる。SDKを入れてバナーを1枚貼るだけの状態と、画面遷移にインタースティシャルを挟み、機能解放にリワード広告を組み合わせた状態では、同じDAUでも収益が数倍違うことは珍しくない。
実装自体はreact-native-google-mobile-adsを使えば1〜2日で終わる。時間を使うべきは以下だ。
- 広告フォーマットの配置設計
- ATT(App Tracking Transparency)と同意管理の実装
- リリース後のeCPM改善サイクル
本記事はこの順に、実際に動くコードを添えて解説する。
広告フォーマットの選び方
個人開発アプリで現実的に使うのは次の3種類だ。
| フォーマット | eCPMの目安感 | ユーザー体験への影響 | 向くアプリ |
|---|---|---|---|
| バナー | 低い | 小さい | 常時滞在型(メモ、リーダー) |
| インタースティシャル | 高い | 大きい | 画面遷移が多いツール系 |
| リワード | 最も高い傾向 | 小さい(任意視聴) | 機能制限を設けられるアプリ |
| ネイティブ | 中〜高 | 中(実装コスト高) | リスト表示が主体のアプリ |
具体的なeCPM値は地域・季節・在庫状況で大きく変動するため、数字は自分の管理画面の実測値だけを信じるべきだ。単価水準の目安は必ずAdMob公式の最新情報を確認してほしい。
個人開発の初手としては「バナー常設 + 区切りの良いタイミングでインタースティシャル」が投資対効果が高い。リワードは、広告視聴で何かを解放する設計がアプリに馴染む場合に追加する。
導入手順: react-native-google-mobile-ads
1. インストールとアプリID設定
npm install react-native-google-mobile-ads
cd ios && pod install
app.json(Expoの場合)またはreact-native-google-mobile-ads.jsonにアプリIDを書く。
{
"react-native-google-mobile-ads": {
"android_app_id": "ca-app-pub-xxxxxxxx~xxxxxxxx",
"ios_app_id": "ca-app-pub-xxxxxxxx~xxxxxxxx",
"user_tracking_usage_description": "広告をあなたの興味に合わせて表示するために使用します"
}
}
Expoの場合はconfig pluginを追加し、Development BuildまたはEAS Buildが必要になる。Expo Goでは広告は動作しないので、ここで詰まる人が多い。
2. 初期化とATT同意の取得
iOSではATTの許諾前にパーソナライズ広告を配信できない。初期化前に同意フローを通す。
import mobileAds, { MaxAdContentRating } from 'react-native-google-mobile-ads';
import { getTrackingPermissionsAsync, requestTrackingPermissionsAsync } from 'expo-tracking-transparency';
export async function initAds() {
const { status } = await getTrackingPermissionsAsync();
if (status === 'undetermined') {
await requestTrackingPermissionsAsync();
}
await mobileAds().setRequestConfiguration({
maxAdContentRating: MaxAdContentRating.PG,
tagForChildDirectedTreatment: false,
});
await mobileAds().initialize();
}
EU圏に配信するならGDPR向けの同意管理(UMP SDK)も別途必要になる。要件は変わりやすいので公式ドキュメントの最新版を確認すること。
3. バナー広告
import { BannerAd, BannerAdSize, TestIds } from 'react-native-google-mobile-ads';
const unitId = __DEV__ ? TestIds.ADAPTIVE_BANNER : 'ca-app-pub-xxxx/yyyy';
export function FooterBanner() {
return (
<BannerAd
unitId={unitId}
size={BannerAdSize.ANCHORED_ADAPTIVE_BANNER}
requestOptions={{ networkExtras: { collapsible: 'true' } }}
/>
);
}
固定サイズ(320x50)ではなくアダプティブバナーを使う。画面幅に応じて最適サイズが選ばれ、同じ表示回数でも単価が上がりやすい。
4. インタースティシャル広告
毎回ロードして即表示すると、ロード待ちで数秒フリーズしたように見える。事前ロードして、表示は完了後に行うのが基本形だ。
import { InterstitialAd, AdEventType, TestIds } from 'react-native-google-mobile-ads';
const unitId = __DEV__ ? TestIds.INTERSTITIAL : 'ca-app-pub-xxxx/zzzz';
let ad = InterstitialAd.createForAdRequest(unitId);
let loaded = false;
ad.addAdEventListener(AdEventType.LOADED, () => { loaded = true; });
ad.addAdEventListener(AdEventType.CLOSED, () => {
loaded = false;
ad = InterstitialAd.createForAdRequest(unitId);
ad.load();
});
ad.load();
export function showInterstitial() {
if (!loaded) return false;
ad.show();
return true;
}
閉じられた直後に次の広告インスタンスを作り直す点が重要だ。同じインスタンスは再表示できない。
5. 頻度制御を必ず入れる
表示回数を無制限にすると離脱率が跳ね上がる。最低限、次の制御を入れる。
const MIN_INTERVAL_MS = 90_000;
let lastShownAt = 0;
export function maybeShowInterstitial() {
const now = Date.now();
if (now - lastShownAt < MIN_INTERVAL_MS) return;
if (showInterstitial()) lastShownAt = now;
}
加えて、初回起動直後や課金ユーザーには出さない分岐も入れておく。
eCPM改善の優先順位
リリース後に効果が大きい順に並べる。
- アダプティブバナーへの移行 — 固定サイズを使っているなら最優先
- 広告ユニットの分割 — 画面ごとに別ユニットにして、どこが稼いでいるか可視化する
- リワード広告の追加 — 単価が高く、ユーザー体験も損ねにくい
- メディエーション導入 — 複数ネットワークを競わせる。ただし実装・審査コストが増える
- 配信地域の見直し — 単価が高い地域のローカライズを足す
メディエーションは効果が出るまでの手間が大きい。DAUが数千に届くまでは、AdMob単体で配置最適化に集中したほうが時間対効果が良い。
正直な注意点
- 収益額の期待値は低い。 個人開発アプリでDAU 1,000程度なら、広告収益は月数千円〜数万円のレンジになることが多い。生活費を支えるには足りない
- ポリシー違反でアカウント停止のリスクがある。 自分でクリックする、広告を誤タップしやすい位置に置く、コンテンツ規約に触れる、といった行為は一発で停止されうる
- 審査リジェクトの原因になりやすい。 iOSではATT実装漏れ、Androidではファミリー向けポリシー違反が典型
- アプリ体験を確実に劣化させる。 レビュー評価が下がると新規獲得が減る。広告と課金の併用や、広告除去課金の用意を検討したい
収益設計そのものを体系的に学びたいなら、個人開発の収益化を扱った書籍が参考になる。

Cursor + Claudeで個人開発アプリを収益化する方法: AI時代のアプリを作る・届ける・稼ぐ完全ガイド (MAKEシリーズ)
参考価格¥1,100(税込)
広告と課金の設計思想を整理するのに役立つ
Amazonで最新価格をチェックまとめ
- SDK導入は
react-native-google-mobile-adsで1〜2日。難所はExpo Goで動かない点とATT対応 - バナーはアダプティブ、インタースティシャルは事前ロード + 頻度制御が必須
- eCPM改善はアダプティブ化 → ユニット分割 → リワード追加の順で着手する
- 広告単価や配信要件は変わりやすい。数値と仕様は必ずAdMob公式の最新情報を確認する
実装より配置設計に時間を使うこと。ここが収益差の大半を生む。