メインフレーム アプリケーションをモダナイズする

このガイドでは、Cloud Code for VS Code 拡張機能を使用してレガシー メインフレーム アプリケーションをモダナイズする方法について説明します。

Mainframe Modernization Code Rewrite を使用すると、お客様とパートナーはコードの書き換えに反復的なアプローチを採用できます。通常は、Mainframe Assessment Tool(MAT)で評価を完了した後に使用します。この拡張機能は、コード分析、仕様、コード生成、テスト生成のための Mainframe GenAI 機能を統合し、インタラクティブな開発エクスペリエンスを提供します。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Enable the API

  8. Cloud Code 拡張機能をインストールします(まだインストールしていない場合)。
  9. Google Cloud CLI をインストールします(まだインストールしていない場合)。

メインフレームのモダナイゼーションのコード書き換えを設定する

以降のセクションでは、Mainframe Modernization Code Rewrite を設定する方法について説明します。まず、IDE で Mainframe Modernization Code Rewrite を有効にして、Vertex AI に接続する必要があります。

メインフレーム モダナイゼーションのコード書き換えを有効にする

Mainframe Modernization Code Rewrite を有効にする手順は次のとおりです。

  1. Ctrl/Cmd+Shift+P キーを押してコマンド パレットを開きます。

  2. [Preferences: Open User Settings (JSON)] コマンドを選択します。

    Mainframe Modernization Code Rewrite を有効にするには、settings.json ファイルに "cloudcode.beta.enableMainframeModernization": true 設定を追加します。

    {
        "cloudcode.updateChannel": "Insiders",
        "cloudcode.beta.enableMainframeModernization": true
    }
    
  3. コマンド パレットをもう一度開き(Ctrl/Cmd+Shift+P を押します)、[Developer: Reload Window] コマンドを選択します。

メインフレーム モダナイゼーションのコード書き換えを Vertex AI に接続する

Mainframe Modernization Code Rewrite を Vertex AI に接続する手順は次のとおりです。

  1. ターミナル ウィンドウで次のコマンドを実行します。

    gcloud auth application-default login
    
  2. 新しく開いたウェブブラウザ ウィンドウで、画面上の手順に沿って操作します。

  3. 画面の指示に沿って Google Cloudにログインします。

  4. 使用するプロジェクトを選択します。

  5. Developer: Reload Window コマンドを実行します。

設定が完了したら、メインフレーム コードを含むワークスペースまたはフォルダを開き、COBOL、JCL、Easytrieve、HLASM で Generate Specification Summary コマンドと Generate Modernized Code コマンドを実行できます。

仕様の概要を生成する

Cloud Code: Generate Specification Summary for Active File コマンドを使用すると、レガシー メインフレーム コードのニュートラル言語仕様を作成できます。COBOL、JCL、Easytrieve、HLASM がサポートされています。

仕様の概要には、コマンド パレットまたはエクスプローラ ビューからアクセスできます。

コマンド パレット

  1. エディタで、使用するソースファイルを選択してアクティブ ファイルにします。

  2. コマンド パレットを開くには、Ctrl/Cmd+Shift+P を押します。

  3. [Cloud Code: Generate Specification Summary for Active File] コマンドを検索して選択します。

コードの横に仕様の概要が表示されます。

エクスプローラ

  1. アクティビティ バーで [エクスプローラ] をクリックするか、Ctrl/Cmd+Shift+E キーを押します。

  2. 目的のソースファイルを右クリックし、[Generate Specification Summary] を選択します。

コードの横に仕様の概要が表示されます。

メインフレームのレガシーコードにアノテーションを付ける

仕様概要の生成プロセスをガイドするには、コメントを追加してレガシー コードにアノテーションを付けます。JCL ジョブまたは COBOL プログラムにアノテーションを付けるには、ジョブ/プログラム定義行の横にある追加アイコン 追加ボタンを探します。

JCL ジョブ

JCL ジョブにアノテーションを付ける

COBOL プログラム

COBOL プログラムにアノテーションを付ける

  1. ジョブやプログラムにアノテーションを付けることができるインライン CMS ビューを開くには、[追加] 追加をクリックします。コメントを追加したら、[メモを作成] をクリックして保存します。

  2. アノテーションが保存されたら、Generate Specification Summary コマンドを使用して、コメントに基づいてジョブまたはプログラムの仕様を生成します。

    アノテーションを編集して、提供されたガイダンスを絞り込むことができます。また、モデルで考慮しないようにする場合は、アノテーションを削除することもできます。

モダナイズされたコードを生成する

