0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI Agentに実装を丸投げして失敗したので、タスクの切り方を整理した

0
Posted at

はじめに

Codex、Claude Code、AntigravityなどのCoding Agentを使うと、

「この機能を実装して」

だけでも、ある程度コードを書いてくれます。

ただ、実際の開発で使っていると、

  • 想定していないファイルまで変更された
  • 既存仕様を壊された
  • 実装自体は正しいが設計思想が違う
  • テストが不足している
  • 途中からAgent自身が何をしているのか分からなくなる

といったことが起きます。

自分の場合、AI Agentの性能そのものよりも、

「AIに渡すタスクの切り方」

の方が結果に大きく影響すると感じました。

この記事では、AI Agentに実装を依頼するときに、どのくらいの粒度でタスクを切ればよいのか整理します。


AI Agentへの「丸投げ」が失敗しやすい理由

例えば、こんな依頼をします。

ユーザー管理機能を追加してください。

人間からすると意味は分かります。

しかし実際には、

  • DB設計
  • API設計
  • バリデーション
  • 権限制御
  • 一覧画面
  • 登録画面
  • 更新画面
  • 削除
  • エラー処理
  • テスト

など、複数の判断が含まれています。

AIは判断できないわけではありません。

問題は、判断できてしまうことです。

こちらが指定していない部分をAIが補完し、

おそらくこうだろう

という推測で実装を進めます。

小規模な個人開発なら便利ですが、既存システムでは、この「善意の補完」が事故につながります。


タスクは「1つの目的」で切る

自分が使いやすいと感じている基準は、

1タスク = 1つの確認可能な目的

です。

例えば、

ユーザー管理機能を実装する

ではなく、

1. 既存のユーザー管理周辺の実装を調査する
2. DB変更案を提示する
3. User APIを追加する
4. 登録時のバリデーションを追加する
5. 一覧画面を追加する
6. 単体テストを追加する
7. 既存機能への影響を確認する

という単位に分けます。

重要なのは、

調査と実装を分けること

です。


いきなりコードを書かせない

大きめの変更では、まず次のように依頼します。

まだコードは変更しないでください。

ユーザー管理機能を追加したいです。

まず既存コードを調査し、以下を整理してください。

- 関連ファイル
- 現在のデータフロー
- 使用している共通処理
- DBへの影響
- 変更が必要になりそうな箇所
- 既存機能への影響
- 実装手順

不明な仕様については推測で実装せず、
「確認が必要な点」として整理してください。

この段階では実装させません。

先にAIがシステムをどう理解したのか確認します。


自分が使っているタスク分割

大きめの改修なら、だいたい次の順番にしています。

① 調査
↓
② 影響範囲整理
↓
③ 実装方針
↓
④ 実装
↓
⑤ テスト
↓
⑥ セルフレビュー

それぞれ別タスクにします。


① 調査

今回の変更に関係する既存実装を調査してください。

確認してほしい内容:

- 関連クラス
- 関連API
- DBテーブル
- 共通部品
- 類似機能
- テストコード

この段階ではコードを変更しないでください。

② 影響範囲整理

先ほどの調査結果をもとに、
今回の変更による影響範囲を整理してください。

以下に分類してください。

- 必ず変更する箇所
- 変更する可能性がある箇所
- 影響確認のみ必要な箇所
- 影響なしと判断した箇所

それぞれ理由も記載してください。

「影響なし」も出させるのがポイントです。

AIがどこまで考慮したか確認できます。


③ 実装方針

まだ実装は行わず、
実装方針だけ提示してください。

以下を含めてください。

- 変更対象ファイル
- 変更内容
- 新規作成ファイル
- 既存ロジックを流用する箇所
- テスト方針
- リスク

ここで人間がレビューします。


④ 実装

方針に問題がなければ、ようやく実装させます。

提示した実装方針に沿って実装してください。

制約:

