アプリのモダナイゼーション評価を作成する

Migration Center App Modernization Assessmentcodmod)は、アプリケーションのモダナイゼーション評価プロセスを自動化する AI 搭載ツールです。このページでは、codmod ツールのインストール、使用、トラブルシューティングの手順について説明します。

アプリのモダナイゼーションの評価について

通常、モダナイゼーション評価プロセスには数週間かかり、多くの専門知識が必要です。このプロセスを自動化することで、codmod ツールは時間を大幅に短縮し、数時間で完了します。

このツールは、現在のアプリケーションのアーキテクチャ、機能、クラウドへの移行を遅らせる可能性のあるブロッカーに関するエビデンスに基づく情報を提供することを目的としています。

このツールは、次のロールを対象としています。

  • IT アーキテクト
  • 意思決定者
  • アプリケーション オーナー

codmod ツールは、必要な変更と、アプリケーションを Google Cloudに変換することで得られるメリットを明確に可視化することで、アプリケーションの変換を迅速化することを目的としています。codmod は、Gemini を使用してソースコードを分析し、 Google Cloud ベスト プラクティスに基づいて推奨事項を提供するポータブル CLI ツールです。

始める前に

codmod ツールには次の前提条件があります。

  • Linux または Windows(10 以降)のワークステーション。
  • Vertex AI API が有効になっている Google Cloud プロジェクトへのアクセス権。
  • ワークステーションに gcloud CLI がインストールされていること。詳細については、gcloud CLI CLI をインストールするをご覧ください。

料金

コード評価に Gemini を使用する費用は、主にコードベースのサイズによって決まり、トークン単位で測定されます。次の表に、コード行数と選択したモデルに基づいて表示される費用の見積もりを示します。

コードベース コード行数(LOC) 推定費用
adaptive 2.0-flash 2.5-pro(デフォルト) 2.5-flash
Spring Petclinic 約 6,500 $20 $2 $30 $4
James Project ~ 1,000,000 $60 $30 $500 $40
Elasticsearch ~ 5,000,000 $200 $200 $3,000 $200

これらの値は、次の理由による節約を考慮していないため、過大評価されている可能性があります。

  • 短いクエリの料金が引き下げられました。
  • 暗黙的なキャッシュ保存の料金が引き下げられました。
  • 確約利用割引(CUD)。

これらのパラメータの費用は、特に大規模なコードベースの場合、総費用のごく一部になると予想されます。詳細については、Gemini API の料金をご覧ください。

その他の情報

このツールは、Vertex AI API の高度なコード理解と分析機能を使用します。使用可能なモデルとその機能の詳細については、Vertex AI API ドキュメントの Google モデルをご覧ください。

最適なパフォーマンスと費用対効果を維持するため、codmod のコードベースのサイズは、約 600 万行のコードに制限されています。この上限を超えるコードベースについては、分析のために管理しやすい小さな部分に分割することをおすすめします。セクションを小さくして分析すると、評価の精度が上がり、処理時間を短縮できる可能性があります。

codmod のご設定のお願い

このセクションでは、codmod ツールを使用するためのインストールと認証の手順について説明します。

codmod をインストールする

Windows

Windows PowerShell で次のコマンドを実行して、codmod の最新バージョンをダウンロードします。

$version=curl.exe -s https://codmod-release.storage.googleapis.com/latest
curl.exe -O "https://codmod-release.storage.googleapis.com/${version}/windows/amd64/codmod.exe"

Linux

次のコマンドを実行して、codmod の最新バージョンをダウンロードします。

