Vibe Coding 入門チュートリアル

Vibe Coding(雰囲気プログラミング)はまったく新しいプログラミングパラダイムです。一行ずつ手書きでコードを書く必要はなく、自然言語で欲しいものを記述し、AIがコードを書き、私たちはレビューと方向性の管理を担当します。

Vibe Codingチュートリアル参考:https://www.example.com/vibe-coding/vibe-coding-tutorial.html


Vibe Codingとは

Vibe Codingこの言葉は、元テスラAIディレクターでOpenAIの共同創業者であるAndrej Karpathy氏が2025年2月に初めて提唱しました。

彼はこのまったく新しいプログラミング手法を一言で次のように要約しました:

「I just vibe. I don't even touch the keyboard sometimes. I just talk to the AI, it writes the code, I review it, and we iterate.」

訳すとこうなります:あなたはただ自分の「感覚」を説明するだけで、AIがコードを書き、あなたがレビューし、それを繰り返す。

簡単に言うと、Vibe Codingとは:あなたが普通の言葉でAIに欲しい機能を伝えると、AIがコードを書いてくれる。構文の細部にこだわる必要も、APIパラメータを覚える必要も、すべてのエラーを手動でデバッグする必要もなく、これらはすべてAIが処理します。

私たちの役割は「コードを書く人」から「要件を記述する人」へと変わり、言い換えれば——プログラマーからプロダクトマネージャー+アーキテクトへと変わります。

Vibe CodingはAIにあなたの思考を代替させるのではなく、AIに価値の低い反復作業を処理させ、問題の理解、アーキテクチャの設計、結果の検証といった、より創造的な部分に集中できるようにするものです。


Vibe Coding vs 従来のプログラミング

Vibe Codingと従来のプログラミング手法との違いを理解することは、より上手に活用するのに役立ちます。

観点 従来のプログラミング Vibe Coding
入力方法 行ごとに手書きでコードを書く 自然言語で要件を記述する
重視する点 構文、API、実装の詳細 要件、アーキテクチャ、検証
デバッグ方法 手動のブレークポイント/ログによるデバッグ エラーメッセージをAIに渡して修正させる
速度 タイピング速度と熟練度に依存する 要件記述の明確さに依存する
適用シーン すべてのプログラミングタスク プロトタイプ開発、CRUD、スクリプトツール、UIページ
中核となるスキル プログラミング言語の習熟度 要件の分解+結果の検証能力

なぜ今Vibe Codingが可能なのか

Vibe Codingが2025年に可能となったのは、いくつかの重要な条件が成熟したためです。

大規模モデルのコーディング能力の飛躍

GPT-5.5、Claude 5、Geminiなどのモデルは、コード生成における正確性が大幅に向上しました。

これらのモデルは構文的に正しいコードを書けるだけでなく、プロジェクトの文脈を理解し、ベストプラクティスに従い、境界条件を処理することもできます。

さらに重要なのは、超長いコンテキストを処理でき、プロジェクト全体を一度に読み取って、コードベースの構造を理解できることです。

AIプログラミングツールの爆発的普及

Cursor、Claude Code、GitHub Copilot、Windsurfなどのツールは、AI機能を開発フローに深く統合しました。

これらのツールはコード補完だけでなく、ファイルの直接修正、ターミナルコマンドの実行、コードベースの検索もでき、まるで本物の開発者のように動作します。

Agentモードの登場

Agentモードのツールは、ファイルの読み取り、コードの作成、テストの実行、テスト結果に基づくエラー修正といった複数ステップのタスクを自律的に実行できます。

あなたは最初の指示を与えるだけで、Agentはタスクが完了するまで自分でループして反復します。


主流ツールの紹介

以下は、現在最も主流のVibe Codingツールで、それぞれ特徴があります。

