@nqounetです。
GitHub Copilot Coding Agent(エージェントパネル)を初めて使ってみました。単純な作業を依頼したつもりが、予想外の方法で解決してくれた体験を紹介します。
GitHub Copilot Coding Agent とは
GitHub Copilot Coding Agent は、GitHub のIssueやPRに対してAIエージェントがコードを書いてくれる機能です。VS Codeで使える GitHub Copilot とは異なり、GitHub上で直接エージェントを呼び出すことができます。
今回、このブログのMarkdownファイルに残っているHTMLタグをMarkdownに変換する作業を依頼してみました。
依頼した内容
このブログには過去の記事が870以上あり、その中にはHTMLタグが残っているものがありました。また、全角英数字も散見されたため、以下のプロンプトでエージェントに依頼しました。
HTML部分をマークダウンに変換してください。全角英数は半角にしてください
シンプルなプロンプトです。
予想していた動作
正直なところ、エージェントが各ファイルを開いて手作業で一つ一つ変換してくれるものだと思っていました。868個のファイルを地道に修正していく姿を想像していました。
実際の結果
ところが、出来上がったPRを見てみると、変換プログラムが作成されていました。
エージェントは tools/convert_html_to_markdown.pl というPerlスクリプトを作成し、以下の処理を自動化していました。
- HTMLタグからMarkdownへの変換
- 全角英数字から半角への変換
- コードブロック内のHTML保護
やり取りの経緯
最初のPRでは、コードブロック内のHTMLも変換されてしまっていました。プログラムのソースコードとしてHTMLを出力する部分もあったため、以下のコメントをしました。
マークダウンファイルには、プログラムのソースコードとしてHTMLを出力する部分があります。その部分の変換はしないでください。
すると、エージェントはスクリプトを修正し、コードブロック内のHTMLは保護するように対応してくれました。
実際にプログラムを実行してみて
エージェントが作成したプログラムを PR #2 で実行してみたところ、blockquote(引用)が変換されていないことに気づきました。
そこで、HTMLからMarkdownへの変換精度を上げるため、PR #1 に戻って以下のようにお願いしました。
HTMLからマークダウンに変換する部分は html2markdown を使用するようにしてください。
エージェントは html-to-markdown というGoのライブラリを使うように変更し、より堅牢な変換処理を実装してくれました。
最終的には、Copilotが作成した変換プログラムを PR #3 で手動実行しました。
結果
PR #1 での最終的な結果は以下のとおりです(※PR #1は最終的にマージされていないため、参考値です)。
- 処理対象ファイル数: 868ファイル
- 変更されたファイル数: 695ファイル
- 追加行数: 7,339行
- 削除行数: 8,091行
実行後に気がついたのですが、そもそもMarkdownとして書いていた部分が、変換ツールによってHTMLとして解釈されてしまい、意図しない変換が行われた箇所がありました。その部分は諦めて手作業で直しました。
単純な依頼から始まったのに、エージェントは効率的な解決方法を自ら考えて実装してくれました。ただし、完全に自動化できたわけではなく、最終的には人間の確認と修正が必要でした。
感想
今回の体験で印象的だったのは、エージェントが「手作業で全ファイルを修正する」という方法ではなく、「変換プログラムを作成して一括処理する」という方法を選んだことです。
これは人間のエンジニアでも選択を迷う部分かもしれません。ファイル数が少なければ手作業の方が早いこともありますし、多ければプログラムを書く方が効率的です。868ファイルという数を見て、エージェントは後者を選んだのでしょう。
また、コメントでのやり取りも自然で、追加の要望に対して適切に対応してくれました。まるで同僚のエンジニアとやり取りしているような感覚でした。
参考リンク
- PR #1: Convert HTML to Markdown using html-to-markdown tool and normalize full-width alphanumeric characters
- PR #2: HTML→Markdown変換プログラムの実行
- PR #3: 変換プログラムの手動実行と修正
本記事はバイブブロギングで作成しています。