version=$(curl -s https://codmod-release.storage.googleapis.com/latest)
curl -O "https://codmod-release.storage.googleapis.com/${version}/linux/amd64/codmod"
chmod +x codmod

codmod コマンドを使用するには、実行可能ファイルをパスに追加するか、エイリアスを作成します。

Google Cloudに対して認証する

codmod ツールを使用するには、 Google Cloud プロジェクトが必要です。

  1. コンソールまたは CLI を使用して、プロジェクトで Vertex AI API が有効になっていることを確認します。

    gcloud services enable aiplatform.googleapis.com --project <project-id>
    
  2. プロジェクトに roles/aiplatform.user ロールまたは同等のロールがあることを確認します。

  3. 認証を行うには、次のコマンドを実行します。

    gcloud auth application-default login
    

または、サービス アカウントを使用して GOOGLE_APPLICATION_CREDENTIALS 環境変数を設定することもできます。詳細については、アプリケーションのデフォルト認証情報の仕組みをご覧ください。

codmod 構成を管理する

以降のセクションでは、codmod config コマンドを使用して codmod を構成する方法について説明します。

すべての設定を一覧表示する

現在のすべての構成プロパティとその値を表示するには、次のコマンドを実行します。

codmod config list

フラグのデフォルト値を設定する

プロパティのデフォルト値を設定するには、set コマンドを使用します。たとえば、デフォルトのプロジェクト ID を設定するには、次のコマンドを実行します。

codmod config set project "PROJECT_ID"

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

デフォルトのリージョンを設定するには、次のコマンドを実行します。

codmod config set region "REGION"

REGION は、 Google Cloud リージョンに置き換えます。利用可能なリージョンの一覧をご覧ください。使用するリージョンが不明な場合は、us-central1 を使用します。

特定の値を取得する

単一のプロパティの値を取得するには、get コマンドを使用します。たとえば、構成済みのプロジェクト ID を取得するには、次のコマンドを実行します。

codmod config get project

デフォルト値を設定解除する

構成済みのデフォルトを削除してツールの元のデフォルト設定に戻すには、unset コマンドを使用します。たとえば、デフォルトのプロジェクト ID を削除するには、次のコマンドを実行します。

codmod config unset project

codmod 評価レポートを作成する

以降のセクションでは、デフォルトの評価を作成する方法と、ニーズに合わせてカスタマイズする方法について説明します。

デフォルト レポートを作成する

評価レポートを作成するには、次のフラグを指定して codmod ツールを実行します。

codmod create -c "CODEBASE" -o "OUTPUT"

次のように置き換えます。

  • CODEBASE: 分析するソースコードを含むディレクトリを指定します。複数回指定できます。
  • OUTPUT: 生成されたレポートが保存されるパスを指定します。レポートは HTML 形式です。

デフォルトのプロジェクトとリージョンは、それぞれ -p "PROJECT_ID" フラグと -r "REGION" フラグでオーバーライドできます。

次のオプションのフラグを指定することもできます。

  • --modelset [2.0-flash|2.5-flash|2.5-pro|adaptive]: 使用する Gemini モデルを指定します。デフォルト値は 2.5-pro です。Adaptive は、2.5-pro と比較してレポートの品質が低下する可能性があるものの、コストを大幅に削減できます。
  • --format <html|markdown|odt|json>: 生成されたレポートに使用される形式。デフォルトは HTML です。
  • --allow-large-codebase: デフォルトでは、codmod は 100 万行を超えるコードベースで分析を行う前に確認を求めます。これは、高コストを回避するためです。このオプションは、非インタラクティブな確認として機能します。codmod config set allow_large_codebase true を実行して、デフォルトで有効にすることもできます。
  • --improve-fidelity: 設定すると、codmod はセクションを並列ではなくシリアルに生成します。これにより、最終レポートのさまざまなセクション間の整合性が向上しますが、実行時間が長くなります。
  • --force-include <strings>--force-exclude <strings>: デフォルトでは、codmod は Java、.NET、Python などの一般的なファイル拡張子をスキャンします。これらのフラグを使用して、ファイル拡張子を含めるか除外します。引数は、RE2 構文の正規表現である必要があります。
  • --experiments: codmod で PDF と画像をサポートするには、--experiments=enable_pdf,enable_images を指定します。
  • --context <string>: プロジェクトについて提供する追加のコンテキスト。このツールは、レポートを生成する際にこのコンテキストを考慮します。
  • --context-file <path>: コンテキストが指定されたファイルで提供される --context と同じ。
  • --supporting-documents <path>: コードベースに関するサポート ドキュメントのディレクトリを指定します。このディレクトリ内のファイルは、--context フラグまたは --context-file フラグで指定されたコンテキストから参照して、分析に含めることができます。サポートされている形式は、テキスト、PDF、画像(PNG、JPG、JPEG)です。

レポートを作成します

完全な分析が必要な場合は、create full コマンドを使用してレポートを作成します。

codmod create full -c "~/mycodebase/" -o "report.html"

データレイヤに焦点を当てたレポートを作成する

データレイヤを詳しく分析する必要がある場合は、この領域に焦点を当てたレポートを作成できます。

codmod create data-layer -c "CODEBASE" -o "OUTPUT"

特定の変換インテントのレポートを作成する

レポートを特定のモダナイゼーションの意図に絞り込む場合は、次のいずれかのサポートされているインテントを使用できます。

  • Microsoft ワークロードの変換MICROSOFT_MODERNIZATION): Microsoft OS で実行されているアプリケーションで使用します。評価では、.NET ベースのフレームワークを最新バージョンで使用するようにモダナイズし、Microsoft ライセンスへの依存を減らす変換ジャーニーに重点が置かれます。
  • クラウド間のワークロード変換CLOUD_TO_CLOUD): 他のハイパースケーラー インフラストラクチャで実行されているアプリケーションで使用します。この評価では、他のクラウド ベンダーのサービスをGoogle Cloud サービスにマッピングするなど、アプリケーションの変換に推奨される変更に重点が置かれます。
  • 以前の Java の変換JAVA_LEGACY_TO_MODERN): Java 8 以降の Java バージョンを実行しているアプリケーションで使用します。評価では、アップグレードの依存関係と、Java 21(現在の LTS)への変更の影響を受けるコード領域の特定に重点が置かれます。
  • 以前の Java WILDFLY 変換WILDFLY_LEGACY_TO_MODERN): 最新バージョンより前の WildFly アプリケーション サーバー バージョンで実行されている Java EE/Jakarta EE コードベースで使用します。この評価では、API の違いと互換性に必要な変更など、WildFly アプリケーション サーバーのバージョン アップグレードによって影響を受けるコードのアップグレードの依存関係と領域を特定することに重点を置きます。
  • C/C++ アプリケーションから Arm アーキテクチャへの移行ARM_MIGRATION): C/C++ アプリケーションで使用して、x86 ベースのアーキテクチャから Google Cloud Axion C4A VM などの Arm ベースのアーキテクチャに移行する準備状況と必要な作業を評価します。この評価では、Google Cloud や AWS の Graviton インスタンスなどの別の CSP から Arm への移行を成功させるために必要な、コードの移植性に関する潜在的な問題、アーキテクチャ固有の依存関係、ビルドシステムの変更、テストに関する考慮事項を特定することに重点を置いています。

