Amazon Web Services ブログ

Amazon Q Developer in GitHub (プレビュー) がコード生成を加速

5 月 5 日より、Amazon Q Developer in GitHub のプレビュー版をご利用いただけるようになりました! これは、仕事でも、個人的なプロジェクトでも、GitHub を日常的に使用している何百万人ものデベロッパーにとってすばらしいニュースです。これらのデベロッパーは、Amazon Q Developer を利用して、GitHub インターフェイス内で直接、機能開発、コードレビュー、Java コードの移行を行うことができるようになりました。

デモンストレーションのために、StoryBook Teller というアプリケーションをゼロから作成するのを Amazon Q Developer に手伝ってもらいます。これは .NET 9 を使用する ASP.Core ウェブサイトで、ユーザーから 3 枚の画像を取得し、Amazon Bedrock と Anthropic の Claude を利用して、それらの画像に基づいてストーリーを生成します。

その仕組みをご紹介します。

インストール

まず、GitHub で Amazon Q Developer アプリケーション をインストールする必要があります。これにより、AWS アカウントに接続することなく、直ちに使用を開始できます。

その後、そのアプリケーションをすべてのリポジトリに追加するか、特定のリポジトリを選択するかを選びます。今回は storybook-teller-demo リポジトリに追加するので、[選択したリポジトリのみ] を選択し、名前を入力して検索します。

これで、選択したリポジトリ内で Amazon Q Developer アプリケーションを使用する準備が整います。アプリケーションがインストールされていることは、GitHub アカウントの [設定] に移動して確認できます。アプリケーションは [アプリケーション] ページに表示されます。

[設定] を選択して許可を表示し、いつでも Amazon Q Developer をリポジトリに追加したり、削除したりできます。

それでは、Amazon Q Developer を利用してアプリケーションを構築してみましょう。

機能開発
Amazon Q Developer をリポジトリにインストールすると、GitHub の Issue を Amazon Q 開発エージェントに割り当てて、機能を開発してもらうことができます。その後、リポジトリ内のコードベース全体をコンテキストとして使用し、Issue の説明も参照して、コードを生成します。そのため、GitHub の Issue には、要件を可能な限り正確かつ明確に記載することが重要です (これは、どのような場合であっても常に心がけるべきことです)。

StoryBook Teller リポジトリで、.NET 9 のスケルトンプロジェクトの作成からフロントエンドとバックエンドの実装まで、このアプリケーションのすべての要件をカバーする 5 つの Issue を作成しました。

Amazon Q Developer を利用して、アプリケーションをゼロから開発し、これらのすべての機能を実装してみましょう。

まず、.NET プロジェクトを作成するのを Amazon Q Developer に手伝ってもらいます。そのためには、最初の Issue を開き、[ラベル] セクションで [Amazon Q 開発エージェント] を見つけて選択します。

これだけです! これで、Issue が Amazon Q Developer に割り当てられました。ラベルが追加されると、Amazon Q 開発エージェントが自動的にバックグラウンドで作業を開始し、コメントを通じて進捗状況の最新情報を提供します。最初のコメントは I'm working on it です。

ご想像のとおり、かかる時間は機能の複雑さによって異なります。完了すると、すべての変更を含むプルリクエストが自動的に作成されます。

次に、生成されたコードが機能することを確認したいので、コードの変更をダウンロードし、自分のコンピュータでローカルにアプリケーションを実行します。

ターミナルに移動し、git fetch origin pull/6/head:pr-6 と入力して、作成されたプルリクエストのコードを取得します。内容をダブルチェックすると、想定どおり .NET 9 を使用して生成された ASP.Core プロジェクトが確かに存在していることがわかります。

その後、dotnet run を実行し、出力に示された URL を使用してアプリケーションを開きます。

すばらしいです。適切に機能しています! Amazon Q Developer は、GitHub の Issue で私が提供した要件に基づいて、まさに私の希望どおりに実装してくれました。アプリケーションの動作テストが完了したので、変更を受け入れる前にコード自体をレビューしたいと思います。

コードレビュー
GitHub に戻り、プルリクエストを開きます。Amazon Q Developer が生成されたコードに対していくつかの自動チェックを実行したことがすぐにわかります。

これはすばらしいです! 既にかなりの作業が完了しています。ただし、プルリクエストをマージする前にレビューしたいと思います。これを実行するために、[変更されたファイル] タブに移動します。

コードをレビューし、問題ないことを確認しました! しかし、.gitignore の内容を確認すると、変更したい点が見つかりました。Amazon Q Developer が適切な想定を行い、Visual Studio (VS) Code ファイルについての除外ルールを追加していることがわかります。しかし、JetBrains Rider は .NET 開発のための私のお気に入りの統合開発環境 (IDE) なので、これについてのルールも追加したいと考えています。

GitHub インターフェイスで通常のコードレビューフローを使用することで、再度イテレーションするよう Amazon Q Developer に指示できます。この場合、.gitignore コードに add patterns to ignore Rider IDE files というコメントを追加します。その後、[レビューを開始] を選択します。これにより、レビューにおける変更がキューに追加されます。

