Amazon Web Services ブログ
AWS Transform for .NET: .NET アプリケーションを大規模にモダナイズするための初のエージェント型 AI サービス
私は .NET 開発者としてキャリアをスタートし、過去数十年にわたって .NET の進化を見てきました。多くの皆さんと同じように、私も Windows でのみ動作する .NET Framework で複数のエンタープライズアプリケーションを開発しました。.NET Framework を使用して初めてエンタープライズアプリケーションを構築したのは懐かしい思い出です。.NET Framework は非常に役に立ちましたが、テクノロジー環境は大きく変化しました。Linux で実行できるオープンソースの .NET クロスプラットフォームバージョンが存在するようになった今、.NET Framework で構築されたこれらのレガシーエンタープライズアプリケーションも移植し、モダナイズしなければなりません。
Linux への移植には、Windows ライセンスコストを節約できることからアプリケーションの運用コストが 40% 低くなる、パフォーマンスの向上によって実行が 1.5〜2 倍速くなる、50% 優れたスケーラビリティを用いて増大するワークロードを処理できるという魅力的なメリットがあります。いくつかのアプリケーションの移植をサポートした経験から、この移植は、取り組みに見合った報酬が得られると言えます。
しかし、.NET Framework アプリケーションのクロスプラットフォーム .NET への移植には多大な労力が必要で、エラーが発生しやすいプロセスでもあります。コードベースの分析、非互換性の検出、コード移植中における修正の適用、その後での変更の検証など、複数のステップを実行する必要があります。企業の場合は、ポートフォリオに何百もの .NET Framework アプリケーションが含まれている可能性があるため、この課題はさらに複雑になります。
re:Invent 2024 では、.NET アプリケーションの大規模な移植に役立つ、.NET のための Amazon Q Developer 変換機能としてこの機能のプレビューを実施しました。これは、大規模なトランスフォーメーションのための統合ウェブエクスペリエンス、そして個々のプロジェクトやソリューションの移植のための統合開発環境 (IDE) 内エクスペリエンスとして利用できます。
5 月 15 日、皆さんからの貴重なフィードバックや提案を取り入れた AWS Transform for .NET の一般提供開始について発表できることをとても嬉しく思っています。また、プライベート NuGet パッケージを使用するプロジェクトをサポートする機能、Model-View-Controller (MVC) Razor ビューを ASP .NET Core Razor ビューに移植する機能、そして移植されたユニットテストを実行する機能も新たに追加されました。
主な新機能についてはこの後で詳しく説明しますが、まずは AWS Transform for .NET の 2 つの移植エクスペリエンスを簡単に見てみましょう。
.NET アプリケーションのための大規模な移植エクスペリエンス
企業のデジタルトランスフォーメーションは、複数の事業部門にまたがる何百ものアプリケーションのモダナイゼーションを担当する中央チームによって推進されるのが一般的です。異なるチームが、異なるアプリケーションとそれらに対応するリポジトリの所有権を持っています。成功を収めるには、事業部門全体でのこれらのチーム、アプリケーション所有者、開発者間における緊密な連携が必要です。AWS Transform for .NET は、この大規模なモダナイゼーションを加速するために、チームがソースコードリポジトリに直接接続し、組織全体の複数のアプリケーションを効率的に変換できるようにするウェブエクスペリエンスを提供しています。 専属の開発者による対応が必要な一部のアプリケーションの場合も、同じエージェント機能が Visual Studio IDE の拡張機能として開発者に提供されています。
では、AWS Transform for .NET のウェブエクスペリエンスが、何百もの .NET アプリケーションの大規模な移植にどのように役立つのかを検証することから始めましょう。
AWS Transform for .NET のウェブエクスペリエンス
AWS Transform のウェブエクスペリエンスを開始するため、ドキュメントで概説されているステップに従ってオンボーディングし、認証情報を使用してサインインして、.NET モダナイゼーションのジョブを作成します。
ジョブ計画は AWS Transform for .NET が作成します。ジョブ計画とは、アプリケーションを大規模に評価、検出、分析、変換するためにエージェントが実行する一連のステップです。その後、AWS Transform は私がソースコードリポジトリに接続するためのコネクタを設定するまで待機します。
コネクタが設定されると、AWS Transform が私のアカウント内にあるリポジトリの検出を開始します。AWS Transform は、リポジトリの依存関係、必要なプライベートパッケージとサードパーティーライブラリ、リポジトリ内でサポートされているプロジェクトタイプという 3 つの主要分野に焦点を当てて評価を行います。
この評価に基づいて、推奨される変換計画が生成されます。この計画は、最終変更日、依存関係、プライベートパッケージ要件、およびサポートされているプロジェクトタイプの有無に従ってリポジトリを並べ替えます。
AWS Transform for .NET は次に、ターゲットとなるブランチ移動先、ターゲットとなる .NET バージョン、変換されるリポジトリなど、特定の入力を要求することによって変換プロセスの準備を行います。
変換するリポジトリを選択するオプションは 2 つあります。推奨プランを使用するオプションと、リポジトリを手動で選択して変換計画をカスタマイズするオプションです。リポジトリを手動で選択するには、UI を使用するか、リポジトリマッピングをダウンロードしてカスタマイズしたリストをアップロードすることができます。
AWS Transform for .NET は、アプリケーションコードの移植、移植されたコードの構築、ユニットテストの実行、リポジトリ内の新しいブランチへの移植されたコードのコミットを自動的に実行します。また、変更されたファイル、テストの結果、残りの作業に関する修正案など、包括的な変換概要も提供します。
ウェブエクスペリエンスは大規模な移植の迅速化に役立ちますが、アプリケーションによっては開発者による対応が必要なものもあります。このような場合は、Visual Studio IDE でも同じエージェント機能を利用できます。
AWS Transform for .NET の Visual Studio IDE エクスペリエンス
次に、AWS Transform for .NET が Visual Studio 内でどのように機能するのかを見てみましょう。
この手順を開始するため、最新バージョンの AWS Toolkit extension for Visual Studio をインストールし、前提条件の設定を行います。
.NET Framework ソリューションを開くと、Solution Explorer 内にある個々のプロジェクトに [Port project with AWS Transform] (AWS Transform でプロジェクトを移植する) というコンテキストメニュー項目が表示されています。
ターゲットとなる .NET バージョンや、エージェントがコードの変換、ユニットテストの実行、変換概要の生成、Linux 対応可能性の検証を自律的に行うための承認といった必要な入力を行います。
エージェントが行ったコード変更をローカルで確認し、コードベースの更新を継続することができます。
今度は、AWS Transform for .NET. に追加された主な新機能をいくつか見ていきましょう。
プライベート NuGet パッケージ依存関係があるプロジェクトのサポート
プレビュー中は、パブリック NuGet パッケージとの依存関係が存在するプロジェクトのみがサポートされていました。一般提供の開始に伴い、プライベート NuGet パッケージとの依存関係が存在するプロジェクトがサポートされるようになりました。これは、プレビュー中に最も要望の多かった機能の 1 つです。
私がとても気に入っている機能は、AWS Transform がリポジトリ間の依存関係を検出できることです。プライベート NuGet パッケージのソースコードを見つけると、それも自動的に変換します。AWS Transform がソースコードを見つけられない場合は、ウェブエクスペリエンスにおいて、必要な NuGet パッケージをアップロードする柔軟性を提供します。
AWS Transform は、解決する必要のある欠落したパッケージ依存関係を表示します。解決する方法は 2 つあり、提供された PowerShell スクリプトを使用してパッケージを作成し、パッケージをアップロードする、またはアプリケーションをローカルで構築し、ソリューションディレクトリのパッケージフォルダから NuGet パッケージをアップロードすることができます。
欠落している NuGet パッケージをアップロードすると、AWS Transform が依存関係を解決できるようになります。NuGet パッケージの .NET Framework バージョンとクロスプラットフォーム .NET バージョンの両方を提供するのが最も良い方法です。クロスプラットフォーム .NET バージョンが利用できない場合に AWS Transform がパッケージをアセンブリ参照として追加し、変換を続行するには、少なくとも.NET Framework バージョンが必要です。
ユニットテストの実行
プレビュー中は、.NET Framework からクロスプラットフォーム .NET へのユニットテストの移植がサポートされていました。一般提供の開始に伴い、変換が完了した後にユニットテストを実行するためのサポートも追加されました。
変換が完了し、ユニットテストが実行されると、ダッシュボードに結果が表示され、個々のテストプロジェクトレベルごとにテストのステータスを確認できます。
変換の可視性と概要
変換が完了したら、JSON 形式の詳細レポートをダウンロードできます。このレポートには、変換されたリポジトリのリスト、各リポジトリの詳細、リポジトリ内の各プロジェクトで実行された変換アクションのステータスが記載されています。自然言語での変換概要をプロジェクトレベルで確認して、AWS Transform の出力をプロジェクトレベルの粒度で理解することができます。この概要は、更新の概要に加えて、コードベースに対する主な技術的変更に関する情報も提供します。
その他の新機能
一般提供の開始に伴って追加されたその他の新機能を簡単に見てみましょう。
- UI レイヤー移植のサポート – プレビュー中、AWS Transform を使用して移植できるのは MVC アプリケーションのビジネスロジックレイヤーのみで、UI レイヤーは手動で移植する必要がありました。一般提供の開始に伴い、AWS Transform を使用して MVC Razor ビューを ASP.NET Core Razor ビューに移植できるようになりました。
- コネクタサポートの拡大 – プレビュー中は、GitHub リポジトリにしか接続できませんでした。一般提供の開始に伴い、GitHub、GitLab、および Bitbucket の各リポジトリへの接続が可能になりました。
- リポジトリ間の依存関係 – 変換するリポジトリを選択すると、依存するリポジトリが自動的に変換対象として選択されます。
- 評価レポートのダウンロード – アカウント内で特定されたリポジトリと、これらのリポジトリで参照されているプライベート NuGet パッケージに関する詳しい評価レポートをダウンロードできます。
- ディープリンクが記載された E メール通知 – ジョブのステータスが「完了」または「停止」に変わるときに E メール通知を受け取ります。これらの通知には、IDE でのレビューや継続的な変換のための、変換済みコードブランチへのディープリンクが含まれています。
知っておくべきこと
知っておくべきその他の情報は、以下のとおりです。
- リージョン – AWS Transform for .NET は、欧州 (フランクフルト) および米国東部 (バージニア北部) リージョンで 5 月 15 日から一般提供されます。
- 料金 – 現在、AWS Transform に追加料金はかかりません。AWS Transform の出力を使用して AWS アカウント内で作成する、または使用を継続するリソースについては、それらの標準料金に従って料金が請求されます。制限とクォータについては、こちらのドキュメントを参照してください。
- サポートされる .NET バージョン – AWS Transform for .NET は、.NET Framework バージョン 3.5 以降、.NET Core 3.1、.NET 5 以降、クロスプラットフォーム .NET バージョンである .NET 8 を使用して作成されたアプリケーションの変換をサポートしています。
- サポートされるアプリケーションタイプ – AWS Transform for .NET は、コンソールアプリケーション、クラスライブラリ、ユニットテスト、WebAPI、Windows Communication Foundation (WCF) サービス、MVC、およびシングルページアプリケーション (SPA) タイプの C# コードプロジェクトの移植をサポートしています。
- 使用の開始 – 使用を開始するには、AWS Transform for .NET の User Guide をご覧ください。
- ウェビナー – ライブデモを通じて AWS Transform for .NET を体験するウェビナー、Accelerate .NET Modernization with Agentic AI に参加しましょう。
– Prasad
原文はこちらです。
ニュースブログはいかがでしたか? こちらの 1 分間のアンケートにぜひご協力ください!
(このアンケートは外部企業に委託して行われます。AWS は、AWS プライバシー通知に記載された内容に従って、お客様の情報を取り扱います。AWS は、このアンケートを通じて収集したデータを所有し、収集した情報をアンケートの回答者と共有することはありません)