第04章:reCAPTCHA Enterprise って何?いつ使う?🏢🔐
この章は「reCAPTCHA v3で始めたけど、運用が本気になってきた」ときに迷いがちな Enterprise を、ちゃんと“判断できる”ようになる回です🙂✨ (ミニアプリ題材:メモ+画像+AI整形📝📷🤖)
1) まず結論:Enterprise は「運用で勝つためのreCAPTCHA」🏁🧠
reCAPTCHA Enterprise は、ユーザー操作のリスクを **0.0〜1.0(0.1刻み)**で評価して、そのスコアが しきい値(app risk threshold)以上ならOK、未満ならNG…という感じで、App Checkが判定します🧿📊 そして デフォルトのしきい値は 0.5 推奨です。(Firebase)
さらに、トークンの **TTL(有効期間)**も運用に合わせて調整できます(30分〜7日、デフォルトは 1時間が妥当と明記)。短くすると安全だけど、再判定が増えて遅延・クォータ・コストに効いてきます⚖️(Firebase)
2) v3 と Enterprise の違い(超ざっくり)🔎✨

イメージで掴むと早いです👇
- v3:まずはこれでOKなことが多い。しきい値0.5推奨。TTLのデフォルトは 1日。(Firebase)
- Enterprise:より運用前提(設定・監視・スコア段階・課金まわり)。しきい値0.5推奨。TTLのデフォルトは 1時間。(Firebase)
そして大きい差がこれ👇
- スコア段階(granularity) Essentialsが4段階、Standard/Enterpriseが11段階…みたいに“細かく運用できる度”が違います📈(Google Cloud Documentation)
- 無料枠と課金 reCAPTCHAは「月10,000 assessmentsまで無料(組織単位)」があり、Enterpriseはそれを超えると 1,000 assessments あたり $1という形が明記されています💸(Google Cloud Documentation)
3) 「いつEnterpriseにする?」判断基準🧭🧿

✅ Enterpriseが“向いてる”サイン
-
Bot対策を「ちゃんと運用」したい(監視→調整→再監視)👀🔁
-
しきい値を 0.1刻みでチューニングしたい(人間を弾きすぎた/緩すぎたの微調整)🎛️(Firebase)
-
コスト事故が怖い機能がある(とくに AI やアップロード系)😱💸
- 例:AI整形ボタンは、App Checkで守るのが強く推奨されています。(Firebase)
-
(ちょい上級)「使い回し対策」など強化の流れも見据えたい♻️🚫
- 例:AI系の本番チェックリストでは replay protection に備えた設定も推奨されています。(Firebase)
❌ v3のままで様子見でいいサイン
- まだβ〜小規模で、まずは 体験と速度が大事🏃♂️💨
- しきい値はデフォルト0.5で十分そう🙂
- 余計なコストの芽を増やしたくない🌱
4) 超重要:Billingをつける前の「しきい値の制限」🧯

Enterpriseは、請求アカウントを紐付ける前だと、使えるスコア段階が限定されます(例:0.1/0.3/0.7/0.9 など)&App Check側で設定できるしきい値も制限されます。(Firebase)
さらに、Billing追加後には 自動のセキュリティレビューが走るとも書かれています。(Firebase) なので「最初からEnterpriseでガチ運用するつもり」なら、この仕様は早めに知っておくと安心です🙂👍
読む📖(この章で押さえるポイント)
- Enterpriseは **スコア(0.0〜1.0)としきい値(推奨0.5)**で判定する🧿(Firebase)
- TTLは30分〜7日。短いほど安全だけど、遅延・クォータ・コストに効く⚖️(Firebase)
- 無料枠10,000 assessments/月(組織単位)+超過課金の形を把握する💸(Google Cloud Documentation)
手を動かす🛠️(Enterprise導入の最短ルート)
A. Console側(設定)🧰

- reCAPTCHA Enterprise API を有効化(促されたらON)✅(Firebase)
- Website-type key を作成し、ドメインを登録🌐
- 「Use checkbox challenge」を選ばない(ここハマりがち!)🚫☑️(Firebase)
- Firebase Console の App Check で、対象Webアプリに site key を登録🧿(Firebase)
- (任意)TTLを確認:最初はデフォルト1時間でOK、短くしすぎ注意⏳(Firebase)
- (任意)しきい値:まずは 0.5で開始🎛️(Firebase)
B. アプリ側(コード)⚛️

services/firebase.ts みたいな“1箇所”に寄せるのがコツです📦✨
// services/firebase.ts
import { initializeApp } from "firebase/app";
import {
initializeAppCheck,
ReCaptchaEnterpriseProvider,
} from "firebase/app-check";
const firebaseConfig = {
// いつものやつ(省略)
};
export const app = initializeApp(firebaseConfig);
// ✅ App Check は「Firestore/Storage/AI Logic を触る前」に初期化!
export const appCheck = initializeAppCheck(app, {
provider: new ReCaptchaEnterpriseProvider(import.meta.env.VITE_RECAPTCHA_SITE_KEY),
isTokenAutoRefreshEnabled: true, // ← これONにしないと更新されないので要注意
});
ポイント👇
- site key は公開キー(フロントに置く前提のやつ)です🔑
isTokenAutoRefreshEnabled: trueは、公式のv3手順でも「自動更新は明示的にON」って強調されています🧠(Firebase)- 先にメトリクス監視→あとで強制、の順が安全です👀(いきなり強制はUX事故りがち😇)(Firebase)
ミニ課題📝(判断基準づくり)
あなたのアプリ(メモ+画像+AI整形)を想定して、次を1枚メモに書いてください✍️✨
- Enterpriseにしたい理由を2つ(例:AIコスト、Bot被害、運用でしきい値調整したい…)
- しきい値0.5から動かす条件を1つ(例:正規ユーザーが弾かれたら下げる…等)
- TTLを短くする条件を1つ(例:攻撃が来たときだけ短縮…等)(Firebase)
チェック✅(この章を抜ける条件)
- 「Enterpriseは 運用前提」って、自分の言葉で説明できる🙂
- TTLを短くすると **安全↑ / 遅延・クォータ・コスト↑**になり得るのが腹落ちしてる⚖️(Firebase)
- Billingなしだと しきい値やスコア段階が制限されるのを理解した🧯(Firebase)
- AI整形ボタンは App Checkで守るのが強く推奨される理由がわかる🤖🧿(Firebase)
つまずきポイント集(先回りで潰す😎🧯)
- ドメイン登録ミス:
localhostや本番ドメイン入れ忘れでハマる🌐💥 - checkbox challenge を選んでしまう:Enterpriseキー作成時に要注意🚫☑️(Firebase)
- しきい値を上げすぎる:Botは減るけど、ユーザーも消える😇(まず0.5)(Firebase)
- TTL短すぎ:安全だけど、再判定が増えて遅延・クォータ・コストに刺さる⏳💸
おまけ:AIで判断と実装を速くする🚀🤖

- 「Enterpriseにするか」迷ったら、AIに 判断材料の洗い出しをさせるのが強いです🧠✨
- さらにAI機能側は、**Remote Configで“モデル名などをアプリ更新なしで変えられる”**のが推奨されていて、運用と相性が良いです🎛️(Firebase)
- そしてAI Logicには **ユーザー単位のリクエスト制限(デフォルト100 RPM)**があるので、App Checkとセットで「破産しない設計」に寄せられます💸🧯(Firebase)
次の章(第5章)で、いよいよReact側に App Check を組み込む流れに入ると「守りが効いてる感」が一気に出て楽しいです😆🧿🔥