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
コミットするタイミングについて
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
宮田勉
December 28, 2023
Programming
210
0
Share
コミットするタイミングについて
コミットの粒度を適切にしようとする時のポイントをまとめてみました
宮田勉
December 28, 2023
More Decks by 宮田勉
See All by 宮田勉
コミットメッセージを書く時に気をつけていること
tmiyata
2
380
Other Decks in Programming
See All in Programming
飯MCP
yusukebe
0
480
iOS機能開発のAI環境と起きた変化
ryunakayama
0
140
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
230
見せてもらおうか、 OpenSearchの性能とやらを!
shunta27
1
170
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
130
AIエージェントで業務改善してみた
taku271
0
180
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
430
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
230
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
120
ファインチューニングせずメインコンペを解く方法
pokutuna
0
260
事業会社でのセキュリティ長期インターンについて
masachikaura
0
220
Kubernetes上でAgentを動かすための最新動向と押さえるべき概念まとめ
sotamaki0421
1
370
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
880
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
94
A Tale of Four Properties
chriscoyier
163
24k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
340
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
A Soul's Torment
seathinner
5
2.6k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
170
The Spectacular Lies of Maps
axbom
PRO
1
680
Marketing to machines
jonoalderson
1
5.1k
Transcript
コミットするタイミングについて 宮田 勉
注意事項 • あくまで一個人の考えです • 正解はありません • 私が普段考えていることの共有です
今日の内容 • 導入 • コミットの粒度とは? • コミットするタイミング
コミットとコミットログ • コミット ◦ 変更をバージョン管理ツールに保存されたもの • コミットログ ◦ コミットの集合体
コミットログで出来ること • 過去の変更を振り返れる • 問題があったら、1つ以上前の変更まで戻れる • 既にコミット済みの内容を後から修正できる • 複数のコミットを1つにまとめられる
便利だが、何も考えずにコミットすると... • 1つのコミットの中で色々な変更が入って何をしたいのかがわからない • 1つ1つのコミットが細か過ぎて、繋がりがわからない • 不具合があってコミットを切り戻したいけど、不具合と関係ない所まで切り 戻されてしまう • 日常生活で例えると整理整頓せずに収納しているイメージ
今日の話 • 整理整頓されていれば、探すときに時間かかからない • 保守しやすくなったり、レビューしやくなったりする、という話
コミットの粒度とは? • コミットするときの変更の度合いや規模
コミットの粒度が大きすぎる • 切り戻ししづらい ◦ 一部にバグがあっても、コミットのリバートができない • 修正内容がわかりづらい ◦ 差分が大きくなると、情報量も増える ◦
修正内容がわかりづらくなったり、見落としが発生しやすい 保守しづらく、レビューもしにくい!
コミットの粒度が小さすぎる • コミットが多くなる ◦ 1つ1つのコミットを見た時に、他のコミットとの繋がりがわかりづらい • 切り戻しの数が多くなる 細か過ぎても保守しづらく、レビューもしにくい!
コミットの粒度が適切であると • コミット単位で切り戻しがしやすい • コミット単位での差分が見やすくなる その結果 保守しやすく、レビューもしやすい!!
コミットするタイミング • 1つの作業単位 • 正常に動くタイミング
1つの作業単位の例:コマンド実行 • コマンドやツール等によって自動的に作成や変更が加わる単位でコミット • 以下が区別できる ◦ 人による変更 ◦ コマンド実行による変更
コマンド実行と手動変更が混ざっている例 • コードのフォーマット修正(自動で修正)されたもの • statusがcompletedだったらメールを送らない
コマンド実行と手動変更を分けた例 人の手とそうでない変更が区別つきやすいので見やすい 片方の変更だけ切り戻すこともできる
1つの作業単位の例:ファイル移動やリネーム • ファイルの移動やリネームといった機械的な変更のみでコミット • 上記以外の変更も混ぜると移動やリネームによってクラス名やファイル名な どの修正漏れかどうかがわかりづらくなる ※ファイルの移動やリネームする時に、コマンド実行で変更する場合もあるが、 クラス名の変更と同じコミットにする →1つの作業単位でコミットすることを意識する
1つの作業単位の例:TODOリスト • タスク単位でコミットする • コミットを見ただけで対応内容が想像つく
正常に動くタイミング • エラーが起きない状態でコミットする • エラーが起きる状態だと切り戻せない • アプリのコード修正とテストコードの修正がセットで1つのコミットになっ ていると動作が担保されているので尚良い
まとめ • 保守しやすさ、レビューしやすさもコミットの粒度次第で変わります • コミットする時は、紹介したポイント意識してみてください
参考 • https://qiita.com/jnchito/items/40e0c7d32fde352607be • https://www.codegrid.net/articles/git-tech-1 • https://qiita.com/chihiro/items/04482caebc702e75e84d