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
230
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
680
Other Decks in Technology
See All in Technology
AI駆動開発を事業のコアに置く
tasukuonizawa
1
400
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
190
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
210
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
230
猫でもわかるKiro CLI(セキュリティ編)
kentapapa
0
120
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.4k
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
220
Claude Code for NOT Programming
kawaguti
PRO
1
110
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
520
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
170
(技術的には)社内システムもOKなブラウザエージェントを作ってみた!
har1101
0
330
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.4k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
Statistics for Hackers
jakevdp
799
230k
How GitHub (no longer) Works
holman
316
140k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
56
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
470
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
How to make the Groovebox
asonas
2
1.9k
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