チーム開発の必須ツールGitHub活用法【研修と実務で実践】

目次
はじめに
本記事はIT会社勤務の100名程の研修生を見てきた元Java研修講師が、コードの管理システムである「Git」とコードの管理ツールとであるGitHubについての活用法をお話しします。
Git・GitHubについて
- Gitとは
Gitとはソースコードなどの変更履歴を管理するためのシステム(バージョン管理システム)です。
そもそもバージョン管理について説明します。何か1つのファイルを編集していたとします。そのファイルを「どの時点で何を変更したか」を記録するためには、「documentFile_ver1.docx」「documentFile_ver2.docx」「documentFile_ver3.docx」のようにファイルを複数作成すると思います。しかし、ファイルの数が増えたり管理が大変になりますよね。そこでGitを使用すると、「どの時点で何を変更したか」を自動で記録・管理してくれます(ファイルをたくさん作らなくていい!)。
- バージョン管理
上記のようにバージョンを管理することで、いつでも過去の状態に戻れます。
また、誰がどこを変えたのかも見ることができます。
- 差分確認
どこをどう変更したか。変更前の状態から変更後の状態が一目で確認できる。
以上のような特徴があり、他にもありますが慣れてきてから学ぶと良いと思います。
- GitHubとは
バージョン管理システムのGitをインターネット上で利用できるようにしたサービスです。
様々なコマンドやWeb上での機能(PR、マージ、ブランチ作成)を活用しながら利用します。
研修での活用法
研修でのGitHubの活用方法としては、まず課題をするリポジトリがあります。そこに課題をするフォルダやファイルを作り、課題を完成させていきます。
PRを立てて差分を確認し課題が完成しているかの確認をする。そしてコード修正があればコードレビューをコメントに入れたりもします。
主に、add⇨commit⇨pushの操作や、コードのcloneやpull、PRを立てる。などの基本的なコマンド操作を学びます。
研修ではGitHubに触れてみよう。くらいの感覚なので、自分1人で開発をしてバージョン管理をしているので、実務で使うイメージとは少し離れた使い方になっていると思います。
やはり、GitHubは実務などでのチーム開発をするときに真価を発揮すると思います。
用語捕捉
リポジトリ(Repository)
- ファイルとその変更履歴をまとめて保存する場所
- プロジェクトの「箱」のような存在
コミット(commit)
- ファイルの変更を1つの履歴として保存する操作
- 「この時点ではこういう内容だった」という記録
プッシュ(push)
- ローカルでのコミットをGitHub(リモート)に送る操作
- チームと変更内容を共有するために必要
プル(pull)
- リモート(GitHub)上の最新の状態をローカルに取り込む操作
- 他の人の変更を自分の作業環境に反映できる
クローン(clone)
- GitHub上のリポジトリをローカルにまるごとコピーする操作
- はじめてプロジェクトに参加するときによく使う
Pull Request(PR)
- 自分の変更を他の人に確認してもらい、マージを依頼する機能
- チーム開発でのコードレビューや変更管理に必須
実務での活用法
実務では、1つのWebアプリに対して複数人で開発を行うため、アプリの機能ごとに別れて担当することが多い。なので機能ごとにブランチを切って開発を行っていく。研修のときと何が違うかと言うと、全部1人で開発するわけではないので他の機能がどんなコードを書いているか、途中段階が分からない。完成したコードをGitに上げてもらうので完成形しか見れない。
機能ごとに別れるためブランチごとにどんな作業しないといけないかが明確になっているため、効率的に開発が進められる。
まとめ
研修では、1人でやることのほうが多いと思います。なので、あまりGitHubの利便性やバージョン管理の恩恵はそこまで大きくないと思います。ですが、研修の時点でコマンドの操作に慣れておくだけでも実務では非常に役立つと思います。さらに、実務で繰り返し使っていくことでGitの理解や、より複雑な操作をコマンドで行えたり。とできることが増えていくと思いますので、繰り返し使って身に付けて業務に役立てるように、この記事を第一歩目としていただけたらと思います。