CLI ガイド


Migration Toolkit for Applications 7.1

Migration Toolkit for Applications CLI を使用してアプリケーションを移行する方法

Red Hat Customer Content Services

概要

このガイドでは、Migration Toolkit for Applications CLI を使用して Java アプリケーションの移行を単純化する方法を説明します。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

第1章 概要

1.1. CLI ガイドについて

このガイドは、Migration Toolkit for Applications (MTA) を使用して Java アプリケーション、.NET アプリケーション、またはその他のコンポーネントを移行するエンジニア、コンサルタント、その他のユーザーを対象としています。MTA 7.1 以降では、MTA を使用して Java 以外の言語で記述されたアプリケーションを分析できます。Java 以外の言語で記述されたアプリケーションに対して分析を実行するには、カスタムルールセットを追加し、ターゲット言語を指定しないでください。このガイドでは、CLI のインストールおよび実行方法、生成されたレポートの確認方法、追加機能を活用方法を説明します。

重要

.NET の移行は開発者プレビュー機能です。開発者プレビュー機能は、Red Hat ではいかなる形でもサポートされていません。また、機能的には完全ではなく、実稼働環境に対応していません。本番環境またはビジネスクリティカルなワークロードには、開発者プレビュー機能を使用しないでください。開発者プレビュー機能は、Red Hat 製品オファリングに含まれる可能性がある前に、今後の製品機能への早期アクセスを提供し、お客様が機能をテストし、開発プロセス中にフィードバックを提供できるようにします。これらの機能にはドキュメントがない可能性があり、いつでも変更または削除される可能性があり、テストは制限されています。Red Hat は、関連する SLA なしで、開発者プレビュー機能に関するフィードバックを送信する方法を提供する場合があります。

重要

Java 以外の言語で記述されたアプリケーションの分析は、開発者プレビュー機能です。開発者プレビュー機能は、Red Hat ではいかなる形でもサポートされていません。また、機能的には完全ではなく、実稼働環境に対応していません。本番環境またはビジネスクリティカルなワークロードには、開発者プレビュー機能を使用しないでください。開発者プレビュー機能は、Red Hat 製品オファリングに含まれる可能性がある前に、今後の製品機能への早期アクセスを提供し、お客様が機能をテストし、開発プロセス中にフィードバックを提供できるようにします。これらの機能にはドキュメントがない可能性があり、いつでも変更または削除される可能性があり、テストは制限されています。Red Hat は、関連する SLA なしで、開発者プレビュー機能に関するフィードバックを送信する方法を提供する場合があります。

1.2. Migration Toolkit for Applications の概要

Migration Toolkit for Applications とは

Migration Toolkit for Applications (MTA) は、Red Hat OpenShift 上のハイブリッドクラウド環境全体で大規模なアプリケーションモダナイゼーションに対する取り組みを促進します。このソリューションは、導入プロセス全体を通じて、ポートフォリオレベルとアプリケーションレベルの詳細情報を提供します。ユーザーインターフェイスを使用して、アプリケーションのインベントリー作成、評価、分析、および管理を行い、OpenShift Container Platform への移行をより短期間で行うことができます。

MTA 7.1 以降では、アプリケーションを Application Inventory に追加すると、MTA が言語検出タスクとテクノロジー検出タスクを自動的に作成して実行します。言語の検出では、アプリケーションで使用されているプログラミング言語が識別されます。テクノロジーの検出では、Enterprise Java Beans (EJB)、Spring などのテクノロジーが識別されます。その後、各タスクによってアプリケーションに適切なタグが割り当てられるため、アプリケーションに手動でタグを付ける時間と労力が削減されます。

MTA は、アプリケーションを評価するための基礎として広範にわたるデフォルトの質問リストを使用します。または、独自のカスタム質問リストを作成して、アプリケーションのコンテナー化の準備に必要な難易度、時間、およびその他のリソースを見積もることもできます。ステークホルダー間の議論の基礎として評価の結果を使用して、どのアプリケーションがコンテナー化に適しているか、どのアプリケーションが最初に多大な作業を必要とするか、どのアプリケーションがコンテナー化に適していないかを判断できます。

MTA は、対象のアプリケーションごとに 1 つ以上のルールセットを適用してアプリケーションを分析し、モダナイゼーションする前に、そのアプリケーションに含まれるどの行を変更するかを判断します。

MTA は、プロジェクトソースディレクトリーやアプリケーションアーカイブを含むアプリケーションアーティファクトを検査し、変更を必要とするエリアを強調表示する HTML レポートを作成します。

Migration Toolkit for Applications による移行を単純化する方法

Migration Toolkit for Applications は一般的なリソースを探し、アプリケーションを移行する際の既知の問題点を明らかにします。アプリケーションで使用されるテクノロジーの概要を示します。

MTA は、移行またはモダナイゼーションパスの評価に関する詳細なレポートを生成します。このレポートは、大規模なプロジェクトに必要な作業を見積もり、関係する作業を減らすのに役立ちます。

1.2.1. サポートされている Migration Toolkit for Applications の移行パス

Migration Toolkit for Applications (MTA) は、次の移行をサポートしています。

  • サードパーティーのエンタープライズアプリケーションサーバー (Oracle WebLogic Server など) から JBoss Enterprise Application Platform (JBoss EAP) への移行。
  • JBoss EAP の最新リリースへのアップグレード。
  • Windows 専用の .NET 4.5+ Framework からクロスプラットフォームの .NET 8.0 への移行。(開発者プレビュー)

MTA は、Red Hat OpenShift Container Platform (RHOCP) でのコンテナー化およびデプロイメントのアプリケーションの適合性を評価するための包括的なルールセットを提供します。MTA 分析を実行して、複数のターゲットプラットフォームに移行するアプリケーションの適切性を評価できます。

Expand
表1.1 サポートされている Java 移行パス: ソースプラットフォーム ⇒ ターゲットプラットフォーム
ソースプラットフォーム ⇒JBoss EAP 7、8 への移行OpenShift (クラウド対応)OpenJDK 11、17、21Jakarta EE 9Camel 3、4Spring Boot in Red Hat RuntimesQuarkusOpen Liberty

Oracle WebLogic Server

-

-

-

-

-

IBM WebSphere Application Server

-

-

-

-

JBoss EAP 4

[a]

-

-

-

-

-

JBoss EAP 5

-

-

-

-

-

JBoss EAP 6

-

-

-

-

-

JBoss EAP 7

-

-

-

-

Thorntail

[b]

-

-

-

-

-

-

-

Oracle JDK

-

-

-

-

-

-

Camel 2

-

-

-

-

-

Spring Boot

-

-

-

すべての Java アプリケーション

-

-

-

-

-

-

任意の Java EE アプリケーション

-

-

-

-

-

-

-

[a] 現在 MTA はこの移行パスのルールを提供していませんが、Red Hat コンサルティングはソースプラットフォームから JBoss EAP 7 への移行を支援します。
[b] JBoss Enterprise Application Platform expansion pack 2 (EAP XP 2) が必要
  1. .NET 移行パス: ソースプラットフォーム ⇒ ターゲットプラットフォーム (開発者プレビュー)
Expand
ソースプラットフォーム ⇒OpenShift (クラウド対応).NET 8.0 への移行

.NET Framework 4.5+ (Windows 専用)

ユースケースおよび移行パスの詳細は、開発者向け MTA Web ページを参照してください。

1.3. MTA の CLI

CLI は、Migration Toolkit for Applications のコマンドラインツールです。アプリケーションの移行とモダナイゼーションの取り組みを評価し、優先順位を付けるために使用できます。他のツールを使用せずに、分析内容を示す多数のレポートを提供します。CLI には、幅広いカスタマイズオプションがあります。CLI を使用すると、MTA の分析オプションを調整したり、外部自動ツールと統合したりできます。

第2章 CLI のインストールおよび実行

2.1. CLI のインストール

CLI は、ダウンロード可能な .zip ファイルを使用して、Linux、Windows、または macOS オペレーティングシステムにインストールできます。

前提条件

  • registry.redhat.io の Red Hat コンテナーレジストリーの認証。Red Hat は、認証を必要とする registry.redhat.io からコンテナーイメージを配布します。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。

2.1.1. CLI .zip ファイルのインストール

手順

  1. MTA Download page に移動し、OS 固有の CLI ファイルまたは src ファイルをダウンロードします。

    • mta-7.1.1-cli-linux.zip
    • mta-7.1.1-cli-macos.zip
    • mta-7.1.1-cli-windows.zip
    • mta-7.1.1-cli-src.zip
  2. .zip ファイルを任意のディレクトリーに展開します。.zip ファイルは、mta-cli と呼ばれるシングルバイナリーを展開します。

    このガイドで <MTA_HOME> が出てきた場合は、MTA インストールへの実際のパスに置き換えます。

