見出し画像

戦車でもわかる「Git」と「GitHub」超入門①

最近、「Git」とか「GitHub」という呪文をよく聞いていたのですが、ついにその呪文を解読するときがやってきました。そもそも「Git」とは?ということなのですが「バージョン管理システム」になります。「GitHub」は「バージョン管理システムを利用したWebサービス」になります。「ヘぇ〜!そうなんだ便利」と一瞬で理解できたらよかったんですけれども、「は?バージョン管理?なんのバージョン?なんのWebサービス??」となる側の人間だったもので……自分なりに調べて、「Git/GitHub」とは何かを解読してみました。(ちなみに、戦車ってなんだ……となった人はぜひ私の自己紹介をご覧ください。)


1. バージョン管理とは

これは私が考え得る限りの魔窟感を出したFinder(Mac OS用のファイルマネージャーです。Windowsだと『ファイル』に相当するものかと)です。フォルダの名前といい、この最終版 と書いてあるのに日付が最新じゃないとか、混乱の極みみたいな状態ですね。こんな状態でも、自分だけなら、ひとつひとつを確認し、フォルダ名を「20190306_ver.1」のように変更して整理すればバージョン管理が可能ですね。ただ、手動になるとミスが増えるのでオススメはできませんが……。

さて、では「Git」では何ができるのか?ということですが、基本的には、個人のパソコン内のフォルダやプロジェクトの更新履歴を管理することです。「え、じゃあFinderでいいじゃん……最悪、手でもできるし……」となるかと思います。「Git」が普通のファイルマネージャーと違うのは、チームでの恊働作業を前提として「遠隔地にあるサーバー上に共有の保管場所を作る」と言う概念を取り入れていることです。


例として、複数人で大きなプロジェクトをしている場合を想定しましょう。複数人が同時進行で同じ作業をしていたり、かと思えば同じツールを使っていても違う作業をしていたり……挙げ句の果てには、各々が自分ものが最新版だと主張していますね。見ているだけで頭が痛くなるような状況です。プロジェクトマネージャーが可哀想なことになっていますね。こんな状況だと、『進捗状況の確認のための会議』が『ファイルの中身を誰が触っているのか主張する会』になってしまいかねません。

こんな状況になる前に、複数人でファイルを共有していても、先に編集した人の変更内容が消えず、各々の編集箇所の違いを表示できたらいいですよね?つまり、「だれが、いつ、どこを変更したかを記録してくれる」ということが分かればいい訳です。


2. だれが、いつ、どこを変更したのかが分かる

先ほど、「Git」には『チームでの協働作業を前提として「遠隔地にあるサーバー上に共有の保管場所を作る」と言う概念』があるとお話しましたが、要は「だれが、いつ、どこを変更したかを記録してくれる」ということが一目瞭然で分かるようにすると言うことです。なので、「Cさんが2019年03月05日に編集したCSSファイル」が一目見て分かるだけでなく、「2019年03月05日にAさんとBさんが編集したPhotoshopファイル(PSDファイル)」も、Aさん、Bさんが各々どこを編集したのかまで分かるようになっています。

加えて、「ファイルの更新を自動で管理してくれる」「過去の状態にすぐに戻すことができる」というメリットもあります。例えば先ほどのプロジェクトマネージャーが毎日ポチポチと更新ボタンを押さなくても、勝手に最新の状態にしてくれます。過去の状態にすぐ戻せるのは「あ、ここのデザインやっぱり前のにして!」だとか「あ、しまった!このデータ消しちゃいけないやつだったのに!」などという時に過去にアップロードしたデータをすぐに呼び出せると便利でいいですよね。


3. リポジトリ

「え、なに?いきなり専門用語じゃん……」と思われたことでしょう。でも、「Git」を使う上で重要な用語なので説明しますね。すごく簡単にいうと、「リポジトリ 」はファイルやフォルダ、プログラムの「保管場所」です。リポジトリ には2種類ありまして、個人用の「ローカルリポジトリ 」とWebサービス上に作られる共用の「リモートリポジトリ」があります。

ローカルリポジトリはユーザーひとりひとりが利用しているファイルやフォルダ、プログラムの保管場所になります。「Git」では基本的にこのローカルリポジトリを取り扱っています。ちなみに「Git」でもいろんな人とファイルなどを共有するためのリモートリポジトリを作ることは可能ではあるのですが……共有のネットワーク内に、別の共有サーバーを用意して、そこに Git のリモートレポジトリを設定して設置して……という途方もないことをしなければなりません。「え?!面白そう!やってみたい!」という人は良いかもしれませんが「バージョン管理システム」を利用したいだけの人にとっては非常に不便です。なので、普通の方はWeb上のサービスを利用することをお勧めします。

リモートリポジトリは、共用の保管場所です。おおよその場合、「Git」のバージョン管理システムを利用したWebサービスのことになります。有名なのはGitHubBitBucketGitLabなどですね。このサービスを利用することで、ファイルやフォルダなどの共有/管理ができるようになるのです。


4. ちょっと休憩

さて、ここまで「Git」と「GitHub」について書いてきました。少し長くなってきたので、一旦ここまでとしたいと思います。次回は「GitHub」を使う際の用語と仕組みについて説明したいと思います。



この記事が気に入ったらサポートをしてみませんか?