Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
240329_プルリクエストレビューの効率化
Search
ktc-yuji-torii
April 01, 2024
Technology
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
240329_プルリクエストレビューの効率化
プルリクエストのモチベーションを下げない工夫をまとめました。
ktc-yuji-torii
April 01, 2024
More Decks by ktc-yuji-torii
See All by ktc-yuji-torii
バックエンドのコードファーストなOpenAPIスキーマ駆動開発 - TSKaigi2025
yujitorii
2
840
Other Decks in Technology
See All in Technology
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
280
WasmをRustにする
sansantech
PRO
0
260
会社説明資料
persolserverworks
0
9.8k
Classmethod Company Deck
satoshi7
1
730
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
1
280
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
290
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
820
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
160
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
130
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
120
Kiro Crewをはじめよう
kizawa2020
1
160
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
120
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
A Soul's Torment
seathinner
8
3.8k
Paper Plane
katiecoart
PRO
5
54k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Facilitating Awesome Meetings
lara
57
7.2k
From π to Pie charts
rasagy
1
400
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
520
Ethics towards AI in product and experience design
skipperchong
2
440
Leo the Paperboy
mayatellez
10
2.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Transcript
プルリクエストの流れを改善する方法のまとめ 2024/4/1 #
©KINTO Corporation. All rights reserved. 2 自己紹介 バックエンド:Go, Python フロントエンド:React/TypeScript
日本酒好きです🍶 味と銘柄を覚えられないのが悩みです KINTOテクノロジーズ株式会社 プラットフォーム開発部 バックエンド /フロントエンドエンジニア 鳥居 雄仁
©KINTO Corporation. All rights reserved. 3 プルリクエスト処理速度の低下の主な原因 • プルリクエストを開いた後そっと閉じたことありませんか? •
レビューを行う側のモチベーションの低下が滞留の原因 • モチベーションの低下を引き起こす要因に対処することで、 プルリクエストの処理速度を向上させることが可能 • 待ち時間が減り、チームの開発効率も向上する
©KINTO Corporation. All rights reserved. 4 モチベーション低下の要因の対処 • プルリクエストのサイズと構造の最適化 •
PRの単位を小さくする • GitHubActions等を活用しレビュー負担を軽減する • コミュニケーションと透明性の向上 • テンプレートを活用し必要な情報を明確にする • コメント略語を活用し、誤解を避ける • Slack連携等を活用し即時通知や、リマインドを実施する • モブPR(ウォークスルー)で消化する • その他 • プルリクエストのサイクルタイムを意識する • CodeSpacesで動作確認
©KINTO Corporation. All rights reserved. 5 プルリクエストのサイズと構造の最適化 1
©KINTO Corporation. All rights reserved. 6 PRのサイズを小さくする • プルリクエストを開いた時の画像をみてみましょう •
そっと閉じたくなりますよね?😇
©KINTO Corporation. All rights reserved. 7 PRのサイズを小さくする • ファイル変更数が多いとモチベ低下 •
変更数多いな大変そう、後で見るか・・・ • ファイル変更数が多いと • コメントも多くなる → 途中から参加しづらい • 文脈を追う負担増 • レビュアー減少、レビュー効率低下と悪循環 → プルリクエストのリードタイムが増加
©KINTO Corporation. All rights reserved. 8 PRのサイズを小さくする • 基本的に最大5~10個程度に抑える •
例えば • バックエンド: • 一つのレイヤー単位などにする • DIなどを利用し疎結合な設計をする • フロントエンド: • コンポーネント単位にする • サブブランチを作成する • ブランチが巨大になる場合、サブブランチを作成しブランチに集約 • feature_a • feature_a_sub1, • feature_a_sub2といった形
©KINTO Corporation. All rights reserved. 9 GitHub Actionsを活用し、負担の軽減 • コード品質のチェック、事前テストを実施する
• 基本的な品質保証を自動化することでレビュー対象が明確になる • フロントエンドの場合はVRTの活用
©KINTO Corporation. All rights reserved. 10 コミュニケーションと透明性の向上 2
©KINTO Corporation. All rights reserved. 11 プルリクエストテンプレート:レビュー優先度 • レビュー優先度を示すことで、具体的な期限を伝える •
プルリクエストテンプレートを作成し、ガイドライン化する
©KINTO Corporation. All rights reserved. 12 プルリクエストテンプレート:レビューの種類 • プルリクエストの内容を示すことで、レビューの要求レベルを 理解できる
©KINTO Corporation. All rights reserved. 13 プルリクエストテンプレート:内容説明 • レビューをしやすくするために情報提供する •
実装内容や仕様書のリンク等 • 警告表示構文等ででみやすさを工夫する
©KINTO Corporation. All rights reserved. 14 行コメントの活用 • レビュイー: •
実装背景・課題感などコードから読みとれない情報を提供 • レビュアー: • 直接的なフィードバックなどを提供 • テキストコミュニケーションによる摩擦の軽減は必須
©KINTO Corporation. All rights reserved. 15 コメントにコメント略語ラベルをつける • 意図と違う受け取り方をされやすいので、それを補うことで心 理的安全性を高める
• コメントへの対応内容も明確になる • 例えば • ask, Q → 質問 • imo → 個人的な見解、軽微な提案 • nits → 些細な質問、無視してOK • must → 承認には修正必須 • fyi → 参考までに共有 • good → 良い実装には称賛を! • →
©KINTO Corporation. All rights reserved. 16 レビュアーの自動アサイン • チームに対して自動でアサイン •
レビューの負担を公平に分配 • 設定手順 1. チームを作成する 2. .github/CODEOWNERSファイルにチームを設定 ファイルの種類ごとに対象チームを設定することもできる 続く
©KINTO Corporation. All rights reserved. 17 オートアサイン設定 • アサインしたいチームの設定画面へ遷移して Enable
auto assignment にチェック • 振り分け方法はラウンドロビンorロードバランス
©KINTO Corporation. All rights reserved. 18 モブPR(ウォークスルー)で消化する • 口頭説明が必要なもの、早めにマージしたいもの、PRをが停滞 しているものなどは
モブプロならぬモブPRを実施。Zoomで消化する • Slackのデイリーワークフローでアピールできるようにしています
©KINTO Corporation. All rights reserved. 19 Slack連携等を活用し即時通知や、リマインドを実施する • プルリクエストの作成時に通知をする •
プルリクエストの作成に気づくきっかけ • チームに対してリマインドをスケジュールする • 滞留しているプルリクエストの消化を促す
©KINTO Corporation. All rights reserved. 20 その他 3
©KINTO Corporation. All rights reserved. 21 プルリクエストのサイクルタイムを意識する • 一定時間経過するとコメントを投稿する •
アサインされたレビュアーに通知が飛ぶので気付ける • 経過時間に応じてラベリングする • 想定よりリードタイムが⾧いPRを残さない • ラベルでフィルタリングできる
©KINTO Corporation. All rights reserved. 22 プルリクエストのサイクルタイムを計測し改善につなげる • チームのパフォーマンスを可視化し、改善する •
可視化ツールを利用して計測 • pull-request-analytics • https://github.com/marketplace/actions/pull-request-analytics • Findy Team+ • チームで日々の改善につなげましょう🚀🚀
©KINTO Corporation. All rights reserved. 23 CodeSpacesで動作確認 • codespace は、クラウドでホストされている開発環境
• Dev Containersと同様の体験が可能 • ローカル環境のブランチを切り替える必要がないので 現在の作業に影響しない • (無料枠あり) • CodeSpacesについては テックブログに記事を書きました (情報の鮮度落ちてきましたが)
以上! Thank you !
APPENDIX
©KINTO Corporation. All rights reserved. 26 参考文献 • ちょっとした気配りで皆を幸せにする GitHub
の使い方 #初心者 - Qiita https://qiita.com/squid-cat/items/7166317e60d3ff96ccb7 • レビューコメントにメタ情報を持たせよう https://zenn.dev/yumemi_inc/articles/review- badge • Googleのコードレビューのガイドラインに沿って自分がエンジニア1年目に書いたコードをレ ビューしてみた | PrAhaENGINEERLAB https://www.praha-inc.com/lab/posts/code-review • Playwright + reg-suitでVisual Regression Testing(VRT)を導入 https://zenn.dev/koheii/articles/8214467454a46c • 開発のリードタイム削減のために入れたgithub actionsたちをご紹介! (実装例付き) #GitHub - Qiita https://qiita.com/haruka_odenkun/items/d95dbb5f2dc91ff9187b • [続!Dev Container] GitHub Codespacesでクラウド開発環境を構築 | KINTO Tech Blog | キン トテックブログ https://blog.kinto-technologies.com/posts/devcontainer_codespaces/ • 基本的な書き方とフォーマットの構文 - GitHub Docs https://docs.github.com/ja/get- started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic- writing-and-formatting-syntax#alerts