Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails以外の開発一般

AIエージェントとのペアプロがうまくいかない理由(翻訳)

概要

元サイトの許諾を得て翻訳・公開いたします。

日本語タイトルは内容に即したものにしました。
agentは原則として「AIエージェント」としました。ペアプログラミングは「ペアプロ」と表記しています。

AIエージェントとのペアプロがうまくいかない理由(翻訳)

LLM(大規模言語モデル)エージェントを相手にペアプロを行ってもうまくいかないのは、コードを書く速度が人間の考える速度よりも速すぎるからです。

はい、今月はVS CodeのGitHub Copilotエージェントモードでたっぷり楽しみました。ちゃんと動くメソッドが何の苦労もなく一発で書けるのは実に爽快です。エージェントが私の知らないフレームワークAPIを探り当てて私を解放してくれたときは、心からほっとしたものです。私と違って疲れを知らない相手とペアプロするのはモチベーションが高まります。

実を言うと、トップレベルのLLMとペアプロしていると、昔トップレベルの人間プログラマーとペアプロしたときのことが思い出されます。

それは最悪の思い出です。

ペアプロの相手が私のキーボードを奪い取って、私の読み取りが追いつかないほどのスピードでひたすらコードを叩き込みながら、何の会話もなく、気まずい沈黙が漂っていた思い出。

それに遅れまいと全神経を集中して報われない努力を続けていても、当然のようにじわじわと気持ちが途切れていった思い出。

やがてペアの相手が行き詰まってしまい、「おい、何とかしろよ」という目でにらまれた思い出。

しかし不意をつかれた私は、それまでの数日間、いや数時間、いや数分間何が行われていたのかを、緊張のあまり何ひとつとっさに思い出せず、そうこうするうちに、ペアの相手がそれまでドヤ顔で作り続けていたものが最初から間違っていたことが判明し、納期に間に合わせるために、予定外に発生した大量の厄介な成果を緊急で修正する作業を押し付けられた思い出。

そう、AIエージェントとのペアプロは、人間のベテランプログラマーとのペアプロと不思議なぐらい似ているようです。

🔗 どうやって先に進むか

ではどうしたらよいでしょうか?2通り考えられます。

  • 1. 人間のプログラマーが主導権を握って全部自分でやりたがったときと同様に、AIに全部やってもらう。

ペアプロは、理想の世界ならよりよいソリューションになりえますが、双方が納得していないのにペアプロを無理強いしても意味がありません。
私ならそれよりも、作業を独立したサブコンポーネントに分割して、同僚が独立して構築できるようにし、それからそれらの部分をプルリクとしてレビューするでしょう。

このアドバイスをLLMベースのツールに当てはめるなら、エディタ上でAIエージェントと対話的にペアプロするのは諦めて、GitHubの新しいCoding Agentのような非同期ワークフローを採用すべきでしょう。Coding Agentの成果も、通常のプルリクと同様にレビュー可能なのですから。

  • 2. エディタ上でAIエージェントとのペアプロを続行する。

ただし、半自動でコードをどんどん生成する「エージェント」モードをやめて、1ターンずつ小出しに作業を進める「エディット」モードや「質問」モードでペースを落とすこと。この場合ペースは落ちますが、「それこそが狙いです」。

また、困ったときにAIにトラブルシュートを丸投げするのではなく、人間とペアプロするときと同じ心がけで、厳密で一貫したワークフローを確立するよう努めましょう。AIを「編集モード」で利用し(この場合LLMが提案した編集結果は人間が個別に手動で承認する必要があります)、そこでMartin Fowlerの「ピン」「ポン」スタイルのペアプロを実践すると、生産性を加速しつつ品質管理を継続するという両者のバランスが最も良い形に落とし込まれることに気づきました。


AIエージェントを数か月も使ってみれば、ペアプロ相手としてのAIエージェントの適性について、誰でも私と同じような結論に達するだろうと思います(そう願いたいものです)。

また、AIツール開発者には、AIエージェントとのペアプロを質的に人間とのペアプロに近づける機能を導入してもらいたいと思います。AIエージェントとのペアプロは決して悪くないのですが、ともすると生成があまりに速いために私たち人間には追いきれなくなり、意図に反して人間とAIがじっくりコラボする機会が損なわれてしまいます。
AIエージェントがコード生成のペースをあえて落とし、途中で定期的に「ここまではどうでしょうか?」と一時停止して人間と話し合える余地を作り出してくれれば、もっと率直に言えば「AIは人間と同様のパートナーなのだ」と多くの人に思ってもらえるよう取り計らってくれれば、おそらく素晴らしい製品となることでしょう。

今思ったのですが、以下の機能のどれかが実現されれば、AIエージェントとのペアプロは今よりもずっと効率の良いものになるでしょう。

  • AIエージェントが1分あたりに出力するコードの行数(または文章の単語数)を指定できる機能

  • ユーザーがいつでもAIエージェントを一時停止して、全体の作業や思考の流れを乱すことなく、疑問点を解消したり指示を撤回したりできる機能

  • UIを拡張して、単なるチャットのメタファーを超えた、AIエージェントへの指示方法を追加する。
    たとえば現在のAIセッションを特定のGitHub issueに紐づける機能や、作成中の機能を完成させる前にその場でチェックできるToDoリストを組み込むといった工夫も考えられます。

  • AIエージェントが自信たっぷりに作業を闇雲に進めず、作業内容に疑問点があればその都度聞き返してくれるように設計する。
    AIエージェントは、必要に応じて「これを構築する理由は何でしょうか?」「どの方法がベストだと思いますか?」などと立ち止まって確認し、方針が間違っていれば「その方法はXXが問題になる可能性があります」などと懸念点を指摘するようにすべきです。

  • 高度な音声チャット機能を導入して、人間とのペアプロをエミュレートする機能。
    これならコードから目を離さずに済むようになり(エディタとチャットサイドバーを行ったり来たりせずに済むようになり)、文字の処理よりも音声会話の処理の方が得意な脳の部分が活性化するようになります。

ともあれ、以上は私が2025年5月30日(金)の朝に目にしていたものです。こうしたツールが1週間後、1か月後、1年後にどう変わるかは誰にもわかりませんが、今この瞬間に使えるアドバイスとして、これより悪いものは見つからないだろうという自信はかなりあります。

いつものように、ご意見・感想がありましたらメールにてお寄せください

関連記事

ペアプロを極めて最強の開発チームをつくる(1/4)ペアの組み方(翻訳)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。