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のレビュー」をレビューをする必要がある
RuboCopの導入、どう使い続けるのか
- WEB+DB PRESS Vol.102 で連載中
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]は投稿の対象にならないとか設定できたらより便利そう
コードレビューのアンチパターンについて考えてみた
- レビュー大切だけど結構つらい
- アンチパターンとして整理されていたことで、今後の見通しがよくなった
アンチパターン
- HRTの欠如 謙虚(Humility)、尊敬(Respect)、信頼(Trust)
- 目的を共有する
- ソースコードの質を保つ(こちらを優先するといいかも、とのこと)
- メンバーの成長、教育
- 技術力格差
- 属人的コード
処方箋
- HRTをもつ
- よいコードの基準を共有しよう
- ペアプロでモブプロコードを共有
- ペアレビューを行い属人化を防ぐ
- 社内勉強会も有効
まとめ
- 全体的としては、コードレビューを行うことは前提で、どう効果的に運用すればいいのか模索している様子だった
- コードレビューは銀の弾丸ではない(ソフトェア開発は設計、実装、テストなど多くのことが関係してくる)
- コードレビューを自動化(RuboCopやSideCI)することで、人間のレビューに重点を置くことができる
- レビューの運用も自動化していくことで、レビューのハードルを下げていきたい
- レビューイーとしてコードレビューで具体的に気をつけていること、などの知見も聞いてみたいなと思った