Firebase と Supabase は、サーバレスでデータベースや認証、ファイルストレージといったバックエンド機能をすぐに利用できる **BaaS(Backend as a Service)** として注目されています。どちらも無料プランがあり、初心者がプロトタイプを作るのに最適ですが、設計思想やエコシステムに違いがあります。本稿では **機能、価格、開発体験、コミュニティ** の観点から比較し、選び方の指針を示します。
## 1. 基本的な提供サービス
| 項目 | Firebase | Supabase |
|------|----------|----------|
| データベース | Firestore(NoSQL)・Realtime Database | PostgreSQL(SQL) |
| 認証 | Email/Password, Google, Facebook など多数 | Email/Password, OAuth (GitHub, Google 等) |
| ストレージ | Cloud Storage(オブジェクト) | Supabase Storage(S3 互換) |
| サーバレス関数 | Cloud Functions | Edge Functions(Vercel 互換) |
| リアルタイム | Firestore のリスナー | PostgreSQL の `LISTEN/NOTIFY` をラップ |
Firebase は NoSQL が中心で、スキーマレスなデータ構造が手軽です。一方 Supabase はフル機能の PostgreSQL をそのまま提供するため、SQL が得意な開発者にとっては自然な操作が可能です。
## 2. 料金体系
- **Firebase**: 無料枠は比較的広く、利用量が増えると「従量課金」になる。特に Firestore の読み取り/書き込みはコストが積み上がりやすい点に注意が必要です。
- **Supabase**: 無料プランは月間 500 MB ストレージ、200,000 行のデータベースクエリが上限。課金はプランベースで、SQL クエリ数に対する従量課金は基本的にありません。
初心者はまず無料枠で十分ですが、将来的にスケールする場合は **クエリコスト** と **データ量** を見積もって選択すると良いでしょう。
## 3. 開発体験
### 初期化コード例
```ts
// Firebase (v9 modular)
import { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";
import { getFirestore } from "firebase/firestore";
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "your-project.firebaseapp.com",
projectId: "your-project-id",
};
const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const db = getFirestore(app);
// Supabase (v2)
import { createClient } from "@supabase/supabase-js";
const supabaseUrl = "https://xyz.supabase.co";
const supabaseKey = "YOUR_ANON_KEY";
export const supabase = createClient(supabaseUrl, supabaseKey);
Firebase は公式 SDK が豊富で、React Native や Unity など多様なプラットフォームに対応しています。Supabase は「PostgreSQL がそのまま」なので、SQL エディタや pgAdmin が使える点が魅力です。
4. コミュニティとドキュメント
- Firebase は Google が提供しているため、公式ドキュメントが充実し、Stack Overflow の質問数も圧倒的に多いです。
- Supabase はオープンソースコミュニティが活発で、GitHub の Issue から機能改善が迅速に行われます。日本語の情報は増えてきていますが、まだ Firebase ほどは蓄積されていません。
5. どちらを選ぶべきか?
| 条件 | 推奨 |
|---|---|
| SQL が好き、既存の PostgreSQL 知識がある | Supabase |
| リアルタイムチャットやゲームのように頻繁なデータ更新が必要 | Firebase(Firestore のリスナーが便利) |
| マルチプラットフォーム(iOS/Android/Web)で統一的に開発したい | Firebase |
| コストを明確に管理したい、無料枠で長く使いたい | Supabase(プランベースの料金がシンプル) |
結局のところ、プロジェクトの要件と自分の得意分野 が選択の鍵です。まずは無料プランで小さく試し、実装上の壁に直面したときにもう一方を比較するとスムーズです。