バージョン管理システム 【VCS】 Version Control System

概要

バージョン管理システム(VCS)とは、ファイルの変更履歴の保存・管理をソフトウェア。管理下のファイルについて、過去の版の参照や、複数の版の比較、差分の検出などをうことができる。

管理するファイルの内容をいつ誰がどのように変更したのか時系列で記録に残し、過去のある時点の内容を参照したり、現在の版を破棄してその時点の状態に戻したり、別の時点の版との違い(差分)を調べたりすることができる。

主に管理されるのはテキストファイルで、ソフトウェア開発においてコンピュータプログラムソースコードプログラミング言語で書かれたプログラム)を管理するのに用いられることが多い。仕様上は画像などバイナリファイルを含む任意の形式のファイルを登録できるようになっていることが多い。

リポジトリ

ファイルシステムと同じように複数のファイルを階層的なディレクトリに整理でき、全体をまとめてプロジェクトとして管理することもできる。ファイルとその変更履歴やバージョン番号リビジョン)などの管理情報は「リポジトリ」(repository)と呼ばれる一種のデータベースにまとめて集積される。

利用者クライアントソフトなどを用いてリポジトリからファイルを取り出す操作を「チェックアウト」、編集したファイルリポジトリに書き戻す操作を「チェックイン」という。

リポジトリインターネット上のサーバに設置すれば、互いに遠隔地にいる複数人で共同作業したり、広く一般に開発・編集への参加を募ることができる。オープンソースソフトウェアの多くはネット上にリポジトリを設置して内容を公開したり開発への参加を受け付けている。

リポジトリ利用者の手元に複製する方式の分散バージョン管理システムでは、利用者側に複製されたリポジトリを「ローカルリポジトリ」、プロジェクトを管理する大本のリポジトリを「中央リポジトリ「共有リポジトリ」「リモートリポジトリ」などと呼ぶ。

ブランチとマージ

ファイルプロジェクトの変更履歴の流れをある時点を起点に分岐させ、派生版を作成することができる。分岐した時系列を「ブランチ」(branch)という。分岐したブランチを再び元の流れに統合(マージ)できるシステムもある。

開発中のソフトウェアからリリース用の版を分岐させて機能追加などを凍結して安定させたり、ある開発プロジェクトの内容を受け継いで別の目的のプロジェクトを立ち上げたりするのに用いられることが多い。

複数人での編集

バージョン管理システムの多くは複数人が一つのプロジェクトに参加することを想定して開発されており、同時並行で編集をう際に一貫性を保つ仕組みが導入されていることが多い。

代表的な方式としては、編集時に他の人によるファイルの変更を禁止(ロック)し、編集終了時にロックを解除する方式と、各利用者の手元にファイルを複製してそれぞれ編集し、システムに変更内容を送信して反映(マージ)させる方式がある。前者を集中管理(集中型)、後者を分散管理(分散型)と呼ぶこともある。

主なシステム

著名なバージョン管理システムにはオープンソースソフトウェアとして公開されているものが多く、集中型の「CVS」(Concurrent Versions System)や「Subversion」(SVN)、分散型の「Mercurial」や「Git」などがよく知られている。米マイクロソフトMicrosoft)社の「Visual SourceSafe」(VSS)のような商用ソフトウェア製品もある。

近年では、簡単な利用者登録でインターネット上にリポジトリを設置して使用することができるホスティングサービスも広く普及しており、多くのオープンソースソフトウェアなどの公開リポジトリが最大手の「GitHub」で運営されている。

(2020.6.14更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる