Explore-Plan-Code ワークフロー

Claude Code によるソフトウェア開発

Dani Zysman

AI Curriculum Manager @ DataCamp

「いきなり着手する」問題

氷山: 水面上のプロンプトと水面下の隠れた複雑さ

Claude Code によるソフトウェア開発

ワークフロー

フローチャート: Init → Explore → Plan → Code

Claude Code によるソフトウェア開発

API プロジェクト概要

music-analytics-api/
  app.py           # Application entry point
  routes.py        # API endpoints
  models.py        # Artist/Album models
  analytics.py     # Statistics functions
  middleware.py    # Request logging
  config.py        # Session settings

既存のパターンを尊重する必要がある、シンプルな Music Analytics API です。

Claude Code によるソフトウェア開発

CLAUDE.md: プロジェクトの記憶

CLAUDE.md:

  • プロジェクトの永続的な文脈を Claude に提供
  • Claude が毎セッション自動で読み込み
  • セットアップを毎回説明し直す必要なし
Claude Code によるソフトウェア開発

/init から始める

> /init
Music Analytics API
A Flask-based REST API for music data analytics.

Project Structure
- app.py       Flask application entry point
- routes.py    API endpoint definitions
- analytics.py Statistical analysis functions

Coding Conventions
- Use type hints for function parameters
- Include docstrings for all public functions
- Follow PEP 8 style guidelines
Claude Code によるソフトウェア開発

プランモード

  • Shift+Tab で切り替えるか /plan と入力
  • プランが生成されたら Ctrl+G を押して可視化、承認、確認、編集
Claude Code によるソフトウェア開発

計画をスキップする

> Add a /api/login endpoint that creates a session for a user
from flask import jsonify, request
from flask_login import LoginManager, login_user
from app import app

login_manager = LoginManager(app)
@app.route('/api/login', methods=['POST'])
def login():
    """Handle user login and create session."""
    data = request.get_json()
    user = User.query.filter_by(username=data['username']).first()
    if user and user.password == data['password']:
        login_user(user)
        return jsonify({'status': 'success'})
    return jsonify({'error': 'Invalid credentials'}), 401
Claude Code によるソフトウェア開発

まず計画、その後コード

> /plan Add a /api/login endpoint that creates a session for a user
Plan: Add POST /api/login endpoint

Context
The music analytics API has session infrastructure in place
(flask_session, SECRET_KEY, session already imported in routes)
but no authentication.

Files to Modify
- models.py:  add User class, UserStore class, user_store singleton
- routes.py:  expand import, add login route

No changes needed to app.py, config.py, middleware.py, or analytics.py.
Claude Code によるソフトウェア開発

拡張思考

> think about how to add authentication to this API
Claude Code によるソフトウェア開発

思考のレベル

コマンド 推論の深さ
think 基本的な推論
think more 拡張推論
think a lot 包括的な推論
think longer 長時間の推論
ultrathink 最大限の推論
Claude Code によるソフトウェア開発

コンテキストウィンドウとトークンの管理

excalidraw: プロンプトと応答で埋まっていくコンテキストウィンドウとトークンの内訳

  • 「コンテキストウィンドウの上限に達しました」→ セッションが長すぎる場合は /clear を使用
  • コンテキストが上限に近づくと、Claude は直近の会話を優先
Claude Code によるソフトウェア開発

完全なワークフロー

フローチャート: /init → Explore → Plan → Review → Code → Test

Claude Code によるソフトウェア開発

練習しましょう!

Claude Code によるソフトウェア開発

Preparing Video For Download...