PR

Gitについて基礎から見直してみた【おすすめ本 紹介】

Gitについて基礎から見直してみた Git

先日、自分のGitに対する理解度の低さを知る機会がありました。

これを機に、学習書籍を使ってGitについて基礎から見直し始めました。今回は、書籍の中で個人的に面白いと思った話などを紹介していこうと思います。

Gitは分散型である

「そもそもGitとは何か?」というところを見直している中で、「Gitは分散型である」という話があり、それを知ったことで自分の中のGit像が少し変わりました。

「Gitはバージョン管理システムである」という説明とともに、「Gitを使うことでファイルのデータ更新を簡単に管理することができますよ〜」という話はあちこちで見かけてきたので知っていました。

しかし今回読み進めた本では、そこから一歩踏み込んで、「Gitは分散型のバージョン管理システムである」という説明とともに、「ローカルリポジトリでブランチ管理やコミットを自由に行うことができる」といった話がイラストと並行して紹介されていました。

【GitとSubversionの構造的な違い】GitのブランチはSubversionのブランチとは全く違うモノ~
Decription:Git(ギット)とSubversion(サブバージョン)の構造的な違いを比較して解説します。両者のブランチはまったく違うもの。GitとSubの違いがわからないという方は必読。

(この記事でも紹介されていました。)

以下、書籍の内容を自分なりにアレンジして紹介します。

そもそもバージョン管理システムと呼ばれるものには、大きく分けて「分散型」と「集中型」の2種類があります。

バージョン管理システムには「分散型」と「集中型」の2種類がある

Gitはそのうち「分散型」に該当します。

また、それぞれには以下のような違いがあるようです。

  • 集中型の場合、コミットは全て「中央レポジトリ」というプロジェクト参加者共通のレポジトリにしか反映させられない
集中型バージョン管理システム
  • 分散型の場合、プロジェクト参加者それぞれが自分のパソコン内で「ローカルレポジトリ」を作成してコミット履歴を残していくことができる
分散型バージョン管理システム

分散型であるGitを使うことで、プロジェクト参加者が各自で開発を進め、それぞれローカルレポジトリで更新した情報をプロジェクト全体に反映させたいときだけ、リモートレポジトリにプッシュするという方法が選ぶことができます。

ブロックチェーンと似ている?

「分散型」という単語を聞いて、「そういえば仮想通貨とかに使われているブロックチェーン関連の話でも分散型って単語がよく使われていたなぁ」と思い、「ブロックチェーン 分散型」でググってみると、平成26年に環境省が公表したPDF資料が出てきました。

https://www.env.go.jp/content/900440691.pdf

PDF資料1枚目で「ブロックチェーン技術を活用したシステム」の説明として図が使われています。この図を見て、「Gitの説明に使われている図と似ているなぁ」なんてことを思ったりしました。

また、『Gitが「ブロックチェーン」と見なされないのはなぜですか?』というページが見つかったりと、Gitとブロックチェーンの仕組みに似たところがあるのは間違いようです。

https://www.web-dev-qa-db-ja.com/ja/git/git%E3%81%8C%E3%80%8C%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%80%8D%E3%81%A8%E8%A6%8B%E3%81%AA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F/834442229/

余談ですが、GitHubでブロックチェーンの開発が行われていたりもしているようです。

GitHubのブロックチェーン開発「貢献度ランキングTOP3」2019年9月版=MetaBlock調査
世界中で利用されているソフトウェア開発プラットフォーム「GitHub(ギットハブ)」のデータに基づいてブロックチェーンプロジェクトの開発活動を調査・分

コンフリクトも怖くない

先ほど「Gitは分散型である」というところを見直したことで、コミットやプッシュといったGitの基本操作がどういった役割を果たしているのかということを改めて理解し直すことができました。

また、今回読み進めた本の「コンフリクトが起きたら?」という章の中で、コンフリクトが起きた時の対応についても紹介されていました。

この章では「わざとコンフリクトをさせてみよう」という実践コーナーがあり、実際にコンフリクト(衝突)を起こさせて、どこを修正してコミットをし直せば解決させられるのかという説明がありました。

今まではコンフリクトが起こるとチームの人に助けを求めて解決してもらっていたのですが、今後はコンフリクトを過度に恐れず、可能な限り自分で対応していこうと思います。

そもそもコンフリクトを起こさないようにできれば1番良いんだけどね〜

電子書籍か紙の本か

Gitの基礎とSourceTreeの使い方をイチから見直すにあたって、現在Kindle Unlimitedで読み放題の対象になっている「サルでもわかるGit入門」を普段使用しているKindleで読み進めようと思いました。

しかしこの本のKindle版、文字サイズが小さかったりして読みにくく、序盤で読み進めることを断念することにしました。

僕がいつもkindleで読む本は図やイラストが少なくて文字主体の書籍であるため、kindleでもストレスなく読むことができていますが、今回読み進めたいものは図やイラストが主体になるものなので、kindle版だと文字が小さくなってしまうようです。

※iPadなどの画面の大きなタブレットだと問題なく読めるっぽいです。

今回参考にした本

僕が使っているKindleだと図やイラストの多い書籍は読みにくいということが分かったので、以下の本を本屋で買って読み進めることにしました。

読んでいて「とにかく初学者に優しい学習書籍だなぁ」と感じました。

「Webの仕事に憧れる大学生」の主人公がGitについて学んでいくというストーリーのマンガを読みながら、イラストや丁寧な説明を通して読者もGitを学んでいくことができるという構成でした。

理解のしやすさが最重視された本なので、内容としての情報量は少なく、書籍で学習することが苦手な人でも無理なく学習できる本だと思います。



今回は、Gitについて基礎から見直しつつ、読み進めた書籍の中で特に気になった話などを紹介してきました。

特に新しいことを学んだりしたわけではありませんが、自分が見落としていた点に気づいたりできて割と楽しみながら学ぶことができました。

今まで何か情報を取りに行くときはネットしか使っていなかったのですが、今回をきっかけに、「書籍を使って体系的に何かを学ぶ」というのも選択肢に入れていきたいと思います。

タイトルとURLをコピーしました