2.1.2. Podman を使用して CLI をインストールする

CLI は、podman pull を使用してインストールできます。

前提条件

  • registry.redhat.io の Red Hat コンテナーレジストリーの認証。Red Hat は、認証を必要とする registry.redhat.io からコンテナーイメージを配布します。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。
  • Podman がインストールされている。
Podman

Podman は、Open Containers Initiative (OCI) コンテナーとコンテナーイメージを使用してアプリケーションを簡単に検索、実行、ビルド、共有、デプロイするために設計された、オープンソースのデーモンレス Linux ネイティブツールです。Podman は、Docker Container Engine の使用経験があれば馴染みのあるコマンドラインインターフェイス (CLI) を提供します。Podman のインストールと使用の詳細は、Podman installation instructions を参照してください。

手順

  1. 次のコマンドを実行して、Podman を使用して registry.redhat.io に認証します。

    $ podman login registry.redhat.io
    Copy to Clipboard Toggle word wrap

    ユーザー名とパスワードを入力します。

    Username: <username>
    Password: <***********>
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、バイナリーの PATH をコピーし、システム全体で使用できるようにします。

    $ podman cp $(podman create registry.redhat.com/mta-toolkit/mta-mta-cli-rhel9:{ProductVersion}):/usr/local/bin/mta-cli ./
    Copy to Clipboard Toggle word wrap
    警告

    Podman を使用したインストールも可能ですが、.zip ファイルをダウンロードしてインストールすることが推奨されます。

2.1.3. Windows 上の Docker で使用するための CLI のインストール (開発者プレビュー)

CLI は、Windows 上の Docker で使用するためにインストールできます。これは、Windows 上で .NET Framework 4.5 以降を使用して構築されたアプリケーションを、クロスプラットフォームの .NET 8.0 に移行する場合に必要な手順です。

前提条件

  • Windows 11+ 64 ビットバージョン 21H2 以降を搭載したホスト。
  • Docker Desktop for Windows インストーラーをダウンロードした。詳細は、Install Docker Desktop on Windows を参照してください。

手順

  1. 管理者権限で PowerShell を開きます。
  2. Hyper-V がインストールされ、有効になっていることを確認します。

    PS C:\Users\<your_user_name>> Enable-WindowsOptionalFeature -Online `
       -FeatureName Microsoft-Hyper-V-All
    Copy to Clipboard Toggle word wrap
    PS C:\Users\<your_user_name>> Enable-WindowsOptionalFeature -Online `
       -FeatureName Containers
    Copy to Clipboard Toggle word wrap
    注記

    場合によっては Windows を再起動する必要があります。

  3. Windows に Docker Desktop をインストールします。

    1. Docker_Desktop_Installer.exe をダブルクリックしてインストーラーを実行します。デフォルトでは、Docker Desktop は C:\Program Files\Docker\Docker にインストールされます。
    2. 設定ページで Use WSL 2 instead of Hyper-V オプションの選択を解除して、Docker が Linux コンテナーではなく Windows コンテナーをバックエンドとして実行するようにします。
  4. PowerShell で、MTA 用のフォルダーを作成します。

    PS C:\Users\<your_user_name>> mkdir C:\Users\<your_user_name>\MTA
    Copy to Clipboard Toggle word wrap

    <your_user_name> は、ホームディレクトリーのユーザー名に置き換えます。

  5. mta-7.1.1-cli-windows.zip ファイルを MTA フォルダーに展開します。

    PS C:\Users\<your_user_name>> cd C:\Users\<your_user_name>\Downloads
    Copy to Clipboard Toggle word wrap

    <your_user_name> は、ホームディレクトリーのユーザー名に置き換えます。

    PS C:\Users\<your_user_name>> Expand-Archive `
       -Path "{ProductShortNameLower}-{ProductVersion}-cli-windows.zip" `
       -DestinationPath "C:\Users\<your_user_name>\MTA"
    Copy to Clipboard Toggle word wrap

    <your_user_name> は、ホームディレクトリーのユーザー名に置き換えます。

  6. Docker が Windows コンテナーを実行していることを確認します。

    PS C:\Users\<your_user_name>> docker version
    Copy to Clipboard Toggle word wrap
    Client:
     Version:           27.0.3
     API version:       1.46
     Go version:        go1.21.11
     Git commit:        7d4bcd8
     Built:             Sat Jun 29 00:03:32 2024
     OS/Arch:           windows/amd64 
    1
    
     Context:           desktop-windows
    Server: Docker Desktop 4.32.0 (157355)
     Engine:
      Version:          27.0.3
      API version:      1.46 (minimum version 1.24)
      Go version:       go1.21.11
      Git commit:       662f78c
      Built:            Sat Jun 29 00:02:13 2024
      OS/Arch:          windows/amd64 
    2
    
      Experimental:     false
    Copy to Clipboard Toggle word wrap
    1 2
    OS/Arch 設定が windows/amd64 であることを確認します。
  7. Docker を使用するように PODMAN_BIN 環境変数を設定します。

    PS C:\Users\<your_user_name>> $env:PODMAN_BIN="C:\Windows\system32\docker.exe"
    Copy to Clipboard Toggle word wrap
  8. アップストリームの dotnet-external-provider を使用するように DOTNET_PROVIDER_IMG 環境変数を設定します。

    PS C:\Users\<your_user_name>> $env:DOTNET_PROVIDER_IMG="quay.io/konveyor/dotnet-external-provider:v0.5.0"
    Copy to Clipboard Toggle word wrap
  9. アップストリームイメージを使用するように RUNNER_IMG 環境変数を設定します。

    PS C:\Users\<your_user_name>> $env:RUNNER_IMG="quay.io/konveyor/kantra:v0.5.0"
    Copy to Clipboard Toggle word wrap

2.2. 非接続環境への MTA のインストール

インターネットに接続されたデバイスで、まず MTA バイナリーをダウンロードして保存します。次に、必要な Podman イメージ、MTA CLI イメージ、プロバイダーイメージをダウンロードして保存します。

  • Migration Toolkit for Applications Red Hat Developer ページ から、必要な MTA CLI バイナリーをダウンロードします。

    • CLI for Linux x86_64
    • CLI for Linux aarch64
    • CLI for MacOS x86_64
    • CLI for MacOS aarch64
    • CLI for Windows x86_64
    • CLI for Windows aarch64
  • インターネットに接続されたデバイスでイメージをダウンロードして保存します。
  • 非接続のデバイスにバイナリーをコピーします。
  • さらに、Podman を使用して関連するコンテナーイメージを保存およびインポートする必要があります。

2.2.1. Podman イメージのダウンロード

前提条件

  • Podman がインストールされている。詳細は、Podman を参照してください。

手順

  1. Podman を使用して、registry.redhat.io への認証を行います。

    $ podman login registry.redhat.io
    Copy to Clipboard Toggle word wrap
  2. ユーザー名と、registry.redhat.io のパスワードを入力します。

    Username: <registry_service_account_username>
    Password: <registry_service_account_password>
    Copy to Clipboard Toggle word wrap

    以下の出力が表示されるはずです。

    Login Succeeded!
    Copy to Clipboard Toggle word wrap
  3. Podman を使用してレジストリーからイメージを取得します。

    $ podman pull registry.redhat.io/mta/mta-cli-rhel9:7.1.0
    Copy to Clipboard Toggle word wrap
  4. Podman を使用して、レジストリーから必要なプロバイダーイメージを取得します。

    1. Java の場合は、次を実行します。

      $ podman pull registry.redhat.io/mta/mta-java-external-provider-rhel9:7.1.0
      Copy to Clipboard Toggle word wrap
    2. .NET の場合は、次を実行します。

      $ podman pull registry.redhat.io/mta/mta-dotnet-external-provider-rhel9:7.1.0
      Copy to Clipboard Toggle word wrap
  5. イメージを保存します。

    $ podman save <image> -o <my_image.image>
    Copy to Clipboard Toggle word wrap
  6. .image ファイルとバイナリーを USB にコピーするか、非接続のデバイスのファイルシステムに直接コピーします。
  7. 非接続のデバイスで、次のコマンドを実行します。

    $ podman load --input <my_image.image>
    Copy to Clipboard Toggle word wrap

2.2.2. CLI の既知の問題

Microsoft Windows における Podman の制限

CLI は、Microsoft Windows をサポートするように構築および配布されます。

ただし、Red Hat Enterprise Linux 9 (RHEL9) または Universal Base Image 9 (UBI9) に基づくコンテナーイメージを実行する場合、コンテナーの起動時に次のエラーが返されることがあります。