- 対象外ファイルは変更しない
- 既存の命名規則に合わせる
- 既存の共通処理がある場合は再利用する
- 不要なリファクタリングは行わない
- 仕様が不明な場合は勝手に補完しない

この、

不要なリファクタリングは行わない

はかなり重要です。

AIは良かれと思って周辺コードまできれいにしてくれることがあります。

レビュー差分が大きくなり、逆に確認しづらくなります。


「やること」より「やらないこと」を書く

AIへの依頼では、

○○してください

だけではなく、

○○しないでください

も重要です。

例えば、

今回のタスクでは以下を行わないでください。

- DB定義の変更
- 共通クラスのリファクタリング
- 関係のない警告修正
- UIデザインの変更
- ライブラリ追加

と書きます。

これだけで差分がかなり安定します。


完了条件を定義する

AI Agentにとって一番困るのは、

「どこまでやれば完成なのか分からないタスク」

です。

そのため、完了条件を明示します。

完了条件:

- 登録が正常に行える
- 必須項目未入力時にエラーになる
- 重複データを登録できない
- 既存の更新処理に影響がない
- 追加したテストがすべて成功する
- 既存テストがすべて成功する

これだけで、AIが自分で確認できる範囲が増えます。


GitHub Issueを書くつもりで依頼する

個人的に一番分かりやすい考え方は、

AIへのプロンプト = GitHub Issue

です。

例えば、

## 目的

商品登録APIに商品コードの重複チェックを追加する。

## 対象

backend/products/service.py
backend/products/tests/test_service.py

## 現状

同一の商品コードを複数登録できてしまう。

## 期待する動作

既に同じ商品コードが存在する場合、
ValidationErrorを返す。

## 参考

ユーザー登録時のメールアドレス重複チェックと
同じ実装方針にする。

## 制約

DBスキーマは変更しない。
APIレスポンス形式は変更しない。

## 完了条件

- 重複登録時のテストを追加
- 正常登録の既存テストが成功
- 全テスト成功

このレベルまで書けば、かなり安定します。


タスクを細かくしすぎるのもよくない

逆に、

変数を追加してください
↓
if文を書いてください
↓
メソッドを呼び出してください

まで細かくすると、人間がコードを書いた方が早くなります。

自分の基準は、

人間なら30分〜1時間程度で終わりそうな、目的が1つの作業

から始めることです。

もちろんモデル性能やコードベースによって最適なサイズは変わります。


AI Agent用タスクテンプレート

最終的には、以下のテンプレートをよく使います。

# 目的

何を実現したいのかを書く。

# 背景

なぜ変更するのかを書く。

# 対象

変更対象の機能・ファイル・画面などを書く。

# 現在の動作

現在どうなっているかを書く。

# 期待する動作

変更後にどうなってほしいかを書く。

# 制約

- 変更してはいけない箇所
- 使用する既存処理
- DB変更可否
- ライブラリ追加可否

# 実施内容

1. 関連コード調査
2. 影響範囲整理
3. 実装
4. テスト追加
5. 既存テスト実行

# 完了条件

- ○○できる
- ○○の場合エラーになる
- 既存テストが成功する

# 注意

仕様が不明な場合は推測で実装せず、
確認事項として報告してください。

まとめ

AI Agentを使っていて感じるのは、

AIの性能が高くなるほど「何を任せるか」の設計が重要になる

ということです。

自分の場合は、

丸投げ
↓
調査
↓
方針
↓
実装
↓
テスト
↓
レビュー

と分解した方が安定しました。

特に重要なのは、

  • 1タスク1目的
  • 調査と実装を分ける
  • やらないことを書く
  • 完了条件を書く
  • 不明点を勝手に補完させない

の5点です。

AI Agentに長いプロンプトを書くことが目的ではありません。

「何をもってこの仕事が完了なのか」をAIと共有すること

が、タスク設計で一番重要だと思っています。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?