Amazon Web Services ブログ

AWS Transform custom: AI 駆動 Java モダナイゼーションで技術的負債を削減

本記事は 2026 年 2 月 4 日に公開された Venugopalan Vasudevan、Dinesh Balaaji Prabakaran、Sureshkumar Natarajan、Anjan Dave による “AWS Transform custom: AI-driven Java modernization to reduce tech debt” を翻訳したものです。

今日の急速に進化するソフトウェア環境において、Java アプリケーションの保守とモダナイゼーションは、多くの組織が直面する重要な課題です。新しい Java バージョンがリリースされ、ベストプラクティスが進化するにつれて、効率的なコード変換の必要性がますます重要になっています。今日の組織は、Java アプリケーションをモダナイズする際に大きな課題に直面しています。レガシーコードベースには、パフォーマンスと保守性を妨げる古いパターン、非推奨の API、非効率な実装が含まれていることがよくあります。従来の手動リファクタリングアプローチは時間がかかり、エラーが発生しやすく、大規模なコードベース全体に拡張することが困難です。さらに、開発者が新規開発とデプロイにより多くの時間を費やすにつれて、技術的負債の量は増え続け、レガシーコードの大規模な変換が必要になります。

AWS Transform custom は、インテリジェントな自動化を通じてこれらの課題に対処し、Java バージョンアップグレードなどの一般的なシナリオ向けの標準化された変換パッケージである AWS マネージド変換 (AWS-Managed Transformation) を提供します。これらの変換により、チームは大規模に実行できる標準化されテスト済みの変換パターンを通じて迅速な成果を達成でき、お客様に大幅な時間とコストの削減をもたらします。さらに、お客様はカスタムユーザー定義のカスタム変換を作成して、言語、フレームワークなどにわたるコード変換で技術的負債に対処できます。

この記事では、Java アップグレード用の AWS Transform custom のすぐに使える変換を活用する方法について説明します。この記事の最後までに、変換プロセスを完全に制御しながら、これらの標準化された変換を使用して Java アプリケーションを効率的にモダナイズする方法を理解できるようになります。

AWS Transform custom の紹介

AWS Transform custom は、エージェント型 AI を使用して大規模なコードモダナイゼーションを自動化し、プログラミング言語のバージョンアップグレード、API の移行、フレームワークの更新、組織固有の変換を処理します。継続的な学習を通じて、エージェントは各実行と開発者からのフィードバックから改善を重ね、専門的な自動化技術が不要な高品質で再現性のある変換を実現します。

前提条件

AWS Transform custom で Java モダナイゼーションの旅を始める前に、必要な開発環境、ビルドツール、AWS Transform custom コマンドラインインターフェイス (CLI) がインストールされていることを確認してください。詳細な前提条件とセットアップ手順については、AWS Transform custom 利用の前提条件を参照してください。

モダナイゼーションシナリオの理解

Movie Service アプリケーションを使用して AWS Transform custom を実演します。これは、Gradle を使用した Java 8 上に構築された Spring Boot REST API です。これは、レガシーな依存関係、古いパターン、技術的負債を伴う典型的なエンタープライズモダナイゼーションの課題を表しています。

AWS マネージド変換 (AWS-Managed Transformation) の活用

AWS Transform custom は、Java バージョンアップグレードなどの一般的なモダナイゼーションタスク向けに設計された AWS マネージド変換 (AWS-Managed Transformation) の活用に焦点を当てています。

AWS マネージド変換 (AWS-Managed Transformation) は、追加のセットアップなしですぐに使用できる、一般的なユースケース向けの事前構築された AWS 検証済みの変換です。これらの変換は、最小限の設定で即座に価値を提供し、標準的なアップグレードシナリオに最適です。

AWS Transform custom CLI 機能の理解

AWS Transform custom は、インタラクティブと自動化の両方の変換ワークフローを可能にする包括的なコマンドラインインターフェイスを提供します。

atx --version                    # ATX のバージョンを表示
atx --help                       # 一般的なヘルプを表示
atx custom def list              # 変換パッケージの一覧
atx                              # インタラクティブな会話の開始

利用可能なすべてのコマンドの詳細については、AWS Transform custom コマンドリファレンスを参照してください。

Screenshot of AWS Transform custom interactive mode.
図 1: AWS Transform custom インタラクティブモード

利用可能な変換の検出

atx custom def list を使用して、AWS マネージド変換 (AWS-Managed Transformation) と組織によって作成されたカスタム定義(ユーザー定義)変換を含む、利用可能なすべての変換を表示します。主要な AWS マネージド変換 (AWS-Managed Transformation) には、Java/Python/Node.js バージョンアップグレードと AWS SDK 移行が含まれます。

