Vibe Coding 2.0 — 「何を作らないか」を知る 18 のルール

Vibe Coding とは(前提知識)

Vibe Coding は、Andrej Karpathy(OpenAI 共同創設者)が 2025 年初頭に提唱した概念で、「コードの細部を手で書く」のではなく、AI に自然言語で指示してコードを生成させ、“ノリ(vibe)“で開発を進める スタイルを指します。Cursor や Claude Code などの AI コーディングツールの普及とともに広まりました。

MVP とは

MVP(Minimum Viable Product / 実用最小限の製品) とは、顧客に価値を提供できる最小限の機能だけを備えた製品のことです。完璧な製品を作り込んでからリリースするのではなく、核となる機能だけを素早く形にして市場に投入し、実際のユーザーからフィードバックを得ながら改善していくアプローチを指します。

  • 目的: アイデアが市場に受け入れられるかを、最小のコストと時間で検証する
  • 考え方: 「完成品」ではなく「検証のための道具」。100 点を目指すのではなく、60 点で出して学ぶ
  • 例: 動画配信サービスなら、レコメンド機能や検索機能を後回しにして、まず「動画を再生できる」だけのアプリをリリースする

Vibe Coding 2.0 の文脈では、AI ツールを活用して MVP を高速にシップ(出荷)する ことが繰り返し強調されています。以下のルール群は、すべて「いかに早く MVP を世に出すか」を軸に設計されています。

Vibe Coding 2.0 とは

Harshil Tomar 氏が X で投稿 した 「Vibe Coding 2.0: 18 Rules to be the Top 1% builder」 は、Vibe Coding の「次のフェーズ」を定義したものです。

初期の Vibe Coding が「とにかく AI に書かせて動けばOK」という姿勢だったのに対し、Vibe Coding 2.0 は「AI を活用しつつも、品質・スピード・持続性を両立させるための規律」を重視します。

核心のメッセージは:

「最強の Vibe Coder は、コーディングが上手い人ではなく、“何を作らないか” を見極められる人だ」

18 Rules の概要

50 以上の MVP を複数の国でシップした経験から導き出されたルールで、大きく 4 つのカテゴリに分類できます。

I. 車輪の再発明をやめる(ツール選定)

#ルール要点
1認証は自作するなClerk や Supabase Auth を使う。自前認証は数週間のムダ
2Tailwind + shadcn/ui を使えTailwind は制約システム、shadcn/ui は本番品質のコンポーネント。デザインゼロから作らない
3生 CSS を書くなTailwind で 99% カバーできる。一貫性とスピードが段違い
4状態管理はシンプルにMVP には Zustand、サーバー状態には React Query / Server Components。Redux は不要
5REST API を自作するなtRPC や Server Actions を使えば、バリデーション前に数週間を浪費しない
6ORM は Prisma + マネージド DBPrisma + Neon/Supabase で DB 操作を型安全に
7バリデーションは Zod + React Hook Formフォームとスキーマバリデーションを統一
8決済は Stripe決済ロジックの自作は危険。Stripe に任せる

II. コード品質の規律

#ルール要点
9クリーンなモジュール構成components / hooks / utils / types を整理。他人がオンボードできる構造に
10技術的負債は 2〜3 機能ごとに清掃早期の負債は許容するが、定期的に返済する
11判断を文書化せよライブラリ選定、DB 設計、トレードオフの理由を記録

III. ユーザー体験への投資

#ルール要点
12空状態とオンボーディングに投資コンテンツがないときに何を表示するか、初日にどう価値を届けるかが UX の要
13パフォーマンスは必須Lighthouse スコア 70 未満はリリース前に修正。遅いアプリはユーザーを失う
14エラートラッキングを入れろSentry 等でエラーを可視化。ユーザーが報告する前に気づく

補足: Lighthouse スコアとは?

ルール 13 で言及されている Lighthouse は、Google が提供するオープンソースの Web ページ品質診断ツールです。Chrome DevTools に組み込まれており、以下の 5 カテゴリを 0〜100 点で評価します。

