Amazon Web Services ブログ

Amazon Q Developer の新しいコンテキスト機能で、コードのコントロールを強化しよう

本記事は 2025 年 3 月 11 日に公開された “Take control of your code with Amazon Q Developer’s new context features” を翻訳したものです。

このブログでは、開発者が自分の開発ワークフローを完全にコントロールできるようになる、Amazon Q Developer の強力な新機能を紹介します。これらの機能は現在 Visual Studio Code で利用可能で、ワークスペースコンテキスト、明示的なコンテキスト指定、プロンプトライブラリ、プロジェクトルールの活用によるソフトウェアプロジェクトの効率化、コーディング標準の維持、生産性の向上を実現できます。他の IDE を使用している開発者向けにも、これらの機能のサポートは今後提供される予定です。経験豊富な開発者でも、これから始めようとしている方でも、これらの機能によって開発タスクへの取り組み方が大きく変わるはずです。

背景

過去 1 年にわたり、Amazon Q Developer は統合開発環境 (IDE) におけるワークスペースコンテキストをサポートしてきました。この強力な機能により、Amazon Q Developer はコードファイル、設定ファイル、プロジェクト構成などを自動的に読み取り、インデックス化することで、AI を活用したアシスタントがアプリケーション全体にわたる包括的なコンテキストを把握できるようになります。

質問に @workspace 修飾子を追加することで、Amazon Q Developer はワークスペース内のコードから最も関連性の高い部分を自動的に追加コンテキストとして含めることができます。これにより、現在のファイルだけでなく、より広範なコードベースの理解が必要な質問に対しても、より正確で充実した回答を得ることができます。

この機能を説明するために、AWS CDK Immersion Day Workshop のコードを使用してみます。たとえば、「Which resources are deployed by the workshop stack?(このワークショップスタックでデプロイされるリソースは何ですか?)」と Amazon Q Developer に質問したとします。通常であれば、アシスタントは IDE 上で開いている現在のファイルだけをコンテキストとして使用しますが、@workspace を追加することで、Amazon Q Developer は、AWS Lambda 関数、Amazon API GatewayAmazon DynamoDB テーブルなど、プロジェクト内のすべてのリソースを含む、より完全なレスポンスを得られます。

この追加コンテキストにより、Amazon Q Developer はより包括的な回答を行うことができ、ワークショップスタックを構成するさまざまなリソースについて詳しく説明してくれます。

コンテキストの透明性

Amazon Q Developer は、大規模なプロジェクトのすべてのファイルをレビューすることはできません。すべてを読み込むには時間がかかりすぎるためです。アシスタントは、定期的に更新されるインデックスに基づいて関連性の高いファイルを判断しています。これは多くの場合うまく機能しますが、Amazon Q Developer がどのファイルを選んだのかを知りたい場合もあります。そんなときに役立つのが、新しく追加されたコンテキストの透明性の機能です。

Amazon Q Developerは、追加された各ファイルをリストアップし、レスポンスに直接コンテキスト情報を含めるようになりました。コンテキストの透明化機能により、アシスタントが回答を作成するために使用したファイルを正確に確認できます。以下の例では、Q Developer がプロジェクト内の 4 つのファイルを使用したことがわかります。

コンテキストセクションを展開することで、Amazon Q Developer が前回の回答を生成する際に使用したファイルを簡単に確認できます。これにより、アシスタントの意思決定プロセスについて、より深く理解することができます。

明示的なコンテキスト

通常、Amazon Q Developer は最適なファイルを自動で選択し、コンテキストを補強してくれますが、より細かくコントロールしたい場合もあります。そんなときに便利なのが、新しく追加された明示的なコンテキスト機能です。この機能を使えば、自分でコンテキストに含めたいファイルやフォルダを選択できます。

チャットで @ を入力すると、Amazon Q Developer はファイルやフォルダを選択できるユーザーインターフェースを表示します。これにより、質問に答えるために必要だと自分で把握している情報を、アシスタントに正確に渡すことができます。

前の例に戻ってみましょう。Q Developer はスタック内のリソースを正しく特定しましたが、DynamoDB テーブルが定義されている lib/hitcounter.ts はコンテキストに含まれていませんでした。回答としては正しいものの、私は Q Developer に HitCounter のソースも参照してほしいと考えています。そこで、以下の例では lib フォルダを明示的にコンテキストに追加しています。理由は、その中にリソース定義があると私自身が知っているからです。

Q にファイルの選択を任せるのではなく、自分でコンテキストに追加したいファイルやフォルダを明示的に指定することができます。以下の画像では、Q が今回も正しく質問に答えている様子が確認できます。ただし、両方のファイルのソースコードをコンテキストに含めたことで、前の例では抜けていた追加情報も含めることができました。たとえば、HitCounterHandler には実行環境やバージョンに関する情報が新たに含まれていることがわかります。

コンテキストを明示的に指定できることで、Amazon Q Developer が使用する情報を自分のニーズに合わせて調整し、より関連性が高く正確な回答を得ることができます。

