RORK LABEN
TOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しましたTOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しました
記事一覧/開発ツール
開発ツール/2026-05-19上級

クラッシュ率上昇時にAdMobを自動で絞る『収益を守る自動制動』アーキテクチャ — Rork × Firebase Remote Config × Crashlytics の連動設計

クラッシュ率が跳ね上がった瞬間、ユーザーに広告を出し続けて評価を落とすか、いったん広告を絞って安定性を守るか。12年の個人開発運用で出した答えは、Firebase Remote Config と Crashlytics のシグナルを AdMob に連動させる4状態の自動制動アーキテクチャでした。

Rork515AdMob70Firebase Remote Config2Crashlytics13アーキテクチャ18長期運用9個人開発186

プレミアム記事

2024年の春、私が運用している壁紙アプリの一つが、iOS 18 のマイナーアップデート直後にクラッシュ率を 0.3% から 4.8% まで跳ね上げました。原因は CADisplayLink 周辺の挙動変化でしたが、それ自体よりも私が悔やんだのは、症状が出ている12時間のあいだ、何も知らずに AdMob のインタースティシャル広告を出し続けてしまったことです。レビュー欄には「広告が出た瞬間に落ちる」というレビューが27件積み上がり、平均評価は 4.5 から 4.1 まで落ち込みました。広告売上は通常通り入ってきましたが、その後の数週間でオーガニックインストールが32%減り、結局はその売上の何倍もを失いました。

アーティスト・クリエイターとして個人開発を続けている廣川政樹です。2014年からアプリ事業を続けて累計5,000万ダウンロードを超え、AdMob からの月次広告売上が三桁万円規模になった頃から、収益化と安定性は「同じ一枚のダッシュボードで見るもの」だと考えるようになりました。本稿はその実運用のなかで形になった、クラッシュ率上昇を検知して AdMob 表示を自動的に絞り込む4層の制動アーキテクチャの設計と実装、そして「どうやって戻すか」までを順に書き残します。

なぜ広告と安定性を1つのアーキテクチャで設計するのか

広告SDKの初期化処理は、想像以上にプロセスの起動経路に重く食い込みます。AdMob (Google Mobile Ads SDK) は v11 以降で並列初期化と起動時間の改善が進みましたが、それでも私の計測では、AdMob 関連のクラスローディングがコールドスタート時間の 8〜14% を占めることが多く、メディエーション SDK(AppLovin・Meta Audience Network 等)を追加すれば 20% を超えます。アプリ側の不具合に加えて広告 SDK 由来のクラッシュ(例: WebKit プロセスの OOM、メディエーション側の Bid Request タイムアウト連鎖)が混入すると、原因切り分けの時間も延びます。

ここで「クラッシュ率が一定水準を超えたら、広告表示を段階的に縮退させる」という挙動を入れておくと、3つの効果が同時に得られます。第一に、症状の悪化を物理的に止められること。第二に、Crashlytics のシグナルにノイズとして混じる広告 SDK 経由のクラッシュを切り離せること。第三に、レビュー欄に「広告→クラッシュ」の連想が定着するのを防げることです。実は3つ目が長期的に一番効きます。App Store のレビューは半年たっても消えません。

全体アーキテクチャ — 4層に責務を分けて考える

このシステムは、それぞれが独立した役割を持つ4つの層に分けて設計します。

  1. 観測層: Firebase Crashlytics と独自テレメトリで、クラッシュとエラー率をリアルタイムに収集する
  2. 判定層: Cloud Functions(または Cloudflare Workers)で観測データを集計し、3層ローリングウィンドウで状態を決定する
  3. 配信層: Firebase Remote Config が ad_throttle_state パラメータをクライアントに配信する
  4. 実行層: クライアント側の AdServingGate が状態に応じて広告ロード・表示を制御する

層の分離が大事な理由は「戻すとき」にあります。何かが暴走したとき、最後の砦は Remote Config を手動で Normal に書き戻すこと、その次は配信層のキルスイッチ、その次は実行層のフォールバック値です。それぞれの層が単独で安全側に倒せるようにしておくと、夜中3時に起こされても怖くありません。

状態モデル: Normal / Caution / Throttle / Halt の4段階

私が現役運用しているアプリでは、状態を次の4段階に切っています。

  • Normal: クラッシュフリー率 ≥ 99.7%。すべての広告ユニットを通常表示
  • Caution: クラッシュフリー率 99.0% 〜 99.69%。インタースティシャル広告の表示頻度を 50% に削減・リワード広告は維持
  • Throttle: クラッシュフリー率 96.0% 〜 98.99%。インタースティシャル全停止・バナーのみ表示・リワードは「ユーザー操作起点のみ」
  • Halt: クラッシュフリー率 < 96.0%、または 1 分あたりクラッシュ ≥ 20件。すべての広告ロード停止・SDK 初期化スキップ

「すべて止める」と「すべて出す」の二択ではなく、4段階に切ることで、誤発火しても売上を完全には失わない設計になっています。AdMob 売上を例にとると、私のアプリの一つで Throttle 状態が 6 時間続いたとき、その6時間の売上は通常時の 24% まで落ちましたが、Caution 段階の 50% 削減のおかげで、Throttle に至る前の傾きの段階で 72% の売上を維持できていました。完全停止していたらゼロです。

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

この記事の続きを読む

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

この記事で得られること
クラッシュ率を1分・10分・60分の3層ローリングウィンドウで監視し、誤発火を抑える具体パラメータ
Normal / Caution / Throttle / Halt の4状態フェーズアウトを Firebase Remote Config で配信する実装パターン
ヒステリシス・スモークテスト・手動オーバーライドを組み合わせた『戻し方の作法』と AdMob 売上を72%維持しながら安定性を回復させる運用ノウハウ
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-05-21
個人開発で『本番障害の自動応答』を仕組み化する ― Crashlytics・Sentry・Slack 通知・段階的ロールバックの設計
個人開発で 12 年・累計 5,000 万 DL を運用してきた中で組み上げた、本番障害の自動応答アーキテクチャをまとめます。Crashlytics と Sentry の二段重ね、Slack 通知の階層化、Remote Config による段階的ロールバックの実装例を共有します。
開発ツール2026-05-26
App Store Connect・RevenueCat・AdMob の朝の指標を Cloudflare Workers で1本化する — 6アプリ運用の日次集約アーキテクチャ
Rork で複数アプリを運用する個人開発者向けに、App Store Connect API・RevenueCat REST・AdMob Reporting API を Cloudflare Workers Cron で集約し、毎朝1通の日次レポートに統合する実装手順をまとめました。
開発ツール2026-05-18
Rork × Firebase Remote Config で AdMob を本番のまま安全に切り替える — 起動広告と頻度キャップを「リリースなし」で動かす運用
壁紙アプリ運用で起動広告を強くしすぎて DAU が落ちた経験から、AdMob のフォーマット配信比率・頻度キャップ・除外条件を Firebase Remote Config で扱う設計をまとめました。Expo/Rork での実装、フェイルセーフ、A/B、指標の繋ぎ込みまで。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →