Copilot CLI でGitHub Copilotモダン化を使用して.NETアプリをAzureに移行する

概要

Copilot CLI の GitHub Copilot modernization プラグインを使用して、.NET アプリケーションを Azure に移行する方法について説明します。

プラグインは、.NET アプリケーションを評価し、実行可能な最新化計画を生成し、移行を実行する自律的なマルチエージェント ワークフローをターミナルから提供します。 Azure移行、CVE の脆弱性の修正、アプリケーションの再設計がサポートされています。

注

GitHub Copilot CLI は、GitHub Copilot Pro、GitHub Copilot Pro+、GitHub Copilot Business、GitHub Copilot Enterprise プランで利用できます。 組織を通じて Copilot を受け取る場合、管理者は組織の設定で Copilot CLI ポリシーを有効にする必要があります。

実行可能事項

能力 説明
.NET の Azure への移行 NuGet セキュリティ監査や ASP.NET からAzureへの移行など、.NET アプリケーションを評価してAzure サービス (Service Bus、Azure SQL、Redis、Key Vault、Application Insights、マネージド ID) に移行する
CVE と脆弱性の修正 NuGet 依存関係の CVE の脆弱性をスキャンして修正する
アプリケーションの再設計 モノリスからマイクロサービスへの分解、レガシ UI の最新化、モジュールの抽出などの構造の書き換え

[前提条件]

プラグインをインストールする

  1. ターミナルで copilot を実行して CLI Copilot開始します。

    copilot
    
  2. マーケットプレースを追加し、プラグインをインストールします。

    copilot plugin marketplace add microsoft/github-copilot-modernization
    copilot plugin install github-copilot-modernization@github-copilot-modernization
    
  3. インストールされているプラグインを一覧表示して、プラグインがインストールされていることを確認します。

    /plugin list
    

    一覧に github-copilot-modernization:modernize が表示されます。

プラグインを更新する

新しいバージョンが利用可能になったときにプラグインを更新するには、次のコマンドを実行します。

copilot plugin update github-copilot-modernization@github-copilot-modernization

モダン化タスクを開始する

オプション 1: エージェントから直接開始する

.NET プロジェクト フォルダーに移動し、最新化エージェントCopilot CLI を開始します。

cd /path/to/your/dotnet-project
copilot --agent=github-copilot-modernization:modernize

オプション 2: Copilot CLI 内でエージェントを選択する

既に Copilot CLI セッションに参加している場合は、/agent コマンドを使用してモダン化エージェントに切り替えます。

/agent

一覧から github-copilot-modernization:modernize を選択します。

Important

最新化のプロンプトを実行する前に、 github-copilot-modernization:modernize エージェントを選択する必要があります。 このエージェントを選択しないと、Copilot CLI は既定のエージェントを使用します。このエージェントでは、フル マルチエージェント オーケストレーション、エンタープライズ プレイブックのサポート、プラグインが提供する特殊な移行機能を使用することはできません。

モダン化プロンプトを実行する

エージェントがアクティブになったら、自然言語で必要なものを説明します。

copilot> modernize my application

または、より具体的に指定します。

copilot> modernize my .NET application for Azure
copilot> migrate this app from local SQL Server to Azure SQL Database
copilot> fix CVE vulnerabilities in my project

無人実行の場合は、 --allow-all フラグを使用します。

copilot --agent=github-copilot-modernization:modernize --allow-all

ワークフローのしくみ

プラグインは、自動的に実行される 3 フェーズ ワークフローを使用します。 各フェーズを手動で呼び出す必要はありません。オーケストレーターは、要求に基づいてルーティングを処理します。

フェーズ 1: 評価

  • .NET のプロジェクト構造を検出し、適切な分析ツールを使用します。
  • 依存関係、フレームワーク、バージョンを分析します。
  • 最新化の機会とリスクを特定します。
  • 結果を .github/modernize/assessment/に保存します。

フェーズ 2: 計画

  • 評価結果とエンタープライズ プレイブックの制約 (存在する場合) を読み込みます。
  • 実行可能タスク プランを生成します。
  • プランを .github/modernize/<app>/plan.md して tasks.jsonに保存します。

フェーズ 3: 実行

  • タスクの種類に基づいて、特殊な Executor エージェントにタスクをルーティングします。
  • 各 Executor は、移行パターンについてナレッジ ベースを照会します。
  • 失敗した場合の自動再試行で進行状況を監視します。
  • レビュー用のタスクごとの詳細なコミットを作成します。

オーケストレーターは、意図に応じて複数のエントリ ポイントをサポートします。

