/note/tech

レビューは人間がすべきか問題:Critの紹介

要約:

■ 1. 背景と問題提起

  • バイブコーディングの普及によりプルリクエストは大量生成できるようになったが、レビューがボトルネックになっている
  • レビューをAIに任せるべきかという議論がある一方、人間がすべきという意見もある
  • ビジネスにおいては、コードをAIが生成しようと人間が作ろうと、責任は会社が負う

■ 2. コードレビューの目的

  • 目的確認:
    • 指示を出すのは人間であるため、指示が間違えば成果物も誤りになる
    • 「そもそも目的が間違っていないか」という観点の指摘は人間にしかできない
  • コードチェック以外の役割:
    • 冗長化体制の構築:
      • レビューアの存在により「作った人しか知らない」状況を防げる
      • 少なくとも作成者とレビューアの2人が内容を把握できる
    • レビューア自身の成長:
      • レビューを重ねることでレビュー力が向上する
      • 多角的な観点でコードを書く力が身につき、コード品質が向上する
  • 冗長化については、AIが都度調べられるため不要という見方もある
  • 一方、GitHub差分ビューを注意深く見てレビューしていた頃に比べ、技術力の成長が維持できているかは疑問

■ 3. Critの紹介

  • 概要:
    • エージェントが変更したコード、ドキュメント、ローカルアプリをブラウザ上でレビューできるツール
    • GitHubのPRレビューと同様に、行単位でハイライト・コメントを付けられる
  • インストール手順:
    • brew install crit でインストール
    • Claude Code上で /plugin marketplace add tomasz-tomczyk/crit/plugin install crit@crit を実行
    • プロジェクトルートで crit install claude-code を実行してスキルファイルを読み込む
    • /reload-skills でスキルを再読み込みして準備完了
  • 使用フロー:
    • コード完成後に /crit と入力する
    • localhostでサーバが起動し、ブラウザが自動起動してGitHubのファイル差分ビューと同様の画面が表示される
    • コード行にインラインでコメントを記入し、「Finish Review」ボタンを押す
    • Claude Codeが自動的にコメントへ返答またはコード修正を行う
    • 修正後は再びレビューモードになり、解消済みのコメントに「Resolved」マークを付ける
    • すべてResolvedになると「Finish Review」ボタンが「Approve」ボタンに変わり、承認でレビュー完了
  • 利点:
    • 相手がAIのため、どんな質問でも何度でも問い合わせられる
    • 同僚のコードをレビューしていた感覚でAI生成コードをレビューでき、コードへの理解が深まる

■ 4. 結論

  • レビューを人間がすべきか、AIがすべきかの二元論ではない
  • コードレビューにはチェック機構以外の役割(成長・冗長化)があるため、人間の関与は依然として重要
  • 当面は人間がAIを活用しながら自らの成長のためにレビューする形が適切

■ 5. 補足

  • Rubyの *.rake ファイルを編集しCritで表示した際にコードハイライトがされなかったため、本家リポジトリにPRを送ったところ、すぐに取り込まれた
  • Critの開発はAIを活用していると思われるが、対応がアクティブで良好