.NET アプリケーションのモダナイゼーションを評価する

このページでは、Google Cloud Modernization Hub を使用して、Linux コンテナ化とクロスプラットフォーム .NET リリースへのモダナイゼーションのために ASP.NET アプリケーションと .NET Framework アプリケーションを評価する方法について説明します。

多くのエンタープライズ .NET アプリケーションは、Windows 固有の API、IIS サーバー構成、または Linux コンテナへの直接デプロイを妨げるレガシー .NET Framework ライブラリに依存しています。Modernization Hub の自動評価では、ソースコードを分析してブロッカーを特定し、NuGet パッケージの互換性を評価して、Cloud Run または Google Kubernetes Engine のリファクタリング パスを推奨します。

.NET アプリケーションの評価を使用する場合

次のいずれかのモダナイゼーション タスクを行う場合は、.NET アプリケーションの評価を実行します。

  • Linux コンテナへのリプラットフォーム: Cloud Run または GKE 用にアプリケーションをコンテナ化する前に、Windows 専用の依存関係(Windows レジストリ アクセス、System.Drawing、Active Directory 統合など)を特定します。
  • .NET Framework バージョンのアップグレード: .NET Framework 4.x から最新のクロスプラットフォーム .NET リリース(.NET 10 以降)に移行する際の労力と互換性のギャップを評価します。
  • モノリシック アーキテクチャの分離: クラウドネイティブのマイクロサービスへのリファクタリングが必要な、密結合された WCF サービス、Windows サービス、以前のウェブフォームを検出します。

始める前に

.NET 評価ジョブを開始する前に、必要な API を有効にし、プロジェクトの Identity and Access Management(IAM)権限を確認し、ワークスペース設定バケットを登録して、ソースコード アーカイブを Cloud Storage にアップロードします。

必要な API の有効化

Modernization Hub を使用するには、プロジェクトで必要な Google Cloudサービス API を有効にします。

gcloud services enable \
    aiplatform.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    cloudresourcemanager.googleapis.com \
    compute.googleapis.com \
    logging.googleapis.com \
    storage.googleapis.com \
    --project=PROJECT_ID

PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。

必要なロール

評価を実行するには、Cloud Build と Gemini Enterprise Agent Platform を使用する 2 つの ID に対して個別の IAM 権限が必要です。

  • 認証済みコンソール ユーザー(ジョブを開始してバケットにアクセスする):
    • ストレージ管理者(roles/storage.admin)
    • サービス アカウント ユーザー(roles/iam.serviceAccountUser)
    • Cloud Build 編集者(roles/cloudbuild.builds.editor)
  • 専用サービス アカウント(評価コンテナを実行):
    • Agent Platform ユーザー(roles/aiplatform.user)
    • Storage オブジェクト ユーザー(roles/storage.objectUser)または Storage 管理者(roles/storage.admin)

評価を開始して分析コンテナを実行するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

  • ユーザー - ソース アーカイブとバケット構成を管理する: Storage 管理者(roles/storage.admin)
  • ユーザー - 専用のサービス アカウントをジョブに接続します。サービス アカウント ユーザー(roles/iam.serviceAccountUser)
  • ユーザー - 評価ジョブ(cloudbuild.builds.create)を送信してログを表示する: Cloud Build 編集者(roles/cloudbuild.builds.editor)
  • サービス アカウント - codmod コンテナを実行する: Agent Platform ユーザー(roles/aiplatform.user)
  • サービス アカウント - ソース アーカイブの読み取りと評価レポートの書き込み: Storage オブジェクト ユーザー(roles/storage.objectUser)または Storage 管理者(roles/storage.admin)

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、評価を開始して分析コンテナを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

評価を開始して分析コンテナを実行するには、次の権限が必要です。

  • ユーザー(Cloud Storage、Cloud Build、IAM):
    • storage.objects.get(ファイルのダウンロードまたは読み取り)
    • storage.objects.list(バケット内のファイルを一覧表示する場合)
    • storage.objects.create(新しいファイルをアップロードまたは作成する場合)
    • storage.objects.update(既存のファイルのメタデータを変更する場合)
    • storage.objects.delete(ファイルを削除または上書きする場合)
    • storage.buckets.get(バケットレベルの構成を表示)
    • cloudbuild.builds.create(評価ジョブを送信する場合)
    • iam.serviceAccounts.actAs(サービス アカウントをジョブに関連付けるため)
  • サービス アカウント(Agent Platform と Cloud Storage):
    • aiplatform.endpoints.predict(AI を活用したコード分析を実行する場合)
    • storage.objects.get(ソース アーカイブの読み取りまたはダウンロード)
    • storage.objects.list(入力フォルダ内のファイルを一覧表示する場合)
    • storage.objects.create(評価レポートを作成するため)
    • storage.objects.delete(一時ファイルを削除する場合)

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

ワークスペース設定バケットを構成する

