メインコンテンツへスキップ
Think You Lab
ブログログイン無料で始める
トップ/ブログ/tool-review
SupabaseFirebasePostgreSQL個人開発BaaS

Supabase とは何か — Firebase との違いと、個人開発で選ぶべき理由

オープンソース版 Firebase と呼ばれる Supabase の特徴・料金・Firebase との違いを解説。PostgreSQL ベースで RLS が使える理由、個人開発での実用例まで網羅。

2026-04-07·約9分

LINE 公式アカウント

使ってみた正直レビューをLINEで先行公開

目次
  • Supabase とは
  • Firebase との違い
  • Supabase の主要機能
  • 1. Database (PostgreSQL)
  • 2. Auth
  • 3. Row Level Security (RLS)
  • 4. Realtime
  • 5. Storage
  • 6. Edge Functions
  • Supabase の料金(2026年現在)
  • 個人開発での実用例
  • 例1: 会員制 LMS
  • 例2: ブックマークアプリ
  • 例3: フォーム送信ログ
  • Supabase を使い始める手順
  • つまずきがちなポイント
  • 1. RLS を有効化したのにポリシーがない → 全アクセス拒否
  • 2. service_role キーをフロントで使ってしまう
  • 3. RLS のデバッグが難しい
  • まとめ

目次

  • Supabase とは
  • Firebase との違い
  • Supabase の主要機能
  • 1. Database (PostgreSQL)
  • 2. Auth
  • 3. Row Level Security (RLS)
  • 4. Realtime
  • 5. Storage
  • 6. Edge Functions
  • Supabase の料金(2026年現在)
  • 個人開発での実用例
  • 例1: 会員制 LMS
  • 例2: ブックマークアプリ
  • 例3: フォーム送信ログ
  • Supabase を使い始める手順
  • つまずきがちなポイント
  • 1. RLS を有効化したのにポリシーがない → 全アクセス拒否
  • 2. service_role キーをフロントで使ってしまう
  • 3. RLS のデバッグが難しい
  • まとめ

Supabase とは

Supabase は、PostgreSQL をベースにしたオープンソースの BaaS(Backend as a Service)だ。

「オープンソース版 Firebase」と紹介されることが多い。Firebase と同じく「DB・認証・ストレージ・関数」が一通り揃っているが、決定的な違いが2つある。

  1. DB が PostgreSQL — Firestore のような NoSQL ではなく、SQL でクエリが書ける
  2. 完全 OSS — セルフホスト可能。ベンダーロックインが軽い

個人開発で「Firebase の代わりに」「次のサービスで」と選ばれることが急速に増えている。


Firebase との違い

| 項目 | Firebase | Supabase | |---|---|---| | DB | Firestore (NoSQL) | PostgreSQL (SQL) | | 認証 | Firebase Auth | Supabase Auth (GoTrue) | | リアルタイム | Realtime DB | Realtime (Postgres LISTEN/NOTIFY) | | ストレージ | Cloud Storage | Storage (S3 互換) | | 関数 | Cloud Functions | Edge Functions (Deno) | | OSS | × | ○ | | セルフホスト | × | ○ | | 料金(無料枠) | 寛容 | 寛容(500MB DB + 50K MAU) |

最大の違いは 「SQL が使えるかどうか」 だ。Firestore の NoSQL は柔軟だが、複雑なクエリ(JOIN・集計)が苦手で、データ構造の変更にも弱い。一方 PostgreSQL なら JOIN も GROUP BY も WINDOW も自由に書ける。リレーショナルデータを扱うアプリでは Supabase が圧倒的に有利だ。


Supabase の主要機能

1. Database (PostgreSQL)

完全な PostgreSQL が使える。バージョンは 15 以上で、pg_trgm(全文検索)・pgvector(ベクトル検索)・pg_cron(スケジューラ)など実用的な拡張機能も使える。

