読者です 読者をやめる 読者になる 読者になる

TMD45INC!!!

tmd45++; // Deprecated

小規模開発には git-flow よりも GitHub Flow で捗る

git GitHub Flow github ワークフロー ソフトウェア開発

これまで CVSSubversion ではなかなか敷居の高かった「ブランチを切って作業する」というワークフローが、分散型バージョン管理、とくに Git の登場でとても手軽に取り入れやすくなりました。

Git のブランチを活用するためのワークフローとして有名なものに git-flow と呼ばれているモデルがあります。正しい名称は「A successful Git branching model」で、git-flow はこのモデルの導入を補助してくれる Git 拡張の名称だそうです。

git-flow の解説~導入までは以下の記事に詳しく書かれています。

これはあくまで ”モデル” なので、自分(あるいは会社)で利用するときには、このモデルの中から必要な部分を上手く抽出して使えばよいのですが、それでも小規模開発や個人開発にはちょっと大仰な感じがして、とっつきにくい人もいるかと思います。
でも Git を使っているのにブランチを利用しないのはとても勿体ないですし、近年の GitHub などによるオープンな共同開発において、ある程度共通のブランチモデルを利用していると格段に作業がしやすくなります。


そこで、とても分かりやすく、個人でも共同開発でも導入しやすい最初のワークフローとして GitHub Flow をオススメしたいと思います。GitHub Flow とは、その名前のとおり GitHub Inc. が github.com の開発時にも利用しているワークフローです。
"Pro Git" という有名な Git 書籍の著者である Scott Chacon 氏が自身のサイトに掲載した詳しい説明があります。

そしてなんと素晴らしいことに、この文章を Gist 上で翻訳してくださった方々がいるのです!素敵すぎる!!

英語をスラスラ読むことのできない自分には本当に助かります。この Gist の URL を Twitter で知ったのですが、これを読んでから「ブランチを切って作業すること」がとても身近になりました。「難しくないんだ、とりあえずやってみよう」って思えるレベルのワークフローなのです。


まずはぜひ一度、上の翻訳を読んでいただきたいのですが、概要を抜粋します。

GitHub Flowとは何だろうか?


  • masterブランチのものは何であれデプロイ可能である
  • 新しい何かに取り組む際は、説明的な名前のブランチをmasterから作成する(例: new-oauth2-scopes)
  • 作成したブランチにローカルでコミットし、サーバー上の同じ名前のブランチにも定期的に作業内容をpushする
  • フィードバックや助言が欲しい時、ブランチをマージしてもよいと思ったときは、プルリクエストを作成する
  • 他の誰かがレビューをして機能にOKを出してくれたら、あなたはコードをmasterへマージすることができる
  • マージをしてmasterへpushしたら、直ちにデプロイをする


これがフローのすべてだ。とてもシンプルかつ効率的で、かなり大きなチームでも機能する。

GitHub Flow (Japanese translation) — Gist


プルリクエストを利用したレビュなどは、これが GitHub 上で実現されることを想定されているフローだからです。実際、プルリクエストを利用したレビュもとても有用な手法だと思います。
ただここで1番にオススメしたいのは、git-flow よりもはるかにお手軽な「ブランチのルール」です。


https://img.skitch.com/20110831-x5nyqid885aqnp7t2au5ckw929.png


master ブランチを(まさに)マスターとして、それ以外は作業ごとにブランチを切る。それだけです。
この方法の素晴らしいところは、私のようなぼっちプログラマーでも手軽に始められるということに尽きます。難しいことを一切考えず「作業を始めるときにブランチを作る」、とにかくそれだけです。

仕事で導入するなら、プルリクエストによるレビュや、master ブランチの自動デプロイなども参考になります。まずは GitHub Flow なやり方から始めてみて、慣れてきたら git-flow のエッセンスを取り入れるという方法、いかがでしょうか。


Git のブランチを使うために git-flow に目を通したものの「ちょっと胃もたれしちゃう・・・」という人やその他のもっともっと多くの開発者に GitHub Flow を知ってもらって、素敵な ブランチ ライフ を送っていただきたいと思います!


('ω`)

ページトップへ移動