🤖

AIコーディングエージェントの成功パターンを整理する

に公開

※ この記事はAI7割、人間3割くらいです。

一行まとめ

  • AIにコーディングタスクを振るときは「明確なゴール」と「フィードバックによる軌道修正」があるかどうかを意識する

最近、AIコーディングツールが非常に多くなり、GitHub Copilot、Cursor、Windsurf、そしてClaude Codeなど、選択肢も豊富になりました。個人的にはClaude Codeを業務でもプライベートでもよく使っていますが、使っているうちに、エージェントがうまく動くパターンとそうでないパターンの違いを考えるようになりました。

これまでのAI: AIアシスタント

これまでのAIとの関わり方は、だいたいこんな感じでした。

人間がAIに質問して、AIが答える。その答えを人間が評価して、また別の質問を考える…この繰り返し。これだと、結局は人間の手間はさほど減りません。これはこれで役に立つことはもちろんあるのですが、あくまで「アシスタント」としての関わり方に留まります。

AIコーディングツールも、この延長線上で使っているうちは、小さなタスクを実行し、人間が結果を修正するという以上のことはできません。

AIエージェントの「成功パターン」

近年「AIアシスタント」の枠を超えて、AIを自律的な「AIエージェント」として動作させるという発想が注目を集めています。AIエージェントというのは、ざっくり言うと、単にAIに質問を投げて答えをもらうだけでなく、AIが自律的に行動し、環境からのフィードバックを受けて、自ら次の行動を決定するシステムのことです。要するに、人間の介入なしに目標達成まで動き続けるAIということですね。Claude CodeのようなAIコーディングツールも、基本的には、このAIエージェントの実装例のひとつと考えることができます。

一般的に書くと、AIエージェントの動作は以下のようになります。

ポイントは、人間が最初の「指示」を出した後は、AIが自律的に試行錯誤を繰り返す点です。人間はプロセスに細かく介入せず、AIがゴールにたどり着くのを見守ります(もちろん、本当にずっと見ている必要はありません)。

このAIエージェントのモデルがある程度有効に機能する重要な条件のひとつは、即座に明確なフィードバックが得られることです。

Claude CodeのようなAIコーディングエージェントが、ある程度有効に機能するのも、この条件と関連しているように思います。

プログラミングというのは基本的に

  1. コードを書く
  2. 実行する
  3. エラーが出たら、エラーメッセージを読んで修正する

というサイクルの繰り返しです。この「エラーメッセージ」というフィードバックが、AIにとって非常に有効な教師になります。AIはエラーを元に自らコードを修正し、また実行する。それによってAIが自律的にゴール達成に近づいてくれる。テストやリンターなどのツールをAIの「ガードレール」として利用するのも同じ発想です。

実際、Claude Codeを使っていると、「テストを実行→失敗したテストケースを確認→Pythonのimportエラーを修正→再度テスト実行」といった一連の流れを、人間の介入なしにこなしてくれます。

AIエージェントを使いこなすための条件

じゃあ、コーディングタスクなら何でもAIエージェントに任せられるかというと、そうでもありません。軌道修正がうまくいくためには、2つの条件があります。

  1. ゴールがある程度明確であること
  2. フィードバックによる漸進的な軌道修正が可能であること

AIに仕事を任せる前には、この2つの条件を満たしているか自問自答してみましょう。

  • ゴールは十分に明確か?
  • AIはフィードバックを得て、自分で軌道修正できるタスクか?

このふたつを満たさないタスクでも、「タスクのサイズが十分小さく、モデル性能のゴリ押しで何とかなった」「AIが学習済みのコードを記憶から引き出しただけ」という感じでうまくいくこともあります。しかし、AIが軌道修正できるタスクかというのは少なくとも現時点では意識した方がよさそうです。

具体的にできること・できないこと

この条件を踏まえて、具体例をいくつかカテゴリに分けて挙げてみましょう。

👍 できる例(コード生成系)

  • 「特定のAPIを叩いて、レスポンスのJSONから特定のキーの値を取得するPythonスクリプトを書いて」
    • ゴールが明確で、実行すれば成功かエラー(APIの疎通、キーの存在など)かが即座にわかる
    • 例えば、APIから天気情報を取得するスクリプトなら、APIキーの有効性やレスポンスの構造が即座に検証できます。
  • 「この関数の単体テストコードを書いて。カバレッジは90%以上で」
    • テストの実行結果という明確なフィードバックがある。
    • pytestやJestのようなテストフレームワークは、カバレッジレポートも含めて即座に結果を返してくれます。
  • 「このCSVファイルを読み込んで、指定したカラムでグループ化し、平均値を計算して新しいCSVに出力して」
    • ファイルI/Oやデータ処理は、ステップごとに成否がわかりやすい。
    • pandasを使った処理なら、各段階でDataFrameの中身を確認しながら進められます。

👎 できない例(UX・創造系)

  • 「イケてるUIをデザインして」
    • ゴールが曖昧すぎる。「イケてる」の定義が不明で、AIが試行錯誤する方向を定められない。
    • Figmaのようなデザインツールで人間が微調整しながら進めるタスクには向いていません。

👎 できない例(運用・性能改善系)

  • 「このサービスの全体的なパフォーマンスを改善して」
    • フィードバックループが長すぎる。ボトルネックの特定、修正、デプロイ、効果測定…というサイクルは、AI単独で回すには複雑すぎる。
  • 「ユーザーがもっと使いやすいように、この機能のビジネスロジックを全面的に書き直して」
    • 「使いやすさ」はユーザーテストなど、即座に得られないフィードバックが必要。AIエージェントは、実際のユーザーのPCやスマホにアクセスしてデータを集めることはできません。
    • A/Bテストや実際のユーザーからのフィードバックは、AIエージェントには取得できないという技術的な壁があります。

まとめ

AIエージェントの「成功パターン」は、「明確なゴール設定」と「高速なフィードバックループ」の組み合わせにあります。そのため、現時点では、このふたつを満たすタスクをうまく切り出してAIに渡す能力が重要になりそうです。

またこの問題を逆の方向から考えると、「うまくフィードバックループを構築できれば、AI向きでないタスクもAIに実行させられる」ということになります。本当はそういう話もしたかったんですが、いったんこの辺で。

Discussion