ツール タイプ 主な特徴 適したシーン
Qoder Agent IDE コードベースの深い理解、Quest自動タスク、マルチAgent、Repo Wiki、CLI/IDEデュアルモード 中〜大規模プロジェクト、長期プロジェクトの保守
Trae AIネイティブIDE 対話駆動開発、コードの自動生成と修正 Vibe Coding、新規プロジェクトの迅速な立ち上げ
Cursor AIエディタ プロジェクトレベルの理解、複数ファイルの修正、Agentモード フルスタック開発、大規模プロジェクト
Claude Code CLI Agent ターミナルでの複雑なタスクの実行、プロジェクトの自動修正 バックエンド、自動化開発
GitHub Copilot AIプログラミングアシスタント スマート補完、チャット、Agent 日常の開発サポート
Windsurf AIエディタ Cascadeワークフロー、複数ファイルの自動修正 迅速な開発、小〜中規模プロジェクト
OpenAI Codex AIプログラミングAgent タスクを理解し、完全な開発フローを実行 自動化開発
Bolt.new オンラインAI開発プラットフォーム 一言で完全なアプリを生成 MVP、プロトタイプ検証
v0 by Vercel UI生成ツール Reactページを自動生成 ページデザイン、コンポーネント開発
Replit AI オンラインIDE クラウド開発+AIコラボレーション 教育、迅速なテスト
Lovable AIアプリジェネレーター 記述から直接SaaSを生成 起業、プロダクト検証
Firebase Studio AIアプリケーションプラットフォーム AI+バックエンドサービス統合 App / Web開発

初めてVibe Codingに触れる場合は、まず中国国内のツールをQoder 或 Trae使い始めるとよいでしょう。操作はVS Codeに似ており、学習曲線が最も緩やかで、慣れ親しんだエディタ環境を変えることもありません。


クイックスタート

以下ではClaude Code(ターミナルCLI)を例に、Vibe Codingの典型的なワークフローを示します。

Claude Code完全チュートリアル参考:https://www.example.com/claude-code/claude-code-tutorial.html

最初のプロジェクト:Hello, Vibe World!

目標:5分で、純粋な自然言語で、Claude Codeに個人名刺ウェブページを作成してもらいます。

ステップ1:プロジェクトフォルダを作成する

mkdir my-card && cd my-card
claude

ステップ2:Claudeに欲しいものを説明する

Claude Codeの対話インターフェースで、次のように入力します:

帮我创建一个个人名片网页,要求:
- 显示我的名字(张三)和职业(前端开发者)
- 有一个简短的个人简介区域
- 列出3个技能标签(React、Python、设计)
- 设计风格:简洁现代,深色背景,有轻微的渐变效果
- 单个 HTML 文件,不需要外部依赖

ステップ3:Claudeの作業を観察する

Claude Codeが自動的に次の処理を行うのを確認できます:

分析你的需求
创建 index.html 文件
写入完整的 HTML、CSS 和少量 JavaScript

ステップ4:結果を確認する

open index.html   # macOS
# 或
xdg-open index.html   # Linux

ステップ5:反復して修正する

満足できない場合は、会話を続けます:

把背景色改成深蓝色渐变,字体换成更现代的 sans-serif,
技能标签加上悬停动画效果

Claude Codeがファイルを直接修正するので、あなたがコードに触れる必要はありません。


Vibe Codingの核となるワークフロー

Vibe Codingの核となるワークフローは、記述、レビュー、反復、納品の4つのステップに要約できます。

完全なワークフロー図

描述需求
    ↓
AI 生成代码
    ↓
你审查 Diff
    ↓
  ┌─ 不满意 → 描述修改意见 → AI 重新生成
  │
  └─ 满意 → 运行测试
              ↓
            ┌─ 测试失败 → 把报错贴给 AI → 修复
            │
            └─ 测试通过 → 提交代码

ステップ1:要件を記述する

自然言語でClaude Codeに欲しいものを伝えます。

コードを書く必要はなく、技術的な詳細を言う必要もありません。「何をするか」を明確に伝えるだけで十分です。

簡単な要件記述の例:

帮我创建一个 Python Flask 项目,有一个 /api/tasks 接口,
支持 GET 获取任务列表和 POST 创建新任务,
任务数据用 JSON 文件存储。

Claude Code はそれを受け取ると、ファイル構造を計画し、コードを生成し、依存関係をインストールし、テストを実行します。

ステップ2:Diffをレビューする

Claude Code がコードを生成すると、すべての変更(Diff)がレビュー用に表示されます。

