
はじめに
Claude 3.5が登場してAI駆動開発に可能性を感じ始めた頃から、俺は一貫してAIを活用した開発手法を実践してきた。当時はまだ今ほどツールも整っておらず、手探りで開発していたが、その中で続けてきたノウハウがある。
「AI駆動開発」と呼ばれる手法があり、Claude CodeやClaude 4の登場でAI開発環境は飛躍的に進化した。自然言語でプロンプトを書いてコードを生成する開発スタイルが一般化している。
こうした進化の中でも、俺がClaude 3.5時代から継続してきたノウハウが依然として色褪せることなく効果的であることが明確になってきた。このノウハウについては以前別の場所で書いていたのだが、今でも十分に通用するため、改めてここで公開することにした。
配信中のアプリはこちら(Mac専用アプリ)
AI駆動開発の課題
コンテキスト管理の問題
AI駆動開発で最も深刻な問題がこれだ。AIとの会話を続けていると、次第に回答精度が落ちていくことに気づくだろう。これはLLM(大規模言語モデル)の特性上、コンテキストウィンドウに制限があり、長い会話履歴を保持できないためである。
CursorやClineといったIDE統合ツールを使っていても、この問題は完全には解決しない。会話が長くなるほどAIの回答精度は確実に低下していく。
会話リセットの必要性
この問題を解決するために、定期的に会話履歴をリセットする必要がある。しかし、リセットすると以前の文脈が失われてしまう。これにより、プロジェクトの継続性を確保することが難しくなる。
リセット後、AIは以前話していた内容を忘れてしまう。仕様を忘れられては開発が進まないため、何らかの対策が必要なのだ。
AI駆動開発の核となる「記憶管理」
AIの記憶に頼らない開発体制を構築することが重要である。そのために必要な3つの要素を以下に示す。
1. 仕様のドキュメント化
AIが忘れても参照できる形で仕様を文書化することが不可欠だ。プロジェクトの目的・機能要件・制約条件を明確に記述し、会話リセット後も共有できる形式でドキュメントを管理する。ベースとなる仕様書と、画面ごとの仕様書などに分けるのもありだろう。
2. 実装進捗の記録
どこまで実装したかの「セーブデータ」的な記録を残す。これはゲームのセーブデータのような役割を果たす。機能実装状況のチェックリストを作成し、コードベースの現状を容易に把握できるようにする。
3. 問題対応ログ
実装過程で発生した問題とその対処法を記録しておく。回避策や解決方法を蓄積し、同様の問題が再発した際の参照資料とする。これにより、同じ問題で何度も躓くことを防止できる。
開発フロー
AI駆動開発に必要なドキュメントとその更新サイクルは以下の通りだ。
- プロジェクト開始
- メインドキュメント作成 - 仕様書とプロジェクト進行ルールを準備
- サブドキュメント準備 - ディレクトリ構造、トラブルシューティング、進捗ドキュメントの雛形作成
- AIとの会話開始 - 実際の開発作業に着手
- 実装→更新の繰り返し
- タスク実装
- サブドキュメント更新
- 次のタスク実装
- サブドキュメント更新
- (この繰り返し)
- 完了
具体的なドキュメント管理方法
現状のベタープラクティスとして、以下のドキュメント管理方法が有効である。
メインドキュメント
プロジェクト全体を通して常に参照される中心的な文書として、以下の2つを用意する。
1. 仕様書
- プロジェクトの目的・機能要件・制約条件
- ユーザーストーリーや機能一覧
- 技術的な制約や選定技術スタック
2. プロジェクト進行ルール
- 開発プロセスの定義
- コーディング規約や命名規則
- サブドキュメントの場所と役割の説明
- ドキュメント更新のタイミングと方針
これらは理想的にはAIが常に参照できる形で配置するとよい。
サブドキュメント
必要に応じて参照する補助的な文書として、以下の3つを用意する。
1. ディレクトリ構造ドキュメント
プロジェクトのディレクトリ構造と、ファイル一覧、そのファイルの役割を記載する。これによりAIが、どこに何があり、それがどんな役目をしているかを理解しやすくなる。
2. トラブルシューティングドキュメント
発生したエラーや問題とそれに対する対処法を簡潔に記載し、箇条書きのようにどんどん追加していく。実装時に高確率でミスるようなポイントを回避できるようになる。
3. 進捗ドキュメント
全体の進捗をリスト化して、今どこまで進めたかをざっくりわかるようにする。どういう機能を実装するかを一覧で書いておいて、それのどこまで進めたかを記載する。
ドキュメント運用の実践
進行ルールドキュメントにサブドキュメントの場所と、それらの役割を記載しておく。プロジェクトが一定程度進むたびに、これら3つのドキュメントを更新する旨を記載しておくとよい。
運用サイクルとしては、「実装を進める→サブドキュメントを更新する→実装を進める→サブドキュメントを更新する」の繰り返しが効果的だ。これにより、常に今どこまで進んだか、どんな問題があるかを記録しながら実装することでプロジェクトの破綻を防ぐことができる。
現状と今後
もちろん、ここで紹介した手法が絶対的なベタープラクティスというわけではない。AI駆動開発は発展途上の開発手法であり、まだ改善の余地はある。しかし、実際のアプリ開発を通じて、この方法で私は従来の何倍ものスピードで開発を進められており、十分な効果を実感している。特にチーム開発では、メンバー間の認識齟齬を減らし、一貫した開発プロセスを維持する効果も大きい。
まとめ
AI駆動開発では「AIの記憶に頼らない開発体制」が重要だ。適切なドキュメント管理と進捗記録がその鍵となる。「実装→ドキュメント更新→実装→ドキュメント更新」のサイクルを維持することで、AIとの開発においても一貫性と継続性を確保することができるのである。
今後、LLMのコンテキストウィンドウが拡大されれば、これらの課題は緩和される可能性はあるが、現状ではこのような工夫が必要不可欠である。
私はこれからも、AI駆動開発の手法をブラッシュアップしていく予定だ。実際のプロジェクトを通じて新たな知見が得られたり、より効率的な方法を発見したりした場合には、またみなさんに共有していきたい。最新の開発手法や実践例を知りたい方は、ぜひフォローしていただけると嬉しい。
※本記事で紹介している手法は、筆者個人の経験に基づく現時点での見解であり、その効果や完全性、正確性を保証するものではありません。