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)することで、人間のレビューに重点を置くことができる
  • レビューの運用も自動化していくことで、レビューのハードルを下げていきたい
  • レビューイーとしてコードレビューで具体的に気をつけていること、などの知見も聞いてみたいなと思った

2018年の目標

2017年のふりかえりにも書いたが、改めて目標としてまとめる。 kot.hatenablog.jp

技術

  • Rubyの基礎力をあげる
    • Ruby技術者認定試験 Goldを取得
  • Reactを使用したアプリケーションを作成する
    • JavsScript自体まだまだ理解が十分ではないが、フレームワークを触りつつ慣れていく
  • SQLの苦手意識を克服する
    • RailsのActive Recordに頼りっきりになっていて、SQLの理解が疎かになっていたので克服していく
  • エンジニアコミュニティに貢献する
    • 先月初めてTX.rbに参加して、何かしらのかたちでコミュニティに貢献したいと思うようになった
    • 2018年は発表を聞くだけではなく、LTに参加するなどで貢献していく
  • 英語の勉強を続ける
    • 2017年は電車の空き時間にDUOを見ていたが、2018年は『英語上達完全マップ』等を参考に計画的に学習する
    • 具体的な目標としてはTOEIC700点を目指す

生活

  • ランニングを習慣づけ、計画的に練習する
    • 走ることは楽しいので、正しい姿勢や効果的なトレーニングを意識していく
  • ハーフマラソンの出場
    • 将来的にはフルマラソンに出場したいので、予行練習としてハーフマラソンを完走する
  • 足のだるさの解決に試行錯誤してみる
    • ここ数年、足のだるさに悩まされているので原因を探りたい
    • イメージとしては『腰痛探検家』みたいな感じ

アウトプット

  • ブログを最低12記事投稿する
    • 自分の考えを相手に伝えることや、テキストにすることに苦手意識があるので、まずは記事を書くことで絶対量を増やすことを目標する
  • 勉強していることを可視化する(コードならGitHub、読書ならScrapbox等)
    • モチベーションアップのためや、記録をしないと自分にとってなにが重要な部分なのか分からなくなってしまうので

目標としては、技術的なことがメインである。

2017年はWebエンジニアとして駆け出しだったので、技術習得に偏っていたような気がする(重要事項ではあるが)。 しかし、2018年はプログラミングだけではなく、文化や歴史といったさまざまな価値観に触れていき、社会について考える機会を失わないようにしたい。

2017年のふりかえり

今年はブログを投稿したいしたいと思っていたが結局できなかったので、自戒の念を込めて2017年のふりかえりを投稿する。

仕事

ついに社会人になった。

Webエンジニアになるために、去年より引き続きプログラミングスクールに通っていた。1月にはメンターとして関わる。人に教えることが知識の定着につながったと思う。

スクールのオリジナルアプリ発表会で、現在の職場の方とお話することができ、勉強会にお誘いいただいた。

勉強会で教えていただいたプログラミングの考え方に圧倒され、この方たちと一緒に働きたいと考えるようになる。 5月に入社し、11月末に試用期間終了。やっとWebエンジニアとして一歩を踏み出す。

技術

RubyRuby on Railsは一通りの基礎知識は習得できた(Ruby技術者認定試験 Silverを取得)。 また、RSpecによるテストも書けるようになった。

今後はRubyRails以外にも技術の幅を広げていきつつ、「伝わりやすい」コードを書くことを意識していきたい。

生活

体調のことを気にするようになった。 毎日体重計に乗るようになったり、スマートウォッチ(Amazfit)で生活のログを採るようになった。数字を意識するだけで、食生活等を気にするようになるので、とてもよい効果だったと思う。これからも続けていきたい。

ランニングは、平均して週1〜2日行っていた。 しかし、ハーフマラソン/フルマラソンに参加するためにも走る回数を増やし、トレーニングとしてきちんと計画したい。

アウトプット

社内Blogに1件投稿したが、目に見えるかたちとしてのアウトプットはまだまだ少なかった。 アウトプットのハードルを低くすることを意識していきたい。

まとめ

2017年は変化した年だったと思う(劇的に変わったというよりも、ゆっくりとやりたいことがかたちになっていたように思う)。

2018年は社外の活動にも貢献していき、より変化していく年にしたい。

番外編KPT

この記事を書く前にやったもの。

Keep
- Webエンジニアとして1歩踏み出せた
- 体調管理に気をつけた
  - 記録できる環境を整えられた
- 会社にも慣れてきた
- 地域コミュニティに行けた
- 相手の好きなところを伝えることができた

Problem
- 技術力が不足している
  - 基礎的な技術の底上げと、チーム内でのポジションを確立できるようにする
- テキスト、チャット、質問力が足りない
  - 的確な語彙とユーモアを身につけたい
- アウトプットを目に見えるかたちで継続して行う
  - やっているつもりが多い気がする
  - 可視化することでやっている/いないことを把握できたほうが捗りそう

2018 Try
- ブログを書く
  - 最低12記事を目標
- LTに参加する
  - 最低1つ
- 読書メモを行う
  - 記録と感想を管理する
- 英語のインプットを継続する
  - DUO以外にも面白そうなものを見つける
- ハーフマラソンを完走する

これから

今月からソフトウェアエンジニアとして働きます。主にRubyRuby on Railsでつくられるアプリケーションの開発に関わります。 以前は、建築学専攻で大学院(中退)に在籍したり、プログラミングスクールに通っていたりしていました。

プログラミングのことや、本のことや、日々気になったことを書き留めていこうと思います。