Screenshot of AWS Transform interface displaying categorized lists of AWS Managed transformations and user-defined custom
transformations.
図 2: AWS Transform custom は利用可能な AWS マネージド変換 (AWS-Managed Transformation) とカスタム定義(ユーザー定義)変換をリスト表示

AWS マネージド変換 (AWS-Managed Transformation) の適用

変換を適用する前に、プロジェクトが Git で初期化されており、すべてのビルドとテストケースが Java 8 で正しく動作していることを確認してください(必要に応じて、適切なビルドコマンドオプションとエージェントへの指示を使用してテストケースをスキップできます)。Gradle プロジェクトの場合、./gradlew build が正常に実行されることを確認してください。

変換プロセスは構造化されたアプローチに従います。

  1. クリーンな Git 状態の確保:
git status
git add .
git commit -m "Baseline before Java 21 transformation"
  1. 変換の適用: インタラクティブモードまたはダイレクトコマンドモードのいずれかを使用して変換を適用できます。このブログでは、プロセスをステップバイステップで説明するためにインタラクティブモードを使用します。

インタラクティブモード(このブログで使用):

まず、変換設定を含む config.json ファイルを作成します。

{
  "codeRepositoryPath": "/path/to/your/aws-appconfig-java-sample-gradle",
  "transformationName": "AWS/java-version-upgrade",
  "buildCommand": "./gradlew clean build",
  "validationCommands": "build and validate using \"./gradlew clean build\" after transformation to test with java 21",
  "additionalPlanContext": "This is a Java 8 to 21 transformation of a gradle app , also include all dependency migration as well. Use java path /path/to/your/java-8/bin/java and /path/to/your/java-21/bin/java when building before and after transformation. We are using gradle wrapper gradlew, update it if needed for java 21 upgrade. Check for deprecated methods and dependencies and update them."
}

config.json の codeRepositoryPath をローカルプロジェクトディレクトリを指すように更新し、additionalPlanContext の Java パスを Java 8 と 21 のインストールに合わせて更新します。設定ファイルとそのパラメータの詳細については、設定ファイルの使用を参照してください。

次に、インタラクティブモードで変換を実行します(このブログのウォークスルーで使用)。

For Java version upgrade with Gradle using config.json (Interactive Mode):
atx custom def exec -t --configuration file://config.json

Screenshot of AWS Transform interface displaying categorized lists of AWS Managed transformations and user-defined custom transformations.
図 3: AWS Transform custom は config.json から提供された変換設定を使用してインタラクティブモードで gradle 変換を実行

ダイレクトコマンドモード(代替アプローチ): 自動化された CI/CD パイプラインや、インタラクティブなプロンプトなしで変換を実行したい場合は、このモードを使用します。

atx custom def exec -x -t --configuration "file://config.json"

パラメータの説明:

--configuration: インタラクティブモード用の設定ファイルを指定

-x: インタラクティブなプロンプトなしで変換を自動的に実行(ダイレクトモード)

-t: 実行中の検証のためのテストモードを有効化(ダイレクトモード)

--configuration: file:// プレフィックス付きの設定ファイルパスを指定(ダイレクトモード)

ATX 実行コマンド ATX CLI を使用した Gradle プロジェクト用の AWS マネージド Java バージョンアップグレード変換の実行

  1. 変換計画のレビュー: AWS Transform custom は、config.json で提供された設定に基づいてプロジェクトを分析し、包括的な変換計画を生成します。この計画には、以下を含むすべての提案された変更が詳細に記載されています。
  • Java バージョンの更新: Java 8 から Java 21 設定への移行
  • API 移行パターン: 非推奨 API と最新の代替手段の自動更新
  • フレームワークのモダナイゼーション: Spring Boot バージョンアップグレードと互換性の更新
  • 依存関係の変更: Java 21 と互換性のある更新されたライブラリバージョン
  • ビルドシステムの更新: Java 21 互換性のための Gradle 設定とプラグインの変更
  • コードパターンの改善: 最新の Java 機能とベストプラクティスの実装

変換計画が予想されるすべての更新を網羅していることを確認するために、徹底的なレビューを行うことをお勧めします。config.jsonadditionalPlanContext は、依存関係の移行と Gradle ラッパーの更新を含めるように変換をガイドするのに役立ちます。調整が必要な場合は、CLI インターフェイスを通じてフィードバックを提供してください。

さらに、プロジェクトに含まれる追加のレガシー依存関係のアップグレードなど、追加の変更をターゲットにするために変換をカスタマイズしたい場合は、変換計画をレビューする際にフィードバックとして提供できます。AWS Transform custom は、続行する前に変換計画を改善するために提供されたすべてのフィードバックを組み込みます。

  1. 変換の適用: 変換計画が要件を満たしていることを確認したら、proceed と入力して Enter キーを押します。AWS Transform custom は、承認された計画に従って変換を実行します。

