チーム開発をする前に最低限知っておきたいGit/GitHub活用術

メイン画像

 

こんにちは!テクトレブログ編集部です!

TechCommitでは毎週日曜日にオンラインで週末勉強会を行なっています。

今回はGit/GitHubを使ったチーム開発入門の勉強会に参加してきましたので、

 

その内容をレポートしていきたいと思います!

特に「個人でGitやGitHubは使っているけれど、チーム開発は未経験」という方にはチームとして開発する上で気をつけたいGitHubの運用方法などが理解できるかと思いますので参考にして頂ければ幸いです!

 

目次

勉強会の内容

 ・Git/GitHubの何が嬉しいの?

 ・チーム開発の際に重要なGit/GitHubの知識

 ・Git-flowによる運用の基本的な流れ

 ・チーム開発を意識したISSUE, Pull Requestのたてかた

勉強会のまとめ

今回の勉強会の成果

 

 

勉強会の内容

Git/GitHubの何が嬉しいの?

 

 

GitHubなどよく耳にするかと思いますが、なぜ開発においてGitやGitHubのようなGitのホスティングサービスを使うのでしょうか?

理由は様々ありますが、最も基本的なところでは以下のような理由があげられるでしょう。

 

  1. 過去の履歴がみられる
  2. アプリのコピーなども容易にできる
  3. チーム開発で並行して作業が可能

 

【1.過去の履歴がみられる】

過去の履歴がみられるという点では、追加した機能の意図などを後からみて把握できることや、バグが発生した場合どこの時点までは正しく動いていたのかということを検証できるという利点があります。

 

【2.アプリのコピーなども容易にできる】

Gitでコードを管理することによって、ソースコードを他の場所からコピーして自分の手元に置くことが出来たり、指定したサーバーにデプロイ(ソースコードを置いて公開)したりすることも容易に可能になります。
 

【3.チーム開発で並行して作業が可能】

特にこれが最も重要と言っても過言ではありません。

チーム開発においては、Gitのいち機能である「ブランチ」で作業スペースを区切ることで他の人と修正内容が修正時点ではバッティングしません、そのためそれぞれの開発者がブランチ内で独立して並行作業ができます
 

しかし、Git/GitHubが便利なものでも、使い方を間違うとその良さを十分に活用できないことになりかねません。

以下で、Git/GitHubをチーム開発で使う際には知っておきたいこと、気をつけるべきことについて解説していきます。


 

チーム開発の際に重要なGit/GitHubの知識

 

GitやGitHubをチームで運用する場合には、一緒に作業する相手のことを考えた運用をしなければなりません。

個人で開発する場合には、曖昧なコメントをしても後から思い出して作業できるかもしれませんが、チーム開発においては意図が伝わるコメントでないと、意味がないどころか相手を混乱させることにもなりかねません。

そのようなことにならないためにも、チーム開発の際に知っておきたいGit/GitHubの運用の流れと、なぜそれが重要なのかについてみていきましょう。
 

 

 (1) わかりやすい単位でのブランチ名やコメント
 

チーム開発においては、ブランチ名やコメントをわかりやすい単位で行うことが重要です。

特にcommitにおいては複数の意図を混在させないように関連した修正の単位でソースコードなどをまとめてcommitすることで、後から修正の詳細を知りたくなった場合に、その修正がどのような目的で行われたのかを理解したり、関連した処理を辿って修正したりすることが容易になります。
 

特に初心者の方は、色んな処理を変更して、色んなファイルを一度にcommitしてしまう方が多いので、慣れるまでは意識していきましょう。

commitする単位は人によっても違いはありますが、「意図の方針」や「最小の機能単位」が変わるようであれば別のcommitとして対象を分けておくのが無難でしょう。

 

具体的なcommitの単位をあげると
 

  • バグの修正
  • リファクタリング
  • 特定の機能追加

 

などがあげられます。ひとつのコミットにはひとつの意味しか持たせないことで、バグが起きた時などの問題の切り分けやそのcommitだけ無効にすることなども容易になります。

 