[Modernization Hub] > [設定] ページで、ワークスペース バイナリ状態ファイル(dotnet_jobs.pb、java_jobs.pb、mainframe_jobs.pb)を保存する指定の Cloud Storage バケット(gs://PROJECT_ID-modernization-hub など)を登録します。

コードベースのサイズ上限を確認する

最適なパフォーマンスと費用対効果を維持するため、codmod 評価エンジンは次のスケーリングとアーカイブのガイドラインを適用します。

  • 最大コードベース サイズ: 評価ジョブあたり約 600 万行のコード(LOC)。リポジトリが 600 万行を超える場合は、アップロードする前に、コードベースをより小さく独立したソリューションまたはモジュールに分割します。
  • クリーンなアーカイブ構造: コンパイル済みのバイナリ、パッケージ キャッシュ、バージョン管理メタデータ(bin/、obj/、node_modules/、.vs/、.git/ など)を zip ファイルから除外して、ソースファイルとビルド構成のみが分析されるようにします。

.NET ソース アーカイブを準備してアップロードする

ビルド出力を含まない ZIP ファイルとして .NET コードベースをパッケージ化し、プロジェクトの Cloud Storage バケットにファイルをアップロードします。

  1. ローカルマシンで、次のいずれかの方法を使用してリポジトリの ZIP ファイルを作成します。

    • Git を使用する(推奨):

      git archive --format=zip -o repository.zip HEAD
      
    • zip CLI を使用する場合:

      zip -r repository.zip . \
          -x "*.git*" "*/bin/*" "*/obj/*" "*/node_modules/*" "*.vs/*"
      
  2. Google Cloud CLI を使用して、ZIP ファイルをターゲットの Cloud Storage バケットにアップロードします。

    gcloud storage cp repository.zip \
        gs://INPUT_BUCKET/codebase/repository.zip
    

    INPUT_BUCKET は、ターゲットの Cloud Storage バケットの名前に置き換えます。

評価を実行する

評価ジョブを実行する手順は次のとおりです。

  1. コンソールで、[Modernization Hub] ページに移動します。

    Modernization Hub に移動

  2. ランディング ページで、[.NET のモダナイゼーション] カードを見つけて、[評価を開始] をクリックします。

  3. [ジョブ名] フィールドに、評価ジョブの一意の名前を入力します。

  4. [ソースコードの場所] フィールドで、ソースコードを zip ファイルとして含む Cloud Storage バケットを選択します。

  5. [レポートの場所] フィールドで、生成された評価レポートを保存する Cloud Storage バケットを選択します。

  6. [モダナイゼーション レシピ] リストから、モダナイゼーション レシピを選択します。

  7. [ロケーション] リストから、評価ジョブのリージョンを選択します。

  8. [サービス アカウント] フィールドで、必要なロール セクションに記載されている必要な IAM ロールを持つ専用のサービス アカウントを選択します。Cloud Build はこのサービス アカウントで評価ジョブを実行します。これには、Agent Platform ユーザー権限と Cloud Storage 権限が必要です。

  9. [レポートを生成] をクリックします。

    コンソールは、プロジェクトを分析するためにバックグラウンド評価コンテナを起動します。ジョブのステータスは、[評価履歴] テーブルに表示されます。

ジョブのステータスをモニタリングしてレポートを表示する

コードベースのサイズに応じて、評価ジョブは通常数分以内に完了します。バックグラウンド コンテナは、処理が完了すると自動的に終了します。

評価結果を表示する手順は次のとおりです。

  1. Modernization Hub ページの [評価履歴] テーブルで、評価ジョブを見つけます。
  2. [ステータス] 列が [完了] に変わったら、[レポートをダウンロード] をクリックします。
  3. 優先出力形式を選択します。
    • HTML レポート: 互換性のない Windows API をフィルタリングし、ファイルごとのブロッカー リストを検査し、修復の提案を表示できるインタラクティブな概要。
    • マークダウン レポート: 関係者やアーキテクチャ レビュー委員会との共有に適した形式の要約。

評価レポートを確認する

評価レポートでは、アプリケーションの移行準備状況が次のカテゴリに分類されます。

  • 全体的な互換性スコア: 変更なしでクロスプラットフォーム .NET に移行できるソースコード行と依存関係の割合。
  • ブロッカーの内訳: リファクタリングが必要な特定の Windows 依存関係(例:
      )
    • Windows Communication Foundation(WCF)サーバーの実装。
    • ASP.NET Web フォームまたは ASP.NET MVC の以前のパイプライン。
    • Windows レジストリ呼び出し(Microsoft.Win32)。
  • NuGet 依存関係の分析: 既存の NuGet パッケージの詳細なインベントリ。各パッケージがターゲットの .NET バージョンをサポートしているか、置き換えが必要かを示します。
  • 推奨アクション: Google Cloudでのコンテナ化に向けてアプリケーションを準備するための、推奨されるコード変換と移行パス。

Antigravity を使用して .NET コードをリファクタリングする

評価レポートを生成したら、専門的な .NET エージェント スキルを備えた Antigravity を使用して、.NET Framework からクロスプラットフォーム .NET へのコード変換を自動化できます。

エージェントによるリファクタリング ワークフローを実行する前に、次の前提条件を満たしていることを確認してください。

  • Antigravity 環境: Antigravity IDE または Antigravity CLI(agy)をインストールし、 Google Cloud プロジェクトで認証を構成します。
  • 評価アーティファクト: codmod 評価レポートをダウンロードし、ローカル リポジトリ ワークスペースに配置します。これにより、エージェントは特定されたブロッカーと依存関係のアップグレード パスを参照できます。
  • .NET モダナイゼーション スキル: codmod .NET モダナイゼーション スキル(SKILL.md)を Antigravity ワークスペースの設定に読み込みます。最新の .NET モダナイゼーション エージェント スキルのプレビュー アクセスをリクエストするには、modernization-hub-feedback-external@google.com にお問い合わせください。

次のステップ