Fatal glibc error: CPU does not support x86-64-v2
Copy to Clipboard Toggle word wrap

このエラーは、Red Hat Enterprise Linux 9 または Universal Base Image 9 コンテナーイメージを x86-64-v2 をサポートする CPU アーキテクチャーで実行する必要があるために発生します。

詳細は、(Running Red Hat Enterprise Linux 9 (RHEL) or Universal Base Image (UBI) 9 container images fail with "Fatal glibc error: CPU does not support x86-64-v2") を参照してください。

CLI はコンテナーランタイムを正しく実行します。ただし、異なるコンテナーランタイム設定はサポートされていません。

サポートされていませんが、Podman の代わりに Docker を使用して CLI を実行すると、この問題は解決されます。

これを実現するには、PODMAN_BIN パスを Docker へのパスに置き換えます。

たとえば、この問題が発生した場合は、次のコマンドを発行する代わりに、

PODMAN_BIN=/usr/local/bin/docker mta-cli analyze
Copy to Clipboard Toggle word wrap

PODMAN_BIN を Docker へのパスに置き換えます。

<Docker Root Dir>=/usr/local/bin/docker mta-cli analyze
Copy to Clipboard Toggle word wrap

これはサポートされていませんが、ハードウェアをアップグレードしたり、x86_64-v2 をサポートするハードウェアに移行したりするときに、CLI を調べることができます。

2.3. CLI の実行

Migration Toolkit for Applications (MTA) CLI は、1 つ以上のアプリケーションに対して実行できます。

MTA 7.1.0 より前では、複数のアプリケーションに対して CLI を実行する場合、一連の --analyze コマンドをそれぞれアプリケーションに対して実行し、それぞれ個別のレポートを生成していました。このオプションは、引き続き完全にサポートされており、1 つのアプリケーションに対して MTA CLI を実行する で説明されています。

MTA 7.1.0 以降では、--bulk オプションを使用して複数のアプリケーションに対して CLI を実行し、1 つのレポートを生成できます。開発者プレビューとして提供中のこのオプションについては、複数のアプリケーションに対して MTA CLI を実行し、1 つのレポートを生成する (開発者プレビュー) で説明されています。

重要

1 つ以上のアプリケーションに対する CLI の実行は、開発者プレビュー機能です。開発者プレビュー機能は、Red Hat ではいかなる形でもサポートされていません。また、機能的には完全ではなく、実稼働環境に対応していません。本番環境またはビジネスクリティカルなワークロードには、開発者プレビュー機能を使用しないでください。開発者プレビュー機能は、Red Hat 製品オファリングに含まれる可能性がある前に、今後の製品機能への早期アクセスを提供し、お客様が機能をテストし、開発プロセス中にフィードバックを提供できるようにします。これらの機能にはドキュメントがない可能性があり、いつでも変更または削除される可能性があり、テストは制限されています。Red Hat は、関連する SLA なしで、開発者プレビュー機能に関するフィードバックを送信する方法を提供する場合があります。

2.3.1. 1 つのアプリケーションに対して MTA CLI を実行する

Migration Toolkit for Applications (MTA) CLI は、1 つのアプリケーションに対して実行できます。

手順

  1. ターミナルを開き、<MTA_HOME>/ ディレクトリーに移動します。
  2. mta-cli スクリプト (Windows の場合は mta-cli.exe) を、適切な引数を指定して実行します。

    $ ./mta-cli analyze --input <path_to_input> \
        --output <path_to_output> --source <source_name> --target <target_source> \
    Copy to Clipboard Toggle word wrap
    • --input: 評価されるアプリケーション。
    • --output: 生成されたレポートの出力ディレクトリー。
    • --source: アプリケーション移行元のテクノロジー。たとえば、weblogic です。
    • --target: アプリケーション移行先のテクノロジー。たとえば、eap8 です。
  3. レポートにアクセスします。
2.3.1.1. MTA コマンドの例
アプリケーションアーカイブでの MTA の実行

次のコマンドでは、JBoss EAP 5 から JBoss EAP 7 に移行するために、jee-example-app-1.0.0.ear という名前のサンプル EAR アーカイブを分析します。

$ <MTA_HOME>/mta-cli analyze \
    --input <path_to_jee-example-app-1.0.0.ear> \
    --output <path_to_report_output> --source eap5 --target eap7 \
Copy to Clipboard Toggle word wrap
ソースコードに対する MTA の実行

次のコマンドでは、JBoss EAP 8 に移行するために、customer-management というサンプルアプリケーションのソースコードを分析します。

$ <MTA_HOME>/mta-cli analyze --mode source-only --input <path_to_customer-management>
--output <path_to_report_output> --target eap8
Copy to Clipboard Toggle word wrap
cloud-readiness ルールの実行

次のコマンドでは、JBoss EAP 7 に移行するために、jee-example-app-1.0.0.ear という名前のサンプル EAR アーカイブを分析します。また、アーカイブがクラウド対応しているかどうかも評価します。

$ <MTA_HOME>/mta-cli analyze --input <path_to_jee-example-app-1.0.0.ear> \
    --output <path_to_report_output> \
    --target eap7
Copy to Clipboard Toggle word wrap

複数のアプリケーションに対して Migration Toolkit for Applications (MTA) CLI を実行し、1 つに結合されたレポートを生成できるようになりました。これにより、時間を節約でき、移行に向けて一連のアプリケーションを準備する方法をより適切に把握できます。

この機能は現在、開発者プレビュー機能です。

重要

1 つ以上のアプリケーションに対する CLI の実行は、開発者プレビュー機能です。開発者プレビュー機能は、Red Hat ではいかなる形でもサポートされていません。また、機能的には完全ではなく、実稼働環境に対応していません。本番環境またはビジネスクリティカルなワークロードには、開発者プレビュー機能を使用しないでください。開発者プレビュー機能は、Red Hat 製品オファリングに含まれる可能性がある前に、今後の製品機能への早期アクセスを提供し、お客様が機能をテストし、開発プロセス中にフィードバックを提供できるようにします。これらの機能にはドキュメントがない可能性があり、いつでも変更または削除される可能性があり、テストは制限されています。Red Hat は、関連する SLA なしで、開発者プレビュー機能に関するフィードバックを送信する方法を提供する場合があります。

手順

  1. ターミナルを開き、<MTA_HOME>/ ディレクトリーに移動します。
  2. mta-cli スクリプト (Windows の場合は mta-cli.exe) を、適切な引数を指定して実行します。analyze コマンドごとに 1 つの入力を指定しますが、すべての入力に対して同じ出力ディレクトリーを指定します。たとえば、アプリケーション A、B、C を分析するには、次のように指定します。

    1. 入力 A について、次のコマンドを指定します。

      $ ./{mta-cli} analyze --bulk --input=<path_to_input_A> --output=<path_to_output_ABC> --source <source_A> --target <target_A>
      Copy to Clipboard Toggle word wrap
      • --input: 評価されるアプリケーション。
      • --output: 生成されたレポートの出力ディレクトリー。
      • --source: アプリケーション移行元のテクノロジー。たとえば、weblogic です。
      • --target: アプリケーション移行先のテクノロジー。たとえば、eap8 です。
    2. 入力 B について、次のコマンドを指定します。

      $ ./{mta-cli} analyze --bulk --input=<path_to_input_B> --output=<path_to_output_ABC>  --source <source_B> --target <target_B>
      Copy to Clipboard Toggle word wrap
    3. 入力 C について、次のコマンドを指定します。

      $ ./{mta-cli} analyze --bulk --input=<path_to_input_C> --output=<path_to_output_ABC>  --source <source_C> --target <target_C>
      Copy to Clipboard Toggle word wrap

      MTA によって、アプリケーションを移行する前に解決する必要があるすべての問題をリストした 1 つのレポートが生成されます。

  3. レポートにアクセスします。

2.3.3. コマンドラインを使用して分析を実行する

Analyze は、analyzer-lsp ツールを使用してソースコードとバイナリー分析の実行をサポートします。analyzer-lsp はプロバイダーのルールを評価し、ルールの一致を判断します。

アプリケーションのソースコード分析を実行するには、次のコマンドを実行します。

mta-cli analyze --input=<path_to_source_code> --output=<path_to_output_directory>
Copy to Clipboard Toggle word wrap

すべてのフラグ:

Analyze application source code

Usage:
  mta-cli analyze [flags]

