GitHub Copilot Agent を初めて使い、寝ている間に Issue を解決してもらった話
はじめに
最近の GitHub Copilot は「Chat」だけでなく「Agent(コーディングエージェント)」という機能があり、GitHub の Web 上でやり取りや操作をすることができます。チャットに要件を伝えたり、Issue を Copilot に割り当てると、Copilot が GitHub 上のワークフロー(ブランチ作成 → 変更 → プルリクエスト作成 → フィードバック反映) で作業を進めます。ローカルに何か特別なアプリをインストールする必要はなく、GitHub の Web ページ上の操作で完結します。詳しくは公式ドキュメント・ブログをご参照ください。
...ということは情報としてキャッチアップしていたのですが、お恥ずかしながら、これまで実際に自分で使ってみたことがありませんでした。しかし今回、実際に使ってみる機会に恵まれましたので、その顛末を記しておきます。
背景:Blazing Story に不具合の知らせ
ある日、自分が開発・公開している OSS 「Blazing Story」 について、Discord 上で「かくかくしかじかのときに、あーだこーだという不具合がある」という不具合報告を DM で受け取りました。そこでまずは、この不具合報告を Blazing Story の GitHub リポジトリ上に Issue として作成することにしました。
まずは Copilot Chat に Issue を書いてもらう
ここで、自分で Issue を手書きするのではなく、GitHub の Copilot Chat に依頼してみよう、とふと思い立ちました。GitHub の Web ページを開き、ページ右上の GitHub Copilot のアイコンをクリックして GitHub Copilot Chat のページを開きます。
GitHub ページ右上の GitHub Copilot のアイコン
そして、Discord で教わった現象を日本語で説明の上、GitHub Issue の作成を依頼。(チャットログの URL を開くには GitHub ログインが必要です)。
GitHub Copilot チャットの履歴
すると以下のようにいい感じで Issue を作成してくれました。
日本語による自然言語で、ざっくり指示を出すだけで、このレベルの英文の Issue を作成してくれるのは大助かりです。
さらに続けて、この GitHub Issue の "Assignees" 欄 (この Issue の担当者割り当て) の歯車アイコンをクリックすると、 なんと、その候補に "Copilot" がいます。
GitHub Issue の Assinees のリストに現れた、GitHub Copilot Agent
つまり、GitHub Copilot というAI エージェントを、Issue の担当者に割り当てできる んですね。ということで、恐る恐る、Copilot を、この Issue の担当者に割り当ててみました。
そのまま PC を落として就寝
この日は自分の作業はここまでとし、PC をシャットダウンしてそのまま寝ました。GitHub Copilot Agent は「Issue をアサインしておけばバックグラウンドで作業し、プルリクエストを投げてくる」と聞いていましたので、あとは任せてみることにしました。
翌朝 Copilot からプルリクエストが来ていた
翌朝、ちょっとドキドキしながら GitHub を開いてみると、期待どおり Copilot からプルリクエストが届いていました!
プルリクエストの説明を読むと、根本原因、および、コード上の問題箇所の特定がしっかりできています。Blazing Story のソースコードは、大規模とまではいえませんが、そこそこなボリュームのコード量があります。処理内容も細々多岐に渡ります。そのようなソースコードの海を泳ぎ切って、ここまでしっかり特定できるのは なかなかやるなぁ、と思いました。
その上で、問題箇所の修正も適切でしたし、さらに、今回知らされた不具合を引き起こす、これまで網羅されていなかったテーストケースが、テストコードに追加されてもいました。
変更差分とテストを自分の目で確認し、ローカルで必要な範囲を試したのちに、マージを実行。以後の作業(タグ打ちやパッケージ公開など)を行い、無事、修正版をリリースすることができました。
体験してみての所感
「寝ている間に修正が済んでいる」 というのは、なかなか新鮮な体験でした。
とは言ったものの、実を言うと、今回は事前に 「この不具合の修正は AI に任せてもいけるのでは?」 という予想はありました。というのも、今回の不具合対応は、UI が絡まず、比較的簡潔な演算系の処理で、再現条件も明確、テストも書きやすい内容だったからです。
いっぽうで、もう少し込み入った処理の不具合修正や、機能追加などは、現状の生成系 AI では任せっぱなしだと厳しい印象が経験的にあります。しかし今日時点でそのような限界があるとしても、現状でも十分に生産性向上に寄与していますし (後でレビューが必要・手戻りの可能性があるとはいえ、コーディングはこちらが寝てる間に済んでしまうのですから😁)、これまでの AI エージェントの進化を踏まえると、近い将来はさらに精度・適用範囲が広がるだろうと期待されます。
Discussion