Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
240329_プルリクエストレビューの効率化
Search
ktc-yuji-torii
April 01, 2024
Technology
0
220
240329_プルリクエストレビューの効率化
プルリクエストのモチベーションを下げない工夫をまとめました。
ktc-yuji-torii
April 01, 2024
Tweet
Share
More Decks by ktc-yuji-torii
See All by ktc-yuji-torii
バックエンドのコードファーストなOpenAPIスキーマ駆動開発 - TSKaigi2025
yujitorii
2
670
Other Decks in Technology
See All in Technology
旬のブリと旬の技術で楽しむ AI エージェント設計開発レシピ
chack411
1
220
re:Invent2025 セッションレポ ~Spec-driven development with Kiro~
nrinetcom
PRO
2
170
チームで安全にClaude Codeを利用するためのプラクティス / team-claude-code-practices
tomoki10
7
3.2k
Java 25に至る道
skrb
3
200
歴史から学ぶ、Goのメモリ管理基礎
logica0419
14
2.7k
投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)
gamella
1
640
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
320
CQRS/ESになぜアクターモデルが必要なのか
j5ik2o
0
800
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.5k
「アウトプット脳からユーザー価値脳へ」がそんなに簡単にできたら苦労しない #RSGT2026
aki_iinuma
11
4.8k
Eight Engineering Unit 紹介資料
sansan33
PRO
0
6.2k
202512_AIoT.pdf
iotcomjpadmin
0
200
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.5k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Everyday Curiosity
cassininazir
0
120
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
41
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
110
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.3k
Building Adaptive Systems
keathley
44
2.9k
HDC tutorial
michielstock
1
320
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