💬

Claude Codeが実現する「対話駆動開発」 - Part 3: 技術的基盤編

に公開

👨‍💻 執筆者について
本記事は、実際にClaude Codeと対話しながらセッションを振り返り、その結果をClaude Codeが中心となって執筆したものです。

🔧 使用したツールについて
VS Code + Claude Code version 2.0.30 を使用。より高度な機能を利用するため、Claude Maxプランを推奨します(Proプランでは機能や制限により再現が難しい場合があります)。


🚀 はじめに:AIの進化と「エージェント型開発」

Part 2の記事
https://zenn.dev/delisit/articles/7f216b91ed1dd1
では、モデルの推論能力向上や効果的なプロンプトテクニックにより、高度な対話が可能になったことを解説しました。

本記事では、対話相手であるClaude Codeが、なぜ単なるアイデア出しで終わらず、要件定義から実装、テストまでの全プロセスを支援・完遂できるのかという技術的な理由を、その特有のエージェントツールに焦点を当てて解説します。

💡 重要: Claude Codeは「コード生成ツール」ではなく、ファイル操作やコマンド実行を伴う**「エージェント型開発ツール」**です。

一般的なチャットAIの限界(Web版のChatGPT/Claudeなど)

限界 Claude Codeとの比較
ファイル操作 コードを提示するだけで、実際にプロジェクトファイルを作成・編集できない。
コマンド実行 Git操作、テスト、ビルドなどの外部連携を自動化できない。
ローカルコンテキスト プロジェクト全体の既存ファイル構造やドキュメントを参照・理解できない。
進捗管理 長時間作業を構造化して可視化できず、中断リスクが高い。

Claude Codeは、後述する6つの特有の技術機能をAPIとして使用することで、これらの限界をすべて解決し、「対話駆動開発」を実現します。


🛠️ 第1章: Claude Code特有の6つの技術的機能

Claude Codeは、通常のLLMの推論能力に加え、開発に特化したツール(Function Calling)を持つことで、開発者(ユーザー)の意図を 「実行」 へと繋げます。

1. AskUserQuestion - 構造化された対話を実現するUIツール

機能 技術的仕様と利点 他AIツールとの違い
UI質問形式 質問と選択肢をVS CodeのUIとして表示し、ユーザーはクリックで回答。 テキストベースの質問しかできないため、回答の解釈が必要になる。
構造化データ回答 ユーザーの回答を自然言語ではなく、AIがJSON形式の構造化データとして受け取る。 回答の曖昧性が排除され、AIが次の処理をプログラム的に実行・決定できる。誤解のリスクがゼロ。
並列質問 一度の呼び出しで最大4つの質問を同時に提示可能。 対話のラウンドトリップを削減。効率的な要件定義やトレードオフの確認が可能となり、対話速度が向上する。

2. TodoWrite - 長時間処理の可視化と進捗管理

機能 技術的仕様と利点 活用シーン
タスク可視化 AIが実行する一連のタスクをリスト化し、pending / in_progress / completed のステータスをリアルタイムで表示。 非同期処理の可視化。ファイル操作やテスト実行など、時間がかかる処理の**「待ち時間」**を不安なく過ごせる。
デバッグ容易化 処理失敗時、どのタスクでエラーが発生したかが明確になる。 エラー箇所の特定が容易になり、AIが自己修復や再実行を行う際の開始地点を明確にできる。

3. ファイル操作ツール群 - 実行環境への直接介入

ツール 技術的仕様と利点 他AIツールとの違い
Write / Edit プロジェクト内のファイルを新規作成したり、既存ファイルを**部分的に置換(編集)**できる。 **「コードを提示するだけ」**ではない。AIが変更を直接適用するため、ユーザー側の手動コピペミスやフォーマット崩れを防げる。
Glob / Grep パターンマッチングによるファイル検索や、ファイル内容の正規表現検索が可能。 ローカルコンテキストの理解に不可欠。大規模プロジェクトでも関連ファイルを網羅的に探し出し、一貫した修正を保証する。
並列操作 複数のファイルを同時にWriteできる。 ファイル横断的な修正(例:DBスキーマ変更に伴う複数のモデル・スキーマ・APIファイルの更新)の原子性(一括性)を保証する。

4. Bash統合 - コマンド実行による開発環境連携

機能 技術的仕様と利点 活用シーン
コマンド実行 ターミナルコマンド(git、pytest、npm、gcloudなど)を実際に実行できる。 Git統合、テスト実行、デプロイなどのCI/CD的な作業をAIが自動で完遂。
出力の取得・解析 コマンドのstdout(標準出力)やstderr(エラー出力)をAIが取得し、解析して次のアクションを決定する。 テスト結果の解析(例:FAILEDを検知)やエラーハンドリング、自己修復の起点となる。