Flags:

      --analyze-known-libraries           Analyze known open-source libraries.
      --context-lines (int)               Number of lines of source code to
                                          include in the output for each
                                          incident (default: `100`).
  -d, --dependency-folders (stringArray)  Directory for dependencies.
      --enable-default-rulesets           Run default rulesets with analysis
                                          (default: `true`).
  -h, --help                              Help for analyze.
      --http-proxy (string)               HTTP proxy string URL.
      --https-proxy (string)              HTTPS proxy string URL.
      --incident-selector (string)        An expression to select incidents
                                          based on custom variables.
                                          Example:
                                          !package=io.demo.config-utils
  -i, --input (string)                    Path to application source code or
                                          a binary.
      --jaeger-endpoint (string)          Jaeger endpoint to collect traces.
      --json-output                       Create analysis and dependency
                                          output as JSON.
      --list-sources                      List rules for available
                                          migration sources.
      --list-targets                      List rules for available
                                          migration targets.
  -l, --label-selector (string)           Run rules based on specified label
                                          selector expression.
      --maven-settings (string)           Path to the custom maven
                                          settings file to use.
      --overwrite                         Overwrite output directory.
      --skip-static-report                Do not generate the static report.
  -m, --mode (string)                     Analysis mode, must be one of
                                          `full` or `source-only`
                                          (default: `full`).
      --no-proxy (string)                 Proxy-excluded URLs
                                          (relevant only with proxy).
  -o, --output (string)                   Path to the directory for analysis
                                          output.
      --overwrite                         Overwrite output directory.
      --rules (stringArray)               Filename or directory containing
                                          rule files.
      --skip-static-report                Do not generate the static report.
  -s, --source (string)                   Source technology to consider
                                          for analysis.
                                          To specify multiple sources,
                                          repeat the parameter:
                                          `--source <source_1>
                                          --source <source_2>` etc.
  -t, --target (string)                   Target technology to consider
                                          for analysis.
                                          To specify multiple targets,
                                          repeat the parameter:
                                          `--target <target_1>
                                          --target <target_2>` etc.


Global Flags:
      --log-level uint32                  Log level (default: 4).
      --no-cleanup                        Do not cleanup temporary resources.
Copy to Clipboard Toggle word wrap
注記

上記のフラグのリストには --bulk フラグは含まれていません。このフラグは開発者プレビュー機能の一部として提供されているためです。この機能については、CLI で複数のアプリケーションを分析するときに 1 つのレポートを提供するためのサポート で説明されています。

使用例:

  1. 分析を実行するサンプルアプリケーションを取得します。
  2. 利用可能なターゲットテクノロジーをリストします。

    mta-cli analyze --list-targets
    Copy to Clipboard Toggle word wrap
  3. 指定したターゲットテクノロジー (例: cloud-readiness) を使用して分析を実行します。

    mta-cli analyze --input=<path-to/example-applications/example-1> --output=<path-to-output-dir> --target=cloud-readiness
    Copy to Clipboard Toggle word wrap
  4. 指定した出力パスに、いくつかの分析レポートが作成されます。

    $ ls ./output/ -1
    analysis.log
    dependencies.yaml
    dependency.log
    output.yaml
    static-report
    Copy to Clipboard Toggle word wrap
    • output.yaml は、Issues レポートが含まれるファイルです。
    • static-report には、静的 HTML レポートが含まれています。
    • dependencies.yaml には、依存関係レポートが含まれています。

2.3.4. コマンドラインを使用して変換を実行する

変換を使用して、以下のアクションを実行できます。

  • transform openrewrite コマンドを使用して、Java アプリケーションのソースコードを変換します。
  • transform rules コマンドを使用して、XML ルールを YAML ルールに変換します。
重要

変換を実行するには、コンテナーランタイムを設定する必要があります。詳細は、Podman を使用して CLI をインストールする を参照してください。

Transform application source code or mta XML rules

Usage:
  mta-cli transform [flags]
  mta-cli transform [command]

Available Commands:
  openrewrite Transform application source code using OpenRewrite recipes
  rules       Convert XML rules to YAML

Flags:
  -h, --help   help for transform

Global Flags:
      --log-level uint32   log level (default 4)
      --no-cleanup         do not clean up temporary resources

Use "mta-cli transform [command] --help" for more information about a command.
Copy to Clipboard Toggle word wrap
2.3.4.1. OpenRewrite

openrewrite サブコマンドを使用すると、ソースコードに対して OpenRewrite レシピを実行できます。

Transform application source code using OpenRewrite recipes

Usage:
  mta-cli transform openrewrite [flags]

Flags:
  -g, --goal string     target goal (default "dryRun")
  -h, --help            help for openrewrite
  -i, --input string    path to application source code directory
  -l, --list-targets    list all available OpenRewrite recipes
  -s, --maven-settings string   path to a custom maven settings file to use
  -t, --target string   target openrewrite recipe to use. Run --list-targets to get a list of packaged recipes.

Global Flags:
      --log-level uint32   log level (default 4)
      --no-cleanup         do not clean up temporary resources
Copy to Clipboard Toggle word wrap

アプリケーションのソースコードに対して transform openrewrite を実行するには、次のコマンドを実行します。

mta-cli transform openrewrite --input=<path/to/source/code> --target=<exactly_one_target_from_the_list>
Copy to Clipboard Toggle word wrap

注記

transform overwrite コマンドの実行に使用できるターゲットは 1 つだけです。

2.3.4.2. Rules

transform コマンドの rules サブコマンドを使用して、mta XML ルールを analyzer-lsp YAML ルールに変換できます。ルールを変更するために、rules サブコマンドは windup-shim ツールを使用します。

注記

analyzer-lsp はプロバイダーのルールを評価し、ルールの一致を判断します。

Convert XML rules to YAML

Usage:
  mta-cli transform rules [flags]

Flags:
  -h, --help                help for rules
  -i, --input stringArray   path to XML rule file(s) or directory
  -o, --output string       path to output directory

Global Flags:
      --log-level int   log level (default 5)
Copy to Clipboard Toggle word wrap

アプリケーションのソースコードで transform rules を実行するには、以下を実行します。

mta-cli transform rules --input=<path/to/xmlrules> --output=<path/to/output/dir>
Copy to Clipboard Toggle word wrap

使用例:

  1. ソースコードを変換するサンプルアプリケーションを取得します。
  2. 利用可能な OpenRewrite レシピを表示します。

    mta-cli transform openrewrite --list-targets
    Copy to Clipboard Toggle word wrap
  3. サンプルアプリケーションでレシピを実行します。

    mta-cli transform openrewrite --input=<path-to/jakartaee-duke> --target=jakarta-imports
    Copy to Clipboard Toggle word wrap

    jakartaee-duke アプリケーションのソースコードの差分を調べて、変換を確認します。

2.3.4.3. 利用可能な OpenRewrite レシピ
Expand
表2.1 利用可能な OpenRewrite レシピ
移行パス目的rewrite.configLocationactiveRecipes

Java EE から Jakarta EE

javax パッケージのインポートを同等の jakarta パッケージに置き換える

pom.xml ファイル内で宣言された javax アーティファクトを jakarta と同等のものに置き換える

<MTA_HOME>/rules/openrewrite/jakarta \ /javax/imports/rewrite.yml

org.jboss.windup.JavaxToJakarta

Java EE から Jakarta EE

ブートストラップファイルの名前を変更する

<MTA_HOME>/rules/openrewrite/jakarta \ /javax/bootstrapping/rewrite.yml

org.jboss.windup.jakarta.javax. \ BootstrappingFiles

Java EE から Jakarta EE

persistence.xml 設定を変換する

<MTA_HOME>/rules/openrewrite/jakarta \ /javax/xml/rewrite.yml

org.jboss.windup.javax-jakarta. \ PersistenceXML

Spring Boot から Quarkus

application*.properties に一致するファイル内の spring.jpa.hibernate.ddl-auto プロパティーを置き換える

<MTA_HOME>/rules/openrewrite/quarkus \ /springboot/properties/rewrite.yml

org.jboss.windup.sb-quarkus.Properties

2.4. レポートへのアクセス

Migration Toolkit for Applications を実行すると、コマンドラインの --output 引数を使用して指定する <OUTPUT_REPORT_DIRECTORY> にレポートが生成されます。

output ディレクトリーには、以下のファイルおよびサブディレクトリーが含まれます。

<OUTPUT_REPORT_DIRECTORY>/
├── index.html          // Landing page for the report
├── <EXPORT_FILE>.csv   // Optional export of data in CSV format
├── archives/           // Archives extracted from the application
├── mavenized/          // Optional Maven project structure
├── reports/            // Generated HTML reports
├── stats/              // Performance statistics
Copy to Clipboard Toggle word wrap