また、commitにつけるコメントは一言で具体的なわかりやすい内容を心がけましょう。
もし詳細を書きたい場合は、1行目に概要を書き、3行目以降に詳細を書くようにすると良いでしょう。



 

(2) Git-flowによる開発の流れの知識
 

 

Git-flowによる開発の流れを理解することも、チーム開発においては重要です。
 

Git-flowという言葉に馴染みのない方や、何となく知ってはいるけれど雰囲気で運用している方もいるかもしれませんが、チームはもちろん個人で開発する際も必ず押さえておきたい知識なのでこれを機に理解しましょう。
 

Git-flowに沿って開発を行うことで、バグが発生したり、他の部分に意図しない影響が生じた際などに、git revertなどのコマンドで特定のコミットを無効化することが容易になります。

 

(3) チーム開発を意識したGitHub運用の知識
 

 

GitHubやその他のGitホスティングサービスはチーム開発において非常に便利なものですが、その便利さも運用次第で大きく変わります。
 

GitHubを用いてチーム開発を行う際に、コミュニケーションをスムーズに行うためにはじめに気をつけたいこととして、ISSUEやPull Requestを出す際にいくつかのポイントに気をつけて「要件を明確にする」ということがあります。

 

Git-flowによる運用の基本的な流れ

 

先ほど紹介したGit-flowについて、その基本的な流れをみてみましょう。

出典: https://nvie.com/posts/a-successful-git-branching-model/

 

Git-flowとはWebデベロッパーであるVincent Driessen氏が開発したはGitのブランチ運用ルールのことです。Git-flowに沿ってブランチを運用することで、ブランチが無秩序に増えることなどを防ぎます。

一般的に、Git-flowやその派生版であるGitHubFlowなどがよく使われていますが、どちらも大きな流れは変わらないので、基本となるGit-flowを抑えておけば良いでしょう!

 

以下でGit-flowの概要を解説します。
 

Git-flowでは、ブランチを目的別に分けて、それぞれのブランチで作業をします。

ブランチの種類には、以下の5種類があります。
 

  • masterブランチ :本番環境へ出すものと同じブランチ
  • developブランチ :機能追加のベースとなるブランチ
  • featureブランチ :実際に開発作業を行うブランチ
  • releaseブランチ :リリース前に動作確認や微修正などを行うブランチ
  • hotfixブランチ :緊急のバグ対応などで使用するブランチ


 

基本的な運用は、以下の流れで行われます。
 

  1. masterブランチからdevelopブランチを切り、機能追加のベースとする。
  2. developブランチからfeatureブランチを切り、そこで実際の開発を行う。
  3. featureブランチで追加する機能が実装できたら、developブランチにマージする。
  4. 追加する機能などが独立して動くようになったらdevelopブランチからrelease branchにマージする
  5. releaseブランチで問題がなさそうであればmasterブランチへとマージする
     

Git-flowについてもっと詳しく知りたいかたは、Git-flowの発案者であるVincent氏のブログ記事が翻訳されているので、以下の記事などを見てみると良いでしょう。

A successful Git branching model を翻訳しました - 見えないチカラ


 

Git-flowは個人でもすべき?

 

チーム開発においてGit-flowを知っておくことは非常に重要ですが、個人でもGit-flowを意識した開発をすることは非常に有用です。

なぜなら、Git-flowはGitの運用ルールであり、このルールに乗っ取って開発をしていれば不具合が起こった時に特定のブランチだけを無効にしたりできるからです。

また、チームで開発を行う前にGit-flowに慣れておくという意味でも非常にためになるでしょう。

 

 

チーム開発を意識したISSUE、 Pull Requestのたてかた

 

先ほど、チーム開発においては不要な機能を開発したりするなどのミスマッチを避ける方法として
 

ISSUEやPull Request をわかりやすく書く
 

という点が重要であると述べました。では、どのような点を意識すれば良いのでしょうか。

