Upgrade to Pro — share decks privately, control downloads, hide ads and more …

生成AIを使ったコードレビューで定性的に品質カバー

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 生成AIを使ったコードレビューで定性的に品質カバー

2026/02/01にnishinomiya.devで登壇しました

Avatar for Chiaki Okamoto

Chiaki Okamoto

February 01, 2026
Tweet

More Decks by Chiaki Okamoto

Other Decks in Programming

Transcript

  1. 今日話すこと 1. 導入した経緯 2. 使用ツールの紹介 3. CodeRabbitの好きなところ 4. AIが見つけた問題の具体例(3つ) 5.

    複数AIツール併用の効果 6. 定性的な品質カバー領域 7. 人間が集中すべき領域 2
  2. AIレビューツール ツール 特徴 CodeRabbit GitHub / GitLab / Azure /

    Bitbucket 対応 2クリックでインストール、無料で始められる 2M リポジトリ、13M PRで利用実績 Gemini Code Assist Google の AI コードレビューツール 設計の妥当性評価、リファクタリング提案 7
  3. レビューを受けてClaude Codeが修正 ワークフロー Claude Code でコードを生成 ↓ PRを作成 ↓ CodeRabbit

    & Gemini がレビュー ↓ Claude Code が指摘を受けて修正 ↓ AI × AI で品質向上 8
  4. 具体例①:型安全性の指摘 PR #118: 質問テンプレート機能とプレビュー機能を実装 問題 vi.fn() が暗黙の any 型 //

    Before const mockApplyTemplate = vi.fn(); // After(CodeRabbit提案) type UseTemplateAPI = ReturnType<typeof useTemplate>; const mockApplyTemplate = vi.fn<UseTemplateAPI['applyTemplate']>(); 12
  5. 具体例②のコード // 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
  6. 具体例③のコード // 問題のコード 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
  7. 人間のレビュワーが集中すべき領域 AIが定型チェックを自動化することで、人間は以下に集中できる: 1. ビジネスロジックの妥当性 — 要件を満たしているか 2. アーキテクチャ設計の判断 — 将来の拡張に対応できるか

    3. UX/UIの観点 — ユーザー体験として適切か 4. 深いセキュリティ検証 — 攻撃ベクトルの考慮 5. チーム文化・コーディング規約 — プロジェクト固有のルール 23