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

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

App Modernization Assessment について

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

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

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

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

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

始める前に

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

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

料金

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

コードベース コード行数(LOC) 推定費用
適応型 2.5-flash 2.5-pro 3.5-flash 3.8-flash(デフォルト)
Spring Petclinic 約 6,500 $20 $3 $20 $3 $9
James Project ~ 1,000,000 $40 $30 $200 $200 $200
Elasticsearch 約 5,000,000 $200 $200 $900 $500 $500

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

  • 短いクエリの料金が引き下げられました。
  • 暗黙的なキャッシュ保存の料金が引き下げられました。
  • 確約利用割引(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.5-flash|2.5-pro|3.5-flash|3.8-flash|adaptive]: 使用する Gemini モデルを指定します。デフォルト値は 3.8-flash です。アダプティブは、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 コードベースで使用します。この評価では、アップグレードの依存関係と、WildFly アプリケーション サーバーのバージョン アップグレードの影響を受けるコード内の領域(API の違いや互換性のために必要な変更など)を特定することに重点を置きます。
  • C/C++ アプリケーションから Arm アーキテクチャへの移行(ARM_MIGRATION): C/C++ アプリケーションで使用して、x86 ベースのアーキテクチャから Arm ベースのアーキテクチャ( Google Cloud Axion C4A VM など)への移行の準備状況と必要な作業を評価します。この評価では、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 section と revise section は、html レポート形式のみをサポートしています。
  • create section、revise section、list-sections では、--from-report フラグが HTML 形式のレポートを指している必要があります。

評価費用を見積もる

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

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

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

詳細レベルを設定する

codmod の詳細度は、--verbosity LEVEL フラグを使用して構成されます。ログの詳細レベルは、debug、info、warn、error、none のいずれかです。デフォルト値は 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-flash、2.5-pro など)を提案します。
    • codmod create --format [TAB] は、出力形式(html、json、markdown など)を提案します。
    • 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% のままの場合は、関連するモデルに十分な割り当てがあることを確認してください。デフォルトでは、codmod は gemini-3.8-flash モデルを使用します。ただし、これは変更される可能性があります。異なるモデルセットでは、異なる目的で異なるモデルが使用されるためです。
  • エラーの報告: 調査が必要なエラーが発生した場合は、開発チームを支援するためにデバッグ情報を収集します。ログは、トラブルシューティングに不可欠な詳細情報を提供します。次のコマンドを実行してログを収集し、生成されたアーカイブを 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 のプライバシー ポリシー Google Cloud プライバシーに関するお知らせに沿って取り扱われます。この設定は、次のコマンドを実行することでいつでも変更できます。

codmod config set disable_usage_reporting true

サポートを受けたり、フィードバックを送信したりするには、次の方法があります。

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