これは Vibe Coding で最も重要なポイントです。AI が何を変更したのかを理解できなければなりません。

レビュー時に重点的に確認する点:

チェック項目具体的に見る内容
ロジックの正確性条件分岐が妥当か、エッジケースが処理されているか
セキュリティSQL インジェクションや XSS などのセキュリティ脆弱性がないか
データフローデータの入力、処理、出力が期待どおりか
命名規則変数名や関数名が明確で分かりやすいか
冗長なコード不要な重複や未使用のインポートがないか

レビューは文句を言うためではなく、コードの各行が何をしているのかを理解するために行います。もしコードの一部が理解できなければ、Claude Code に「このコードはどういう意味ですか?なぜこのように書いたのですか?」と直接質問しましょう。

ステップ3:反復して修正する

レビューで問題が見つかったら、自然言語で望む修正を説明します。

よくある反復的な指示の例:

把 JSON 文件存储改成 SQLite,用 SQLAlchemy 做 ORM。
给 POST 接口加个验证:title 必填,不能为空字符串。
报错了,看一下:
Traceback (most recent call last):
  File "app.py", line 42, in create_task
    db.session.add(task)
AttributeError: 'NoneType' object has no attribute 'session'

反復のたびに Claude Code はコードを再生成して Diff を表示するので、満足するまで再度レビューします。

ステップ4:納品する

すべての機能が期待どおりでテストに合格したら、コードをコミットします。

Claude Code が commit message を作成してコミットしてくれます:

$ git log --oneline
a1b2c3d feat: add task CRUD API with SQLite storage

実践デモ:Claude CodeでTodoアプリをゼロから構築する

以下では、完全な実践ケースを通じて Vibe Coding の全プロセスをデモします。

Claude Code を使って、フロントエンドのページとバックエンド API を含む Todo アプリをゼロから構築します。

プロジェクトの目標

機能説明
タスク追加タスクのタイトルを入力してリストに追加
タスク完了チェックをクリックしてタスクを完了とマーク
タスク削除不要なタスクを削除
フィルタリングすべて/進行中/完了でフィルタリング
永続化データは SQLite に保存され、リフレッシュしても失われません

ステップ1:プロジェクトの初期化

ターミナルでプロジェクトディレクトリを作成し、Claude Code を起動します:

$ mkdir vibe-todo && cd vibe-todo
$ claude

次に Claude Code に要件を説明します:

帮我创建一个 Todo 应用,要求:
1. 后端用 Python Flask + SQLAlchemy + SQLite
2. 前端用纯 HTML/CSS/JS,风格简约现代
3. 支持添加、完成、删除、筛选任务
4. 所有 API 返回 JSON,前端用 fetch 调用
5. 代码注释用中文

ステップ2:Claude Codeが何をしたか

Claude Code は要件を受け取ると、以下の手順を自動的に実行しました:

まずプロジェクト構造を作成しました:

vibe-todo/
├── app.py              # Flask 主应用
├── models.py           # 数据库模型
├── requirements.txt    # 依赖清单
├── static/
│   ├── style.css       # 样式文件
│   └── script.js       # 前端逻辑
└── templates/
    └── index.html      # 页面模板

次にバックエンドコードを生成しました。以下は app.py の主要な内容です:

実例

# ファイルパス:app.py
# Flask メインアプリケーション。API ルートとページエントリを定義

from flask import Flask, render_template, request, jsonify
from models import db, Task

app = Flask(__name__)
# SQLite データベースのパスを設定
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# データベース拡張を初期化
db.init_app(app)

# アプリ起動時にテーブル構造を自動作成
with app.app_context():
    db.create_all()

@app.route('/')
def index():
    """メインページを返す"""
    return render_template('index.html')

@app.route('/api/tasks', methods=['GET'])
def get_tasks():
    """すべてのタスクリストを取得し、ステータスによるフィルタリングをサポート"""
    # クエリパラメータからフィルタ条件を取得、デフォルトは 'all'
    status = request.args.get('status', 'all')
    # ステータスに基づいてタスクをフィルタリング
    if status == 'completed':
        tasks = Task.query.filter_by(completed=True).all()
    elif status == 'active':
        tasks = Task.query.filter_by(completed=False).all()
    else:
        tasks = Task.query.all()
    # タスクオブジェクトを辞書リストに変換し、JSON シリアライズを容易にする
    return jsonify([t.to_dict() for t in tasks])