インテントに焦点を当てたレポートを作成するには、--intent フラグを使用します。

codmod create -c "CODEBASE" -o "OUTPUT" --intent "INTENT"

セクションを追加してレポートを作成する

このツールでは、デフォルトで含まれていない追加のセクションを含めて費用を削減できます。次のセクションがサポートされています。

  • files: プロジェクト ファイルの構造を把握するのに役立つ、プロジェクト フォルダの構造化された階層ビューと各フォルダの内容の説明。
  • classes: 各クラスとその他のクラスへの依存関係に関する情報を含むコードクラスのカタログ。サポートされている言語は Java と C# です。

追加のセクションを作成するには、--optional-sections フラグを使用します。

codmod create -c "CODEBASE" -o "OUTPUT" --optional-sections "SECTIONS"

SECTIONS は、値のカンマ区切りリストに置き換えます。

カスタム レポートを作成する

特定のカスタム トピックを調べる場合は、次のコマンドを使用して、指定したコンテキストに基づいてカスタム レポートを作成できます。

codmod create custom -c "CODEBASE" -o "OUTPUT" --context "CONTEXT"

デフォルトでは、LLM は提供されたコンテキストを拡張し、一貫性のあるセクションが生成されるように適応させます。--improve-context=false を指定すると、この動作を無効にできます。

