Microsoft Build 2025 では様々な AI 機能が発表されていました。やっぱり一番気になるのは Microsoft 365 Copilot 関連なわけですが、イベントの性質上、開発関連はすぐに利用できるようになるケースが多いのですが、 Microsoft 365 Copilot のような SaaS っぽいものは数か月後を見据えたアナウンスだったりします。これらは動きをみられるという点だけでもよいのですけれど、すぐに使えないという感じなので、今すぐ使えそうな GitHub Copilot Coding agent を試してみました。
これは GitHub Copilot Pro+ か Enterprise のライセンスがあれば使えるということだったので、個人アカウントではすぐに使える人が多いのではないでしょうか。
逆に組織では Enterprise まで用意されていないとか、機能有効化に時間がかかるといった事情が考えられる感じですよね。
という訳で私も個人アカウントで試していきます。
まず、クリーンなリポジトリを用意して、 Issue を作って一から勝手生成がどこまでできるのか見てみます。
Repositories タブをクリックし、右側の New ボタンを押しましょう。

新しいリポジトリの名前を入れて、、、
公開しないテスト環境なので Private を選択し、 README は用意するという感じにしました。

これでリポジトリの作成は完了ですが、 Coding agent を有効化するために、右側のプロフィールアイコンをクリックして Your Copilot に入ります。

左側のメニューに、 Copilot - Coding agent があるのでこれをクリックします。

すると 2 つ項目が表示されています。最初は Repository access が No になっているため動作しません。
ここでリポジトリーを選択するか全部に適用するかを押しておくことで動作が開始できるようになります。

今回は Only selected repositories を選んで、特定のリポジトリーでのみ動くようにします。(これ、 2025 年 6 月以降は課金になるみたいなので、慎重になっておいた方がよさそうな感じでした笑)

リポジトリーは先ほど作ったものを選びます。

選び終わったら設定は完了です。
リポジトリーに移動して Issue を作っていきましょう。
最初はリポジトリー上には何もないですね。

Issues タブに入り、 New Issue ボタンを押します。

ここで作りたいものを書いてきます。
Issue は問題なので、問題っぽく用意されていなぞ的な書きっぷりで書いてみました笑

ちょっと長いですがこんな感じ。
SQL Server に格納されたデータを取得するラッパーが足りない
Webシステムで利用するラッパーが足りません。
SQL Serverからテーブル:UsersDataを参照するクラスです。
UsersDataには以下の列があります。
internal_ID:int
register_ID:String
First_Name:String
Last_Name:String
register_IDは文字型ですが、4桁の西暦+2桁の月+シリアル番号5桁の数値でできています。イメージは以下の通り。
20250500001
First_Name列はUTF-8です。イメージは以下の通り。
三沢
Last_Name列はUTF-8です。イメージは以下の通り。
友治
First_NameおよびLast_Nameはアルファベットやカタカナの場合もあります。ケースによってはカッコなどの記号も使われることがあります。
これらのデータを取得してくるラッパーを用意してください。
.NET C#でデータを取得するクラスと
取得したデータをWeb表示できるようにサニタイズするクラスが用意されます。
また、Beanを用意し、UserDataテーブルクラス、各列クラスはそれぞれシリアル化可能なオブジェクトとして保持してください。
現在は使いませんが、今後更新や新規作成、削除も可能性があるのため、internal_ID列をキーとしてCRUDメソッドも準備が必要です。
要約すると、データベースからデータを取ってきて Web で表示できるようにきれいに成形してね。という感じのことを書いてみました。
書き終えたら右側にある Assignees を選び、 Copilot を指名します。
この感じ、ピアプログラミングを任せる感が強いですね。面白ーい。

指名するとチェックが付きます。

ダイアログボックスを離れるとこんな感じに。
これからはこの Copilot マークが巷にあふれていくことでしょう、、、

一番下にある Create ボタンを押してこの Issue を確定しましょう。

するともう動き始めてくれました。
メンションされたことを察知してくれています。
リンクが張られるので入ってきましょう。

中央を見ていくと、 View session というボタンが右側についています。これを押してみると、、、

アサインしてから 1 分ほど放置して開いたのですが、おぉ。。。どんどん動いていますね。
一番上にステータスや動作を止めるためのストップボタンなどが。

下の方に行くと、 Copilot is working... と、頑張っている姿が見えました。

そのまま待つこと 15 分ほど。 Status が Completed になり、 Issue の調査が終わったようです。
メールで通知も来ていました。

ブラウザーでやっているので翻訳してどんな動きをしているのか見てみましょう。
最初に構造解析が入り、
その解析に使ったコマンドも表示されます。これは面白い。
というか、そのままデバッグの勉強ができる感じですね、、、