カテゴリ測定内容
Performanceページの読み込み速度、描画タイミング、インタラクティブになるまでの時間
Accessibility視覚障害者向けの対応、alt 属性、コントラスト比など
Best PracticesHTTPS 使用、非推奨 API の回避、コンソールエラーの有無
SEOメタタグ、クロール可能性、モバイル対応
PWAProgressive Web App としての要件充足度

「スコア 70 未満はリリース前に修正」は主に Performance カテゴリを指し、LCP(メインコンテンツの描画完了時間)、FID(最初の操作への応答遅延)、CLS(レイアウトのズレ)などの指標で構成されます。

1
2
3
4
5
6
# Chrome DevTools から
F12 → Lighthouse タブ → Analyze page load

# CLI から
npm install -g lighthouse
lighthouse https://example.com --view

Python バックエンドでテンプレートから HTML を返す場合は Lighthouse が直接有効です。API のみ提供する場合は、フロントエンド側で計測する指標になります。

IV. マインドセット

#ルール要点
15MVP をまずシップせよ完璧を目指さず、動くものを世に出す
16過剰設計しない「将来必要かも」で機能を追加しない。今必要なものだけ作る
17エネルギーの配分を見極めろ全部に全力を注がない。インパクトの大きい部分に集中する
18“何を作らないか” を知れこれが最も重要。作らないことが最速の開発

Vibe Coding 1.0 vs 2.0 の違い

観点Vibe Coding 1.0Vibe Coding 2.0
姿勢「AI に任せて動けばOK」「AI を活用しつつ規律を持つ」
品質動けば良いモジュール構成・パフォーマンス・UX を意識
ツール選定好きなものを使う実績あるスタックを選び車輪の再発明を避ける
技術的負債放置定期的に返済
ゴールプロトタイプシップ可能な MVP

Python での適用案

元の 18 Rules は JS/TypeScript(Next.js / React)エコシステムを前提としています。Python バックエンド開発に適用する場合、各ルールは以下のように読み替えられます。

I. 車輪の再発明をやめる(ツール選定)

#元ルール (JS/TS)Python 版要点
1Clerk / Supabase Authdjango-allauth / FastAPI + Auth0Django なら allauth 一択。FastAPI なら Auth0 や Supabase Auth の SDK を使う。自前でパスワードハッシュやセッション管理を書かない
2Tailwind + shadcn/uiDjango Templates + Tailwind / htmx + Jinja2フロントを分離しない構成なら htmx + Tailwind で SPA 的な体験を最小構成で実現。管理画面は Django Admin をカスタマイズする方が速い
3生 CSS を書くなTailwind / Pico CSSテンプレートに直接 Tailwind を当てる。同じ原則
4Zustand / React Queryサーバーサイドで完結させる状態は DB + セッション + キャッシュ(Redis)で管理。フロント側の状態管理を最小化する設計にする
5tRPC / Server ActionsDjango REST Framework / FastAPIFastAPI なら型定義から自動で OpenAPI ドキュメントが生成される。Django なら DRF の Serializer + ViewSet で CRUD を数行で実装。Django Ninja も良い選択肢
6Prisma + マネージド DBDjango ORM / SQLAlchemy + AlembicDjango ORM はマイグレーション込みで完結。FastAPI なら SQLAlchemy + Alembic。DB は Supabase / Neon / PlanetScale などマネージドを使う
7Zod + React Hook FormPydantic / DRF SerializersPydantic は Python における Zod。FastAPI はネイティブサポート。Django なら DRF Serializers がバリデーション層を担う
8Stripestripe-pythonまったく同じ。pip install stripe で SDK を入れるだけ

II. コード品質の規律

#元ルールPython 版要点
9モジュール構成Django apps / FastAPI routersDjango なら機能ごとに app を分割。FastAPI なら APIRouter でドメインごとにルーティングを分離。models/ schemas/ services/ api/ の層を意識する
10技術的負債の定期清掃ruff + mypyruff(linter/formatter)と mypy(型チェック)を CI に組み込む。2〜3 機能ごとに ruff check --fix と型エラーを潰す
11判断の文書化ADR + pyproject.tomlArchitecture Decision Records で「なぜ FastAPI ではなく Django を選んだか」等を残す。依存ライブラリの選定理由も記録

III. ユーザー体験への投資

