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
Chiaki Okamoto
February 01, 2026
Programming
410
1
Share
生成AIを使ったコードレビューで定性的に品質カバー
2026/02/01にnishinomiya.devで登壇しました
Chiaki Okamoto
February 01, 2026
More Decks by Chiaki Okamoto
See All by Chiaki Okamoto
20260315 AWSなんもわからん🥲
chiilog
2
190
コンテンツ作成者の体験を設計する
chiilog
0
170
20251102 WordCamp Kansai 2025
chiilog
1
1.9k
2025/09/18 AIコーディングで「保活手帳」を作ってみた
chiilog
0
110
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
3
990
私の推しはブロックエディター 〜デフォルトブロックに触れ合う〜
chiilog
0
450
この一年で身についた“マトモ”な WordPressテーマの作り方
chiilog
7
2.1k
WordPressテーマの作り方 2019 私のベストプラクティス
chiilog
24
14k
Google Optimizeで始めるA/Bテスト #wbkyoto
chiilog
1
3.5k
Other Decks in Programming
See All in Programming
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.4k
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
520
GitHub Copilot CLIのいいところ
htkym
2
1.2k
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
330
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
7
2.9k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
140
AI開発を加速するためにテスト戦略を言語化した
yoshihiro_shu
0
110
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
12
3.2k
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
430
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
420
TSKaigi2026-静的解析への投資がAI時代のコード品質を支える ── カスタムESLintルールの設計と運用
hayatokudou
7
1.3k
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
300
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.2k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
70
39k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
390
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
320
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
190
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
BBQ
matthewcrist
89
10k
Balancing Empowerment & Direction
lara
6
1.1k
Side Projects
sachag
455
43k
The Curse of the Amulet
leimatthew05
1
13k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Transcript
生成AIを使ったコードレビューで 定性的に品質カバー 岡本千秋(@chiilog) 1
今日話すこと 1. 導入した経緯 2. 使用ツールの紹介 3. CodeRabbitの好きなところ 4. AIが見つけた問題の具体例(3つ) 5.
複数AIツール併用の効果 6. 定性的な品質カバー領域 7. 人間が集中すべき領域 2
岡本千秋 フロントエンドエンジニア Github: @chiilog X: @chiilogweb Zenn: https://zenn.dev/chiilog 3
導入した経緯 AIコーディング時代の課題 Claude Code や Cursor で コードを書かせる ↓ 大量のコードが生成される
↓ レビューが大変になる 4
「一次レビューもAIにやらせたらいいんでは?」 5
やってみた結果 AIが書いたコードをAIがレビュー(AI × AI) 人間は最終判断に集中できる 思った以上に細かいところまで見てくれる 6
AIレビューツール ツール 特徴 CodeRabbit GitHub / GitLab / Azure /
Bitbucket 対応 2クリックでインストール、無料で始められる 2M リポジトリ、13M PRで利用実績 Gemini Code Assist Google の AI コードレビューツール 設計の妥当性評価、リファクタリング提案 7
レビューを受けてClaude Codeが修正 ワークフロー Claude Code でコードを生成 ↓ PRを作成 ↓ CodeRabbit
& Gemini がレビュー ↓ Claude Code が指摘を受けて修正 ↓ AI × AI で品質向上 8
特徴 GitHub Actions経由でレビュー結果を取得 型の整合性チェック、コンパイルエラー検出にも対応 9
ここが好きだよCodeRabbit ① PRサマリー自動生成 大規模PRでも全体像を一瞬で把握できる 自動生成される内容(抜粋) Walkthrough - 変更内容の概要説明 シーケンス図 -
処理フローをMermaid形式で可視化 関連PRの自動リンク - コンテキスト把握が楽 10
ここが好きだよCodeRabbit ② 学習してくれる レビューコメントに返信してフィードバックを入れると、今後の レビューに反映してくれる CodeRabbit: 「この書き方は推奨されません」 ↓ 私: 「このプロジェクトの方針ではこのスタイルを採用しています」
↓ CodeRabbit: プロジェクト固有のルールを学習して、次回から反映 11
具体例①:型安全性の指摘 PR #118: 質問テンプレート機能とプレビュー機能を実装 問題 vi.fn() が暗黙の any 型 //
Before const mockApplyTemplate = vi.fn(); // After(CodeRabbit提案) type UseTemplateAPI = ReturnType<typeof useTemplate>; const mockApplyTemplate = vi.fn<UseTemplateAPI['applyTemplate']>(); 12
具体例①の学び TypeScriptの型安全性をテストコードでも維持 プロダクションコードだけでなく、テストコードでも型チェック 暗黙の any 型を許さない姿勢 Committable suggestionでワンクリック修正可能 レビューコメントからそのまま適用できる 修正の手間が最小限
13
具体例②:テストと実装の不一致検出 CodeRabbitの指摘 このテストは setAnalyticsConsent (useAnalytics)を前提に していますが、実装側は useCookieConsent の setConsent を
直接呼び出しています。モックの不一致によりテストが実装を 正しく検証できていません。 14
具体例②のコード // Before: モックが実装と不一致 vi.mock('../hooks/useCookieConsent', () => ({ useCookieConsent: vi.fn(()
=> ({ setConsent: vi.fn(), // 外から参照できない })), })); // After: 外部から参照可能 const setConsentMock = vi.fn(); vi.mock('../hooks/useCookieConsent', () => ({ useCookieConsent: vi.fn(() => ({ setConsent: setConsentMock, })), })); 15
ポイント 人間のレビューでも見落としがちなモック設計ミスを検出 テストコードと実装コードの整合性をチェック モック関数が外部から参照できないという設計ミスを指摘 テストが「通るけど意味がない」状態を防ぐ 16
具体例③:GA4二重カウント問題 CodeRabbitの指摘 gtag('config', measurementId) は既定で page_view を 送信します。本実装は手動で page_view イベントも発行している
ため、二重カウントの可能性があります。 17
具体例③のコード // 問題のコード window.gtag('config', measurementId, { anonymize_ip: true, cookie_expires: 60
* 60 * 24 * 30, }); // 修正 window.gtag('config', measurementId, { anonymize_ip: true, cookie_expires: 60 * 60 * 24 * 30, send_page_view: false, // 追加 }); 18
具体例③の学び 外部サービス(GA4)のベストプラクティスを把握している GA4のデフォルト動作を理解した上で指摘 計測データの品質に影響する問題を事前検出 ドキュメントを読まないと気づきにくい問題を指摘 19
2つのAI、レビュー観点が違う 観点 CodeRabbit Gemini 焦点 エッジケース処理・堅牢性 設計品質・保守性 スタイル 具体的な技術提案 高レベル評価
+ 提案 ポイント 異なる軸でレビューするので、併用すると多角的に品質が上がる! 20
「なんか違うな」と思ったらコメントする 黙って直すと、レビュワーの知見が貯まらない。 コメントからさらにブラッシュアップしたいとか聞きたいとかの ときは、Claude Codeに聞かずにレビュワーたちに聞く。 21
定性的な品質カバー領域 観点 検出例 型安全性 any 型の暗黙的使用 テスト品質 モック設計ミス、テスト/実装の不一致 外部サービス連携 GA4二重カウント、ベストプラクティス
→ これらをAIが自動でカバー 22
人間のレビュワーが集中すべき領域 AIが定型チェックを自動化することで、人間は以下に集中できる: 1. ビジネスロジックの妥当性 — 要件を満たしているか 2. アーキテクチャ設計の判断 — 将来の拡張に対応できるか
3. UX/UIの観点 — ユーザー体験として適切か 4. 深いセキュリティ検証 — 攻撃ベクトルの考慮 5. チーム文化・コーディング規約 — プロジェクト固有のルール 23
まとめ 1. CodeRabbitは定性的な品質観点を自動でカバー 型安全性・テスト品質・外部サービス連携など 2. 複数AIツールの併用で多層防御 各ツールが異なる観点で問題を検出 3. 人間のレビュワーは高次の判断に集中 ビジネスロジック・アーキテクチャ設計
24