個人開発 × AI × SaaS

Supabaseの使い方|個人開発での始め方と料金プラン

本記事にはプロモーション(広告)が含まる場合があります。

Supabaseってどう使えばいいの?
個人開発のバックエンドとして本当に使えるのか知りたい!

個人開発でアプリやSaaSを作ろうとすると、多くの人がバックエンドの構築で手が止まります。

この記事では、Supabaseがどんなサービスなのかを整理したうえで、料金プランの選び方から、データベース・認証・ストレージを使った実装手順までを解説します。

結論から言うと、個人開発の初期段階であれば、Supabaseは無料のままかなりの機能を使い切れます。

ポイントは、Freeプランの制限を先に把握しておくことと、公開前にRLS(行レベルセキュリティ)の設定を済ませておくことです。

この記事でわかること

  • Supabaseの基本機能とFirebaseとの違い
  • 料金プランの選び方とProプランへの切り替えタイミング
  • データベース・認証・ストレージの実装手順
  • 個人開発で注意すべきセキュリティと運用のポイント
著者について

🧑‍💻

Web Engineer & AI Developer

ITエンジニア歴15年超。設計・実装・運用まで一気通貫でこなすエンジニア。最近はAIエージェント開発・今後のキャリアを軸に発信中。

AIエージェント開発
フルスタックエンジニア
インフラ構築・運用

Supabaseとは?個人開発に向いている理由

まずは、Supabaseがどんなサービスで、なぜ個人開発者に選ばれているのかを整理します。

ここでは、以下の内容について詳しく解説します。

Supabaseの特徴と選ばれる理由

  • Supabaseの基本機能(DB・認証・ストレージ・Edge Functions)
  • Firebaseとの違い
  • 個人開発でSupabaseが選ばれる理由

Supabaseの基本機能(DB・認証・ストレージ・Edge Functions)

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

プロジェクトを1つ作成すると、専用のPostgreSQLデータベースが立ち上がり、そこにテーブルを作るだけでREST APIとGraphQL APIが自動生成されます。

認証機能(Auth)では、メール・パスワード認証に加えて、GoogleやGitHubなど20以上のソーシャルログインに対応しています。

ストレージ(Storage)はS3互換のオブジェクトストレージで、画像のアップロードやCDN配信、簡単なリサイズ処理までカバーします。

さらに、TypeScript(Deno)で書けるサーバーレス関数のEdge Functionsや、データベースの変更をリアルタイムで検知するRealtimeも用意されています。

つまりSupabaseは、個人開発でバックエンドに必要な要素をひとつのダッシュボードにまとめてくれるサービスだとイメージするとわかりやすいです。

Firebaseとの違い

個人開発でSupabaseと必ず比較されるのが、Googleが提供するFirebaseです。

最も大きな違いは、データベースの種類にあります。

FirebaseのFirestoreはNoSQLで、ドキュメント同士の関連(リレーション)を表現するのが苦手です。

一方、SupabaseはPostgreSQLなので、SQLのJOINを使って複数テーブルのデータを直感的に組み合わせられます。

ユーザー・投稿・コメントのように関連するデータを扱うアプリでは、この差が実装のしやすさに直結します。

また、Supabaseはオープンソースなので、将来的に自分のサーバーへ移行する選択肢も残せます。

Firebaseは便利な反面、Google独自の仕組みに依存する部分が多く、乗り換えのハードルが高くなりがちです。

個人開発でSupabaseが選ばれる理由

個人開発の現場でSupabaseが選ばれやすいのには、はっきりした理由があります。

ひとつ目は、無料枠が大きいことです。

月間アクティブユーザー5万人、データベース500MBまで無料で使えるので、リリース直後のアプリであれば費用を気にせず運用できます。

ふたつ目は、オープンソースであることの自由度です。

Supabase社のクラウドを使うことも、自分でホスティングすることもでき、サービスの将来性に不安を感じにくい構造になっています。

みっつ目は、公式MCPサーバーが提供されていることです。

Claude CodeやCursorといったAIエージェントからSupabaseのプロジェクトへ直接接続し、テーブル作成やSQL実行、型定義の生成までAI側に任せられます。

個人開発でSupabaseが選ばれる理由

  • 無料枠が大きく、リリース初期は費用がかからない
  • オープンソースで自己ホストへの移行余地も残せる
  • 公式MCPでAIエージェントと直接連携できる

アイデア自体がまだ固まっていない方は、個人開発SaaSのアイデア見つけ方を先に読んでおくと、バックエンド選定の前段階を整理しやすくなります。

Supabaseの特徴を踏まえたうえで、次の章では気になる料金プランを具体的に見ていきましょう。

Supabaseの機能構成図解

Supabaseの料金プランを個人開発目線で解説

Supabaseを検討するとき、多くの人が気になるのが料金プランの実際の数字だと思います。

ここでは、以下の内容について詳しく解説します。

Supabaseの料金プランの選び方

  • Freeプランでできることと制限
  • Proプランに切り替えるタイミング
  • 料金プラン比較表

Freeプランでできることと制限

SupabaseのFreeプランは、クレジットカードの登録なしで今すぐ使い始められます。