@app.route('/api/tasks', methods=['POST'])
def create_task():
    """新しいタスクを作成"""
    data = request.get_json()
    # 必須フィールド title を検証
    title = data.get('title', '').strip()
    if not title:
        return jsonify({'error': 'タスクタイトルは空にできません'}), 400
    # タスクオブジェクトを作成し、データベースに保存
    task = Task(title=title)
    db.session.add(task)
    db.session.commit()
    return jsonify(task.to_dict()), 201

@app.route('/api/tasks/<int:task_id>', methods=['PUT'])
def update_task(task_id):
    """タスクステータスの更新(完了/未完了)"""
    task = Task.query.get_or_404(task_id)
    data = request.get_json()
    # リクエストに completed フィールドが含まれている場合はステータスを更新
    if 'completed' in data:
        task.completed = data['completed']
    db.session.commit()
    return jsonify(task.to_dict())

@app.route('/api/tasks/<int:task_id>', methods=['DELETE'])
def delete_task(task_id):
    """指定されたタスクを削除"""
    task = Task.query.get_or_404(task_id)
    db.session.delete(task)
    db.session.commit()
    return jsonify({'message': '削除成功'}), 200

if __name__ == '__main__':
    app.run(debug=True)

さらにデータベースモデル models.py:

実例

# ファイルパス:models.py
# データベースモデル定義、SQLAlchemy ORM を使用

from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

# データベースインスタンスを作成、後で app.py で初期化
db = SQLAlchemy()

class Task(db.Model):
    """タスクモデル。データベース内の tasks テーブルに対応"""
    __tablename__ = 'tasks'

    # 主キー、自動増分の整数
    id = db.Column(db.Integer, primary_key=True)
    # タスクタイトル、必須、空にできない
    title = db.Column(db.String(200), nullable=False)
    # 完了ステータス、デフォルトは False
    completed = db.Column(db.Boolean, default=False)
    # 作成時間、自動記録
    created_at = db.Column(db.DateTime, default=datetime.utcnow)

    def to_dict(self):
        """タスクオブジェクトを辞書に変換し、JSON シリアライズを容易にする"""
        return {
            'id': self.id,
            'title': self.title,
            'completed': self.completed,
            'created_at': self.created_at.isoformat()
        }

ステップ3:コードのレビュー

Claude Code が Diff を表示したら、行ごとにレビューします。

いくつかの問題を見つけて修正提案をすることもあるでしょう。

例えば、API ルートに統一されたプレフィックスがないことに気づき、修正を提案します:

把所有 API 路由加上 /api/v1 前缀,方便以后版本管理。

Claude Code がすべてのルートを自動修正し、再度レビューして承認します。

ステップ4:テストの実行

レビューが承認されたら、Claude Code にアプリを起動してテストさせます:

$ python app.py
 * Running on http://127.0.0.1:5000

ブラウザで http://127.0.0.1:5000 にアクセスすると、完全な Todo アプリのインターフェースが表示されます。

タスク追加機能のテスト:

$ curl -X POST http://127.0.0.1:5000/api/v1/tasks \
  -H "Content-Type: application/json" \
  -d '{"title": "学习 Vibe Coding"}'

戻り結果:

{
  "completed": false,
  "created_at": "2026-06-24T10:30:00",
  "id": 1,
  "title": "学习 Vibe Coding"
}

ステップ5:コードのコミット

すべての機能の検証が完了したら、コードをコミットします:

$ git add .
$ git commit -m "feat: 完成 Todo 应用基础功能"

この実践プロセス全体を通じて、あなたはコードを1行も手動で書きませんでした。あなたが行ったのは、要件の説明、Diff のレビュー、修正の説明、テストの実行、コードのコミットです。これが Vibe Coding の核となる体験です。


良いプロンプトを書くコツ

Vibe Coding の効果は、要件をどのように説明するかに大きく依存します。

良いプロンプトは AI に期待に近いコードを一度で生成させ、反復回数を減らします。