Workflow 有効になるとき 何が起きるか
広範な意図 "アプリケーションの最新化" フル評価→計画→実行パイプライン
特定のタスク "SQL Server から Azure SQL に移行する" 評価をスキップし、計画→実行に直接進みます
既存のプランを実行する "プランの実行" 評価と計画をスキップし、既存のプランを実行します
ヘッドレス --allow-all を使用した無人実行 ユーザー プロンプトのない広範な意図と同じ

エンタープライズモダン化ポリシーを定義する

組織は、最新化の意図 (ターゲット アーキテクチャ、アップグレード標準、コンプライアンス ポリシー) を プレイブックを通じてワークフローに直接埋め込むことができます。 このアプローチにより、生成されたすべてのプランが、各決定を手動で確認することなく、エンタープライズ標準と一致することを保証します。

プレイブックを設定する

Markdown ファイルをプロジェクトの .github/modernize/playbook/ ディレクトリに配置します。 計画フェーズでは、このフォルダー内のすべての .md ファイルが自動的に読み取られ、タスク計画が生成される前に評価結果とマージされます。

Important

プレイブックの制約は、評価の推奨事項より優先されます。 プレイブックで "メッセージングにAzure Service Busを使用する" と指定されている場合、評価で検出される内容に関係なく、その選択が優先されます。

プレイブックで定義できる内容

ポリシーの種類 例
ターゲット アーキテクチャ コンピューティング サービス (App Service、AKS、Container Apps)、データベースの選択肢 (Azure SQL、Cosmos DB)、メッセージング プラットフォーム (Service Bus、Event Hubs)
アップグレード標準 ターゲット .NET バージョン、フレームワークの移行パス
ガードレール 禁止されているテクノロジ、セキュリティ要件、コンプライアンスの制約、認証標準
コーディング標準 名前付け規則、認証パターン、ログ 記録フレームワーク
移行戦略 スコープの境界、6R 分類の基本設定 (リホストとリファクターと再設計)、段階的な戦略

プレイブックの例

.github/modernize/playbook/enterprise-standards.mdでファイルを作成します。

# Enterprise Modernization Standards

## Target Architecture
- Use Azure Container Apps for microservices deployments
- Use Azure Service Bus for all asynchronous messaging
- Use Azure SQL Database for relational data
- Use Azure Blob Storage for file storage

## Security & Compliance
- All services must authenticate using Managed Identity — no connection strings or passwords in code
- All public endpoints must be behind Azure Front Door

## Guardrails
- Do not use Azure Functions for long-running processes
- All infrastructure must be defined in Bicep

固定の名前付けや構造は必要ありません。オーケストレーターは、各ファイルの目的をその内容から推測します。

組み込みの既定値

プレイブックがない場合、プラグインは適切な既定値を適用します。

  • Azure: 認証のマネージド ID、リレーショナル データのマネージド データベース サービス。
  • Messaging: オンプレミス メッセージング → Azure Service Bus。
  • インフラストラクチャ: 既定では Bicep。

一般的なシナリオ

Azure移行

copilot --agent=github-copilot-modernization:modernize
copilot> modernize my .NET application for Azure

ローカル SQL Serverから Azure SQL に移行する

copilot --agent=github-copilot-modernization:modernize
copilot> migrate this app from local SQL Server to Azure SQL Database with managed identity

ファイル I/O から Azure Blob Storage に移行する

copilot --agent=github-copilot-modernization:modernize
copilot> migrate this app from local file I/O to Azure Blob Storage

CVE とセキュリティ修正

copilot --agent=github-copilot-modernization:modernize
copilot> fix CVE vulnerabilities in my project

アプリケーションの再設計

copilot --agent=github-copilot-modernization:modernize
copilot> rearchitect my monolithic application into microservices

完全な最新化

copilot --agent=github-copilot-modernization:modernize
copilot> modernize my application

Troubleshooting

プラグインが見つかりません

# Verify marketplace is added
copilot plugin marketplace list

# Re-add marketplace if needed
copilot plugin marketplace add microsoft/github-copilot-modernization

# Reinstall
copilot plugin install github-copilot-modernization@github-copilot-modernization

評価に失敗する: アプリケーションが見つかりません

  • プロジェクト ルートに .csproj または .sln ファイルが含まれていることを確認します。
  • Copilot CLI を起動する前に、正しいディレクトリにいることを確認してください。

MCP サーバーの問題

プラグインは、その構成で定義されている MCP サーバーを使用します。 問題が発生した場合は、プラグインを再インストールして MCP 構成をリセットします。

フィードバックを提供する

GitHub Copilot CLI フィードバック フォームを使用して、GitHub Copilot CLI に関するフィードバックを共有します。

リファレンス