Supabaseは「オープンソース版Firebase」と呼ばれるBaaS(Backend as a Service)です。PostgreSQLを中心に認証・ストレージ・Realtime・関数を提供します。本記事では、Firebaseとの違いと、Supabaseの使い分けを解説します。
Supabaseとは
Supabaseは、PostgreSQLをコアにDB・Auth・Storage・Edge Functions・Realtime・Vector検索を提供するBaaSです。マネージドSaaSとセルフホスト両方が選べ、データの主権を保ちやすいのが特徴です。
Firebaseとの主な違い
- DB:Supabase=PostgreSQL(SQL)、Firebase=Firestore(NoSQL)
- クエリ言語:Supabase=標準SQL、Firebase=独自API
- OSS:Supabase=完全OSS、Firebase=Googleクローズド
- 移行容易性:Supabaseは標準PostgreSQLなのでロックインが薄い
- Realtime:両者とも対応(Supabaseは行レベル変更を購読)
主な機能
- Database:PostgreSQL(Row Level Security対応)
- Auth:メール・OAuth・マジックリンク・MFA
- Storage:S3互換のオブジェクトストレージ
- Realtime:行変更・チャンネル購読
- Edge Functions:Deno基盤のサーバーレス
- pgvector:ベクトル検索(LLM/RAGに最適)
クライアントSDKの例
import { createClient } from '@supabase/supabase-js';
const supabase = createClient(URL, ANON_KEY);
// データ取得
const { data, error } = await supabase
.from('posts')
.select('id, title, author(name)')
.order('created_at', { ascending: false })
.limit(10);
// 認証(マジックリンク)
await supabase.auth.signInWithOtp({ email });
// Realtime購読
supabase.channel('posts')
.on('postgres_changes', { event: '*', schema: 'public', table: 'posts' },
(payload) => console.log(payload))
.subscribe();
Row Level Security(RLS)
SupabaseのセキュリティはPostgreSQLのRLSが基本。テーブルごとに「自分のレコードのみ参照可能」などのポリシーを記述し、フロントから安全にDB操作できます。Firebaseのセキュリティルールと考え方が近いです。
使い分けの指針
- RDBMSやSQLが得意:Supabase
- SDK・Google統合(GA・FCM)重視:Firebase
- セルフホスト・移植性:Supabase
- NoSQL/サーバーレス完結ですぐ動かしたい:Firebase
- RAGなどベクトル検索が必要:Supabase(pgvector内蔵)
まとめ
Supabaseは「PostgreSQLベース+OSS」という独自ポジションで、Firebaseの代替として急速に存在感を増しています。SQLが書ける・将来移行も視野に入れたい・LLMで使いたいならSupabase、NoSQLで爆速MVPならFirebaseが現実的な選択です。