Githubを利用してアプリケーションの開発を進めていく際、具体的にどのように進めていけば良いのか分からないと困ったことはありませんか?Githubをあまり使ったことがない方であれば、一度はこのような疑問を抱いたことがあるかもしれません。そこで、今回はGithubを利用する上で欠かせないGithub flowについて詳しくご紹介致します。この記事を読めば、今まで疑問だったGithubを利用したアプリケーション開発のフローを素早く理解していただくことができます。
この記事の目次
Github flowとは?
まず始めに、Github flowとは何か?と感じた方もいると思います。
Github flowとはGithub社が実践している開発フローのことで、開発フローがとてもシンプルで分かりやすいため、学習コストが低いという利点があります。
Github flowが多くの人々に利用されている理由
Github flowはその開発フローのシンプルさ、分かりやすさのために多くの企業がチーム開発に取り入れており、個人の開発者にも利用されています。
例えば、企業などで複数人が開発に関わっていることを想定した場合、以下の2つを比べると管理しやすいのはどちらでしょうか。
1.それぞれが個人のやりやすい開発フローに沿って好き勝手に開発する企業
2.開発フローを統一し全員が守っている企業
もちろん、後者の方が管理しやすいと思った方がほとんどだと思います。答えは「2.」です。
開発フローを統一することで、属人的な要素がなくなり、複数人で開発しても効率よく開発することができます。
Gitを利用した開発フローには、この記事で紹介していくGithub flowの他にもGit flowがあります。このGit flowに関しては後で詳しく紹介していきます。
Github flowの流れ
まず始めに、Github flowの開発フローを流れでまとめて見ていきましょう。
全体の開発フローは以下です。
1.masterブランチを常にデプロイできる状態にしておく
2.新しい作業をするときはmasterブランチを作成し、そのブランチで作業する
3.作成したローカルリポジトリのブランチにコミットする
4.同名のブランチをGithubのリポジトリに作成し、定期的にプッシュする
5.助けてほしい時やフィードバックがほしいときはプルリクエストを作成し、プルリクエストでやりとりする
6.他の開発者がレビューし、作業終了を確認したらmasterブランチにマージする
7.masterブランチへマージしたら、直ちにデプロイする
以上がGithub flowの全てです。
基本的には特定の作業をするブランチを作成するだけなので、作業を始めてデプロイするまでの過程がとてもシンプルです。それでは流れを1つ1つ確認していきましょう。
masterブランチを常にデプロイできる状態にしておく
Gitではリポジトリ作成時にmasterブランチが作成されます。このmasterブランチにあるソースコードが常にデプロイできる状態に保つというルールです。
デプロイは、アプリケーションを本番環境にアップロードすることです。
新しい作業をするときはmasterブランチを作成してそこで作業する
新しい作業をするときは、masterブランチから新しいブランチを作成します。新機能の追加でもバグの修正でも、新しいブランチを作成するという作業は変わりません。新たに作成するブランチ名には、作業している内容が分かるような名前をつけましょう。
作成したローカルリポジトリのブランチにコミットする
作成したブランチでどのような作業をするのか明確になっています。ブランチ名に沿った作業のみをそのブランチで行います。もし別の作業をする際には、masterブランチから別の作業用のブランチを作成します。
作業内容をコミットする際は、コミットメッセージからどのような作業内容か伝わるように心がけましょう。
同名のブランチをGithubのリポジトリに作成し、定期的にプッシュする
2で作成したブランチはローカルリポジトリ内にしか存在しないので、チームの他の開発者は誰がどのようなブランチを作成したか分かりません。なので、ブランチ作成時やコミットをした際に、開発者が作成したブランチをリモートリポジトリへプッシュしてください。
作業中の内容やすべてのローカルリポジトリで作成されたブランチをプッシュすることで、そこで、今回はGithubを利用する上で欠かせないGithub flowについて詳しくご紹介致します。
この記事を読めば、今まで疑問だったGithubを利用したアプリケーション開発のフローを素早く理解していただくことができます。現在誰が何をしているのかをリモートリポジトリにあるブランチ一覧を見るだけで把握できるようになります。
助けてほしい時やフィードバックがほしい時はプルリクエストを作成しプルリクエストでやりとりする
プルリクエストとは、リモートリポジトリにてマージする際に挟む確認作業のことです。しかし、プルリクエストはmasterブランチにマージしてほしい時だけ作成するものではありません。
複数人開発では、masterブランチへマージするタイミングよりもずっと前からプルリクエストを作成し、レビューなどのフィードバックをもらいながら開発するのが効率が良いです。
他の開発者がレビューし、作業終了を確認したらmasterブランチにマージする
ブランチでの作業が完了したら、プルリクエスト上で他の開発者からレビューを受けてください。他の開発者の目を通すことによって、思い込みやミスによるバグがmasterブランチに混ざることを防ぐことができます。もし作業内容に問題があれば指摘してもらい、修正を行いましょう。
masterブランチへマージしたら、直ちにデプロイする
プルリクエストによって、ある開発者が開発した機能はmasterブランチにマージされる前に第三者が確認できます。しかし、確認を挟んでもバグが混入することがありうるため、masterブランチへのmergeが行われた時は、マージ直後に必ずmasterブランチの内容が正常にデプロイできるかどうかをチェックする必要があります。
Github flowとGit flowの違い
出典:Git flow
そもそもGithub flowやGit flowは、Gitにおけるリポジトリでバージョン履歴を管理しながら開発を進めていく上で、効率よく作業できるようなワークフローのことなので、最終的な着地点は同じなのです。
その中でもGithub flowはGit flowを簡略的にした開発者にとって分かりやすく、使いやすくした開発フローであると言えます。
Github flowとGit flowの違いに関して例を上げると、開発を進めていく際にmasterブランチだけでなく、developmentブランチが存在します。このflowにおいて、masterブランチはリリースされたバージョンを管理するために使われ、普段の開発でプルリクエストを出した後のマージ先はdevelopmentブランチとなります。
この他にもGit flowでは役割ごとのブランチがあり、明確に使用する意図がわけられているため管理がしっかりしているという反面、Github flowですらあまり慣れていない方にとっては、かなり複雑であると言えるでしょう。
そのため、Git flowについては掘り下げて説明しませんが、興味のある方は調べてみるのも良いと思います。
上記のような理由から、開発する際にはGithub flowで実践していただくことをおすすめします。
Github flowの原則
上記でGithub flowにおける一連の開発フローの流れ簡潔に紹介しましたが、ここからは開発の際に特に重要であるGithub flowの原則について幾つか紹介します。
masterブランチとデプロイ
materブランチとデプロイに関しては、Github flowの1番で説明しました。
ここでは、そもそもブランチとは?やデプロイとは?という事に絡めてGithub flowの原則についても説明します。
ブランチとは、簡単に言うとリポジトリで管理しているプロジェクトの履歴の一つで、リポジトリは必ずブランチを持っています。なぜなら、リポジトリのバージョン管理はブランチ上で行われているためです。そして、開発者は必ずどこかのブランチ属している状態となります。
masterブランチとは、リポジトリに最初のコミットを行うと自動で作成されるブランチであり、これが大元のブランチとなることが多いです。
次にデプロイについて説明します。デプロイとはソースコードをAWSなどの本番環境に配備し稼働させることで、簡単に言うと、ローカル環境で開発したアプリケーションをネットワークを通じて誰でも利用できる状態にする作業のことです。
Github flowではデプロイまでのプロセスがシンプルに統一されているのも、多くの企業でこの開発フローが使われている理由の1つであります。
そして一番大事な原則は、Github flowの手順1番でも記述していますが、masterブランチは常にデプロイできる状態でなければいけません。
その理由を説明するために、開発者たちがmasterブランチに直接コミットしている職場を想定してください。この中の誰かのコミットにバグが混ざっていて、ユーザーに公開しているアプリケーションが正常に動作しなくなってしまうという事態になりかねません。
このようなことを防ぐために、masterブランチは常にデプロイできる状態とする必要があります。
開発に必須のプルリクエストとは?
プルリクエストに関してもGithub flowの5番目で軽く触れていますが、ここで改めて説明します。
Gitを使って開発進めていく場合には、masterブランチにいつでもマージすることができます。しかし、Githubの場合はマージする時に、このプルリクエストという機能を使う必要があります。つまりプルリクエストとはブランチをマージする際の確認作業なのです。
プルリクエストを使うと、Github上でブランチ間にどれだけの差分があるのか確認できます。そして、その差分を元に他の開発者から確認やレビューをもらうことができます。
また、プルリクエストの詳細を書くときは、WHAT(何を)とWHY(なぜ)を書くようにしましょう。WhatとWhyを書くことで、このブランチは何を実装していて、なぜその実装を行ったのかが他の人に伝えることができます。
WIPの役割
WIPとは、プルリクエストのタイトル部分に使用されるもので、“Working In Progress”の略で、作業中であるということ意味します。
反対に作業が終わっている場合にはWIPを外します。このようにすることで、作業中のブランチ作業が終了しているブランチが視覚的に判断できるようになります。
レビューするべきブランチが一目瞭然になり、効率的にレビューすることができます。
Github flowでの開発に役立つツール
Github Desktop
Github flowでの開発をしていく上で欠かせないのが、Githubの公式ツールであるGithub Desktopです。このツールはGithub flowでの開発を想定し作られているので、とても相性が良いと言えます。
Github Desktopに関して「【GitHub Desktop導入検討中の方必見】ツールを徹底解説」で詳しく説明されているので、使用方法を参考にしてください。
SourceTree
SourceTreeも上記のGithub Desktopと同様に、Gitを使用する際にコマンドを打ち込まず、グラフィカルで簡単に使用することができるアプリケーションです。
以下がインストールの手順です。
1.下記のリンクより、SourceTreeをダウンロードしてください。
http://downloads.atlassian.com/software/sourcetree/SourceTree_2.1.dmg
2.ダウンロードしたディレクトリをダブルクリックし、表示されたアイコンをドラッグしてアプリケーションディレクトリに入れてください。
3.アプリケーションディレクトリから、SourceTreeを起動してください。
以下のような画面が表示されるので、利用規約にチェックを入れましょう。2つ目はチェックしなくても構いません。
終わったら「続ける」を押してください。
4.Githubのアカウントを登録してください。
続いて以下のような画面が表示されるので、Githubのアカウントを入力しましょう。
以上でSourceTreeのインストールは完了です。
SoruceTreeの詳しい使用方法は以下の記事を参考にしてください。
まとめ
簡単にポイントをおさらいすると、以下の4つとなります。
1.新機能を実装する際はmasterブランチに直接コミットしない
2.プルリクエストでレビューをもらい効率的にアプリケーション開発ができる
3.レビューをもらったらマージする
4.masterブランチをデプロイする
この記事を読み終えたら、一度ご自身のパソコンでGithub flowの流れを確認しながら実践していただくことをおすすめします。
はじめての転職、何から始めればいいか分からないなら
「そろそろ転職したいけれど、失敗はしたくない……」そんな方へ、テックキャンプでは読むだけでIT転職が有利になる限定資料を無料プレゼント中!
例えばこのような疑問はありませんか。
・未経験OKの求人へ応募するのは危ない?
・IT業界転職における“35歳限界説”は本当?
・手に職をつけて収入を安定させられる職種は?
資料では、転職でよくある疑問について丁寧に解説します。IT業界だけでなく、転職を考えている全ての方におすすめです。
「自分がIT業界に向いているかどうか」など、IT転職に興味がある方は無料カウンセリングにもお気軽にお申し込みください。