本文へジャンプします。

TOP
クラウド トップ>クラウドナビ>基礎知識>今さら聞けない! バージョン管理システム「Git」とは?

基礎知識

今さら聞けない! バージョン管理システム「Git」とは?

2020年5月20日


今さら聞けない! バージョン管理システム「Git」とは?

「Git(ギット)」とは、Linuxカーネルの開発を支援する目的で開発されたバージョン管理システムの名前です。開発者はLinuxカーネルと同じLinus Torvaldsです。Gitは現在、主にオープンソースソフトウェアの分野で主流のバージョン管理システムとなっています。

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

日々の業務において、PC上ではプログラムのソースコード、WebサイトのHTML、テキスト文書など、さまざまなデータが作成されています。こうしたデータは常に新規作成・追加・修正・削除などが行われ、その内容は変化していきます。

プログラムの開発などは、プロジェクトに所属する複数のメンバーで同時に作業を行うのが一般的です。しかし、複数のメンバーがデータに対して無秩序に変更を行っていくと、「誰が」「いつ」「どのような変更を行ったか」「いったいどのデータが最新なのか」といった情報が失われ、混乱が発生してしまうでしょう。

こうした混乱が起きると、「以前修正したはずのバグがいつのまにか再発していた(リグレッション)」「最新でないコードをリリースしてしまった」「古いドキュメントを参照して作業した結果、障害を起こしてしまった」といった問題が起こる可能性もあります。

そこで、データに対して「誰がいつ」「どのような変更を」「どんな理由で行ったか」という変更履歴情報を記録するシステムが作られました。こうしたシステムを「バージョン管理システム」と呼びます。

Gitの特長

Gitの誕生以前にも、世の中にはさまざまなバージョン管理システムが存在していました。オープンソースソフトウェアの分野では、CVSやSubversionなどが有名です。

CVSやSubversionなどは、「クライアント・サーバー型」のバージョン管理システムです。中心となるサーバー上にリポジトリ(バージョン管理情報を保存するデータベース)を設け、利用者はサーバー上のリポジトリから最新(あるいは指定したバージョン)のデータを手元のPCへダウンロードします。そして、手元のPCでデータを変更したら、その変更内容をリポジトリに反映します(この行為をコミットと呼びます)。そのため、これらのバージョン管理システムは、サーバーと通信できない場所(飛行機の中など)では、作業の結果をコミットできなかったり、指定したバージョンのデータを再取得できいなどという構造上の問題を抱えていました。

対して、Gitは「分散型」のバージョン管理システムである点が最大の特長です。Gitでは中心となるサーバー上だけでなく、個々の作業者が各自のPC上にリポジトリ全体のコピーを持つことができるのです。これはつまり、バージョン管理下にある全データの過去すべての履歴が自分の手元にあるということを意味します。そのため、サーバーと通信できない状態であっても、過去のバージョンのデータを取り出したり、新しい変更を手元のリポジトリへコミットすることができるのです。

当然、手元のリポジトリへコミットしただけでは、ほかのユーザーとコミットの内容を共有することができません。そのため、いつかはコミットを中心のサーバーへ送信する必要がありますが、これはサーバーとの通信が可能になった時点で行えばよいため、Gitはネットワーク接続がないことによって作業を妨げられません。

Gitを使うメリット

現在のソフトウェア開発は非常に複雑化しています。数千から場合によっては数万以上にも及ぶファイルで構成され、そのソースコードの行数は数百万行や数千万行になることも珍しくありません。そうした大規模なソフトウェアを、バージョン管理システムの支援なしで開発するのは、あまりにも無謀と言えるでしょう。

例えば、「プロジェクトのフォルダ全体を毎日手動でコピーし、日付で管理する」ようなやり方では、変更内容の追跡ができず、一部のデータだけを過去のバージョンに戻したくなったような場合に、簡単に破綻してしまうでしょう。Gitを使えば、「以前のバージョンからどこがどのように変更されたか」「以前のバージョンで問題がなかった部分に意図しない変更が入っていないか」を一目で確認できるため、冒頭で述べた「修正したはずのバグがいつのまにか再発していた」「最新でないコードをリリースしてしまった」といった問題を回避できます。

Git以外のバージョン管理システムも、まだ少なからず利用されています。しかし、Gitには「現在主流であり、利用者が多くて情報も豊富である」「分散型であり、ネットワークの状態や第三者に影響されずに作業できる」といったメリットが存在するため、これからバージョン管理をはじめるのであれば、まずはGitの利用がおすすめです。

バージョン管理システムというと、プログラマーがソースコードを管理する目的で使うものだと考えがちです。しかし、データの変更内容を明確にできるというメリットは、PC上で作業するすべての人に恩恵があります。例えば、差分の比較や変更履歴の追跡が容易なことから、作家と出版社の間で原稿をGitで管理する例なども実際に存在しています。

また、「GitHub」や「GitLab.com」といったソースコードホスティングサービスも存在します。これらのサービスは、単にGitを利用してデータを管理するだけでなく、バグ報告、コードレビュー、ディスカッションなどもWebブラウザー上から行えるソフトウェア開発プラットフォームです。バージョン管理システムにGitを採用すると、こうしたサービスも有効に利用できます。手軽に導入ができ、効率よくソースコードを管理・共有・レビューできる環境を構築可能なため、昨今、増加しているテレワークの用途でも多く利用されています。

  • このエントリーをはてなブックマークに追加