サーバー プログラミング ソフトウェア 公開日 2026.05.15 更新日 2026.05.15

Supabase とは何か?PostgreSQL ベースのオープンソース BaaS と Firebase との使い分け

Supabase は `PostgreSQL を中心に、認証 / Storage / Realtime / Edge Functions / ベクトル検索を統合したオープンソース BaaS』 です。Firebase の `非リレーショナル前提』 と対照的に、`SQL とリレーションを使い続けられる』 のが最大の特徴。仕組み、Firebase との比較、採用判断軸を整理します。

先に要点

  • Supabase` PostgreSQL を中心にした、オープンソースの BaaS(Backend as a Service)』。`Firebase の代替』 として有名だが、根本的な違いは ` 普通の SQL と RDB が使える』 こと。
  • 提供機能は ` Postgres DB / 認証(Auth)/ ストレージ / Realtime(変更通知)/ Edge Functions / Vector(ベクトル検索)/ Cron / Queues』 など、`バックエンドに欲しい一通り』 がオールインワンで揃う。
  • 強みは ` Postgres そのものを使える』 こと。Drizzle / Prisma などの普通の ORM や、`Row Level Security』 でアプリ層の認可ロジックを DB に寄せられるのが特徴。
  • 制約は ` 基本は Postgres ベースのため、Firebase の `何でも非構造化』 的な柔軟さは持たない』。`SQL を書ける / 書きたいか』 が向き不向きの分水嶺になる。

Supabase ってよく聞くけど、Firebase と何が違うの? 自分で Postgres を建てるのと比べて何が嬉しい? 認証や Storage まで入っているって本当?』 ── 2020 年に登場した Supabase は、OSS な Firebase 代替』 として急速に存在感を増し、2026 年現在は中小規模スタートアップから個人開発まで広く採用されています。

ざっくり言うと、Supabase は PostgreSQL を中心に、Web / モバイル開発で必要なバックエンド機能をオールインワンで提供する BaaS』</strong> です。 普通の Postgres』 がそのまま使えるため、`Drizzle / Prisma / 生 SQL のどれでもアクセスできる』 という柔軟さが Firebase との大きな違いになります。

この記事では、2026 年 5 月時点の Supabase をベースに、提供機能・Firebase との比較・採用判断・落とし穴 を整理します。 仕様は活発に変化しているので、最終確認は 公式ドキュメント を見るのが安全です。

Supabase が提供する機能

Supabase の主要機能を1枚で見渡すと、`バックエンドに欲しいもの一式』 が揃っているのが分かります。

機能 中身 代表用途
Postgres DB 普通の PostgreSQL(拡張多数) 業務データ全般
Auth メール / OAuth / Magic Link / Passkey / MFA ユーザー認証 + RLS と統合
Storage S3 互換オブジェクトストレージ 画像 / 動画 / PDF / 添付ファイル
Realtime 変更通知 + Broadcast + Presence 共同編集 / チャット / カウンタ
Edge Functions Deno 製のサーバレス 外部 API 連携 / Webhook
Vector(pgvector) ベクトル検索拡張 RAG / 類似検索 / レコメンド
Cron / Queues 定期実行 + メッセージキュー 定期バッチ / 非同期処理
Studio ブラウザ UI(テーブル / SQL / Auth 管理) 運用 / 確認

Postgres + 認証 + Storage + Realtime + Edge Functions』 の組み合わせが、小〜中規模 SaaS なら Supabase だけで完結する』 と言われる根拠です。

仕組みの肝 — Row Level Security(RLS)

Supabase の最大の特徴は、`認可ロジックを DB の Row Level Security(RLS)に寄せる』 設計です。

-- 自分の投稿だけ読める / 書ける
create policy "Users can read own posts"
on posts for select
using (auth.uid() = user_id);

create policy "Users can insert own posts"
on posts for insert
with check (auth.uid() = user_id);

RLS とは

PostgreSQL 標準の機能で、` 行単位でアクセス制御SQL でかける仕組み。`このユーザーはこの行を読める / 書ける / 削除できる』 を ポリシーとして書く。

なぜ Supabase で重要か

Supabase は ` クライアントから直接 DBSQL を投げる』 のが基本構造。`API サーバを書かなくていい』 代わりに、`認可DB 側で確実にかける』 必要がある。RLS がその要。

`auth.uid()』

