Migration Center App Modernization Assessment (codmod)は、AI を活用したツールで、アプリケーションのモダナイゼーション評価プロセスを自動化します。このページでは、codmod ツールをインストール、使用、トラブルシューティングする手順について説明します。
App Modernization Assessment について
通常のモダナイゼーション評価プロセスには数週間かかり、多くの専門知識が必要です。このプロセスを自動化することで、codmod ツールはこの時間を数時間に大幅に短縮します。
このツールは、現在のアプリケーションのアーキテクチャ、機能、クラウドへの移行を遅らせる可能性のある潜在的なブロッカーに関するエビデンスに基づく情報を提供することを目的としています。
このツールは、次のロールを対象としています。
- IT アーキテクト
- 意思決定者
- アプリケーション オーナー
codmod ツールは、必要な変更と、アプリケーションを Google Cloudに移行することで得られるメリットを明確に可視化することで、アプリケーションの移行を迅速化することを目的としています。codmod は、Gemini を使用してソースコードを分析し、
ベスト プラクティスに基づいて推奨事項を提供するポータブル CLI
ツールです。 Google Cloud
始める前に
codmod ツールには、次の前提条件が必要です。
- Linux または Windows (10 以降)のワークステーション。
- Vertex AI API が有効になっている Google Cloud プロジェクトへのアクセス権。
- ワークステーションに gcloud CLI がインストールされていること。詳細については、 gcloud 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 プロジェクトが必要です。
コンソールまたは CLI を使用して、プロジェクトで Vertex AI API が有効になっていることを確認します。
gcloud services enable aiplatform.googleapis.com --project <project-id>プロジェクトに
roles/aiplatform.userロールまたは同様のロールがあることを確認します。認証を行うには、次のコマンドを実行します。
gcloud auth application-default login
または、サービス アカウントを使用して GOOGLE_APPLICATION_CREDENTIALS 環境変数を設定することもできます。詳細については、
アプリケーションのデフォルト認証情報の仕組みをご覧ください。
codmod の構成を管理する
以降のセクションでは、codmod を
codmod config コマンドを使用して構成する方法について説明します。
すべての設定を一覧表示する
現在のすべての構成プロパティとその値を表示するには、次のコマンドを実行します。
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:--experiments=enable_pdf,enable_imagesを指定して、codmodで PDF と画像をサポートします。--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 など)に移行するために必要な準備と労力を評価します。評価では、潜在的なコードの移植性 の問題、アーキテクチャ固有の依存関係、ビルドシステムの変更、および AWS の Graviton インスタンスなどの Google Cloud または別の 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)。
トラブルシューティング
- 権限が拒否されました: 「権限が拒否されました」というエラーが発生した場合は、
コマンドを実行して、
codmodバイナリに実行権限を付与していることを確認してください。chmod +x codmod - CLI がハングしているように見える: 分析には時間がかかる場合がありますが、通常は CLI の進行状況バーで進行状況を確認できます。15 分経過しても進行状況バーが 0% の場合は、関連するモデルの割り当てが十分であることを確認してください。デフォルトでは、
codmodはgemini-2.5-proモデルを使用します。ただし、モデルセットによって異なるモデルが異なる目的に使用されるため、これは変更される可能性があります。 レポートエラー: 調査が必要なエラーが発生した場合は、デバッグ情報を収集して開発チームにご提供ください。ログには、トラブルシューティングに不可欠な詳細情報が記載されています。次の コマンドを実行してログを収集し、結果のアーカイブを圧縮して、 チーム( 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 レポートの [Support] ボタンをクリックするか、codmod-feedback-external@google.com までメールでお問い合わせください。codmodに関するフィードバックを送信するには、生成された HTML レポートの [フィードバック] ボタンをクリックします。