【ITニュース解説】I Asked Kiro to Understand My Verilog Codebase — It Built Me an AI-Powered EDA Assistant
2025年09月15日に「Dev.to」が公開したITニュース「I Asked Kiro to Understand My Verilog Codebase — It Built Me an AI-Powered EDA Assistant」について初心者にもわかりやすく解説しています。
ITニュース概要
複雑なVerilog開発をAIが効率化する「VeriGraph」が誕生した。AIツールKiroは開発計画からコード生成、デバッグまでをVS Code上で支援し、煩雑なハードウェアプロジェクトを効率的なワークフローへ変革する。AIとの協業で開発の質とスピードが向上した。
ITニュース解説
ニュース記事は、ハードウェアの設計に使われるVerilogというプログラミング言語での開発を、AIの力を借りて効率化する新しいツール「VeriGraph」を開発した話だ。システムエンジニアを目指す皆さんにとって、これはAIがどのように開発プロセス全体を変革し、特に特定の分野の課題解決に貢献できるかを示す良い事例となるだろう。
ハードウェアエンジニアは、新しい製品やシステムの「頭脳」となるチップや回路を設計する。その設計にはVerilogのようなハードウェア記述言語が使われる。しかし、その開発現場には大きな課題があった。エンジニアはコードを書くこと自体よりも、書かれたコードの中をさまよったり、部品(モジュール)がどこにあるかを探したり、信号がどのように流れるかを理解しようとしたりする時間に、最大で3割もの時間を費やしているという。これは、Verilogのプロジェクトが往々にして整理されておらず、多くのファイルにモジュールが散らばっていたり、信号のつながりが見えにくかったり、肝心なドキュメントが不足していたりするためだ。既存のAIツールも、ソフトウェア開発向けのものがほとんどで、ハードウェア記述言語の特殊なニーズには対応できていなかった。
この状況を変えたいという思いから、著者はKiroというAI搭載の統合開発環境(IDE)を使って、Verilogコードを理解し、開発を支援するシステム「VeriGraph」の構築を試みた。VeriGraphは、AIを活用し、Verilogコードの構造をグラフとして理解することで、エンジニアが設計の中を迷わず進み、バグを見つけ、品質の高いコードを書けるようにするツールだ。しかも、パフォーマンス監視やデバッグ機能も考慮されている。
Kiroを使った開発の始まりは、著者が「Verilogコードベースをインデックス化するツールを作ってほしい」と依頼したところから始まった。普通のAIならすぐにコードを生成しようとするが、Kiroは違った。驚くべきことに、まず「コードを書き始める前に、計画を立てませんか?設計書(design.md)、要件定義書(requirements.md)、タスクリスト(tasks.md)を生成しましょうか?」と提案してきたのだ。この「立ち止まって考える」というKiroの姿勢が、開発プロセスを大きく変えたと著者は述べている。
Kiroが生成したこれらのドキュメントは、プロジェクトの方向性を明確にする上で非常に役立った。design.mdは「なぜこのツールを作るのか」「何を作るのか」といった目的やビジョン、アーキテクチャ(全体の構造)を定義する。requirements.mdは「どんな機能が必要か」「どんな制約があるか」「どれくらいの性能を目標とするか」といった、ツールが満たすべき具体的な要件を洗い出す。そしてtasks.mdは、プロジェクトを具体的な作業ステップに分解し、それぞれの作業の依存関係や必要な工数を整理する。この計画的なアプローチによって、これまでは勘に頼りがちだったソフトウェア開発が、明確な道筋を持った作業へと変わったという。
計画が固まった後は、いよいよ開発フェーズだ。著者はtasks.mdに記載された個々のタスクを選び、「Kiro、このタスクを実行して」と指示した。するとKiroは、タスクに応じたコードを生成する。著者はそのコードを確認し、テストし、必要に応じて修正してからプロジェクトに組み込むというサイクルを繰り返した。これはまるで、事前にプロジェクトの仕様をすべて読み込んだ熟練のパートナーと二人でプログラミングをしているような感覚だったという。例えば、「LRU(Least Recently Used)キャッシュとディスクフォールバックを備えたCacheManagerを実装して」と指示すると、KiroはTypeScriptのインターフェースや有効期限(TTL)のサポートまで考慮したコードを生成した。さらに、Kiroは単に指示に従うだけでなく、設計目標に基づき「使われていない信号の検出」のような、一歩踏み込んだ提案まで行うこともあった。
こうして開発されたVeriGraphには、以下のような主要な機能が組み込まれている。一つは「マルチレベルキャッシュ」で、メモリとディスクを組み合わせることで、Verilogのシンボル(部品や信号の名前)を高速に検索できるようにする。二つ目は「AIサービスマネージャー」で、複数の大規模言語モデル(LLM)プロバイダーを抽象化し、どれかが使えなくても別のLLMに切り替えたり、リアルタイムで応答をストリーミングしたりできるようにする。三つ目は「グラフビルダー」で、Verilogのコードから抽象構文木(AST)を解析し、モジュールの階層構造や信号の接続関係を視覚的なグラフとして構築する。これにより、複雑な回路のつながりも一目で理解できるようになる。他にも、VS Code上でのコード補完(IntelliSense)や定義へのジャンプ、参照検索といった開発者支援機能の強化、さらにパフォーマンス監視やエラー処理の仕組みも組み込まれた。
もちろん、Kiroも完璧な魔法の箱ではなかった。特定のVerilogの構文(「generateブロック」という構造)を最初から理解できなかったり、AIが参照できる文脈の長さ(AIコンテキスト)が長すぎると問題が発生したり、VS CodeのAPI(アプリケーションプログラミングインターフェース)の正しい使い方を誤ったりすることもあった。しかし、そのような時は著者が具体的なコード例を与えたり、「どうすれば文脈を短くできるか」と質問したり、「このAPIではなく、こちらを使って」とフィードバックを与えたりすることで、Kiroは学習し、成長していった。この経験から得られた教訓は、AIはただ指示を出す相手ではなく、適切な情報やフィードバックを与えることで共に学び、成長していく「思考パートナー」であるということだ。
この開発経験を通じて、著者は現代のIDEが抱える問題点と、AIによって改善できる可能性についても多くの示唆を得た。例えば、関連性のないコード補完候補が表示されたり、提案の品質が低かったりする現状がある。これに対し、AIが生成または修正したコードの変更点をGitのように差分表示する機能や、AIが開発の意図を汲んで自動的にコミットメッセージを生成する機能、誤った情報を生成する「ハルシネーション」を防ぐためにWeb検索やドキュメントを統合する機能、ファイル間の文脈を理解する能力などが今後のIDEに求められる。さらに、AIによるコードレビュー支援、エラー予測、セキュリティ考慮の提案なども、開発者の生産性とコード品質を大きく向上させるだろう。
最終的に、Kiroは単なるコーディングアシスタントにとどまらず、開発者がより良いソフトウェアを計画し、構築し、リリースするための思考パートナーとなった。構造化された思考プロセスとAIの支援を組み合わせることで、圧倒されがちな複雑なプロジェクトも、管理しやすく生産的なワークフローへと変えられることを「VeriGraph」の開発は示した。この経験は、AIとの協業の仕方を教えてくれるものだ。AIに適切な文脈を与え、その提案を洗練させ、現実世界の問題を一緒に解決していくこと。これこそが、AIアシスト開発の未来の形だと言えるだろう。