Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

⾃⼰紹介 • ⾼野 福晃 @fortkle • コネヒト株式会社 / Backend Engineer • PHP, Go, React, etc • 本を共著で書きました! • 『TECHNICAL MASTER はじめての
  PHPプロフェッショナル開発』

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

よくある課題の1つ
 レビュー待ちPRが溜まる

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

例えば… • 機械にできることは機械に任せる • Linter や 静的解析の導⼊ • レビュー⾃動化のSaasを⼊れる • ペアプロ / モブプロ • etc

Slide 13

Slide 13 text

ですが、もっと簡単なことで

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

例1

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

改善例

Slide 23

Slide 23 text

改善例

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

例2

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

改善例

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

例3

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

まとめ

Slide 37

Slide 37 text

まとめ • レビュイーのひと⼿間でレビューコストは下がる • 特別なスキルやツールは必要ない • 余裕を⽣み出して、よりよいプロダクトを作って
 いきましょう! ”Twemoji" by Twitter, Inc and other contributors is licensed under CC-BY 4.0