ツナ缶雑記

ぐうたらSEのブログです。主にマイクロソフト系技術を中心に扱います。たまに技術と関係ないことも書きます。

GitHub Copilot coding agentとGitHub Copilot Agentモード

生成AIの勢いはとどまることを知りません。 私も業務や趣味で使うようになって結構な時間が経過しました。

GitHub Copilotのコード補完が出てきたとき、これは自前実装するのと大差ないなーと思っていました。 私もAIも若かった。 それから早2, 3年、エージェント型のAIが出てきて大幅にフェーズが変わってきたなーと思います。

今回は私がよく使っているGitHub Copilotのサービスに絞って、どういう使い方をすればよいのか書いてみようと思います。

GitHub Copilot coding agent

GitHub Copilot coding agentは、GitHub.comのWebサイト上で利用するエージェント型のAIです。 このエージェントAIが何かを理解するためには、近年当たり前となりつつあるチケット駆動型の開発を知らなければなりません。

チケット駆動型の開発では、まずチケットにどのような機能を実現するのか、確認ポイントは何か、詳細に記述します。 そのチケット単位で開発者をアサインし、開発者はチケットを見ながらプログラムを開発します。 チケットに定めた要件が実現できたら、開発者はソースコードを本線にマージするためのリクエストを送ります。 レビュアーはそれを確認し、問題なければプログラムを本線に取り込みます。 GitHubではチケットのことを「Issue」と呼び、マージするためのリクエストを「Pull Request」と呼びます。

GitHub Copilot coding agentは、Issueの開発者としてCopilotを割り当てることで、AIがPull Requestを自動的に作成してくれる機能です。 利用者が行う操作は、GitHub.com上でCopilotをIssueの担当者に割り当てるだけです。

CopilotをIssueの担当者としてアサインする

これだけでCopilotは開発作業を開始し、Pull Requestを送ってくれるのです。

GitHub Copilot Agent モード

似たような名前の機能で、GitHub Copilot Agentモードと呼ばれるAIもあります。 こちらはVisual Studio CodeなどのIDEに統合されたAIです。 誤解を恐れずに言えば、比較的初期のころから使われていたチャットベースのAIを機能強化し、様々な開発タスクをある程度自律的に実行できるようにしたものと言えます。

GitHub Copilot Agentモードは、以下のようにチャットインターフェースを備えています。

Visual Studio CodeでのGitHub Copilot Agentモード

チャット欄でCopilotにやってほしいことを送るだけで、必要な作業を自律的に考えて、プログラムを作成してくれます。

使い方の差

名前の似ているふたつの機能ですが、実際の使い方は結構異なります。

まずGitHub Copilot coding agentは、エンジニアの替わりに開発作業を行ってくれる存在です。 チケットにしっかりと要件を記述しておけば、今あるコードベースを確認しながら、適切なプログラムを素早く開発してくれます。 開発メンバーとしてCopilotが増やす、というイメージが最も近いです。

それに対してGitHub Copilot Agentモードは、ペアプログラミングをしてくれる相棒のような存在です。 利用者はナビゲーター、Copilotはドライバーとして、2人でプログラムを開発していきます。 エージェント型とはいえ、完全な自律型AIではなく、道具的AIの要素を残したものだと思った方が良いと思います。 開発者が素早く正確なプログラムを開発するために、壁打ち相手となりながら強力な手助けをしてくれるものです。

利用者に必要なこと

これらの機能は、どちらもAIの力を存分に感じるものだと思います。 しかし、最終的にできあがってくるものは、プログラムであることにかわりはありません。 AIの作成したプログラムが、正しいかどうかを判定するのは利用者の役割です。 プログラムを読めなければ、AIに対して適切なフィードバックを与えることはできません。

現状コードレビューをAIに丸投げするのは、かなり乱暴だと個人的には感じています。 そういったサービスや機能も出てきてはいますが、やはり正確性には難があります。 また要件が正確に文書化されていない場合、AIでは正誤を判断できないこともあります。 人間が正確に要件を記述できない以上、AIも正確には判断してくれません。 これらの穴を埋めるのは、行間の知識を持つ人間しかいません。

行間読ませないように書けよ、という指摘はごもっともです。 しかし、少なくとも私には、常時完全な文書を書ける自信はありません。。。

まとめ

今回はGitHub Copilot coding agentとGitHub Copilot Agentモードについて簡単に触れてみました。 どちらも非常に優れたサービスで、流行りのエージェント型AIのひとつの形であると思います。 普段の開発体験をできるだけ損なうことなく、うまくAIの力を借りれるように設計されている点が良いと思います。 ただ使い方は大幅に異なるので、時と場合に応じてうまく使い分けていかなければなりません。

生成されるプログラムの確からしさを確認する役目は、依然として人間に任されています。 プログラムを一切書けない、という状態では、AIの恩恵を最大限享受できません。 利用者側の技術レベルに応じて、AIをどの程度活かせるか変わってくるように思います。