含まれる範囲は、データベース500MB、ファイルストレージ1GB、月間アクティブユーザー5万人、egress(外部への通信量)5GBまでです。

個人開発の検証段階やベータ版のリリースであれば、この範囲で困ることはほとんどありません。

ただし、自動バックアップは含まれておらず、プロジェクトを1週間操作しないと一時停止する仕様がある点には注意が必要です。

Freeプランは「お試し用の劣化版」ではなく、個人開発の立ち上げ期をまるごとカバーできる実用的な無料枠だと捉えてください。

Proプランに切り替えるタイミング

Proプランは月額25ドルで、データベース8GB、ストレージ100GB、月間アクティブユーザー10万人、egress250GBまで含まれます。

加えて、日次バックアップが7日分保存される点が、Freeプランとの大きな違いです。

切り替えの目安は、ユーザー数やデータ量がFreeプランの上限に近づいたタイミングです。

もうひとつの目安は、実際に収益が発生し、データ消失時の影響が無視できなくなったタイミングです。

バックアップなしで本番運用を続けるのは、個人開発であってもリスクが大きい選択です。

切り替えを先延ばしにするリスク

  • 自動バックアップがないまま本番データを運用し続ける
  • MAUやDB容量の上限に気づかず機能が制限される
  • ユーザーが増えた後に慌てて移行し、切り替え作業が後手に回る

料金プラン比較表

4つのプランの違いを、個人開発で気になる項目に絞って表にまとめました。

プラン 月額 DB容量 MAU バックアップ
Free $0 500MB 50,000人 なし
Pro $25 8GB〜 100,000人〜 日次7日分
Team $599 Proと同じ Proと同じ 日次14日分
Enterprise 要問い合わせ カスタム カスタム カスタム対応

個人開発であれば、まずFreeプランで作り切り、必要になった時点でProプランに移行する流れで問題ありません。

料金プランを踏まえたところで、次はいよいよ実際の使い方に進みましょう。

Supabaseの使い方|個人開発アプリを作る手順

ここからは、実際にSupabaseを使って個人開発アプリのバックエンドを組み立てる流れを解説します。

ここでは、以下の内容について詳しく解説します。

Supabaseの使い方・実装手順

  • プロジェクト作成とAPIキーの取得
  • データベースの作成とRLS設定
  • 認証(Auth)機能の実装
  • ストレージ(Storage)でのファイル管理
  • Edge Functionsでのサーバーレス処理

プロジェクト作成とAPIキーの取得

Supabaseのダッシュボードにアクセスし、GitHubアカウントでサインインするところから始めます。

「New Project」からプロジェクト名とデータベースのパスワードを設定すると、数十秒でPostgreSQLデータベースが立ち上がります。

プロジェクトが完成したら、設定画面の「API」から、プロジェクトURLとAPIキー(anonキー・service_roleキー)を確認します。

フロントエンドから呼び出すのはanonキーで、service_roleキーはサーバー側だけで扱う秘匿情報です。

NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=xxxxxxxxxxxxxxxx

service_roleキーはRLSをすべてバイパスできる強い権限を持つため、フロントエンドのコードに含めないことが鉄則です。

データベースの作成とRLS設定

テーブルの作成は、ダッシュボードのTable Editorからマウス操作だけで行うことも、SQL Editorに直接SQLを書くことも可能です。

create table todos (
  id bigint generated always as identity primary key,
  user_id uuid references auth.users not null,
  task text not null,
  created_at timestamp with time zone default now()
);

alter table todos enable row level security;

create policy "Users can view their own todos"
on todos for select
using (auth.uid() = user_id);

ここで欠かせないのが、enable row level securityの1行です。

RLSを有効にしたうえで、ユーザーごとにアクセスできる範囲をポリシーとして定義します。

この設定を飛ばすと、テーブルの中身が想定より広い範囲から見えてしまう状態になります。

RLSによるアクセス制御の仕組み図解

認証(Auth)機能の実装

認証まわりは、公式のJavaScript SDKを使えば数行で実装できます。

const { data, error } = await supabase.auth.signInWithOAuth({
  provider: 'github',
})

メール・パスワード認証であればsignUpsignInWithPasswordを、ソーシャルログインであればsignInWithOAuthを呼び出すだけです。

ログイン状態が変化したタイミングは、onAuthStateChangeで監視できます。

取得できるユーザー情報のidは、先ほどのRLSポリシーで使ったauth.uid()とそのまま対応します。

認証実装で押さえておきたいこと

  • メール認証・OAuth・マジックリンクなど複数の方式に対応
  • ユーザーIDはauth.uid()としてRLSポリシーからそのまま参照できる
  • ログイン状態の変化はonAuthStateChangeで監視する

ストレージ(Storage)でのファイル管理

画像やファイルを扱う場合は、Storage機能でバケットを作成します。

const { data, error } = await supabase.storage
  .from('avatars')
  .upload('public/avatar1.png', file)

バケットには公開・非公開の2種類があり、プロフィール画像のように誰でも見てよいものは公開バケットに置きます。

反対に、契約書や請求書のような個人情報を含むファイルは、非公開バケットにしてRLSと同じ考え方でアクセス制御をかけます。

