# AI支援開発のベストプラクティス：私の経験から

私はまだAIを使用した大規模な開発を経験したわけではありませんが、これまでの経験から学んだことを共有したいと思います。

## 開発の基本アプローチ

AIと共に開発を進める際、一度にすべての機能を実装しようとすると、予期せぬ問題が発生し、プロジェクト全体が行き詰まってしまうことがあります。そのため、コア機能から始めて一つ一つの機能を確実に作り上げていく方法が効果的です。

### 既存コードの重要性

この方法が効果的な理由は、コア機能の実装を通じて、あなたの理想とする設計やコーディングスタイルをコードとして具体化できる点にあります。
プロジェクトのビジョンを最も効果的に伝えるのは、あなたの基準や好みを反映したコードそのものなのです。

コア機能から始めつつ、一つ一つの機能を確実に動く状態にしてから次の機能に進むことで、プロジェクト全体が一貫性を持ち、AIがより適切なコードを生成しやすくなります。

## モジュール分割のアプローチ

また、コードは小さなモジュールに分割することが重要です。私の経験では、行数を250行程度に抑えることで結果的にAIに明確な指示を与えやすくなり、試行錯誤のプロセスも効率的になります。実際にはトークン数のほうが指標として正しいのですが、人間に判断しやすいのは行数なので、ここでは行数としています。

これはフロントエンド、バックエンド、データベースなどの大きな単位の話ではなく、もっと小さな単位、例えば一つの機能の中でもバリデーションやエラーハンドリングなど、個別の機能をモジュールとして分割することが重要です。

もちろん大きな単位で分けるのも重要で、段階的にモジュールを分割しておくことで、指示も明確になり、AIがより適切なコードを生成しやすくなります。AIに限らず人間にも効果的なアプローチですね。


## テストを通じた品質の確保
私はテストも重要だと考えています。
テストは単なる品質保証の手段としてだけでなく、コードの意図を明確に示すドキュメントとしても機能します。AIに新しい機能の実装を依頼する際、既存のテストコードは実装すべき機能の仕様書として働きます。

また、AIが生成したコードの正しさを判断する際、テストは非常に効果的なツールとなります。例えば、あるモジュールの新しい機能をAIに実装してもらう場合、テストケースを先に書いておくことで、生成されたコードが期待通りの動作をするかを客観的に評価できます。これはテスト駆動開発（TDD）の考え方とも親和性が高く、AIとの協業において特に有効です。


## 計画と実装のバランス

大規模な機能を実装する前には、まずAIと計画について話し合うことをお勧めします。要件を整理し、アーキテクチャを検討することで、後の実装がスムーズになります。要件をまずまとめて、別のチャットに移動して実装を進めるのも良いでしょう。
また、AIの出力は必ず人間がレビューし、必要に応じて調整を加えることが重要です。AIの出力の品質は一般的に中程度ですが、それでも一からコードを書くよりも開発速度は向上します。



## まとめ

この方法を実践することで、AIの強みを活かしながら、一貫性のある高品質なコードベースを構築できます。プロジェクトの規模が大きくなっても、各部分が明確に定義され、管理しやすい状態を維持できるでしょう。
