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

GitHub Copilotで書いたコード、レビューはどうしてる?

Avatar for tomokusaba tomokusaba
September 02, 2026

GitHub Copilotで書いたコード、レビューはどうしてる?

GitHub Copilotで書いたコード、レビューはどうしてる?
AI時代のコードレビュー最前線 〜AIにどこまで任せる?これからのコードレビューを考える〜
https://rosca.connpass.com/event/403621/

Avatar for tomokusaba

tomokusaba

September 02, 2026

More Decks by tomokusaba

Other Decks in Technology

Transcript

  1. 今日の目的 • GitHub Copilot でコードを書く量が増えてくると、必ず聞かれ ることがあります。「そのコード、レビューはどうしてるんです か?」という質問です。 • Copilot は強力なツールである一方でミスをすることもあり、提

    案は常に検証するべきです。 • 今回は、私が個人のテンプレートリポジトリで試している「AI に書 かせたコードを、AI 自身と人間でどう多層的にレビューするか」 という実践を整理します。
  2. DotnetTemplateでの 多層エージェントレビューの実践例 役割 書き込み 主な仕事 orchestrator なし 要求を整理し、どの専門レビューが必要かを振り分ける code writer

    あり 実装・テストの作成、指摘の反映 code reviewer なし 差分に対する一般的な観点でのレビュー accessibility checker なし ASP.NET Core UI 変更時のアクセシビリティ専門レビュー C# / .NET specialist なし 言語・フレームワーク固有の慣習やパフォーマンスの観点でのレ ビュー review checker なし 複数レビューの指摘を集約し、正当な指摘かどうかを精査する
  3. Rubber duckレビュー • Agentレビューだけでは似たような前提でのAgent同士でのレ ビューで完結してしまう可能性がある。 • GitHub Copilot CLI・GitHub Copilot

    appの機能として実 装されている/rubber-duckコマンド • また、GitHub Copilot appでは 既定有効になっている。
  4. AIによるレビューの限界その1 • 局所的には良くても全体的な設計判断を間違える可能性 • 1つのクラスとしては妥当に見えても既存のクラス設計やモジュール分割 の方針とずれた設計になる可能性 • 差分だけを見ているとわかりにくくアーキテクチャ全体を知っている人間 の判断が必要 •

    実装規模が大きいほど、要件の一部が漏れがち • 複数ファイルに渡る大きな実装、ソリューション全体にかかるような実装 では依頼した用件の一部が実装がから抜け落ちる • 動いているように見えるが、よく見ると用件のすべてを満たしていないこ ともある
  5. AIによるレビューの限界その2 • 意図しない副作用に気づきにくい • グローバルな状態、キャッシュ、イベント発火のタイミングなどドメイン知識がないと気づ けない副作用は気づきにくい • AIのレビューでも見逃されがち • パフォーマンス改善の余地を見落とす

    • 単純なアルゴリズムであればAIはよく改善してくれます。 • 同じ処理ができるライブラリー間でのパフォーマンス差などの最適余地はやる・やらない を含めてシニアレベルのエンジニアでないとなかなか判断がしにくいところ • 特に、文字列処理(補完文字列でよいのか、StringBuilder使うのか、 ReadOnlySpan使うのか) • ただ、狭いスコープでのパフォーマンス改善をさせたらAIにはもはや人間は勝てない。
  6. 人間によるレビュー 観点 機械的に拾えること 人間の文脈判断が必要なこと 構文・型 コンパイルエラー・型不整合・コーディング規約 (.editconfig) 不要 セキュリティ 既知の脆弱なパターン、シークレットの混入

    業務要件に照らしたリスク許容の判断 テスト カバレッジ不足、アサーション欠如 テストシナリオが業務的に妥当か 設計 循環的複雑度、重複コードの検出 クラス分割・責務境界が将来の変更に耐えるか 要件充足・スコープ 差分とタスク記述の機械的な突合 大規模な変更で要件の一部が漏れていないかの確認 パフォーマンス 明白な N+1、同期 I/O のブロッキング 許容できる遅延かというビジネス上の判断 ライブラリ/API 既知の非推奨シグネチャの検出 移行の優先順位、影響範囲の見積もり 副作用 静的解析で拾える単純な副作用 ドメイン知識が必要な意図しない副作用