プログラミングHUB
language6分で読めます

Supabase入門|オープンソースのFirebase代替で始めるバックエンド開発

Supabaseの基礎を初心者向けに解説。PostgreSQLベースのデータベース、認証、ストレージ、リアルタイム機能の使い方を実例付きで紹介します。

関連記事:データベース設計入門

Supabaseは、オープンソースのBaaS(Backend as a Service)です。Firebaseと同様のバックエンド機能を提供しますが、内部ではPostgreSQLを使用しているため、リレーショナルデータベースの知識がそのまま活かせます。

SupabaseとFirebaseの違い

項目SupabaseFirebase
データベースPostgreSQL(RDB)Firestore(NoSQL)
クエリSQL対応独自クエリAPI
オープンソースはいいいえ
セルフホスト可能不可
リアルタイムありあり
料金モデル予測しやすい従量課金中心

セットアップ

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

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

データベース操作

SQLベースなので、テーブル作成はSQLで行います。

CREATE TABLE posts (
  id SERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  content TEXT,
  published BOOLEAN DEFAULT false,
  created_at TIMESTAMP DEFAULT NOW()
);

データの追加・取得

// データの追加
const { data, error } = await supabase
  .from('posts')
  .insert({ title: 'Supabase入門', content: '基本を学ぼう' });

// データの取得
const { data: posts } = await supabase
  .from('posts')
  .select('*')
  .eq('published', true)
  .order('created_at', { ascending: false });

// リレーション付き取得
const { data: postsWithAuthor } = await supabase
  .from('posts')
  .select('*, author:users(name, email)');

認証

// メール・パスワードでサインアップ
const { data, error } = await supabase.auth.signUp({
  email: '[email protected]',
  password: 'password123',
});

// ログイン
const { data, error } = await supabase.auth.signInWithPassword({
  email: '[email protected]',
  password: 'password123',
});

// Googleログイン
const { data, error } = await supabase.auth.signInWithOAuth({
  provider: 'google',
});

Row Level Security(RLS)

Supabaseの大きな特徴がRLSです。データベースレベルでアクセス制御ができます。

Prisma ORM入門も参考にしてください。

-- RLSを有効化
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;

-- 自分の投稿だけ読める
CREATE POLICY "Users can read own posts"
  ON posts FOR SELECT
  USING (auth.uid() = user_id);

-- 公開された投稿は誰でも読める
CREATE POLICY "Anyone can read published posts"
  ON posts FOR SELECT
  USING (published = true);

ストレージ

// ファイルのアップロード
const { data, error } = await supabase.storage
  .from('avatars')
  .upload('user1/avatar.png', file);

// 公開URLの取得
const { data } = supabase.storage
  .from('avatars')
  .getPublicUrl('user1/avatar.png');

料金体系

プラン月額主な制限
Free$0500MB DB、1GB Storage
Pro$258GB DB、100GB Storage

無料プランでも個人開発には十分な容量です。

Supabaseが向いている場面

  • SQLやリレーショナルデータベースの知識がある方
  • ベンダーロックインを避けたい場合
  • 複雑なクエリ(JOIN、集計)が必要なアプリ
  • 将来的にセルフホストの可能性がある場合
PR楽天ブックス プログラミング書籍楽天ブックスでプログラミング入門書を探す公式サイトで詳細を見る※本コンテンツはアフィリエイト広告を含みます。表示内容は各社公式サイトをご確認ください。

まとめ

Supabaseは、SQLの知識がある方にとって非常に使いやすいBaaSです。Firebaseと比較してデータの柔軟性が高く、セルフホストも可能なため、長期的なプロジェクトにも適しています。


あわせて読みたい

あなたに合う次の選び方を見る

30秒で診断してみる
#Supabase#PostgreSQL#BaaS#Web開発#バックエンド

関連記事