Supabase Auth で認証済みのユーザー ID を返す関数。`このユーザーが見える行はどれか』 を書くときの主役。

設計の利点

` API を書かなくても、ポリシーで安全性を担保』 できる。`API ごとに認可チェック忘れた』 という事故を構造的に減らせる。

`認可ロジックを DB レベルで一元管理』 する設計は、Supabase で開発するときの一番大きな思想転換になります。

基本の書き方 — クライアントから DB へ直接アクセス

最小例で雰囲気をつかみます。

import { createClient } from '@supabase/supabase-js';

const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);

// 取得
const { data: posts } = await supabase
  .from('posts')
  .select('*')
  .eq('user_id', userId);

// 挿入
const { data: newPost } = await supabase
  .from('posts')
  .insert({ title: 'こんにちは', body: '初投稿です' })
  .select()
  .single();

// 認証
const { data: { user } } = await supabase.auth.signInWithPassword({
  email,
  password,
});

// ストレージ
await supabase.storage
  .from('avatars')
  .upload(`${user.id}/avatar.png`, file);

クライアント SDK

` createClient』 で `URL + 公開鍵』 だけでクライアントが作れる。あとは SQL ライクな API でテーブル操作 ができる。

直接 SQL も可能

`supabase.rpc('関数名', { args })』 で ` PostgreSQL のストアド関数』 を呼べる。複雑な処理は DB 側に置いて RPC で呼ぶ設計が綺麗。

フレームワーク統合

`@supabase/auth-helpers-nextjs』 などで Next.js / SvelteKit / Remix から自然に使える。`サーバとクライアントで同じ API』 を意識せず使い分けできる。

Realtime 機能

` supabase.channel('posts').on('postgres_changes', ...)』 で行の変更を購読できる。`チャット』 `共同編集』 系の機能が `WebSocket を自分で扱う』 必要なく書ける。

`バックエンドを書かなくても、フロントから DB を直接叩いてアプリができる』 のが Supabase の体験を端的に表す部分です。

Firebase との比較

`Supabase と Firebase、どちらを選ぶ?』 を表で並べます。

Firebase Supabase
DB Firestore(NoSQL)/ Realtime DB PostgreSQL(SQL)
クエリの柔軟さ 制約あり(複合インデックス必須) SQL の柔軟さそのまま
認可 Security Rules(独自 DSL) Row Level Security(SQL)
認証 充実(Firebase Auth) 充実(Supabase Auth)
Realtime 強い(Realtime DB が本職) 標準サポート
Storage あり(Cloud Storage) あり(S3 互換)
関数 / サーバレス Cloud Functions Edge Functions(Deno)
OSS / セルフホスト ×(Google 専属) ○(自前ホスティング可)
ベンダーロックイン 強い 弱い(Postgres は普通の RDB)
料金感 無料枠あり、スケールで増える 無料枠あり、有料 $25/月から

要点は 非構造化と Google エコシステムなら Firebase、SQL とロックイン回避なら Supabase』</strong> という棲み分けです。既存の SQL 知識を活かしたい』 `Postgres を使い続けたい』 チームは Supabase が圧倒的に楽です。

いつ Supabase を選ぶか

採用判断の目安を整理します。

向いている

MVP / スタートアップ初期、② SaaS / Web アプリ全般、③ 個人開発(無料枠が手厚い)、④ AI 連携(`pgvector』 で RAG)、⑤ Postgres 経験がある / これから使いたいチーム。

向かない / 慎重に

① 既に Firebase で大量に動いている案件、② スケーラビリティ要件が極端(数百万 RPS など)、③ 厳密な RDB 設計を回避したい初期 MVP、④ Google エコシステム(GCP)に深く依存する案件。

マネージドかセルフホストか

` まずクラウド版』 が無難。`データ主権 / ロックイン回避 / 大量データ』 の要件が出てから、`セルフホストへ移行可能』 というオプションが効く。

Vercel / Next.js との相性

Vercel + Supabase は事実上の定番スタック。`@supabase/ssr』 で RSCServer Actions と自然に連携する。

`小さく始めて、必要に応じてセルフホストに逃げられる』 安心感が、Supabase を選ぶ大きな理由のひとつです。

どこで詰まりやすいか

便利な反面、現場で踏みやすい注意点もあります。

①RLS の罠

` ポリシーを書き忘れた → 誰でも全部見られる』 系の事故が起きやすい。` テーブルを作ったら必ず enable Row Level Security』 を運用ルールにする。`anon』 ロールで Studio から見えるかをチェック。

