SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 運用ツールの作成で GitHub Copilot Coding Agent を活用してみる

leave a comment

週末、SQL Server ベースの環境の運用ツール作成で GitHub Copilot Coding Agent (以下、Coding Agent) を活用することができるのかを検証していました。

その時の知見をまとめておきたいと思います。

ドキュメント

Coding Agent を使用する際に確認するドキュメントとして、次のドキュメント (またはドキュメントツリーの内容) があります。

Premium Request が有効化されたことで、Premium Request については、GitHub Community にも Premium Request のディスカッション が挙がってきていますのでこれも参考になるかと。

現状、Premium Request については、Cannot use any premium model, Pro+ #161563 が議論が進んでいそうでした。
私もこのディスカッションで質問をしています。

 

基本的な使用方法

 

カスタマイズ

ファイアウォールのカスタマイズ

プロンプトのカスタマイズ

環境のカスタマイズ

MCP のカスタマイズ

 

私が実行した際には、Coding Agent はタスクの実行時に .json / .js / .ts / .html / .md から 20 件を読み込んでコードベースを理解しようとしているようでしたので、カスタマイズの内容は Markdown に記載しておくとよさそうですね。(ファイル数が多い場合は、カスタマイズの内容を記載したディレクトリの読み込みを指示したほうがよさそうですが)

 

Coding agent が使用できるプラン

GitHub Copilot で提供されているプランは GitHub Copilot のプラン から確認することができます。

2025/06/24 から Copilot Business、2025/06/26 から Copilot Pro でも使用することができるようになりました。

個人向けの GitHub Copilot のプランですと、Coding Agent がサポートされるのは、「Copilot Pro 以上」となり、私は Pro で Coding Agent がサポートされる前に確認を始めていたので、Pro+ のプランを契約しています。

image

Coding Agent を使用した場合、Premium Request と GitHub Actions の時間が消費されることになります。

2025/07/10 から、Coding Agent の Premium Request の消費数が緩和され、Pro に含まれる 300 Premium Request/月 + 上限を超えた分の PAYG でも十分に使っていけると思いますので、最初は Pro で始めても良いかのではないでしょうか。

 

Premium Request の消費について

Coding Agent は Premium Request (プレミアム リクエスト) の対象であり、2025/06/18 から Coding Agent を使用すると Premium Request が消費されるようになりました。 (Premium Request についてのアナウンス: GitHub Copilot プレミアムリクエスト制限適用開始日を2025年6月4日に変更 ? 6月6日追記)

Copilot におけるリクエストの理解と管理 から Premium Request について確認することができます。

Premium Request は使用するモデルによって、乗数がかわります。

本投稿の作成時点では、GPT-4.1 / GPT-4o については「既定のモデル」という扱いとなり、乗数は 0 として、Premium Request を消費することなく使用することができます。

Premium Request が全て消費し、追加の Premium Requestの要求ができない状態となっている場合は、既定のモデルのみ利用することができる状態となります。

Coding Agent については、使用するモデルを設定することはできず、セッション内に対して 1 Premium Request 消費がされます。

当初はセッション内のタスクに応じて Premium Request が消費されましたが、2025/07/10 にアナウンスされた GitHub Copilot coding agent now uses one premium request per session の改善で 1 セッション / 1 Premium Request の消費に緩和されました。

image

Coding Agent は最初にどのようなタスクを実行するかを計画して、セッションを開始、セッション内でタスクの要件を満たすことための作業を実行していきます。(PR の一覧画面でどの程度タスクの実行が完了されたかを確認できます)
image

提供された当初は、私が依頼しているタスクでは 1 セッション辺り 20~50 ぐらいの範囲で Premium Request が消費されており、Coding Agent へのタスクの依頼はプランに含まれている Premium Request だけでは 30 ~ 75 程度までしか実行することができませんでした。

2025/07/10 以降は 1 セッション / 1 Premium Request となり、実行可能なタスク数が数 10 倍となり、通常の使用方法であればプランに含まれる Premium Request で Coding Agent の消費を十分にまかなうことができるかと思います。

 

GitHub Actions の消費時間について

Coding Agent の処理は GitHub Actions で実行されていますので、タスク実行時には Premium Request の他に GitHub Actions も消費されることになります。