[レビューを完了][変更をリクエスト] を選択します。

レビューを送信するとすぐに、[会話] タブにリダイレクトされます。Amazon Q Developer が作業を開始し、同じフィードバックループを再開して、私が満足するまでレビュープロセスを続行するよう促します。

Q Developer が変更を加えるたびに、生成されたコードに対して自動チェックが実行されます。今回は、コードが比較的単純なので、自動コードレビューで問題は発生しないことが想定されました。しかし、より複雑なコードの場合はどうなるでしょうか?

別の例として、Amazon Q Developer を利用して、ウェブサイトでの画像アップロードを可能にする機能を実装してみましょう。前のセクションで説明したのと同じフローを使用します。しかし、プルリクエストに対する自動チェックで、今回は警告フラグが立てられました。この警告によると、バックエンドで画像アップロードをサポートするために生成された API に認可チェックが欠落しているため、事実上、直接パブリックアクセスが可能になっているということです。セキュリティリスクの詳細な説明と、役立つリンクが提供されています。

その後、コード修正の提案が自動的に生成されます。

完了したら、コードをレビューし、変更に問題がなければ [変更をコミット] を選択できます。

これを修正してテストした後、この Issue のコードに満足したので、同じプロセスを他の Issue にも適用していきます。残りの Issue それぞれに Amazon Q 開発エージェントを割り当てて、コードが生成されるのを待ち、反復的なレビュープロセスを実行して、その過程で問題があれば修正するよう指示します。その後、ソフトウェアサイクルの最後にアプリケーションをテストします。Amazon Q Developer がプロジェクトのセットアップから、ボイラープレートコード、より複雑なバックエンドやフロントエンドまで、すべての問題に対処してくれたことに、私は非常に満足です。まさに真のフルスタックデベロッパーです!

途中で、変更したい点がいくつかあること気づきました。例えば、アップロードされた画像を Amazon Bedrock に送信する際に、Converse API ではなく Invoke API がデフォルトで使用されるようになっていました。しかし、要件でこれについて触れていなかったため、Q Developer がそれを知る術はありませんでした。このことは、Q Developer に必要なコンテキストを提供し、開発プロセスを可能な限り効率的にするために、Issue のタイトルと説明を可能な限り正確に記述することの重要性を強調しています。

とはいえ、プルリクエストで生成されたコードをレビューし、コメントを追加して、最終結果に満足するまで Amazon Q Developer エージェントに変更作業をさせ続けるのは簡単です。あるいは、プルリクエストの変更を受け入れ、開発の準備ができたら Q Developer に割り当てることができる別の Issue を作成することもできます。

コード変換
Q Developer を利用すると、レガシー Java コードベースを最新バージョンに変換することもできます。現在、アプリケーションを Java 8 または Java 11 から Java 17 に更新できますが、今後のリリースではさらに多くのオプションが使用可能になる予定です。

このプロセスは、いくつかの点を除けば、この記事の前半でデモンストレーションしたものと非常に似ています。

まず、Java 8 または Java 11 アプリケーションを含む GitHub リポジトリ内に Issue を作成する必要があります。この場合、タイトルと説明はそれほど重要ではありません。「Migration」などの短いタイトルで、説明は空白のままでも構いません。その後、[ラベル] で、Issue に [Amazon Q transform agent] ラベルを割り当てます。

以前と同様に、Amazon Q Developer は、レビュー可能なプルリクエストのコードを生成する前に、直ちにバックグラウンドで作業を開始します。ただし、今回は、コード移行に特化した Amazon Q 変換エージェントが作業を行い、コードの分析と、Java 8 から Java 17 への移行に必要なすべてのステップを実行します。

ドキュメントに従って、ワークフローも作成する必要があることに留意してください。まだ有効になっていない場合は、再試行する前にすべてをセットアップするのに役立つ明確な手順が表示されます。

想定したとおり、移行の実行に必要な時間は、アプリケーションのサイズと複雑さによって異なります。

まとめ
Amazon Q Developer in GitHub を利用することは、新機能を開発し、コードレビュープロセスを加速して、セキュリティ体制を強化し、コードの質を改善するためにコラボレーションできるフルスタックデベロッパーと作業するようなものです。また、Java 8 および 11 のアプリケーションから Java 17 への移行を自動化するために使用できるため、しばらく延期していた移行プロジェクトであってもはるかに簡単に開始できます。何よりも、これらすべてをご自身の GitHub 環境から快適に実行できます。

今すぐご利用いただけます
今すぐ GitHub で Amazon Q Developer の利用を無料で開始できます。AWS アカウントのセットアップは不要です。

Amazon Q Developer in GitHub は現在プレビュー中です。

Matheus Guimaraes | codingmatheus

原文はこちらです。


ニュースブログはいかがでしたか? こちらの 1 分間のアンケートにぜひご協力ください!

(このアンケートは外部企業に委託して行われます。AWS は、AWS プライバシー通知に記載された内容に従って、お客様の情報を取り扱います。AWS は、このアンケートを通じて収集したデータを所有し、収集した情報をアンケートの回答者と共有することはありません)