Supabaseとは?Firebaseとの違いと使い分け

インフラ・クラウド

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が現実的な選択です。