13
コードレビューをより良くする Danger x Android 2017/09/21(Thu) Android Test Night #1 平田敏之 (@tarappo)

コードレビューをより良くする Danger x Android

Embed Size (px)

Citation preview

Page 1: コードレビューをより良くする Danger x Android

コードレビューをより良くするDanger x Android

2017/09/21(Thu)

Android Test Night #1

平田敏之(@tarappo)

Page 2: コードレビューをより良くする Danger x Android

自己紹介

平田敏之@DeNA / SWET (Software Engineer in Test)

ミッション

DeNAサービス全般の品質向上

DeNAエンジニアの開発生産性向上

私がやっていること(の一部)

クライアントアプリ周りのテスト戦略、自動テストの開発

CI/CD環境整備

テスト基盤環境の開発(マスティフ、ダルメシアン etc)

iOS / Android Test Night 主宰

Page 3: コードレビューをより良くする Danger x Android

SWETのBLOGはじめましたhttp://swet.dena.com/

DeNA Testing Blog

Page 4: コードレビューをより良くする Danger x Android

Dangerhttp://danger.systems/

• Dangerとは? ( js / ruby )

• PRの(一次)チェックをしてくれる

• チェックするルールは自ら決める(プロジェクト次第)

• プラグインの作成も出来る

• すでに世にあるプラグインを使えば導入が簡単

• 導入事例も増えてきている• http://techlife.cookpad.com/entry/2017/06/28/190000

• https://techblog.recruitjobs.net/development/danger_driven_development

Page 5: コードレビューをより良くする Danger x Android

コードレビューコードレビューに時間がかかっていませんか?

• 本筋じゃない箇所への指摘

• チケットのリンクが貼られていない

• PRの向き先が正しくない

• コードフォーマッターに任せられるような指摘 etc

• UI変更時のチェック

• PRにスクリーンショットを貼ってもらったり..

• 変更したコードの動作確認をしているかどうか

• CI(など)で動かしているかどうか過ぎていく時間

人間によるレビューは貴重なので自動化出来ることは自動化させよう

Page 6: コードレビューをより良くする Danger x Android

Dangerでのチェック例

• PRの状態チェック

• ラベルやタイトルにWIPがついていないかどうか• github.pr.titleやgithub.pr_labelsでチェック可能

• PRの本文チェック

• 対応するチケットが書かれているか• github.pr_bodyでチェック可能

https://github.com/Moya/Moya/blob/master/Dangerfile より

Page 7: コードレビューをより良くする Danger x Android

Danger Plugin

色々あります• SWET製

• CONFLICT CHECKER

• SLACK

http://danger.systems/ruby より

Page 8: コードレビューをより良くする Danger x Android

チームのルールAndroidアプリ

共通(独自Plugin化)

• WIPとタイトルやラベルに記載していないこと

• PRの説明文にチケットのURLがあること

• PRに記載されているタスク全てにチェックがついていること

Android独自(独自Plugin化)

• プロダクトコードを変更した場合

• アプリのビルド、自動テストをおこなっているか

• テストコードを変更した場合

• 自動テストをおこなっているか

• リソースを変更した場合

• スクリーンショット取得をおこなっているか

Page 9: コードレビューをより良くする Danger x Android

コード変更時のチェックルール

• プロダクトコードを変更した場合

• ビルド、テストを実行する必要あり

• ビルド・テストが成功(1)

• (1)から最新のコミットまでの間にプロダクトコードに変更なければ再度実行する必要はない

• テストコードを変更した場合

• テストを実行する必要あり

Page 10: コードレビューをより良くする Danger x Android

UI変更時のチェックルール

• リソースを変更した場合

• 各画面のスクリーンショットをPRにいれこむ

• UIテスト(Spoon)を用いて各画面のスクリーンショットを取得

• githubの機能で前回の画像と比較できる

Page 11: コードレビューをより良くする Danger x Android

レビューまでのフロー

• PRを出す(WIPでもOK)

• 設計相談をする場合は早めに出す

• 実装が完了

• CIで動かすべきものは動かしておく

• PR上でreviewとコメント

• ルールを全てクリアしていたら

• メンバーにレビュー依頼が飛ぶ

Page 12: コードレビューをより良くする Danger x Android

ルールをクリアしなかった場合実際の指摘例

指摘理由

• WIPとタイトルに記載されている

• PRの本文にチケットのURLが無い

• ソースコード変更後にアプリのビルドをおこなっていない

• テストコード変更後にテストの実行をおこなっていない

Page 13: コードレビューをより良くする Danger x Android

まとめ

• コードレビュー前の指摘(の一部)は自動化しよう

その結果

• 実装者(レビューイー)

• 何をするべきかルール化されている、間違えれば指摘されるので分かりやすい

• レビュアー

• (多少の)安心感をもってコードレビューができる

• 本質的な箇所をコードレビューできるようになる