はじめに

以前、以下のVRに関する記事を執筆しました。

VRとは?〜VRの歴史から課題、活用場面(ユースケース)を紹介!〜
VR開発とは?〜必要な機材と開発方法を紹介〜

その後、VR上でプレイできるゲームの開発に携わる機会をいただいたのですが、その中でGitHubを使った際に非常に便利なツールであると筆者は感じました。そのため、最近巷で話題になるIT関連のニュースでも登場する機会が多くなってきたGitHubについて、今回は紹介したいと思います。

バージョン管理システムとは

GitHubについて紹介する前に、GitHubがどういうツールなのかを理解するため、バージョン管理という仕組みについて知っておく必要があります。そのため、まずはバージョン管理について説明したいと思います。

バージョン管理とは、具体的にはコンピュータ上でファイルの変更履歴を管理することを指し、現在の開発プロジェクトでは、バージョン管理をするために何かしらのシステムを導入しています。プロジェクトでバージョン管理をしないと、具体的に以下の2つの問題を直面します。

  • 第1は、最新バージョンのファイルがどれかわからなくなるという問題です。
    プロジェクトにかかわる複数のメンバが、複数のファイルあるいは同じファイルを頻繫に書き直すので、ファイルの最新バージョンがどれか把握するのが難しくなってきます。また、誰かが誤って上書きして、他のメンバの変更を消してしまうような問題も発生します。
  • 第2は、状態を元に戻せないという問題です。
    例えば、今回の変更でバグが見つかったので1世代前のバージョンでプロジェクトを進めようとなった場合に、誰もその状態に戻すことができません。また、何かの間違いで必要なファイルを削除してしまうと、それを元に戻す術がありません。

こういった問題を解決できるツールが、バージョン管理システムです。

また、バージョン管理システムは主に「集中型」と「分散型」に分けられ、「GitHub」の「Git」は分散型に分類されます。集中型では、ファイルやディレクトリの状態を記録するリポジトリが1つで、サーバ上に中央リポジトリが設置されます。ユーザは、それに対してチェックアウトとコメントをすることで、開発を進めていきます。

このため、最新の情報を取得するにも、何か作業した後にコミットするときにも、必ず中央サーバに接続する必要があります。また、万が一中央リポジトリが破損した場合は、復旧が難しくなる恐れがあります。分散型では、それぞれの端末ごとにローカルリポジトリが作られます。集中型が1つの中央リポジトリで管理されるのに対し、複数のリポジトリが作られるので、分散型と呼ばれます。自分の端末に作ったローカルリポジトリに対しては、いつでも変更の登録(コミット)ができるので、一部の作業を除けばオフラインでも作業できます。また、複数のリポジトリが作られることで、どこかのリポジトリが破損した場合にも、比較的容易に復旧できます。

「Git」と「GitHub」

バージョン管理について説明したところで、今回紹介するGitHubとそのもとになっているGitについて説明します。

「Git」は、元々Linuxのソースコードを効果的に管理するために2005年に開発されました。大規模プロジェクトを高速に、そして複数人で並行して扱える仕組みを持っていることが、Gitの大きな特徴です。最近は、ソースコードを含むプロジェクトの管理だけでなく、Wikiやブログなど日本語で書くようなテキストなどをGitで管理するケースも増えてきています。ドイツでは法令をGitで管理する事例もあり、元々はエンジニアのためのツールだったのが、より多くの人にとって身近な存在となってきているのかもしれません。

「GitHub」は、Gitの仕組みを利用して、インターネット上でのスムーズな共同作業を可能にしたWebサービスです。他のユーザと簡単にコミュニケーションが取れる仕組みやプロジェクト管理に使える機能が充実しており、いつでもどこでも効率よく開発が行えるメリットから、全世界で7300万人以上、日本でも約170万人のユーザがいるほど、現在では広く普及しています。

2015年にGitHubの日本支社が設立されて以来、日本での普及にもより一層力を入れており、The State of the Octoverse 2021の報告によると、この1年で日本のユーザ数も30%増えたとあることから、今後もユーザ数は増え続けるとみられています。

かつてはインターネットサービスを開発する企業が中心だったGitHubのユーザも、近年ではシステムインテグレータや受託開発の企業にも普及しており、ライフラインや製造業、金融、医療など多くの分野でもGitHubを採用しています。そのため、昨今の状況からみても、今後はさらに読者の皆様にもGitと同様にもっと身近な存在になっていくと考えられます。次の章では、Gitを語る上では欠かせない特徴的な機能の1つである「ブランチ」について説明したいと思います。

「ブランチ」とは?

Gitを使った開発では、ブランチと呼ばれる機能を利用して開発を進めます。ブランチとは、機能追加やバグ修正などプログラムに対して行った作業の履歴を記録するものです。このブランチは必要に応じて分岐させることができ、分岐させたブランチの履歴は他のブランチからの影響を受けません。また、分岐させたブランチは他のブランチと結合して、1つのブランチにまとめ直すこともできます。

ブランチを使うことで、作業の内容ごとに別々に管理することができるので、同じリポジトリ内で並行して異なる作業をする際に役立ちます。

GitHubを活用する強み

GitHubには、他にも強みがあります。それは、自動でテストやビルドができることです。GitHubには「GitHub Actions」と呼ばれる自動化ツールがあり、テストを自動で行うように設定することができます。他にも、コードの変更を見つけて自動でビルドやデプロイを行うように設定することもできます。このように、システム開発における重要なプロセスを自動化してくれるというのもGitHubの大きな強みです。

終わりに

今回は、GitHubについて解説してみました。この記事を読んだ皆さんに少しでもGitHubがどんなものであるかがが伝わっていると幸いです。現状、まだまだGitHubがどんなものかご存じない方も多いと思います。しかし、この記事を読んでGitHubに興味を持つ方が増えてくださると、筆者はとても嬉しいです。