Konveyor AI(Kai)がもたらす実現可能なアプリケーションモダナイゼーション

Konveyor AIとはなにか

Konveyor AI(通称:Kai)は、レガシーソフトウェアをKubernetesのようなクラウドネイティブ環境向け、もしくは古いライブラリやミドルウェアに依存しているシステムを最新版にモダナイズするという複雑なプロセスに生成AIを統合する、先進的なオープンソースツールです。どのようにアプリケーションを変更したいのかを認識したコード提案を生成することで開発者を支援し、それによってコード修正を加速し、手作業による労力を削減することができます。

このツールは、Cloud Native Computing Foundation (CNCF) のサンドボックスプロジェクトであるKonveyorの一部として開発されています。静的コード解析によって得られる修正箇所の指摘と大規模言語モデル(LLM)の生成能力を組み合わせることで、アプリケーションモダナイゼーションの経済性を根本的に変えることを目指しています。特定のLLMに依存せず、組織独自の開発パターンを学習する能力を持つ、大規模なエンタープライズアプリケーションの修正のための強力なツールであるとともに、AIの使い方の良いサンプルでもあります。

企業が抱える古いアプリケーション

多くの企業では古いアプリケーションを多数抱えています。例えばJava SE 8はリリースされてから10年以上経っていますが、いまだに多くの企業では使用されています。それ以前のJavaが使われている場合もあります。多くのシステムではサポートが行われないまま使用されており、多くの脆弱性が見逃されています。安全に使い続けるためにはライブラリの最新化が必要になります。今動いているシステムでどれくらいの脆弱性が含まれているかを調べる方法については次の記事を参照してください。

rheb.hatenablog.com

ただ、脆弱性が含まれていることがわかったとしても、実際にアプリケーションのライブラリの最新化を行うためには多大な労力がかかります。なので、行いたいとは思っても、実際には行われてきませんでした。しかし、それを手助けすることができるプロジェクトが存在します。それがKonveyorです。

Konveyor

Konveyorプロジェクトは、組織がオープンハイブリッドクラウド向けにアプリケーションをモダナイズするのを支援することを目的として、Red HatとIBM Researchによって立ち上げられました 。安全かつ予測可能な方法で大規模なモダナイゼーションを実現するためのツールを提供することにより、Kubernetesの採用を加速することを目標としています。 2022年7月26日にCNCFのサンドボックスプロジェクトとして承認されました。ここで開発されたアプリケーションは多くの組織で使われているのとともに、Red HatでもMigration Toolkit for Applicationsという名前で製品化されています。

Migration Toolkit for Applications が何かを知りたい人は次の記事を参照してください。

rheb.hatenablog.com

Konveyorの課題とKonveyor AI

Konveyorで組織のアプリケーションの移行を促進するための情報の整理や、実際に移行を行うときにどのような修正を行う必要があるかの検出を行うことができました。その中で、実際に移行を行うときにどのような修正を行う必要があるのか、修正箇所の指摘はしてくれるものの、実際にどのような修正を行うべきかについてはわかりにくい場合がありました。

それに対して、AIを使って解決しようという取り組みがKonveyor AIです。

GitHubにあるKonveyor AIのリポジトリで公開されている動画を見てみましょう。

ここではJakarta EEで使用されているEJBをMigration Toolkit for Applicationsで指摘されたメッセージを元に自動的にREST APIに変更しています。*1

EJBからREST APIへの変更

必要に応じて動画を止めてもらいながら、自分だとどうやって修正するかを考えてみてください。これらの修正提案をAIを活用して自動的に行なってくれるというのがKonveyor AIの機能です。

Konveyor AIとRAG

Konveyor AIではRAGという手法が使用されています。RAGはAI(LLM)に外部データからの検索機能を組み合わせることで信頼性の高い、最新の情報に基づいた回答を生成する技術です。

Konveyor AIはRAGの考え方を採用し、今までに行われた修正内容をDBとして構築し、そこに問い合わせを行うことで高品質な修正案を生成してくれます。AIを使ったコード修正は今までも行うことができましたが、どうしてもJavaに存在しないAPIをいつの間にか呼び出してしまうとか、コンパイルが通らない、もしくは全くでたらめな修正案が出てくることがありました。それらの精度を高めるために採用された手法となります。

Konveyor AIの利点・差別化要素

Konveyor AIの素晴らしいところは修正内容をDBとして保持することにあります。通常、組織内では多くのシステムが構築されています。その中には社外には公開されていない社内向けライブラリが含まれており、それらの移行方法はオープンなAIの多くは知っていません。そのため修正案を提供する事はできません。できたとしてもでたらめな場合が多数となります。 Konveyor AIではDBを持っているため、一度修正方法が決まったものについてはDBから過去の修正方法を元に修正案を提供することができます。最初に修正方法を人間が決める必要はありますが。既存のAIに比べての差別化要素となります。また、組織内でのRAGを使用したナレッジ収集の方法としての一つのサンプルともなるでしょう。

また、RAGを使用することで、AI部分はなんでもいいということも挙げられます。将来的により良い性能のAIが出てきた場合にはすぐに新しいAIに乗り換えることもできます。毎月のようにAIの性能が向上している現状では、特に優れた点となるでしょう。

Konveyor AIの課題

Konveyor AIではいまだ進行中の課題もあります。大きなものとしては複数のファイルにまたがって伝搬する変更(例えば、メソッド名の変更)を行うことができないことです。現時点ではファイル単位の変更に焦点が当てられていますが、今後はリポジトリ単位での整合性を保った修正が行えるように研究がされています。

さて、試そう!

10月8日に行われるRed Hat Summit: Connect 2025 TokyoではKonveyor AIを使ったワークショップを行う予定です。 この先進的なツールを体験してみたい方はぜひご参加ください。

生成AIでアプリケーションのコンテナ移行を加速Konveyor AI体験型Workshop

*1:Jakarta EEからQuarkusへの移行を行っています。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。