Amazon Web Services ブログ

IDE 診断機能による Kiro の進化

エージェントが IDE のエラーを見逃す理由

初期のコーディングエージェントには大きな問題がありました。AI が生成したコードは一見正しく見えても、IDE が検出したエラーがエージェントには見えないのです。エージェントは追加のツールを実行しない限り、これらのエラーを認識できませんでした。その結果、エージェントは自信を持って次のタスクに進む一方で、コードベースには技術的負債が蓄積されていきました。これは、診断情報を活用していないコーディングエージェントに共通する根本的な課題です。

現代の IDE のほとんどは、リアルタイムでエラーを検出する高度な言語解析ツールを継続的に実行しています。しかし、エージェントがこの豊富な情報に効率的にアクセスできなければ、コード検証のために(コストのかかる)ビルド/テストコマンドを実行せざるを得ません。これは実行速度が遅く、トークンを消費し、開発環境がすでに提供している詳細なフィードバックを見逃してしまいます。結果として、必要以上にリソースを消費するコード検証プロセスになってしまうのです。

診断情報なしでコードを生成するコスト

エージェントが IDE の診断情報を参照できない場合、品質向上のための反復改善ができません。代わりに、正しいと思われるコードを生成して次のタスクに進んでしまいます。その結果、開発者がエージェントの品質保証を担うことになります。型エラーの手動修正(例:実際のプロパティは user.name なのに user.getName() を呼び出している)、不足しているインポートの追加(Button を使用しているのに import { Button } from '@/components/ui/button' を忘れている)、リンティング違反の解決(未使用の変数、一貫性のないインデント)などです。これは開発速度を低下させるだけでなく、エージェントが生成したコードへの信頼を損なう結果にもつながります。

Kiro におけるフィードバックループの完結

現代の IDE は、高度な言語解析インフラストラクチャで動作しています。言語サーバーがコードベースをリアルタイムで解析します。例えば、TypeScript 拡張機能は型チェックを実行し、ESLint はコードスタイルを検証し、Java 拡張機能は即座にコンパイルフィードバックを提供します。また、CloudFormation や Terraform の拡張機能は、デプロイ前にリソースプロパティ、必須引数、リソース参照などのインフラストラクチャ設定を検証します。

この解析はコーディング中に継続的に実行され、エラーを診断情報として表示します。エディタで見る赤い波線や問題マーカーがそれです。これらの診断情報は、コードの正確性に関する即座で正確なフィードバックの貴重な情報源となっています。

しかし、初期の AI コーディングアシスタントは、この情報にアクセスできませんでした。代わりに、ビルドコマンド(npm run buildnpm test など)を実行してコードを検証していましたが、1 回の実行に数秒から数分かかることもありました。

仕様駆動開発を通じて AI コーディングに構造をもたらすエージェント型 IDE である Kiro では、エージェントに IDE 診断情報への直接アクセスを提供することで、この課題を解決しました。現在、Kiro がコードを書くと、開発者が見るのと同じエラーを即座に確認し、レビュー前に修正できます。コード品質への影響は顕著で、手動修正が減り、プロジェクトの品質基準への準拠が向上しました。Kiro のコーディングエージェントは、これらのクライアント側の診断情報と緊密に統合され、コードの理解と生成の両方を強化します。IDE を動かすのと同じ言語サーバーへの接続を通じて、エージェントはコンパイル時エラー、型警告、リンティング結果をリアルタイムで読み取り、解釈できるようになりました。Kiro がコードを生成または変更すると、この診断情報を参照して正確性を検証します。例えば、Java の不足しているシンボルや Python の構文エラーを検出し、そのフィードバックに基づいて出力を自動的に改善できます。

ワークフローの比較

従来のアプローチは、遅い反復サイクルを繰り返します。エージェントがコードを生成し、時間のかかるビルド(および/またはテスト)コマンドを実行します。ビルドがエラーで失敗すると、エージェントは修正を生成し、再度ビルドコマンドを実行します。この重いプロセスは、ビルドが成功するまで繰り返されます。

診断駆動型アプローチははるかに高速です。コード生成後、エージェントは 35 ミリ秒未満で診断情報をチェックします。行番号と説明を含む具体的なエラーが提供されます。エージェントはターゲットを絞った修正を生成し、さらに 35 ミリ秒で診断を介して検証してから、検証済みのコードで続行します。

時間差は、複数ステップのタスクで複合的に拡大します。仕様駆動開発では、Kiro が数十のタスクを実装する際、診断ツールは vibe-coding モードと比較して約 4 倍の頻度で呼び出されます。これは、各タスクの境界で受け入れ基準が満たされていることを確認する必要があるためです。これにより、実装プロセス全体を通じて継続的な検証が実現されます。

実際の効果

