🉐

AI駆動で開発するときに重要なこと(設計と考え方)

に公開

問題:AI開発における「8割の罠」

AI駆動開発で最も注意すべきは、AIにいかに良い成果物を作らせるかではなく、AIにいかに既存の良い実装を破壊させないかである。

典型的な悪循環

  1. AIに開発を指示
  2. 成果物の8割は良い感じ、残りの2割に問題あり
  3. 2割の改善を指示
  4. 問題の2割は改善するが、元々良かった8割の一部が改変・破壊される
  5. 結果、全体の完成度は8割から進歩しない

この「部分最適化による全体破壊」のループが、AI駆動開発の最大の落とし穴だ。

解決策:破壊を防ぎ、品質を向上させる4つのアプローチ

1. コンポーネント化と責務の分離

なぜ有効か:
変更の影響範囲を物理的に制限できる

実装例(MVVMパターン):

  • ViewModelとViewを明確に分離
  • 「View側だけ修正して」という指示でViewModel側の破壊を防げる
  • ViewModelに「何を表示する画面か」というコンテキストが残る
  • 結果、AIは必要な文脈を理解しつつ、指定範囲内でのみ変更を行う

より細かくコンポーネント化するという手法も有効なケースがあるだろう。

2. テスト駆動開発(TDD)の活用

なぜ有効か:
「良い部分」を自動的に保護できる

実装方法:

  • 既存の良い実装をテストケースとして定義
  • AIへの指示:「これらのテストを壊さずに、新機能のテストを満たせ」
  • 回帰テストがAIの破壊的変更を即座に検出
  • 品質の後退を防ぎながら前進できる

3. 段階的リファクタリング戦略

なぜ有効か:
一度の変更量を制限し、リスクを最小化

実装方法:

  • 8割→8.5割→9割と小刻みに改善
  • 各段階で「変更可能な箇所」を明示的に指定
  • 例:「getUserName()メソッドのみ修正、他は変更禁止」
  • 小さな成功を積み重ねて全体を改善

AIモデル選択のコツ:
「他は変更禁止」のような制約的な指示は、GPT-4.1のような要求に忠実なモデルが得意とする領域だ。創造性よりも正確性を重視するモデルを選ぶことで、指定範囲外への不要な変更を最小限に抑えられる。

4. 並列コンペによる最適解の選択

なぜ有効か:
複数の実装を比較し、最も品質の高いものを選択できる

実装方法:

  • 同じタスクを複数のブランチで並列実行
  • 各ブランチの成果物をテストやレビューで評価
  • 最も成功したブランチのみを採用、他は破棄

メリット:

  • 異なるアプローチを同時に試せる
  • 「どの実装が最も問題が少ないか」を実際に確認してから採用
  • 1つの実装が失敗しても、他の選択肢がある

実例:

# Git worktreeを使って3つの独立した作業ディレクトリを作成
git worktree add ../project-ai-attempt-1 -b ai-attempt-1
git worktree add ../project-ai-attempt-2 -b ai-attempt-2
git worktree add ../project-ai-attempt-3 -b ai-attempt-3

# 各ディレクトリで並列にAIに実装させる
# (3つのターミナルやAIセッションで同時実行可能)
cd ../project-ai-attempt-1 && # AIに実装指示
cd ../project-ai-attempt-2 && # 別のアプローチで実装指示
cd ../project-ai-attempt-3 && # さらに別のアプローチで実装指示

# 各実装のテスト結果を確認
# 最も優れた実装をメインブランチにマージ
cd ../project
git merge ai-attempt-1  # 最良の実装を選択

# 作業完了後、worktreeをクリーンアップ
git worktree remove ../project-ai-attempt-1
git worktree remove ../project-ai-attempt-2
git worktree remove ../project-ai-attempt-3

この手法は既にCodexなどで採用されており、Claude Codeのような最新のAI開発ツールでも並列実装による品質向上が実現されている。

まとめ

AI駆動開発の成功は、AIの創造力を活かしつつ、その破壊力を制御することにかかっている。

重要なのは:

  • AIに「全体を良くしろ」ではなく「この範囲を良くしろ」と指示する
  • 既存の良い実装を明示的に保護する仕組みを作る
  • 失敗を恐れずに試せる安全な環境を用意する

これらのアプローチを組み合わせることで、「8割の罠」から脱出し、着実に100%の完成度に近づくことができる。AI開発は「いかに作るか」から「いかに守りながら改善するか」という発想の転換が必要だ。

Discussion