#元ルールPython 版要点
12空状態とオンボーディングAPI レスポンス設計空リストの場合に hintnext_action をレスポンスに含める設計。フロントが空状態を表示しやすくする
13パフォーマンスdjango-debug-toolbar / SQLAlchemy echoN+1 クエリの検出が最優先。select_related / prefetch_related(Django)、joinedload(SQLAlchemy)を徹底。本番では Sentry Performance で監視
14エラートラッキングsentry-sdkpip install sentry-sdk で Django / FastAPI どちらも対応。例外の自動キャプチャとパフォーマンス監視を一括で導入

IV. マインドセット

#元ルールPython 版要点
15MVP をまずシップDjango のフルスタック力を活かすDjango なら Admin + ORM + テンプレートだけで MVP が完結する。API が必要になるまで SPA にしない
16過剰設計しないマイクロサービスにしないMVP 段階でマイクロサービスは不要。モノリスで始めて、必要になったら分割する
17エネルギー配分Django Admin を最大活用管理画面を自作しない。Django Admin のカスタマイズで 80% は間に合う
18何を作らないかPyPI を先に検索する「自分で書く前に PyPI を検索する」を習慣にする

Python 特有の追加ルール

元の 18 Rules には含まれていませんが、Python 開発で重要なポイントです。

ルール要点
仮想環境を必ず使えuv または poetry でプロジェクトごとに環境を隔離。グローバルに pip install しない
型ヒントを最初から書けAI ツールが型情報を頼りにコードを生成するため、Vibe Coding との相性が非常に良い。関数シグネチャには必ず型を付ける
Django vs FastAPI の選定基準迷ったら Django。詳細は後述の「Django vs FastAPI の選定指針」を参照

推奨スタック対応表

用途JS/TS 版Python 版
フレームワークNext.jsDjango / FastAPI
ORMPrismaDjango ORM / SQLAlchemy + Alembic
バリデーションZodPydantic / DRF Serializers
認証Clerkdjango-allauth / Auth0
API 構築tRPCDRF / Django Ninja / FastAPI
Linter / FormatterESLint + Prettierruff
型チェックTypeScriptmypy / pyright
パッケージ管理pnpmuv / poetry
エラー監視Sentrysentry-sdk
決済Stripe (JS)stripe-python

Django vs FastAPI の選定指針

一言でいうと、「迷ったら Django」。FastAPI を選ぶのは明確な理由があるときだけです。Vibe Coding 2.0 の「車輪の再発明をやめる」原則に最も忠実なのは Django です。認証・管理画面・ORM・マイグレーションが全部入りで、MVP を最速でシップできます。

判断フローチャート

管理画面が必要?
  ├─ Yes → Django
  └─ No
       └─ 認証(ログイン/ユーザー管理)が必要?
            ├─ Yes → Django
            └─ No
                 └─ 既存の Django プロジェクトがある?
                      ├─ Yes → Django に追加
                      └─ No
                           └─ API のみで DB も小規模?
                                ├─ Yes → FastAPI
                                └─ No → Django

Django が適しているケース

場面理由
業務システム / 管理画面が必要Django Admin だけで管理画面の 80% が完成する。FastAPI にはこれがない
認証・権限管理django-allauth, django-guardian 等のエコシステムが成熟。FastAPI では自前で組み立てる部分が多い
フルスタック(テンプレート + API)Django Templates + htmx で SPA なしに動的 UI を実現。API も DRF / Django Ninja で同じプロジェクト内に共存
マルチテナントdjango-tenants 等の実績あるライブラリがある
チーム開発「Django の流儀」に従えばプロジェクト構造が統一される。Convention over Configuration
GraphQLStrawberry Django が ORM モデルからスキーマを自動生成。リレーション解決も統合済み

FastAPI が適しているケース

場面理由
API 専用のマイクロサービス管理画面もテンプレートも不要で、軽量に API だけ提供したい場合
非同期処理が中心WebSocket、SSE、大量の並行 I/O。FastAPI は async/await がネイティブ
ML / データパイプラインの API 化学習済みモデルの推論エンドポイントを立てるだけなら FastAPI の方が軽い
Lambda / Cloud Functionsコールドスタートの速さが重要な場合。Django は起動が重い
OpenAPI ドキュメント自動生成Pydantic モデルから自動生成される OpenAPI spec が秀退。DRF でも可能だが FastAPI の方が洗練されている

