1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Git入門 - 1

Last updated at Posted at 2020-08-13

1. はじめに

当記事は全5回(+α)からなる Git入門シリーズ の第1回です。

今回は そもそもGitとは何なのか ということについて説明します。

2. Gitとは?

Git は2005年12月21日に発表された VCS です。「ギット」と読みます。 「ジット」だと思ってた。

開発元は、Linuxの生みの親であるLinus Benedict Torvalds氏と、Linuxコミュニティです。元々Linuxコミュニティでは、Linuxのソースコードの管理にBitKeeperというVCSを使用していました。ただ、様々な事情からBitKeeperの使用をやめることになり、その際BitKeeperの代替となるVCSを探したのですが、満足できるものが無かったため、新たにGitが開発されました。

3. VCSとは?

VCS (Version Control System)バージョン管理 を支援するアプリの総称です。もちろん、バージョン管理ができるならば、アプリでなくとも(Webサービスなどであったとしても)VCSたりうると思うのですが、主要なVCSは全てアプリという形を採っています。

Git以外のVCSには――

  • 世界初のVCSである SCCS (Source Code Control System)
  • 世界で2番目のVCSであり、今なお一部では現役と聞く RCS (Revision Control System)
  • クライアントサーバー型VCSの祖として広く普及した CVS (Concurrent Versions System)
  • CVSの改良型のように語られることが多い SVN (Apache Subversion)
  • Gitのライヴァル Mercurial
  • 悪評高き VSS (Microsoft Visual SourceSafe)
  • VSSの汚名返上に成功した(?) TFS (Team Foundation Server)

――などがあります。

4. バージョン管理とは?

私が調べたかぎりでは厳密な定義はないようです。バージョン管理(version control)という呼び方すら絶対ではなく――

  • software configuration management
  • SCCM (Software Change and Configuration Management)
  • source configuration management
  • revision control
  • source control

――といった色々な呼称が使われているようです。

ただ、それでは話が進まないので、私個人の解釈を申し上げますと、バージョン管理とは ある成果物の状態の変遷を、特定の法則に基づいて記録・管理する手法および概念 ということになるでしょう。

プログラムの改修作業(変更作業)は常に成功するわけではありません。時には、変更を加えたことで新たなバグが生じたり、余計なところにまで手を付けてしまったり、そもそも変更内容自体が適切でなかったりします。そんなとき、変更前の状態が残っているのと残っていないのとでは、その後の対応状況・対応方法・対応難易度が変わってきます。言わずもがな、変更前の状態が残っているほうが対応が容易になります。

また、各状態を残すにしても規則性が必要です。例えば、新しい状態になるごとに「ソースファイルの末尾の数字を増やしていく(v1、v2、v3)」とか「変更を加えた日付を付ける(20200101、20200103、20200201)」といったようにです。これを徹底しないと以下のように収拾が付かなくなります。

  • main.ps1
  • main_v2.ps1
  • main_20200203.ps1
  • main-200204.ps1
  • 【最新版】main.ps1
  • 【最新版】main.ps1_バグ修正済み
  • main.ps1_本番環境

上記例だと7つのファイルがありますが、結局どれが最新版なのか分かりません。どのように変更が加えられてきたのかも読み取れません。これではバージョン管理ができているとは言えません。

5. バージョン管理するのにVCSって要るの?

バージョン管理を行うのにVCSは必須ではありません。

実際、電子式コンピューターの生産、およびプログラミング言語の利用は1940年代から始まりましたが、世界初のVCSであるSSCSが登場したのが1972年のことです。つまり、およそ30年近くにわたって、VCSを用いないバージョン管理が行われてきたわけです(バージョン管理が1940年代から存在していたという前提に立つ)。

ただ、VCSを用いないバージョン管理は往々にして、VCSを用いたバージョン管理よりも問題を生じさせます。各バージョンを区別する方法(概ねファイル名で区別しますが)で悩んだり、旧バージョン・現行バージョン・開発中バージョンの分け方・管理体制で悩んだり、メンバーのなかからバージョン管理を無視する人が出てきたり、プロジェクトが進むにつれて管理が煩雑になってきたり、と色々と苦労する羽目になるでしょう。

このようなエンジニア職の本質ではない仕事はVCSというツールに任せてしまえばよいのです。

6. Gitの評価

他のVCSと比較したGitの長所として、よく聞くのは――

  • 動作が軽快
  • 多機能
  • 大規模開発に耐えうる
  • 現状、VCSはGitかVSNのツートップ
  • ブランチを積極的に切っていく開発フローに適する
  • マージ処理が賢い

――などがあります。反対に、短所としては――

  • 覚えなければならない概念・仕様が多い
  • Gitコマンドの抽象化が足りておらず使いにくい
  • VCSのなかで最も学習難易度が高い

――などです。

私個人の考えも含めた総評としては 多機能、かつ高性能。それでいて様々プロジェクトで使われてきた実績もある、最も優れたVCSの1つ。ただし、学習コストも相応に大きい といった感じでしょうか。

ちなみに、無料のアプリなので安心して使ってください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?