-- ベクトル検索(埋め込み)も標準で使える
CREATE TABLE documents (
  id uuid PRIMARY KEY,
  content text,
  embedding vector(1536)
);
 
-- 類似ドキュメント検索
SELECT * FROM documents
ORDER BY embedding <=> $1::vector
LIMIT 5;

2. Auth

メール・パスワード、Magic Link、OAuth(Google / GitHub / Apple など)に対応。クライアントから1行で呼び出せる:

// Magic Link 送信
await supabase.auth.signInWithOtp({ email });
 
// セッション取得
const { data: { user } } = await supabase.auth.getUser();

Firebase Auth と違って、ユーザー情報は通常の auth.users テーブルとして PostgreSQL に保存される。これが後述する RLS と組み合わさって強力に機能する。

3. Row Level Security (RLS)

Supabase の最大の魅力が RLS だ。

「ユーザー A が自分のデータだけアクセスできる」というセキュリティルールを DB レベル で記述できる。

-- bookmarks テーブルの RLS 有効化
ALTER TABLE bookmarks ENABLE ROW LEVEL SECURITY;
 
-- ポリシー: 自分の bookmarks だけ SELECT 可能
CREATE POLICY "users can read own bookmarks"
  ON bookmarks FOR SELECT
  USING (auth.uid() = user_id);

これがあることで、フロントエンドから直接 Supabase に SELECT を投げても、他人のデータは絶対に見えない。バックエンド API を書かずに済む場面が大幅に増える。

4. Realtime

PostgreSQL の LISTEN/NOTIFY を使ったリアルタイム同期が標準搭載されている。チャットや通知機能を作るときに便利だ。

supabase
  .channel('messages')
  .on('postgres_changes',
      { event: 'INSERT', schema: 'public', table: 'messages' },
      (payload) => console.log('New message:', payload.new))
  .subscribe();

5. Storage

S3 互換のオブジェクトストレージ。画像・動画・PDF などを保存できる。RLS と連携して、「自分がアップロードしたファイルだけ表示」 といった制御もできる。

6. Edge Functions

Deno ランタイムで動くサーバーレス関数。Stripe Webhook の受け口や、特定の処理を切り出すのに便利。


Supabase の料金(2026年現在)

| プラン | 月額 | DB | 帯域 | MAU | |---|---|---|---|---| | Free | $0 | 500MB | 5GB | 50,000 | | Pro | $25 | 8GB | 250GB | 100,000 | | Team | $599 | カスタム | カスタム | カスタム |

Free プランの 500MB DB + 50K MAU は、個人開発のサービスなら十分すぎる枠だ。最初の1万ユーザーまでは無料で耐えられる規模感がある。

Firebase との比較では、Spark プラン(無料)はリクエスト数で制限がかかる一方、Supabase は MAU で制限される。SaaS や会員制サービスを作るなら Supabase の方が予測しやすい。


個人開発での実用例

例1: 会員制 LMS

[ブラウザ] → [Next.js] → [Supabase Auth + DB + RLS]

会員ログイン・コース閲覧履歴・進捗管理を Supabase ですべて完結できる。バックエンド API を書かずに、Next.js から直接 Supabase を叩く構成が現代的だ。

例2: ブックマークアプリ

X(Twitter)の保存ツイートを Supabase に保存し、ベクトル検索(pgvector)で類似ツイートを推薦する——という構成が30分で組める。

CREATE TABLE bookmarks (
  id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id uuid REFERENCES auth.users(id),
  url text NOT NULL,
  title text,
  embedding vector(1536),
  created_at timestamptz DEFAULT now()
);

例3: フォーム送信ログ

問い合わせフォームの内容を Supabase に保存し、Edge Function で Slack 通知を飛ばす——というシンプルな構成も得意だ。


Supabase を使い始める手順

# 1. プロジェクト作成(supabase.com でサインアップ)
 
# 2. CLI インストール
npm install -g supabase
 
