余裕を生み出すコードレビュー 〜レビュイー編〜 / code-review-phpcon-2019

F4d37a67ce86b2f962c79d73a9127d3c?s=47 fortkle
December 01, 2019

余裕を生み出すコードレビュー 〜レビュイー編〜 / code-review-phpcon-2019

PHPカンファレンス2019 LT

ブログ記事もあわせてお読みください!
https://tech.connehito.com/entry/heartful-code-review

F4d37a67ce86b2f962c79d73a9127d3c?s=128

fortkle

December 01, 2019
Tweet

Transcript

  1. 余裕を⽣み出すコードレビュー 2019.12.01 PHPカンファレンス 2019 コネヒト株式会社 @fortkle

  2. ⾃⼰紹介 • ⾼野 福晃 @fortkle • コネヒト株式会社 / Backend Engineer

    • PHP, Go, React, etc • 本を共著で書きました! • 『TECHNICAL MASTER はじめての
  PHPプロフェッショナル開発』
  3. (宣伝)コネヒトについて ˞೛৷தʙࡀϲ݄ͷࢠڙΛ࣋ͭঁੑ ਓΛର৅ͱͨ͠ௐࠪΑΓ ʮݱࡏ࢖͍ͬͯΔΞϓϦ ೛৷ɾࢠҭͯܥ Λ͢΂ͯڭ͍͑ͯͩ͘͞ʯͰୈҐʢ೥݄࣮ࢪɺௐࠪڠྗɿΠϯςʔδʣɻ ママ向けNo.1(※)アプリ「ママリ」

  4. (宣伝)コネヒトについて ママの3⼈に1⼈が利⽤中! ˞೛৷தʙࡀϲ݄ͷࢠڙΛ࣋ͭঁੑ ਓΛର৅ͱͨ͠ௐࠪΑΓ ʮݱࡏ࢖͍ͬͯΔΞϓϦ ೛৷ɾࢠҭͯܥ Λ͢΂ͯڭ͍͑ͯͩ͘͞ʯͰୈҐʢ೥݄࣮ࢪɺௐࠪڠྗɿΠϯςʔδʣɻ

  5. (宣伝)コネヒトについて 創業時からPHPをメイン⾔語で利⽤中! ˞೛৷தʙࡀϲ݄ͷࢠڙΛ࣋ͭঁੑ ਓΛର৅ͱͨ͠ௐࠪΑΓ ʮݱࡏ࢖͍ͬͯΔΞϓϦ ೛৷ɾࢠҭͯܥ Λ͢΂ͯڭ͍͑ͯͩ͘͞ʯͰୈҐʢ೥݄࣮ࢪɺௐࠪڠྗɿΠϯςʔδʣɻ

  6. (宣伝)コネヒトについて 創業時からPHPをメイン⾔語で利⽤中! ˞೛৷தʙࡀϲ݄ͷࢠڙΛ࣋ͭঁੑ ਓΛର৅ͱͨ͠ௐࠪΑΓ ʮݱࡏ࢖͍ͬͯΔΞϓϦ ೛৷ɾࢠҭͯܥ Λ͢΂ͯڭ͍͑ͯͩ͘͞ʯͰୈҐʢ೥݄࣮ࢪɺௐࠪڠྗɿΠϯςʔδʣɻ 2016年から継続して PHPカンファレンスに協賛 させていただいています

  7. 今⽇のテーマ 「コードレビュー」

  8. • GitHubのPull Requestを使ったコードレビュー • 必ずコードレビューを通過したコードのみが
 masterブランチにマージされる 弊社の場合 開発者(レビュイー) レビュワー 設計・実装

    コードレビュー デプロイ
  9. よくある課題の1つ
 レビュー待ちPRが溜まる

  10. レビューコストは低くない 開発者(レビュイー) レビュワー 設計・実装 コードレビュー デプロイ レビュワーの偏り∕確認不⾜による⼿戻りの発⽣ ∕頻繁なコンテキストスイッチ

  11. レビューコストを下げるには
 どうすればよいか?

  12. 例えば… • 機械にできることは機械に任せる • Linter や 静的解析の導⼊ • レビュー⾃動化のSaasを⼊れる •

    ペアプロ / モブプロ • etc
  13. ですが、もっと簡単なことで

  14. 当たり前だけど
 意外とできていないことで

  15. コードレビューに
 “余裕”を⽣み出せる

  16. やること レビュワー の
 3つの「分からない」を減らす

  17. 鍵になるのは レビュイー のひと⼿間

  18. レビュワー の3つの「分からない」 • 変更の意図・背景が分からない • 変更内容が分からない • 何に注⽬すればいいか分からない

  19. • 変更の意図・背景が分からない • 変更内容が分からない • 何に注⽬すればいいか分からない レビュワー の3つの「分からない」

  20. 例1

  21. 例1 このDescription
 を読んだだけでは 「変更の意図や背景」 が分からない

  22. 改善例

  23. 改善例

  24. 改善例 背景を簡潔に説明 設計の意図や 参考にした リンクなどを 記載

  25. • 変更の意図・背景が分からない • 変更内容が分からない • 何に注⽬すればいいか分からない レビュワー の3つの「分からない」

  26. 例2

  27. 例2 over 1200⾏の ⼤きすぎるdiff 意味のある単位で分割されていないコミット

  28. 改善例

  29. 改善例 1つのPRでは
 1つのことをやる 実際の実⾏コマンドをメッセージ等に書くと親切 意味のある単位でコミットを分割 500⾏を ⽬安に分割
 (Dangerなどで警告)

  30. • 変更の意図・背景が分からない • 変更内容が分からない • 何に注⽬すればいいか分からない レビュワー の3つの「分からない」

  31. 例3

  32. 例3 どうやって確認すればいいのか、 何に注⽬すればいいのか
 分からない

  33. 改善例 確認してほしいことを書いておく (チェックボックスなどでリスト化すると効果的)

  34. 改善例 もちろん ⾃動テストも書こう!

  35. 改善例 インラインコメントで不安な点を伝える

  36. まとめ

  37. まとめ • レビュイーのひと⼿間でレビューコストは下がる • 特別なスキルやツールは必要ない • 余裕を⽣み出して、よりよいプロダクトを作って
 いきましょう! ”Twemoji" by

    Twitter, Inc and other contributors is licensed under CC-BY 4.0