アップロードした画像は、CDN経由で配信され、URLのパラメータでリサイズ処理もできます。

Edge Functionsでのサーバーレス処理

決済のWebhook受信や外部APIとの連携など、サーバー側でしか実行できない処理は、Edge Functionsに任せます。

supabase functions deploy hello-world

Edge FunctionsはDenoベースのTypeScriptで書け、Node.jsのnpmパッケージの多くもそのまま利用できます。

service_roleキーを使った特権的な処理は、フロントエンドではなくEdge Functions側にまとめておくと、キーの漏えいリスクを抑えられます。

Webアプリ全体の作り方を体系的に押さえたい方は、Claude CodeでWebアプリを作る7つのステップもあわせて参考にしてください。

ここまでの手順を順番に進めれば、個人開発アプリのバックエンドとしてSupabaseをひととおり動かせます。

Supabaseを個人開発で使うときの注意点

最後に、個人開発ならではの注意点を整理しておきます。

ここでは、以下の内容について詳しく解説します。

Supabase運用時の注意点

  • RLS設定を忘れることで起きるセキュリティリスク
  • 無料枠の上限を超えたときの挙動
  • バックアップ・運用管理の注意点

RLS設定を忘れることで起きるセキュリティリスク

実際にSupabaseを触ってみると、テーブルを作成しただけの状態ではRLSが無効になっていることに気づきます。

RLSが無効なテーブルは、anonキーを知っているだけで誰でも中身を読み書きできる状態になります。

個人開発だからと油断して、ユーザー情報を含むテーブルをRLSなしで公開してしまうケースは少なくありません。

公開前には、必ずすべてのテーブルでRLSが有効になっているかをダッシュボードのテーブル一覧から確認してください。

RLS未設定で起こりうること

  • anonキーだけでテーブルの中身が誰でも閲覧できる
  • 認証なしでデータの書き込み・削除ができてしまう
  • 個人情報を含むテーブルがそのまま外部に晒される

無料枠の上限を超えたときの挙動

Freeプランでデータベース容量が500MBを超えると、プロジェクトは読み取り専用モードに切り替わります。

この状態になると、データの参照はできても、新規の書き込みができなくなります。

もうひとつ注意したいのが、7日間アクセスがないプロジェクトは自動的に一時停止される仕様です。

一時停止後も90日間は復元できますが、アプリを公開したまま放置すると、ユーザーがアクセスした瞬間にエラーになりかねません。

ダッシュボードの使用量画面で、DB容量・ストレージ・egressの残量を定期的に確認しておくと安心です。

成長が見えてきた段階で早めにProプランへ切り替えれば、読み取り専用モードや自動停止を心配せずに済みます。

バックアップ・運用管理の注意点

Freeプランには自動バックアップが含まれていないため、データ消失への備えは自分で用意する必要があります。

supabase db dump -f schema.sql
supabase db dump --data-only -f data.sql

Supabase CLIを使えば、1つ目のコマンドでスキーマを、2つ目のコマンドでデータそのものをダンプし、手元やクラウドストレージに保存できます。

定期実行の仕組みまで作るのが面倒な場合は、週に1回など決まったタイミングで手動バックアップを取る習慣をつけるだけでも、リスクはかなり減らせます。

他のAI開発ツールと比較しながらバックエンド構成を検討したい方は、Replit Agent入門もあわせてチェックしてみてください。

Supabaseの使い方に関するよくある質問

Supabaseの使い方や個人開発での運用について、よく寄せられる質問にまとめて回答します。

Q:個人開発でFreeプランだけで運用できますか?

A:リリース初期であれば十分に運用できます。

MAU5万人、DB500MBという範囲は、個人開発アプリの立ち上げ期をまるごとカバーできる大きさです。

Q:SupabaseとFirebaseはどちらを選ぶべきですか?

A:データ同士の関連(リレーション)を扱うアプリなら、SQLでJOINできるSupabaseが向いています。

シンプルなドキュメント型のデータだけを扱うなら、Firebaseでも十分です。

Q:Supabaseのデータは自分でバックアップできますか?

A:できます。

Supabase CLIのsupabase db dumpコマンドを使えば、Freeプランでも手動でデータベース全体を書き出せます。

Q:Claude CodeなどのAIエージェントと連携できますか?

A:できます。

公式のMCPサーバーが提供されており、Claude CodeやCursorから直接テーブル作成やSQL実行、型定義の生成を任せられます。

まとめ

Supabaseの使い方は、機能と料金プランを先に理解しておけば、個人開発でも迷わず進められます。

Freeプランの範囲を把握し、RLSの設定を最初から徹底することが、安心して運用を続けるための土台になります。

データベース・認証・ストレージ・Edge Functionsがひとつにまとまっている分、バックエンドの構築に時間を取られず、アプリ本体の開発に集中できます。

まずはプロジェクトを1つ作成するところから、実際に手を動かしてみませんか。

個人開発によるAI搭載SaaSの始め方は、個人開発によるAI搭載SaaSの始め方|アイデアから法人化まで総まとめで全体の流れを整理していますので、あわせて確認してみてください。