君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

パティシエが教えるgithub flowによるチーム開発

パティシエが教えるgithub flowによるチーム開発

※当方バックエンドエンジニアです(not パティシエ)

業務系の会社で働く傍ら、プログラミングスクールにて主に未経験の方にプログラミングを教えております。

この間、github flowによるチーム開発について説明したのですが、

リポジトリを「ケーキ」にたとえて説明したところなかなか評判が良かったので、

記事にしてみようと思います。

1. パティシエ長が管理するmasterケーキをcloneします

f:id:karoten512:20170929095342p:plain

パティシエ長が、最終的にお客さんに売りに出すケーキである「masterケーキ」を管理してます。

f:id:karoten512:20170929095406p:plain

ますはそのmasterケーキを自分の手元に持ってきます(git clone)

2. 自分がいじるケーキをつくります

f:id:karoten512:20170929095529p:plain

今、手元には複製されたmasterケーキがあります。

シェフ長から、「Aさんはケーキにいちごを乗せてくれ」と頼まれたとします(issue)。

masterケーキをそのまま残したまま、

git checkout -b issue#ichigo

として、

いちごを乗せる作業を行うための、自分だけがいじるケーキを作ります。

f:id:karoten512:20170929095547p:plain

他の3人についても同様です。

f:id:karoten512:20170929095606p:plain

3. ケーキをいじります

それぞれのケーキをいじります。

Aさんはケーキにいちごを乗せ、

Bさんはりんごを乗せ、

Cさんはパイナップルを乗せます。

(どんなケーキだ。。。)

4. できあがったケーキをパティシエ長に提出

f:id:karoten512:20170929095628p:plain

git push origin issue#ichigo:issue#ichigo

をして、パティシエ長にいちごが乗ったケーキを提出します。

この時、githubの機能である「pullリクエスト」を一緒に行います。

f:id:karoten512:20170929095648p:plain

Bさん、Cさんについても同じです。

5. パティシエ長がそれぞれのケーキをチェック

f:id:karoten512:20170929095711p:plain

パティシエ長が、提出されたケーキをチェックします。

変な位置に果物が載ってないか、果物が腐ってないかなど、

要件を満たしているか・バグがないコードなのかどうかをチェックします。

6. パティシエ長がマージ

f:id:karoten512:20170929095727p:plain

提出されたケーキが問題ないようであれば、

それぞれのケーキのmasterとの差分を取り込みます。

今回で言えば、

いちご、りんご、パイナップルがmasterケーキの上に乗ることになります。

これが「マージ」と呼ばれる作業に当たります。

マージする際にいちごとりんごが同じ位置に載ってしまった場合は、

コンフリクト」と言って、

パティシエ長が頑張って修正したり、AさんやBさんに修正依頼を出したりしてうまく調整します。

これを繰り返して、ちょっとずつmasterケーキを充実させていくことがシステム開発になります。

うまくissueを割り振らないと、マージするときに大変なので注意しなくてはなりません。