Supabase

Postgres を中心に置いた「Firebase の OSS 代替」。Auth / Realtime / Storage / Edge Functions / Vector まで揃った Backend-as-a-Service。SaaS でもセルフホストでも動く。

これは何か

Postgres + 周辺サービスを1 つの SaaSとして使えるようにしたもの。 フロントだけでもバックを構成できる「BaaS」だが、中身が完全に Postgres なので いつでも普通の SQL データベースとして持ち出せる

構成要素

サービス中身役割
DatabasePostgres 16/17データ本体。標準 SQL がそのまま使える
AuthGoTrue(OSS)メール / OAuth / Phone / Magic Link
APIPostgREST + pg-metaテーブルから自動で REST API を生成
RealtimePhoenix 製の Realtime サーバPostgres 変更を WebSocket で配信
StorageS3 互換のオブジェクトストレージ画像・ファイル + 署名付き URL
Edge FunctionsDeno on Cloudflareサーバ側ロジック
Vectorpgvector 拡張埋め込み検索 / RAG

Firebase との違い

SupabaseFirebase
DBPostgres(リレーショナル)Firestore(ドキュメント)
クエリSQL / 結合 / 集計が強いNoSQL(結合できない)
OSS○ セルフホスト可×(プロプラ)
移行普通の Postgres dump で完結独自エクスポート
RLSPostgres の行レベル権限が強力Security Rules(独自 DSL)
料金容量・転送ベースで安い読み込み件数で青天井になりがち
EdgeDeno (CF Workers)Functions (Node)

得意分野

苦手分野 / 注意

料金感(2026 年初頭)

このセクションの読み方

  1. セットアップ — プロジェクト作成と最小サンプル
  2. Database — テーブル設計と SQL
  3. Auth — メール / OAuth / セッション
  4. Realtime — DB 変更通知 / Broadcast / Presence
  5. Storage — 画像とファイル
  6. Edge Functions — サーバ側ロジック
  7. Row Level Security — 認可の心臓部
  8. 運用と注意点

クイックスタート

npm install @supabase/supabase-js
import { createClient } from "@supabase/supabase-js"

const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
)

// 一覧取得
const { data, error } = await supabase
  .from("posts")
  .select("id, title, created_at")
  .order("created_at", { ascending: false })

// 認証
await supabase.auth.signInWithPassword({ email, password })

// リアルタイム
supabase
  .channel("posts")
  .on("postgres_changes", { event: "*", schema: "public", table: "posts" },
    (payload) => console.log(payload))
  .subscribe()
学ぶ順番

まず セットアップ でプロジェクトを作って、 Auth でログインフローを 1 回作る。 そのあと RLS を理解しないとセキュリティ事故が起こりやすい。