広告枠を募集中 ご相談ください

IDE で活用する Amazon Q Developer:リアルタイムコード生成・自動セキュリティ脆弱性スキャン・レガシーコード移行実践ガイド

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

現代のソフトウェア開発現場において、エンジニアはボイラープレートコードの記述、デプロイ直前のセキュリティ脆弱性の発覚、そして旧言語バージョンに取り残されたレガシーシステムの改修という 3 つの大きな負荷に直面しています。Amazon Bedrock を基盤とする AI 開発支援アシスタント「Amazon Q Developer」は、Visual Studio Code、JetBrains 各種 IDE(IntelliJ IDEA、PyCharm など)、Visual Studio 2022 といった主要な統合開発環境(IDE)に深く統合され、開発ライフサイクル全体を支援します。

公式プラグインを通じて提供される Amazon Q Developer のコア機能は主に以下の 3 つです。

  1. リアルタイムなインラインコード生成と対話型コーディング:コードの文脈や自然言語コメントからリアルタイムに構文を予測・生成し、/dev コマンドにより複数ファイルにまたがる機能開発を自律実行。
  2. ルールエンジンに基づく自動セキュリティスキャン:Amazon CodeGuru 検出器ライブラリを活用し、SQL インジェクション、ハードコードされた認証情報、XSS などの脆弱性を検知して「Problems」パネルからワンクリックで修正パッチを適用。
  3. レガシーコードの自動移行(Code Transformation):自律型エージェントにより、Java 8 または 11 から Java 17 または 21 への言語バージョンアップグレードや .NET のモダナイゼーションを実行し、ローカルでのビルドおよび単体テストによる回帰検証を実施。

本ガイドでは、主要 IDE における Amazon Q Developer の導入・認証手順から、実務での各機能の操作フロー、無料枠と Pro ティアの比較、エンタープライズにおけるガバナンス設計までを体系的に解説します。


1. 事前準備と IDE での認証セットアップ

Amazon Q Developer は主要な IDE プラットフォームに対応しています。コード生成やセキュリティスキャンを開始する前に、環境要件と認証方式を確認します。

対応 IDE 環境と最小バージョン要件

IDE 環境最小要件バージョンプラグイン入手先
Visual Studio Code1.85.0 以降VS Code Marketplace: 「Amazon Q」拡張機能
JetBrains IDEs(IntelliJ IDEA、PyCharm 等)2024.3 以降JetBrains Marketplace: 「Amazon Q」プラグイン
Visual Studio(Windows 専用)Visual Studio 2022 v17.7 以降Visual Studio Marketplace: 「AWS Toolkit for Visual Studio 2022」
Eclipse2024-06 (4.32) 以降Eclipse Marketplace: 「Amazon Q」プラグイン

認証方式:Free ティア(無料枠)と Pro ティア(有料版)

プラグインのインストール後、IDE のアクティビティバーにある Amazon Q アイコンをクリックして認証を行います。

[!NOTE] プラグインのサポート終了予定について: AWS は、現在の Amazon Q Developer IDE プラグインのサポートを 2027 年 4 月 30 日に終了することを発表しています。AWS は公式ロードマップを確認しつつ、次世代のエージェント型コーディング、Model Context Protocol(MCP)、チャット機能を備えた移行先として Kiro などのツールの検討を推奨しています。


2. リアルタイムコード生成と対話型コーディング

Amazon Q Developer は、キーストロークに追従するインライン提案と、IDE サイドバーやエディタ上での対話チャットの 2 つの形態でコード生成を提供します。

インラインコード補完(Inline Suggestions)

コードの入力中や自然言語によるコメント記述時に、カーソル位置、インポート済みのライブラリ、ワークスペース周辺のコンテキストを解析し、グレーのゴーストテキストで予測コードをリアルタイム表示します。

主要キーボードショートカット一覧

