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上級

Firebase App Check を Rork に段階的に enforcement する — AdMob 不正検知と Crashlytics を壊さない実運用設計

Firebase App Check を本番投入したいが Crashlytics や AdMob を壊したくない、という個人開発者向けに、Rork から DeviceCheck と Play Integrity を段階的に有効化する設計とロールバック手順をまとめます。

Firebase10App CheckAdMob70Crashlytics13Rork515本番運用10

プレミアム記事

ある月曜の朝、Crashlytics のダッシュボードがほぼ無音になっていました。「クラッシュフリーが急に 99.97% に上がった」と一瞬喜んだのですが、5 分後には逆の意味だったと気づきます。クラッシュが減ったのではなく、レポートが届いていないだけでした。前夜、Firebase App Check の enforcement を Realtime Database と Crashlytics の両方で「未強制」から「強制」に切り替えていたのです。

App Check の話題はドキュメントが充実していて手順も書かれていますが、Rork で組んだアプリにあとから入れるとき、本当に怖いのは「ボタンひとつで本番から不正トラフィックを止められる」という設計の単純さの方です。私自身、2014 年から AdMob 中心で個人開発を続けてきて累計 5,000 万 DL の事業を運営していますが、App Check の段階的 enforcement だけは何度入れても緊張します。一度全停止を経験した側として、Rork で App Check を導入する個人開発者がそのまま使える設計を、実例ベースで書き残しておきます。

なぜ App Check の「即時強制」は本番で危険なのか

App Check は、Firebase バックエンドへのリクエストが「正規のアプリから来ているか」を、iOS なら DeviceCheck / App Attest、Android なら Play Integrity で検証する仕組みです。enforcement モードを「強制」にすると、検証に通らないリクエストはサーバ側で 401 として落とされます。

ここで問題なのは、検証に通らないリクエストの中に、不正トラフィックではなく「自分のアプリが出している正規のリクエスト」も普通に含まれてしまうという点です。よくある原因は次の三つで、いずれも 5,000 万 DL の現場で実際に踏みました。

  1. App Attest がまだプロビジョニングされていない端末(インストール直後数十秒の窓)からの起動シーケンス
  2. デバッグビルドや TestFlight のビルドで Debug Provider を設定し忘れている
  3. iOS シミュレータや、Android のエミュレータからの社内 QA リクエスト

これらが全て「強制」モードでブロックされると、Crashlytics は単純にレポートが届かなくなり、Realtime Database はリスナーが立たなくなり、Remote Config はフェッチに失敗してデフォルト値で動き続けます。サーバ側エラーは Firebase コンソールにしか出ないので、Rork 側のログを見ても気づきません。

App Check を本番投入するときは、この「気づかない停止」が静かに広がる前提で、必ず段階的 enforcement とロールバックフラグを同時に組むのが基本だと考えています。

Rork から App Check を有効化する 3 つの前提条件

Rork のプロジェクトで App Check をまっとうに動かすには、Expo SDK と Firebase JS SDK が両方とも噛んでいる構成を意識する必要があります。私の場合、次の三点を確認してから初めて Firebase コンソールの enforcement に手をつけることにしています。

第一に、Firebase JS SDK のバージョンが App Check 対応バージョンになっていること。@react-native-firebase/app-check を使う場合は v18 以降が安心で、v17 系には iOS の AppAttest provider で初期化が不安定になる既知の挙動がありました。

第二に、Expo の prebuild が走った状態で ios/<App>/AppDelegate.swift に App Check の provider 初期化が、Firebase.configure() の前に来ていること。順序が逆だと、初回 token 取得のために発火するべき内部 listener が落ちます。

第三に、Android 側で Play Integrity を使う場合、Play Console 側で「Play Integrity API」が「使用中」になっていること。Firebase コンソール側で provider を選んだだけでは有効化されません。

これらが揃っていない状態で enforcement だけ進めると、ロールバックしても症状が消えないことがあるので、私はチェックリスト化して毎回見直しています。

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

この記事の続きを読む

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

この記事で得られること
DeviceCheck と Play Integrity を Remote Config 経由で 0%・10%・50%・100% と段階的に enforcement する具体的な実装
Crashlytics と Realtime Database が App Check 有効化で停止する代表的な 3 つの失敗パターンと、5,000万DL アプリで起きた実例
本番で何かが壊れたとき 3 分以内に revert する Remote Config フラグ設計と、リカバリ用の最小チェックリスト
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-05-31
クラッシュフリー率を『予算』として運用する — 個人開発 6 アプリで撤退と投資を判断する SLO 設計ノート
壁紙アプリ 6 本を並行運用するなかで、クラッシュフリー率を「良い・悪い」の二値ではなくエラーバジェットとして扱うようにした設計を共有します。バーンレートを撤退・投資判断のゲートに変える運用ノートです。
開発ツール2026-05-27
Rork 6 アプリで「Crashlytics に映らない失敗」を観測可能にした — 無音劣化の早期検知設計ノート
壁紙アプリ 6 本を並行運用するなかで気づいた、Crashlytics に出ない静かな失敗を 3 週間で観測可能にした設計を共有します。AdMob・課金・遷移の3層を Beacon と State Machine で拾います。
開発ツール2026-05-21
個人開発で『本番障害の自動応答』を仕組み化する ― Crashlytics・Sentry・Slack 通知・段階的ロールバックの設計
個人開発で 12 年・累計 5,000 万 DL を運用してきた中で組み上げた、本番障害の自動応答アーキテクチャをまとめます。Crashlytics と Sentry の二段重ね、Slack 通知の階層化、Remote Config による段階的ロールバックの実装例を共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →