漫画作りで例えるgit-flow
「ドリさんGitFlow使ってますか?GitFlow?ちょっとすみませんGitFlowがあんまりよくわかってないんで死んでいいですか?なんでだよでもちょっとそれはあるかもしれないGitFlow知らない奴は死んだ方がいいかもしれないちょっとねなんとなーくのイメージは持ってるんですけどなんとなーくでしか持ってないんですよ結構ちょっと」
「最初から説明すると聞いてる人の向けにもGitFlowっていうのはGitの管理ルールみたいなものですブランチの管理ルールですねなるほどねどこまで説明しようかって感じなんですがブランチはなんて言えばいいんでしょうねブランチはなんて言うんでしょうねまあ」
「本体があってその本体を編集していくわけじゃないですかみんなで編集するときに大きい絵を描こうってみんなで絵を描いてたとして自分の手元で作業するために大きい絵のコピーを取ってきて作業してこんなのできましたって言って元々の絵に反映させていくんですけどそうそうそうそういいねそのコピーして持ってきた紙がブランチです」
「要はコピーですねコピーで言えばよかったコピーだコピーしたやつをいろいろ管理して大元に戻すときに他の人と勝ち合ったときめんどくさかったりとかそうですねその大元のコピーを」
「ここから5年間保有してると大元のオピーとコピー大元のやつと異なりすぎて大変だってなっちゃったりするのでそれのごちゃごちゃを解決するルールがGitFlowですあーわかりやすはいなるほど目的はもうわかったわそううん」
「とりあえずコピーして基本的にエンジニアはいろんなソースコードをいじってますけど元のやつをコピーして自分の作業をやってそのやった作業を元に反映させてるということでそれをどんなルールなしでやっちゃうとカオスになっちゃうんでちゃんとしたルールをやりましょうねそれがGitFlowはい」
「ちょっとこの例えでいけそうだなと思ったのでこの例えのままいかせていただきますね今日はじゃあ絵画の人ってことですね絵画だとちょっとわかりづらいんで漫画にしましょう漫画にいきますか漫画かな多分ストーリーも済むし多分大元のやつに対して複数人が作業してガチャンとするでしょきっとトーン貼っといてみたいなそうそうそうそうじゃあまずギッ」
「使ったことある方はわかると思うんですけどリポジトリを作るとコードを最初にアップロードするとマスターブランチもしくはメインブランチができます多分今メインブランチですかねそうですね今メインになってますねこのメインブランチこいつは最終的に周囲者さんに提出する原稿ですなるほど商品用というかはいはいはい」

「でGitFlowはここから基本的に作業用のデベロップブランチというのを切りますこれはみんなで作業して本当に提出する用の事前版みんなでガッチャンコする版がデベロップブランチですなるほどなるほどこのデベロップブランチをみんなで編集してメインブランチに上げていきますはい」
「さっきちょっと言っちゃったんですけどそこからデベロップから派生させて個人に作業するんですがこの時にフィーチャーブランチを切りますフィーチャー機能日本語で言うと機能機能はい」
「基本的にこのGitFlowではデベロップブランチからフィーチャーブランチを切って自分の手元で作業するなるほどトーン貼るとかこのキャラクターだけ書くみたいな作業をするためにデベロップからブランチを切って作業して作業終わったらデベロップブランチに合流させます合流させるすいませんトーン貼れましたって言って合流させるとデベロップの方にトーンがフワンフワンって出てくると基本的にそうすると」
「フィーチャーブランチが何個もあってもデベロップに順次マージされていくというか合流していくのでデベロップがだんだんできていくとデベロップができててできててできててよっしゃ今週の原稿できあがったぜっていう段階で」
「まずメインブランチにズドンと戻しますそうすると完成ですやったこれがGitFlowの正常系のフローになりますねということは異常系もあるんですねはい異常系の話に行くとえっとあ」
「原稿の文字バグっとるやんとあー出た誤植誤植しとるやん誤植しとるやんってなった時に今提出しちゃった原稿はメインブランチにあるので通常のフローだとデベロップに」
「戻してからフィーチャーにやるんですけどそんな時間はねえとそうですね急いでも早く持ってかないといけないからあと10分でお願いみたいなそういう時はメインからホットフィックスっていうブランチに直接切り出しますすぐ直したそうだなすぐ直すすぐ直すブランチホットフィックスブランチにシュンって切り出してで」
「エコショック直してメインブランチに戻しますここでメインブランチ直接編集すればいいやんって思う人いるかもしれないんですけどホットフィックスブランチに切ることによって実際に結合するときに差分を他の人がレビューできたりとかあとは後から履歴を追ってここのタイミングでここ修正したんだっていうのが見やすくなるんですよねなるほど」

