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

【チーム開発】プルリクを分割して レビュー負荷を軽減する

ぎゅう
September 07, 2023

【チーム開発】プルリクを分割して レビュー負荷を軽減する

チーム開発の負荷軽減として、プルリクの分割が注目されています。
本スライドでは、どのようにしてプルリクを分割すればよいのか?具体的な方法を解説していきます。
また、プルリクを分割するメリットを説明することで導入イメージを深めていきます

ぎゅう

September 07, 2023
Tweet

More Decks by ぎゅう

Other Decks in Programming

Transcript

  1. プルリクを分割して
    レビュー負荷を軽減する

    View full-size slide

  2. 自己紹介
    エンジニア3年目
    趣味:サウナ、ボードゲーム
     ぎゅう(@gyu_outputs)
     → 前職:Laravel / Vue / AWS
     → Golangを現在メイン
     → エンジニア仲間と行きます

    View full-size slide

  3. 技術本を友達と書いてます

    View full-size slide

  4. レビューが大変という
    経験はございませんか?

    View full-size slide






















  5. 分割でレビューが必要になる

    View full-size slide

  6. 前どこまで確認したっけ?
    ファイル数が多いと起こりがち...。

    View full-size slide




















  7. レビューが後回しにされることも

    View full-size slide

  8. 一気にマージされて、コンフリクトに苦しむ





















    View full-size slide

  9. そんな現場に役立つ方法

    View full-size slide

  10. プルリクを分割して
    レビュー負荷を軽減する

    View full-size slide

  11. プルリク分割が注目されている

    View full-size slide

  12. 現職でもかなり分割されている










































    View full-size slide

  13. 変更行が500行は多すぎです
    プルリク分割してください
    自分も過去に注意をされる

    View full-size slide

  14. でも、どう分割すれば?

    View full-size slide

  15. そんな話をします

    View full-size slide

  16. プルリクの分割単位

    View full-size slide

  17. findyの資料を見てみましょう

    View full-size slide

  18. ※findyより

    View full-size slide

  19. 補足説明を入れると、

    View full-size slide

  20. ※findyの画像に補足説明を追加
    テーブル作成
    モデル作成
    Repository作成
    usecase作成
    handler作成

    View full-size slide

  21. 利用していないから、リリースしても問題なし
    テーブル作成
    モデル作成
    Repository作成
    usecase作成
    handler作成
    リリースしても影響なし
    QA実施

    View full-size slide

  22. テーブルを作成
    model, Entityを作成
    handlerを空で作成。swaggerを記述してAppチームに共有
    必要であれば検証用に仮データをreturn
    Repositoryの実装
    Usecaseの実装
    handlerの中身を実装
    フロントエンドとAPIの繋ぎ込み→ 動作確認 → QA実施
    関数が必要になったら、こまめにプルリク発行
    1.
    2.
    3.
    a.
    4.
    5.
    6.
    7.
    8.
    プルリク分割の単位

    View full-size slide








  23. View full-size slide


























  24. View full-size slide

  25. LGTM
    2分ほどでプルリクを確認できる

    View full-size slide

  26. レビュー時間を圧倒的に短縮

    View full-size slide

  27. メリットはそれだけではない

    View full-size slide

  28. メリット①
    コンフリクトの負荷軽減

    View full-size slide

  29. handler
    usecase
    Repository
    handler
    usecase
    Repository
    API API
    コンフリクト
    コンフリクト
    コンフリクト
    マージ
    機能が一つ増えると、コンフリクトの影響範囲が大
    一気に修正は大変

    View full-size slide

  30. API
    handler
    usecase
    Repository
    API
    handler
    usecase
    Repository コンフリクト
    コンフリクト
    コンフリクト
    コンフリクトが分割されることで、負担が軽減される

    View full-size slide

  31. コンフリクトのストレス軽減

    View full-size slide

  32. マイクロサービスアーキテクチャ
    などを活用しなくても
    問題なく開発が進められる

    View full-size slide

  33. メリット②
    タスク管理がしやすい

    View full-size slide

  34. handler
    usecase
    Repository: Get
    TODO
    TODO
    DOING
    Repository: Save TODO
    タスクが細分化されて、状況がわかりやすい
    早くしないと...。

    View full-size slide

  35. handler
    usecase
    Repository: Get
    DOING
    DOING
    DOING
    Repository: Save DOING
    フォローしやすい
    手伝いますね
    手伝いますね
    手伝いますね
    ありがとうございます

    View full-size slide

  36. 状況に合わせて
    柔軟に対応できる

    View full-size slide

  37. 予定より早くリリースできました
    競合他社よりも早くリリースできる

    View full-size slide

  38. モブプロで設計を決める

    View full-size slide

  39. このコード何?ってなるのでは?

    View full-size slide

  40. モブプロで実装方針を整理する
    Notionで実装方針の認識を合わせる

    View full-size slide

  41. あの箇所の
    プルリクですね

    View full-size slide

  42. 実装方針の認識が一緒なら
    問題なし

    View full-size slide

  43. Githubでなるべ
    く管理したい
    モブプロの最適解は模索中

    View full-size slide

  44. 最後に、、、

    View full-size slide

  45. 負担が軽減することで
    毎日2~5回リリースも可能

    View full-size slide

  46. あなたの会社でも
    プルリクを分割しては?

    View full-size slide

  47. ご清聴ありがとうございました

    View full-size slide