パティシエが教えるgithub flowによるチーム開発
パティシエが教えるgithub flowによるチーム開発
※当方バックエンドエンジニアです(not パティシエ)
業務系の会社で働く傍ら、プログラミングスクールにて主に未経験の方にプログラミングを教えております。
この間、github flowによるチーム開発について説明したのですが、
リポジトリを「ケーキ」にたとえて説明したところなかなか評判が良かったので、
記事にしてみようと思います。
1. パティシエ長が管理するmasterケーキをcloneします
パティシエ長が、最終的にお客さんに売りに出すケーキである「masterケーキ」を管理してます。
ますはそのmasterケーキを自分の手元に持ってきます(git clone)
2. 自分がいじるケーキをつくります
今、手元には複製されたmasterケーキがあります。
シェフ長から、「Aさんはケーキにいちごを乗せてくれ」と頼まれたとします(issue)。
masterケーキをそのまま残したまま、
git checkout -b issue#ichigo
として、
いちごを乗せる作業を行うための、自分だけがいじるケーキを作ります。
他の3人についても同様です。
3. ケーキをいじります
それぞれのケーキをいじります。
Aさんはケーキにいちごを乗せ、
Bさんはりんごを乗せ、
Cさんはパイナップルを乗せます。
(どんなケーキだ。。。)
4. できあがったケーキをパティシエ長に提出
git push origin issue#ichigo:issue#ichigo
をして、パティシエ長にいちごが乗ったケーキを提出します。
この時、githubの機能である「pullリクエスト」を一緒に行います。
Bさん、Cさんについても同じです。
5. パティシエ長がそれぞれのケーキをチェック
パティシエ長が、提出されたケーキをチェックします。
変な位置に果物が載ってないか、果物が腐ってないかなど、
要件を満たしているか・バグがないコードなのかどうかをチェックします。
6. パティシエ長がマージ
提出されたケーキが問題ないようであれば、
それぞれのケーキのmasterとの差分を取り込みます。
今回で言えば、
いちご、りんご、パイナップルがmasterケーキの上に乗ることになります。
これが「マージ」と呼ばれる作業に当たります。
マージする際にいちごとりんごが同じ位置に載ってしまった場合は、
「コンフリクト」と言って、
パティシエ長が頑張って修正したり、AさんやBさんに修正依頼を出したりしてうまく調整します。
これを繰り返して、ちょっとずつmasterケーキを充実させていくことがシステム開発になります。
うまくissueを割り振らないと、マージするときに大変なので注意しなくてはなりません。