
Article
Firebase vs Cloudflare Workers:個人開発で選ぶならどっち?
個人開発でインフラを選ぶとき、FirebaseとCloudflare Workersの両方が候補に上がることが増えてきた。どちらも「サーバーレス」という括りで語られるけど、設計思想がまるで違う。
アーキテクチャの違い
Firebase は Google Cloud 上の BaaS(Backend as a Service)。Auth・DB・Hostingが最初からパッケージされていて、「全部Googleに任せる」思想。
Cloudflare Workers は エッジコンピューティング。V8 isolatesを世界330拠点以上で動かし、ユーザーの近くで処理する。「プリミティブを組み合わせる」思想。
| 項目 | Firebase | Cloudflare Workers & Pages |
|---|---|---|
| アーキテクチャ | リージョナルサーバーレス(BaaS) | グローバルエッジ |
| ランタイム | コンテナ(Cloud Run) | V8 isolates |
| コールドスタート | 300ms〜3000ms+ | 5ms未満 |
| 拠点数 | 約42リージョン | 330+エッジロケーション |
| 思想 | オールインワン BaaS | 組み合わせ可能なプリミティブ |
コールドスタートの差は体感レベルで分かる。FirebaseのCloud Functionsは初回で数秒かかることもあるが、Workersはほぼゼロ。
無料枠の比較
個人開発で一番気になるのはここ。
| サービス | Firebase(Spark) | Cloudflare(Free) |
|---|---|---|
| 静的ホスティング帯域 | 360MB/日(約10GB/月) | 無制限 |
| サーバーレス関数 | Blazeプラン必要 | 100K リクエスト/日 |
| データベース | Firestore: 1GB、5万reads/日 | D1: 5GB、500万row reads/日 |
| オブジェクトストレージ | 5GB | R2: 10GB(egress 無料) |
| 認証 | 50K MAU 無料 | なし(サードパーティ必要) |
| プッシュ通知 | FCM 無制限無料 | なし |
| クラッシュレポート | Crashlytics 無制限 | なし |
静的ホスティングの帯域がCloudflare側で無制限なのは大きい。トラフィックが予測できない個人プロジェクトには安心感がある。
有料プランを比べると、Cloudflare Workers Paid は月$5固定でWorkers/KV/D1/Durable Objects/Queues等が全部使える。FirebaseはBlaze(従量課金)なので、使い方によってはコストが跳ね上がる。
データベース比較:Firestore vs D1
| 項目 | Firestore | D1 | KV | Durable Objects |
|---|---|---|---|---|
| データモデル | NoSQL ドキュメント | リレーショナル(SQLite) | キーバリュー | KV / SQLite |
| 一貫性 | 強整合 | 強整合 | 結果整合 | 強整合 |
| リアルタイム同期 | ネイティブ | なし | なし | WebSocket経由 |
| オフライン対応 | ネイティブ | なし | なし | なし |
| 無料ストレージ | 1GB | 5GB | 1GB | あり(SQLite) |
| 全文検索 | なし | あり(FTS5) | なし | なし |
Firestoreはリアルタイムリスナーとオフラインサポートがネイティブなのが唯一無二。チャットアプリや共同編集など、リアルタイム同期が必要なら今でも最有力候補。
D1はSQLiteベースなので普通にSQLが書けるし、FTS5で全文検索もできる。ブログのような読み取り多めのアプリや、慣れ親しんだリレーショナルモデルで組みたいときはD1の方がしっくりくる。
認証:Firebase Authの圧倒的優位
正直に言う。認証だけはFirebaseが圧勝。
Firebase Authはメール/パスワード、Google/Apple/GitHub ソーシャルログイン、匿名認証、電話認証、MFA、カスタムクレームが全部50K MAUまで無料。プロトタイプなら数時間で動く。
Cloudflareには組み込みの認証機能がない。Auth.js、Clerk、Auth0、Supabase Auth などのサードパーティか、自前でJWT検証を実装する必要がある。
認証まわりの実装コストを考えると、モバイルアプリや認証が核になるサービスではFirebaseを選ぶ理由になる。
パフォーマンス:エッジ実行の差
シンガポールのユーザーが us-central1 のFirebase Functionを叩くと、ネットワーク遅延だけで200〜400msかかる。コールドスタートが重なれば1秒超えも普通にある。
同じユーザーがCloudflare Workerを叩くと、シンガポールのエッジで処理されて50ms以下。Cloudflareのネットワークはインターネット接続人口の95%を50ms以内でカバーしている。
APIレスポンスタイムがUXに直結するアプリ(特にグローバルユーザー向け)では、この差は無視できない。
フレームワーク対応
| フレームワーク | Cloudflare | Firebase |
|---|---|---|
| Astro | ★★★★★ 公式アダプター、Workers最適化 | ★★★ 静的のみネイティブ |
| Next.js | ★★★★ OpenNextアダプター(改善中) | ★★★★ App Hosting安定 |
| Remix | ★★★★★ エッジファースト設計 | ★★★ Cloud Functions経由 |
| SvelteKit | ★★★★★ 公式アダプター | ★★★ Cloud Functions経由 |
| Nuxt / Vue | ★★★★★ 公式サポート | ★★★ Cloud Functions経由 |
2025年9月にAstroチームがCloudflareに加わり、Astro + Workersの統合はさらに深まっている。Astro使いはCloudflareを選ぶ理由がより強くなった。
Next.jsはFirebase App Hostingが自動CI/CDつきでネイティブサポートしているので、Next.jsをメインで使うなら Firebase側も十分選択肢になる。
ユースケース別ガイド
どちらを選ぶか迷ったときは、用途から逆算するのが一番早い。
個人ブログ・静的サイト → Cloudflare 帯域無制限、Astroとの相性抜群、D1が5GB無料。このブログ自体もCloudflare Workers上で動いている。
モバイルアプリ → Firebase Auth/プッシュ通知/Crashlytics/Analytics/オフライン同期のセットは代替がない。モバイル開発ならFirebaseエコシステムに乗るのが最善。
Astro / Remix / SvelteKit のSSR → Cloudflare 公式アダプターがあり、エッジ実行でコールドスタートゼロ。新規プロジェクトなら迷わずCloudflare。
Next.js / Angular フルスタック → Firebase App Hosting 自動CI/CD込みのネイティブサポートが整っている。Vercelに近い体験でGCPに乗りたいならここ。
リアルタイム(チャット・共同編集)→ 要件次第 Firestoreのリアルタイムリスナーは実装が楽だが、ヘビーな使い方だとコストが怖い。Cloudflareなら Durable Objects + WebSocketで組めるが実装コストは上がる。低コスト重視 + 高トラフィックならCloudflare、プロトタイプ速度優先ならFirestore。
コスト重視のスタートアップ → Cloudflare egress費用の差が大きい。1TB転送でFirebase約150〜200ドル、Cloudflare R2は$0。月$5固定のWorkers Paidプランで本格的なインフラが揃う。
認証込みのプロトタイプを素早く → Firebase Auth + DB + Hostingを数時間で立ち上げられる。PoC段階では迷わずFirebase。
フロントエンドをCloudflare、バックエンドをFirebaseで → ハイブリッド 実は組み合わせが一番現実的なケースも多い。Cloudflare Pagesで静的配信、Firebase AuthとFirestoreをバックエンドとして使う構成は普通に成立する。
結論:競合ではなく補完関係
FirebaseとCloudflare Workersは「どちらが優れているか」という話じゃないと思っている。
- Firebase: 統合DX、モバイルエコシステム、認証、AIインテグレーション
- Cloudflare: エッジパフォーマンス、egress無料、モダンフレームワーク親和性、予測可能な課金
2026年時点での個人開発者の最善解は「両方の無料枠を使い、プロジェクトの性質で選び分け、必要なら組み合わせる」だと思う。
静的サイトやSSRアプリはCloudflare、モバイルアプリやリアルタイム同期が必要なサービスはFirebase。どちらか一方に絞る必要はない。