以下で、わかりやすいISSUEやPull Requestを書くためのポイントを解説します。

 

(1) わかりやすいISSUEを書くためのポイント

  • 問題ややりたいことの「要件」が明確に示されている
  • 問題がある画面などを画像やGifアニメを使って容易にわかるようにしている

 

 

(2)わかりやすいPull Requestを書くためのポイント

  • わかりやすく可能な限り小さな単位でPR(ブランチ)を作成
  • 概要や取り組むタスクがきちんとかかれている
  • 要件や方針が整理されている
  • レビューして欲しい内容などを書いておく
  • close #100 のようにISUUEと紐付けの記載がある


 

ISSUE, Pull Requestのどちらにも共通することは、「要件を明確にする」ということです。

そのためには、できる限り問題を小さく区切ることや、画像をやGifアニメを活用して何が問題なのかをビジュアル的にも理解しやすくすると良いでしょう。特に、要件が複雑な場合はテーブルやマインドマップなども作成し、要件を明確にすることも有効です。

 

わかりやすいISSUE, Pull Requestを作るのに役立つツールとしては

 

  • 画面をGifアニメとしてキャプチャできるGIPHY CAPTURE
  • Web上で簡単に図を作成できるDraw.io

 

などがあります。GoogleSpreadSheetなどを使って表を作るのも良いでしょう。
以上の点に気をつけていれば、意図が大きく違ってしまうようなことは避けることができるでしょう。

 

 

勉強会のまとめ

 

チーム開発をする前に最低限知っておきたいGit/GitHubの活用術として以下のことに気をつけると良い。
 

  • わかりやすい小さな単位でのcommitやコメント
  • Git-flowに沿ったGitの運用
  • 要件を明確にしたISSUEやPull Requestの書き方
     

これらを知っておくと、チームで開発するときにGit/GitHubを効果的に活用することができる。


 

今回の勉強会の成果

 

今まで開発を手伝ったりしてきましたが、そこで使われていたのがGit-flowで、今までは知らずのうちに雰囲気で運用していました。

しかし、これらの運用の意図をちゃんと知ったことで、これからはチームメンバーをより思いやれる仕事ができそうです。
 

わかりやすいISSUEやPull Requestの書き方についても、問題を明確にすることで自分の中でも要件がより整理されるので、これからはぜひ学習したポイントに気をつけながら、ISSUEやPull Requestを活用していきたいと思います。

 

今回はコミュニティ内の勉強会ということで、他の参加者からも頻繁に質問が飛び出ていて(ちょっとここではお見せできないのですが)実際のソースコードや運用の状況などを見せていただいたのでとても有用に使うためのイメージが湧きました。
 

TechCommit内でもチーム開発の実践として小規模なチームを作って開発していけると思うので個人的にも精進したいと思います!


 

毎週末の週末勉強会をTechCommitで実施中!

最後に宣伝になりますが、TechCommitでは現在毎週日曜日に週末勉強会を開催しております。

テーマは様々で、勉強の仕方からキャリア相談、HTML/CSSのライブコーディング、Docker入門など参加者からの要望にお応えして開催されます!

現役のエンジニアを講師としたものから、今後はメンバー間でのLTなども行う予定です。

 

また、週末勉強会の内容は動画としてTechCommit内の[勉強会]にアーカイブされるため、いつでも閲覧することができます。

今回のGit/GitHubによるチーム開発の勉強会も収録されていますので興味がある方はご活用くださいね。

 

 


記事一覧に戻る

関連記事

プログラミング
サムネイル画像
2019/07/26 16:00
チーム開発をする前に最低限知っておきたいGit/GitHub活用術
プログラミング
サムネイル画像
2019/09/13 18:30
Railsチュートリアルが難しくて挫折しそうなときの学習のコツや復習教材
プログラミング
サムネイル画像
2019/07/18 18:00
Docker入門の前に知っておきたい基礎知識 - 週末勉強会レポート
前の記事:EP6. 効率的な開発にはツールが不可欠!?@東雲すみれのWEB開発