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
社内のGitの運用ルールを作った時の話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Soejima Karukichi
June 08, 2022
Technology
6.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
社内のGitの運用ルールを作った時の話
Soejima Karukichi
June 08, 2022
More Decks by Soejima Karukichi
See All by Soejima Karukichi
開発効率をアップするテクニック・ツール3選 / three-way-tools-and-techniques
soejima0124
1
1.1k
Tanstack Queryを使ってデータの取得や変更以外の情報もグローバルステートとして管理する/Management global state using to tanstack query.
soejima0124
0
1k
Rust製のクロスプラットフォームターミナル / about-wezterm
soejima0124
0
3.9k
ウェブ制作からウェブ開発に転向する時に気づいたこと・大変だったこと
soejima0124
0
310
社内の採用サイトを microCMS・Next.js・AWS Amplifyを使ってリプレイスした話
soejima0124
0
4k
Other Decks in Technology
See All in Technology
絵ではじめるKubernetesセキュリティ
aoi1
3
480
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
110
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
680
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
890
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
4
560
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
8
840
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
340
ASTを使って影響範囲を特定する
nealle
0
190
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
740
What the customer really needed
kawaguti
PRO
1
120
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
280
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
390
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
270
Building the Perfect Custom Keyboard
takai
2
870
The Curious Case for Waylosing
cassininazir
1
500
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
430
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Transcript
社内のGitの運用ルールを作った話
カルキチ副島 フロントエンドエンジニア@ショーケース Twitter: @karukichi_yah GitHub: https://github.com/Yota-K 経歴 2020年4月にエンジニアになったので、エンジニアとしての実務経験は2年目で す。 1社目ではWordPressを使ったサイト構築と社内ツール(PHP・Laravel)の開発に
携わっていました。 2020年5月からショーケースにジョインして、現在は自社SaaSアプリのフロントエ ンド開発(主にTypeScript・React)及び、技術選定に携わっています。 プロフィール
Gitの運用ルールを作った理由
リリース時の手順が定められていなかったから 自分が入社した時点でリリース時の手順が定められておらず、プロジェクトごとに バラバラでした。 リリース手順が定められていないと、以下のような問題が発生します。 • 新しく入ってきた人にリリース作業を教えるのが大変! • 別のプロジェクトからジョインしてきた人が混乱してしまう • 結果として、リリース作業の属人化に繋がってしまう
💡 リリースの手順が定められていないと、新卒で入ってきたエンジニア や経験の浅いエンジニアに研修等でリリース作業について教えることが 難しくなるため、人材採用にも影響すると考えました。
Gitグラフが煩雑でコミットログが追いづらかったから プルリクエストをマージする方法(Create a merge commit・Squash and merge など)に関しても特に定められていなかったので、コミットログが追いづらいとい う問題が発生していました。 コミットログが煩雑だと、コミットログから過去の実装が追いづらくなって、プロ
ジェクトの概要を掴むのが大変です...😢
課題解決のために導入したGitの運用ルール
導入したルール 1. ブランチの運用方法に関するルール 2. プルリクエストのマージ戦略に関するルール 3. リリース手順に関するルール
ブランチの運用方法に関するルール
ブランチの運用方法に関するルール リリース作業をスムーズに行うためには、ブランチの運用ルールを定める必要があ ると考えたので、ブランチの運用ルールを作りました。 ブランチの命名規則や必要なブランチ、マージする際の手順等が明確になっていれ ば、開発やリリース作業を行う時に余計なことを考える必要がなくなります。
ブランチの運用ルールとしてgit-flowを導入 ブランチの運用ルールにはGitのブランチモデルの一つであるgit-flowを採用しま した。 ブランチの運用ルールを決めることで、複数人で開発を行う時に好き勝手にブラン チを作成を防止し、混乱を防ぐことに繋がります。 💡git-flow以外の著名なブランチモデルとしては、GitHub-flowや GitLab-flowなどがあります。
図にするとこんな感じです
None
開発をするとき mainから切ったdevelopブランチから featureブランチを切って開発を行い、 developブランチにマージする。
リリースを行う時 developブランチから releaseブランチを切って README.mdやCHANGELOG.mdを編集して、 mainブランチとdevelopブランチにマージする。 マージ後にmainブランチでタグ付けを行う。
緊急の不具合対応を行う時 mainブランチから hotfixブランチを切って、不具合 対応を行なって、 mainブランチとdevelopブランチ にマージする。 マージ後にmainブランチでタグ付けを行う。
git-flowでのブランチの役割 main(master): プロダクトしてリリースできる状態のブランチ。 リリース時のタグ付けを行う以外、このブランチで作業を行ってはいけません。 develop: 開発用のブランチ。 レビュー済みの内容のみが取り込まれた状態のブランチです。 releaseブランチを切る以外、このブランチで作業を行ってはいけません。 feature: 開発を行うためのブランチ。
developから分岐してレビューが完了したら、developにマージします。 release: リリース時に使用するブランチ。 developから分岐して、リリース準備(バージョンやREADMEの更新等)が完了したら、 developとmainにマージします。(マージ完了後はすぐに削除します。) hotfix: リリース後にクリティカルなバグが発生した際に使用するブランチ。 mainから分岐して、バグの対応が完了したらmainとdevelopにマージします。(マージ完了後 はすぐに削除します。)
git-flowにはCLIツールもあります git-fllowでのブランチ運用をサポートするCLIツールを使用すれば、誰が作業して もgit-flowのルールに則ってブランチをチェックアウトしてくれます。 git-flow initで初期設定を行った状態で、 git-flow release start v1.0.0を実行すると release/v1.0.0というブランチを自動で
チェックアウトしてくれます!
プルリクエストのマージ戦略に関するルール
マージ戦略とは?
マージをする際の手段のことです。 「Create a merge commit」、「Squash and merge」、「Rebase and merge」の 3種類が存在します。
マージコミットの有無や、元のコミットログや マージ元のブランチとの関係を残すか残さな いかが異なります。 マージ戦略とは?
プルリクエストのマージ戦略に関するルール コミットログが追いづらいという問題を解決するために、マージ戦略に関するルー ルを作ることにしました。 開発を行う際にfeatureブランチをdevelopにマージする際は、「Squash and merge」でマージを行う決まりを作りました。 featureブランチのコミットログをdevelop・mainブランチに取り込んでしまうと、 作業過程のコミットも全て残ってしまうので、コミットログが見づらくなる原因に なります!
Squash and mergeとは? Gitのマージ戦略の1つで、複数のコミットを1つにまとめたマージコミットが作成 される。 コミットが多くなる傾向にあるfeatureブランチでの作業内容を1つのコミットにま とめて、developブランチにマージすることができるので、Gitのログをきれいに保 つことに繋がる。
Create a merge commit • マージコミット・・・作成される • 元のブランチのコミットログ・・・残る • 元のブランチとの関係・・・残る
Squash and merge • マージコミット・・・作成される • 元のブランチのコミットログ・・・残らない • 元のブランチとの関係・・・残らない Create a merge commitとの違い
リリース手順に関するルール
リリース手順に関するルール git-flowのルールに則ってリリースを行うルールを作りました。 releaseブランチからdevelop・mainブランチにマージを行う際のマージ戦略は 「Create a merge commit」を使用しています。
Gitの運用ルールを導入するためにやったこと
運用ルールを導入するまでにやったこと 1. スライド資料の作成 スライド資料と合わせて、ハンズオン用のgitリポジトリの作成も行いまし た。 2. 作った資料を元に社内のエンジニアとルールのすり合わせを実施 3. ハンズオンの実施 リモートで作業を行っているメンバーがほとんどのため、Googleミートでハ
ンズオンを行いました。
Gitの運用ルールを決めて良かったこと
• 普段の開発やリリース作業を行う際にブランチの切り方やリリースの手順に関 して迷うことがなくなった • 自分が携わっていないプロジェクトでも、Gitのログがきれいになっているも のが増えた • Gitの理解が以前より深まった Gitの運用ルールを決めて良かったこと
今後の課題
• ルール自体のブラッシュアップ • 今回作成したルールの普及率をあげていく • レクチャーの内容を理解しきれていない人がいる(個人・個人のスキルに差が あるのが原因。今後は個人・個人のスキル差をなくしていくことが必要) 今後解決する必要がある課題
ご静聴ありがとうございました