GitHub Flowの流れ
今回はGitHubFlowの流れについて解説します。
GitとGitHubを利用した開発の方法にはいくつかのやり方があります。
その中のひとつがGitHub Flowになります。
このGitHub Flowは、かなりシンプルなやり方です。
ですので、初めてGitとGitHubを用いたチーム開発をやる時は、GitHub Flowをオススメします。
まずGitHub Flowでやってみて、慣れてきたら自分たちのチーム流にアレンジしていくのが良いと考えます。
GitHub Flowについて具体的に見ていきましょう。
GitHub FlowとはGitHub社が使用しているワークフローのことです。
GitHub社が自社で使用しているワークフローをGitHub Flowと名付けています。
どのようなワークフローなのでしょうか。
mainブランチがあって、何か開発する時はmainブランチからその開発用のブランチを切っていきます。
開発が完了したら、その開発ブランチからmainブランチへプルリクエストを送ります。
プルリクエストを送って、コードレビューが完了し、承認されたらそのブランチをmainにマージして、そしてリリースしていきます。
これがGitHub社のワークフロー、GitHub Flowの流れになります。
とてもシンプルです。
普通に、何の代わり映えもしないワークフローですね。
ただここからもう少しだけ詳しく見ていきますが、このワークフローをちゃんと実践できると非常にスピーディに効率的にチームでの開発が進めることができるようになると思います。
ではGitHub Flowの流れについて、もう少し具体的に見ていきましょう。
いつもと同じようにローカルとリモートリポジトリ(GitHub)があります。
ローカルの中にはワークツリーとローカルリポジトリがあります。
そういう状況の中で、
- まずmainブランチからブランチを作成します
- ブランチを作成したらファイルを変更し、コミットします
- コミットができたら作成したブランチと同じ名前のブランチをGitHubへプッシュします
- GitHubへプッシュできたらプルリクエストを送ります
- プルリクエストを送ったらコードレビューをし、mainブランチにマージします
- mainブランチにマージしたら、そのmainブランチをすぐに本番サーバにデプロイします。
デプロイとはリリースすると言うことです。
これがGitHub Flowの一連の流れになります。
GitHub Flowはとてもシンプルなのですが、実践する上でいくつかポイントがあります。
mainブランチは常にデプロイできる状態に保つ
まず一つ目は、mainブランチは常にデプロイできる状態に保っておきましょう。
そしてその上で、新しい開発はmainブランチから新しいブランチを作成してスタートしましょう。
新開発はmainブランチから新しいブランチを作成してスタート
作成した新しいブランチ上で作業しコミットする
開発は、先ほど作成した新しいブランチ上で開発してコミットしていきます。
定期的にプッシュする
コミットできたらそれを定期的にプッシュします。
完全に作業が終わらなくても、定期的にプッシュしていくことをオススメします。
なぜかというと、GitHubにプッシュしておくことで外のチームメンバーが今どういう開発状況なのかというのを確認することができます。
そのため、定期的にプッシュした方がチームでの開発はスムーズになりやすいかと思います。
mainにマージするためにプルリクエストを使う
開発が完了したらmainにマージするためにプルリクエストを使います。
直接mainにマージしてはいけません。
なぜかというと、必ずレビューを受けるようにしたいからです。
レビューなしでリリースすると何かバグがあったりした場合でもそれに気が付くことができなかったり、コードの質を担保することができません。
必ずレビューを受ける
必ずレビューをするようにしましょう。
レビューをして、それがApprobeされたら(承認されたら)そこでようやくmainブランチにマージします。
mainブランチにマージしたらすぐにデプロイする(テストとデプロイ作業は自動化)
mainブランチにマージしたらすぐにデプロイしましょう。
そのためにはテストとデプロイ作業は自動化しておくことが大事になってきます。
まとめ
ここまでGitHub Flowを実践するためのポイントを色々見てきました。
なぜこのようなやり方をするのかというと、理由は大きく2つあります。
一番大きな理由は開発フローをシンプルに保ちたいからです。
開発フローをシンプルにしておくことで、誰でも簡単にチーム開発に参加できて、迷うこと無くチームでの開発を進めていくことができるようになります。
誰でも安心して開発ができるのです。
そのために、ワークフローをこのようにシンプルに整えています。
もう一つこのようなワークフローにしている理由は、mainブランチにマージしたらすぐにデプロイすることです。
つまりmainブランチを常にデプロイできる状態に保っておくことで、今リリースされているものの状況とmainブランチの状況が一致するので、いま何をリリースしているのかというのがすぐに分かるのです。
しかも、リリースした後に何かバグがあったとしても、機能単位の開発ごとに細かくリリースしているので、すぐに元の状態に戻すこともできます。
これらのことからGitHub Flowではこのようなワークフローをとっています。
参考図書
独学で挫折しそうになったら、オンラインプログラミングスクール