ImagInAI
第3回 開発ツール入門シリーズ

Supabaseとは何か?
初心者向け完全ガイド

データベース・認証・ストレージ・APIが全部入り。Firebaseの強力なオープンソース代替として注目される次世代バックエンドを解説。

📅 2025年 ⏱ 約12分で読める 🔰 初心者向け

📚 このシリーズの記事

Supabaseは、データベース・ユーザー認証・ファイルストレージ・リアルタイム通信・APIが全てひとつにまとまったバックエンドサービス(BaaS)です。2020年にアメリカで設立され、オープンソースで開発されています。

Googleの「Firebase」と似た位置づけですが、SupabaseはPostgreSQL(本格的なリレーショナルDB)を採用している点が大きな違いです。

🔑 一言でいうと:「バックエンドを自分で構築しなくても、データの保存・ユーザー管理・API・認証が全部使えるサービス」です。フロントエンドエンジニアが一人でフルスタックアプリを作れるようになります。

Supabase が提供するもの
🗄️
PostgreSQL
本格データベース
🔐
Auth
認証・ログイン
🗂️
Storage
ファイル保存
⚡️
Realtime
リアルタイム同期
🔌
REST/GraphQL
自動API生成
↓ あなたのアプリから直接使える
📱
Next.js / React
Vercelでデプロイ
📲
スマホアプリ
iOS / Android
🖥️
デスクトップ
Electronなど

Supabaseは1つのサービスで以下の機能を全て提供します。それぞれ単体のサービスとして独立して使うこともできます。

🗄️

PostgreSQL データベース

本格的なリレーショナルデータベース。GUIのTable Editorでノーコードでもテーブル作成・データ操作できる。

🔐

Authentication(認証)

メール/パスワード・Google・GitHub・Twitter等のSNSログイン、電話番号認証が全て無料で使える。

🗂️

Storage(ストレージ)

画像・動画・PDF等のファイルを保存できるS3互換ストレージ。アクセス権限の細かな設定も可能。

⚡️

Realtime(リアルタイム)

データベースの変更をリアルタイムで検知してブラウザに通知。チャットアプリや共同編集に最適。

🔌

Auto-generated API

テーブルを作るだけでRESTful API・GraphQLが自動生成される。バックエンドコードなしでデータ操作可能。

⚙️

Edge Functions

Deno(TypeScript)でサーバーレス関数を書ける。StripeのWebhook処理・メール送信・外部API連携に便利。

🛡️

Row Level Security

「自分のデータは自分だけが読める」のようなセキュリティルールをSQLで設定できる強力な機能。

🔍

ベクトル検索(AI対応)

pgvector拡張でベクトルデータを保存・検索できる。ChatGPT等を使ったAIアプリ開発に対応。

「Firebase(Google)と何が違うの?」という疑問を持つ方は多いです。どちらもBaaSですが、いくつか重要な違いがあります。

項目 🟢 Supabase 🔶 Firebase
データベースの種類 PostgreSQL(SQL) Firestore(NoSQL)
SQLが使える ✓ フルサポート ✗ 使えない
オープンソース ✓ 完全公開 ✗ クローズド
自前ホスティング ✓ セルフホスト可 ✗ Googleのみ
複雑なクエリ ✓ JOINなど全対応 △ 制限あり
リアルタイム機能 ✓ あり ✓ 非常に強力
無料プランの制限 比較的緩め やや厳しめ
ベンダーロックイン 低い(移行しやすい) 高い

💡 選び方のポイント:リレーショナルデータ・SQLに慣れているならSupabase、モバイルアプリでリアルタイムを最優先するならFirebaseが向いています。

JavaScript(TypeScript)からSupabaseを使う例を紹介します。直感的で読みやすいのが特徴です。

app.ts
// 1. Supabaseクライアントの初期化
import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  'https://xxxx.supabase.co',
  'your-anon-key'
)

// 2. データを取得する(SELECT)
const { data, error } = await supabase
  .from('posts')
  .select('*')
  .eq('user_id', userId)

// 3. データを挿入する(INSERT)
await supabase.from('posts').insert({
  title: '初めての投稿',
  content: 'Hello, Supabase!',
  user_id: userId
})

// 4. Google認証(ログイン)
await supabase.auth.signInWithOAuth({
  provider: 'google'
})

⚠️ 注意:本番環境では必ず「Row Level Security(RLS)」を有効にしてください。無効のままだと誰でも全データにアクセスできる状態になります。

Supabaseは学習・個人プロジェクトに十分な無料プランがあります。ただし、無料プランは7日間アクティビティがないとプロジェクトが一時停止されます(簡単に再起動可能)。

プラン 料金 主な制限・特徴
Free $0 DB 500MB・ストレージ 1GB・帯域 5GB/月・Edge Functions 500,000回/月。学習・個人開発に最適。2プロジェクトまで。
Pro $25/月 DB 8GB・ストレージ 100GB・帯域 250GB/月。本番運用向け。一時停止なし。チーム機能あり。
Team $599/月〜 大規模チーム向け。SOC2対応・高度なセキュリティ・SLA保証。
Enterprise 要問い合わせ 専用サポート・カスタム制限・オンプレミス対応も相談可能。

この3つを組み合わせると、サーバーなし・ほぼ無料でフルスタックWebアプリを作れます。多くのスタートアップや個人開発者が採用しているモダンな構成です。

🐙

GitHub

コードの保存・バージョン管理・チームコラボ。全ての起点。

Vercel

フロントエンドの自動デプロイ・公開・CDN。GitHubとシームレスに連携。

Supabase

データベース・認証・API・ストレージ。バックエンドを全て担当。

🚀 実際の流れ:① Supabaseでデータベース設計 → ② Next.jsでフロント開発 → ③ GitHubにpush → ④ VercelがGitHubを監視して自動デプロイ → ⑤ 完成!全て無料でできます。

✅ この記事のまとめ

Supabaseはデータベース・認証・ストレージ・API・リアルタイムが全部入りのオープンソースBaaS

本格的なPostgreSQL(SQL)を使えるため、Firebaseより複雑なデータ設計に向いている

GitHub × Vercel × Supabaseの組み合わせで、ほぼ無料でフルスタックアプリが作れる

JavaScriptクライアントが直感的で初心者にも使いやすい。まず無料プランで試してみよう

本番運用では必ずRow Level Security(RLS)を設定すること!セキュリティの要