AWSは最近、Amazon Q Code Transformationのプレビューを発表した。このサービスは、生成的な人工知能によって既存のJavaアプリケーションコードのアップグレードプロセスを簡素化するように設計されている。この新機能は、レガシーコードを最小限に抑え、古い言語バージョンからの移行に必要な一般的な言語アップグレードタスクを自動化することを目的としている。
現在、Code Transformationは、Mavenで構築されたJava 8および11アプリケーションのJava 17へのアップグレードをサポートしている。クラウド・プロバイダーによると、Windowsベースの.NET Frameworkアプリケーションのクロスプラットフォーム.NETへのアップグレードを近々サポートし、Linuxへの移行を加速するという。
新サービスを使ったエンド・ツー・エンドのアプリケーションのアップグレードには、既存コードの分析、変換計画の作成、計画が提案する変換タスクの完了という3つのステップが必要だ。AWSのチーフ・エバンジェリスト(EMEA)であるDanilo Poccia氏は、次のように説明している。
Amazon Q Code Transformationは、パッケージの依存関係を特定して更新し、非推奨のコードコンポーネントをリファクタリングして、新しい言語フレームワークに切り替え、セキュリティのベストプラクティスを取り入れることができる。完了したら、変更を受け入れる前に、構築とテストの結果とともに、変換されたコードをレビューできる。
Code Transformationは、IDEの構成に基づいてコードのバージョンを決定し、Mavenセントラル・リポジトリ・サーバーで利用可能な依存関係を使用するが、カスタムの依存関係はアプリケーションコードとともにローカルマシンからコピーされる。Amazonの副社長兼著名エンジニアである、Matthew Wilson氏は次のように書いている。
Amazon Q Code TransformationはOpenRewriteを使い、顧客のJavaアップグレードを高速化する (...) OpenRewriteを使用した我々の社内実験は非常に良好だったが、アプリケーションを完全に構築するために追加の反復デバッグが必要な状況がある。AIによる反復的なデバッグは、Amazon Q Code Transformationに期待を抱かせてくれる。
OpenRewriteは、言語のアップグレード、フレームワークのアップグレード、依存関係の移行、セキュリティパッチの適用、カスタム変換するためのJavaやその他のソースコードのためのApache2ライセンスによるリファクタリング・エコシステムである。Poccia氏はこう付け加える。
Amazon社内の5人のチームが、2日間で1000の本番アプリケーションをJava 8から17にアップグレードすることに成功した。アプリケーションのアップグレードにかかった時間は平均10分で、もっとも長いものでも1時間もかからなかった。
OpenRewrite でサービスを構築しているのは Amazon だけではない。オープンソースソフトウェア自動リファクタリングツールの発明者である Jonathan Schneider氏によって設立されたModerneは、大規模なコードベースにOpenRewriteのレシピを配布するSaaSサービスを提供している。
.NETサポートのスケジュールは未定だが、Wilson氏は次のように付け加えている。
顧客が.NETアプリケーションを最新化し、Linux上のオープンソース.NET上で動作するように移行するのを支援することも、複数年にわたる投資が行われてきた。Amazon Q Code Transformationが、.NETの顧客にとってどのように最新化をさらに容易にするか、楽しみにしている。
プレビュー期間中にCode Transformationを使用するための追加費用はないが、AWS Toolkit for IntelliJ IDEAまたはAWS Toolkit for Visual Studio CodeのCodeWhisperer Professional Tier(月額19ドル/ユーザー)が必要だ。