本投稿で作成したツールでの Coding Agent 利用時の GitHub Actions の消費については次のようになっており、Pro の使用上限 となる 3,000 分の範囲でまかなえていました。

  • ストレージ: 0.05 GB
  • 稼働時間: 1,451 分

Coding Agent で消費される Premium Request 数が大幅に削減されたことで、実行するタスクの数が多くなると思いますので、Premium Request の追加での購入は不要でも、GitHub Actions の時間の追加購入は検討しておいたほうが良いかもしれませんね。

 

Copilot Agent との併用

作業の内容によっては、GitHub Copilot Agent と併用することで効率よくタスクをこなしていくことができるかもしれません。

Coding Agent の Premium Request の消費が 2025/07/10 以降、大幅に改善されたことで、Premium Request の消費の観点で Copilot Agent と Coding Agent を使い分ける必要性は低くなったかと思います。

Coding Agent は実行するのに分単位で時間がかかりますが、Copilot Agent はすぐにタスクの実行にとりかかってくれますので小規模な対応であれば Copilot Agent を使ったほうが効率が良いケースもあるのではないでしょうか。

Coding Agent はリポジトリ全体を読み込んでタスクを組み立て、Copilot Agent は開いているファイル (コンテキストに追加されているファイル) をベースとして対応をするという違いがあり、私は、時間がかかってもよいのでCoding Agent に要求を投げてしまっていますが。

GitHub Pull Requests (Marketplace) を使用すれば、Issue や PR を Visual Studio Code で操作できるようになります。

操作しているリポジトリを VS Code で開き次のような画面構成で作業を進めています。

image

 

Premium Request の使用状況の確認

Premium Request の使用状況の確認については Monitoring your Copilot usage and entitlements の方法で確認できます。

他にも確認方法はあるかと思いますが、次のような情報から確認することができました。

  • Visual Studio Code から確認
  • GitHub の使用状況レポートから確認
  • GitHub の Copilot の Features から確認

 

Visual Studio Code から確認

Visual Studio Code から確認する場合は、ステータスバーの Copilot アイコンから確認することができます。
プレミアム要求が 100% になると、使用可能な Premium Request をすべて消費した状態となります。

追加の Premium Request を要求できる設定になっていない場合は「プレミアム要求が無効」という表示になります。

image

 

GitHub の使用状況レポートから確認

GitHub の「Settings」->「Billing and licensing」->「Usage」から「Copilot premium requests usage report」のダウンロード要求をすることで、当月内の Premium Request の要求状況の詳細を確認できます。

日単位での確認であれば「Managed billing usage report」から確認することができます。

image

 

GitHub の Copilot の Features から確認

Visual Studio Code の使用状況相当の状況は GitHub からも確認できるようになっており、Settings の Copilot -> Features からも確認できました。

image

 

Premium Request を上限まで消費した場合の挙動

Premium Request は毎月 1 日に消費状況がリセットされますが、プランに含まれている Premium Request を使い切った場合は Premium リクエストを使い切った場合はどうなりますか? に記載されている動作となります。

上限になると、Premium Request を消費する機能を使用した場合に、次のようなメッセージが表示され実行することができません。

 

Visual Studio Code

image

github.com の Copilot チャット

image

Coding Agent

image

 

追加の Premium Request が要求することができる設定になっていれば、追加コストは発生しますが、プランに含まれている上限を超えて使うことができます。

追加の Premium Request が要求できない場合、使用できるモデルが制限され「既定のモデル」(乗数が 0 になっている GPT-4.1 / GPT-4o) のみが使用できる状態となります。

image

使用するモデルが選べる Copilot Chat のような機能については、既定のモデルを選択して機能の利用を継続することができます。

しかし、Coding Agent のような使用するモデルが選択できない機能については、利用するモデルを制限して機能の利用を継続することができず、機能の利用自体がブロックされてしまうようです。

 

追加の Premium Request の要求

プランによって割り当てられている Premium Request の上限を使い切った場合、追加の Premium Request を $0.04USD/1Requestで使用していく必要があります。(乗数が 1 でないモデルの場合は、コストに乗数がかけられます)

追加の Premium Request を使用する場合の情報としては次のドキュメントになるかと思います。

