テクノロジー

2022年8月4日

バージョン管理とは

ゴール

  • バージョン管理システムの必要性を理解する
  • バージョン管理システムの種類と特徴を理解する

バージョン管理とはなにか

バージョン管理とは、特定のファイルやフォルダに対して、内容の更新を記録してファイルの状態を管理することです。

バージョン管理には、後述の「バージョン管理システム」というツールを利用することが一般的です。
ツールを利用せずにバージョン管理を行おうとすると、以下のようなことが発生します。

  • どれが最新のファイルなのかがわからない
  • ファイルの名前に一貫性がなく、管理しづらい
  • 以前のファイルから、どのような変更がされたのかがすぐにわからない

Image from Gyazo

このようなファイル管理上の不便さを解消するために、バージョン管理システムが存在します。

バージョン管理システムでは、次のメリットがあります。

  1. ファイルの変更内容の記録が容易である
  2. 記録された特定のバージョンへの復元が容易である

バージョン管理システムの種類と特徴

バージョン管理システムの種類には、集中型分散型の二つがあります。

集中型(中央集権型)

主となる一つのサーバにファイルを配置して管理する方法です。

集中型での管理は仕組みが単純で、以下の2つが主な作業になります。

  • サーバへ更新情報を反映する
  • サーバから更新情報を取得する

Image from Gyazo

なお、集中型には以下のデメリットがあります。

  • 不完全な状態のファイルを反映すると、その変更を取得した各作業者のファイルに直ちに影響してしまう
  • 作業中は、サーバに常時接続しておく必要がある

集中型の代表的なバージョン管理システムには、Subversion(サブバージョン)というサービスがあります。

分散型

作業者それぞれの環境にファイルの保管先を複製して、変更内容を同期することで全体の整合性を取る方法です。
集中型と違い、同期作業を行うまで、変更内容が他の作業者へ影響することはありません。
そのため、作業者の環境内のみでファイルを変更し、そのバージョンの記録を作成したり、変更内容を破棄できます。
同期したタイミングで他の作業者との変更内容に差があれば、その時点で修正が可能です。

Image from Gyazo

分散型のバージョン管理システムには、Git(ギット)やMercurial(マーキュリアル)というサービスがあります。

それぞれのサービスの特徴を比較します。

  Git Mercurial Subversion
動作速度 ×
機能
学習コスト ×

集中型のサービスは、更新作業の度にサーバへの通信が発生します。
分散型のサービスは、同期作業以外はサーバとの通信を必要としません。そのため分散型のほうが動作速度は高速です。

機能面では、Subversionは他のサービスより5年程古いため、見劣りしています。

また、集中型のサービスは仕組みが単純なため、学習コストがあまりかかりません。
一方、分散型のサービスは、自分の環境内での作業と、他の環境へ同期する処理の違いについて理解する必要があります。
しかし、分散型のサービスはその機能を活かし、バージョン管理のさまざまな状況に柔軟に対応することができます。

なお、バージョン管理システムの中では、Gitが圧倒的に人気があります。
Image from Gyazo

出典: Google Trends
 

これから、現代のソフトウェア開発におけるバージョン管理の標準である、Gitについて学びましょう。

まとめ

  • バージョン管理システムを利用して、ファイルの変更内容の記録や復元を行うことにより、ファイルの変更バージョンを容易に管理できる。
  • バージョン管理システムには、集中型や分散型のサービスがあるが、現在では分散型のGitが利用者のシェアのほとんどを占めている。

この記事の続きは、こちらの「1週間の無料お試しを開始する」から学習できます!

DIVE INTO CODEのことをもっと知ってみませんか?