手順

  1. MTA の実行後に表示される出力から、レポートの index.html ファイルのパスを取得します。

    Report created: <OUTPUT_REPORT_DIRECTORY>/index.html
                  Access it at this URL: file:///<OUTPUT_REPORT_DIRECTORY>/index.html
    Copy to Clipboard Toggle word wrap
  2. ブラウザーを使用して index.html ファイルを開きます。

    生成されたレポートが表示されます。

2.5. CLI を使用した多言語アプリケーションの分析

MTA 7.1.0 以降では、複数の言語で書かれたアプリケーションでアプリケーション分析を実行できます。分析は次のいずれかの方法で実行できます。

  • 分析の実行対象とするサポートされている言語プロバイダーを選択する。
  • サポートされている既存の言語プロバイダーを、サポートされていない独自の言語プロバイダーでオーバーライドし、このサポートされていないプロバイダーの分析を実行する。

Migration Toolkit for Applications (MTA) CLI を使用して多言語アプリケーションを分析する場合、分析の実行対象とするアプリケーション言語に応じて、サポートされている言語プロバイダーを明示的に設定できます。

前提条件

  • 最新バージョンの MTA CLI が実行中である。

手順

  1. 分析対象としてサポートされている言語プロバイダーをリスト表示します。

    $ mta-cli analyze --list-providers
    Copy to Clipboard Toggle word wrap
  2. 選択した言語プロバイダーについてアプリケーション分析を実行します。

    $ mta-cli analyze --input <_path_to_the_source_repository_> --output <_path_to_the_output_directory_> --provider <_language_provider_> --rules <_path_to_custom_rules_>
    Copy to Clipboard Toggle word wrap

    --provider オプションを設定しないと、サポートされていないプロバイダーが検出されるため、分析が失敗する可能性があることに注意してください。--provider を設定しなくても分析が完了するのは、検出されたすべてのプロバイダーがサポートされている場合だけです。

2.5.2. サポートされていない言語プロバイダーについて多言語アプリケーションを分析する

Migration Toolkit for Applications (MTA) CLI を使用して多言語アプリケーションを分析する場合、サポートされていない言語プロバイダーについて分析を実行できます。これを行うには、--override-provider-settings オプションを使用して、サポートされている既存の言語プロバイダーを、サポートされていない独自の言語プロバイダーでオーバーライドする必要があります。

重要

サポートされているプロバイダーをオーバーライドする前に、サポートされていない言語プロバイダーの設定ファイルを作成する必要があります。

前提条件

  • サポートされていない言語プロバイダー用の設定ファイルを作成した。

手順

  • サポートされている既存の言語プロバイダーを、サポートされていないプロバイダーでオーバーライドします。

    $ mta-cli analyze --provider-override <path_to_configuration_file> --output=<path_to_the_output_directory> --rules <path_to_custom_rules>
    Copy to Clipboard Toggle word wrap

第3章 レポートの確認

ブラウザーを使用して、レポート出力ディレクトリーにある index.html ファイルを開きます。これにより、処理されたアプリケーションのリストが表示されます。各行には、ストーリーポイント、インシデントの数、アプリケーションで発生したテクノロジーの概要が含まれます。

図3.1 アプリケーションリスト

注記

新しいルールが MTA に追加されると、インシデントと予測されるストーリーポイントが変わります。この値は、このアプリケーションをテストする際に表示される値と一致しない場合があります。

以下の表は、このメインの MTA ランディングページからアクセスできるレポートおよびページのリストです。アプリケーションの名前 jee-example-app-1.0.0.ear をクリックして、アプリケーションレポートを表示します。

Expand
ページアクセス方法

アプリケーション

アプリケーションの名前をクリックします。

Technologies レポート

ページ上部にある Technologies リンクをクリックします。

複数のアプリケーションで共有されるアーカイブ

Archives shared by multiple applications リンクをクリックします。このリンクは、複数のアプリケーションに共有アーカイブがある場合にのみ利用できることに注意してください。

ルールプロバイダー実行の概要

ページの下部にある Rule providers execution overview リンクをクリックします。

アプリケーションが、他の分析済みアプリケーションとアーカイブを共有している場合は、共有アーカイブからのストーリーポイントの数と、このアプリケーションに固有のストーリーポイントの数が表示されることに注意してください。

図3.2 共有アーカイブ

アプリケーション間で共有されるアーカイブに関する情報は、複数のアプリケーションで共有されるアーカイブレポートを参照してください。

3.1. アプリケーションレポート

3.1.1. ダッシュボード

Application List でアプリケーション名をクリックして、レポートランディングページからこのレポートにアクセスします。

ダッシュボードでは、アプリケーションの移行作業全体の概要が表示されます。つまり、以下のようになります。

  • カテゴリー別のインシデントおよびストーリーポイント
  • 提案された変更の作業レベル別のインシデントおよびストーリーポイント
  • パッケージ別のインシデント

図3.3 ダッシュボード

上部のナビゲーションバーには、このアプリケーションの移行に関する追加の詳細を含むさまざまなレポートがリスト表示されます。現在のアプリケーションに適用可能なレポートのみが利用できることに注意してください。

Expand
レポート説明

Issues

注意が必要なすべての問題を簡潔に説明します。

Insights

アプリケーションで使用されているテクノロジーと、コード内でのその使用状況に関する情報を提供します。ただし、Insights は移行には影響しません。

Application Details

移行時に注意する必要がある可能性のあるアプリケーション内で見つかったすべてのリソースの詳細を説明します。

Technologies

機能を基にグループ化されたすべての埋め込みライブラリーを表示します。これにより、各アプリケーションで使用されるテクノロジーを迅速に表示できます。

Dependencies

アプリケーション内にある Java パッケージの依存関係をすべて表示します。

Unparsable

MTA が想定される形式で解析できなかったすべてのファイルを示しています。たとえば、.xml または .wsdl 接尾辞が含まれるファイルは XML ファイルであると仮定します。XML パーサーが失敗すると、問題はここに報告され、また個々のファイルがリストされている場所も報告されます。

Remote Services

アプリケーション内で見つかったすべてのリモートサービス参照を表示します。

EJB

アプリケーション内の EJB のリストが含まれます。

JBPM

分析中に見つかった JBPM 関連のリソースすべてが含まれます。

JPA

アプリケーションで見つかったすべての JPA 関連リソースの詳細が含まれます。

Hibernate

アプリケーションで検出されたすべての Hibernate 関連リソースの詳細が含まれています。

Server Resources

入力アプリケーションですべてのサーバーリソース (JNDI リソースなど) を表示します。

Spring Beans

分析中に見つかった Spring Bean の一覧が含まれます。

Hard-Coded IP Addresses

アプリケーションで見つかったすべてのハードコーディングされた IP アドレスの一覧を提供します。

Ignored Files

特定のルールおよび MTA 設定に基づいてアプリケーションに含まれるファイルを一覧表示し、処理されませんでした。詳細は、--userIgnorePath オプションを参照してください。

About

現在のバージョンの MTA を説明し、詳細なヘルプリンクを提供します。

3.1.2. Issues レポート

Issues リンクをクリックして、Dashboard からこのレポートにアクセスします。

このレポートには、選択した移行パスによって発生したすべての問題に関する詳細情報が含まれます。発生した問題ごとに以下の情報が提供されます。

  • 問題を要約するタイトル。
  • インシデントの合計数、または問題の発生回数。
  • 問題の 1 つののインスタンスを解決するルールのストーリーポイント。
  • この問題を解決するための推定作業量レベル。
  • 発生したすべてのインスタンスを解決するための全ストーリーポイント。これは、インシデントごとのストーリーポイントで検出されたインシデントの数を掛けて計算されます。

図3.4 Issues レポート

報告された各問題は、タイトルをクリックして追加情報を取得することで拡張できます。以下の情報が含まれています。

  • インシデントが発生したファイルの一覧と、各ファイル内のインシデントの数。ファイルが Java ソースファイルの場合は、ファイル名をクリックすると、対応するソースレポートが表示されます。
  • 問題の詳細情報。この説明は問題の概要を示し、既知の解決策を提供し、問題または解決策に関するサポートドキュメントを参照します。
  • 問題を生成したルールへの Show Rule というタイトルの直接リンク。

図3.5 問題の拡張

デフォルトでは、問題は 4 つのカテゴリーに分類されます。これらのカテゴリーに関する情報は、カテゴリーを参照してください。

3.1.3. Insights

重要

Insights はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

以前は、作業量がゼロのルールによって生成された違反が、静的レポートに問題としてリストされていました。このような違反は、Insights としてリストされるようになりました。問題は一般的なルールによって生成されますが、文字列タグはタグ付けルールによって生成されます。文字列タグは、テクノロジーが存在することは示しますが、コードの場所は示しません。Insights の導入により、アプリケーションで使用されているテクノロジーと、コード内でのその使用状況を確認できるようになりました。