5. コンテキスト管理 - 効率的な情報注入

機能 技術的仕様と利点 活用シーン
@references プロンプト内で @README.md や @src/ のように明示的にファイルやディレクトリを参照。 コンテキストウィンドウの効率化。必要なファイルだけをAIに読み込ませるため、トークン使用量を削減し、意図の明確化と応答速度の向上を図る。
CLAUDE.md プロジェクト固有の命名規則、アーキテクチャ、制約事項を定義したドキュメント。 知識の永続化。プロジェクトのルールをAIが自動で学習・適用するため、コード品質の一貫性が保証され、技術的負債の蓄積を防ぐ。

6. Agent (Task) ツール - 並列処理と専門化

サブエージェント 技術的仕様と利点 活用シーン
Explore コードベース探索に特化。GlobやGrepを駆使した高速検索、アーキテクチャ理解を担う。 大規模なプロジェクトで修正が必要な関連ファイルを短時間で網羅的に発見。
general-purpose 汎用的な独立タスクを実行。 依存関係のない複数のタスク(例:OpenAPI仕様の生成と統合テストの作成)を並列実行し、処理時間を短縮する。

🚀 第2章: 技術機能の組み合わせによる開発変革

これらのエージェントツールを組み合わせることで、Claude Codeは他のAIにはできない、以下のような開発フローを実現します。

2.1 対話駆動開発:リアルタイムな開発フェーズ間移動

観点 従来の開発 対話駆動開発 (Claude Code)
フェーズ分離 要件定義 \to 設計 \to 実装と分離し、後戻りコストが高い。 リアルタイム遷移:要件定義 \leftrightarrow 設計 \leftrightarrow 実装を対話を通じてシームレスに移動。
フィードバック 遅い。文書化 \to レビュー \to コード化という手動プロセス。 高速フィードバック:AskUserQuestionで要件収集後、すぐにWriteで設計書やコードを生成。

2.2 エンドツーエンドの自動化と自己修復

Git操作、テスト、デプロイを含む一連の作業をAIが連続的に実行し、エラーが発生した場合は自動で修正し、再テストまで行います。

例:バグ修正からPR作成まで

1.  **[Bash]** `git checkout -b fix/auth-bug`(ブランチ作成)
2.  **[Edit]** `src/auth.py`(バグを修正)
3.  **[Bash]** `pytest tests/test_auth.py`(テスト実行 $\to$ **エラーを検出**)
4.  **[Read]** `src/auth.py`(該当箇所を確認)
5.  **[Edit]** `src/auth.py`(修正を適用)
6.  **[Bash]** `pytest tests/test_auth.py`(再テスト $\to$ **成功**)
7.  **[Bash]** `git commit ... && git push ...`(コミット&プッシュ)
8.  **[Bash]** `gh pr create ...`(プルリクエスト作成)

この一連のループが数分で完結するため、従来の 手動デバッグループ(10〜20分) と比較して、開発速度が飛躍的に向上します。

2.3 プロジェクト知識の自動適用と一貫性の保証

CLAUDE.mdにコーディング規約やテストカバレッジのルールを記述することで、AIが生成するコードに一貫性が生まれます。

  • 効果: ユーザーが「命名規則に従って」と言うだけで、AIはCLAUDE.mdを参照し、自動的に小文字・複数形のエンドポイント、必要なテストケースの追加などを行います。
  • 利点: 新規参入の初級エンジニアでも、プロジェクトのベストプラクティスを意識することなく、高品質なコードをすぐに生成できます。

💡 まとめ:Claude Codeが開発を変える理由

Claude Codeが対話駆動開発を実現できるのは、単にClaude4.5などの最新のLLMが賢いモデルだからではなく、 実行可能なツール群(エージェント) がLLMと統合されているからです。

項目 一般的なチャットAI Claude Code(エージェント型)
目的 情報提供、アイデア出し 開発の完遂、デリバリー
実行能力 テキストの生成のみ ファイルの操作、コマンドの実行
フィードバック 手動コピペで遅延 自動実行と検知でリアルタイム
知識 短期的なセッション依存 CLAUDE.mdで永続化

我々エンジニアにとって、Claude Codeは単なるアシスタントではなく、ベストプラクティスを常に自動適用し、手動作業とデバッグを肩代わりしてくれる共同開発者となります。

システム開発現場においても、これまでの単純なチャットツールの開発と運用だけでは、このような開発体験を生み出すことは難しいと思われます。今回Claude Codeの挙動や内部仕様を研究することにより、今後自分たちでAIエージェントを開発・運用する際にも有用な参考情報となることがわかりました。

Discussion