Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
レビューナレッジの構造化・コンテキスト化による生成AIコードレビューコメントのノイズ削減
Search
ハゲワシ
September 09, 2026
Programming
3
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
レビューナレッジの構造化・コンテキスト化による生成AIコードレビューコメントのノイズ削減
ソフトウェア品質シンポジウム2026(SQiP2026) B1-2
ハゲワシ
September 09, 2026
More Decks by ハゲワシ
See All by ハゲワシ
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
790
食べログが挑む!飲食店ネット予約システムで自動テスト無双して手動テストゼロを実現する戦略
hagevvashi
3
3.1k
インプロセスQAとテスト自動化の両輪で進める食べログの開発生産性と品質改善の3年間
hagevvashi
2
10k
君もテスト自動化の同志を増やすパターンで大勝利!
hagevvashi
0
240
○郎系ラーメンを注文したつりだったのにトールバニラノン ファットアドリストレットショットチョコレートソースエクス トラホイップコーヒージェリーアンドクリーミーバニラフラペ チーノが出てきた話 〜ミスコミュニケーションが起こした悲劇〜
hagevvashi
2
2.8k
自動テストのFour Keys ~テストプロセスのソフトウェア化の4つの鍵~
hagevvashi
7
4.9k
マトリクス型組織の導入後の変化を定量的に捉える
hagevvashi
1
6.8k
食べログのソフトウェアテスト自動化デザインパターン
hagevvashi
4
6.2k
【Test Engineers Meetup #4】食べログのソフトウェアテスト自動化デザインパターン
hagevvashi
1
4k
Other Decks in Programming
See All in Programming
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.7k
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
130
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
130
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
140
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
350
新卒PdEのリアル
ryu1013
1
390
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
130
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
What We Talk About When We Talk About XP
m_seki
2
350
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.3k
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
280
Oxlintはいいぞ(続)
yug1224
1
540
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
290
Documentation Writing (for coders)
carmenintech
77
5.5k
Chasing Engaging Ingredients in Design
codingconduct
0
300
So, you think you're a good person
axbom
PRO
2
2.1k
Mind Mapping
helmedeiros
1
350
Making the Leap to Tech Lead
cromwellryan
135
10k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
590
AI: The stuff that nobody shows you
jnunemaker
PRO
9
970
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
320
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Transcript
レビューナレッジの 構造化・コンテキスト化による 生成AI コードレビューコメントの ノイズ削減 2026年09月10日(木) 株式会社カカクコム 食べログカンパニー 開発本部 品質管理部
菅原 直人 © Kakaku.com Inc. All Rights Reserved. 1
目次 © Kakaku.com Inc. All Rights Reserved. 1. 背景と本報告の位置づけ 2.
素朴なプロンプトの観点定義に起因するノイズ 3. 1レビュー観点のコンテキスト化とレビュー観点全体の構造化 4. 適合率87.8%と欠陥流出の評価 5. レビュー観点設計方法論の有効性 6. おわりに 2
1. 背景と本報告の位置づけ © Kakaku.com Inc. All Rights Reserved. 3
背景とねらい ▪背景 • • • 人間によるソースコードレビューは、 ◦ 属人化・見落とし・時間コストという課題を抱えてきた 長年の運用を通じてレビュー観点の設計方法論が蓄積されている 近年、コードレビューを生成
AI に担わせる試みが広がっている ▪ねらい 人間レビューの暗黙知を、生成AI用の形式知へ変換すること ねらいの理由: 蓄積されたレビュー観点は人間の読み手を前提に書かれている 生成 AI にそのまま渡しても機能しない ▪スコープ • • 生成 AI のコメントを人間が全て確認・修正する前提で、ノイズの削減まで 再現率の評価は扱わない © Kakaku.com Inc. All Rights Reserved. 4
2. 素朴なプロンプトの観点定義に起因する ノイズ © Kakaku.com Inc. All Rights Reserved. 5
本コードレビューシステム 本コードレビューシステムはマージ前の PR 差分を入力とし、生成AIが指摘コメントを投稿する 入力 マージ前のPRの差分 出力 実行器 PRへの指摘コメント 汎用AI
エージェント コンテキスト 集計対象期間を通じて同一 モデルは学習させない レビュー実行時に 読み込むもの モデルを学習させるのではなく、渡すコンテキストの設計でレビューを実現する © Kakaku.com Inc. All Rights Reserved. 6
AIに渡すコンテキストの初期バージョン―素朴なプロンプト 素朴なプロンプトとは ▼例) 観点『ケアレスミス』の定義 何を探すか 人間のレビューコメントから抽出した14観点を 人間向けに書かれた形のまま列挙した、 手続き的なプロンプト 単純なタイポ,コピペミス,変数名の間違い... 省略
どう探すか ▼素朴なプロンプトの14観点 BAD・GOOD のコード例つき全 7 項目 省略 何を指摘するか 期待する指摘事項羅列 何を探すか・どう探すか・何を指摘するかのみ書かれている → それ以外は人間が暗黙的に処理する前提 © Kakaku.com Inc. All Rights Reserved. 7
素朴なプロンプトを渡した結果 素朴なプロンプトをそのまま渡すと、85.9% (249/290)のコメントがノイズ ▼素朴なプロンプトの14観点のコメント数と適合率 ※コメントが複数観点に該当するため合計は 290 を上回る ポイント① ポイント② ポイント①
© Kakaku.com Inc. All Rights Reserved. 適合率は観点によって0%〜約35% ポイント② 8 コメント数が最も多い 2 観点は、 いずれも全体の 14.1%を下回る
ノイズの出所 ノイズと判定された指摘は、観点定義に書かれたとおりに出力されたもの ▼投稿された指摘 ▼観点『ケアレスミス』の定義(再掲) 何を探すか 単純なタイポ,コピペミス,変数名の間違い... 省略 どう探すか BAD・GOOD のコード例つき全
7 項目 観点: ケアレスミス / 品質保証担当者の判定: バグでない • 指摘の内容は正しい ◦ ゼロ幅スペース文字は実際に混入 • 観点定義の記述と合致 ◦ この観点が探す対象(コピペミス) • 実害がないが投稿 ◦ 投稿する基準が観点定義にない © Kakaku.com Inc. All Rights Reserved. 省略 何を指摘するか 期待する指摘事項羅列 14 観点はいずれもこの 3 つの見出しだけ いつ適用するか・投稿するかどうか を書いた観点は 1 つもない 9
他に試してうまくいかなかった仮説 適合率は 観点の数を減らしても 36.2%、観点ごとに条件を与えても 41.6% 仮説1 仮説2 観点の数を減らせばノイズは解決する 観点ごとに条件を与えていけばノイズは解決する →
適合率の低い観点を廃止 14 観点 から 9 観点に削減 → 1 観点に いつ観点を適用するかの条件だけを付与 結果 結果 適合率: 14.1% → 36.2% 適合率: 36.2% → 41.6% コメントの 6 割はノイズのまま 仮説1 から約 5 ポイントしか動かない → どちらの仮説も棄却 © Kakaku.com Inc. All Rights Reserved. 10
3. 1レビュー観点のコンテキスト化とレビュー 観点全体の構造化 © Kakaku.com Inc. All Rights Reserved. 11
適合率が低い原因と提案手法 最終的に行き着いた原因は、ドメイン知識不足とプロンプト読み飛ばしの 2 点 原因 提案手法①【中核】 ▪原因1: ドメイン知識不足 1レビュー観点のコンテキスト化 投稿の可否を判断する材料が観点定義にない
→ 当該サービスでどの程度のリスクかが分 からない → 該当箇所をすべて投稿 原因1 ▪原因2: プロンプト読み飛ばし 原因2 レビューのたびに 14 観点すべての定義を読む → 差分に関係のない観点も同時に読む → 個々の観点に集中できない サービス固有のリスク判断を 各観点へ持ち込む 必要な観点の詳細だけを読ませる 提案手法②【前提条件】 レビュー観点全体の構造化 ①を全体に行き渡らせるための前提 © Kakaku.com Inc. All Rights Reserved. 12
1レビュー観点のコンテキスト化の定義 1レビュー観点のコンテキスト化とは 人間レビュー時に暗黙的に処理されていた暗黙知 • 「いつ観点を適用するか」(トリガー) • 「何を投稿対象とするか」(深刻度評価) を、生成 AI が実行可能な形式知として各観点に付与すること
▼規格化された全観点同一のプロパティ構成 プロパティ 要否 説明 トリガー 必須 いつこの観点を適用するか 検出手順 必須 問題を見つけるための手順 深刻度評価 必須 Critical・High・Ignore の判定基準 外部情報 任意 ドメイン固有の知識への参照名 具体例 任意 検出手順から参照される、問題を見つける手がかり 規格に沿ったレビュー観点は、ファイルとして置いて実行器に読ませる © Kakaku.com Inc. All Rights Reserved. 13
1レビュー観点のコンテキスト化の例 規格に従ったレビュー観点の実物(観点「共有ライブラリのアクセス権限問題」) ▼観点定義書 ▼検出手順書 トリガー リポジトリ名とパスの条件 省略 検出手順 専用の検出手順書 →
深刻度評価 結果の種類: データ不整合・実行時エラー 省略 外部情報 ドメイン固有の知識は 観点の外に配置 観点からは参照名で指す 省略 具体例 サブシステム依存関係定義(外部情報)を参照 アクセス制限(access_matrix)の有無で判定 省略 トリガー(リポジトリ名とパスの条件)と深刻度評価(結果の種類)は、差分に現れる文字列だけで判定できる © Kakaku.com Inc. All Rights Reserved. 14
レビュー観点全体の構造化 SQiP などで人間によるソフトウェアレビューの知見は蓄積されてきた 安達の「レビュー目的達成のためのアプローチ概要設計」も、その一つ 安達の「レビュー目的達成のためのアプローチ概要設計」とは? 課題 レビュー観点を並べても、重複や抜け漏れが出て、表面的な指摘に終わる 原因 観点の粒度が揃わず、手順と目的が混ざり、観点どうしの関係が見えないため 解決
レビュー目的から段階的に分解した構造として、レビュー観点を設計する ➤ 目的(Goal) → 目的達成に必要な事項(Strategy) → 必要事項の内訳(subGoal) 段ごとに役割が決まるため、同じ段の観点は粒度が揃い、 手順と目的が段として分かれ、観点どうしの関係が親子として見える → この知見をAIによるレビューのコンテキストとして再利用する © Kakaku.com Inc. All Rights Reserved. 15
レビュー観点全体の構造化の例 安達賢二,「レビューでは何を確認するといいのかな?」, JaSST Review’22 ワークショップ, 2022 年 © Kakaku.com Inc.
All Rights Reserved. 16
レビュー観点全体の構造化が要る理由 1 つの観点だけを見ても、決まらないことが 2 つある • 目的に照らしてその観点が要るのか • 他の観点とどの粒度で分かれるのか これらは、観点群の全体に対してしか決められない
→ これらが決まっていなければ、トリガーも深刻度評価も書けない ▼素朴なプロンプトの14観点 ▪素朴なプロンプトの観点定義の問題 軸が混在 例) 不具合の種類・テスト技法・テスト対象など 名前が名乗るものが不揃い 例) 1 つの名前に 2 つが混在 © Kakaku.com Inc. All Rights Reserved. 17
5階層の観点ツリー 軸を揃えたことで、14 観点すべてにトリガーと深刻度評価を同じ基準で書けるようになった 目的 戦略 観点導出アプローチ 上位観点 観点 A1-1-1: 共有ライブラリのアクセス権限問題
A: 障害(ビジネス影響) に着目 A1: 過去の障害事例 A1-1: 影響範囲の考慮漏れ A1-1-2 処理フロー順番変更による影響 A1-1-3 データ変更による間接的影響 A1-1-4 DB マイグレーションの破壊的変更 B1-1-1 仕様未実装 B1: 仕様書や設計と比較して 見つける欠陥 欠陥検出 B1-1: 要件不一致 B1-1-2 誤実装 B1-1-3 超過実装 B1-2: 設計ミス B1-2-1 ノーインデックス B2-1-1 セキュリティ脆弱性 B: 欠陥(原因)に着目 B2-1-2 ケアレスミス B2: Diff だけで分かる欠陥 B2-1: 実装欠陥 B2-1-3 マークアップミス B2-1-4 対応漏れ B2-1-5 実行時エラー B2-1-6 エラーハンドリングミス ▪特徴1 目的を最上位に固定し、目的外の要素を排除する ▪特徴2 戦略から観点へ抽象度を段階的に下げ、各階層で粒度を揃える ▪特徴3 観点名を「テスト対象・テスト技法」ではなく「欠陥・ハザード」の視点で統一する © Kakaku.com Inc. All Rights Reserved. 18
レビュー1回の実行手順 実行手順 ― AIが(1)〜(5)まで一気通貫で実行 PR差分投入 レビュー観点全体の構造化 ・全体構造の把握 に使用 (1)観点ツリーを読む(全体構造の把握) (2)各観点のトリガーと差分を照合
(3)合致した観点の検出手順を読む(段階的開示) (4)検出手順に従って差分を分析し、問題を検出 (5)観点ごとの判定基準で深刻度を判定(投稿要否の判断) Critical コメント投稿 © Kakaku.com Inc. All Rights Reserved. High Ignore 投稿なし 19 1レビュー観点のコンテキスト化 ・観点の絞り込み ・投稿要否の判断 に使用
4. 適合率87.8%と欠陥流出の評価 © Kakaku.com Inc. All Rights Reserved. 20
評価指標と算定対象 評価には、ノイズの少なさを表す指標として適合率を用いる 段階 観点数 トリガー/深刻度 PR数 コメント数 コメント/PR 妥当な指摘/PR 適合率
素朴なプロンプト 14 0/0 132 290 2.20 0.31 14.1% 観点の削減 9 0/0 202 290 1.44 0.52 36.2% トリガーの先行適用 10 1/0 171 618 3.61 1.50 41.6% 全観点への適用 14 14/14 146 41 0.28 0.25 87.8% ▪評価指標と算定対象 適合率 … 本システムが投稿したコメントに占める妥当な指摘の割合 分母は各段階の算定対象コメント数(290 / 290 / 618 / 41) 標本抽出は行っていない 判定基準は全段階で同一 集計対象期間 … 2025年11月〜2026年4月。4段階は上から順に切り替えて運用 トリガー/深刻度 … トリガーと深刻度評価を定義していた観点の数 PR数 © Kakaku.com Inc. All Rights Reserved. … 本システムのレビューを実行した PR の数 (指摘コメントが 1 件も投稿されなかった PR を含む) 21
適合率とコメント数の推移 ▼適合率とコメント数の段階別の推移 段階 ポイント② ポイント① 観点数 トリガー/深刻度 PR数 コメント数 コメント/PR
妥当な指摘/PR 適合率 素朴なプロンプト 14 0/0 132 290 2.20 0.31 14.1% 観点の削減 9 0/0 202 290 1.44 0.52 36.2% トリガーの先行適用 10 1/0 171 618 3.61 1.50 41.6% 全観点への適用 14 14/14 146 41 0.28 0.25 87.8% ポイント① 適合率は 14.1% から 87.8% へ改善 ポイント② コメント数/PR を 87% 減らしつつ、妥当な指摘/PR は 0.31 件から 0.25 件の減少にとどめた ※リリース後に流出する欠陥は増えなかった © Kakaku.com Inc. All Rights Reserved. 22
5. レビュー観点設計方法論の有効性 © Kakaku.com Inc. All Rights Reserved. 23
考察: レビュー観点設計方法論の生成AIに対する有効性 結果: 構造化レビュー観点 を導入することで 14.1% から 87.8% に適合率が上昇 →
安達のレビュー観点構造化の手法が効いた → AIでもこの構造化が効いたと考えられる理由: ハーネスエンジニアリングの索引と段階的開示として動作したため ハーネスエンジニアリングにおける 段階的開示の 2 要素 本取り組みでの提案手法 全体構造を示すマップ(索引) レビュー観点全体の構造化 詳細のオンデマンド参照(段階的開示) 1レビュー観点のコンテキスト化 ⭐人間のために蓄積されてきたレビュー観点の設計方法論は、生成AIに対しても有効だった 言い換えると、人間もAIも、レビューする時は一つの観点に集中したほうが良い © Kakaku.com Inc. All Rights Reserved. 24
6. おわりに © Kakaku.com Inc. All Rights Reserved. 25
おわりに 1レビュー観点のコンテキスト化とレビュー観点全体の構造化により、 投稿コメントに占めるノイズの割合を 85.9% から 12.2% へ削減した 【削減の内訳】 1PR あたりのコメント数:
2.20 件 → 0.28 件 / 適合率: 14.1% → 87.8% ▪到達点 生成AIコードレビューを開発者の認知負荷とせず、生産性向上に寄与する状態を確立できた ▪再現する時の要点 中核は ①1レビュー観点のコンテキスト化 ただし、それが効果を生むのは ②レビュー観点全体の構造化と揃ったとき ▪今後の課題 再現率の体系的評価が、コードレビューの完全自動化に向けた次のステップ © Kakaku.com Inc. All Rights Reserved. 26