検索

キーワード


開発現場で必須!バージョン管理システムとは?メリットや主要なシステムを初心者向けに優しく解説

  • 公開日:2021-01-28 18:38:10
  • 最終更新日:2021-02-12 16:05:45
開発現場で必須!バージョン管理システムとは?メリットや主要なシステムを初心者向けに優しく解説

バージョン管理システムの概要および導入するメリットと主要なシステムについて

こんにちは。javaの開発を中心に請け負っているフォワードソフト所属のエンジニアの田口です。

この記事では、エンジニアには必須の知識ともいえるバージョン管理システムについて、初級者向けの簡単な解説をしていきます。

主に以下の内容について解説します。

・バージョン管理について

・バージョン管理システムとはなにか

・バージョン管理システムを使うメリット

・現場で使われている主要なバージョン管理システムの紹介


バージョン管理とは

バージョン管理を一言で表すと、一つ以上のファイルに加えられていく変更の履歴を保存しておき、後から特定のバージョンのファイルを呼び出せるようにしておくことです。変更を加える時にはバックアップを取っておくことと言い換えてもいいでしょう。

なぜこのようなものが必要なのでしょうか。


たとえばwebデザインを製作している時、頻繁に変更を加えて検証するフォントやレイアウトをその都度記録しておかないと、後から「やっぱり初めの方のあのデザインがよさそうだ」となった場合にその時点まで戻ることが困難になります。

また、この時複数人でファイルを共有して作業していた場合、誰がいつどんな変更を加えたかといった情報が保存されていないと、誰かが変更を加えた影響でバグが発生したけれど、それがいつ誰の手によって加えられた変更によるものなのかわからず、問題の修正が難しくなる他、問題が起こる前の状態に戻すこともできません。


こうした問題を回避するための手段がバージョン管理と呼ばれるものです。


効率の悪いバージョン管理と専用ツールの必要性

バージョン管理を考慮した制作は作業の効率化に非常に役立ちますが、管理方法を間違えると逆効果になることもあります。

たとえば以下のようなケースです。


変更を加えるごとに別ファイルで保存しているためバックアップはできていますが、ファイル名が紛らわしいためどれが最新版なのか分かりづらいです。

さらに、それぞれのファイルでどこが違うのかも分からないため、いちいち中身を確認しなくてはなりません。また、今回のようにちょっとしたものならまだいいのですが、複数のファイルを同じようにバージョン管理をしようとするとそれだけファイル数も増え、現行のバージョンのファイルを探すのに非常に手間がかかるようになってしまいます。

このように、バージョン管理は確かに作業の効率と安全性を高めますが、一歩間違えると無駄な作業を増やし、逆に効率を悪くすることにも繋がるので、慎重に扱う必要があります。

そこで、ファイルの変更を自動で記録し、バージョン管理に関する手間を削減してくれるツールが開発されました。

それがバージョン管理システムです。


ここまでのまとめ

・ファイルに変更を加える際に伴う問題を防ぐため、加えられた変更を記録しておくことをバージョン管理という。

・バージョン管理を楽にするために開発されたツールをバージョン管理システムという


バージョン管理システムの概要

バージョン管理システムは、ファイルを変更した「時間」「人」「箇所」「理由」の情報をリポジトリという専用の記憶領域に記録します

これにより、過去のある時点でのファイルの状態を復元したり、ファイルにどんな変更が加えられたかの確認を行うことができます。保存ファイルの種類はソースコードだけではなく、設定ファイル等環境に関わるファイルも保存することができます。


補足:リポジトリについて

ファイルの変更情報を管理するためには、どのファイルの情報を管理するのかPCに教えてあげる必要があります。そのために作成されるのがリポジトリです。あまり聞きなれない言葉ではありますが、リポジトリは管理対象をPCに教えるためのただの入れ物にすぎません。リポジトリを作成すると、PCはバージョン管理システムを使ってその中に含まれるファイルの変更情報を管理してくれるようになります。


管理方式には「集中管理方式」「分散管理方式」の2種類があります。

本記事では詳細な説明は省きますが、2つの大きな違いはマスター(メイン)のリポジトリを中央サーバの一か所で集中管理するか、あるいは各ローカルの端末に分散させるかにあります。分散管理方式のバージョン管理システムは現代の複数人での開発に適しており、中でも代表的なGitが現在主流となっています。

バージョン管理システムの大まかな概念図

バージョン管理システムのおおまかな概念図



概要が理解できたところで、具体的なメリットについて解説していきます。


バージョン管理システムを使用する3つのメリット

メリット1 ファイルの変更履歴を残せる

開発の進捗の把握や、問題点の発見がしやすくなる

ファイルの変更履歴が全て記録されるため、バージョンを遡って調査することができます。これにより、どんな機能が実装されたかの確認や、バグの原因となった機能の発見が容易になり、効率的に作業できます。


メリット2 好きなバージョンに遡れる

なかったことにできる

お試しで作ってみた機能が「やっぱりいらない」となった時や、誤ってファイルを上書きしてしまった時などもバージョンを遡れば変更をなかったことにできます。


メリット3 共同開発が安全にできる

常に最新のバージョンで更新できる

古いバージョンのファイルを誤って反映し、ファイルのバージョンを古くして品質を落としてしまうこと(デグレード)を防ぐ仕組みが備わっています。

担当箇所を独立させ、他人の変更の影響を無くせる

プロジェクトを分岐させ、一部のファイルで独立した派生プロジェクト(ブランチ)を作成し、変更作業完了後に再び結合マージさせることができるため、他人の変更の影響を受けずに作業することが可能です。


主要なバージョン管理システム

最後に開発現場で広く使われているバージョン管理システムの紹介をします。

各管理方式の具体的な違いについては以下の記事をご覧ください。

GitとSVN、CVS、なにが違う?バージョン管理システムの違いについて


集中管理方式

CVS(Concurrent Versions System)

オープンソースで作成された、初めてのクライアントサーバー型バージョン管理システムです。

非常に歴史があり、様々なOSで利用できる他、統合開発環境として人気が高いEclipseにもクライアント機能が内臓されています。

しかし近年では、Git等他のバージョン管理システムの台頭の影響で需要が少なくなっています。

SVN(Apache Subversion)

CVSを参考に改良してつくられたバージョン管理システムです。基本的なコマンドはCVSと共通なので、CVSしか知らない人でも簡単に扱えた他、CVSではできなかったことを実現しているため、集中管理方式バージョン管理システムの主流となりました。

分散管理方式

Git

現在多くの現場で採用されている分散管理方式のバージョン管理システムです。

Gitについての概要は下記の記事で解説しています。

【初心者向け】バージョン管理システムの定番!絶対知っておきたいGitの特徴について解説


また、Gitとよく併用されるサービスとして、GitHubとGitLabというものがあります。

両者についての概要を下記の記事で解説しています。

GitHubとGitLabの違い|Gitでよく使用される2つのサービスについて解説


【著者】

田口

元建築・リフォーム営業のエンジニア。現在はDXの需要に合わせてネットワークやクラウド、セキュリティといったインフラ方面の勉強中。