Supabase は『Postgres ベースのオープン Firebase』
Supabase は Postgres を中心に Auth/Storage/Realtime/Edge Functions を提供する BaaS で、スタートアップ・個人開発で広く採用されています。本記事では編集部の視点で、実務での使い方を公開情報をもとに整理します。PostgreSQL 実践 もご参考に。
主要機能の概要
(1) Database:マネージド Postgres + Row Level Security。(2) Auth:メール/OAuth/Magic Link/Phone OTP。(3) Storage:S3 互換のファイルストレージ。(4) Realtime:WebSocket でテーブル変更を即時購読。(5) Edge Functions:Deno ベースのサーバーレス。OAuth/OIDC 実装 もご参考に。
Row Level Security (RLS) の活用
(1) テーブル単位でRLS 有効化。(2) ポリシーを SQL で記述。(3) auth.uid():認証ユーザーID。(4) auth.jwt():トークン内の追加クレーム。(5) テストで網羅検証:RLS のミスは認可漏れに直結。
クライアントSDK の使い方
(1) supabase-js:TS で型安全に操作。(2) クエリビルダー:from/select/eq/order。(3) 型生成:CLI で TS の型を自動生成。(4) Realtime 購読:Postgres Changes / Broadcast / Presence。(5) サーバー側操作:Service Role Key で RLS バイパス。Next.js App Router との相性が良いです。
本番運用の注意点
(1) Service Role Key の取扱い:絶対に公開しない。(2) RLS ポリシーの監査:定期的に網羅性確認。(3) パフォーマンスチューニング:Index/EXPLAIN を使う。(4) バックアップ:Point-in-Time Recovery 設定。(5) Vault 機能:シークレット保管。Secrets 管理 も合わせて。
スケールアップのタイミング
(1) 無料/Pro/Team/Enterpriseのプラン階層(最新は公式参照)。(2) MAU でスケール:認証ユーザー数で課金。(3) DB サイズ・読み書きのリミット確認。(4) 独自インフラへの移行:オープンソース版で自前運用も可能。(5) Connect Pool:Supavisor で接続管理。
失敗しがちなパターン
(1) RLS 未設定で全件閲覧可能。(2) Service Role Key をフロントに含める:致命的漏洩。(3) Realtime を本番で全テーブル購読:負荷。(4) Edge Functions で長時間処理:タイムアウト。(5) 無料枠の制限を超え:唐突なダウン。対策は、(1)新規テーブルは即RLS、(2)Service Role はサーバー専用、(3)購読範囲限定、(4)ジョブはキューへ、(5)使用量監視+早期Pro移行、です。