たとえば、今回の移行には影響しない、コード内の非推奨の API の使用を検索するルールなどがあります。そのような API を追跡し、将来必要になったときに修正できます。

Insights は、問題とは異なり、移行を正常に実行するために修正する必要はありません。Insights は、正の作業量値とカテゴリーが割り当てられていないルールによって生成されます。Insights には、メッセージやタグがある場合があります。

注記

Insights は、該当または存在する場合、自動的に生成されます。現在、MTA は、CLI を使用したアプリケーション分析実行時の Insights 生成をサポートしています。

Insights は、静的レポートの Insights タブで表示できます。

例: 作業量が未定義のタグ付けルールによって生成された Insights

- customVariables: []
  description: Embedded library - Apache Wicket
  labels:
  - konveyor.io/include=always
  links: []
  ruleID: mvc-01000
  tag:
  - Apache Wicket
  - Embedded library - Apache Wicket
  when:
    builtin.file:
      pattern: .*wicket.*\.jar
Copy to Clipboard Toggle word wrap

例: 作業量がゼロのタグ付け以外のルールによって生成された Insights

- category: potential
  customVariables: []
  description: RESTful Web Services @Context annotation has been deprecated
  effort: 0
  message: Future versions of this API will no longer support `@Context` and related
    types such as `ContextResolver`.
  ruleID: jakarta-ws-rs-00001
  when:
    java.referenced:
      location: ANNOTATION
      pattern: jakarta.ws.rs.core.Context
Copy to Clipboard Toggle word wrap

3.1.4. Application Details レポート

Application Details リンクをクリックして、ダッシュボードからこのレポートにアクセスします。

レポートには、ストーリーポイント、パッケージごとの Java インシデント、およびアプリケーションで見つかったテクノロジーの発生回数が記載されます。以下は、移行プロセス中に生成されたアプリケーションメッセージの表示です。最後に、プロセス中に分析される各アーカイブにこの情報の内訳が表示されます。

図3.6 Application Details レポート

jee-example-app-1.0.0.ear/jee-example-services.jar をデプロイメントして、ストーリーポイント、パッケージごとの Java インシデント、およびこのアーカイブで見つかったテクノロジーの発生数を確認します。この概要は、移行に割り当てられたストーリーポイントの合計で始まり、アーカイブ内の各ファイルに必要な変更の詳細を示す表が続きます。レポートには以下のコラムが含まれます。

Expand
列名説明

Name

分析されるファイルの名前。

Technology

分析するファイルのタイプ (例: Decompiled Java File または Properties)。

Issues

レビューまたは変更が必要なコードのエリアに関する警告。

Story Points

ファイルの移行に必要な作業レベル。

アーカイブがアプリケーションに複数回複製されると、そのアーカイブはレポートで 1 回だけリスト表示され、[Included multiple times] でタグ付けされます。

図3.7 アプリケーションでのアーカイブの重複

アプリケーション内で重複するアーカイブのストーリーポイントは、そのアプリケーションの合計ストーリーポイント数に 1 回だけカウントされます。

3.1.5. Technologies レポート

Technologies リンクをクリックして、ダッシュボードからこのレポートにアクセスします。

レポートには、解析されたアプリケーションで機能別にグループ化されたテクノロジーがリスト表示されます。これは、アプリケーションに含まれるテクノロジーの概要であり、各アプリケーションの目的を素早く理解できるように設計されています。

以下の図は、jee-example-app で使用されるテクノロジーを示しています。

図3.8 アプリケーションのテクノロジー

3.1.6. ソースレポート

ソースレポートには、移行の問題が検出されたソースファイルのコンテキストで表示されます。

図3.9 ソースレポート

3.2. Technologies レポート

Technologies リンクをクリックして、レポートランディングページからこのレポートにアクセスします。

このレポートは、解析されたアプリケーションに使用されたテクノロジーを機能別にまとめたリストを提供します。これは、テクノロジーがどのように分散されているかを示し、通常は、多数のアプリケーションを分析してアプリケーションをグループ化し、パターンを特定した後にレビューされます。また、各アプリケーションのサイズ、ライブラリー数、およびストーリーポイントの合計も表示されます。

Markup などの任意のヘッダーをクリックすると、結果が降順に並べ替えられます。同じヘッダーを再度選択すると、結果が昇順になります。現在選択されているヘッダーは、並べ替えの方向を示す方向矢印の横に太字で示されます。

図3.10 複数のアプリケーションで使用されるテクノロジー

第4章 MTA パフォーマンスの最適化

MTA のパフォーマンスは、ハードウェア設定、アプリケーション内のファイルの数と種類、評価するアプリケーションのサイズと数、アプリケーションにソースコードとコンパイル済みコードのどちらが含まれているかなど、多くの要因に依存します。たとえば、10 MB を超えるファイルは、処理に時間がかかる場合があります。

一般に、MTA はクラスの逆コンパイルに約 40%、ルールの実行に 40% の時間を費やし、残りの時間は他のタスクの処理とレポートの生成に費やします。本セクションでは、MTA のパフォーマンスを改善するために実行できる内容を説明します。

4.1. アプリケーションのデプロイおよび実行

ハードウェアをアップグレードする前に、これらの提案を試してください。

  • 可能であれば、アーカイブではなくソースコードに対して MTA を実行します。これにより、追加の JAR およびアーカイブをコンパイルする必要がなくなります。
  • 大規模なアプリケーションを分析する際に ulimit を増やします。Red Hat Enterprise Linux でこれを行う方法は、この Red Hat ナレッジアーティクル を参照してください。
  • ラップトップまたはデスクトップマシンよりも優れたリソースを持つサーバーにアクセスできる場合は、そのサーバーで MTA を実行することを検討してください。

4.2. ハードウェアのアップグレード

上記のアプリケーションとコマンドラインの提案がパフォーマンスを改善しない場合は、ハードウェアをアップグレードが必要な場合があります。

  • ラップトップまたはデスクトップよりも優れたリソースを持つサーバーにアクセスできる場合は、そのサーバーで MTA を実行することを検討してください。
  • 逆コンパイルが必要な非常に大規模なアプリケーションには、大容量のメモリーが必要です。8 GB の RAM が推奨されます。これにより、3 ~ 4 GB の RAM が JVM で使用できるようになります。
  • シングルコアまたはデュアルコアからクアッドコアの CPU プロセッサーへのアップグレードにより、パフォーマンスが向上します。
  • ディスク領域と断片化はパフォーマンスに影響を及ぼす可能性があります。高速ディスク、特にソリッドステートドライブ (SSD) で、4 GB を超える最適化されたディスク領域があると、パフォーマンスが向上します。

付録A 参考資料

A.1. MTA コマンドライン引数

以下は、利用可能な MTA コマンドライン引数の詳細な説明です。

注記

スクリプトから実行した場合など、プロンプトを表示せずに MTA コマンドを実行するには、以下の引数を使用する必要があります。

  • --overwrite
  • --input
  • --target

例A.1 MTA CLI 引数

Expand
コマンド説明

--analyze-known-libraries

 

既知のオープンソースライブラリーを分析するフラグ。

--bulk

 

複数の分析コマンドを一括で実行するためのフラグ。これにより、静的なレポートが結合されます。

--context-lines

Integer

各インシデントの出力に追加するソースコードの行数を定義するフラグ (デフォルト: 100)。

-d--dependency-folders

String Array

依存関係のディレクトリーのフラグ。

--enable-default-rulesets

Boolean

分析でデフォルトのルールセットを実行するためのフラグ (デフォルト: true)。

-h--help

 

分析のヘルプを出力するフラグ

--http-proxy

String

Hyper Text Transfer Protocol (HTTP) プロキシー文字列 URL のフラグ

--https-proxy

String

Hypertext Transfer Protocol Secure (HTTPS) プロキシー文字列 URL のフラグ

--incident-selector

String

カスタム変数に基づきインシデントを選択するためのフラグ (例: !package=io.konveyor.demo.config-utils)

-i--input

String

アプリケーションのソースコードまたはバイナリーへのパスのフラグ。詳細は、入力の指定 を参照してください。

--jaeger-endpoint

String

トレースを収集するための jaeger エンドポイントのフラグ。

--json-output

 

分析と依存関係の出力を JSON として作成するためのフラグ。

-l--label-selector

String

指定されたラベルセレクター式に基づきルールを実行するためのフラグ。

--list-providers

 

サポートされている使用可能なプロバイダーをリスト表示するフラグ。

--list-sources

 

使用可能な移行ソースのルールをリスト表示するフラグ。

--list-targets

 

使用可能な移行ターゲットのルールをリスト表示するフラグ。

--maven-settings

string

