はじめに
小さなツールをつくる機会があり、その中の1ステップの仕様が明確になったので、AIエージェントを使って実装してみました。
自分で書きはじめた方が速い
想像以上に遅く感じました。 実装の場所も方法も決まっているのに、AIエージェントが調べている間じっと待っているのがストレスでした。 AIエージェントのレスポンスを待つよりも、自分でコードを書き始めてCopilotに補完してもらう方が速く感じます。
私が生成AIに求めているのは「作業代行」でなく「ペアプロの相手」のようです。
AIエージェントの使い方?
「設計を全部終わらしてからAIエージェントに頼む」は、AIエージェントの上手い使い方ではなかったのかもしれません。 個人的には「いまの生成AIからはクラス設計のセンスを感じられない。内部設計は任せたくない…」と感じています。 それで設計まで終わらせて実装をお願いしました。
たとえば、タスクのゴールまで決めて、会議中に裏で「このタスクの実装やっといて」と任せる使い方の方がよいのかもしれません。
タスク単位で依頼する時は、人間のエンジニア相手でも難しさがあります。 依頼したタスクが想定よりも時間がかかることがあります。 そういうときはエンジニアのスキル不足より「依頼の仕方が間違っている」ことが多いです。 よく見てみると、簡単なつもりで難しいタスクを依頼していたり、そもそも間違った方針を伝えていたりします。 「お願いする側のタスク設計の精度」が作業効率に影響します。 AIエージェントに対しても似たことがおきそうです。
人間のエンジニアは学習します。 無茶振りしていると「この依頼者は適当なことを言う」と学習してくれます。 期待しすぎるとパワハラになりますが、この期待は0ではないです。 最近の生成AIは忖度しがちです。 負のフィードバックを得にくいかもしれません。
人間よりも生成AIのほうが依頼前の「完遂できるタスク」の準備に気を遣いそうです。
AIペアプロの価値
人間とペアプロするとめちゃくちゃ疲れます。 プログラミングについて深く考えているからという面もありますが、気にすることが多過ぎます。
- 前提を共有できているか?
- この言い方で通じるか?
- 相手の理解と自分の理解がどう違うのか?
- ドライバーとナビゲーターをいつ交代すればいいのか?
これらをずっと考え続けながらプログラミングのことを考えます。 開発全体を考えると背景情報を共有する効果があります。 プログラミングを目的としたら非効率です。
AIとのペアプロなら、人間を相手にするときの気疲れがありません。 試行錯誤を気軽に続けられます。 「これはたぶんダメなアイデアなんだけど、軽く試してダメなことを確認しておきたい」ときも、ペアの気分を気にせずに試せます。
おわりに
今回の試行では「僕なりのAIエージェントの使い方」は見つけられませんでした。
AIは学習しません。タスクをこなしても経験が蓄積されません。 ジュニアエンジニアは成長し、長期的にはチームに貢献してくれます。 生成AIはモデルは成長していくのですが、誰もが同じモデルを使えます。 エンジニアリング組織の差別化には使えません。
世の中では、相対的にジュニアエンジニアが割高に見えているはずです。 ジュニアエンジニアはAIエージェントと比べたら20~30倍の費用が掛かるので気軽に雇えません。 いまの「ジュニアエンジニアを雇える立場」は「ジュニアエンジニアを育成できる環境」ともいえます。 このままAIエージェントが流行ってくれれば「ジュニアエンジニアを雇って、育てられる」が、エンジニアリング組織の参入障壁として機能し、差別化要因になりそうです。
さて勝ち筋はあるかな?