Cloud Code: Generate Modernized Code for Active File コマンドを使用すると、メインフレームのレガシー コードから最新のコードが作成されます。

サポートされているソース言語: COBOL、JCL、Easytrieve、HLASM。

サポートされているターゲット言語: Java、C#、Python、SQL。

このコマンドには、コマンド パレットまたはエクスプローラ ビューからアクセスできます。

コマンド パレット

  1. エディタで、使用するソースファイルを選択してアクティブ ファイルにします。

  2. Ctrl/Cmd+Shift+P を押してコマンド パレットを開きます。

  3. [Cloud Code: Generate Modernized Code for Active File] コマンドを検索して選択します。

  4. モダナイズされたコードを生成するターゲット言語を選択します。

    生成されたモダナイズされたコードが、新しい無題のファイルとしてエディタに表示されます。

Explorer

  1. アクティビティ バーで [エクスプローラ] をクリックするか、Ctrl/Cmd+Shift+E キーを押します。

  2. モダナイズされたコードを生成するソースファイルを右クリックし、[Generate Modernized Code] を選択します。

  3. モダナイズされたコードを生成するターゲット言語を選択します。

    生成されたモダナイズされたコードが、新しい無題のファイルとしてエディタに表示されます。

設定の変更

Mainframe Modernization Code Rewrite には、ワークスペース スコープまたは(グローバル)ユーザー設定スコープで構成できる次の設定があります。

ワークスペース レベルで設定を変更するには、Ctrl/Cmd+Shift+P キーを押してコマンド パレットを開き、[Preferences: Open Workspace Settings (JSON)] コマンドを選択します。

グローバル ユーザー設定レベルで設定を変更するには、Ctrl/Cmd+Shift+P キーを押してコマンド パレットを開き、[Preferences: Open User Settings (JSON)] コマンドを選択します。

拡張機能のすべての構成プロパティを含む settings.json ファイルの例を次に示します。

{
    "cloudcode.beta.enableMainframeModernization": true,
    "cloudcode.beta.mainframeModernization.enableGoogleAnalytics": true,
    "cloudcode.beta.mainframeModernization.enableCloudLogging": false,
    "cloudcode.beta.mainframeModernization.model": "gemini-2.0-pro",
    "cloudcode.beta.mainframeModernization.codeGenerationSettings.targetLanguage": "csharp",
    "cloudcode.beta.mainframeModernization.codeGenerationSettings.techStackHints": [
        "Do not print messages directly to the console; use a logging framework instead."
    ],
}

Google アナリティクスを有効または無効にする

この構成プロパティは、拡張機能の使用状況アナリティクスの収集を有効または無効にします。

  • 構成プロパティ名: cloudcode.beta.mainframeModernization.enableGoogleAnalytics

  • 構成値の例: false

  • デフォルト値: true(アナリティクスが有効)。

Cloud Logging の有効化と無効化

この構成プロパティは、ロギングの有効化と無効化を制御します。

  • 構成プロパティ名: cloudcode.beta.mainframeModernization.enableCloudLogging

  • 構成値の例: true

  • デフォルト値: false(Cloud Logging は無効)。

モデル

この構成プロパティが設定されている場合、Mainframe Modernization Code Rewrite は、構成で指定された Gemini モデルを使用します。

  • 構成プロパティ名: cloudcode.beta.mainframeModernization.model

  • 構成値の例: "gemini-1.5-flash""gemini-1.5-pro""gemini-2.0-flash""gemini-2.0-flash-lite""gemini-2.0-pro"

  • デフォルト値: "(default)"(毎回確認)。

翻訳する言語

この構成プロパティが設定されている場合、Generate Modernized Code コマンドでコード生成時にターゲット言語を選択するよう求められることはなくなり、代わりにプロパティで設定された言語が使用されます。

  • 構成プロパティ名: cloudcode.beta.mainframeModernization.codeGenerationSettings.targetLanguage

  • 構成値の例: "java""csharp""python""pgsql"

  • デフォルト値: null(毎回確認)。

コード生成のテクノロジー スタックに関するヒント

この構成プロパティが設定されている場合、Generate Modernized Code コマンドは、コードの生成時に、指定されたテクノロジー スタック ヒントのリストを追加命令として LLM に渡します。この構成は、ターゲット アーキテクチャ、フレームワーク、コード スタイルを調整するためのガイダンスとして使用できます。

  • 構成プロパティ名: cloudcode.beta.mainframeModernization.codeGenerationSettings.techStackHints

  • 構成値の例:

    [
      "Do not print messages directly to the console; use a logging framework instead.",
      "when generating java code - use Spring Boot version 3 as the framework"
    ]
    
  • デフォルト値: [](空のリスト。技術スタックに関するヒントなし)。

