概要
AWS Machine Learning Blogによると、PHPで書かれた長年のアプリケーションをJavaへ安全に移行するためのAI駆動型エンジン「Kiro」が発表されました。
Kiroは、AIエージェントと人間が協力しながら、多段階のエンジニアリング作業を確実に進めるための統合開発環境(IDE)です。
元のPHPアプリケーションを厳密な仕様として扱い、テストによって動作の一致を検証しながらSpring Boot(スプリングブート:Javaの代表的なWeb開発フレームワーク)へ移行できます。
何が発表された?
今回の発表では、PHPからJavaへの移行を「一か八かの賭け」から、計測可能で繰り返し実行できるプロセスに変えるためのフレームワークが公開されました。
移行作業はKiroを用いたインタラクティブな開発者参加型と、AWS Transform(AWSの大規模移行向けエージェント型AIサービス)を用いたポートフォリオ規模の自動実行という、2つの方法で同じスキルファイルを使って行えます。
前提条件や動作に必要な環境は以下の通りです。
- PHPの基礎知識(Laravel/EloquentやSymfony/Doctrine)
- Javaの基礎知識(Spring BootやJPA:Javaでデータベースを扱う仕組み)
- スキャナーを実行するためのPHP 8.0以降
- 生成されたSpring Bootプロジェクトを実行するためのJava 21とMaven(メイヴン:Javaのビルドツール)
前と何が違う?
ソースコードを実行せずに読み取るスキャナー
Kiroの移行エンジンでは、コードを実行せずに安全に構造を読み取る「discover-models.php」という独立したコマンドラインツールが用意されています。
このツールは、ソーステキストをトークンとして読み取り、以下の3つの戦略を適用して、単一のJSONマニフェスト(設定ファイル)を出力します。
- Eloquentモデル
- Doctrine属性
- ORM XMLマッピング
あいまいな箇所がある場合は、推測で勝手に補完せず、人間が確認するためのレビューフラグのキューに残す仕組みになっています。
8つのフェーズで進める検証ファーストのパイプライン
移行作業は、人間が専門知識を注ぎ込む準備フェーズ(フェーズ0〜3)と、AIが中心となって進める自律的なループ(フェーズ4〜8)に分かれています。
フェーズ1ではJavaコードを書く前にリクエストとレスポンスを比較する「パリティハーネス(判定のためのテスト仕組み)」を構築します。動くPHPと照らし合わせて動作の等価性を担保します。
フェーズ4でプロジェクトの土台を作ります。フェーズ5から8にかけてデータモデルや入出力層、ビジネスロジックを段階的に変換していきます。
移行ルールの改善を蓄積する仕組み
ループの中で問題が見つかったときは、場当たり的にコードを直接直すことはしません。「ルールブック」側を修正して再度コードを生成し直すというアプローチをとります。
これにより、一度解決したルール変更が次の移行作業や別のプロジェクトにも引き継がれるようになります。
数字で見るとどう変わった?
解説の中で示されたlaravel-eloquent-sampleのサンプルプロジェクトでは、全体で37個あるモデルのうち以下のモデルが移行されました。
- 4個のモデルがSpring Boot 3.4.1へ移行
- Java 21を使用
- Mavenを使用
- インメモリH2データベースを使用
元記事では、この特定のサンプルスライスにおいてはパリティハーネスがまだ構築されていない点が「最大のギャップ」として率直にドキュメント化されています。
その他の具体的なパフォーマンス数値や比較データについては、元記事内では言及されていません。
ライバルと比べてどう?
今回の発表は特定の単一AIモデルの性能比較ではありません。大規模なレガシーコードの移行プロセス全体をAIエージェントと人間が共同でコントロールする「仕組み」に焦点を当てています。
OpenAIやGoogleなどの汎用AIモデルはチャット形式でコードの一部を書き換えるアプローチをとります。これに対し、AWSはKiroとAWS Transformという専用のエージェントサービスを連携させています。検証ハーネスやスキルファイルを軸にした体系的な移行エンジンとして提供している点が大きな違いです。
料金は?
移行エンジンのリポジトリやスキルファイル自体の利用料金について、公式ブログ内では言及されていません。
AWS TransformやKiroの利用にかかる具体的な価格設定については、AWSの通常のサービス料金体系に準拠するものとみられます。
日本で使える?
日本国内からの利用については、Kiroのワークスペース環境やAWSのサービスが利用可能な地域であれば、今日からすぐに試すことができます。
今日から試すための具体的な手順は以下の通りです。
- サンプルPHP-to-Java移行リポジトリをローカル環境にクローンする
- Kiroを開き、
.kiro/フォルダを含むリポジトリのルートフォルダを選択する
- プロジェクトの
source-php/フォルダに移行対象のPHPソースコードを配置する
- Kiroにアプリケーションの移行を依頼し、
php-to-java-migrationスキルを自動で有効化する
自分にはどう関係する?
エンジニアなら
LaravelやSymfonyなどのPHP製アプリケーションをSpring Bootへ移行する際の定型作業を大幅に減らせます。検証済みの安全なJavaコードを手に入れることができます。
企画・マーケティングなら
長年放置されがちだったレガシーシステムの現代化(モダナイゼーション)を予測可能なスケジュールとコストで進められます。そのため、新機能の投入スピードを高める基盤づくりにつながります。
経営者・管理者なら
属人化しがちなPHPからJavaへのシステム移行を、属人性の低い「計測可能なプロセス」としてチーム全体で進められるようになります。技術負債の解消を計画的に進められます。
まとめ
Kiroを使った移行エンジンは、コードをその場しのぎで書き換えるものではありません。共有されたスキルファイルと検証ハーネスを通じて再現性のあるプロセスを提供します。
まずはサンプルリポジトリをクローンし、Kiroのワークスペースで実際の移行フローを動かしてみることから始めてみましょう。