最近のソフトウエア開発で必須のツールとも呼べる存在が、「GitHub(ギットハブ)」である。GitHubとは何か。使いこなすためのポイントを学ぼう。

 GitHubはバージョン管理システム「Git」を中心としたWeb サービスである。課題管理の「Issues」やドキュメント管理の「Wiki」「Pages」といった機能で、チーム開発の効率化を促すツールだ。バージョン管理、課題管理、ドキュメント管理のそれぞれの機能を連携することで、チームのコミュニケーションが円滑になる。以下では、GitHubの主要な機能について見ていこう。

GitHubの概要
GitHubの概要
[画像のクリックで拡大表示]

バージョン管理の「Git」

 GitHub の一番の肝となるのが、バージョン管理システムの「Git」だ。システム開発における成果物の版(バージョン)を、安全に管理するのがGitの役割だ。バージョン管理システムを利用すると、現場はどのように変わるのだろうか。

まずはバージョン管理システムを使わずに、ファイルサーバーの共有フォルダーに最新の成果物を格納する方法でシステム開発を行っているケースを想定してみよう。

 ファイルサーバーで成果物を共有している場合、成果物を更新しても、いつ誰が何をしたかの記録は残らない。別途、Excelなどを使って手動で記録を残すことが必要だ。問題が発生した場合、原因を調べるためにはメンバーの記憶に頼るしかなく、問題が発生する前の状態に戻すことも難しい。

 ファイルサーバーで共有するケースはもう1つ問題がある。作業の整合性を保つために、最新のバージョンのファイルのみを保持する必要があるということだ。誰かが作業している場合、別のメンバーが同じファイルをコピーして作業することはできない。複数のメンバーが同時に作業できないことで、生産性が落ちるだけでなく、障害対応といった突発的な作業が発生した場合に全員の作業を止めてしまう可能性もある。

 今度はGitを利用する場合を考えてみよう。システム開発の成果物の共有にGitを利用すると、「いつ」「誰が」「何をしたか」といった作業履歴が全て保存される。問題発生時の調査が容易になるうえ、過去のバージョンを再現することもできる。作業履歴を分岐させることで、開発に参加する各作業者が別々にバージョンを管理できるため、個人の作業が止まることもない。

バージョン管理システムの考え方
バージョン管理システムの考え方
[画像のクリックで拡大表示]

 前述のようにGitHub の中心はGitであることから、GitHubは「Gitの情報を参照したり、操作したりできるユーザーインタフェースを持ったWebサービス」ともいえる。