はじめに
mizchiさんの記事を読んで以下の部分に衝撃を受けた。
ペアプロでいうとClineがドライバーで、ユーザーがナビゲータになる。役割を交代する。
ここ2ヶ月ほどの間自分は生成AIの作ったコードを評価するために
- 設計,デザインパターン
- リファクタリング
- TDD,テストとの向き合い方
を主に学習していたが,これは自分がAIエージェントにサポートを受けることを前提に考えてのことだった。
今後,我々人間がAIのサポートをするような時代がくることを考えると,早いうちにAIエージェントとうまく付き合っていくやり方を考えるのは急務であると思われ,そのためにはAIエージェントをできるだけ自分で使ってみるべきであると思われる。
しかし,Clineをゴリゴリつかうと1時間で5ドルが飛んでいくくらしく,貧乏性な上に個人事業主でもない自分にはコストが高すぎる。
前置きが長くなってしまったが,とりあえずお安くAIエージェントと遊ぶためにGitHub Copilot AGENT MODEを使った際の防備録としてこの記事を書いた。
環境構築方法
VSCodeのInsiders版をインストール
2025年2月27日現在では,GitHub Copilot AGENT MODEはVSCodeのInsiders版でのみ提供されている。
VSCode Insidersからインストールする。
CopilotとCopilot Chatのプレリリース版をインストール
Insider版のVSCodeのインストールが済んだら,CopilotとCopilot Chatのプレリリース版をインストールする。
やることは至って簡単で,通常のExtensionsを入れるのと同じだ。
AGENT MODEに切り替えてみる
AGENT MODEに切り替えるにはまず,GitHub Copilot Chatの画面から,Copilot Editに移動した後,切り替え可能になる。
とりあえず,使ってみる
1: テストを書いてもらう
簡単なflask cliのコマンドに対する単体テストを書いてもらった。
特に許可なども求められず,新規ファイルが作成され,単体テストが作成された。
2: テストを実行してもらう
テストを実行するたびに許可が求められた。
承認されるまで動いてくれないというのも面倒なのでどうにかならないか調べてみた。
Introducing GitHub Copilot agent mode (preview)によると,
To easily intervene and undo in those situations, every tool invocation is transparently displayed in the UI, terminal tool requires approval
とあるので許可をオフにする設定は2025年2月27日現在はないようだ。
3. TDDをやってみる
新機能を作る前にテストを作成し,このテストが通るようにしてとAIエージェントにお願いする作戦。
個人的にはTDDをうまく使えればAIエージェントの生産性をめちゃくちゃ向上させられるのではと思っている。
- タスクの終了条件が明確になる
- コードのアーキテクチャ等を人間がチェックした上でAIエージェントにタスクをお願いできる
というのがやはり強いのではないか。
4. AIエージェントに対して普段から使うルールを登録しておく
Clineであれば,.clinerules
に記載しておけばある程度制御が可能らしい。
GitHub Copilotの場合.github/copilot-instructions.md
というのがこれにあたりそうなので試してみる。
自分は常にTDDで実装してもらえるように以下を追加してみた。
## 重要
実装時には必ずTDDで行ってください。
1. 依頼内容を1つの単体テストになるまで細分化する
2. 上記の単体テストを実装する
3. 単体テストをとりあえず,通すようにソースコードを書く
4. ユーザにレビューを依頼する
5. テストが通ることを確認しながら実装を進める
6. 機能ができあがったら,重複を削除するためにリファクタリングを行う
特に.github/copilot-instructions.md
をアクティブなタブとして開いていないが,上記を考慮してタスクを実施してくれてそうではある。
まとめと感想
- Clineと違ってコマンドの承認が必要な点を考慮するとまだ,AIに任せる度合いは少なめではある。
- APIを叩くたびに課金されないので安心して使えるので,とりあえず試してAIエージェントに慣れるのは良さそう。
- copilot-instructions.mdを書くことである程度制御ができそうなので,これの書き方には研究の余地がありそう。
備考
- TDDをやる良い方法を「テスト駆動開発」の訳者のt_wadaさんとmizchiさんが話してるこのツリー参考になりそう