Python

チーム開発するなら押さえておくべきGitHubの使い方【超重要!】

チーム開発するなら押さえておくべきGitHubの使い方

チームでプログラムを開発したい方、こんな悩みを抱えていませんか?

トラハック
トラハック
プログラムのバージョン管理のためにGitHubを使ってチーム開発してみたいけど、使い方が分からないや
この記事を読めば分かること

  • チーム開発におけるGitHubコマンドの基本的な使い方
  • レビュー(プルリクエスト)を送り合う文化の大切さ

私は現在オンラインサロン内でプログラム開発を行っており、バージョン管理のためにGitHubを使い始めました。少し前の私のように、GitHubで初めてチーム開発を行う方もすぐに理解できるよう例を用いて優しく解説します。

もし「GitHubを初めて使う」という方は、GitHubの基本的な使い方について説明しているの記事を読んでから、この記事を読んだ方が効果的です。

初心者でも絶対に習得できるGitHub【優しく解説】
GitHub初心者でも必ず分かる!使い方を優しく解説!プログラミング学習を始めた方、こんな悩みを抱えていませんか? この記事では以下の内容を紹介します。 私はこれまで開発した...

チーム開発に最低限必要なGitHubの使い方を理解しよう【まずはコマンドを覚える!】

チーム開発に最低限必要なGitHubコマンドを理解しよう

チーム開発を行う場合、リモートリポジトリで共有したプログラムを複数人で変更することになります。その場合に想定されるリスクが3つあります。

チーム開発における想定リスク
  1. 同じソースコードに変更作業を行うリスク
  2. ソースコードを誤って変更・削除してしまうリスク
  3. 開発メンバーによってソースコードの質が変動するリスク

GitHubを正しく使うことでこれら3つのリスクを最小化することができます。

【GitHubの使い方チーム開発編】プッシュ前には必ずプルを!

チーム開発するなら、「ローカルリポジトリに他メンバーのプッシュ内容を取り込む」ために「プル」する癖をつけてください

チームによる共同開発中は、他メンバーからの変更内容がリモートリポジトリ上にどんどんプッシュされます。他メンバーにプッシュされた変更内容の取り込みが必要な理由は、「あなたがバグ修正のために変更していた箇所がすでに他メンバーによって修正されていた」といった事態が発生するからです。

これが①「同じソースコードを変更・修正するリスク」ですね。

兄弟や姉妹で同じ日に同じ漫画雑誌を買って帰ってきたこと、ありませんか?ガッカリ感としては同じイメージです。笑

帰り道にジャンプを買うなら1本LINEを打つだけで無駄を省くことができますよね。GitHubでも同じで、プルする癖をつけて「同じ箇所を変更していた」という無駄を省くようにしましょう

プルコマンドは以下のように使います。