「切らないでそのままやると最初から反映されちゃうからもう一回誤植してても気づかれないとという感じで異常系というかメインでトラブったときはそういう風に修正しますもちろん開発中にトラブっちゃったときはデベロップから直接ブランチ切ってフィーチャーブランチ切ってやるのが多いんじゃないかなそんなイメージですねはい」
「でちょっと順番が前後しますがメインブランチにはいじゃあ完成結果できましたできましたっていう時によくあるのはタグを打ちますバージョン番号ですねバージョンはチームによって違うんですけどメインバージョンマイナーバージョンもう一個なんだっけパッチバージョンさすがですみたいな形でメインは本当に大元の数字がバージョンが変わった時マイナーは」
「なんかちょっとした機能追加とか機能更新とか修正とかがあった時ですねバッジバージョンは本当にパフォーマンス向上とかほぼあまりユーザーのストーリーに関わらないユーザー体験に関わらないような変更が多いんですかねっていう感じでタグを切っていくのが多いですねなるほどそれを聞いて一個思ったんですけど使ってましたですよねはい」
「あと今わざわざタグを付けたりとかマスターデベロップとかっていう風に言ってましたけどこれメリットがもう一個あってCICDするとき便利なんですよねなんやてCICDっていうのは継続的インテグレーション継続的開発?デプロイ?デプロイかコンティニュアスインテグレーションコンティニュアスデリバリーですねデリバリーかお届けか要するに」
「1機能追加したらそのままそれをリリースしてユーザーが使えるぜって状況にするっていうことなのかなと思ってるんですけどはい」
「開発って結構ちゃんと言えると商用環境ステージング環境開発環境が3つの環境がございます商用環境はもちろんユーザーが触るとこ本番バージョンだよねステージング環境は本番と同じだけど身内で触る用最終確認用ですね開発環境は今作ってるやつとか絶賛機能追加中のやつが触れる場所で」
「CICDツールを使うとデベロップブランチにプッシュマージされたら合流した瞬間それをトリガーとして開発環境にデプロイしてやっていきますマスターにマージされたらマージされた瞬間にステージング環境にデプロイできます」
「マスターにマージされたらステージング環境にデプロイできますとタグがついたら商用環境にデプロイできるんですよマージすごいなんでマスターって言っちゃってるけどメインブランチとデベロップブランチとメインブランチへのタグ付けをちゃんとやってると3環境にデプロイを分けることができるのでなるほどタグ付けトリガーにするんだそうですはいはいはい」

「そうやって多分スラックとかそういうCICDを実現しているアプリケーションとかサービスとかそういう風にやることによっていろんな人が一斉に触ってても本番のユーザーが触る環境を壊さないでデリバリーし続けてるなるほどねそういうことかタグ付けもトリガーにしてるんだあれへーですよね便利でもこれはもちろん」
「小規模なプロダクトにはお勧めできなくて逆にねめちゃめちゃお金かかるんで3環境あるからその分のお金かかるしサーバー代かCICDツールもお金かかるのもあるんでそうだよね本当に大きいものをやるんだったらこういう風なことをやるといいのかなとなるほど僕結構小さプロダクトが多かったんでCICDとか作ったことないんですよねそうですよねうん」
「僕も1回か2回くらいなんででもそうでやった時はなるほどこうやってやるんだGitFlowこれで役立つんだと思ってすごいなでもそういう感じで全部繋がるんだCICD使うとそう感動しますよいいなCICDなんかあの」
「CICD話ずれますけどCICDツール使うときシステムって思いますあーわかる遊びでGitHubAction触ったことあるんだけどそのときテンション上がったよねテンション上がりますよねわかるんですよ今日はGitFlowの話でしたこれは」
「なかなか初級エンジニアだとうまみよくわかんないと思うんですけどでもやってないチームないと思うんで今聞いて思ったけどだいたいこれはやってるねこれやってなかったら回んないですもんね回んないプロジェクトに入るときに最初に教え込まれる内容のうちの一つだと思うのでぜひよくわかんない人はネットで調べつつ理解できなかったらお便りしていただければ答えますですね」
「そういう質問はボンボン欲しいですから遠慮しないでね恥ずかしがらずね中級は絶対理解初級エンジニアでも理解しとけキットフローの話でしたステップの一個として覚えておいていいそういうのはないんじゃないでしょうか今週はこんな感じで終わりますお疲れ様でしたまたねバイバイ」
「イマジンプログラマーではメールを募集していますトークテーマ、悩み、要望などなど何でも募集中です宛先はhimapro11atmarkgmail.comhimapro11atmarkgmail.comになりますそれではまた次回」