🧑‍✈️

GitHub Copilot Agent を初めて使い、寝ている間に Issue を解決してもらった話

に公開

はじめに

最近の GitHub Copilot は「Chat」だけでなく「Agent(コーディングエージェント)」という機能があり、GitHub の Web 上でやり取りや操作をすることができます。チャットに要件を伝えたり、Issue を Copilot に割り当てると、Copilot が GitHub 上のワークフロー(ブランチ作成 → 変更 → プルリクエスト作成 → フィードバック反映) で作業を進めます。ローカルに何か特別なアプリをインストールする必要はなく、GitHub の Web ページ上の操作で完結します。詳しくは公式ドキュメント・ブログをご参照ください。

https://github.blog/news-insights/product-news/github-copilot-meet-the-new-coding-agent/

...ということは情報としてキャッチアップしていたのですが、お恥ずかしながら、これまで実際に自分で使ってみたことがありませんでした。しかし今回、実際に使ってみる機会に恵まれましたので、その顛末を記しておきます。

背景: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 のアイコンGitHub ページ右上の GitHub Copilot のアイコン

そして、Discord で教わった現象を日本語で説明の上、GitHub Issue の作成を依頼。(チャットログの URL を開くには GitHub ログインが必要です)。

https://github.com/copilot/share/c2715218-48e0-8094-8940-0008e0860155

GitHub Copilot チャットの履歴 GitHub Copilot チャットの履歴

すると以下のようにいい感じで Issue を作成してくれました。

https://github.com/jsakamoto/BlazingStory/issues/76

日本語による自然言語で、ざっくり指示を出すだけで、このレベルの英文の Issue を作成してくれるのは大助かりです。

さらに続けて、この GitHub Issue の "Assignees" 欄 (この Issue の担当者割り当て) の歯車アイコンをクリックすると、 なんと、その候補に "Copilot" がいます。

GitHub Issue の Assinees のリストに現れた、GitHub Copilot Agent GitHub Issue の Assinees のリストに現れた、GitHub Copilot Agent

つまり、GitHub Copilot というAI エージェントを、Issue の担当者に割り当てできる んですね。ということで、恐る恐る、Copilot を、この Issue の担当者に割り当ててみました。

そのまま PC を落として就寝

この日は自分の作業はここまでとし、PC をシャットダウンしてそのまま寝ました。GitHub Copilot Agent は「Issue をアサインしておけばバックグラウンドで作業し、プルリクエストを投げてくる」と聞いていましたので、あとは任せてみることにしました。

翌朝 Copilot からプルリクエストが来ていた

翌朝、ちょっとドキドキしながら GitHub を開いてみると、期待どおり Copilot からプルリクエストが届いていました!

https://github.com/jsakamoto/BlazingStory/pull/77

プルリクエストの説明を読むと、根本原因、および、コード上の問題箇所の特定がしっかりできています。Blazing Story のソースコードは、大規模とまではいえませんが、そこそこなボリュームのコード量があります。処理内容も細々多岐に渡ります。そのようなソースコードの海を泳ぎ切って、ここまでしっかり特定できるのは なかなかやるなぁ、と思いました。

その上で、問題箇所の修正も適切でしたし、さらに、今回知らされた不具合を引き起こす、これまで網羅されていなかったテーストケースが、テストコードに追加されてもいました。

変更差分とテストを自分の目で確認し、ローカルで必要な範囲を試したのちに、マージを実行。以後の作業(タグ打ちやパッケージ公開など)を行い、無事、修正版をリリースすることができました。

体験してみての所感

「寝ている間に修正が済んでいる」 というのは、なかなか新鮮な体験でした。

とは言ったものの、実を言うと、今回は事前に 「この不具合の修正は AI に任せてもいけるのでは?」 という予想はありました。というのも、今回の不具合対応は、UI が絡まず、比較的簡潔な演算系の処理で、再現条件も明確、テストも書きやすい内容だったからです。

いっぽうで、もう少し込み入った処理の不具合修正や、機能追加などは、現状の生成系 AI では任せっぱなしだと厳しい印象が経験的にあります。しかし今日時点でそのような限界があるとしても、現状でも十分に生産性向上に寄与していますし (後でレビューが必要・手戻りの可能性があるとはいえ、コーディングはこちらが寝てる間に済んでしまうのですから😁)、これまでの AI エージェントの進化を踏まえると、近い将来はさらに精度・適用範囲が広がるだろうと期待されます。

Discussion