本番環境での使用と制御されたベンチマークを通じて、診断統合の効果を測定しました。結果は、測定可能なコード品質の向上とともに、大幅な効率改善を示しています。効率面では、ビルド/テストコマンドの削減により、コマンド実行が 29% 削減されました。この指標は、診断機能の導入前後の数日間にわたる本番環境でのエージェントのインタラクション統計を比較することで算出されました。エンドツーエンドのレイテンシを削減しながら、コード品質が向上しました。

言語に依存しないアーキテクチャ

診断システムの強みは、その汎用性にあります。各言語用にカスタム解析を構築するのではなく、Kiro は、すでに多数の IDE 機能を支えている Language Server Protocol(LSP)と拡張 API を活用しています。本番環境のデータは、これが多様な技術スタックで機能することを実証しています。例えば、TypeScript、Python、Rust などの汎用言語や、SQL、YAML、GraphQL などのドメイン固有言語の人気のある拡張機能は、型チェックとリンティング情報を提供します。さらに、主要なビルドツール(Maven、Make、Cargo など)やプログラマティック設定ファイル(Terraform、Kubernetes YAML、Dockerfile など)の拡張機能により、セットアップとデバッグの体験が向上します。

活用シナリオ

本番環境での使用分析により、診断ツールが既存または新規生成されたコードの品質を向上させる一般的なパターンが明らかになりました。

シナリオ 1 [構文エラー]: 分析用の Python コードベースで、エージェントがウィンドウ集計の新機能を実装します。

診断ツールは、正規表現エラー(missing ), unterminated subpattern at position 13)を発見し、エージェントが修正します。再検証により、エラーが解消されたことが確認されます。診断ツールがない場合、エージェントはコマンドラインでテストを作成・実行して問題をチェックする必要があります。

シナリオ 2 [ハルシネーションの回避]: TypeScript コードベースで、Kiro がコンポーネントに変更を加え、即座に検証します。

診断ツールは、即座に 2 つの型の不一致Type 'number' is not assignable to type 'string'Cannot assign to read-only 'executionTime')とプロパティのハルシネーションProperty 'itemAge' does not exist on type 'StackProps')を報告します。これらの問題を基に、エージェントは修正を生成し、変更を再検証します。このパターン(生成 → 検証 → 改善)は、型エラーが一般的ですが言語サーバーで簡単に検出できる静的型付け言語で頻繁に見られます。

シナリオ 3 [型検証]: Swift プロジェクトで、Kiro が新しい機能を追加し、編集されたファイルの診断をチェックします。

診断により、ファイルの 1 つに型エラーがあることが判明します。エージェントは問題を修正し、影響を受けたファイルを再検証して、修正が正しいことを確認します。

シナリオ 4 [Infrastructure as Code — IaC]: 診断検証は、アプリケーションコードを超えて機能します。ユーザーが Kiro に Terraform 設定のチェックを依頼します。

これは、診断システムが従来のプログラミング言語だけでなく、ドメイン固有言語や設定フォーマットでも機能することを示しています。

エージェント開発のメリット

コード生成とコード検証を統合することで、診断ツールは次の改善を実現します:

認知負荷の軽減: AI が生成したコードを手動で検証する時間が減ります。Kiro が「診断エラーなし」と報告すると、開発者はより高い信頼性を持って作業を続行できます。

高速な反復: bash コマンドの実行頻度の削減は、具体的な時間の節約につながります。

コード品質の向上: 問題が発生した時点で即座に対処することで、よりクリーンで高品質なコードが実現します。

まとめ

IDE 診断情報は、コード検証のための重要な即時フィードバックの源です。診断情報を Kiro のエージェントワークフローに直接統合することで、初期のコーディングエージェントが抱えていたコード生成と検証の間のギャップを解消しました。

結果は明確です。コマンド実行の削減、高速な検証サイクル、多様な技術スタックにわたるコード品質の向上を実現しました。エージェントに遅くてコストのかかるビルド/テストコマンドに依存させるのではなく、Kiro は、すでに現代の IDE を支えている高度な言語解析インフラストラクチャを活用します。TypeScript の型チェックから Terraform の設定検証まで幅広く対応しています。

この診断駆動型アプローチは、エージェントのフィードバックループを高速化します。盲目的にコードを生成して動作を期待するのではなく、Kiro は開発者が見るのと同じエラーを確認し、積極的に修正します。結果として、手動修正が少なく、開発者の信頼を得られるコードが実現します。

この違いを体験する準備はできましたか?Kiro を無料で始めて、診断機能を備えたエージェントが開発ワークフローをどのように変革するかを確認してください。Discord のコミュニティに参加して、フィードバックを共有し、質問をし、AI 支援コーディングで開発している他の開発者とつながりましょう。

謝辞

クレジット(アルファベット順):Al Harris、Nathan Jones、Nikhil Swaminathan、Siwei Cui、Varun Kumar