メインコンテンツへスキップ
TOP/ サービス/ MCPツール/ AI変更検証AI
BETA / QA向けMCP / ai-change-verify実装・コードレビュー

AI変更検証AI

AIが書いた変更、本当に要件どおりで、既存を壊していないと言い切れますか。

無料ベータ・面談制/正式版は有料提供予定

言語不問 決定的(LLM不使用)

前提:change/requirement/testsの3点セット(requirementはREQ-ID+受入条件文+参照シンボル/ファイル名を含めること)

  • 所要時間: 30分
  • 進め方: 現場の状況をヒアリングし、最初に効くツールと順番を一緒に決めます
  • ご準備は不要です

概要

AIに任せた実装は「それらしく」見えても、要件の一部が未実装だったり、テストが無いまま通っていたり、要件に無い変更が紛れ込んでいたりします。人手のレビューはこの3種の穴を取りこぼしがちです。マージ前に「変更×要件×テスト」の三点照合を機械化することで、退行と要件漏れを入口で止めます。

効果

  • 要件に対する未実装を漏れなく洗い出す。
  • テストの無い変更を検出し、退行・正しさの未確認を防ぐ。
  • 要件に無い混入を可視化し、想定外の変更・退行リスクを抑える。
  • 各指摘に「どこを実装する/どのテストを足す」までの直し方が付く。
  • 同じ入力に同じ結果(決定的)なので、CIのブロッキングゲートに組み込める。

インプット

  • 変更内容
  • 要件
  • テスト

汎用LLMとの違い

「変更×要件×テスト」をカバーの抜けとして漏れなく数え上げる照合の設計と、表記ゆれを吸収して同一視する抽出・正規化規則が bubo 独自の中核です。汎用LLMと違い、大きな変更でも取りこぼさず、同じ入力に同じ結果を返す再現性を提供します。

EXAMPLE

実際の入力と、返ってきた出力

同じ変更diff・要件・テスト記述を ai-change-verify にそのまま渡した実際の出力です(要約ではありません)。

入力した変更diff・要件・テスト記述(実物)
※ 5つのhunkに分かれた実際のdiffのうち、掲載スペースの都合で先頭と末尾を抜粋しています。要件・テスト記述は全文です。

【AIが出した変更(diff・抜粋)】
diff --git a/src/refund_batch.py b/src/refund_batch.py
@@ -1,4 +1,4 @@
-"""Refund batch processing."""
+"""Refund batch processing (scaled feature)."""
+
+def apply_refund(session_id, amount):
+    """Apply a refund for a completed checkout session."""
+    return {"session_id": session_id, "amount": amount}

(中略:_validate_refund_window / _log_refund_event / _notify_finance_team が
 それぞれ別のhunkとして追加される)

@@ -80,3 +90,11 @@
+def _normalize_legacy_currency_code(code):
+    """Normalize legacy 2-letter currency codes to ISO-4217 3-letter codes."""
+    _LEGACY_MAP = {"US": "USD", "JP": "JPY"}
+    return _LEGACY_MAP.get(code, code)

【要件】
# 要件: 部分返金機能のスケール実装

対象ファイル: src/refund_batch.py

- `apply_refund` を実装し、完了済みセッションへの返金を適用できること
- `_validate_refund_window` で返金可能期間外の返金を拒否できること
- `_log_refund_event` で返金の監査イベントを記録できること
- `_notify_finance_team` で財務チームへ返金発生を通知できること

【テスト記述】
# テスト: 部分返金機能のスケール実装(src/refund_batch.py 対象)

- `apply_refund` が返金額をレコードへ正しく反映することを検証するテスト
- `_validate_refund_window` が期間外の返金を拒否することを検証するテスト
- `_log_refund_event` が監査イベントを記録することを検証するテスト
- `_normalize_legacy_currency_code` が旧2文字コードをISO-4217へ変換することを検証するテスト
ai-change-verify の回答(実測そのまま)
# AI変更の検証結果

## 指摘一覧(2件)

### 1. この変更を検証するテストが無く、正しさ・退行有無を確認できない
- 場所: _notify_finance_team
- 直し方: `_notify_finance_team` を参照・検証するテストを追加する
- 指摘ID: `ea6725e8b877`(report_outcome で正否・採否を記録できます)

### 2. 要件に無いシンボル/ファイルが変更に含まれ、要件外の混入・退行リスクがある
- 場所: _normalize_legacy_currency_code
- 直し方: `_normalize_legacy_currency_code` が要件のどこに対応するか確認し、無ければ分離/取り消す
- 指摘ID: `62a3bb10d577`(report_outcome で正否・採否を記録できます)

あわせて機械可読な判定も返ります(抜粋):
{
  "change_symbols": ["_log_refund_event", "_normalize_legacy_currency_code",
                     "_notify_finance_team", "_validate_refund_window", "apply_refund"],
  "change_files": ["src/refund_batch.py"],
  "verdict": {
    "verified": false,
    "verifiable": true,
    "n_gaps": 2,
    "by_kind": {"unimplemented_requirement": 0, "untested_change": 1, "scope_creep": 1}
  }
}

本ツールは変更diffから抽出したシンボル一覧(5件)と要件・テスト記述を機械的に突き合わせ、指摘をscope_creep/untested_changeという固定の種別とverdictに落とし、同じ入力なら常に同じ2件を同じ順で返します。指摘IDで採否も記録できます。

社外秘のコードを、どう守るか

buboは入力を保存しません

ツールに渡したコード・仕様・データを、buboのサーバーは保存しません。bubo自身が学習に使うこともなく、処理はその場限りです。

AIに送るか・どこへ送るかは、あなたが握ります

標準のキーレス接続では、意味を読む処理は普段お使いのAIクライアントの中で実行されます。データの扱いは、お客様とそのプロバイダの既存のご契約のもとにあり、buboがAPIキーやコードをお預かりすることはありません。ご自身の契約するプロバイダを直接指定したい場合は、BYOK(Bring Your Own Key)として任意で設定できます。

AIに送らず動くツールも多くあります

多くのツールは決定的な静的解析だけで完結し、LLMに渡すのは必要な場面に限られます。AIに送る範囲を、あなた自身で絞り込めます。

ワンタイムコードは単回使用・有効期限7日・サーバーに平文保存はしません。発行したトークンは設定ファイルに直書きせず環境変数で参照します。既存のMCP設定がある場合も、壊さず冪等にマージします。

どう申し込み、どうつなぐのか

STEP 1

1. 面談を予約する

予約フォームから面談をお申し込みください。現在のQAの困りごとと、試したいツールをお聞かせいただきます。

STEP 2

2. 面談で適用先を一緒に決める

そろえたツールのうち、貴社の工程で効く順番をご一緒に見立てます。ワンタイムコードと接続コマンドは、面談後にあわせてお渡しします。

STEP 3

3. コード1つ、コマンド1行で接続

お受け取りしたワンタイムコードで、コマンドを1行実行(Windows / mac / Linux 各1行)。有効化・MCP設定(.mcp.json)生成・環境変数設定まで自動で完了します。あとはAIクライアント(Claude Code / Gemini CLI)を再起動するだけで、そのままQA方法論を呼び出せます。APIキーのご用意は不要です。ご自身の契約するLLMを使いたい場合は、BYOK(Bring Your Own Key)として任意で設定いただけます。

← QA向けMCPツール一覧へ戻る

AIの番人になる道具「Nioh」を、まず試す

貴社のQA工程に合わせて、Niohのどのツールから始めるかをご一緒に見立てます。無料ベータの枠には限りがあります。まずは面談からお気軽にどうぞ。