メインフレーム モダナイゼーションのコード書き換えデータを削除する

現在のワークスペースの Mainframe Modernization Code Rewrite によってローカルに保存されているすべてのデータを削除する手順は次のとおりです。

  1. メニューバーから [表示] > [ターミナル] を選択するか、 キーボード ショートカットを押してターミナルを開きます。

  2. ターミナルに次のコマンドを入力します。

Linux(Bash または Zsh)

workspace_id=$(printf %s "$PWD$(stat -c '%i' .)" | md5sum | head -c 32)
workspace_storage_dir="$HOME/.config/Code/User/workspaceStorage/$workspace_id"
rm -r "$workspace_storage_dir/googlecloudtools.cloudcode/mainframe/"

Windows(PowerShell)

$workspacePath = (Get-Location).ToString()

$tempFile = (New-TemporaryFile).FullName
($workspacePath.Substring(0, 1).ToLower() + $workspacePath.Substring(1) +
    (([decimal](Get-Date (Get-ItemProperty . |
        Select-Object -ExpandProperty CreationTimeUtc) -UFormat %s) * 1000) -split '\.')[0]
) | Out-File -FilePath $tempFile -Encoding ascii -NoNewline
$workspaceId = (Get-FileHash -Algorithm MD5 -Path $tempFile).Hash.ToLower()
Remove-Item $tempFile

$workspaceStorageDir = "$env:APPDATA\Code\User\workspaceStorage\$workspaceId"
Remove-Item -Recurse "$workspaceStorageDir\googlecloudtools.cloudcode\mainframe"

トラブルシューティング

このセクションでは、Mainframe Modernization Code Rewrite の既知の問題の概要とトラブルシューティングの手順について説明します。

プロジェクトで Vertex AI を使用できない Google Cloud

[Generate Specification Summary] または [Generate Modernized Code] コマンドが長時間実行された後に失敗する場合は、Vertex AI API が有効になっていないか、選択したプロジェクトの割り当てを超えている可能性があります。これが問題であることを確認するには、[出力に移動] ボタンをクリックします。

[出力に移動] ボタンを使用できない場合は、出力チャネルを検査するの手順に沿って操作します。出力チャネルで、「Vertex.GenerateContent failed」を含むエラー メッセージを探します。たとえば、選択したプロジェクトで Vertex AI API が有効になっていないことが原因で発生したエラー メッセージは次のとおりです。 Google Cloud

"generic::unknown: retry budget exhausted (30 attempts): Vertex.GenerateContent failed: 403 Forbidden (403)"

この問題を解決するには、次のいずれかを行います。

  • プロジェクトで Vertex AI API が有効になっていることを確認します。 Google Cloud

  • Vertex AI API が有効になっている別のプロジェクトに切り替えます。 Google Cloud

Mainframe Modernization コード書き換えコマンドは使用できません

[Generate Specification Summary] や [Generate Modernized Code] などのコマンドがコマンドパレットで使用できない場合は、Mainframe Modernization CLI ツールがインストールされていない可能性があります。これが該当することを確認するには、次の実行可能ファイルが欠落していないことを確認します。

  • Linux の場合: ~/.cache/cloud-code/mainframe/bin/codegen
  • Windows の場合: %LOCALAPPDATA%\cloud-code\mainframe\bin\codegen.exe
  • macOS の場合: $HOME/Library/Application Support/cloud-code/mainframe/bin/codegen_macos

その場合は、次の手順で問題を解決してください。

  1. Ctrl/Cmd+Shift+P キーを押してコマンド パレットを開きます。
  2. [Cloud Code: Install or Update Mainframe Modernization Tools] コマンドを選択します。
  3. 実行可能ファイルが見つからなくなったことを確認します。
  4. Ctrl/Cmd+Shift+P キーを押してコマンド パレットを再度開きます。
  5. [Developer: Reload Window] コマンドを選択します。

出力チャネルを検査する

このガイドの他の場所に記載されていないその他のエラーのトラブルシューティングを行うには、拡張機能の出力チャネルを調べてみてください。出力チャネルを開くには、次の操作を行います。

  1. Ctrl/Cmd+Shift+P キーを押してコマンド パレットを開きます。
  2. [出力: 出力チャンネルを表示] コマンドを選択します。
  3. Cloud Code Mainframe Modernization 出力チャネルを選択します。