上述の画像のとおり、投稿の作成時点で、私は月内の Premium Request を使い切ったため次の設定を実施しています。

  • GitHub アカウントの「Settings」->「Copilot」->「Features」の「Additional Copilot premium requests」を「ON」に設定
  • GitHub アカウントの「Settings」->「Billing and licensing Budgets and alerts」の「Product の Copilot」or「SKU の Copilot Premium Request」のいずれかの Budget を設定
  • GitHub アカウントの「Settings」->「Billing and licensing Budgets and alerts」の「Payment information」の「Payment method」を設定

これにより、追加の Premium Request を要求することができました。

追加の Premium Request が要求できる場合、Visual Studio Code / GitHub の Copilot チャットが次のような表示となり、追加の Premium Request が消費される状態となっていることを確認できます。

Visual Studio Code
image

github.com の Copilot チャット

image

追加の Premium Request が要求されると Budget が消費されていき、設定した上限まで利用することが可能となります。

image

追加で消費された Premium Request については使用状況に次のように表示されました。

プランに含まれている Premium Request の消費は Usage に表示されないようですが、追加の Premium Request が消費された場合は、表示されるようです。

image

 

CSV の表示内容も変わり、追加の Premium Request が消費された要求については「Exceeds Monthly Quota」が「TRUE」となっているようですね。

image

 

最終的な 6 月の使用状況は次のようなグラフとなりました。

image

 

基本的な使用方法

基本的な使用方法については、Copilot へのタスクの割り当てについて から確認することができます。

Copilot agent へのタスクの割り当て方法については、次の 2 種類の方法があります。

 

私は Issue を作成する際に、Assignes に Copilot を割り当てることでタスクの割り当てを行っています。

image

Issue ではなく、Copilot Chat プロンプトで「@github」宛て (チャット参加者として指定) にタスクを記載した Pull Request の作成を指示することでタスクを割り当てることもできます。

Visual Studio Code から実行しようとしたところ、私の環境では、Bug: Copilot Chat Sends Invalid copilot_confirmations Payload Causing Unmarshal Error #160122 と類似の問題が発生しているようで、チャット経由でのタスクの割り当ては試していません。(github.com 上の Chat プロンプトで実行すれば実行できるかもしれませんが、サイトを開くなら Issue を立てておいたほうが管理しやすいので Issue で操作しています)

前述のとおり GitHub Pull Requests の拡張機能で VS Code から、Issue を起票できますので、チャット経由でタスクの割り当てができない場合には、Issue からタスクを割り当てたほうが良いかもしれませんね。

スマホの GitHub アプリからも Issue の登録と Copilot へのアサインが可能ですので、移動中に思いついた内容を登録して作業をしてもらうこともあります。

Copilot へのアサインは後からでも可能ですので、今後のタスクを一通り登録しておき、タイミングを見て Copilot にアサインしてタスクを進めていくということも可能ですので、未アサインのタスクを作成するようにしておくのもよさそうですね。

 

実際の作業の流れ

実際の作業の流れとしては次のようになり、自然言語を用いた Vibe Coding によりタスクを進めていきます。

  1. Copilot に割り当てた issue を作成
    image
  2. Copilot がタスクとして認識すると watch のリアクションが付与され、新しいブランチが作成され pull request が作成される
  3. pull request 内に作業の状況が表示され、タスクが完了するとレビュー依頼が来る
    image
  4. レビューをし改善が必要であれば、コメントで指摘し、Coding Agent に再度タスクを実行させる
    image
  5. レビューし問題が無ければ、Pull Request をマージする

これを繰り返すことで、開発を実施していきます。

Coding Agent にタスクを依頼する Issue は複数作成しておくことが可能ですので、複数のタスクの実施を同時に依頼しておくことも可能です。

上述の操作では、github.com の Issue を起点としていますが、前述のとおり Visual Studio Code に GitHub Pull Requests の Extension を導入することで、Visual Studio Code からも同様の流れで操作することができます。

 

Copiot が動作しなかった場合の対応

PR にコメントを作成しても Copilot の watch アイコンが表示されず、Copilot の作業が開始されないケースが稀に発生しました。

そのような場合は「@copilot」をつけてコメントを再度追加することで、タスクの実行が行われるかと思います。

 

Codong Agent が実行している内容の把握