長いんですが、全体像はこんな内容でした。間に入っているコマンド群やコードはどういった活動を行ったのかつぶさに見ることができます。
下を見てもらうとわかるのですが、デバッグしながら更新を書けて直していくというところまで実装されているのが分かります。
- 問題で指定された要件を満たすために必要な変更を実装するお手伝いをします。まず、リポジトリを探索し、その構造を理解しましょう。
- リポジトリの構造を詳しく見て、何に取り組んでいるのかを見てみましょう。
-
リポジトリは現在、README.md ファイルだけで最小限であることがわかります。問題の説明に基づいて、UsersData テーブルの SQL Server データの取得と処理を処理するために、いくつかの C# ファイルを作成する必要があります。
-
実装する必要があるものについて考えてみましょう。
- リポジトリ内のコンテンツは最小限であるため、.NET プロジェクト構造を最初から作成する必要があります。これは SQL Server と対話する C# プロジェクトであるため、.NET ライブラリ プロジェクトを作成し、必要な参照を追加します。
- srcディレクトリに.NETプロジェクトを作成しましょう。
- 次に、SQL Server と対話するための SQL Server クライアント パッケージを追加しましょう。
- 次に、必要なファイルとフォルダ構造を作成しましょう。まず、Models フォルダと UserData モデルクラスを作成しましょう。
- 次に、SQL Server の操作を処理するための DataAccess フォルダーと UserDataRepository クラスを作成しましょう。
- 次に、Web ディスプレイのサニタイズのために Utilities フォルダーと UserDataSanitizer クラスを作成しましょう。
- 次に、dotnet new コマンドによって作成された既定の Class1.cs ファイルを削除しましょう。
- 実装が正しく機能することを確認するための簡単なテストプロジェクトを作成しましょう。
- UserData モデルと UserDataSanitizer のテストを作成しましょう。
- 次に、プロジェクトに関する情報を含めるように README.md ファイルを更新しましょう。
- プロジェクトの操作を容易にするために、ソリューション ファイルを作成しましょう。
- テストを実行して、すべてが正しく機能していることを確認しましょう。
- すごい!すべてのテストに合格しました。クラスを更新して警告に対処しましょう。
- 次に、テストを再度実行して、すべての警告が修正されたことを確認しましょう。
- まだいくつかの警告が出されていますが、テストは合格しています。これらの警告を消音するには、プロジェクト ファイルで null 許容コンテキストを設定します。
- 残りの警告を修正するために、UserDataSanitizer.csファイルを更新しましょう。
- 次に、テストを再度実行して、すべての警告が修正されたかどうかを確認しましょう。
- テストファイルにはまだいくつかの警告がありますが、それらも修正しましょう。
- もう一度テストを実行して、すべての警告が修正されたことを確認しましょう。
- すごい!すべてのテストに合格しており、警告はありません。リポジトリのステータスを確認しましょう。
- 進行状況を報告し、変更をコミットしましょう。
最後にやったことの一覧が要約されます。
この要約もよいですねー。

完了しているので Pull request を見ていきましょう。
Open で残っていますね。

入ると一番上にレビュー依頼が書かれていました。
Add your review を押してレビューしましょう。

データの感じを書いただけでしたが、架空のテーブルからデータを取り出す SQL も完備してくれています。

シリアライズもできていますね。

Web 利用を書いていたこともありサニタイズも意識してくれています。
.NET のライブラリーを有効活用してくれているのもよいですね。

一部のデータは構造に条件がある旨を書いていたのですが、それをチェックするメソッドも用意されていました。
Validation は個別のコードが必要となることもわかってくれたようです。
しかも、律儀に前後 200 年に限定するというコードになっています。
過剰実装かもしれないのですが、こういうところをレビューでつぶそうという観点はありですね。

もちろんコードに指摘があれば行うことができます。

Explain を呼び出して、、、
直したい内容を入れてみます。

Chat でプルリク生成まで進むのはよいですね、、、

もちろん修正してほしいので依頼を出しましょう。

当然のように再帰で Issue 対応をしてくれました、、、

Chat を使わずに + からレビューしても Copilot が応答をしてくれるので、とても楽ですね、これ、、、
というわけで、簡単にコードが書けるか試してみたのですが、本当に簡単でした。
これ、今後必要となる能力はレビュー力ですね。
自分で作らない分、根気強くレビューできるかどうかが技術者の重要な力になってきそうなイメージを持ちました。
利用できる人はぜひ試してみて下さい!
音楽:風が吹く日