Slide 1

Slide 1 text

CodeReviewee が求められること PHPカンファレンス関西 2024 おのぽん @onopon_engineer 初心者向け

Slide 2

Slide 2 text

呼び名論争をしたいわけではないので、 本発表では、 Reviewer(=レビューする人) Reviewee(=レビュー依頼を出す人) と英語表記で統一します。 X(旧Twitter)への投稿は、 #phpkansai #a とつけていただけると嬉しいです! 2 はじめに

Slide 3

Slide 3 text

自己紹介 株式会社ウエディングパーク Photorait 本部 おのぽん(@onopon_engineer) ・2022年6月にウエディングパークに入社 ・前職では   - 大規模ソーシャルゲームのサーバエンジニア   - 人工知能コミュニケーションロボットのサーバ全般   - Androidアプリ開発  を行い、業務でのPHP開発は未経験 ・エンジニア以外の時は大体卓球をしています🏓 ・パラ卓球選手のコーチもしており、  今年のパリパラリンピックでの活躍を目指し日々奮闘中 3

Slide 4

Slide 4 text

Photorait 全国のフォトウエディング・前撮りの撮影スタジオ・サロン情報と共にクチコミを掲載している 日本最大級のフォトウエディング専門クチコミ情報サイト 4

Slide 5

Slide 5 text

時は2023年10月 5

Slide 6

Slide 6 text

「Code Reviewerが求められていること」を発表 そこでは、 今日からできる!Revieweeから求められるコードレビュー術を身につけよう! というゴールを元に、Revieweeへインタビューを行い結果を分析。 Revieweeの気持ちに迫りながらReviewerがどのようにレビューをしていくのが良さ そうかを考察し、良いコメント例やレビュー術を紹介。 https://engineers.weddingpark.co.jp/code_review_technique/ 6 PHP Conference 2023にて 今日からできる!Revieweeから求められるコードレビュー術

Slide 7

Slide 7 text

Revieweeが求めることはわかった では、Reviewerが求めるレビューの依頼の仕方とは一体何なのだろう? 7

Slide 8

Slide 8 text

今日からできる! Reviewerから求められるレビュー依頼術を身につけよう! 8 本セッションのゴール

Slide 9

Slide 9 text

と思ってプロポーザルの応募をしたものの 9

Slide 10

Slide 10 text

10 採択いただいた直後のプロポーザル

Slide 11

Slide 11 text

11 採択いただいた直後のプロポーザル

Slide 12

Slide 12 text

12 採択いただいた直後のプロポーザル お気に入り登録1! しかもこの1は僕自身! つまり実質0!

Slide 13

Slide 13 text

13 見にきてくださる方いるかな・・・?

Slide 14

Slide 14 text

強い気持ちで発表させていただきます。 14

Slide 15

Slide 15 text

● Revieweeに必要な心構え ● Reviewerへのインタビュー調査 ● 調査結果の分析 ● 分析からわかるReviewerの気持ち ● Reviewerの気持ちを理解したPR例 ● 今日からできる!Reviewerから求められるレビュー依頼術 ● まとめ 15 アジェンダ

Slide 16

Slide 16 text

自分のことしか考えないでPR(= Pull Request) を出した新卒1年目の大失敗 16

Slide 17

Slide 17 text

新卒1年目おのぽん:「レビューお願いします!」 17

Slide 18

Slide 18 text

新卒1年目おのぽん:「レビューお願いします!」 18

Slide 19

Slide 19 text

新卒1年目おのぽん:「レビューお願いします!」 〜 20秒後 〜 先輩エンジニア:「コメントしました。」 19

Slide 20

Slide 20 text

新卒1年目おのぽん:「レビューお願いします!」 〜 20秒後 〜 先輩エンジニア:「コメントしました。」 20

Slide 21

Slide 21 text

新卒1年目おのぽん:「レビューお願いします!」 〜 20秒後 〜 先輩エンジニア:「コメントしました。」 周囲のエンジニア:「www」 21

Slide 22

Slide 22 text

新卒1年目おのぽん:「レビューお願いします!」 〜 20秒後 〜 先輩エンジニア:「コメントしました。」 周囲のエンジニア:「www」 22

Slide 23

Slide 23 text

新卒1年目おのぽん:「レビューお願いします!」 〜 20秒後 〜 先輩エンジニア:「コメントしました。」 周囲のエンジニア:「www」 エンジニアは怖い生き物なのだと思い始める 23

Slide 24

Slide 24 text

● Reviewerの気持ちを考えてPRを出す ○ 思いやりのないPRはチーム内での関係性の破綻を招いたり、 自分自身が傷つく恐れがある ● 思いやるためにはどうすれば良いか ○ まずはその人(= Reviewer)のことをよく理解しよう 24 Revieweeに必要な心構え

Slide 25

Slide 25 text

● 対象:20-30代の弊社のいろんな役職のPHPerエンジニア ● 人数:10名 ● インタビュー時間:10分 ● 内容 25 Reviewerの理解を深めるインタビュー PRをReviewする際、 ● レビューをする時にどのような点・内容に意識を向けているか? ● 指摘部分をコメントする際、気をつけている点はあるか? ● レビューしていて大変だなと思う時は? ● どのようなPRだと嬉しい? ● どのようなPRだと見たくない?(テンションが下がる?)

Slide 26

Slide 26 text

KA法とは、定性調査で明らかにしたターゲットの声や行動・体験などの「質的データ」 を分析・モデリングし、本質的なニーズやインサイトを明らかにしていく手法 26 インタビュー結果をKA法を用いて潜在ニーズを明らかに 参考URL: https://www.unprinted.design/articles/ka-method/#3a3126842b78ec5125e19f33a7956099 インタビューにより得られた回答を 1文ずつ出来事に記載する 出来事から考え得る心の声を記載 行動の背景にある価値を記載 ◯KAカード例

Slide 27

Slide 27 text

27 実際に行ったKA法の様子 140枚を超えるKAカードを作成!

Slide 28

Slide 28 text

グループ② グループ① KJ法とは、書き出した情報の断片的な要素を関連づけて、 俯瞰しながらグループ化していく手法 28 KJ法を用いて潜在ニーズを分析 参考URL: https://www.unprinted.design/articles/ka-method/#3a3126842b78ec5125e19f33a7956099

Slide 29

Slide 29 text

29 実際に行ったKJ法の様子 5つにグルーピング!

Slide 30

Slide 30 text

30 Reviewerが見出したい価値 プロダクトの質を 向上させたい 迅速にレビュー を終わらせたい レビューの質を向上 させたい 組織を 乱したくない 自他成長

Slide 31

Slide 31 text

31 RevieweeがReviewerの要望を満たすことができるもの プロダクトの質を 向上させたい 迅速にレビュー を終わらせたい レビューの質を向上 させたい 組織を 乱したくない 自他成長

Slide 32

Slide 32 text

32 一見矛盾した要望のように見える 迅速にレビュー を終わらせたい レビューの質を向上 させたい

Slide 33

Slide 33 text

33 一見矛盾した要望のように見える KAカードの心の声 ● レビューにかけるパワーを抑えたい ● 理解しやすいコードを読みたい ● レビューの回数を抑えたい -> 基本的にReviewerは忙しい(≒作業を中断し たくない) KAカードの心の声 ● 概要を書いて欲しい ● 意図を素早く理解したい ● より適切なレビューを届けたい -> ReviewerはRevieweeの考えを理解したい Reviewee・Reviewerがお互いを理解し合う必要がある 迅速にレビュー を終わらせたい レビューの質を向上 させたい

Slide 34

Slide 34 text

34 求められているPRの出し方は意外にシンプル ◯ 忙しいReviewerがサクッと見ることのできるような工夫を施す ◯ Reviewerに自分の考えや意図を伝える

Slide 35

Slide 35 text

◯ 忙しいReviewerがサクッと見ることのできるような工夫を施す 35 求められているPRの出し方は意外にシンプル ● 1PRにおけるファイル数を少なく抑える ● 軽量なPRであることを伝える ◯ Reviewerに自分の考えや意図を伝える

Slide 36

Slide 36 text

36 1PRあたりにおけるファイル数の感じ方

Slide 37

Slide 37 text

37 1PRあたりにおけるファイル数の感じ方 11-15より意見が分かれ始める。 10ファイル以下くらいに抑えられると良さそう。

Slide 38

Slide 38 text

● 1PRにおけるファイル数を少なく10ファイル程度に抑える ● 軽量なPRであることを伝える ◯ 忙しいReviewerがサクッと見ることのできるような工夫を施す 38 Revieweeが求められているPRの出し方はもの意外にシンプル ◯ Reviewerに自分の考えや意図を伝える

Slide 39

Slide 39 text

39 軽量なPRであることを伝える例 SlackでPRのレビューを依頼する際によく見るコメント例 ◯どれくらい軽量であるかを伝える ◯どれくらい軽い気持ちで見ることができるのかを伝える

Slide 40

Slide 40 text

● 1PRにおけるファイル数を10ファイル程度に抑える ● 軽量なPRであることを伝える ◯ 忙しいReviewerがサクッと見ることのできるような工夫を施す 40 Revieweeが求められているPRの出し方はもの意外にシンプル ◯ Reviewerに自分の考えや意図を伝える ● レビューを依頼する前に自らPR内にコメントを残しておく ● 処理を簡単に書く(一目で理解できるようなコードを書く) ● 事前にReviewerと実装方針のすり合わせを行う

Slide 41

Slide 41 text

● 1PRにおけるファイル数を10ファイル程度に抑える ● 軽量なPRであることを伝える ◯ 忙しいReviewerがサクッと見ることのできるような工夫を施す 41 Revieweeが求められているPRの出し方はもの意外にシンプル ◯ Reviewerに自分の考えや意図を伝える ● レビューを依頼する前に自らPR内にコメントを残しておく ● 処理を簡単に書く(一目で理解できるようなコードを書く) ● 事前にReviewerと実装方針のすり合わせを行う レビュー依頼外のポイントなので今回の発表では割愛

Slide 42

Slide 42 text

42 コメント例①:第三者が見て疑問に思いそうなポイントには先回り 「なぜこのようなロジックになるのか」 と質問されそうな点に対し、先に回答 理解に時間を要しそうなロジックは、 図解するなどし短縮を図る

Slide 43

Slide 43 text

43 コメント例②:Reviewerの質問内容が理解できない場合は素直に聞く ・素直に補足内容を求める ・Reviewerの意図を理解してから回答 ・ハドルなど口頭で補足をいただくのもOK

Slide 44

Slide 44 text

44 RevieweeがReviewerの要望を満たすことができるもの プロダクトの質を 向上させたい 迅速にレビュー を終わらせたい レビューの質を向上 させたい 組織を 乱したくない 自他成長

Slide 45

Slide 45 text

45 Reviewerの想い プロダクトの質を 向上させたい 迅速にレビュー を終わらせたい レビューの質を向上 させたい 組織を 乱したくない 自他成長

Slide 46

Slide 46 text

46 Reviewerの苦悩〜組織を乱さずプロダクトの質の改善につなげるために〜 コメントをしなければプロダクトの質の改善には繋がらず、 Revieweeを傷つけることもまたプロダクトの質の改善には繋がらない プロダクトの質を 向上させたい 組織を 乱したくない KAカードの心の声 ● コードの質を落としたくない ● 属人化を防ぎたい ● 運用に耐えうるコードとなっていてほしい KAカードの心の声 ● Revieweeへの気遣い ● ギスギスしたくない ○ 度重なる指摘コメントはRevieweeの気が滅入ってしまったり、 傷つけてしまう恐れがある (人格否定や攻撃的なコメントは論外) Reviewerの苦悩 → Reviewerにとってコメントしやすい状況を作ってあげよう!

Slide 47

Slide 47 text

47 Reviewerにとってコメントしやすい状況を作った例 ● 「教えてほしい」というスタンスを伝える → Reviewerにとってコメントしやすい状況を作る ● Reviewerは悩みポイントも理解することができる → Reviewerは明確にコメントを残すことができ、  レビューの質・レビュー速度UP ● 方向性が定まり一旦の解決策がある場合は、 とりあえず進めるという行動はGOOD! ○ 依頼のタイミングで疑問点を聞くことで他エンジニ ア(≒Reviewer)の作業を中断する回数を減らすこ とができる → Reviewerから奪う時間を最小限に抑える

Slide 48

Slide 48 text

48 本セッションのゴール

Slide 49

Slide 49 text

今日からできる! Reviewerから求められるレビュー依頼術を身につけよう! 49 本セッションのゴール

Slide 50

Slide 50 text

50 Reviewerが求めるPR・レビュー依頼 ①サクッと見ることができるもの ②Revieweeの考えや意図が伝わるもの レビュー依頼術 ● 1PRにおけるファイル数を10ファイル程度に抑える ● 軽量なレビューであることを伝える ● レビューを依頼する前に自らPR内でコメントをつけておく ○ 第三者が悩みそうな点は先回りしてコメント ○ Reviewerにとってコメントしやすい状況を作る ○ 迷ったり相談したい点もあらかじめコメントしておく ● 処理を簡単にする(一目で理解できるようなコードを書く) ● 事前にReviewerと実装方針のすり合わせをする 今日からできる!Reviewerから求められるレビュー依頼術 https://engineers.weddingpark.co.jp/review_request_technique/

Slide 51

Slide 51 text

51 まとめ ● Reviewerの気持ちを知るために、インタビューを行った ● インタビュー結果を分析することで、レビュー依頼に工夫を凝らせば Reviewerの求める下記2点の要望を満たせることがわかった ○ 迅速にレビューを終わらせたい ○ レビューの質を向上させたい ● RevieweeがReviewerにとってコメントしやすい状況を作ることで、 レビューの速度・質は向上し、プロダクトの質の向上につながる ● 本セッションでは、上記を満たすコメント例やレビュー依頼術を紹介

Slide 52

Slide 52 text

52 ご清聴ありがとうございました!