2019-03-25チームでプログラムを開発したい方、こんな悩みを抱えていませんか?トラハックプログラムのバージョン管理のためにGitHubを使ってチーム開発してみたいけど、使い方が分からないやこの記事を読めば分かることチーム開発におけるGitHubコマンドの基本的な使い方レビュー(プルリクエスト)を送り合う文化の大切さ私は現在オンラインサロン内でプログラム開発を行っており、バージョン管理のためにGitHubを使い始めました。前の私のように、GitHubで初めてチーム開発を行う方もすぐに理解できるよう例を用いて優しく解説します。「GitHubを初めて使う」という方は、GitHubの基本的な使い方について説明しているの記事を読んでから、この記事を読んだ方が効果的です。この記事では以下の内容を紹介します。【GitHubの使い方チーム開発編】プッシュ前には必ずプルを!【GitHubの使い方チーム開発編】プログラムを枝分かれさせる「ブランチ」を使おう【GitHubの効果的な使い方】プルリクエストでコミュニケーションコストを削減しよう【GitHubの効果的な使い方】チームメンバーにレビューしてもらおう【GitHubの効果的な使い方】「変更したらプルリクを送り合う」文化でチーム全体の生産性を高めようチーム開発に最低限必要なGitHubの使い方を理解しよう【まずはコマンドを覚える!】チーム開発を行う場合、リモートリポジトリで共有したプログラムを複数人で変更することになります。その場合に想定されるリスクが3つあります。チーム開発における想定リスク同じソースコードに変更作業を行うリスクソースコードを誤って変更・削除してしまうリスク開発メンバーによってソースコードの質が変動するリスクGitHubを正しく使うことでこれら3つのリスクを最小化することができます。【GitHubの使い方チーム開発編】プッシュ前には必ずプルを!チーム開発するなら、「ローカルリポジトリに他メンバーのプッシュ内容を取り込む」ために「プル」する癖をつけてください。チームによる共同開発中は、他メンバーからの変更内容がリモートリポジトリ上にどんどんプッシュされます。他メンバーにプッシュされた変更内容の取り込みが必要な理由は、「あなたがバグ修正のために変更していた箇所がすでに他メンバーによって修正されていた」といった事態が発生するからです。これが1「同じソースコードを変更・修正するリスク」ですね。兄弟や姉妹で同じ日に同じ漫画雑誌を買って帰ってきたこと、ありませんか?ガッカリ感としては同じイメージです。帰り道にジャンプを買うなら1本LINEを打つだけで無駄を省くことができますよね。GitHubでも同じで、プルする癖をつけて「同じ箇所を変更していた」という無駄を省くようにしましょう。プルコマンドは以下のように使います。[https://github.com/あなたのUSER_ID/test.git]というURIを持つリモートリポジトリのマスターブランチ(master)にプッシュされた変更内容を取得する、という意味となります。ここで出てきたマスターブランチとは何でしょうか?ブランチという概念について見ていきましょう。【GitHubの使い方チーム開発編】プログラムを枝分かれさせる「ブランチ」を使おうGitHubを使ったチーム開発では、まず「ブランチ」という概念を理解する必要があります。ブランチは、プログラムの変更履歴を記録するための機能です。ブランチを枝分かれさせることで1つのプログラムに対して複数人で同時に変更を加えることができます。マスターブランチとは最初にコミットした際に作成されるブランチです。本筋、とも呼ばれます。機能の改善や追加、バグ修正などを行ったブランチをマスターブランチとマージ(合流)させることで、プログラム開発を進めていきます。ブランチという言葉通り、まさしく木にたとえると分かりやすいです。幹(マスターブランチ)から生えた枝(ブランチ)が育っていくことで大きな木となります。時には、枝を剪定する必要もあります。不要な変更はマージさせずに切り捨てます。GitHubでは気軽にブランチを作成できるので、機能検証のために作成したブランチは検証完了後にマージしない、という使い方ができます。実際にコマンドを打ち込んでブランチを使ってみましょう。以降は、前回の記事「初心者でも絶対に習得できるGitHub【使い方解説】」で作成したリモートリポジトリを例に説明していきます。branch”branchコマンドを引数を指定せずに実行すると、現在のブランチ位置を確認できます。*印が現在のブランチです。<ブランチ名>”branchコマンドでブランチを作成します。<移動先ブランチ名>”変更するブランチを切り替える場合はcheckoutコマンドを使います。それではローカルリポジトリのbananaブランチを変更してみましょう。変更完了したブランチをmergeコマンドでマスターブランチに合流させます。<ブランチ名>”checkoutコマンドでマスターブランチに切り替えたあと、マージしたいブランチ名を引数に指定してmergeコマンドを実行します。変更内容が反映されましたね?ブランチの基本操作は以上です。【GitHubの効果的な使い方】プルリクエストでコミュニケーションコストを削減しようプルリクエストをうまく使えばチーム内で時間泥棒になることが無くなります。【GitHubの効果的な使い方】チームメンバーにレビューしてもらおうプルリクエストは他メンバーに変更内容をレビューしてもらう機能です。ローカルリポジトリで変更した内容をマスターブランチへマージする前に、プルリクエストを送ります。プルリクエストを送ることで、ソースコードやアルゴリズムの改善点、バグの指摘などをメンバーからもらうことができます。俗に「プルリク」と呼ばれており、プログラムの質を担保するために使われます。ブランチをマージする際にプルリクエストを行うことで、想定リスク2「ソースコードを誤って変更・削除してしまうリスク」を回避することができます。【GitHubの効果的な使い方】「変更したらプルリクを送り合う」文化でチーム全体の生産性を高めよう「プルリクを送り合うのが当たり前」という文化をチーム内で醸成できれば、コミュニーケーションコストを下げることができます。他のメンバーにレビューを依頼をすることって気が引けますよね。レビュー依頼には「相手の時間を奪う」という後ろめたさがあるからです。チーム内でプルリクエストの相互送信を仕組み化することで、レビュイー側も遠慮なくプルリクを送りますし、レビュワーも当然のタスクとして対応します。「すみません、今お時間よろしいですか?〇〇を変更したのでレビューしていただけますでしょうか?」なんて無駄な会話はもう必要ありません。プルリクを送る時には5W1Hを意識したコメントを残すようにしましょう。「私が(Who)、いつ(When)、何行目のコードの(Where)、どの機能を(What)、なぜ(Why)、どのように(How)、変更した」か分かるコメントなら、レビュワーの手間も減ります。以上の理由から「変更したらプルリク」という文化は、チームの生産性を高めてくれます。この文化によって共同開発しているプログラムのソースコードの均質化が可能です。想定リスク3「開発メンバーによってソースコードの質が変動するリスク」を低くすることに繋がります。ここまでチーム開発に必要な最低限のGitHubコマンドを解説してきましたが、まだ他にも便利な機能や、知っておくと役に立つ知識があります。GitHubをマスターしてチーム全体の生産性を爆上げしたい方は、GitHubに関する書籍を読んでみてはいかがでしょうか。実際に操作をしながら使い方を習得できるGitHub入門書の決定版です。以上、チーム開発におけるGitHubの使い方を解説いたしました。リモートOKなスタートアップでフロントエンド|搾取されないエンジニアを増やすために、キャリア論や転職を成功させる方法、勉強方法について発信しています。