Coding Agent が実行しているタスクには、「View session」というボタンが表示されます。

image

ここから、Coding Agent がどのように指示を理解してタスクを進めていたのかを把握することができます。

想定していない対応をしてきたときには、どのように解釈されたのかを確認して、そのように判断されないようなプロンプトにすることが重要となってくるのかもしれませんね。

image

状況によっては PR をマージせずに新しい Issue で指示を出しタスクをやり直す / 特定のコミットまで処理を破棄させて再度単純なタスクに分割して再実行をさせることも考慮が必要となります。

他のコードで類似の実装ができている場合は、そのコードを提示して作業を進めさせることで、期待した動作になる可能性もあります。

 

Coding Agent がタスクを完了した際にナレッジを収集する

Coding Agent を使用していると「Agent が何故そのような対応を実行したのか?」を把握することが重要だと感じてきます。

前述のとおりセッション (or Actions) からどうしてそのような対応を実施したのかを確認することができますが、「copilot-instructions.md」に次のような記載を行っておくことで、リポジトリ内にファイルとして記録させることも可能でした。

# ナレッジの収集

- Coding Agent でタスクを完了した場合、knowledge ディレクトリにタスクの内容 / どのように試行してその内容を実施ししようとしたのかのナレッジを Markdown 形式で記載してください。
- Coding Agent の実行ごとに 1 ファイルを作成するのではなく、同一の PR 内のタスクは一つのファイルに情報を集約してください。
- ナレッジのファイル名は次の形式で作成してください
  - {PR 番号}-{タスク名}.md
    - タスク名は英語表記
  - 例: 123-Create-API.md

 

Coding Agent がどのように思考してその対応を実施したのかは、誤った対応がされた場合の方向修正に重要であり、対応の内容は自身のナレッジとしても重要となりますので、Coding Agent の実施内容はいつでも見れるようにしておくと良いケースもあるのではないでしょうか。

image

 

カスタマイズ

本投稿の冒頭のドキュメントに記載していますが、Coding Agent の挙動をカスタマイズする方法が提供されています。

私は現時点では次のようなカスタマイズを実施しています。

  • 作成内容に合わせたファイアウォール設定の変更
  • 「.github/copilot-instructions.md」に日本語で回答するようにカスタム指示を追加
  • MCP サーバーとして、Playwright MCP Server / Microsoft Learn Docs MCP Server を追加
    • リポジトリの Settings の「Copilot」->「Coding agent」から使用する MCP サーバーを追加

 

追加するファイアウォール設定の判断

Coding Agent は pull request の中作業の状況を報告してくれますが、その中で「Firewall rules blocked me from connecting to one or more addresses」の警告か表示されることがあります。

image

これは、タスクを進める中で外部のサイトにアクセスができなかったことを示すものとなります。

Coding Agent ではデフォルトで許可されているアクセス許可サイトは制限がされており、既定では「COPILOT_AGENT_FIREWALL_ALLOW_LIST」で許可されているサイトのみアクセスが可能となっています。(既定で許可されているサイトは、Coding Agent で実行された GitHub Actions の Proessing Request の env の内容等から確認できます)

許可サイトの設定の制御には次の 3 種類の方法が提供されているようですが、私は「1.」の方法を使用しています。

  1. 「COPILOT_AGENT_FIREWALL_ALLOW_LIST_ADDITIONS」で許可サイトを追加する
  2. 「COPILOT_AGENT_FIREWALL_ALLOW_LIST」の設定を上書きする
  3. 「COPILOT_AGENT_FIREWALL_ENABLED=false」でファイアウォールを無効化する

リポジトリの「Settings」の「Environments」に「copilot」がありますので、その中に「COPILOT_AGENT_FIREWALL_ALLOW_LIST_ADDITIONS」を追加することで許可サイトの設定を変更しています。

image

 

ワークフローファイルによるカスタマイズ

Copilot コーディング エージェントの開発環境のカスタマイズ に GitHub Actions ワークフローファイルを作成して、カスタマイズする方法が公開されています。

ワークフローファイルでカスタマイズ可能な設定は限定的となっているようです。