# 3. プロジェクト連携
supabase login
supabase link --project-ref <your-project-ref>
 
# 4. ローカル開発環境(Docker 必須)
supabase start
 
# 5. マイグレーション作成
supabase migration new create_bookmarks

マイグレーションファイルは supabase/migrations/ に保存される。Git で管理することで「DB 構造の変更履歴」もコードとして追跡できる。


つまずきがちなポイント

1. RLS を有効化したのにポリシーがない → 全アクセス拒否

ALTER TABLE ... ENABLE ROW LEVEL SECURITY; を書いたら、必ず CREATE POLICY も書く。ポリシーがないテーブルは、認証済みユーザーでも一切アクセスできない。

2. service_role キーをフロントで使ってしまう

Supabase には2種類のキーがある:

  • anon キー: フロント用。RLS が効く。
  • service_role キー: バックエンド用。RLS をバイパスできる全権限。

service_role キーは絶対にフロントエンドコードに含めてはいけない。漏れると DB が丸見えになる。

3. RLS のデバッグが難しい

「なぜか SELECT が空になる」場合は、99% RLS の設定漏れだ。Supabase Dashboard の SQL Editor で SET ROLE authenticated; を実行してから SELECT を試すと、本番と同じ条件で確認できる。


まとめ

  • Supabase は PostgreSQL ベースの OSS BaaS
  • Firebase の代替として、特に SQL を使いたい個人開発者 に最適
  • RLS により「フロントから直接 DB を叩く」設計が安全に成立する
  • Free プランで 50K MAU まで耐える

Firebase 系サービスを使ってきた人がスムーズに移行できるし、最初からリレーショナルなデータ設計をしたい人にとっては「これしかない」という選択肢になっている。


Think You Lab では Next.js + Supabase + Stripe を使った会員制サービスの構築を実践形式で学べるコースを提供している。Supabase Auth + RLS の設定から Stripe Webhook での決済連携まで、実際に動くコードを写経しながら学べる構成だ。

→ Think You Lab のコースを見る

LINE 公式アカウント

Supabase × Next.js の実装テンプレをLINEで配布中

R

Rikuto (LAB)

非エンジニアが Claude Code × n8n × Supabase で副業システムを作り続ける実験記。 失敗も含めたリアルな一次情報を発信しています。

THINK YOU LAB 運営

関連記事

  • Supabase RLS(行レベルセキュリティ)の書き方入門 — 実テーブルのポリシー例つき

    2026-04-15

  • Next.js App Router の middleware で Supabase 認証ガードを作る — 実装コード全公開

    2026-04-15

  • Stripe Checkout を Next.js Server Action で実装する — Supabase Auth 連携つき

    2026-04-15

← ブログ一覧へ
X でシェアLINE でシェア
← 前の記事ReactエンジニアがLMS用動画テンプレを3時間で作った: Remotion × Claude Code の全手順
次の記事 →n8n × Claude で AI 自動化フローを作る — コードなしで業務を自動化する完全ガイド

目次

  • Supabase とは
  • Firebase との違い
  • Supabase の主要機能
  • 1. Database (PostgreSQL)
  • 2. Auth
  • 3. Row Level Security (RLS)
  • 4. Realtime
  • 5. Storage
  • 6. Edge Functions
  • Supabase の料金(2026年現在)
  • 個人開発での実用例
  • 例1: 会員制 LMS
  • 例2: ブックマークアプリ
  • 例3: フォーム送信ログ
  • Supabase を使い始める手順
  • つまずきがちなポイント
  • 1. RLS を有効化したのにポリシーがない → 全アクセス拒否
  • 2. service_role キーをフロントで使ってしまう
  • 3. RLS のデバッグが難しい
  • まとめ
Think You Lab
このブログについて料金プランプライバシーポリシーお問い合わせ特定商取引法ログイン

© 2026 Think You Lab