使用するカスタム Maven 設定ファイルへのパスのフラグ

-m--mode

String

分析モードのフラグ。full (sourcedependencies の場合) または source-only のいずれか (デフォルトは full) である必要があります。

--no-proxy

String

プロキシーを通過させない URL のフラグ (プロキシーにのみ関連)

-o--output

String

分析出力のディレクトリーへのパスのフラグ。詳細は、出力ディレクトリーの指定 を参照してください。

--override-provider-settings

String

プロバイダー設定をオーバーライドするためのフラグ。分析 Pod はホストネットワーク上で実行され、プロバイダーは起動されません。

--overwrite

 

出力ディレクトリーを上書きするためのフラグ。この引数を指定せず、-output ディレクトリーが存在する場合は、内容を上書きするかどうかを選択するように求められます。

--provider

String Array

実行するプロバイダーを指定するためのフラグ。

--rules

String Array

ルールファイルを格納するファイル名またはディレクトリーを指定するためのフラグ。追加のルールがある場合は複数回使用します (例: --rules --rules …)。

--run-local

 

コンテナーを使用せずにローカルシステムで直接分析を実行するためのローカルフラグ (Java および Maven 用)

--skip-static-report

 

静的レポートを生成しないためのフラグ。

-s--source

String Array

分析で考慮するソーステクノロジーのフラグ。追加のソースがある場合は複数回使用します (例: --source --source …)。詳細は、ソーステクノロジーの設定 を参照してください。

-t--target

String Array

分析で考慮するターゲットテクノロジーのフラグ。追加のターゲットがある場合は複数回使用します (例: --target --target …)。詳細は、ターゲットテクノロジーの設定 を参照してください。

A.1.1. 入力の指定

分析する 1 つ以上のアプリケーションを含むファイルまたはディレクトリーへのパスのスペースで区切られたリスト。この引数は必須です。

使用方法

--input <INPUT_ARCHIVE_OR_DIRECTORY> [...]
Copy to Clipboard Toggle word wrap

--input 引数に指定された入力ファイルタイプがファイルであるかディクショナリーであるかに応じて、指定された追加の引数に応じて次のように評価されます。

ディレクトリー
  • --sourceMode: ディレクトリーは単一のアプリケーションとして評価されます。
ファイル
  • --sourceMode: ファイルは圧縮されたプロジェクトとして評価されます。

A.1.2. 出力ディレクトリーの指定

MTA が生成したレポート情報を出力するディレクトリーへのパスを指定します。

使用方法

--output <OUTPUT_REPORT_DIRECTORY>
Copy to Clipboard Toggle word wrap

  • 省略すると、レポートは <INPUT_ARCHIVE_OR_DIRECTORY>.report ディレクトリーに生成されます。
  • 出力ディレクトリーが存在する場合は次の質問が表示され、デフォルトの回答は N になります。

    Overwrite all contents of "/home/username/<OUTPUT_REPORT_DIRECTORY>" (anything already in the directory will be deleted)? [y,N]
    Copy to Clipboard Toggle word wrap

ただし、--overwrite 引数を指定すると、MTA はディレクトリーの削除と再作成を続行します。詳細は、この引数の説明を参照してください。

A.1.3. ソーステクノロジーの設定

移行元の 1 つ以上のソーステクノロジー、サーバー、プラットフォーム、またはフレームワークのスペース区切りのリスト。この引数を --target 引数と組み合わせて使用することで、使用するルールセットを決定できます。--listSourceTechnologies 引数を使用して、利用可能なソースをリスト表示します。

使用方法

--source <SOURCE_1> <SOURCE_2>
Copy to Clipboard Toggle word wrap

--source 引数は、Maven バージョン範囲の構文 に続くバージョンサポートを提供するようになりました。これは、指定されたバージョンに一致するルールセットのみを実行するように MTA に指示します (例: --source eap:5)。

警告

JBoss EAP に移行する場合は、バージョン (例: eap:6) を指定してください。eap のみを指定すると、移行パスに関連しないものを含め、すべてのバージョンの JBoss EAP にルールセットが実行されます。

適切な JBoss EAP バージョンについては、Migration Toolkit for Applications の概要サポートされる移行パス を参照してください。

A.1.4. ターゲットテクノロジーの設定

移行先の 1 つ以上のターゲットテクノロジー、サーバー、プラットフォーム、またはフレームワークのスペース区切りのリスト。この引数を --source 引数と組み合わせて使用することで、使用するルールセットを決定できます。このオプションを指定しないと、ターゲットを選択するように求められます。--listTargetTechnologies 引数を使用して、利用可能なターゲットをリスト表示します。

使用方法

--target <TARGET_1> <TARGET_2>
Copy to Clipboard Toggle word wrap

--target 引数は、Maven バージョン範囲の構文 に続くバージョンサポートを提供するようになりました。これは、指定されたバージョンに一致するルールセットのみを実行するように MTA に指示します (例: --target eap:7)。

A.2. サポート対象のテクノロジータグ

