どうも。つじけ(tsujikenzo)です。このシリーズでは「ノンプロ研ライティング講座初級1期を受講中にやったこと・後半戦」としてお送りしております。
今日は第9回で「GitとGitHubの違いを理解しよう」についてお届けします。
Git・GitHubの違い
先日受講したライティング講座Day7にて、「Git・GitHubとはなにか」ということに触れました。
もう少し、2つのツール・サービスの違いについて深掘りしてみましょう。
Gitを作った一人の天才
Gitを理解するために、Gitを作った人が何に困っていて、その不便を解消したのか理解してみましょう。
一言で何が不便だったのかというと「今まで使ってたコンピュータのソースコードのバージョン管理システムが有償(商用ソフト)だった」ということです。
Gitを作ったのは、「Linuxカーネル」という、無償で誰でも使えるソフトウェアを動かすためのソフトウェアのようなものを作ったリーナス・トーバルズさんです。
ソフトウェアの開発は、規模が大きくなればなるほど、複数人で同時に行うことが多いです。また、多数の分岐点が発生しますので、「バージョン管理システム」の導入は必須でした。
ご自身が作った無償のLinuxカーネルが、世界中のエンジニアに使われていくなかで、ソースコードのバージョン管理システムが有償(商用ソフト)しかないという状況は、世の中のためにもよくなかったでしょう。
Linuxカーネルが発表されたのが1991年、Gitが発表されたのが、2005年です。
リポジトリとは
リーナスさんがGitを発表する前から、「バージョン管理システム」は存在していました。「コンピュータ上でファイルの変更履歴を管理するシステム」です。「管理する」と言っていますが、どうやって管理するのでしょうか。
それは「データベース」です。
「なんのファイルが」「どんな変更がされたのか」「いつ」のような、ファイルの変更履歴に関するすべての値を、データベースとして管理しています。このデータベースのことを「リポジトリ」と呼びます。
リポジトリに「ファイルの変更履歴」に関する値が格納されていれば、このように物理的にフォルダ名やファイル名で管理しなくてもよくなりますね。
リポジトリの管理方式
データベースが1つあったとして、それを複数人で編集するとしたら、「全員で同時に1つのデータベースを編集する」という方法があります。管理すべきデータベースが1つあればいいので楽そうですよね。しかし、複数人で同時に変更を加えるのは、リスクが高そうです💦
そこで、各自でデータベースのコピーを作って、そこで変更を加えるのはどうでしょうか。変更したものを元のデータベースに戻すときに注意を払えばいいので、上記のやり方よりリスクは減らせそうです。
この「オリジナルからコピーを作って編集して戻す」という管理方式を「分散型バージョン管理システム」と呼びます。分散型バージョン管理システムでは、レポジトリをコピーすることを「clone(クローン)」と呼びます。Git以前からある手法で、もちろんGitも分散型バージョン管理システムを採用しています。
2種類のリポジトリ
リポジトリが「データベース」であること、Gitは「データベースのコピーを作成して変更する」という分散型バージョン管理システムであることを理解しました。
データベースは、みんながアクセスできるところに置いてあったほうが、共同で作業がしやすいです。LANケーブルでつながったネットワーク内のPCなどに置いておけば、会社内の人間なら誰でもアクセスすることができますね。
これを、「リモートリポジトリ」と呼びます。
また、リモートリポジトリからデータベースのコピーを作成して、実際に変更(開発作業)をする場所は、自分のPCです。自分のPC内にあるデータベースを「ローカルリポジトリ」と呼びます。
Gitは、リモートリポジトリ、ローカルリポジトリの、さまざまな操作をコマンドライン(CUI、いわゆる黒い画面というやつ)で命令することができます。
GitHubとは
「リモートリポジトリをインターネット上で提供しているサービス」です。あくまで、リモートリポジトリを作成するのは、「ローカルリポジトリ」からアップロードするユーザーですので、「リモートリポジトリの置き場所を提供している」といった方が正しいかもしれません。
ただし、単に「置き場所」だけではなく、「ハブ」としての機能ももちあわせていますので、「GitHub(ギットハブ)」というわけです。
サーバー上のさまざまな処理は、プログラミング言語の「Ruby on Rails(ルビー・オン・レイルズ)」や関数型プログラミング言語の「Erlang(アーラン)」によって行われています。
GitHubは、公式サイトのドキュメントも充実しています。近年公開された「GitHub Sponsors」なども掲載しております。すべてを網羅するのは時間が掛かると思いますが、マイペースに楽しんでいきたいと思います。
まとめ
さて、以上で「GitとGitHubの違いを理解しよう」をお送りしました。
GitHubは2018年にMicrosoft社に買収されました。Microsoft社はソフトウェアのライセンスを管理して、ユーザーを囲い込んできた企業です。しかし、GitHubの買収により「これからはオープンソフトウェアに舵を取る」という表明をしたことになります。Microsoftが買収してから1年で800万人のユーザー増だったようです。これからもっと価値があがりそうですね。
個人的は、これからの世の中の価値として「ギバーとテイカー」の話にもつながっていくと思っています。まずはプログラミング学習をもっと頑張ろうと思います。