メインコンテンツへスキップ
見出し画像

【完全保存版】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アプリケーションを、最速で構築・収益化するための具体的なコマンド、プロンプト、そして設計憲法をすべて公開します。

    準備はいいですか? ターミナルを開いて、開発の新時代へ踏み出しましょう。


    目次

    1. CHAPTER 1: バイブコーディングの思想と「5段階実行ループ」

    2. CHAPTER 2: 最速15分で本番公開する「デプロイ・ファースト」パイプライン

    3. CHAPTER 3: 21st.devを活用したビジュアルトランスレーション & 爆速LP構築 

    4. CHAPTER 4: Supabase × Drizzle ORM × Discord通知による無駄ゼロのバックエンド 

    5. CHAPTER 5: AIの暴走を完全に封じる「CLAUDE.md」憲法ファイルとsuperpowers (有料)

    6. CHAPTER 6: アイデアから初収益($1)を掴むまでの「4週間ソロ開発OS」 

    7. 【購入者限定特典】即戦力プロンプト・ヴォールト(厳選10選)


    CHAPTER 1: バイブコーディングの思想と「5段階実行ループ」

    1. 「学んでから作る」という最大の罠

    旧来のプログラミング学習は、完全な「ボトムアップ型」でした。

    1. 変数や制御構文を覚える

    2. アルゴリズムとデータ構造を学ぶ

    3. フレームワーク(React等)のステート管理を学ぶ

    4. TODOアプリを作る

    5. 数ヶ月後、いざ本番サービスを作ろうとして挫折する

    このアプローチは、メモリ管理を手動で行っていた時代の遺物です。
    一人で素早く仮説検証し、収益を上げたい個人開発者にとって、この学習法は致命傷になり得ます。

    文法の暗記に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)

    タスクを可能な限り細かく分解します。

    • ❌ 悪い指示: 「お問い合わせフォームを作って」

    • ⭕ 良い指示(バイブコーダー流):

      1. `src/db/schema.ts` に `inquiries` テーブルを追加する

      2. Zodによるバリデーションを含むServer Action `submitInquiry` を作成する

      3. shadcn/uiのInput, Textarea, Buttonを用いたUIを作成する

      4. 送信成功時に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 -v

    2. Claude Codeのグローバルインストール:

    npm install -g @anthropic-ai/claude-code

    3. 認証の実行:
    プロジェクトを作成したいディレクトリに移動し、初期起動します。

    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@latest
    Vercel 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は確率論で動いています。制約を与えずに「モダンなデザイン」と頼めば、インターネット上に存在する無数のテンプレートの「平均値(=無難で退屈なデザイン)」を出力します。

    最高峰のデザイン資産を調達するリソース

    1. 21st.dev (shadcn/uiのnpm): 世界中のトップクリエイターが作成した、コピペ可能なshadcnコンポーネントの宝庫。Bento Grid、アニメーション付きヒーローセクション、洗練された価格表などが手に入ります。

    2. 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のセットアップ & 機密情報の管理

    1. Supabase で新規プロジェクト `vibe-saas` を作成(リージョンは日本最寄りの東京 `ap-northeast-1` またはソウル `ap-northeast-2` を選択)。

    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 production

    2. 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 push

    SQL文を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` と打ち込みましょう。

    あなたの素晴らしいプロダクトが、世界中で使われる日を楽しみにしています。

    この記事が参加している募集

     
     
    Official store for Korea Travel Digital Guide | Support: jjw67162575@gmail.com

    あなたへのおすすめ