公開鍵と service_role キー

`anon』 キーはクライアント公開 OK、`service_role』 キーは絶対にクライアントに渡さない。`Edge Functions / サーバ専用』。`誤って GitHub にコミット』 が起きないよう、最初の段取りを丁寧に。

③ Realtime の制限

` 同時接続数』 `1チャネルあたりのメッセージレート』 などプランごとに制限がある。`チャットアプリでスケールしたら有料プランへ』 を最初から見据えておく。

④ 移行ツール

`supabase migration』 で SQL マイグレーション管理できるが、`schema をどこを真実とするか』 はチームで早めに決める(Studio の手動編集 vs CLI 駆動)。

`Supabase は便利だが、RLS と service_role キーの扱いだけは最初に身につける必要がある』 のが現場の声です。

AI 時代の Supabase

AI 連携の文脈で Supabase は強い相性を持ちます。

pgvector でベクトル検索

PostgreSQL 拡張の ` pgvector』 が標準で使える。`埋め込みベクトルを DB に保存 → 類似検索』 という RAG のパイプラインを、Supabase 内で完結できる。

Vercel + Next.js + Supabase 構成

` v0 で UI 生成 → Next.js + RSC → Supabase で DB / Auth / Vector』 が AI 時代の MVP の事実上の定番ルート。

Storage で AI 生成物を保管

` AI が生成した画像 / PDF / 音声』 を `Storage に保存 → 認証付き URL でユーザーに配信』 が自然に書ける。

Edge Functions で AI 呼び出し

Deno ベースの Edge Functions から OpenAI / Anthropic を呼び出し、結果を Postgres に保存。`サーバを別途立てない AI 連携』 ができる。

AI 時代の個人開発 / スタートアップ』 で、Supabase が バックエンドのデフォルト選択肢』 のひとつになっている流れがあります。

Supabase に関するよくある質問

Q. Supabase は本当に Firebase の代替になりますか?

A. 多くの SaaS / Web アプリでは代替になる』</strong>のが現実的な答えです。非構造化 + Google エコシステム』 が必須なら Firebase ですが、`SQL を使い続けたい』 ケースでは Supabase の方が自然です。

Q. Supabase はベンダーロックインが心配ないですか?

A. Firebase と比べると圧倒的に少ない』</strong>です。PostgreSQL そのもの』 を使っているので、pg_dump で吸い出して別の Postgres ホスティングに移す』 が物理的に可能。セルフホスト版』 も公式に提供されています。

Q. Supabase だけでアプリが完結しますか?

A. 小〜中規模なら十分完結する』</strong>です。Auth / DB / Storage / Realtime / Edge Functions / Vector』 が揃っているので、バックエンドを別途書く必要』 はほぼなくなります。スケール時に 特定機能だけ別基盤に逃がす』 という選択肢もあります。

Q. RLS が複雑そうで心配です。

A. 最初は1テーブル1ポリシーから始める』</strong>のが定石です。auth.uid() = user_id』 のような単純なものから入り、複雑な権限ロジックは Postgres の関数(security definer』)に逃がす』 のがチームで運用しやすいです。

Q. Drizzle / Prisma と Supabase は組み合わせられますか?

A. はい、 Supabase の Postgres は普通の Postgres』</strong>なので、Drizzle / Prisma / Kysely などのお気に入りの ORM がそのまま使えます。Supabase SDK は使わず、ORM だけで使う』 という構成も普通にあります。

Q. Supabase の料金体系は?

A. 無料プランは小規模個人開発に十分な範囲、Pro プランは月 $25 で本格的な SaaS スタートに十分。データベース容量 / 帯域 / Auth ユーザー数 / Storage 容量』 の組み合わせで超過分が課金。大規模化したら有料プラン or セルフホスト』 という二段構え。

Q. Supabase 学習の最短ルートは?

A. ① 公式 Quickstart で Next.js + Supabase Auth + DB』 を1時間で動かす、② RLS』 を1テーブルで書いてみる、③ Realtime』 で行変更を購読する、の3段階が王道です。Supabase は触ると一気にわかる』 タイプなので、まず動かしてみるのが近道です。

参考リンク

あとで見返すならここで保存

読み終わったあとに残しておきたい記事は、お気に入りからまとめて辿れます。