Batch 評価を使用すると、複数のアプリケーションを同時に分析できるため、アプリケーション全体の最新化状況を包括的に確認できます。 この記事では、複数のリポジトリを効率的に評価するプロセスについて説明します。
バッチ評価は、さまざまなアプリケーションの準備状況と要件を一度に効率的に評価できるため、移行計画に特に重要です。 バッチ評価を使用すると、異なるリポジトリを同時に評価し、各アプリケーションの詳細な評価レポートを取得できます。 移行計画をサポートするために、次の 2 種類のレポートが生成されます。
- アプリごとのレポート: 個々のリポジトリ レベルで特定されたすべての最新化の問題に関する詳細な分析情報を提供します。
- Aggregated レポート: 評価されたすべてのアプリケーションの全体的な視点を示し、概要分析情報、Azure サービスに関する推奨事項、ターゲット プラットフォーム、アップグレード パスを提供します。 さらに、集計されたレポートには、各アプリ レポートに簡単にアクセスするためのショートカットが含まれています。
Batch 評価には、次の利点があります。
アプリケーション間の可視性:
- 集計レポート: アプリケーション全体の包括的なビューを取得します。
- クロスリポジトリ分析: アプリケーション間の一般的なパターンと依存関係を特定します。
- 優先順位付けの分析情報: すぐに注意が必要なアプリケーションを理解します。
スケールと効率:
- 並列処理: クラウド コーディング エージェントを使用して、複数のリポジトリを同時に処理します。
- 自動化されたワークフロー: スケジュールされた評価のために CI/CD パイプラインと統合します。
- 時間の節約: 評価時間の合計を数週間から数時間に短縮します。
前提条件
- CLI を最新化します。
- 評価するすべてのリポジトリへのアクセス。
- GitHub認証が構成されている (
gh auth login)。
リポジトリを構成する
モダン化エージェントでは、評価するリポジトリを指定する複数の方法がサポートされています。
- 現在のフォルダー: 現在の作業ディレクトリ内のプロジェクトを評価します。
- 手動入力: ローカル ディレクトリ パスまたはリモート Git URL を直接入力します。
- リポジトリ構成ファイル: すべてのリポジトリを一覧表示する JSON 構成ファイルを使用します。
リポジトリ構成ファイル
多数のリポジトリでバッチ操作を行う場合は、すべてのリポジトリを一覧表示する JSON 構成ファイルを作成します。 たとえば、作業ディレクトリの .github/modernize/repos.json に作成するか、カスタム パスを指定します。
リポジトリに適切なアクセス許可があることを確認するか、フォークを作成してください。
単純な形式 (リポジトリの配列):
[
{
"name": "PhotoAlbum-Java",
"url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
},
{
"name": "PhotoAlbum",
"url": "https://github.com/Azure-Samples/PhotoAlbum.git"
},
{
"name": "eShopOnWeb",
"url": "https://github.com/dotnet-architecture/eShopOnWeb.git"
}
]
フル フォーマット (ブランチ パスとローカル パスを含む):
{
"repos": [
{
"name": "PhotoAlbum-Java",
"url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
"branch": "main"
},
{
"name": "local-project",
"path": "/absolute/path/to/project"
}
]
}
各リポジトリ エントリは、次のフィールドをサポートしています。
| フィールド | 説明 | 必須 |
|---|---|---|
name |
リポジトリのフレンドリ名 (レポートとダッシュボードで使用)。 | はい |
url |
HTTPS または SSH 形式の Git クローン URL。 |
urlまたはpath |
path |
絶対ローカル ディレクトリ パス。 |
urlまたはpath |
branch |
複製後にチェックアウトする分岐。 | いいえ |
description |
人間が判読できる説明。 | いいえ |
アプリのグループ化を使用した完全な形式 (省略可能、整理されたレポートの場合):
apps[] セクションを追加して、リポジトリを論理アプリケーションにグループ化できます。 アプリが定義されると、集計レポートはアプリケーションごとに結果を整理し、外部の宛先へのレポート配布をサポートします。
{
"repos": [
{
"name": "PhotoAlbum-Java",
"url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
"branch": "main"
},
{
"name": "PhotoAlbum",
"url": "https://github.com/Azure-Samples/PhotoAlbum.git"
}
],
"apps": [
{
"identifier": "photo-app",
"description": "Photo management application",
"repos": ["PhotoAlbum-Java"],
"output": {
"type": "local",
"path": "/path/to/reports/photo-app"
}
}
]
}
各アプリ エントリでは、次の機能がサポートされます。
| フィールド | 説明 | 必須 |
|---|---|---|
identifier |
アプリケーションの一意の表示名。 | はい |
description |
人間が判読できる説明。 | いいえ |
repos |
このアプリに属するリポジトリ名の一覧。 | はい |
output |
生成後にこのアプリの評価レポートを配布する場所。 | いいえ |
[ output ] フィールドでは、次の配布の種類がサポートされています。
| タイプ | 説明 | 必須フィールド |
|---|---|---|
local |
レポートをローカル ディレクトリにコピーします。 | path |
git |
Git リポジトリにレポートをプッシュします。 URL 形式は、https://github.com/org/repo.git#branch:path です。 |
url |
ヒント
アクセス権がある限り、さまざまな組織のリポジトリを含め、さまざまな認証方法を使用できます。
モダン化エージェントは、対話型モードで構成ファイルから選択すると、repos.jsonで.github/modernize/repos.jsonファイルを自動的に検出します。 カスタム パスを指定することもできます。
バッチ評価の実行
次の 2 つの実行モードを使用できます。
- ローカル実行: モダン化エージェントは、ローカル コンピューター上でリポジトリを次々に処理します。 このモードは、小規模なアプリケーションセットや初期テストに最適です。 Git URL とローカル パス リポジトリの両方をサポートします。
- Cloud Coding Agent の委任: モダン化エージェントは、クラウドでの並列処理のために GitHub クラウド コーディング エージェントにタスクを送信します。 マルチリポジトリ シナリオでは、このモードの方が高速です。
Important
クラウド コーディング エージェントの委任では、リポジトリに GitHub (github.com) リポジトリ URL が必要です。 ローカル パス リポジトリとGitHub以外のプロバイダー (GitLab、Azure DevOps) は、クラウド委任ではサポートされていません。 これらのリポジトリに対してローカル実行を使用します。
ヒント
クラウド コーディング エージェントの委任を使用すると、すべてのリポジトリで並列実行を有効にすることができます。 このアプローチにより、大規模なポートフォリオの総評価時間が大幅に短縮されます。
対話型モード (ローカルで評価)
モダン化エージェントを実行します。
modernizeメイン メニューから [評価 ] を選択します。
ターゲット リポジトリを指定する方法を選択します。
repos.json使用するには、[構成ファイルから] を選択します。ヒント
[ 手動入力 ] を選択してローカル パスまたはリモート Git URL を直接入力することも、 現在のフォルダー を選択して現在のディレクトリ内のプロジェクトを評価することもできます。
repos.jsonファイルが既定の場所で検出されると、エージェントによって自動的に入力されます。 それ以外の場合は、構成ファイルへのパスを入力し、Enter キーを押 します。既定では、すべてのリポジトリが選択されています。 スキップするリポジトリの選択を解除し、 Enter キーを押して選択を確定します。
- 方向キーを使用して 移動し、 Space キーを押して個々のリポジトリを切り替えます。
実行モードを選択します。 [ローカルで評価] を選択します。
分析する評価ドメインを選択します。 Java upgrade と Cloud Readiness から選択し、Enter キーを押します。
評価オプションを確認して構成します。 構成ページには、言語とドメインごとにグループ化されたオプションが表示されます。
- Java/ GENERAL: 分析対象範囲 (問題のみ、問題、およびテクノロジ、または問題、テクノロジ、および依存関係)。
- Java/JAVA UPGRADE: ターゲット ランタイム (OpenJDK 11、17、または 21)。
- Java/CLOUD READINESS: ターゲット コンピューティング サービス、ターゲット オペレーティング システム、コンテナー化。
- .NET/CLOUD READINESS: ターゲット コンピューティング サービス。
方向キーを使用して移動し、 Enter キーを押して値を変更するか、[ 続行 ] を選択して現在の設定に進みます。
ヒント
推奨される既定値は、ほとんどのシナリオで機能します。 これらの設定を変更する必要があるのは、特定の JDK バージョンやコンピューティング サービスAzureターゲットなど、特定の要件がある場合のみです。
評価結果の出力パスを入力するか、 Enter キーを押して既定値をそのまま使用します。
エージェントは自動的に次の手順を実行します。
評価が完了すると、エージェントは集計されたレポートを自動的に開きます。
対話型モード (クラウド コーディング エージェントへの委任)
まず、各アプリケーション リポジトリでクラウド コーディング エージェントを構成します。 クラウド コーディング エージェントを構成するには、サンプル リポジトリをフォークします。
.NET アプリケーションの構成
.NET Framework アプリケーションのWindowsで実行するように構成する
既定では、Copilot コーディング エージェントは Ubuntu Linux 環境で実行されます。 .NET Framework アプリケーションの場合は、Windows環境が必要です。 これを有効にするには、次の例に示すように、アプリケーション リポジトリの .github/workflows/copilot-setup-steps.yaml ブランチでmainを構成します。
# Windows-based Copilot Setup Steps for .NET tasks
# Note: Windows runners have firewall limitations that may affect some network operations
# Use this workflow for .NET projects that require Windows-specific tooling
name: "Copilot Setup Step (Windows)"
on:
workflow_dispatch:
jobs:
copilot-setup-steps:
runs-on: windows-latest
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v5
詳細情報: Copilotセットアップ手順を使用してCopilotの開発環境をカスタマイズする
ファイアウォールの無効化
以下の画像に示すように、リポジトリ設定でCopilotコーディングエージェントの統合ファイアウォールを無効にします。
Java アプリケーションの構成
次に、例に示すように、リポジトリ設定のクラウドコーディングエージェントセクションで GitHub Copilot Modernization MCP サーバーを構成します。
{
"mcpServers": {
"app-modernization": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"-y",
"@microsoft/github-copilot-app-modernization-mcp-server"
]
}
}
}
手順
モダン化エージェントを実行します。
modernizeメイン メニューから [評価 ] を選択します。
ターゲット リポジトリを指定する方法を選択します。 構成ファイルからを選択して
repos.jsonファイルを使用するか、Manual input を選択してリポジトリ URL GitHub直接入力します。[構成ファイルから] を選択し、既定の場所で
repos.jsonファイルが検出されると、エージェントによって自動的に入力されます。 それ以外の場合は、構成ファイルへのパスを入力し、Enter キーを押 します。既定では、すべてのリポジトリが選択されています。 スキップするリポジトリの選択を解除し、 Enter キーを押して選択を確定します。
- 方向キーを使用して 移動し、 Space キーを押して個々のリポジトリを切り替えます。
実行モードを選択します。 [ クラウド エージェントへの委任] を選択します。
注
クラウド コーディング エージェントに委任する場合、ドメインの選択と評価の構成手順はサポートされていません。 クラウド エージェントは、既定の構成を使用して評価を実行します。
評価結果の出力パスを入力するか、 Enter キーを押して既定値をそのまま使用します。
エージェントは、各リポジトリの評価タスクをクラウド コーディング エージェントに自動的に委任し、それらをクラウドで並列で実行します。
エージェントは、アプリごとの評価結果をローカルにプルし、集計されたレポートをローカルに生成します。
評価が完了すると、エージェントは集計されたレポートを自動的に開きます。
非対話型モード (CLI)
コマンド引数を直接指定して非対話型モードを使用することもできます。
modernize assess コマンドを使用します。
リポジトリ構成ファイルを使用してローカルで評価する:
modernize assess --source .github/modernize/repos.json
ソースを直接指定して、複数のリポジトリを評価します。
modernize assess --source https://github.com/org/repo1 --source https://github.com/org/repo2
クラウド コーディング エージェントへの委任による評価:
modernize assess --source .github/modernize/repos.json --delegate cloud --wait
詳細については、「 評価 - CLI コマンド」を参照してください。
集計されたレポートについて
集計レポートは、評価されたアプリケーション全体を次のように包括的に表示します。
ダッシュボード
- ポートフォリオの正常性のスナップショット: アプリの合計数、アップグレードが必要な数、ブロッカーと問題の数を集計します。
- テクノロジの配布: 使用されているフレームワークと、それらを共有するアプリの数。
- 作業配分: 全体的な移行が小規模か大規模か。
レコメンデーション
- Azure サービス: 現在の依存関係を、推奨されるAzure同等の依存関係にマップします。 アプリ間の共有依存関係は 1 回決まります。そのため、アプリごとのやり直しを回避できます。
- ターゲット プラットフォーム: Azure Container Appsと AKS などのホスティングの選択肢をガイドし、統合の機会を示します。
- アップグレード パス: 前提条件としてフレームワークのアップグレードが必要なアプリを識別し、アップグレード作業と移行作業を分離します。
- 移行ウェーブ: 準備とリスクによってアプリをフェーズにシーケンスします。 この方法では、より困難なアプリが並列に準備されている間に早期の勝利が可能になります。
アプリケーション評価マトリックス
- フレームワーク、ターゲット プラットフォーム、アップグレードの推奨事項、問題の内訳 (必須、潜在的、オプション)、作業のサイズ設定などの各アプリケーションの概要。
- 必要に応じてドリルダウンするための個々のアプリ レポートへのリンク。
バッチ評価のトラブルシューティング
一般的な問題
リポジトリ アクセス エラー:
-
gh auth statusを使用してGitHubの認証を確認します。 -
repos.jsonに記載されているすべてのリポジトリにアクセスできることを確認します。
複製の失敗:
-
repos.json内のリポジトリ URL が正しくアクセス可能であることを確認します。 - すべてのリポジトリに対して適切なアクセス許可があることを確認します。
- ネットワーク接続と VPN の設定を確認します。
評価エラー:
- リポジトリに有効なJavaまたは.NET プロジェクトが含まれているかどうかを確認します。
- ビルド ファイル (
pom.xml、build.gradle、*.csproj、*.sln、*.slnxなど) が存在することを確認します。 - コンソール出力のエラー メッセージを確認します。
クラウド コーディング エージェントの委任に関する問題:
- GitHub Actionsワークフローを作成するための適切なアクセス許可があることを確認します。
- 組織GitHub Actionsアクセス許可とクォータ制限を確認します。
- .NET Framework アプリの場合は、ランナー構成Windows正しく設定されていることを確認します。
- MCP サーバーの構成を確認します。
次のステップ
バッチ評価を完了すると、次のことができます。
モダン化ワークフローを続行します。
- リポジトリ間でバッチ アップグレードを実行する - 評価結果に基づいて一貫したアップグレードを適用します。
参考資料:
フィードバックの提供
私たちはあなたの入力を大切にしています! バッチ評価またはモダン化エージェントに関するフィードバックがある場合は、