その他のフラグ:

  • --from-template <path>: テキストまたは PDF ファイル形式でドキュメント構造を定義するテンプレート ファイルを指定します。codmod は構造を検出し、レポートの生成を続行するための承認を求めます。
  • --skip-template-approval: --from-template フラグを使用する場合に承認リクエストをスキップします。

既存のレポートを変更する

レポートに新しいセクションを作成したり、特定のセクションに基づいて既存のセクションを変更したりできます。たとえば、システムのアーキテクチャの特定の側面や、特定のタイプのセキュリティの脆弱性に焦点を当てたい場合があります。

レポートを変更するコマンドには、次のフラグが必要です。

  • --context または --context-file のいずれか: 変更リクエストを指定します。
  • --from-report: 既存のレポート ファイルのパスを指定します。
  • --from-section: 新しいセクションのベースとして使用するセクションの名前(「概要」や「アーキテクチャ」など)。

特定のレポートで使用可能なすべてのセクションを表示するには、次のコマンドを実行します。

codmod list-sections --from-report "REPORT"

レポートのセクションを修正する

次のコマンドを実行して、既存のセクションを変更します。

codmod revise section -c "CODEBASE" --from-report "REPORT" \
  -o "REVISED_REPORT" --from-section "SECTION_NAME" \
  --context "CONTEXT"

新しいレポート セクションを作成する

次のコマンドを使用して新しいセクションを作成します。

codmod create section -c "CODEBASE" --from-report "REPORT" \
  -o "REGENERATED_REPORT" --from-section "SECTION_NAME" \
  --context "CONTEXT"
  • create section コマンドの from-section フラグは省略可能です。
  • デフォルトでは、LLM は提供されたコンテキストを拡張し、一貫性のあるセクションが生成されるように適応させます。--improve-context=false を指定すると、この動作を無効にできます。

次の点にご注意ください。

  • create sectionrevise sectionhtml レポート形式のみをサポートします。
  • create sectionrevise sectionlist-sections は、--from-report フラグが HTML 形式のレポートを指すことを想定しています。

評価費用を見積もる

codmod ツールを使用すると、レポートの作成にかかる費用の概算を計算できるため、ツールの使用にかかる費用を把握できます。費用見積もりを表示するには、次のコマンドを実行します。

codmod create --estimate-cost -c "CODEBASE"

create section コマンドと create custom コマンドでは、費用の見積もりはサポートされていません。

詳細レベルを設定する

codmod の詳細度は、--verbosity LEVEL フラグを使用して構成されます。ログの詳細レベルは、debuginfowarnerrornone のいずれかです。デフォルト値は warn です。

codmod CLI のバージョンを確認して更新する

codmod CLI は、新しいバージョンが利用可能かどうかを自動的に確認できます。

自動チェック

CLI は 24 時間ごとに Cloud Storage バケットをポーリングして、codmod の新しいバージョンがリリースされているかどうかを確認します。新しいバージョンが見つかると、ターミナルに通知メッセージが表示されます。このメッセージには、新しいバージョン番号とアップデートをダウンロードするためのリンクが記載されています。このプロセスにより、最新の機能、改善、バグの修正を常に利用できるようになります。

バージョン チェックを無効にする

バージョンの自動チェックを無効にする場合は、config set コマンドを使用します。

codmod config set disable_version_check true

バージョン チェックを再度有効にするには、値を false に戻します。

codmod config set disable_version_check false

この設定と他の構成の現在の状態を表示するには、次のコマンドを実行します。

codmod config list

コマンドラインの補完

codmod CLI ツールは、Bash、Zsh、Fish、PowerShell のシェル コマンドライン補完をサポートしています。この機能を使用すると、Tab キーを押して使用可能なオプションを表示し、選択することで、コマンド、フラグ、引数をすばやく入力できます。

自動補完には次の利点があります。

  • コマンドとフラグのオートコンプリート: codmod コマンドまたはフラグの入力を開始し、Tab を押すと、入力候補が表示されます。
  • オプションの検出: 特定のフラグの有効な値を確認します。例:
    • codmod create --modelset [TAB] は、使用可能なモデルセット(2.0-flash2.5-pro など)を示します。
    • codmod create --format [TAB] は、出力形式(htmljsonmarkdown など)を示します。
    • codmod create --intent [TAB] は、事前定義されたインテントを提案します。
  • コンテキスト認識型の候補: 補完はコマンドに合わせて調整されます。たとえば、次のような情報が得られます。
    • codmod config set [TAB] は、設定可能な構成キーを提案します。
    • codmod config get [TAB] は、取得できる使用可能な構成キーを提案します。
    • ファイルパスの補完は、ファイルまたはディレクトリのパスを必要とするフラグまたは引数(--codebase--output-path など)に対してのみ提供されます。--project などの他のフラグでは、ファイル名が提案されなくなりました。

シェル補完を有効にする

シェル補完を有効にする前に、実行可能ファイルをパスに追加するか、エイリアスを作成して codmod コマンドが機能することを確認してください。

シェルの補完を読み込むには、適切なコマンドを実行します。手順はシェルによって異なります。help コマンドを使用して、具体的な手順を取得します。

# For Bash
codmod completion bash --help

# For Zsh
codmod completion zsh --help

# For Fish
codmod completion fish --help

# For PowerShell
codmod completion powershell --help

たとえば、Linux で Bash 補完を読み込むには、~/.bashrc に次のように追加します。

source <(codmod completion bash)

変更を有効にするには、シェルを再起動するか、プロファイル(source ~/.bashrc など)をソースする必要があります。

トラブルシューティング

  • 権限が拒否されました: 「権限が拒否されました」というエラーが発生した場合は、chmod +x codmod コマンドを実行して codmod バイナリに実行権限が付与されていることを確認してください。
  • CLI がハングしているように見える: 分析には時間がかかることがありますが、通常は CLI の進行状況バーで進行状況を確認できます。15 分経過しても進行状況バーが 0% のままの場合は、関連するモデルに十分な割り当てがあることを確認します。デフォルトでは、codmodgemini-2.5-pro モデルを使用します。ただし、モデルセットごとに異なるモデルが異なる目的で使用されるため、この点は変更される可能性があります。
  • エラーの報告: 調査が必要なエラーが発生した場合は、デバッグ情報を収集して開発チームをサポートします。ログには、トラブルシューティングに不可欠な詳細情報が記録されます。次のコマンドを実行してログを収集し、結果のアーカイブを zip 圧縮して、codmod-feedback-external@google.com のチームと共有します。

    codmod collect-logs -o "codmod_logs.zip"
    

オープンソース ライセンス

codmod の最新バージョンの依存関係のオープンソース通知をダウンロードするには、次のコマンドを実行します。

version=$(curl -s https://codmod-release.storage.googleapis.com/latest)
curl -O "https://codmod-release.storage.googleapis.com/${version}/THIRD_PARTY_NOTICES.txt"

サポートを利用する、フィードバックを送信する

このプロダクトの品質向上に役立てるため、使用状況の仮名化されたデータを収集します。このデータは、Google のプライバシー ポリシー(Google Cloud プライバシーに関するお知らせ)に従って取り扱われます。設定は、次のコマンドを実行することでいつでも変更できます。

codmod config set disable_usage_reporting true

サポートの利用やフィードバックの送信は、次の方法で行うことができます。

  • codmod のサポートを受けるには、生成された HTML レポートの [サポート] ボタンをクリックするか、codmod-feedback-external@google.com 宛てにメールを送信してください。
  • codmod に関するフィードバックを送信するには、生成された HTML レポートの [フィードバック] ボタンをクリックします。