Red Hat のソリューションアーキテクトの瀬戸です。
これはJakarta EE / Java EE - Qiita Advent Calendar 2025 - Qiita の21日目の記事です。
Jakarta EE / Java EE - Qiita Advent Calendar 2025 - Qiita の14日目の記事で Jakarta変換に使われるツールの比較 #Java - Qiitaという記事を書いていただき、その中でRed Hatも開発しているKonveyorについても軽く紹介していただきました。
今回は、そのKonveyorにAI対応の機能を追加するKonveyor AIの機能がRed Hat側での検証が終わり、Developer Lightspeed for Migration Toolkit for Applicationsとして最近GAしたので紹介します。
Migration Toolkit for Applications(MTA)とは
Migration Toolkit for Applications(MTA)はアプリケーションのクラウド移行を手助けするためのツールで、以前から何回か紹介してきました。その中にはどれくらいアプリケーションのクラウドへの移行の準備ができているか、アプリケーションが変更しやすいようになっているかをアセスメントする機能や、アプリケーションを移行するときにどういった修正が必要になるかを静的解析で見つける機能があります。
どのような事が出来るかの詳細については次の記事を見てください。
rheb.hatenablog.com rheb.hatenablog.com rheb.hatenablog.com
※古い記事の場合、使われているコマンドの互換性がない場合があるのでご注意ください。
Developer Lightspeed for Migration Toolkit for Applications(Developer Lightspeed for MTA)とは
MTAは静的解析を行い、アプリケーションにどのような修正が必要なのかを見つけ出してくれますが、見つけ出し、直し方のガイダンスを出すだけでした。 そのため、実際の修正については最初に紹介した Jakarta変換に使われるツールの比較 でも紹介されているような変換ツールを使う必要があり、変換ツールが対応していない場合は、ガイダンスを読みながら実際の修正内容を考える必要がありました。
今回、Developer Lightspeed for MTAはその修正をAIに任せてしまおうというVSCode用のプラグインとなります。
他のAIツールとは何が違うの?
と、単純に変更をAIに任せようとなると他のAIツールでも出来るんじゃないか?と思われる方も多いかもしれません。Developer Lightspeed for MTAの強力な部分は、MTAと連携して修正するところにあります。
AIはコンテキストが狭まるほどに性能が上がるという事はご存知でしょうか?
例えば、
SpringをQuarkusに変更してください。
よりも、
SpringをQuarkusに変換するために、アノテーションを@Autowiredから@Injectに変更してください。その他に・・・・
の方が、AIは修正を間違えにくくなります。MTAが修正する必要がある箇所を見つけ出してくれ、それをAIに修正指示として伝えてくれるため、AIは間違えにくくなります。
また、クラウドの特定のAIでないと動作しないという事はなく、LLMモデルについては自由に選択でき、ローカルで動作しているものでも使用ができます。ですので、AIを使ってみたら思ったよりも課金されたぞ?みたいなことを防ぐことができます。
ただし、正確性などはAIの性能に依存する点はご注意ください。
実際に使ってみる
ということで、実際に使ってみたいと思います。
注意: AI APIサービスへのアクセスが必要になります。OpenAIなどへのアクセス権を持っている事や、ローカルでAIサービスが立ち上がっている必要があります。必要に応じてPodman AI Labなどを使用してください。
注意: 解析に使用するソースコードも必要です。この記事では、 GitHub - ssetoredhat/mtr-example-eap7.4to8.0 を使用しています。
インストール
Developer Lightspeed for MTAはVSCode用のMTAプラグインの一部として提供されています。次のページからインストールしてください。プラグインの一覧から検索することもできます。
VSCodeのプラグインの一覧から検索してインストールすることもできます。

Language Support for Java(TM) by Red Hatプラグインのインストールおよび過去バージョンへの戻し
MTAプラグインの中ではJavaプラグインに依存していますが、現時点(8.0.2)では、Javaプラグインの最新バージョンに対応していないため、バージョンを戻す必要があります。
プラグインの検索画面から「redhatjava」と入力し、出てきたプラグインを選択①し、 「Uninstall」の横の下矢印を選択して出てきた「Install Specific Version」を選択します。

バージョン一覧が出てくるので、1.45.0を選択します。

設定
インストールすると右側にMTAのボタンが出てきます。それ①をクリックして、開いた本のようなアイコン②をクリックすると、MTAの初期画面が表示されます。
この時点ではまだ使用する事が出来ません。追加で設定を行います。

右上の歯車を押します。

右側に設定すべき項目が出てくるので、「Configure GenAI Settings」を押します。

AIのAPIとつなぐための設定を行う画面が開きます。OpenAIやAzure/AWS・・・多くのAIにつなぐためのサンプル設定が載っているので、それに合わせて設定します。

参考までにローカルのAIと接続した場合の設定を載せておきます。OpenAI互換のAPIとみなされるため、OPENAIの設定を基に設定し、OPENAI_API_KEYを空のままにしています。
models: local_LLM: &active environment: OPENAI_API_KEY: "" # Required provider: ChatOpenAI args: model: "Granite-4.0-Micro" configuration: baseURL: "http://localhost:65151/v1"
ファイルを保存すると反映されます。
&active を付けたものが有効になるので動かない場合は確認してください。
ここの設定の詳細についてはドキュメントを参照してください。
引き続き、「Edit in Profile Mnager」を押します。

ここでは、最初に+New Profileを押し①、Target Technologiesに移行したいテクノロジーを入れます②。
移行したいテクノロジーは他にJava EEからJakarta EE(JBoss EAP7-> JBoss EAP8)の場合にはeap8なども選ぶことができます。必要に応じて他の物を選択してください。
この画面では、保存の操作は必要なく、画面を閉じるだけで保存されています。

実行
ここまで来たらきっと次のような画面が表示されています。そうしたらうまく動作します。
Start①を押し、Run Analysis②を実行します。


解析が終わると、次の画面のように、どのような修正をすればいいのかの一覧を出してくれます。これは、今までのMTAの解析結果と同じものです。

右側の「>」をクリックすることで詳細な修正に必要な内容を開くことができます。
また、右側にAIと書かれたスパナを見つけることができるはずです。そちらをクリックすることでAIに修正をそのまま丸投げすることができます。

さて、実際に押してみましょう!
※貼り付けられるファイルサイズの都合上、とても見ずらい

最後にはアップデートされたファイルが表示されるので、それをAcceptするだけで修正完了です。

MTA本体やEclipse-Transformerなどには変換ツールが付いていますが、ある程度の単純な文字列の置換程度が限界でした。しかし、Developer Lightspeed for MTAではAIを使う事で今までより柔軟な修正が可能になりました。
単純にAIを使うよりは、MTAによる静的解析をコンテキストとしてAIに渡しているため、修正内容が安定しやすいというのが特徴です。ただ、「ここを修正してください」というコンテキストのみを渡しています。それに加えて、「こう直すべきだ!」というコンテキストをAIに渡せるように開発されているソフトウェアがあり、Solution Serverと呼ばれています。Solution Serverについての詳細は次の動画を参照してください。(英語です)
Solution Serverは今回は設定していませんが、Solution Serverもテクニカルプレビューとしてリリースされています。使ってみたい人は次のドキュメントを参照して設定してみてください。
RHSC 2025のワークショップでは、このSolution Serverが設定されている状態でワークショップを行いました。
また、このツールで正しく修正できるかどうかについてはAIの質に依存します。必要に応じて、性能の良いAIへ切り替えるようお願いします。