変換プロセスは自動的に:

– 新しいブランチを作成し、変換された変更をそこにコミット

– Java 21 用の Gradle 設定を更新

– Java EE から Jakarta EE パッケージへの移行(該当する場合)

– Java 21 互換性のためのフレームワーク依存関係を更新

– 必要なすべてのコード変更を適用

– Java 21 互換性のためのテストケースとテストフレームワークを更新

– 包括的な検証ビルドを実行

AWS マネージド変換 (AWS-Managed Transformation) の結果

Java バージョンアップグレード変換を適用した後、以下の変更が観察されます。

設定の更新:

– Java バージョン: 8 → 21

– Spring Boot バージョンアップグレード

– Gradle プラグインと設定の更新

– 依存関係バージョンのモダナイゼーション

変更を検証するには、Java 21 に切り替えて ./gradlew build を実行し、変換が成功したことを確認してから、アプリケーション機能をテストします。

Figure 4: displaying Updated Gradle Configuration Gradle build.gradle showing updated Java 21 configuration and modernized
dependencies
図 4: 更新された Gradle 設定 – 更新された Java 21 設定とモダナイズされた依存関係を示す Gradle build.gradle

Figure 5: Updated code where legacy pattern of raw types usage is transformed to generics
図 5: raw 型の使用というレガシーパターンがジェネリクスに変換された更新されたコード

Figure 6: Second example of updated code where legacy pattern of raw types usage is transformed to generics
図 6: raw 型の使用というレガシーパターンがジェネリクスに変換された更新されたコードの 2 番目の例

Figure 7: Updated dependency from javax.security to java.security and uses CertificateFactory to get X509Certificate
図 7: javax.security から java.security への依存関係の更新と CertificateFactory を使用した X509Certificate の取得

Figure 8: Updated Test cases from junit 4 to junit5
図 8: junit 4 から junit5 への更新されたテストケース

AWS マネージド変換 (AWS-Managed Transformation) を超えて: カスタム定義変換

AWS マネージド変換 (AWS-Managed Transformation) は標準的な Java モダナイゼーションシナリオに対して優れたカバレッジを提供しますが、利用可能な AWS マネージド変換 (AWS-Managed Transformation) が特定の変換要件に対応していない場合があります。このような状況では、AWS Transform custom により、ユーザーは独自の組織固有のカスタム定義変換を作成およびテストできます。

カスタム定義変換を作成するタイミング

カスタム定義変換は、独自のフレームワーク、組織固有のコーディング標準、複雑な複数ステップの移行シナリオなど、AWS マネージド変換 (AWS-Managed Transformation) が特定のニーズをカバーしていない場合に必要になります。

カスタム定義変換の作成

AWS Transform custom により、チームは変換ルールと設定ファイルを使用してカスタム変換を開発できます。これにより、組織は要件に固有の変換ロジックを定義し、サンプルコードでテストし、検証済みの変換をチーム間で共有できます。

AWS Transform custom のインタラクティブモード(atx)は、カスタム定義変換の作成に特に有益であり、会話型のインタラクションを可能にして要件を反復的に改善し、リアルタイムのフィードバックを得ることができます。カスタム定義変換は、AWS マネージド変換 (AWS-Managed Transformation) が特定のモダナイゼーションニーズを満たさない場合に、AWS Transform custom の機能を拡張する柔軟性を提供します。

継続的学習とナレッジアイテム

AWS Transform custom は、各変換実行から自動的に学習して将来の結果を改善します。特に Java アップグレードについては、サービスは成功したリファクタリング戦略、一般的な依存関係の競合、Java バージョン間のフレームワーク互換性マトリックスなどのパターンをキャプチャします。この知識は将来の変換にフィードバックされ、成功したアップグレードパスの予測がより正確になり、手動介入が減少します。

ナレッジアイテムはアカウント固有であり、AWS アカウントの境界内に留まります。ユーザーは継続的学習を有効または無効にでき、この設定を完全に制御できます。

まとめ

このブログでは、AWS マネージド変換 (AWS-Managed Transformation) を使用して AWS Transform custom が効率的な Java アプリケーションモダナイゼーションを可能にする方法を実演しました。Java 8 と Spring Boot 2.x で実行されているレガシー Movie Service アプリケーションから始めて、最新の依存関係とパターンを備えた Java 21 への変換に成功しました。

