テクノロジー
2022年8月4日バージョン管理とは
バージョン管理システムの必要性を理解する / バージョン管理システムの種類と特徴を理解する
ゴール
- バージョン管理システムの必要性を理解する
- バージョン管理システムの種類と特徴を理解する
バージョン管理とはなにか
バージョン管理とは、特定のファイルやフォルダに対して、内容の更新を記録してファイルの状態を管理することです。
バージョン管理には、後述の「バージョン管理システム」というツールを利用することが一般的です。
ツールを利用せずにバージョン管理を行おうとすると、以下のようなことが発生します。
- どれが最新のファイルなのかがわからない
- ファイルの名前に一貫性がなく、管理しづらい
- 以前のファイルから、どのような変更がされたのかがすぐにわからない
このようなファイル管理上の不便さを解消するために、バージョン管理システムが存在します。
バージョン管理システムでは、次のメリットがあります。
- ファイルの変更内容の記録が容易である
- 記録された特定のバージョンへの復元が容易である
バージョン管理システムの種類と特徴
バージョン管理システムの種類には、集中型と分散型の二つがあります。
集中型(中央集権型)
主となる一つのサーバにファイルを配置して管理する方法です。
集中型での管理は仕組みが単純で、以下の2つが主な作業になります。
- サーバへ更新情報を反映する
- サーバから更新情報を取得する
なお、集中型には以下のデメリットがあります。
- 不完全な状態のファイルを反映すると、その変更を取得した各作業者のファイルに直ちに影響してしまう
- 作業中は、サーバに常時接続しておく必要がある
集中型の代表的なバージョン管理システムには、Subversion(サブバージョン)というサービスがあります。
分散型
作業者それぞれの環境にファイルの保管先を複製して、変更内容を同期することで全体の整合性を取る方法です。
集中型と違い、同期作業を行うまで、変更内容が他の作業者へ影響することはありません。
そのため、作業者の環境内のみでファイルを変更し、そのバージョンの記録を作成したり、変更内容を破棄できます。
同期したタイミングで他の作業者との変更内容に差があれば、その時点で修正が可能です。
分散型のバージョン管理システムには、Git(ギット)やMercurial(マーキュリアル)というサービスがあります。
それぞれのサービスの特徴を比較します。
Git | Mercurial | Subversion | |
---|---|---|---|
動作速度 | ◎ | ○ | × |
機能 | ◎ | ◎ | △ |
学習コスト | × | ○ | ◎ |
集中型のサービスは、更新作業の度にサーバへの通信が発生します。
分散型のサービスは、同期作業以外はサーバとの通信を必要としません。そのため分散型のほうが動作速度は高速です。
機能面では、Subversionは他のサービスより5年程古いため、見劣りしています。
また、集中型のサービスは仕組みが単純なため、学習コストがあまりかかりません。
一方、分散型のサービスは、自分の環境内での作業と、他の環境へ同期する処理の違いについて理解する必要があります。
しかし、分散型のサービスはその機能を活かし、バージョン管理のさまざまな状況に柔軟に対応することができます。
なお、バージョン管理システムの中では、Gitが圧倒的に人気があります。
出典: Google Trends
これから、現代のソフトウェア開発におけるバージョン管理の標準である、Gitについて学びましょう。
まとめ
- バージョン管理システムを利用して、ファイルの変更内容の記録や復元を行うことにより、ファイルの変更バージョンを容易に管理できる。
- バージョン管理システムには、集中型や分散型のサービスがあるが、現在では分散型のGitが利用者のシェアのほとんどを占めている。
この記事の続きは、こちらの「1週間の無料お試しを開始する」から学習できます!