操作内容macOS ショートカットWindows / Linux ショートカット
提案コード全体を採用TabTab
次の 1 単語のみ採用Cmd + 右矢印Ctrl + 右矢印
次の候補に切り替え右矢印(または Option + ])右矢印(または Alt + ])
前の候補に切り替え左矢印(または Option + [)左矢印(または Alt + [)
提案を破棄・非表示Esc またはタイピングを継続Esc またはタイピングを継続
手動で提案を強制呼び出しOption + CAlt + C

実践的なコード生成例

Python で非同期通信ユーティリティを実装する際、型ヒント付きの関数ヘッダーと詳細な Docstring を記述することで、堅牢なリトライ処理を含むロジックが自動生成されます。

import aiohttp
import asyncio
from typing import Dict, Any, Optional

# インラインコメントで Amazon Q Developer に生成を指示:
async def fetch_json_with_retry(
    url: str, 
    headers: Optional[Dict[str, str]] = None, 
    max_retries: int = 3, 
    backoff_factor: float = 1.5
) -> Optional[Dict[str, Any]]:
    """
    Fetch JSON payload from a remote endpoint with exponential backoff retry.
    Handles client connection timeouts and non-200 HTTP responses.
    """
    # Tab キーを押して Amazon Q が生成した実装を確定:
    timeout = aiohttp.ClientTimeout(total=10)
    for attempt in range(1, max_retries + 1):
        try:
            async with aiohttp.ClientSession(timeout=timeout) as session:
                async with session.get(url, headers=headers) as response:
                    if response.status == 200:
                        return await response.json()
                    elif response.status in (429, 500, 502, 503, 504):
                        await asyncio.sleep(backoff_factor ** attempt)
                    else:
                        response.raise_for_status()
        except (aiohttp.ClientError, asyncio.TimeoutError):
            if attempt == max_retries:
                raise
            await asyncio.sleep(backoff_factor ** attempt)
    return None

チャットパネルとインラインエディタチャット

複雑な設計の相談や複数ファイルにまたがるタスクには、対話インターフェースを活用します。

オープンソース参照追跡(Reference Tracker)

生成されたコードが公開リポジトリのコードと高い類似性を持つ場合、組み込みの Reference Tracker が警告を表示します。リポジトリの URL とライセンス種別(MIT、Apache 2.0、GPL など)が明示され、企業利用におけるライセンス侵害リスクを防止します。Pro ティアでは、オープンソースに一致するコードの提案自体を管理者ポリシーで一括ブロックすることも可能です。


3. 自動セキュリティ脆弱性スキャンとワンクリック修正

従来の静的コード解析(SAST)は CI/CD パイプラインの後半で実行されることが多く、手戻りコストが発生しがちでした。Amazon Q Developer は IDE のコーディング段階で即座にセキュリティ診断を実施します。

スキャン対象と検出エンジン

セキュリティスキャンは、大規模言語モデルと Amazon CodeGuru 検出器ライブラリ を組み合わせた確定型ルール推論によって支えられています。

セキュリティスキャンの実行方法

2 つの実行モードが用意されています。

  1. 常時自動スキャン(Auto-Scan): IDE 設定で有効化することで、ファイルの保存時にバックグラウンドで自動的に変更差分を検証。
  2. オンデマンドプロジェクトスキャン:
    • VS Code または JetBrains で対象プロジェクトを開く。
    • ステータスバーの Amazon Q アイコンをクリック、またはチャットパネルを開く。
    • Run Security Scan を選択(チャット内で「ワークスペース全体のセキュリティスキャンを実行して」と入力しても可)。
    • ワークスペースのファイル(上限 100 MB、テストコードや外部バイナリは自動除外)がパッケージ化され、解析が開始されます。

脆弱性の確認と修正パッチの適用

検出された問題は、IDE 標準の 「Problems」 パネルに集約され、CVSS 基準に基づき重要度(Critical、High、Medium、Low、Info)が表示されます。

[Problems - プロジェクト]
└── src/api/user_controller.py
    └── [High] 行 42: CWE-89 - SQL クエリ構築における文字列連結による脆弱性

検出項目をクリックすると、Amazon Q パネルに詳細な診断結果が表示されます。

  1. 根本原因の解説: 信頼できない入力が未検証のままデータベース実行部に達する仕組みを解説。
  2. CWE 識別番号: MITRE CWE の公式識別子を提示。
  3. 修正パッチの提示(Suggested Remediation): プレースホルダを用いたパラメータ化クエリや ORM への置き換え案を Diff 形式で生成。
  4. ワンクリック適用: Apply Fix または Insert at cursor をクリックすると、エディタ上のコードが自動置換され、再スキャンにより解決を確認できます。

4. レガシーコード変換:Java バージョン移行と自動化ワークフロー

大規模システムにおける Java のメジャーバージョンアップ(Java 8 から Java 17/21 への移行など)は、膨大な工数と非互換性リスクを伴います。Amazon Q Developer コード変換エージェント(Agent for Code Transformation) は、依存関係の更新、非推奨 API の書き換え、ローカルテスト検証までの一連の作業を自動化します。

対応する移行パスとビルドツール

移行元バージョン対応する移行先バージョン推奨ビルド環境
Java 8Java 17、Java 21Apache Maven(v3.8 以上)
Java 11Java 17、Java 21Apache Maven(v3.8 以上)
Java 17Java 17(依存関係刷新)、Java 21Apache Maven(v3.8 以上)
Java 21Java 21(ライブラリ保守更新)Apache Maven(v3.8 以上)
.NET Framework(Windows).NET 8(クロスプラットフォーム Linux 移行)MSBuild / Visual Studio

Java コード変換の実行前提条件

変換ジョブを実行する前に、ローカル環境が以下の要件を満たしている必要があります。

自動移行のステップ別実行手順

コード変換は以下のサイクルで安全に実行されます。

flowchart TD
    A["1. ジョブ開始 (/transform)"] --> B["2. ローカル Maven 事前検証ビルド"]
    B --> C["3. 暗号化通信で分離環境へ転送"]
    C --> D["4. AI が AST を解析し構文と依存関係を更新"]
    D --> E["5. 移行先 JDK でのコンパイルと単体テスト検証"]
    E --> F["6. 差分パッチを .aws/transform に取得"]
    F --> G["7. IDE の Diff ビューアでレビューと承認"]

ステップ 1:IDE で変換ジョブを開始

VS Code または IntelliJ IDEA のチャット欄で以下のコマンドを入力します。

/transform

またはツールメニューから Amazon Q: Code Transformation パネルを開きます。対象モジュールを選択し、移行先の JDK(例:Java 17 または Java 21)を指定します。

ステップ 2:ローカル事前ビルド検証

Amazon Q はローカルの Maven を実行してプロジェクト構造を検証し、抽象構文木(AST)情報を抽出します。既存コードがビルドできない場合はその場で中断され、無駄な処理を防ぎます。

ステップ 3:セキュアな変換と自動リファクタリング

事前検証後、プロジェクトコードは暗号化されて専用の安全な AWS 実行環境にアップロードされます。エージェントが以下の作業を実行します。

ステップ 4:移行先での検証ビルドとテスト実行

エージェントは移行先 JDK でプロジェクトをビルドし、既存の単体テストを実行します。シグネチャ変更に伴うコンパイルエラーが発生した場合は、自動で修正を試みながらテストが成功するまで調整を行います。

ステップ 5:差分確認とコミット

処理が完了すると、差分パッチとサマリーレポートがローカルの .aws/transform ディレクトリに返却されます。


5. Free ティア(無料枠)と Pro ティア(有料版)の比較

チームでの導入検討にあたり、ライセンス、セキュリティ、利用枠の違いを整理します。

比較項目Free ティア(AWS Builder ID)Pro ティア(月額 $19/ユーザー)
認証方式個人の AWS Builder ID(AWS アカウント不要)AWS IAM Identity Center(企業 SSO:Okta 等)
インラインコード補完制限なしで利用可能制限なしで利用可能
IDE チャット機能制限なしで利用可能制限なしで利用可能
セキュリティスキャン利用可能(標準プロジェクトスキャン)利用可能(企業ポリシー適用・自動スキャン)
エージェントタスク(/dev)月間 50 リクエスト/ユーザー月間 400 リクエスト/ユーザー(組織アカウント内でプール共有)
コード変換(/transform)月間 1,000 行(トライアル枠)月間 4,000 行/ユーザー(組織アカウント内でプール共有)
コード変換の超過料金超過利用不可(上限到達で停止)上限超過分は 1 行あたり $0.003 で従量課金
データプライバシー・学習サービス改善に利用される場合あり(オプトアウト可)顧客データを基礎モデルの学習に一切使用しない
知財侵害補償(IP 免責)対象外対象(生成コードに対する完全な知財侵害補償)
集中管理・ガバナンスなし(個人環境での管理)AWS 管理コンソールでの一括管理・ライセンス除外設定

6. 実務におけるベストプラクティスと導入指針

Amazon Q Developer を最大限に活用し、技術的負債を防ぐための実務指針は以下の通りです。


参考文献