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
11
コードレビューの文化を少しずつ改善していった話
#code_kaizen
コード改善 #3 で発表したスライドです。
Yasuhiroki
June 29, 2017
Tweet
Share
More Decks by Yasuhiroki
See All by Yasuhiroki
自分に勉強させるには
yasuhiroki
1
380
Android Studio `Command+Shift+A`
yasuhiroki
0
310
シェルスクリプトをサーバーレスで cron したい
yasuhiroki
1
760
rails new コマンド
yasuhiroki
1
700
自動化を習慣化する
yasuhiroki
2
14k
GitHub Actions Parallel Testing
yasuhiroki
1
1.2k
circleci.vim
yasuhiroki
0
1.5k
ベンチャー企業がCircleCIを選んだ理由と活用方法
yasuhiroki
1
760
Rubyの正規表現を調べてみた
yasuhiroki
0
780
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
YesSQL, Process and Tooling at Scale
rocio
169
14k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
Writing Fast Ruby
sferik
627
61k
Statistics for Hackers
jakevdp
796
220k
Visualization
eitanlees
145
15k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
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 を試し中
おしまい