[https://github.com/あなたのUSER_ID/test.git]というURIを持つリモートリポジトリのマスターブランチ(master)にプッシュされた変更内容を取得する、という意味となります。

ここで出てきたマスターブランチとは何でしょうか?ブランチという概念について見ていきましょう。

【GitHubの使い方チーム開発編プログラムを枝分かれさせる「ブランチ」を使おう

GitHubを使ったチーム開発では、まず「ブランチ」という概念を理解する必要があります。

ブランチは、プログラムの変更履歴を記録するための機能です。ブランチを枝分かれさせることで1つのプログラムに対して複数人で同時に変更を加えることができます。

プログラムを枝分かれさせる「ブランチ」を使おう

マスターブランチとは最初にコミットした際に作成されるブランチです。本筋、とも呼ばれます。

機能の改善や追加、バグ修正などを行ったブランチをマスターブランチとマージ(合流)させることで、プログラム開発を進めていきます。

ブランチという言葉通り、まさしく木にたとえると分かりやすいです。幹(マスターブランチ)から生えた枝(ブランチ)が育っていくことで大きな木となります

しかし時には、枝を剪定する必要もあります。つまり、不要な変更はマージさせずに切り捨てます。GitHubでは気軽にブランチを作成できるので、機能検証のために作成したブランチは検証完了後にマージしない、という使い方ができます。

実際にコマンドを打ち込んでブランチを使ってみましょう。以降は、前回の記事「初心者でも絶対に習得できるGitHub【使い方解説】」で作成したリモートリポジトリを例に説明していきます。

“git branch”
branchコマンドを引数を指定せずに実行すると、現在のブランチ位置を確認できます。*印が現在のブランチです。

“git branch <ブランチ名>”
branchコマンドでブランチを作成します。

“git checkout <移動先ブランチ名>”
変更するブランチを切り替える場合はcheckoutコマンドを使います。

それではローカルリポジトリのbananaブランチを変更してみましょう。そして変更完了したブランチをmergeコマンドでマスターブランチに合流させます。

“git merge <ブランチ名>”
checkoutコマンドでマスターブランチに切り替えたあと、マージしたいブランチ名を引数に指定してmergeコマンドを実行します。

変更内容が反映されましたね?

ブランチの基本操作は以上です。

【GitHubの効果的な使い方】プルリクエストでコミュニケーションコストを削減しよう

プルリクエストを活用してコミュニケーションコストを削減しよう

プルリクエストをうまく使えばチーム内で時間泥棒になることが無くなります。

【GitHubの効果的な使い方】チームメンバーにレビューしてもらおう

プルリクエストは他メンバーに変更内容をレビューしてもらう機能です。ローカルリポジトリで変更した内容をマスターブランチへマージする前に、プルリクエストを送ります。

プルリクエストを送ることで、ソースコードやアルゴリズムの改善点、バグの指摘などをメンバーからもらうことができます。俗に「プルリク」と呼ばれており、プログラムの質を担保するために使われます。

ブランチをマージする際にプルリクエストを行うことで、想定リスク②「ソースコードを誤って変更・削除してしまうリスク」を回避することができます。

【GitHubの効果的な使い方】「変更したらプルリクを送り合う」文化でチーム全体の生産性を高めよう

「プルリクを送り合うのが当たり前」という文化をチーム内で醸成できれば、コミュニーケーションコストを下げることができます

他のメンバーにレビューを依頼をすることって気が引けますよね。レビュー依頼には「相手の時間を奪う」という後ろめたさがあるからです。

しかし、チーム内でプルリクエストの相互送信を仕組み化することで、レビュイー側も遠慮なくプルリクを送りますし、レビュワーも当然のタスクとして対応します。

「すみません、今お時間よろしいですか?〇〇を変更したのでレビューしていただけますでしょうか?」なんて無駄な会話はもう必要ありません。

ただし、プルリクを送る時には5W1Hを意識したコメントを残すようにしましょう

「私が(Who)、いつ(When)、何行目のコードの(Where)、どの機能を(What)、なぜ(Why)、どのように(How)、変更した」か分かるコメントなら、レビュワーの手間も減ります。

以上の理由から「変更したらプルリク」という文化は、チームの生産性を高めてくれます

この文化によって共同開発しているプログラムのソースコードの均質化が可能です。想定リスク③「開発メンバーによってソースコードの質が変動するリスク」を低くすることに繋がります。

ここまでチーム開発に必要な最低限のGitHubコマンドを解説してきましたが、まだ他にも便利な機能や、知っておくと役に立つ知識があります。

GitHubをマスターしてチーム全体の生産性を爆上げしたい方は、GitHubに関する書籍を読んでみてはいかがでしょうか。

実際に操作をしながら使い方を習得できるGitHub入門書の決定版です。

以上、チーム開発におけるGitHubの使い方を解説いたしました。

まとめ
  • チーム開発に必要なGitHubコマンドはpull, merge, branch, checkout
  • プルリクエストはスムーズなレビュー体制を実現する
  • 「プルリクエストを送り合う文化」がチーム開発成功の鍵
トラハック
トラハック
GitHubを有効活用してより良いチーム開発を目指していこう!