
【完全保存版】Claude Codeでゼロから爆速開発する「バイブコーディング」実践プレイブック
【完全保存版】Claude Codeでゼロから爆速開発する「バイブコーディング」実践プレイブック
〜Next.js + Drizzle + Supabaseで創る、個人開発者のための即日ローンチ戦略〜
はじめに:なぜ、あなたの個人開発は終わらないのか?
Udemyで60時間のWeb開発講座を買い、ProgateでJavaScriptの文法を周回し、気付けば3ヶ月が経過している——。
そして、いざ自分のサービスを作ろうとした瞬間、環境構築やデプロイエラーの壁にぶつかり、1行のコードも本番公開(デプロイ)できないまま挫折していく。
心当たりはありませんか?
断言します。個人開発者がプログラミング言語の構文やCS(コンピュータサイエンス)理論をゼロから学ぶ時代は終わりました。
今、シリコンバレーや海外のインディーハッカー界隈を席巻しているのが**「バイブコーディング(Vibe Coding)」**という全く新しい開発思想です。
バイブコーディングとは、決して適当にAIにコードを書かせることではありません。
**「コードの構文記述(実装)は98% AIに委ね、人間はプロダクトマネージャー(PM)、システムアーキテクト、そしてQA(品質保証)の指揮官に徹する」**という、極めて合理的で現代的なエンジニアリング・アプローチです。
そして、その中核となる最強の武器が、Anthropic社の公式CLIツール「Claude Code」です。
ターミナルとファイルシステムに直接アクセスできる自律型AIエージェントを手に入れた今、構想から世界公開(本番デプロイ)までの摩擦はゼロになりました。
本書では、机上の空論を一切排除し、Next.js (App Router)、Tailwind CSS、shadcn/ui、Drizzle ORM、Supabaseを組み合わせた本番水準のフルスタックWebアプリケーションを、最速で構築・収益化するための具体的なコマンド、プロンプト、そして設計憲法をすべて公開します。
準備はいいですか? ターミナルを開いて、開発の新時代へ踏み出しましょう。
目次
CHAPTER 1: バイブコーディングの思想と「5段階実行ループ」
CHAPTER 2: 最速15分で本番公開する「デプロイ・ファースト」パイプライン
CHAPTER 3: 21st.devを活用したビジュアルトランスレーション & 爆速LP構築
CHAPTER 4: Supabase × Drizzle ORM × Discord通知による無駄ゼロのバックエンド
CHAPTER 5: AIの暴走を完全に封じる「CLAUDE.md」憲法ファイルとsuperpowers (有料)
CHAPTER 6: アイデアから初収益($1)を掴むまでの「4週間ソロ開発OS」
【購入者限定特典】即戦力プロンプト・ヴォールト(厳選10選)
CHAPTER 1: バイブコーディングの思想と「5段階実行ループ」
1. 「学んでから作る」という最大の罠
旧来のプログラミング学習は、完全な「ボトムアップ型」でした。
変数や制御構文を覚える
アルゴリズムとデータ構造を学ぶ
フレームワーク(React等)のステート管理を学ぶ
TODOアプリを作る
数ヶ月後、いざ本番サービスを作ろうとして挫折する
このアプローチは、メモリ管理を手動で行っていた時代の遺物です。
一人で素早く仮説検証し、収益を上げたい個人開発者にとって、この学習法は致命傷になり得ます。
文法の暗記に3ヶ月を費やしている間に、三項演算子すら知らない隣のバイブコーダーは、AIを使って3時間でMVP(最小限の実用製品)をローンチし、初期ユーザー200人を集めています。
【従来の学習モデル】
[ 3ヶ月の文法学習 ] ──> [ 2ヶ月のフレームワーク ] ──> [ モチベーション枯渇 / リリースゼロ ]
【バイブコーディングのモデル】
[ 課題発見 & 要件定義 ] ──> [ Claude Code CLI ] ──> [ 3時間で本番ローンチ ] ──> [ 収益化 ]「ジャスト・イン・タイム(JIT)学習」への転換
バイブコーダーが実践すべきは、JIT(Just-in-Time: 必要な時に必要なだけ学ぶ)学習です。
従来の学習(Just-in-Case): 将来使うかもしれないからと、PostgreSQLの分厚い技術書を400ページ読破する。
JIT学習: Claude CodeにSupabase用のDrizzleスキーマを設計させ、接続エラーや外部キー制約の不具合に遭遇したその瞬間に、ピンポイントで原因をAIに質問し、即座に修正して血肉化する。
Next.jsのすべての設定フラグを暗記する必要はありません。
必要なのは、**「何を作りたいのか」「データがどう流れるべきか」「AIが出力した結果が正常に動いているかを確認する検証力」**だけです。
2. 自律型開発を回す「5段階実行ループ」
ターミナルを開いて、いきなりClaude Codeに「Airbnbのクローンを作って」と頼んでも、破綻したスパゲッティコードが返ってくるだけです。
プロのバイブコーダーは、あらゆる機能を以下の**「5段階実行ループ」**に分解して実行します。
┌────────────────────────────────────────────────────────┐
│ 1. プランニング(Planning) │
│ 画面遷移、データモデル、ユーザー体験の要件を言語化 │
└───────────────────────────┬────────────────────────────┘
│
┌───────────────────────────▼────────────────────────────┐
│ 2. コードベース探索(Codebase Exploration) │
│ Claudeに既存ファイル、スキーマ、共通関数を読ませる │
└───────────────────────────┬────────────────────────────┘
│
┌───────────────────────────▼────────────────────────────┐
│ 3. 仕様定義(Spec Definition) │
│ Markdownのチェックリスト形式で最小限のタスクに分割 │
└───────────────────────────┬────────────────────────────┘
│
┌───────────────────────────▼────────────────────────────┐
│ 4. 実装 & TDD検証(Implementation & TDD) │
│ ファイルを生成し、即座に `tsc --noEmit` やテスト実行│
└───────────────────────────┬────────────────────────────┘
│
┌───────────────────────────▼────────────────────────────┐
│ 5. 人間によるフィードバック & 監査(Audit) │
│ ブラウザで挙動確認、エッジケースの検証 │
└────────────────────────────────────────────────────────┘ステージ1: プランニング (Planning)
コードを一切書く前に、機能の「芯」を決めます。
誰の、どんな課題を解決する画面なのか?
必要な外部サービスは何か?(DB: Supabase / メール: Resend / 決済: Stripe 等)
ステージ2: コードベース探索 (Codebase Exploration)
AIに暗闇の中でコードを書かせてはいけません。
Claude Codeの検索・読込コマンドを使って、既存のプロジェクト構造、デザインシステム、命名規則を先にスキャンさせます。
指示例: `grep` や `find` コマンドで既存のコンポーネントを探索させ、「プロジェクトの既存の作法に合わせて」実装する準備をさせます。
ステージ3: 仕様定義 (Spec Definition)
タスクを可能な限り細かく分解します。
❌ 悪い指示: 「お問い合わせフォームを作って」
⭕ 良い指示(バイブコーダー流):
`src/db/schema.ts` に `inquiries` テーブルを追加する
Zodによるバリデーションを含むServer Action `submitInquiry` を作成する
shadcn/uiのInput, Textarea, Buttonを用いたUIを作成する
送信成功時にSonnerトーストを表示する
ステージ4: 実装 & TDD検証 (Implementation & TDD)
Claude Codeに直接ターミナルコマンドを実行させます。
コードを書かせたら、即座に `npx tsc --noEmit` を叩かせ、型エラーがないかチェックさせます。エラーが出たら、AI自身にスタックトレースを読ませて自動修正させます。
ステージ5: 人間によるフィードバック & 監査 (Human Audit)
あなた自身の目でブラウザを動かします。
`npm run dev` でローカルサーバーを立ち上げ、ボタンをクリックし、空文字を送信し、スマホ表示崩れがないかを確認します。違和感があれば、そのエラーや画面の崩れをそのままClaude Codeにフィードバックします。
💡 Pro-Tip: バイブコーディングの極意は**「短いフィードバックループ」**です。AIに長時間勝手に作業させればさせるほど、修正不可能なバグが蓄積します。小さな単位で指示し、小さな単位で検証することを徹底してください。
3. 最適な開発環境と前提条件
AIに無駄なハルシネーション(幻覚)を起こさせないためには、整った開発環境が不可欠です。
Claude Code CLIのセットアップ
Claude Codeはターミナル上でネイティブに動作し、ファイル操作やコマンド実行を代行します。
1. Node.jsの確認:
Node.js (v18以上) がインストールされていることを確認します。
node -v
npm -v2. Claude Codeのグローバルインストール:
npm install -g @anthropic-ai/claude-code3. 認証の実行:
プロジェクトを作成したいディレクトリに移動し、初期起動します。
claudeブラウザが起動し、AnthropicアカウントとのOAuth認証が完了すれば準備完了です。
⚠️ 注意点 (APIレートリミット): Anthropic APIのアカウントがTier 1の場合、大規模なコードベース変更を行うと10〜15分でレートリミットに達することがあります。事前に数千円分のクレジットをプリペイドチャージし、Tier 2以上に上げておくことを強く推奨します。
推奨画面レイアウト:スプリット・ワークスペース
画面左半分: VS Code(ファイルの自動更新やディレクトリ構造を視覚的に把握するため)
画面右半分: ターミナル(`claude` を常駐起動)
リポジトリの公開設定:必ず「Private」から始める
初心者がやりがちな最悪のミスは、AIエージェントに指示を出している過程で `.env` 内のシークレットキーを誤ってパブリックリポジトリにコミットしてしまうことです。
GitHubリポジトリは必ず「Private」で作成し、`.gitignore` の初期設定を厳格に行ってください。
4. Chapter 1 アクションチェックリスト
次の章に進む前に、以下の準備がすべて整っているか確認してください。
[ ] Node.js: v18以上が動作している (`node -v`)
[ ] Claude Code: グローバルインストールが完了している (`npm install -g @anthropic-ai/claude-code`)
[ ] API認証: `claude` コマンドでログインが完了し、クレジット残高がある
[ ] GitHub CLI: `gh auth login` でターミナルからのGitHub操作が可能になっている
[ ] 作業環境: 左にVS Code、右にターミナルの2分割画面が構成されている
CHAPTER 2: 最速15分で本番公開する「デプロイ・ファースト」パイプライン
個人開発における最大の悲劇。それは**「ローカル環境の蜃気楼」**です。
ローカル環境(`localhost:3000`)で2週間かけて完璧なUIを作り、DBをつなぎ、「さあ公開だ」とVercelにプッシュした瞬間——
`Build Failed: Type error: Property 'user' does not exist on type 'Session'.`
`Module not found: Can't resolve '@/components/ui/button'.`
サーバー側でのプリレンダリングエラー、Linux環境特有の大文字小文字のパス不一致、型定義の不整合が大量に噴出し、公開作業だけで4日間を溶かすことになります。
バイブコーディングでは、鉄の掟を守ります。
🏆 黄金ルール: プロジェクト開始から最初の15分以内に、"Hello World"が稼働する本番URL(Vercel)とCI/CDパイプラインを構築せよ。
1行機能を足すたびに、本番サーバーでビルドが通ることを確認しながら進める。これこそが、挫折をゼロにする唯一の防壁です。
1. Claude Codeによるプロジェクト・スキャフォールディング
手動でコマンドを打つ必要はありません。Claude Codeに以下のプロンプトをそのまま貼り付けて実行させます。
実行プロンプト
以下のコマンドをターミナルで実行して、Next.jsプロジェクト「vibe-saas」を新規作成してください:
npx create-next-app@latest vibe-saas \
--typescript \
--tailwind \
--eslint \
--app \
--src-dir \
--import-alias "@/*" \
--use-npm \
--no-turbopack
作成完了後、ディレクトリ内に移動し、以下を追加インストールしてください:
- lucide-react(アイコン用)
- clsx, tailwind-merge(クラス名結合用)
続いて、shadcn/uiを初期化してください:
npx shadcn@latest init -d
さらに、基本となるButton, Toast, Cardコンポーネントを追加してください:
npx shadcn@latest add button sonner card
完了したら、`npm run build` を実行して、ビルドエラーが一切ないことを確認してください。完成するディレクトリ構造
vibe-saas/
├── components.json # shadcn/ui 設定ファイル
├── next.config.ts # Next.js 設定
├── package.json
├── tailwind.config.ts
├── tsconfig.json
└── src/
├── app/
│ ├── globals.css # Tailwind スタイル & テーマ
│ ├── layout.tsx # ルートレイアウト(Toaster配置)
│ └── page.tsx # 動作検証用ページ
├── components/
│ └── ui/ # shadcn UI コンポーネント群
│ ├── button.tsx
│ ├── card.tsx
│ └── sonner.tsx
└── lib/
└── utils.ts # cn() ヘルパー関数2. コンポーネントの初期動作テスト
作成された `src/app/page.tsx` を、UIライブラリとクライアント側ハイドレーションが正常に動いているか確認できる検証画面に書き換えます。
Claude Codeに以下のように指示します:
`src/app/page.tsx` を以下の要件で更新してください:
1. 画面中央に shadcn/ui の Card を配置し、タイトルを「Vibe SaaS パイプライン稼働中」とする。
2. Lucideの「Rocket」アイコンが入ったButtonを配置する。
3. ボタンをクリックした時、Sonnerのトースト通知「パイプライン正常稼働!機能開発の準備が整いました」を表示させる。
4. `src/app/layout.tsx` に `<Toaster />` がマウントされていることを確認する。
完了後、`npm run build` を実行して型エラーがないことを証明してください。3. GitHub & Vercel への全自動デプロイ
一切ブラウザを開かずに、Claude CodeのプロンプトだけでGitHubリポジトリの作成とVercel本番公開を完了させます。
Git初期化 & GitHub Private リポジトリ作成
Gitの状態を確認してください。未初期化の場合は以下を実行してください:
git init
git add -A
git commit -m "chore: initial scaffold with Next.js, shadcn, and sonner"
GitHub CLI (`gh`) を使用して、プライベートリポジトリ「vibe-saas」を作成し、mainブランチにプッシュしてください。Vercel CLIによる本番デプロイ
npm install -g vercel@latestVercel CLIを使用して、このプロジェクトをVercelにリンクおよび本番デプロイしてください:
vercel --prod --yesわずか数十秒で、ターミナル上に世界中からアクセス可能な本番URL(例: `https://vibe-saas.vercel.app`)が出力されます。
スマートフォンからこのURLを開き、ボタンを押してトースト通知が正常に出ることを確認してください。
おめでとうございます。あなたのプロダクトは、開始15分で本番環境を手に入れました。
--- ここから有料エリア ---
CHAPTER 3: 高速LP構築 & ビジュアル・イテレーション
「モダンで洗練されたAIサービスのLPを作って」
この指示をAIに出した瞬間、生成されるのは2021年頃の怪しい仮想通貨サイトのような、紫色と水色のグラデーションがギラギラ光るダサいWebサイトです。
訪れたユーザーは無意識に察知します。「これは中身のない、AIで作られた粗悪品だ」と。
プロのバイブコーダーは、デザインを言葉で説明しません。
すでに世の中で検証されている一流のデザインコンポーネントをベンチマークとして調達し、それをAIに構造翻訳(ビジュアル・トランスレーション)させます。
1. デザインを「言葉」で指示してはならない理由
LLMは確率論で動いています。制約を与えずに「モダンなデザイン」と頼めば、インターネット上に存在する無数のテンプレートの「平均値(=無難で退屈なデザイン)」を出力します。
最高峰のデザイン資産を調達するリソース
21st.dev (shadcn/uiのnpm): 世界中のトップクリエイターが作成した、コピペ可能なshadcnコンポーネントの宝庫。Bento Grid、アニメーション付きヒーローセクション、洗練された価格表などが手に入ります。
Mobbin / Darkroom: Linear、Raycast、Vercel、Supabaseといった一流SaaSの本番UIスクリーンショット集。
スクリーンショットをClaude Codeに食わせる実践手法
Claude 3.5 Sonnetは極めて高い画像認識能力を持っています。
参考にしたいUIのスクリーンショットを `screenshots/reference-ui.png` に保存し、以下のように指示します。
`screenshots/reference-ui.png` のレイアウトを分析してください。独自CSSは書かず、既存のTailwind CSSとshadcn/uiで再構築します:
1. レイアウト構造: モバイルとデスクトップのFlex/Grid構成を分解してください。
2. カラー & 深度: slate-900の背景、zinc-800のボーダー、violet-500のアクセントカラーなど、Tailwindのカラーパレットに対応させてください。
3. タイポグラフィ: フォントの太さ(font-semibold等)、字間(tracking-tight)を忠実に再現してください。
4. コンポーネント抽出: 表示されているUI要素をshadcnのButton, Card, Badgeにマッピングしてください。
上記に基づき、`src/components/landing/HeroSection.tsx` を新規作成してください。
モバイルファーストで完全レスポンシブ対応にしてください。2. 「AI臭さ」を完全に消し去る2大要素
① フォントの刷新(脱・デフォルトInter)
Next.jsの初期状態であるInterフォントをそのまま使うと、一目で「テンプレート感」が漂います。
Geist Sans (推奨): Vercelが開発した、極めてシャープでモダンな開発者向けフォント。
Pretendard / Plus Jakarta Sans: 親しみやすく、プレミアム感のあるフォント。
② 余白(Spacing)の拡大
AIが生成するコードは、要素同士が窮屈(`py-6`, `gap-4` など)になりがちです。一流のSaaSサイトは、大胆な余白を持っています。
セクションの上下には `py-24 sm:py-32` を指定し、視覚的な呼吸スペースを確保します。
CHAPTER 4: リーン・バックエンド(Supabase, Drizzle ORM & Discord Webhook)
ランディングページだけでは、ただの電子チラシです。
訪問者を顧客に変えるためには、お問い合わせやリード(見込み顧客)を確実に蓄積し、即座にあなたのスマートフォンへ通知を飛ばす仕組みが必要です。
本書では、サーバーレス環境で最も軽量・高速に動作するDrizzle ORMとSupabase、そしてDiscord Webhookを組み合わせます。
1. Supabaseのセットアップ & 機密情報の管理
Supabase で新規プロジェクト `vibe-saas` を作成(リージョンは日本最寄りの東京 `ap-northeast-1` またはソウル `ap-northeast-2` を選択)。
Project Settings $\rightarrow$ Database $\rightarrow$ Connection parameters から、サーバーレス環境必須のTransaction Pooler(ポート `6543`)接続文字列をコピーします。
`.env.local` の設定
# Supabase Transaction Pooler URL
DATABASE_URL="postgresql://postgres.xxxx:[YOUR-PASSWORD]@aws-0-ap-northeast-1.pooler.supabase.com:6543/postgres?sslmode=require"
# Discord Webhook(通知用)
DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/xxxx/yyyy"
# 管理画面用パスキー
ADMIN_SECRET_KEY="your-ultra-secure-passkey-here"Vercelにも環境変数を登録しておきます:
vercel env add DATABASE_URL production
vercel env add DISCORD_WEBHOOK_URL production
vercel env add ADMIN_SECRET_KEY production2. Drizzle ORMの完全構築
依存パッケージのインストール
Claude Codeに指示します:
npm install drizzle-orm postgres
npm install -D drizzle-kit tsx dotenvスキーマ定義: `src/db/schema.ts`
お問い合わせやウェイティングリスト登録を処理するテーブルを定義します。
import { pgTable, uuid, text, timestamp, varchar } from "drizzle-orm/pg-core";
export const inquiries = pgTable("inquiries", {
id: uuid("id").defaultRandom().primaryKey(),
name: varchar("name", { length: 255 }).notNull(),
email: varchar("email", { length: 255 }).notNull(),
company: varchar("company", { length: 255 }),
message: text("message").notNull(),
status: varchar("status", { length: 50 }).default("unread").notNull(),
createdAt: timestamp("created_at", { withTimezone: true })
.defaultNow()
.notNull(),
});
export type Inquiry = typeof inquiries.$inferSelect;
export type NewInquiry = typeof inquiries.$inferInsert;DBクライアントシングルトン: `src/db/index.ts`
import { drizzle } from "drizzle-orm/postgres-js";
import postgres from "postgres";
import * as schema from "./schema";
const connectionString = process.env.DATABASE_URL;
if (!connectionString) {
throw new Error("DATABASE_URLが設定されていません。");
}
// サーバーレス環境でのコネクション枯渇を防ぐ設定
const client = postgres(connectionString, { prepare: false });
export const db = drizzle(client, { schema });スキーマの即時反映
npx drizzle-kit pushSQL文を1行も書くことなく、Supabase上にテーブルが生成されます。
3. Server Action によるリード保存 & Discord即時通知
ユーザーがフォームを送信した瞬間に、DrizzleでDBに保存し、あなたのDiscordサーバーにリッチな通知を送信します。
`src/app/actions/inquiry.ts`:
"use server";
import { z } from "zod";
import { db } from "@/db";
import { inquiries } from "@/db/schema";
const InquirySchema = z.object({
name: z.string().min(2, "お名前は2文字以上で入力してください。"),
email: z.string().email("有効なメールアドレスを入力してください。"),
company: z.string().optional().default(""),
message: z.string().min(10, "お問い合わせ内容は10文字以上で入力してください。"),
});
export async function submitInquiry(formData: {
name: string;
email: string;
company?: string;
message: string;
}) {
try {
const validated = InquirySchema.parse(formData);
const [saved] = await db.insert(inquiries).values({
name: validated.name,
email: validated.email,
company: validated.company || null,
message: validated.message,
}).returning();
// Discord Webhook への通知
if (process.env.DISCORD_WEBHOOK_URL) {
await fetch(process.env.DISCORD_WEBHOOK_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
username: "リード獲得通知Bot",
embeds: [{
title: "🚀 新しいお問い合わせが届きました!",
color: 0x8b5cf6,
fields: [
{ name: "お名前", value: validated.name, inline: true },
{ name: "メールアドレス", value: validated.email, inline: true },
{ name: "会社名", value: validated.company || "未記入", inline: true },
{ name: "内容", value: validated.message },
],
footer: { text: `ID: ${saved.id}` },
timestamp: new Date().toISOString(),
}],
}),
}).catch((err) => console.error("Discord通知失敗:", err));
}
return { success: true, message: "お問い合わせを受け付けました。24時間以内にご連絡いたします。" };
} catch (error) {
if (error instanceof z.ZodError) {
return { success: false, message: error.issues[0].message };
}
return { success: false, message: "予期せぬエラーが発生しました。" };
}
}CHAPTER 5: AIの暴走を完全に封じる「CLAUDE.md」憲法ファイル
Claude Codeは非常に優秀ですが、野放しにすると勝手なライブラリを追加したり、TypeScriptの型エラーを `any` で誤魔化したりします。
これを100%防止するために、プロジェクトのルートディレクトリに配置する**リポジトリ憲法(`CLAUDE.md`)**を提供します。
本番用 `CLAUDE.md` テンプレート(コピペ用)
# SYSTEM DIRECTIVE: VIBE SAAS REPOSITORY CONSTITUTION
あなたは、このプロダクションNext.jsアプリケーションを担当するリードフルスタックエンジニアです。
妥協のないクリーンかつ厳格に型付けされたコードを記述してください。
TODOコメントでの放置や、手抜き実装は一切禁止します。
## 1. 固定技術スタック(逸脱禁止)
- Framework: Next.js 15+ (App Router, Server Actions, React 19)
- Language: TypeScript (Strict Mode)
- Styling: Tailwind CSS (ユーティリティクラスのみ。カスタムCSSファイル禁止)
- UI Components: shadcn/ui + Lucide React
- Database: Supabase PostgreSQL (Transaction Pooler 6543ポート, prepare: false)
- ORM: Drizzle ORM
- Validation: Zod (すべてのServer Actionと外部入力で必須)
- Testing: Vitest
## 2. 絶対禁止事項(即時リジェクト対象)
1. 他のUIライブラリ(Chakra UI, MUI, Mantine等)を追加インストールすることの禁止。
2. TypeScriptにおける `any` 型、および型ガードのない `unknown` の使用禁止。
3. 型エラーをごまかすための `// @ts-ignore` や `// @ts-nocheck` の使用禁止。
4. チャット内で人間の明示的な許可なく `.env.local` を書き換えることの禁止。
5. 秘密鍵や環境変数をターミナルに出力する行為の禁止。
6. 後述の検証ゲートを通過せずにタスク完了を宣言することの禁止。
## 3. タスク完了前の必須検証コマンド
タスク完了をユーザーに報告する前に、必ず以下を実行して自己診断してください:
1. 型チェック:
`npx tsc --noEmit` (エラー0件であること)
2. ビルドテスト:
`npm run build` (正常終了すること)
エラーが発生した場合、人間に修正方法を尋ねず、自律的に原因を突き止めて修正してください。CHAPTER 6: アイデアから初収益($1)を掴むまでの「4週間ソロ開発OS」
個人開発者の墓場は、「技術力が足りなかった人」ではなく、**「完璧なものを作ろうとして誰にも見せずに力尽きた人」**で溢れかえっています。
【4週間の収益化ロードマップ】
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 第1週 │ │ 第2週 │ │ 第3週 │ │ 第4週 │
│ 骨格構築 & │ ───> │ LP構築 & │ ───> │ コア機能実装 │ ───> │ 告知 & 初回 │
│ 即日デプロイ │ │ 見込み客獲得 │ │ & 決済リンク │ │ 収益獲得 │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘第1週: 課題の定義、Next.js + Vercel デプロイ、Supabase接続、`CLAUDE.md` の配備。
第2週: 21st.devを参考にした美麗LPの構築、Discord通知フォームの実装、X(旧Twitter)での動画付き開発実況(#buildinpublic)。【関門: 20件のメールアドレスが集まらなければ仕様を見直す】
第3週: たった1つのキラー機能の実装。Stripe Payment Links(埋め込み決済ボタン)を配置し、複雑な定期課金ロジックを書かずに即時課金導線を作る。
第4週: ウェイティングリスト20名への早期割引メール配信、Product Huntや日本の開発者コミュニティ(Zenn, Qiita, X)へのローンチ記事投稿。最初の有料ユーザーを獲得する。
「動く不完全なプロダクト」は、「ローカル環境の完璧な未公開品」より1億倍価値があります。
【購入者限定特典】即戦力プロンプト・ヴォールト(厳選10選)
Claude Codeにそのまま貼り付けて使える、実戦検証済みプロンプト集です。
1. 仕様書自動生成プロンプト(/spec)
以下の機能を実装したいと考えています:
「[機能の概要、例:CSVファイルのドラッグ&ドロップによるインポートとプレビュー機能]」
コードを書く前に、以下を実行してください:
1. `package.json` と `src/db/schema.ts` をスキャンし、既存の技術的制約を洗い出してください。
2. 設計上の懸念点やエッジケースを3つ指摘してください。
3. `docs/specs/[機能名].md` にステップ・バイ・ステップの実装仕様書を作成してください。
4. 各タスクは「修正ファイル数2個以内」「検証コマンド明記」のチェックボックス形式にしてください。
仕様書を作成し、私の承認を待ってください。2. UIリバースエンジニアリング・プロンプト
`screenshots/target.png` のUIを分析し、`src/components/features/[コンポーネント名].tsx` に実装してください。
- Tailwind CSSと既存のshadcn/uiコンポーネントを使用してください。
- 字間(tracking-tight)、フォントの太さ、シャドウの質感を可能な限り再現してください。
- 375pxのスマホ表示から1440pxのPC表示まで完全対応させてください。
- 完了後、`npx tsc --noEmit` で型チェックを通してください。3. 厳格TDD(テスト駆動開発)プロンプト
`src/lib/[モジュール名].ts` を作成します。厳格なTDD手順で進めてください:
1. `tests/[モジュール名].test.ts` にVitestでテストコードを作成してください(正常系、境界値、異常系エラーハンドリングを網羅)。
2. `npx vitest run` を実行し、全テストが「RED(失敗)」することを確認してください。
3. `src/lib/[モジュール名].ts` にテストをパスする最小限の実装を行ってください。
4. 全テストが「GREEN(成功)」になるまで修正を繰り返してください。4. 不要パッケージ大掃除(ゴースト依存関係削除)
このリポジトリの依存関係監査を実施してください:
1. `package.json` 内のパッケージが実際に `src/` 内でimportされているかgrep検索してください。
2. 未使用・重複している不要なパッケージをリストアップしてください。
3. それらを安全に `npm uninstall` するコマンドを提示し、実行してください。
4. 実行後、`npm run build` でビルドが通ることを証明してください。5. 厳格型安全性エンフォーサー
`npx tsc --noEmit` を実行し、発生したすべての型エラーを修正してください:
- `any` や `// @ts-ignore` による誤魔化しは固く禁じます。
- 不明な外部APIレスポンスがある場合は、Zodスキーマを定義して型を推論してください。
- 修正完了後、再度 `npx tsc --noEmit` を実行し、エラーが0件になったログを提示してください。6. Drizzleスキーマ安全マイグレーション
`src/db/schema.ts` に以下の変更を加えます:
「[変更内容、例:inquiriesテーブルにphoneフィールド(varchar50、NULL許容)を追加]」
手順:
1. `src/db/schema.ts` を更新し、型推論のエクスポートを更新してください。
2. `npx drizzle-kit generate` でマイグレーションSQLを作成してください。
3. 破壊的な変更(DROP等)が含まれていないか確認してください。
4. `npx drizzle-kit push` でSupabaseに反映してください。7. Core Web Vitals パフォーマンス最適化
`src/app/page.tsx` の表示パフォーマンスを最適化してください:
1. すべての画像が `next/image` かつ適切な `sizes`、ファーストビュー画像には `priority` が設定されているか確認。
2. 不要に `"use client"` が指定されているコンポーネントを特定し、Server Componentに戻してクライアントJS容量を削減してください。
3. `npm run build` を実行し、ルートごとのJSバンドルサイズを報告してください。8. フォーム破壊テスト(敵対的QAエンジニア)
あなたは敵対的なセキュリティQAエンジニアです。`src/app/actions/[アクション名].ts` をテストしてください。
`tests/adversarial.test.ts` を作成し、以下を送信してください:
1. SQLインジェクション文字列(例: `'); DROP TABLE inquiries;--`)
2. XSSペイロード(例: `<script>alert('xss')</script>`)
3. 10万文字の無意味な巨大文字列
4. 絵文字やUnicodeの特殊文字
すべての異常入力がZodによって適切に弾かれ、サーバーがクラッシュしないことを確認してください。9. モバイルレスポンシブ監査
`src/components/` 配下の全コンポーネントのモバイル表示を監査してください:
1. 固定幅(`w-[500px]` 等)を検出し、レスポンシブ幅(`w-full max-w-lg` 等)に修正してください。
2. 360px画面で横スクロール(水平オーバーフロー)が発生しないか確認してください。
3. すべてのボタンとタップ要素が、最低でも高さ44px(タップ可能領域)を確保しているか確認してください。10. 本番リリース・オーケストレーター
本番リリースの準備を行います。以下の手順を実行してください:
1. `git status` で余計なログやデバッグファイルが残っていないか確認。
2. `npx tsc --noEmit` と `npm run build` を実行。失敗した場合は即座に中断。
3. 変更内容をステージングし、Conventional Commitsに則ったわかりやすいコミットメッセージを生成してコミット。
4. `git push origin main` を実行。
5. Vercelの本番デプロイが完了したことを確認し、公開URLを報告してください。終わりに
バイブコーディングの真価は、「コードを書かなくていいこと」ではありません。
**「思いついたアイデアを、その日のうちに世界へ届ける圧倒的な機動力」**にあります。
この本を閉じた瞬間から、あなたの言い訳はすべて消え去りました。
さあ、ターミナルを開いて `claude` と打ち込みましょう。
あなたの素晴らしいプロダクトが、世界中で使われる日を楽しみにしています。