BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【GitHub】GitHubってなに?

はじめに


以前、こちらでVRに関する記事をいくつか書きました。

bftnagoya.hateblo.jp bftnagoya.hateblo.jp

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

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


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

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

  • 最新バージョンのファイルがどれかわからなくなるという問題
    • プロジェクトにかかわる複数のメンバが複数のファイルあるいは同じファイルを頻繫に書き直すので、ファイルの最新バージョンがどれか把握するのが難しくなる
    • 誤って上書きして他のメンバの変更を消してしまう可能性がある
  • 状態を元に戻せないという問題
    • 例えばバグが見つかったため1世代前のバージョンでプロジェクトを進めようとしても誰もその状態に戻すことができない
    • 戻したファイルが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%増えたとあることから、今後もユーザ数は増え続けるとみられています。

かつてはインターネットサービスを開発する企業が中心だったユーザも、近年はライフラインや製造業、金融、医療など多くの分野の企業、またIT関連でもインターネットサービス開発にとどまらずシステムインテグレータや受託開発の企業もGitHubを採用している状況からみても、今後、読者の皆様にもGit同様もっと身近な存在になっていくと考えられます。

次の章では、Gitを語る上では欠かせない特徴的な機能の1つである「ブランチ」について説明します。

「ブランチ」とは?


Gitを使った開発ではブランチと呼ばれる機能を利用して開発を進めます。ブランチとは機能追加やバグ修正などプログラムに対して行った作業の履歴を記録するものです。

このブランチは必要に応じて分岐させることができ、分岐させたブランチの履歴は他のブランチからの影響を受けません。

また、分岐させたブランチは他のブランチと結合して1つのブランチにまとめ直すこともできます。ブランチを使うことで作業の内容ごとに別々に管理することができ、同じリポジトリ内で並行して異なる作業をする際に役立ちます。

GitHubを活用する強み


GitHubには、他にも強みがあります。それは自動でテストやビルドができることです。

GitHubには「GitHub Actions」と呼ばれる自動化ツールがあり、テストを自動で行うように設定できます。他にもコードの変更を見つけて自動でビルドやデプロイを行うようにも設定できます。

このようにシステム開発における重要なプロセスを自動化してくれるというのもGitHubの大きな強みです。

終わりに


今回は、GitHubについて解説してみました。
この記事を読んだ皆さんに少しでもGitHubがどんなものであるかが伝わっていると幸いです。

現状、まだまだGitHubがどんなものかご存じない方も多いと思います。しかし、この記事を読んでGitHubに興味を持つ方が増えてくださると筆者はとても嬉しいです。