MTA 7.1.1 では、以下のテクノロジータグがサポートされています。

  • 0MQ Client
  • 3scale
  • Acegi Security
  • AcrIS Security
  • ActiveMQ library
  • Airframe
  • Airlift Log Manager
  • AKKA JTA
  • Akka Testkit
  • Amazon SQS Client
  • AMQP Client
  • Anakia
  • AngularFaces
  • ANTLR StringTemplate
  • AOP Alliance
  • Apache Accumulo Client
  • Apache Aries
  • Apache Commons JCS
  • Apache Commons Validator
  • Apache Flume
  • Apache Geronimo
  • Apache Hadoop
  • Apache HBase Client
  • Apache Ignite
  • Apache Karaf
  • Apache Mahout
  • Apache Meecrowave JTA
  • Apache Sirona JTA
  • Apache Synapse
  • Apache Tapestry
  • Apiman
  • Applet
  • Arquillian
  • AspectJ
  • Atomikos JTA
  • Avalon Logkit
  • Axion Driver
  • Axis
  • Axis2
  • BabbageFaces
  • Bean Validation
  • BeanInject
  • Blaze
  • Blitz4j
  • BootsFaces
  • Bouncy Castle
  • ButterFaces
  • Cache API
  • Cactus
  • Camel
  • Camel Messaging Client
  • Camunda
  • Cassandra Client
  • CDI
  • Cfg Engine
  • Chunk Templates
  • Cloudera
  • Coherence
  • Common Annotations
  • Composite Logging
  • Composite Logging JCL
  • Concordion
  • CSS
  • Cucumber
  • Dagger
  • DbUnit
  • Demoiselle JTA
  • Derby Driver
  • Drools
  • DVSL
  • Dynacache
  • EAR Deployment
  • Easy Rules
  • EasyMock
  • Eclipse RCP
  • EclipseLink
  • Ehcache
  • EJB
  • EJB XML
  • Elasticsearch
  • Entity Bean
  • EtlUnit
  • Eureka
  • Everit JTA
  • Evo JTA
  • Feign
  • File system Logging
  • FormLayoutMaker
  • FreeMarker
  • Geronimo JTA
  • GFC Logging
  • GIN
  • GlassFish JTA
  • Google Guice
  • Grails
  • Grapht DI
  • Guava Testing
  • GWT
  • H2 Driver
  • Hamcrest
  • Handlebars
  • HavaRunner
  • Hazelcast
  • Hdiv
  • Hibernate
  • Hibernate Cfg
  • Hibernate Mapping
  • Hibernate OGM
  • HighFaces
  • HornetQ Client
  • HSQLDB Driver
  • HTTP Client
  • HttpUnit
  • ICEfaces
  • Ickenham
  • Ignite JTA
  • Ikasan
  • iLog
  • Infinispan
  • Injekt for Kotlin
  • Iroh
  • Istio
  • Jamon
  • Jasypt
  • Java EE Batch
  • Java EE Batch API
  • Java EE JACC
  • Java EE JAXB
  • Java EE JAXR
  • Java EE JSON-P
  • Java Transaction API
  • JavaFX
  • JavaScript
  • Javax Inject
  • JAX-RS
  • JAX-WS
  • JayWire
  • JBehave
  • JBoss Cache
  • JBoss EJB XML
  • JBoss logging
  • JBoss Transactions
  • JBoss Web XML
  • JBossMQ Client
  • JBPM
  • JCA
  • Jcabi Log
  • JCache
  • JCunit
  • JDBC
  • JDBC datasources
  • JDBC XA datasources
  • Jersey
  • Jetbrick Template
  • Jetty
  • JFreeChart
  • JFunk
  • JGoodies
  • JMock
  • JMockit
  • JMS Connection Factory
  • JMS Queue
  • JMS Topic
  • JMustache
  • JNA
  • JNI
  • JNLP
  • JPA entities
  • JPA Matchers
  • JPA named queries
  • JPA XML
  • JSecurity
  • JSF
  • JSF Page
  • JSilver
  • JSON-B
  • JSP Page
  • JSTL
  • JTA
  • Jukito
  • JUnit
  • Ka DI
  • Keyczar
  • Kibana
  • KLogger
  • Kodein
  • Kotlin Logging
  • KouInject
  • KumuluzEE JTA
  • LevelDB Client
  • Liferay
  • LiferayFaces
  • Lift JTA
  • Log.io
  • Log4J
  • Log4s
  • Logback
  • Logging Utils
  • Logstash
  • Lumberjack
  • Macros
  • Magicgrouplayout
  • Mail
  • Management EJB
  • MapR
  • MckoiSQLDB Driver
  • Memcached
  • Message (MDB)
  • Micro DI
  • Micrometer
  • Microsoft SQL Driver
  • MiGLayout
  • MinLog
  • Mixer
  • Mockito
  • MongoDB Client
  • Monolog
  • Morphia
  • MRules
  • Mule
  • Mule Functional Test Framework
  • MultithreadedTC
  • Mycontainer JTA
  • MyFaces
  • MySQL Driver
  • Narayana Arjuna
  • Needle
  • Neo4j
  • NLOG4J
  • Nuxeo JTA/JCA
  • OACC
  • OAUTH
  • OCPsoft Logging Utils
  • OmniFaces
  • OpenFaces
  • OpenPojo
  • OpenSAML
  • OpenWS
  • OPS4J Pax Logging Service
  • Oracle ADF
  • Oracle DB Driver
  • Oracle Forms
  • Orion EJB XML
  • Orion Web XML
  • Oscache
  • OTR4J
  • OW2 JTA
  • OW2 Log Util
  • OWASP CSRF Guard
  • OWASP ESAPI
  • Peaberry
  • Pega
  • Persistence units
  • Petals EIP
  • PicketBox
  • PicketLink
  • PicoContainer
  • Play
  • Play Test
  • Plexus Container
  • Polyforms DI
  • Portlet
  • PostgreSQL Driver
  • PowerMock
  • PrimeFaces
  • Properties
  • Qpid Client
  • RabbitMQ Client
  • RandomizedTesting Runner
  • Resource Adapter
  • REST Assured
  • Restito
  • RichFaces
  • RMI
  • RocketMQ Client
  • Rythm Template Engine
  • SAML
  • Santuario
  • Scalate
  • Scaldi
  • Scribe
  • Seam
  • Security Realm
  • ServiceMix
  • Servlet
  • ShiftOne
  • Shiro
  • Silk DI
  • SLF4J
  • Snippetory Template Engine
  • SNMP4J
  • Socket handler logging
  • Spark
  • Specsy
  • Spock
  • Spring
  • Spring Batch
  • Spring Boot
  • Spring Boot Actuator
  • Spring Boot Cache
  • Spring Boot Flo
  • Spring Cloud Config
  • Spring Cloud Function
  • Spring Data
  • Spring Data JPA
  • spring DI
  • Spring Integration
  • Spring JMX
  • Spring Messaging Client
  • Spring MVC
  • Spring Properties
  • Spring Scheduled
  • Spring Security
  • Spring Shell
  • Spring Test
  • Spring Transactions
  • Spring Web
  • SQLite Driver
  • SSL
  • Standard Widget Toolkit (SWT)
  • Stateful (SFSB)
  • Stateless (SLSB)
  • Sticky Configured
  • Stripes
  • Struts
  • SubCut
  • Swagger
  • SwarmCache
  • Swing
  • SwitchYard
  • Syringe
  • Talend ESB
  • Teiid
  • TensorFlow
  • Test Interface
  • TestNG
  • Thymeleaf
  • TieFaces
  • tinylog
  • Tomcat
  • Tornado Inject
  • Trimou
  • Trunk JGuard
  • Twirl
  • Twitter Util Logging
  • UberFire
  • Unirest
  • Unitils
  • Vaadin
  • Velocity
  • Vlad
  • Water Template Engine
  • Web Services Metadata
  • Web Session
  • Web XML File
  • WebLogic Web XML
  • Webmacro
  • WebSocket
  • WebSphere EJB
  • WebSphere EJB Ext
  • WebSphere Web XML
  • WebSphere WS Binding
  • WebSphere WS Extension
  • Weka
  • Weld
  • WF Core JTA
  • Wicket
  • Winter
  • WSDL
  • WSO2
  • WSS4J
  • XACML
  • XFire
  • XMLUnit
  • Zbus Client
  • Zipkin

A.3. ルールのストーリーポイントについて

A.3.1. ストーリーポイントとは

ストーリーポイント は、アジャイルソフトウェア開発で一般的に使用される抽象メトリックで、機能や変更を実装するのに必要な 作業量 を予測します。

Migration Toolkit for Applications はストーリーポイントを使用して、特定のアプリケーションコンストラクトとアプリケーション全体を移行するために必要な作業のレベルを表現します。必ずしも工数に変換される訳ではありませんが、この値はタスク全体で一貫性を持たせる必要があります。

A.3.2. ルールにおけるストーリーポイントの見積方法

ルールのストーリーポイントの作業レベルを見積もることは複雑です。以下は、ルールに必要な作業レベルを見積もる際に MTA が使用する一般的なガイドラインです。

Expand
作業レベルStory Points説明

Information

0

移行の優先度が非常に低いか、優先度のない情報警告。

Trivial

1

移行は簡単な変更、または API の変更がないか最小限の変更を伴う単純なライブラリーの交換です。

Complex

3

移行タスクに必要な変更は複雑ですが、解決策が文書化されています。

Redesign

5

移行タスクでは、API が大幅に変更され、再設計または完全なライブラリーの変更が必要になります。

Rearchitecture

7

移行には、コンポーネントまたはサブシステムの完全な再アーカイブが必要です。

Unknown

13

移行ソリューションは不明なため、完全な再書き込みが必要になる場合があります。

A.3.3. タスクカテゴリー

作業量レベルに加えて、移行タスクを分類してタスクの重大度を示すことができます。次のカテゴリーは、移行作業の優先順位を行えるように、問題をグループ化するために使用されます。

Mandatory
移行を成功させるには、タスクを完了する必要があります。変更が行われないと、生成されるアプリケーションはビルドまたは実行に成功しません。たとえば、ターゲットプラットフォームでサポートされないプロプライエタリー API の置き換え例が含まれます。
Optional
移行タスクが完了しない場合、アプリケーションは動作しますが、結果が最適になるとは限りません。移行時に変更が行われない場合は、移行の完了後すぐにスケジュールに配置することが推奨されます。
Potential
移行プロセス中にタスクを調べる必要があります。しかし、移行を成功させるためにタスクが必須かどうかを判断するのに十分な詳細情報がありません。これの例は、直接互換性のあるタイプがないサードパーティーのプロプライエタリータイプの移行です。
Information
タスクは、特定のファイルの存在を通知するために含まれています。これらは、モダナイゼーション作業の一部として検証または変更する必要がある場合がありますが、通常は変更は必要ありません。

タスクの分類に関する詳細は、カスタムルールカテゴリーの使用 を参照してください。

A.4. 関連情報

A.4.1. プロジェクトへの貢献

Migration Toolkit for Applications がほとんどのアプリケーション設定とサーバー設定 (お客様のものを含む) に対応できるように、次の項目にご協力をお願いします。

  • jboss-migration-feedback@redhat.com にメールを送信し、MTA 移行ルールが対象とする必要がある内容を知らせる。
  • 移行ルールをテストするためのアプリケーションの例を指定する。
  • 移行が困難なアプリケーションコンポーネントおよび問題の領域を特定する。

    • 問題がある移行領域について簡単な説明を記入する。
    • 移行領域の問題を解決する方法の簡単な説明を記入する。
  • アプリケーションで Migration Toolkit for Applications を試行する。問題が発生した場合は必ず報告してください。
  • Migration Toolkit for Applications ルールリポジトリーに貢献する。

    • Migration Toolkit for Applications ルールを記述して、移行プロセスを識別または自動化する。
    • 新規ルールのテストを作成します。

    詳細は、ルール開発ガイド を参照してください。

  • プロジェクトのソースコードに貢献する。

    • コアルールを作成する。
    • MTA のパフォーマンスまたは効率が向上する。

どのレベルの参加でも大歓迎です。

A.4.3. 問題の報告

MTA は Jira を問題追跡システムとして使用します。MTA の実行で問題が発生した場合は、Jira issue を作成してください。


改訂日時: 2025-01-01

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat