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
コミットするタイミングについて
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
宮田勉
December 28, 2023
Programming
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コミットするタイミングについて
コミットの粒度を適切にしようとする時のポイントをまとめてみました
宮田勉
December 28, 2023
More Decks by 宮田勉
See All by 宮田勉
コミットメッセージを書く時に気をつけていること
tmiyata
2
390
Other Decks in Programming
See All in Programming
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
200
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
180
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
150
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
150
VueプロジェクトをTypeScript7に対応させる- Side-by-Side戦略による一部高速化 -
koukimiura
0
100
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
120
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
180
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
56
38k
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
1.2k
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
230
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
270
新卒PdEのリアル
ryu1013
1
490
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Building Adaptive Systems
keathley
44
3.2k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
Typedesign – Prime Four
hannesfritz
42
3.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
KATA
mclloyd
PRO
35
15k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
430
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
The agentic SEO stack - context over prompts
schlessera
0
930
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