kotのデブリ

生きるとは- 変わること-

Code Review Meetup #1の感想

概要

コードレビューに焦点を当てた、少しニッチな勉強会(第1回)Code Review Meetup #1 に参加したので、メモと感想を残しておく。

勉強会の詳細はこちら https://connpass.com/event/75567/

参加の背景

社内研修アプリケーションを通じて初めてコードレビューを経験し、そのときコードレビューの重要性を認識した。また、RubyKaigi 2017のpockeさんの発表を聞いて、静的解析ツールに興味をもつ。 そのような背景をもとに、コードレビューの知見を広げるために参加。

発表

エネチェンジ社の開発ケーススタディ

  • レビューコメントが多くなると大変
  • SideCI(静的解析ツール)とCodeCov(カバレッジツール)を採用をし、自動化することでラクになった
  • レビューとしてのローカル環境は開発者同士で揃えることはなくて、CIやGitHubで結果を確認している
  • SideCI等にコードを褒める機能欲しい〜

感想

開発とレビューのバランスをよくするためにも、レビューやレビュー周りの仕組みを自動化するはとても大切だと感じた。

RuboCop for Code Review

発表資料: RuboCop for Code Review // Speaker Deck

  • RuboCopの利点
    • 人間のレビューを減らせる
    • 人間のレビューを拡張できる
  • RuboCopの付き合い方
    • 「RuboCopのレビュー」をレビューをする必要がある
      • スタイルのレビュー
        • 自分のコーディングスタイルに合っているのか
      • リントのレビュー
        • false positiveを出しうることを念頭におく
  • RuboCopの導入、どう使い続けるのか

  • Q RuboCopのバージョンアップにどう付き合う?

    • 特定のバージョンをピンしたほうがいいかもしれない
    • または、 https://github.com/pocke/mry を使うことで、バージョンアップに追随することがラクになる

感想

「RuboCopのレビュー」をレビューする、という指摘にハッとさせられた。

「CodeYourRuby」で オープンなコードレビューを体験しよう

発表資料: 「CodeYourRuby」で オープンなコードレビューを体験しよう

CodeYourRuby: https://github.com/chooyan-eng/code-your-ruby

  • レビューは学習効果が高い
    • 書籍では取得できない知識を取得できる
  • コードレビューを目的とするOSSは新しく、初学者にとってとてもよさそう

レビューを加速させる 仕組みづくり

発表資料: slides/2018/code-review-meetup-1 at master · ohbarye/slides · GitHub

review-waiting-list-bot: https://github.com/ohbarye/review-waiting-list-bot

  • GitHubのPRをSlackを投稿するbot
  • PRは長い放置されつづけるとレビューするのも大変なので、このような仕組み化はとてもよさそう
  • [WIP]は投稿の対象にならないとか設定できたらより便利そう

コードレビューのアンチパターンについて考えてみた

  • レビュー大切だけど結構つらい
  • アンチパターンとして整理されていたことで、今後の見通しがよくなった

アンチパターン

  1. HRTの欠如 謙虚(Humility)、尊敬(Respect)、信頼(Trust)
  2. 目的を共有する
  3. ソースコードの質を保つ(こちらを優先するといいかも、とのこと)
  4. メンバーの成長、教育
  5. 技術力格差
  6. 属人的コード

処方箋

  1. HRTをもつ
  2. よいコードの基準を共有しよう
  3. ペアプロでモブプロコードを共有
  4. ペアレビューを行い属人化を防ぐ
  5. 社内勉強会も有効

まとめ

  • 全体的としては、コードレビューを行うことは前提で、どう効果的に運用すればいいのか模索している様子だった
  • コードレビューは銀の弾丸ではない(ソフトェア開発は設計、実装、テストなど多くのことが関係してくる)
  • コードレビューを自動化(RuboCopやSideCI)することで、人間のレビューに重点を置くことができる
  • レビューの運用も自動化していくことで、レビューのハードルを下げていきたい
  • レビューイーとしてコードレビューで具体的に気をつけていること、などの知見も聞いてみたいなと思った