AIコーディングが生んだ“品質管理”という新たな課題
昨年、AIに指示を出しながら感覚的に開発を進める“Vibe Coding”が話題となった。そこで施氏もAIコーディングで作ったきれいなWebサイトを公開し、意気揚々と社内のメンバーに報告したところ、「今すぐそのサイトをシャットダウンしてください。30秒でルート権限を取得できてしまいました」と警告されたという。
このエピソードからもわかるように、AIコーディングでは、生成コードの検証が不可欠だ。いくら外見上は問題がなくても、セキュリティ・可用性・保守性・OSSライブラリ・OSSライセンスなど、さまざまな問題が潜むリスクがある。
GoogleのCEOサンダー・ピチャイ氏が出演したPodcastでは、「Googleでは、AIコーディングツールの導入により、現時点で開発生産性が約10%向上している」と発言していた。人間とAIのコーディングスピードだけを比較すれば、もっと生産効率が高まってもおかしくはない。だが実際は、「誰がどのタイミングでAIが生成したコードをチェックするのか」という新たな課題が生じており、「レビューにかかる時間や労力が、効率性の改善幅を狭めている」と施氏は指摘する。
最近では、AIコーディングをした後に、同じAIエージェントで検証するケースもあるが、AIエージェントによる検証には、さまざまな制限がある。たとえば、判定根拠がブラックボックスで確率論的。学習データとプロンプトによって結果が揺らぐこともあり、再現性に難がある。セルフレビューには限界があり、生成側と同じバイアスを持っていることから、本当は問題があったとしても問題なしと判断してしまう可能性がある。そして何といっても、外部のAIモデルを利用すると、検証ごとにトークンを消費するため、コストが高騰する危険がある。
そこでSonarQubeの登場だ。SonarQubeの検証では、AIは使わない。内部の仕組みが見えるホワイトボックスで、決定論的だ。7,000以上のルールによって検証するため、どのルールのどの箇所に違反しているかが明示される。そのため再現性も100%。AIのように結果が揺らぐことなく、何度検証を走らせても、常に同じ箇所を問題点として指摘する。また、AIコーディングとは別の独立したレイヤーで検証するため、組織全体で共通の閾値を適用でき、個々のAIエージェントの癖に依らない。また、SonarQubeのコミュニティ版(SonarQube Community Build)であれば、エアギャップやオフラインの環境であっても、回数無制限でスキャンすることができ、ネットワーク通信費用は発生しない。(ちなみにSonarQubeにはOSS版のほかに、クラウド版やIDE連携機能もある)
AI時代の開発効率を支える「SonarQube」
では、ここからSonarQubeの6つの主な機能を紹介していく。
(1)コードセキュリティ:生成コードと参照OSSライブラリの両方を分析し、バグや脆弱性を検出
従来のSAST(Static Application Security Testing)などの静的解析ツールが扱う領域だ。SonarQubeはこの領域で17年間の長きにわたって取り組みを続けており、さまざまな知見を蓄積している。SonarQubeのコード分析は、単なるパターンマッチングではない。複数の関数やファイルをまたいでコンパイル相当の解析を行い、データフローを確認して問題がないかを検証する。高度な数学的手法に基づいてコードスキャンを行っているため、結果が揺らぐことはない。
(2)コード品質:可用性・保守性・重複度・テストカバレッジなどの観点から改善を提案
「Security(セキュリティ)・Reliability(信頼性)・Maintainability(保守性)・Hotspots(ホットスポット)・Dependency Risks(依存リスク)・Coverage(カバレッジ)・Duplications(コードの重複度)」それぞれの指標について、問題件数や潜在的なリスクを可視化。GUIでも確認できるが、IDEプラグインを使えば開発を止めずに修正できる。この結果はスキャンごとにSonarQube内に蓄積され、次のQuality Gateの判定にも活用される。
(3)Quality Gate:品質基準未達のコードを、マージ前に自動で遮断
Quality Gateでは、セキュリティ問題の件数やコードの重複率、テストカバレッジなど、さまざまなメトリクスを条件(コンディション)として設定しておくことで、企業としての品質基準を統合管理できる。
SonarQubeはDevOpsプラットフォームとも連携可能で、例えばGitHub Actionsと組み合わせることで、PR(プルリクエスト)作成時に自動でコードを解析する。解析結果はPRにコメントとして返され、Quality Gateを満たしていない場合は「基準を満たしていないためマージ不可」といった形で通知される。例えば、新しいコードに11件の問題と5件のセキュリティホットスポットが検出された場合、Quality Gateによりマージがブロックされる。
この仕組みにより、AIコーディングで生成された大量のコードも、品質基準を満たしたものだけをリポジトリに取り込めるようになる。Quality Gateは、品質低下をマージ前に確実に阻止する、いわば“門番”のような役割だ。
さらにSonarQubeには、SCA(Software Composition Analysis)機能も備わっている。SASTで人間やAIが書いたコードの問題を検出するだけでなく、オープンソースライブラリの脆弱性やライセンスのチェックもできるのだ。
(4)AI CodeFix・Remediation:検知した問題をAIが自動修正し、修正工数を激減
スキャンで見つけた問題をAIで自動修正する機能もある。どこにどんな問題があるのかを確認し、「Generate AI Fix」のボタンをクリックすると、該当するコード断片がSonarQubeのLLMモデルに送信され、修正案が提示される。エンジニアはその修正案をレビューし、「Accept(採用)/Reject(却下)」を選択するだけで良いため、修正作業を効率化できる。ちなみに、この自動修正もGUIだけでなくIDEからも利用できる。
さらに、問題の自動修正ができる機能として、新たに「Remediation Agent」という機能も搭載された(現在はベータ版として提供)。GitHub Actionsと連携した環境でQuality Gateに失敗すると、このRemediation Agentが該当する問題の修正案を提示する。それをエンジニアが確認して承認すれば、直接PRに適用される。これにより、コードをローカルに取り込み直して修正し、再コミットする必要がなくなるわけだ。現在はGitHub Actionsとの連携が中心だが、今後は他のDevOps基盤への適用も期待されている。
(5)MCP Server:AIが解析データに直接アクセスし、文脈に沿って改善
スキャン結果をAIエージェントと連携するための「MCPサーバー」も提供している。通常はコードのスキャン結果をGUIやIDEなどで確認するが、MCPサーバーを経由することで、スキャン結果のデータを直接AIエージェントに渡すことができる。これにより、脆弱性やバグの情報、該当するファイルや行番号、関連するルールなどのコンテキスト情報も一緒にAIエージェントへ提供できるため、AIによるコード修正の精度を高めながら、周辺コードへの影響を最小限に抑えられる。
(6)解析結果・SBOM出力:構成管理と品質状況を、自動生成レポートで可視化
SonarQubeでは、問題点がなくなったことを示すレポートも簡単に出力できる。業界標準への準拠証明やSBOM(Software Bill of Materials)のJSONファイルなどもダウンロード可能だ。
デモで見る「SonarQube」の最新機能
最後に施氏は、AIコーディング後にSonarQubeをどのように使うのか、デモを行なった。
施氏はAIエージェントに「簡易的なECサイトの作成」を依頼し、コードを生成。その後、生成されたコードをSonarQubeでスキャンし、セキュリティや保守性などの問題を確認した。そして検出された問題は、MCPサーバーを通じて、コンテキスト情報とともにAIエージェントへ送信。フィードバックを受け取ったAIエージェントが、順次コードを自動修正した。修正後に再度スキャンすると、すべての問題が解消されていることが明らかに。SonarQubeを活用すれば、AIコーディング後の検証から修正までを短時間で完結できることが示された。
「AIコーディングによって劇的に向上した開発効率を最大限に活かすには、SonarQubeを活用し、品質やセキュリティの検証スピードを落とさないことが重要だ」と語り、施氏はセッションを締めくくった。
SonarSource Japanからのお知らせ
本セッションでご紹介したサービスにご興味を持たれた方は、ぜひ公式サイトをご覧ください。

