"GitHub Copilot で運用も楽にしたい"
というわけで、今回はサービスの変更や新機能が出た際に、自分のAzure環境にどんな影響があるかを教えてくれる GitHub Copilot について書きます。
やりたいこと
影響が出そうな更新・変更情報を見たらそのURLを入れると、自分が持っている環境に影響があるかどうかの調査レポートを作成すること(下図)になります。
作ったカスタムチャットモード
今回のように特定用途・シナリオで動く場合は GitHub Copilot のカスタムチャットモードがいい感じです。ので、カスタムチャットモードのフォルダを用意し、以下のように指示ファイルを置きます。
.github
└ chatmodes
└ check-impact.chatmode.md
その上で、check-impact.chatmode.md
に以下の内容をいれます。
- ツール: Microsoft Docs MCP, Azure MCP (※インストール経路で名前が変わります)
- 最初にURLを読み込む、公式Docsを MS Docs MCP で検索する
- 次に自分のAzure環境をAzure MCPで検索する
- 最後にレポートを作成する
※check-impact.chatmode.mdの全文は末尾につけておきます
できたもの
URLを投げると、分析してレポートを作ってくれるカスタムチャットモードの完成です。
できたレポートを見ると、影響なし、ということがわかりました。
どういうクエリで調査したかも記載されているので、AI の回答を信じればとても楽になりそうです。(信じられなければそもそも使えませんが・・)
まとめ
クリティカルなシステムの調査をこれで終わり、ということはできなそうですが、間違っていても最悪許されるケースとか、そもそもどういう変更でどういう調査をすればよいか、みたいな形で使うことはできそうです。
GitHub Copilot を使うと開発業務だけでなく、こういった調査もとても楽になるので、また色々作業させてみたいと思います。ちなみに、類似の形でヘルスレポートを出すカスタムチャットモードなんかも良い感じに動きます。
あとはどこまで AI の回答を信用するか、ですが。。ひとまず補助的な用途であればどこでも便利に使えるのではないかなと。
check-impact.chatmode.mdの全文
---
description: 'Azure リソースを分析し、提示された変更や新機能が影響があるかを判断します'
tools: ['codebase', 'usages', 'vscodeAPI', 'think', 'problems', 'changes', 'fetch', 'searchResults', 'extensions', 'editFiles', 'search', 'new', 'runCommands', 'runTasks', 'microsoft-docs', 'Azure MCP']
---
# Azure リソースの影響度分析
このワークフローは、指定されたサブスクリプションにおいて、提示された更新・機能追加などの情報が影響があるかを判断します。
## 前提条件
- Azure MCP サーバーが構成および認証済み
- 対象の Azure リソースが特定済み(サブスクリプション)
**ここに対象サブスクリプションIDを記載、無ければユーザに確認**
- 可能な限り直接の Azure CLI より Azure MCP ツールを優先する
## 作成するドキュメント
- ドキュメントは(/report)フォルダに作成します。
- 作成するファイルの名前: impact-report-<YYYYMMDD-HHMMSS>.md
## ワークフロー手順
### ステップ 1: 変更などの情報理解
**アクション**: 提示された情報を理解する
**ツール**: fetch, microsoft-docs ツール
**プロセス**:
1. **提示された情報を読み込む**
- URLが指定されている場合、fetchツールを使って内容を取得する
- micorosft-docs ツールを用いて変更内容に関して公式情報を調査する
- 内容を理解し、影響対象、影響度をまとめる
### ステップ 2: リソースの探索と特定
**アクション**: 対象の Azure リソースの所在を特定する
**ツール**: Azure MCP ツール + フォールバックとしての Azure CLI
**プロセス**:
1. **リソースの検索**:
- `azmcp-subscription-list` を使用してサブスクリプション全体を検索する
- 影響するリソースを見つけるために `az resource list --name <resource-name>` を使用する
- 複数の一致が見つかった場合、ユーザーにサブスクリプション/リソース グループの指定を促す
- 詳細なリソース情報を収集する:
- リソースの種類と現在の状態
- 場所、タグ、構成
- 関連サービスと依存関係
2. **リソース種類の検出**:
- ステップ1で分析された影響対象に基づき、影響のありうるリソースを特定する
### ステップ 3: 影響の評価
**アクション**: 現在のリソースの構成と影響を評価する
**ツール**: Azure MCP ツール, microsoft-docs ツール
**プロセス**:
1. **影響度評価**:
- リソースの構成が、影響対象の変更にどのように関連しているかを評価する
### ステップ 7: ユーザー確認とレポート作成
**アクション**: 調査結果を提示し、影響評価を確定する
**プロセス**:
1. **影響評価のサマリーを表示**;
```markdown
🏥 Azure リソース影響評価
🚨 影響の概要:
[提示された情報をまとめた、影響対象、影響度に関する概要]
🔍 影響の有無
[影響の有無、あるいは不明]
[※不明の場合:追加調査方法の提案]
📊 影響があるリソース一覧
• リソース: [Name] ([Type])
• 影響度: [高、中、低]
• 理由: [影響が発生する理由]
• リソース: [Name] ([Type])
• 影響度: [高、中、低]
• 理由: [影響が発生する理由]
🖼 影響がなかった理由
[影響がなかった理由]
(本当はこの文章は不要。Qiitaに乗せる際にマークダウンが分割されないよう挿入)```
2. **影響度サマリーレポートの生成**:
1. のサマリー情報をレポートとして保存する。
## エラー処理
- **リソースが見つかりません**: リソース名/場所の指定に関するガイダンスを提供
- **認証の問題**: Azure 認証の設定をユーザーに案内
- **権限不足**: リソース アクセスに必要な RBAC ロールを列挙
- **サービス固有の問題**: 制限事項を明記した汎用の正常性評価を提供
## 成功基準
- ✅ 影響度に関するまとめ(対象リソース、内容)が作成されている
- ✅ 影響度確定が明確になされている
- ✅ 影響しうるリソースがあれば列挙されている