ステップバイステップのプロセスでは、ベースラインの確立、atx custom def list を使用した利用可能な変換の検出、AWS Transform custom の CLI を通じた変換の適用方法を示しました。その結果、更新された Java バージョン、Spring Boot アップグレード、拡張された switch 式やローカル変数型推論などの最新の Java 機能を備えた完全にモダナイズされたアプリケーションが得られました。これらすべてが、数週間の手動リファクタリングではなく数分で達成されました。

Java モダナイゼーションを超えて

Java モダナイゼーションを超えて、AWS Transform custom の変換機能は他のプログラミング言語とフレームワークに拡張され、多様なテクノロジースタック全体にわたる包括的なアプリケーションポートフォリオモダナイゼーションのための汎用的なソリューションとなっています。エージェントは、以下を含む多様な変換ユースケースをサポートします。

  • Java、Python、Node.js のバージョンアップグレード
  • ランタイムと API の移行(AWS SDK v1→v2、Boto2→Boto3)
  • フレームワークの移行とアップグレード
  • 言語の翻訳とアーキテクチャの変更
  • 組織固有のカスタム定義変換

AWS Transform customは「定義は一度、変換はどこでも (define once, transform everywhere) 」というアプローチにより、組織全体で変換処理を一度定義し、反復可能なタスクを実行することで、変換知識の蓄積と拡大を実現します。これにより知識のサイロ化が解消され、チームやプロジェクトの範囲に関わらず一貫した品質が保証されます。

今すぐ始めましょう

AWS Transform custom で Java アプリケーションをモダナイズする準備はできましたか?開始方法は次のとおりです。

  1. インストールスクリプトを使用してAWS Transform custom CLI (atx) のインストールし、環境を確認
  2. transform-custom:* 権限で AWS 認証情報の設定
  3. atx custom def list を使用して、利用可能な AWS マネージド変換 (AWS-Managed Transformation) を探索
  4. ダイレクト実行モード(atx custom def exec)またはインタラクティブモード(atx)を使用して Java アプリケーションに変換の適用
  5. Gradle プロジェクトの場合は ./gradlew build を使用した包括的なテストを通じて結果の検証
  6. アプリケーションポートフォリオ全体への拡張し、一貫したモダナイゼーションを実現

追加リソース

詳細なセットアップ手順とドキュメントについては、以下をご覧ください:

今すぐモダナイゼーションの旅を始めて、大規模な AI 駆動コード変換の力を体験してください。

著者について

Profile image for Venugopalan Vasudevan

Venugopalan Vasudevan

Venugopalan Vasudevan (Venu) は AWS のシニアスペシャリストソリューションアーキテクトであり、Amazon Q Developer、Kiro、AWS Transform に焦点を当てた生成 AI イニシアチブをリードしています。彼は、顧客が AI を活用した開発者向けソリューションやモダナイゼーションソリューションを採用・拡張し、イノベーションとビジネス成果を加速できるよう支援しています。

Profile image for Dinesh Balaaji Prabakaran

Dinesh Balaaji Prabakaran

Dinesh は AWS のエンタープライズサポートリードであり、独立系ソフトウェアベンダー(ISV)のクラウドジャーニーをサポートすることを専門としています。AWS 生成 AI サービスの専門知識を持ち、顧客が Amazon Q Developer、Kiro、AWS Transform を活用して、AI を活用した支援によりアプリケーション開発とモダナイゼーションを加速できるよう支援しています。

Profile image for Sureshkumar Natarajan

Sureshkumar Natarajan

Sureshkumar Natarajan は AWS のシニアテクニカルアカウントマネージャーであり、生成 AI イニシアチブに焦点を当てて、エンタープライズ顧客のクラウドジャーニーをサポートしています。彼は、組織が Amazon Q Developer、Kiro、AWS Transform を活用して新しい機能を引き出し、開発ワークフローを効率化し、変革的なビジネス成果を達成できるよう導いています。

Profile image for Anjan Dave

Anjan Dave

Anjan Dave は AWS のプリンシパルソリューションアーキテクトであり、25 年以上の IT 経験を持っています。彼は、生成 AI アプリケーションのモダナイゼーション、インフラストラクチャのスケーラビリティ、開発者の生産性向上イニシアチブを専門としています。
Anjan は、グローバルプロジェクト全体で生成 AI とモダナイゼーション戦略をリードし、イベント駆動型アーキテクチャとマイクロサービスアーキテクチャを通じて HCM プロバイダーのテクノロジーロードマップに影響を与えています。彼は、ソフトウェア開発ライフサイクルに生成 AI を統合して日常的なタスクを自動化し、エンジニアリングチームが高付加価値のアーキテクチャ作業に集中できるようにすることを提唱しています。

翻訳は Solutions Architect の吉村が担当いたしました。