Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コードレビューの文化を少しずつ改善していった話
Search
Yasuhiroki
June 29, 2017
0
12
コードレビューの文化を少しずつ改善していった話
#code_kaizen
コード改善 #3 で発表したスライドです。
Yasuhiroki
June 29, 2017
Tweet
Share
More Decks by Yasuhiroki
See All by Yasuhiroki
自分に勉強させるには
yasuhiroki
1
410
Android Studio `Command+Shift+A`
yasuhiroki
0
330
シェルスクリプトをサーバーレスで cron したい
yasuhiroki
1
790
rails new コマンド
yasuhiroki
1
730
自動化を習慣化する
yasuhiroki
2
14k
GitHub Actions Parallel Testing
yasuhiroki
1
1.2k
circleci.vim
yasuhiroki
0
1.6k
ベンチャー企業がCircleCIを選んだ理由と活用方法
yasuhiroki
1
780
Rubyの正規表現を調べてみた
yasuhiroki
0
820
Featured
See All Featured
Faster Mobile Websites
deanohume
306
31k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Speed Design
sergeychernyshev
27
790
Designing for humans not robots
tammielis
250
25k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
9
440
Writing Fast Ruby
sferik
628
61k
Designing for Performance
lara
604
68k
Bash Introduction
62gerente
611
210k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Producing Creativity
orderedlist
PRO
344
39k
Transcript
コードレビューの文化を少しず つ改善していった話 Yasuhiro Kiyota @yasuhiroki
自己紹介
自己紹介 • Yasuhiro Kiyota • @yasuhiroki • Twitter: @duck_yasuhiroki •
GitHub: https://github.com/yasuhiroki • 開発者(個人)のためのJenkins - Git Plugin編 • http://qiita.com/yasuhiroki/items/61a2be613fc7dcfc8682 • そのシェルスクリプトもうちょっとシンプルに書けそう Tips集(Golf/シェル芸ではない) • http://qiita.com/yasuhiroki/items/fad876db9e5505fceb03
https://certificates.cloudbees.com/10203903
趣味 n=1 s='n=%d\40s=%s\40eval\40$\47printf\40"#改善レベル ${n}\n${s}"\40"$((+ +n))"\40"${s@Q}"\47' eval $'printf "#改善レベル ${n}\n${s}" "$((++n))"
"${s@Q}"'
本題
謝辞
前回のコード改善#2で発表しました https://www.slideshare.net/yasuhirokiyota/ss-68577272
前回のコード改善#2への感謝 • 自分の発表に対するTwitterの反応 • 「似たような取り組み自分たちもやってる」 • 「XXな方法もあるよ」 • 他の方の発表 •
自分とは違う視点での改善方法 • 視野が広がった • 議論タイムでの意見交換 • 自チームを客観的に見ることができた
Agenda • 前回の発表 (2016/11) から 現在 (2017/06) までの取り組み・成果 • (ちなみに)開発はGitHubで進めています
前回発表のおさらい
前回発表のおさらい • まずは、とにかく話す • コードレビューに不慣れな人とまずは話す • 話したやりとりをGitHub上にも残してもらう • 自然とGitHubだけでも議論できるようになった •
GitHub テンプレート・ラベルの活用 • WIP、 PleaseReview ラベル • 初心を忘れない • どんな思いから、 どんな文化を作りたかったのか忘れない
前回参加時に感じた自チームの <課題> • テスト書いてない • typoやインデントのチェックも人間まかせ • 機械的なレビューは機械に任すべき • 良いコードとは何か、チームとして答えを持っていな
い • ふわふわとした不安感 • これでいい…のかなぁ…
前回参加時に感じた自チームの <強い所> • 全員がレビューワー • 上司・先輩・後輩 関係なく全員がレビューワー • コードレビューに対する意識が統一されている •
レビューはお願いするもの • マージは自分でするもの • レビューワーへの優しさ • レビューしやすいcommit粒度にする意識が高い • “fix” だけのコミットメッセージはない • 万一あった時は、朝会で愛のある吊し上げにあう
現在の環境
前回から変わった現在の環境 • プロジェクトが変わった • TypeScript + AngularJS なあれこれ • TypeScript
+ Express なあれこれ • TypeScript + AWS Lambda なあれこれ • メンバーはほぼ変わらず • 手探りで作った文化をそのまま継承できた • 文化はできているので少しずつ改善
取り組んだこと
取り組んだこと • テスト書いた • Jenkins で PR 毎に自動ビルド • 動作検証用の環境をDockerで用意
• 結合テスト用の環境を簡単に用意できる • 動作確認がスムーズに
取り組んだこと • プルリクエスト テンプレートの改善 • どういう観点で動作確認したか書くことを必須に • 開発者QAと呼んでいる • 「XXした時にYYとなることをUTで担保」
• 「**の処理が最後まで実行されること」 • QAを専門にしてきたメンバーがいるので、 テスト観点のレビューもしてもらっている • レビューワーは、 仕様通りにテストされているか簡単に知ることがで きる
開発者QAの背景 • QA担当がチームに1人いる • 最終的な評価は全てその人任せに • スケールしない • その人は別のタスクもある •
開発者がQAできるようになればいい • 開発者がQAした内容をレビューしてもらいたい • コードレビューと同じタイミングでやれば良い
取り組んだこと • 設計資料もコードレビュー • PlantUML で システム構成図を書く • PlantUMLと生成される画像を一緒に git
push • 設計のレビューもGitHub上に残す • 設計資料もコードと見なして世代管理 • 参考) PlantUML • http://plantuml.com/ • http://qiita.com/ykawakami/items/ f6688b845945669f0ce5
安心と自信をもって マージできるように
取り組んだこと • 朝会でのゲリラレビューを実施 • 朝会で突発的に、適当なプルリクをピックアップ • 内容をメンバー全員で確認 • がっつりコードレビューするわけではなく、 「こういう書き方
XX さんぽいねー」 「このプルリクもっとレビューしやすくできそう」 などと表面的な意見交換をする • チームでコードレビューしてる感
意識の変化 • テストしやすいコードとは、を意識するように • どんなコードだと簡単なのか議論が活発に • 口頭のやりとりはコードレビューにも残す • (残せてないもの増えてきたかも…) •
良いコードとは、の模索がチーム共通の課題に • たまに朝会で議論
開発者QAの義務化の恩恵 • 何をテストしたか、のエビデンスが残る • テスト漏れがあった時に振り返られる • テスト観点に対するレビューも行える • 全員で品質を守る意識
課題
コードレビューの負荷増 • 開発者QAへのレビューが特に… • レビューワーの担当が何となく決まっている • タイミングによっては1人に負荷が集中しがち • まんべんなくレビューできる人ほど負荷高い •
レビューツールを入れて改善したい.. • Danger を試し中
おしまい