ワークフローファイルの jobs 内に「env」を設定しても期待した動作にできなかったので、リポジトリの環境変数のメンテナンスで対応しています。(ワークフローファイルを使用して制御できるのかもしれませんが、ここは私のスキル不足の可能性があります)

 

Coding Agent を利用して作ったものを紹介

Coding Agent で作ったツールについては、Public に公開することを想定せずに指示をしていたため、リポジトリを公開することはできないのですが、どのようなものを作ったのかの紹介を。

 

Dev Container の作成

今回作っていたツールは次のような構成となります。

  • NGINX + PHP-FPM
  • PDO_SQLSRV によるデータベースのアクセス
  • プロセスは supervisor で起動
  • Xdebugによりデバッグができる環境

普段から開発していれば上記の構成の環境をすぐに用意できるのでしょうが、手元には開発環境が無かったため、Coding Agent の最初のステップとしては、Dev Container として今回作成するツールの実行環境を用意してもらうことから始めました。

最終的にはこのようなページ付きで Dev Container の実行環境を用意してくれました。

image

 

グラフを表示するページの作成

私が DB の挙動を確認する際には、「クエリを定期的に実行して前回取得値との差分を算出して秒間の値を計算する」ということを行う機会が多いです。

Windows の SQL Server の環境であればパフォーマンスモニターを使用すればよいのですが、それ以外の完了 (主に PaaS) では、クエリを定期的に実行するコードを書いて数字で表示するということを行っています。

上述の算出方法を行う機会が多いのは「Batch Reqeusts/sec」なのですが、情報取得の SQL / どのように加工,表示してほしいのかをプロンプトで指示したところ、次のような画面が作成されました。

image

定期的にクエリを実行し、グラフにプロットを増やしていくというものなのですが、軽く触っていた感じでは要件を満たせておりよさげでした。

Coding Agent から直接アクセス可能な SQL Server ベースの環境は用意していなかったのですが、DMV のような一般的な情報を活用したものであれば、既存の知識で良しなにデータのモックを作って実装を進めてくれていそうな雰囲気でした。

 

Azure OpenAI との連携

テーブルの構造を表示するページの作成についても指示をすることで作成することができます。

image

テーブルのスキーマ情報を Azure OpenAI に連携し、このテーブルがどのような特性を持つテーブルなのかを解説した情報を説明として追記させるということも可能です。

image

最初の成果物で Fix 出来ていたページはないのですが、細かな修正を指示していくことで、直接コードの修正は発生させることなく、考えていた内容の実装が進められていたように思えます。

 

参考: 現時点で実装できた機能

現時点では次の内容を Coding Agent で実装しています。

  • 実行環境用の Dev Container の生成
    • Nginx + PHP-FPM
    • Xdebug によるデバッグ
    • PDO_SQLSRV / SQLSRV の導入
    • Composer の利用
  • Entra ID によるログインを実装したページの作成
  • テスト用ページ
    • SQL Server / デバッグ / PHP の情報
  • ENV ファイルによる環境変数の設定
  • バッチ実行数の可視化
  • 任意のクエリを定期的に実行しメトリックを可視化
  • トランザクションログの解析
  • データベース情報の取得
    • データ,ログの使用状況 / 互換性レベル / 復旧モデルの表示
  • テーブルの取得
    • 一覧 / レコード数 / データサイズ / インデックス数の表示
    • スキーマ情報の取得
  • Azre OpenAI 連携
    • スキーマ情報からテーブルの説明を生成
    • テーブルのチューニング推奨事項の生成
    • テーブルレビューとスコアリング

トップページとしては次のような画面が自動生成されています。

image

 

細かな調整が必要な点はいくつかありますが、「ひとまず動作する機能を Coding Agent を使用して実装する」という点においては実現ができています。

自分の本来の作業を進める裏で、GitHub の操作のみでバックグラウンドで実装を進めていくことができ、自分に足りないスキルも保管してもらえていますので、今回作ったツールとしてはコスト以上の成果は出せているかと思います。

AI コーディングはジュニアレベルのエンジニアのスキルを備えているということが言われることが多いですが、自分のようなインフラの製品特化のエンジニアとしては「これでジュニアレベルのエンジニアなのか….」と戦々恐々とする今日この頃です。

Share

Written by Masayuki.Ozawa

6月 17th, 2025 at 9:57 am

Leave a Reply