4要素モデル

高品質なプロンプトには4つの要素を含めるべきです:

要素説明例
何をするか実装する機能を明確に説明する「ユーザー登録インターフェースを作成する」
何を使うか技術スタックとツールを指定する「Flask + SQLAlchemy + SQLite を使う」
どう制約するか制約条件と境界を示す「メールアドレスは必須で、形式検証が必要」
期待する形式出力の好みを説明する「コードのコメントは日本語で、各関数に docstring を追加する」

良いプロンプト vs 悪いプロンプト

悪いプロンプト良いプロンプト
ログイン機能を作ってFlask でログインインターフェースを実装して。メールアドレスとパスワードを受け取り、bcrypt でパスワードを暗号化し、JWT で token を返して。token の有効期限は24時間。ログイン失敗時は具体的なエラーメッセージを返して。
このボタンは見た目が悪すぎるこの送信ボタンを角丸8px、背景色 #2563eb、白い文字に変更して。ホバー時は色を10%濃くして、0.2秒のトランジションアニメーションを追加して。
エラーが出たので修正してpython app.py を実行するとエラーになる:AttributeError: 'NoneType' object has no attribute 'session'。データベース初期化の問題のように見えるので、調査して修正して。

プロンプトの核心的な原則:具体的であればあるほど、結果は良くなります。曖昧な要件は曖昧なコードしか生みません。


よくある誤解と注意点

誤解1:AIはすべてのプログラミング知識を代替できる

Vibe Coding はプログラミングのハードルを下げましたが、ハードルを無くしたわけではありません。

変数、関数、API、データベース、HTTP、非同期などの基本概念を理解する必要が依然としてあります。そうでなければ、AI が生成したコードが正しいか判断できず、要件を効果的に説明することもできません。

誤解2:すべての機能を一度に記述する

製品全体の PRD ドキュメントを AI にコピーして、一度で完璧なコードを生成することを期待してはいけません。

AI の注意力には上限があり、要件が多ければ多いほどエラーが発生しやすくなります。

より効果的な方法は、コア機能 → 検証 → 機能追加 → 検証 → 反復を続ける、です。

誤解3:AIが書いたコードを読まない

AI が生成したコードをそのままマージする開発者もいますが、これは非常に危険です。

AI はセキュリティ脆弱性、パフォーマンスの問題、または完全に不合理なアーキテクチャを持ち込む可能性があります。

少なくとも主要なロジックをざっと確認して、明らかな問題がないことを確認する必要があります。

注意点

  • 機密情報(APIキー、データベースパスワード)はチャットに直接書かないでください——まずコード上で環境変数のプレースホルダーを使い、その後手動で入力します
  • 重要な変更のたびにGitへコミットし、問題発生時にロールバックしやすくします
  • AIが生成したコードは、チームのコーディング規約に合わない可能性があるため、手動での調整が必要です
  • 高い信頼性が求められるコード(決済、認証、データ処理)は、AIが生成した後、必ず人手によるレビューを行ってください

Vibe Codingに適したシーン

Vibe Coding は万能ではありません。どのような場面に適しているかを把握することで、労力をより適切に配分できます。

場面 適合度 説明
プロトタイプ/MVP開発 極めて高い アイデアを素早く検証し、数時間で使えるデモを作り出せます
CRUD インターフェース 極めて高い 反復パターンが明確で、AIの完成度が高い
フロントエンドページ/コンポーネント とても高い HTML/CSS/React コンポーネントは、AIが非常に得意とします
スクリプト/自動化ツール とても高い 一回限りのスクリプト、データ処理、ファイル操作
単体テストの作成 とても高い 関数シグネチャに基づいてテストケースを生成します
複雑なアルゴリズムの実装 中程度 明確なアルゴリズムの説明が必要で、人手による正しさの検証も必要です
低レイヤーシステムの最適化 比較的低い メモリレイアウト、キャッシュライン、ハードウェア特性が関わるため、AIは微妙なエラーを起こしやすい
高いセキュリティが求められるコード 慎重 暗号化、認証、決済系のコードは、AIが生成した後、必ず専門家によるレビューが必要です
その他の拡張