メインコンテンツへスキップ
← 記事一覧に戻る
·開発·6 min read

Next.js + Supabase 個人開発入門2026 — 無料枠だけでSaaSを作る方法

Next.jsSupabase個人開発SaaS
Next.js + Supabase 個人開発入門2026 — 無料枠だけでSaaSを作る方法

なぜNext.js + Supabaseなのか

個人開発でSaaSやWebアプリを作るなら、Next.js + Supabaseが2026年時点で最もコスパの良い選択肢です。

  • Next.js: Vercelの無料枠でデプロイ可能
  • Supabase: 認証・DB・ストレージが無料枠で使える
  • 組み合わせコスト: 月¥0〜¥5,000で本格的なSaaSが運営可能

筆者はこの構成でKOBO(個人開発スターターキット)を構築し、¥9,800で販売しています。月のインフラコストは¥0(無料枠内)です。

この記事でわかること:

  • Next.js + Supabaseの始め方
  • 認証・DB設計の基本パターン
  • Vercelデプロイまでの流れ
  • 無料枠の制限と注意点

技術構成の全体像

ユーザー → Vercel(Next.js)→ Supabase(Auth/DB/Storage)
                            → Stripe(決済 ※必要な場合)
役割技術無料枠
フロントエンド + APINext.js (Vercel)月100GB帯域
認証Supabase Auth50,000 MAU
データベースSupabase PostgreSQL500MB
ストレージSupabase Storage1GB
決済Stripe従量課金のみ

ステップ1:プロジェクトセットアップ

Next.jsプロジェクト作成

npx create-next-app@latest my-saas --typescript --tailwind --app
cd my-saas

Supabaseプロジェクト作成

  1. supabase.com でアカウント作成
  2. 「New Project」でプロジェクト作成
  3. Settings → API から接続情報を取得

環境変数設定

# .env.local
NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGci...
SUPABASE_SERVICE_ROLE_KEY=eyJhbGci...  # サーバーサイドのみ

重要: .env.local.gitignore に含まれていることを必ず確認してください。

ステップ2:認証の実装

Supabase Authを使えば、メール認証・Google認証・GitHub認証などがすぐに実装できます。

Supabaseクライアントの作成

// lib/supabase/client.ts(ブラウザ用)
import { createBrowserClient } from '@supabase/ssr'

export function createClient() {
  return createBrowserClient(
    process.env.NEXT_PUBLIC_SUPABASE_URL!,
    process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
  )
}
// lib/supabase/server.ts(サーバー用)
import { createServerClient } from '@supabase/ssr'
import { cookies } from 'next/headers'

export async function createClient() {
  const cookieStore = await cookies()
  return createServerClient(
    process.env.NEXT_PUBLIC_SUPABASE_URL!,
    process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
    {
      cookies: {
        getAll() { return cookieStore.getAll() },
        setAll(cookiesToSet) {
          cookiesToSet.forEach(({ name, value, options }) =>
            cookieStore.set(name, value, options)
          )
        },
      },
    }
  )
}

ログインページの例

// app/login/page.tsx
'use client'
import { createClient } from '@/lib/supabase/client'

export default function LoginPage() {
  const supabase = createClient()

  const handleLogin = async () => {
    await supabase.auth.signInWithOAuth({
      provider: 'github',
      options: { redirectTo: `${location.origin}/auth/callback` }
    })
  }

  return (
    <button onClick={handleLogin}>
      GitHubでログイン
    </button>
  )
}

ステップ3:データベース設計

基本的なテーブル構成

個人開発SaaSで最低限必要なテーブルは以下の3つです。

-- ユーザープロフィール
create table profiles (
  id uuid references auth.users primary key,
  display_name text,
  created_at timestamptz default now()
);

-- プロダクト/プラン
create table products (
  id uuid primary key default gen_random_uuid(),
  name text not null,
  price integer not null,
  stripe_price_id text
);

-- 購入履歴
create table purchases (
  id uuid primary key default gen_random_uuid(),
  user_id uuid references auth.users not null,
  product_id uuid references products not null,
  stripe_session_id text,
  created_at timestamptz default now()
);

RLS(Row Level Security)の設定

SupabaseではRLSを必ず有効にしましょう。これを忘れると、全ユーザーのデータが丸見えになります。

alter table profiles enable row level security;

create policy "ユーザーは自分のプロフィールのみ閲覧可能"
  on profiles for select
  using (auth.uid() = id);

ステップ4:Vercelデプロイ

# Vercel CLIでデプロイ
npm i -g vercel
vercel

# 環境変数を設定
vercel env add NEXT_PUBLIC_SUPABASE_URL
vercel env add NEXT_PUBLIC_SUPABASE_ANON_KEY
vercel env add SUPABASE_SERVICE_ROLE_KEY

GitHubリポジトリを連携すれば、git push するだけで自動デプロイされます。

無料枠の制限と注意点

サービス無料枠の制限超過した場合
Vercel月100GB帯域、サーバーレス実行100GB-hoursProプラン $20/月
Supabase500MB DB、1GB Storage、50K MAUProプラン $25/月
Stripeなし(従量課金 3.6%)

筆者の経験では、月間PV 10,000程度までは無料枠で十分です。個人開発の初期段階で課金が必要になることはほぼありません。

まとめ

ステップ内容所要時間
セットアップNext.js + Supabase初期化30分
認証Supabase Auth導入1〜2時間
DB設計テーブル + RLS1〜2時間
デプロイVercel連携15分

この構成なら、半日で認証付きWebアプリが完成します。あとは自分のアイデアに合わせて機能を追加していくだけです。

関連する有料記事

Next.js + Supabase + Stripe で有料コンテンツ販売を実装する完全ガイド

Next.js + Supabase の応用編。決済・認証・ペイウォール・Webhook の全コードを公開。「コンテンツ販売型」の収益化を始めたい人向け。


Next Step

次に読むならこの導線です

すべての記事を見る
有料で次へ進む¥1,000

【第12回】夜寝てる間に Claude Code が記事を書き上げる構成 — 月 ¥5K で動く全コード

Claude Codeラボ全12話の集大成。Skills/MCP/サブエージェント/Hooks/リモート運用を統合した「自走する Claude 自動化」を、月 ¥5K の実コストで動かす全構成を公開。寝てる間に競合調査・記事下書き・PR まで自動化する 6 層アーキテクチャの完成版。

次の実験記録も追う

Claude Code × 個人開発の実験ログ、失敗、判断変更をまとめて追いたい人向けに、月次でLab Freeを届けます。

masatoman のメルマガ — 毎週月曜の朝に 1 通

masatoman.net で今週公開した記事の中から 1 本を、読者目線で深掘りした手紙が届きます。「自分も同じことやってる」「ここで詰まってた」が見つかる予告編。

この記事が役に立ったらシェア