AIエージェントを使って開発するのが当たり前になってきたので、改めて考えてみました。
前半は考えで後半はTIPSにしてます。
改めて考えてみた
ベテランエンジニアとAIエージェントは何が違うのか
ベテランエンジニアが転職して異なるドメインを持つ企業に就職したとして、ハンドブック、ドキュメント、ソースコードをコンテキストにしつつ、開発やコミュニケーションという体験を進める中で徐々にドメイン知識を獲得していき、情報をつなぎ合わせ、技術課題を解決する力を得ます。
覚えたことは完璧に記憶しているわけではなくても、インデックスとして覚えておき、すぐ取り出せるようになっているはずです。
一方で、AIエージェントについて考えてみましょう。
無尽蔵に知識を持っている中から関連する情報をつなぎ合わせて答えを出力することができますが、ドメイン知識は全く持っていません。それどころか、人間なら就職活動の段階で調べて得るような知識すら持っていないので、その会社や環境がわかっていません。なので頭良くて手が早いジュニアエンジニアと言われるのだと思っています。
なので、プロンプトエンジニアリングとかコンテキストエンジニアリングという物が重要という話になってくると理解をしています。細かい指示や情報を教えてあげて作業してもらう感じですね。
AIエージェントは指示通りに動く
私の体感ではAIエージェントはよっぽど適当な指示でなければ、指示に対するタスクを完了させようとします。
抽象的な内容であれば具体的な内容は勝手に補完して動きます。
人に指示して「不明な点は勝手にこっちで考えてやっておきました!」って仕事されても困りますよね。そういう場合で失敗したら「指示が悪かった」か「不明点は確認しよう」というような振り返りが行われるかと思います。
となると、やってもらいたいことを言語化する能力が必要です。
AIエージェントは情報がなければ探す
CodexやClaude Code、Devinなどは情報がなければソースコードなどから関連しそうな情報を探します。
探し方は指示の中にある単語などから情報がありそうな単語(例えばLoginとか)で検索します。
これが運よく当たれば良いですが、違っていると手戻りになります。
なので、指示の中に具体的な情報を含めるか、ルールファイルなどに情報を集約しておく必要があります。
情報が多すぎると迷う
これは人でもそうだと思いますが、情報がありすぎるとどれを使って何をすればいいかわからなくなってきます。
AIエージェントも最大トークン量が200Kトークン、1Mトークンなど限界が決まっており、しかも限界まで情報を持たせれば良いというものではなく、出力結果が鈍くなります。
例えば A, B, C, D, E, F, G, H, I, J, K, L, M, N というタスクがあり、これの内容を全てを頭の中で持った状態にして、O, Pというタスクをやってくださいと言われたような状態という感じでしょうか。
私だったらそんなことできないのでTODOリストに全部まとめて一旦忘れてからO, Pの優先度が高い方から対応しますね。
なので、必要な情報だけを効果的に与える必要があります。
TIPS
長々と書きましたが、上記のことがあるので以下が重要と思っています。
AIエージェント開発での基本
- タスクは細かく分けて指示する
- 指示も情報源と具体的な作業内容を書き、完了の定義を記載する
- PR自動生成など結果に形式を求める必要がある場合はテンプレートを用意して埋めてもらう
- ルールファイルに色々な情報を書かない https://agents.md/ に簡潔に書いてあります
少し深堀り
- よく使う指示はカスタムスラッシュコマンド(プロンプトファイル) or mdファイルなどに書いておいて読み込ませる
- 指示の形式がある程度決まってきたら、フォーマットを作っておいて、それを埋めて指示を作ると動作が安定する
- planモードなどを使うか、対応方針をまとめてもらう所までを1タスクにして、それをレビューして問題なさそうなら作業をしてもらう
- インデックス(目次)情報をまとめておいて必要なときに取り出せるようにする
- 以下は例
- ログイン情報と言われたら、LoginViewに関すること
- 画面の開発をするならXXXXXアーキテクチャを使い、XXXは注意すること
- 通信の実装はXxxxRepositoryを確認すること
- API仕様はxxxxx.ymlを確認すること
- ファイル名を大きな目次にして、内容にそれより細かい粒度の内容が書いてあるとAIエージェントは探しやすい
- 以下は例
- 「不明点がある場合は計画時に依頼者へ質問すること」というプロンプトを入れておき、途中で質問させる
- 聞かれた内容はインデックス情報に追加する
最後に
こうした工夫を普段から実践していますがAIエージェントコーディングバトルとかやったことないので、いまいち他の方と比べてどうなのかはわかっていないのが辛いところですが、気持ちよくスムーズに作業できるよう意識して仕事しています。