「両方使う」パターン

排他的な選択ではなく、以下のような構成もあります。

Django (メインアプリ)
  ├── Admin(管理画面)
  ├── django-allauth(認証)
  ├── Strawberry Django(GraphQL API)
  └── Django ORM(データ層)

FastAPI (サブサービス)
  ├── ML 推論エンドポイント
  ├── WebSocket サーバー
  └── 外部 API との非同期連携

Django をモノリスとして中心に据え、非同期処理や ML 推論など Django が苦手な部分だけ FastAPI で切り出す のが実用的です。

Vibe Coding 2.0 の原則との対応

原則DjangoFastAPI
車輪の再発明をやめるAdmin, allauth, ORM が全部入り自分で組み合わせる必要がある
MVP を速くシップDjango だけで完結する場合が多いAPI 以外の部分を別途用意する必要がある
過剰設計しないモノリスで始められるマイクロサービス化の誘惑がある
何を作らないか管理画面を作らなくて済む管理画面が必要なら別途作る

GraphQL API の利用について

元の 18 Rules はルール 5 で「REST API を自作するな(tRPC / Server Actions を使え)」と述べていますが、これは「REST を使え」という意味ではなく、API 層の構築に時間をかけるなという原則です。GraphQL の運用経験があるなら、無理に REST に切り替える必要はありません。

GraphQL が Vibe Coding 2.0 の原則に合致する場面

原則GraphQL の適合性
車輪の再発明をやめるStrawberry や Graphene で Django ORM / SQLAlchemy から自動的にスキーマを生成できる。CRUD の API を手書きする量が減る
バリデーションGraphQL の型システム自体がバリデーション層になる。Pydantic + REST と同等の安全性がスキーマ定義に含まれる
過剰設計しないフロントが必要なデータだけ取得できるため、「このエンドポイントにはこのフィールドが要る/要らない」の調整が不要
MVP を速くシップフロントとバックエンドの開発者が同一人物(=Vibe Coder)なら、API 仕様の合意プロセスがなくなり速い

REST の方が適している場面

場面理由
外部公開 APIREST + OpenAPI の方がサードパーティ開発者にとって馴染みがある
単純な CRUD のみDRF の ViewSet + Router なら 10 行で API が完成する。GraphQL のスキーマ定義はオーバーヘッド
ファイルアップロード中心GraphQL でのファイル操作は仕様が不安定(multipart request spec)
キャッシュが重要REST は HTTP キャッシュ(CDN, ETag)がそのまま効く。GraphQL は POST ベースなのでキャッシュ戦略が複雑
AI ツールの生成精度REST/DRF のコード例は学習データに豊富。GraphQL(特に Strawberry)は AI の生成精度がやや落ちる場合がある

Python GraphQL の推奨スタック

用途ライブラリ理由
GraphQL フレームワークStrawberry型ヒントベースでスキーマ定義。Pydantic / dataclass と自然に統合。Django / FastAPI 両対応
Django 統合Strawberry DjangoDjango ORM のモデルから自動でフィルタ・ページネーション・リレーション解決を生成
認証django-allauth + Strawberry の permission classesREST と同じ認証基盤を共有
N+1 対策Strawberry DataLoaderGraphQL 最大の落とし穴。DataLoader を最初から入れておかないとパフォーマンスが崩壊する

判断基準

  • GraphQL を選ぶべき: フロントが複雑なネスト構造のデータを取得する / 複数の画面が異なるフィールドの組み合わせを必要とする / すでに GraphQL の運用経験がある
  • REST を選ぶべき: 単純な CRUD が中心 / 外部公開 API / チームに GraphQL 経験者がいない

慣れたスタックを使い続けることが最速のシップにつながります。ただし DataLoader の導入だけは MVP 段階から必須 です。

まとめ

Vibe Coding 2.0 の本質は、AI コーディングが「誰でもモノを作れる時代」をもたらした一方で、プロダクトとして成立させるには「作らない判断力」と「ツール選定の規律」が不可欠 だという主張です。コードを書く能力よりも、アーキテクチャの判断力と出荷スピードが差別化要因になる、という新しい開発者像を提示しています。


参考: