Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ペアレビューは同期的でなくてもよくないですか?

 ペアレビューは同期的でなくてもよくないですか?

Kyoto.js 19 にて

ten986

May 26, 2023
Tweet

More Decks by ten986

Other Decks in Programming

Transcript

  1. ペアレビューは
    同期的でなくても
    よくないですか?
    5/26 Kyoto.js @ten986

    View Slide

  2. 自己紹介
    ● 名前: ten986
    ○ 呼び: てん / てんきゅー
    ● 株式会社ゆめみ 新卒2年目
    ● フロントエンドエンジニア
    ○ バックエンドも書く
    ● 最近はNext.jsとKotlinやってる
    ● 6月末に東京に引っ越す

    View Slide

  3. 注意
    ● 今日登壇することになりました
    ● 今日作りました
    ○ 業務放り出して作ってました
    ● js関係ないです
    ● 元記事が書けたが1時間前です
    ● スライドはさっきできました

    View Slide

  4. 今日話すことの要約
    ● 半同期的ペアレビューの提案
    ● Pull Requestにチェックポイントを設ける
    ● チェックポイントまでは非同期でレビュー
    ● チェックポイントの到達を同期し、全員到達したら次に向
    かう
    ● 非同期レビュー中に疑問点があれば、都度声を挙げて同
    期的に解決する

    View Slide

  5. 背景
    ● 数人〜数十人の開発チーム
    ● Pull Request(PR)のマージに
    2人のコードレビューが必要
    ● あなたはレビュワーのうちの1人となっている

    View Slide

  6. 非同期レビュー
    ● 簡単なPRの場合
    ● 2人のレビュワーがそれぞれ自由な時間に
    レビューするとよい
    ● タイミングを非同期的に行えるので、
    今回は非同期レビューと呼ぶことにする

    View Slide

  7. 非同期レビュー
    ● 自分の時間でできる
    ● 自分のペースでPRを読める
    ● 自分の詳しくない範囲の質問はすぐにはできない
    ● 総じて簡単めなPR向け

    View Slide

  8. ペアレビューの導入
    ● 開発現場では、時折難しいPRが出てくる
    ○ 仕様上難しい・実装上難しい、など・・・
    ● それを1人で非同期レビューで行うと効率が悪い
    ● そこでペアレビューが使われる
    ○ 3人以上ならモブレビューとも

    View Slide

  9. ペアレビュー
    ● 2人で時間を合わせて、集まってレビューする
    ● 疑問点に当たった時に相方にすぐ質問できるので、
    お互い能力を補い合い、質のいいレビューを高速に提供
    できる
    ● 強制的に時間を作れるので、モチベーション面でも
    ○ もう1人のレビュワーからの監視の目
    ● 難しめなPRで使うとよい

    View Slide

  10. 同期的ペアレビューと呼ぶ
    ● ペアレビューは同期的になりがち
    ● 「PRの概要」「読むコードの箇所」を逐一同期する
    ● レビュワーの片方が音読し、もう1人が聞くイメージ
    ● このような同期的に行われるレビューを、ここでは
    同期的ペアレビューと呼ぶことにする

    View Slide

  11. 同期的ペアレビューは非効率
    ● ペアレビューを逐一同期して行うと・・・
    ● 簡単な箇所も同期的に読んでしまう
    ○ PRの概要のごく簡単な部分は読み飛ばしたい
    ● コードを読む際、人の順番に合わせないといけない
    ○ 人によって読む順も読む速度も違う
    ○ ある箇所はAさんのが早い、別の箇所はBさんが早い
    ○ 自分のペースでレビューした方が早い箇所が多い

    View Slide

  12. 同期的ペアレビューを改善する
    ● 同期的ペアレビューの改善点は
    同期的に行いすぎていることから来ていそう

    View Slide

  13. 同期的ペアレビューを改善する
    ● 同期的に行いすぎない
    ● ペアレビューする以上「レビュワー同士の能力を補完する
    ことで、高速に質のいいレビューを行う」
    ことを犠牲にしたくない
    ● 難しいPRといえど、簡単な箇所もある
    ○ その箇所は非同期レビューで行った方が早い

    View Slide

  14. 半同期的ペアレビュー
    ● ペアレビューなので、時間を揃えて集まる
    ● PRにチェックポイントを作る
    ● チェックポイントに到達するまで、
    各レビュワーは非同期的にレビュー
    ○ 疑問点や指摘点などが出次第必ず発言し、同期的に解決
    ● チェックポイントだけレビュワー間で同期
    ○ 到達時に報告、全員が到達したら次に進む

    View Slide

  15. チェックポイント
    ● 例えば以下のように設ける
    ○ PRの概要まで
    ○ PRの動作確認を読み、実行するまで
    ○ コミットXを読み、レビューコメントをつけるまで
    ○ コミットYを読み、レビューコメントをつけるまで
    ○ コミットZを読み、レビューコメントをつけるまで

    View Slide

  16. 半同期的ペアレビューのポイント
    ● 基本的に非同期レビューをするので、
    簡単な場所の同期など余計な時間を使わない
    ○ 同期的ペアレビューの欠点解消
    ● チェックポイント間の同期をするので、
    レビュー時の疑問点の文脈を共有しやすい
    ○ レビュワー同士の能力を補完する目的が達成できる

    View Slide

  17. 余談
    ● 同期しすぎることで起きる問題点は、全部「チェックポイン
    トを用意して非同期で読む」ことで解決できそうな気がし
    ます。
    ● 「読書会」なんかでも、各人が音読して回し読みするより、
    チェックポイントだけ同期した方が理解早いかもしれない
    ですね。

    View Slide

  18. 今日話すことの要約(再放送)
    ● 半同期的ペアレビューの提案
    ● Pull Requestにチェックポイントを設ける
    ● チェックポイントまでは非同期でレビュー
    ● チェックポイントの到達を同期し、全員到達したら次に向
    かう
    ● 非同期レビュー中に疑問点があれば、都度声を挙げて同
    期的に解決する

    View Slide