卑猥な広告と戦ったら収益が激変した話 〜AdMob MAX_AD_CONTENT_RATING の罠〜
はじめに
個人開発のAndroidアプリ(数万DL規模)を運営しています。
ある日、ユーザーから**「広告が卑猥です」**というクレームが。
「これはマズい」と思って対策したら、eCPMが約50%も激減してしまいました。
この記事では、AdMobのコンテンツレーティング設定が収益にどれほど影響するのか、実体験をベースにまとめます。
何が起きたのか
1. クレーム受信
ユーザーから「広告が卑猥」とのレビューが。Google Playの評価にも影響しかねないので、すぐに対策を検討しました。
2. 全年齢レーティングを設定
AdMobには RequestConfiguration で広告のコンテンツレーティングを制限する機能があります。
RequestConfiguration requestConfiguration = new RequestConfiguration.Builder()
.setMaxAdContentRating(RequestConfiguration.MAX_AD_CONTENT_RATING_G)
.build();
MobileAds.setRequestConfiguration(requestConfiguration);
設定できるレーティングは4段階で、上位の設定は下位のレーティングの広告も含みます:
| 定数 | 対象 | 許可される広告 |
|---|---|---|
MAX_AD_CONTENT_RATING_G |
全年齢 | Gのみ |
MAX_AD_CONTENT_RATING_PG |
保護者の指導推奨 | G + PG |
MAX_AD_CONTENT_RATING_T |
13歳以上 | G + PG + T |
MAX_AD_CONTENT_RATING_MA |
17歳以上 | G + PG + T + MA |
| 設定なし(デフォルト) | 制限なし | すべて |
「全年齢なら安心だろう」と MAX_AD_CONTENT_RATING_G を設定してリリース。
3. 収益が激変
リリースから数日後、AdMobダッシュボードを見て目を疑いました。
| 指標 | 変更前 | 変更後 | 変動 |
|---|---|---|---|
| eCPM | 約¥330 | 約¥170 | -49% |
| 推定収益 | - | - | -78% |
eCPMが約半分に。
なぜこんなに下がるのか
入札競争の激減
AdMobの広告はオークション形式です。MAX_AD_CONTENT_RATING_G を設定すると:
- 入札できる広告主が大幅に減少 — 多くの広告主はPGやT以上のレーティングの広告を出稿している
- 競争が減り、落札価格が下がる — 入札者が少ない = 単価が安くなる
- fill rateも低下 — マッチする広告自体が少なくなり、広告が表示されない枠が増える
つまり、表示回数あたりの単価が下がり、さらに表示されない枠も増えるという二重のダメージです。
開発者コミュニティでの報告
自分だけの問題かと思いましたが、海外の開発者も同様の報告をしています:
- Tレーティングに制限しただけで収益70%減、fill rate 50%減
- AdMobのダッシュボードで、TからGに変更しようとすると追加で40%減という推定が表示された
結局どうしたか
即座にレーティング制限を解除しました。
// Before: 全年齢制限あり
RequestConfiguration requestConfiguration = new RequestConfiguration.Builder()
.setMaxAdContentRating(RequestConfiguration.MAX_AD_CONTENT_RATING_G)
.build();
// After: 制限なし(setMaxAdContentRatingの行を削除)
RequestConfiguration requestConfiguration = new RequestConfiguration.Builder()
.build();
卑猥な広告への正しい対処法
レーティング制限ではなく、AdMob管理画面での個別対応がベストプラクティスです:
1. 特定の広告カテゴリをブロック
AdMob管理画面 → ブロックのコントロール → 広告カテゴリ
出会い系、ギャンブルなど問題になりやすいカテゴリだけをブロックできます。
eCPMへの影響は数%程度で済みます。
2. 特定の広告主URLをブロック
問題のある広告のURLを個別にブロック。
ピンポイントなのでeCPMへの影響はほぼゼロです。
3. Mediationパートナーの広告品質設定
Facebook Audience NetworkやUnity Adsなどのメディエーションを使っている場合、各ネットワーク側でもコンテンツフィルタリングの設定が可能です。
BANされない?
心配になるかもしれませんが、maxAdContentRating はパブリッシャー(開発者)が任意で設定するフィルターです。
- 設定しなくてもポリシー違反にはなりません
- Google側がユーザーの属性に基づいて適切な広告を選定します
- 大半のアプリ開発者はこの設定を使っていません
ただし例外があります:
- Google Playのファミリーカテゴリに登録しているアプリ → COPPA準拠が必要でG設定が事実上必須
-
tagForChildDirectedTreatment(true)を設定しているアプリ → 子供向けとして申告済み
一般向けアプリであれば、制限なしで全く問題ありません。
まとめ
| やったこと | eCPMへの影響 |
|---|---|
MAX_AD_CONTENT_RATING_G を設定 |
-50% 💀 |
| 設定を解除 | 元に戻る(見込み) |
| カテゴリ/広告主の個別ブロック | -数% ✅ |
教訓:
- 🚫
MAX_AD_CONTENT_RATING_GはeCPMを壊滅させる。子供向けアプリ以外では使わない - 🚫
MAX_AD_CONTENT_RATING_Tでも30〜40%の収益減が報告されている - ✅ 卑猥な広告への対策は「カテゴリブロック」「広告主ブロック」で個別対応すべし
- ✅ 設定しなくてもBANリスクはない(一般向けアプリの場合)
広告収益は個人開発者の生命線です。「とりあえず全年齢にしておけば安心」と思って設定すると、気づかないうちに収益が半減しているかもしれません。