プロンプトライブラリ

コンテキストをコントロールする機能に加えて、Amazon Q Developer では共通のプロンプトのライブラリを構築できるようになりました。これらのプロンプトは Markdown ファイルとして ~/.aws/amazonq/promptsフォルダに保存され、複数の会話やプロジェクト間で簡単に再利用できます。

たとえば、プロジェクトの README ファイルに図を追加したいとします。Amazon Q Developer の /doc 機能ではインフラストラクチャ図を生成できますが、頻繁に使う図として ER 図(Entity-Relationship 図)やシーケンス図などもあるかもしれません。そうしたプロンプトをライブラリに保存しておくことで、毎回プロンプトを入力し直すことなく、簡単にコンテキストに追加できます。以下の例では、シーケンス図を作成してみます。

前の画像では、保存済みのプロンプト「Create Sequence Diagram」に加えて、再び lib フォルダをコンテキストに追加している様子が確認できます。このように、必要に応じて複数の修飾子を組み合わせて、追加のコンテキストやプロンプトを柔軟に指定することができます。「Create Sequence Diagram」という保存済みプロンプトの内容は以下のとおりです。

Create a sequence diagram using Mermaid that shows the sequence of calls between resources.
Ignore supporting resources like IAM policies and security group rules.
Plain text

※日本語訳

Mermaid を使って、リソース間の呼び出しの流れを示すシーケンス図を作成してください。
IAM ポリシーやセキュリティグループのルールなどの補助的なリソースは無視してください。
Plain text

Amazon Q Developer はこのプロンプトと、lib フォルダ内の 2 つのソースコードファイルをもとに、以下のようなシーケンス図を生成しました。

プロンプトライブラリを使うことで、時間を節約でき、一般的な成果物を生成するときのミスの可能性も減らせます。その結果、より複雑で創造的な開発作業に集中できるようになります。

プロジェクトルール

最後に紹介する機能は「プロジェクトルール」です。プロンプトライブラリと同様、これらのルールは Markdown ファイルとして保存されます。プロンプトライブラリがユーザープロファイルに紐づくのに対し、プロジェクトルールはプロジェクト内の .amazonq/rules フォルダに保存されます。そのため、ソースコードを共有するすべての開発者にルールが適用されます。

これらのルールにより、チーム全体でコーディング規約やベストプラクティスを徹底できるようになります。たとえば、Python のコードには必ず型ヒントを付ける、Java のコードには Javadoc コメントを記述する、といったルールを設定できます。ルールをプロジェクトに保存することで、開発者の経験にかかわらず、コードの一貫性を保つことができます。

これを説明するために、若手の開発者が「Add an S3 bucket to the stack(スタックに S3 バケットを追加して)」とだけ Q に依頼したケースを考えてみましょう。このプロンプトはシンプルすぎて、私たちのベストプラクティスが反映されていません。

あいまいなプロンプトにもかかわらず、Q Developer の回答には「rules ファイル」に保存されたベストプラクティスへの言及が含まれていることに気づくかもしれません。また、プロンプトに修飾子を付けていないにもかかわらず、Q が cdk.md をコンテキストに追加していることにも注目してください。これこそがプロジェクトルールの強力さです。開発者が手動で追加するのを忘れても、自動的にコンテキストを補足してくれるのです。.amazonq/rules/cdk.md には、次のような内容が記載されています。さらに、コンテキストの透明性の機能によって、そのルールがコンテキストに含まれていることが明確に表示され、開発者は適用されたルールが何かわかるようになっています。

All S3 Buckets must have encryption enabled, enforce SSL, and block public access.
All DynamoDB Tables must have encryption enabled.
All SNS Topics must have encryption enabled and enforce SSL.
All SQS Queues must enforce SSL.
Plain text

※日本語訳:

すべての S3 バケットには暗号化を有効にし、SSL を強制し、パブリックアクセスをブロックすること。
すべての DynamoDB テーブルには暗号化を有効にすること。
すべての SNS トピックには暗号化を有効にし、SSL を強制すること。
すべての SQS キューには SSL を強制すること。
Plain text

プロジェクトルールを活用することで、開発チーム全体でベストプラクティスやコーディングの一貫性を維持でき、コードベースの品質と保守性の向上につながります。

まとめ

Amazon Q Developer の新機能により、ソフトウェア開発のワークフローを簡素化するための強力なツールを提供します。ワークスペースコンテキスト、明示的なコンテキスト、プロンプトライブラリ、プロジェクトルールを活用することで、AI アシスタントに正確で役に立つ回答を導くための情報を提供できるだけでなく、チーム全体でのベストプラクティスと標準の徹底も可能になります。

これらの機能を使い始めるには、Amazon Q Developer の使用開始ガイドをご覧ください。開発をより効率的に、より優れたものにするためのさまざまな機能をぜひ体験してみてください。

翻訳はApp Dev Consultantの宇賀神が担当しました。