Amazon Web Services ブログ
Amazon Q Developerにおけるリアルタイム実行によるコード生成の強化
本記事は 2025 年 1 月 30 日に公開された “Enhancing Code Generation with Real-Time Execution in Amazon Q Developer” を翻訳したものです。
AI がソフトウェア開発における急速なイノベーションを推進する中で、高品質なコード生成を促進するためには、リアルタイムにテストできる信頼性の高い実行環境が不可欠です。開発者は、 AI が生成したコードがプロジェクトの要件を満たしているかを確認するためのデバッグと反復に多くの時間を費やし、その結果、機能の提供が遅れることもあります。以前の Amazon Q Developer の開発用エージェントはコード生成に重点を置いていました。最新のアップデートにより、エージェントはリアルタイムでコードをビルドしてテストし、開発者がレビューする前に変更を検証できるようになりました。この新機能は、コードレコメンデーションの品質向上、エラーの検出、生成されたコードとプロジェクトの最新状態の同期、そしてコード生成とテストワークフローの両方を効率化することによる開発プロセスの加速が含まれます。これらはコミュニティからのフィードバックに直接対応したものです。
自然言語による入力とプロジェクト固有のコンテキストにより、 Amazon Q Developer エージェントは複数のファイルにまたがる複雑な機能、バグ修正、テストスイートの実装を支援するように設計されています。たとえば、開発者は Amazon Q Developer エージェントに e コマースアプリケーションにチェックアウト機能を追加をリクエストするとしましょう。エージェントは既存のコードベースを分析し、ユニットテストの実行やコードのビルドを含め、数分以内にすべての必要なコード変更とテストを行い、コードがレビューの準備ができていることを確認します。このアプローチにより、開発効率が大幅に向上し、エラーが減少します。 IDE で Amazon Q Developer エージェントを使用するには、 Amazon Q 拡張機能をインストールし、チャットウィンドウで /dev
コマンドを使用してリクエストを開始するだけです。
IDE で /dev
コマンドが入力されると、エージェントはプロジェクトをパッケージ化して Amazon Q にセキュアな方法でアップロードし、プロジェクト固有のコード生成を開始します。 Amazon Q Developer エージェントは、単なるコード生成だけでなく、開発者とのリアルタイムな接続を維持し、プロセスの進捗を共有しながら、要求された機能のための洗練されたパッチや実装を提供します。
このリアルタイム実行は、開発環境とエージェントが使用できるコマンドを定義する Devfile によって動作します。プロジェクトに Devfile が存在しない場合、/dev
を初めて実行した際に Amazon Q Developer が作成を促します。Devfile がない場合でもエージェントはソリューションを開発できますが、ビルドや単体テストの実行によるフィードバックが得られないため、リアルタイムでの開発支援が制限されます。
Devfile は Devfile 2.2.0 スキーマに準拠している必要があります。現在、 Amazon Q Developer は install
、 build
、および test
コマンドをサポートしています。
Amazon Q Developer の最新アップデートにおける主な機能強化
- カスタマイズ可能なコマンド: 開発者は Devfile でコマンドを指定することで、AI エージェントが実行するコマンドを制御できます。これにより、不要なステップを削減し精度を向上させることができます。
- 柔軟な環境セットアップ: 開発者は依存関係が事前に読み込まれたカスタム Docker イメージを使用して起動時間を短縮できます。これにより、エージェントに必要なツールをすべて備えた状態で動作できます。
- サンドボックス化されたセキュリティ: Amazon Q Developer は、隔離された環境内で実行を安全に保護し、包括的なログ記録と堅牢なアクセス許可制御を提供して、行われた変更を保護します。
これらの仕組みにより、 Amazon Q Developer はサンドボックス内で直接テストを実行し、マイグレーションを適用し、インストールコマンドを実行して、反復的な改善のためにエージェントにフィードバックを提供できます。
セキュリティと隔離
AI によって生成されたコードの実行は、セキュリティ上慎重に扱う必要があるため、Amazon Q Developer エージェントはいくつかの保護機能を導入しています:
環境の隔離: コマンドは、非公開のインターネットリソースにアクセスするための認証情報が含まれない隔離された管理下のサンドボックス環境内で実行されます。この環境は、許可されたアクションのみが安全に実行されることを保証します。
Devfile 駆動: この機能には Devfile が必要で、 Devfile の設定により開発者は開発プロセス中にエージェントが使用するコマンドを制御できます。
Amazon Q Developer エージェントの開始方法
Amazon Q Developer を開始するには、 AWS Builder ID を持っているか、 Amazon Q の使用を許可する AWS IAM Identity Center インスタンスを持つ組織に所属している必要があります。 Visual Studio Code でソフトウェア開発に Amazon Q Developer エージェントを使用するには、まず Amazon Q 拡張機能をインストールします。 Amazon Q Developer のページで最新バージョンの拡張機能を見つけることができます。この拡張機能は、 JetBrains 、 Eclipse (プレビュー)、および Visual Studio IDE でも利用可能です。サポートされている IDE の詳細なリストと、各 IDE で利用可能な機能については、 Amazon Q Developer のドキュメントを参照してください。
認証後、 Amazon Q のチャットウィンドウで /dev
と入力することで、機能開発エージェントを呼び出すことができます。
Amazon Q Developer は、 Amazon Q Developer エージェントによって生成されたコードを安全に実行するために、分離されたサンドボックス環境を活用します。これにより、生成されたコードを安全に実行し、元のコードベースと同期した状態を保ちます。プロセスの仕組みは以下の通りです:
- 実行環境の初期化: プロンプトを受け取ると、 Amazon Q Developer エージェントはサンドボックスインスタンスまたは開発者が指定した Docker コンテナを開始し、これをコード実行のためのサンドボックス環境として利用します。
- 安全なコマンド実行: Amazon Q Developer エージェントは、利用者にて定義した Devfile の仕様に基づいて、事前に指定されたシェルコマンドのリストを安全に実行します。 Devfile は開発環境の設定と依存関係をモデル化し、一貫した環境の再現を可能にし、手作業によるセットアップの労力を削減します。開発者は Devfile 内でカスタムコマンドを定義して、依存関係のインストール、テストの実行、データベースマイグレーションの適用、ビルドスクリプトの実行など、サンドボックス内のアクションを制御することで、精度と効率を向上させることができます。
- フィードバックと同期: 各コマンドの実行後、コードの変更が追跡され、 AI エージェントにリアルタイムのフィードバックが提供されることで、反復的な改善が可能になります。
ユースケース例 1:既存のプロジェクトへのテストスイートの追加
GitHub の react-solitaire のような React ベースのアプリケーションの機能を強化したいとします。新機能を追加する際、既存の機能を維持し、アップデートのたびに壊れないようにすることが重要です。これを実現するために、継続的なテストとコードの反復のためのテストスイートを作成することを目指します。
これを説明するために、 GitHub から React プロジェクトをクローンし、環境と依存関係を定義する Devfile を追加します。 Devfile により、サンドボックス内でコードの変更を安全に実行・テストできるようになり、既存の機能に影響を与えずにアップデートを適用できます。
以下は React ベースのプロジェクトのシンプルな Devfile です。Devfile を使用すると、依存関係のインストール、プロジェクトのビルド、テストの実行 など、Amazon Q Developer が使用するコマンドを定義できます。
リポジトリをクローンしたら、プロジェクトフォルダのルートに Devfile を配置します。次に、Visual Studio Code で Amazon Q のチャットを開き、 /dev
コマンドを入力してリポジトリ用のカスタマイズされたテストスイートの作成を促します。
訳者注: Create test suite for my repo : このリポジトリのテストスイートを作って
Amazon Q Developer エージェントはコードベースの分析を開始し、実施している変更や作業中のファイルについてリアルタイムで更新情報を共有します。エージェントはまずプロジェクト構造を調査し、必要な更新を計画し、そしてテストスイートを生成します。
数ステップの後、エージェントは必要なテストスイートを作成します。
その後、エージェントはテストを実行し、失敗がないか継続的に監視します。問題が検出された場合、すぐには停止せず、テストからのフィードバックに基づいてコードを積極的に改善し、このプロセスを最大3回繰り返します。3回の反復後も問題が解決しない場合、エージェントはプロセスを中止します。ただし、問題が修正された場合は、次のステップに進みます。たとえば、エージェントが Enzyme が React 18 をサポートしていないことを確認した際、その問題に対処し、テスト環境でテストを再実行しました。
問題が解決されると、エージェントは次のステップに進み、サンドボックスで変更したすべての変更とファイルを表示し、変更を受け入れるかフィードバックを提供するかを尋ねます。
出力に満足している場合は「Accept code」にて変更を受け入れることができ、満足していない場合は「Provide feedback & regenerate」にてエージェントにフィードバックを提供してコードの再生成を要求することができます。
ユースケース例 2:機能が更新された時のテストの再実行
テストの作成と実行に成功した後、エージェントは UI にゲーム名を表示する新機能を追加するよう指示されました。エージェントはリポジトリを分析し、更新が必要なファイルを特定し、変更を実装する正確な場所を決定しました。
更新を適用した後、エージェントはテストを実行して新機能を検証し、既存のコードベースとのシームレスな統合を促進し、開発プロセス全体を通じて信頼性を維持します。
エージェントによる変更を受け入れると、index.html ファイルが更新され、「Solitaire」というテキストが含まれるようになり、新しいコンテンツが既存のプロジェクトにスムーズに統合されます。
まとめ
Amazon Q Developer のこの新しいアップデートの導入は、 AI 駆動の開発における重要な進歩を意味しています。これにより、 Amazon Q Developer エージェントはコード生成に重点を置いたツールから堅牢な実行エンジンへと進化しました。開発者がリアルタイムでコードの変更を検証およびテストできるようにすることで、 AI が生成するファイルと修正の正確性と信頼性を向上させることができます。
AWS のマネージドサンドボックスを使用したり、カスタム環境を持ち込んだりする柔軟なオプションにより、開発者は Amazon Q Developer エージェントの可能性を最大限に引き出すためのコントロールを得ることができます。この新しい実行機能により、チームはより迅速に反復し、十分な情報に基づいた調整を行い、ニーズに合わせた安全でインテリジェントなプラットフォームを活用できます。
VS Code または JetBrains の Amazon Q Developer の拡張機能を更新またはインストールすることで、今すぐ試すことができます。
翻訳はApp Dev Consultantの宇賀神が担当しました。