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
250
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
760
Other Decks in Technology
See All in Technology
美味しいスイスチーズを作ろう🧀🐭
taigamikami
1
260
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.9k
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
1
380
Rancherの紹介&Update情報(RancherJP Online Meetup #09)
yoshiyuki_kono
0
130
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
0
370
AIにフローを作らせようとして挫折した話
hamatsutaichi
0
220
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
300
地元にいないローカルオーガナイザーの立ち回り
uvb_76
1
1.1k
Rubyで音を視る
ydah
1
100
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
840
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
0
190
React、まだ楽しくて草
uhyo
7
4.2k
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
GraphQLとの向き合い方2022年版
quramy
50
15k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
320
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Designing Powerful Visuals for Engaging Learning
tmiket
1
400
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How to train your dragon (web standard)
notwaldorf
97
6.7k
How STYLIGHT went responsive
nonsquared
100
6.2k
Everyday Curiosity
cassininazir
0
220
How GitHub (no longer) Works
holman
316
150k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
The Curse of the Amulet
leimatthew05
1
13k
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