はじめに
開発者の方には、お馴染みのRCS(Rivision Control System)が1982年に登場してから、30年余りが経過し、オープンソースソフトウエア(OSS)のApache Projectや、FreeBSD Projectなどを中心にさまざまなバージョン管理ソフトウエアが開発されています。ここでは、ソースコード管理に最適なバージョン管理ソフトウエアについて紹介します。
バージョン管理ソフトウエアとは
日々の業務において、私達は意識すること無くファイルの版数(バージョン)の管理を行っています。例えば、ファイルサーバー上にアップロードされたファイルや、ローカル上のファイルに対して、更新の際に古いファイルのファイル名に年月日などを付けて変更したり、新規に作成するファイルに年月日などを付けて作成するなど、意識すること無くバージョンを管理しようとしています。エクセルやワードであれば、作成者や変更履歴を記録することで、誰が行った変更なのか、いつ変更されたのかを知ることもできます。
しかし、現在業務で扱うデータは、テキストだけでは無く、Officeデータや映像、音声などのマルチメディアデータなど多岐に渡っています。これらのデータを全てバージョン管理するためには、先ほどの例のように年月日を付ける管理では到底対応できません。例えできたとしても、途方も無い手間、時間と専任担当者が必要になってしまいます。
これらの多岐に渡るデータのバージョン管理を行うソフトウエアが、バージョン管理ソフトウエアです。バージョン管理ソフトウエアは、ファイルの作成者、作成日付、更新日付、更新者、変更履歴、コメントなどをバージョン管理に必要な情報をリポジトリと呼ばれるデータベースとして保持します。このリポジトリに対して複数の担当者がアクセスし、ファイルの作成・更新・削除などの操作履歴(変更履歴)をリポジトリに記録します。このような管理を行うことで、ファイルに対する5W1Hを管理することができますので、ファイルに対する変更履歴を全て記録することが可能になっています。
このようにバージョン管理システムは、ファイルのライフサイクルを管理するためのソフトウエアであり、ソースコードの管理だけでなく、ウエブ開発に必要なHTML/CSSなどのテキストファイル、Office文書、FlashやMPEGと言ったマルチメディアデータなどの履歴管理を行うことができます。
バージョン管理ソフトウエアの分類
バージョン管理ソフトウエアは、リポジトリの管理方式の違いから下記の3つに分類されます。
単独型
ローカルマシン上のファイルのバージョンを管理します。
リポジトリに他の人がアクセスすることはできません。自分専用のリポジトリと言えます。集中型(クライアントサーバー型)
サーバー上のリポジトリを複数のクライアントがリモート操作して、バージョンを管理します。
サーバー上にリポジトリを作成し、リモートクライアントがサーバーに接続して利用する。クライアントサーバー間の接続には、SSH(Secure Shell)が用いられることが多い。
分散型とは異なり、サーバーに繋がっていないとリポジトリの変更が行えません。分散型
サーバー上のリポジトリを複数のクライアントがローカルマシン上に複製し、変更結果ををリポジトリにマージすることで、バージョンを管理します。
サーバー上のリポジトリをクライアントが完全な形で複製し、クライアント側でファイルの操作を行い、変更結果をサーバー上にアップロード(マージ)する。リポジトリの複製をクライアント側で保持するため、ネットワークに接続できないオフライン状態でも、リポジトリの操作を行うことができます。
代表的なバージョン管理ソフトウエア
代表的なバージョン管理ソフトウエアは、下記のとおりです。
分類 | ソフトウエア | 発表年 | 最新版 | ステータス | 備考 |
---|---|---|---|---|---|
単独型 | RCS(Rivision Control System) | 1982年 | 5.9.2 (2013-11-28) | 開発中 | Shell Scriptなどのちょっとしたソースファイルの管理に利用されています。 |
集中型 | CVS(Concurrent Versions System) | 1990年 | 1.11.23 (2008-05-08) | 開発終了 | FreeBSD Projectで長年使われていましたが、2012年以降はSubversionでソースコードを管理しています。 |
Microsoft Visual SourceSafe(VSS) | 1994年 | VSS 2005 (2005年10月) | 開発終了 | Windowsの開発環境 Visual Stdioとセットで利用されていましたが、現在は開発もサポートも終了しています。 | |
Apache Subversion(SVN) | 2000年 | 11.8.5 (2013-11-24) | 開発中 | CVSの問題点を改善する目的で開発されました。 | |
分散型 | Git(ギット) | 2005年10月 | 1.8.5.1 (2013-12-03) | 開発中 | Linuxの開発者Linus Torvalds(リーナス・トーバルズ)が開発し、Linuxソースコードの管理に使用しています。 |
Mercurial(マーキュリアル) | 2005年4月 | 2.8.1 (2013-12-01) | 開発中 | Python(パイソン)で実装されており、Mozilla Firefoxのソースコード管理で使用されています。 |
バージョン管理ソフトウエアの選び方
バージョン管理ソフトウエアは、RCSを除いて、動作するサーバーOSおよび、クライアントOSを検討して導入する必要があります。Windows上で動作するCygwinは、パッケージを追加することによって、全てのソフトウエアを導入できますが、Windows用の専用クライアントも開発されていますので、使い勝手なども加味した上で選ぶ必要があります。
また、Windowsで利用できるTortoiseCVSを始めとするTortoiseシリーズは、エクスプローラー拡張によってファイルへのアクセス性を向上させています。
ソフトウエア | サーバー | クライアント | 備考 | ||
---|---|---|---|---|---|
UNIX | Windows | UNIX | Windows | ||
RCS | 必要無し | 利用可能 | Cygwin | Cygwinを利用する際には、Cygwin Setupを使用して、パッケージをインストールする必要があります。
また、UNIXではOSごとに用意されたパッケージ管理コマンドを使用してインストールする必要があります。 |
|
CVS | 利用可能 | Cygwin | 利用可能 | Cygwin | |
TortoiseCVS | |||||
Subversion | 利用可能 | Cygwin | 利用可能 | Cygwin | |
TortoiseSVN | |||||
Git | 利用可能 | Cygwin | 利用可能 | Cygwin | |
msysgit | msysgit | ||||
TortoiseGit | |||||
Mercurial | 利用可能 | Cygwin | 利用可能 | Cygwin | |
Mercurial | Mercurial |
まとめ
ここまで、ソースコード管理に最適なバージョン管理ソフトウエアについて紹介しました。1982年に登場したRCSを皮切りに、時代の変遷とネットワークの急速な普及により、バージョン管理ソフトウエアの利用方法も単独型から集中型を経て分散型に進化しています。ソースコード管理は、開発者にとって避けて通れない道となっていますので、今回の記事を参考にして自分に合ったソフトウエアを見つけましょう。また、開発者以外の方もファイルのバージョン管理に、バージョン管理ソフトウエアを利用することで、煩わしい履歴管理から開放されますので、チャレンジしては如何でしょうか。バージョン管理ソフトウエアだけに限らず、ソフトウエアは使って見ないと解らないと思いますので、今回紹介したバージョン管理ソフトウエアを導入する記事を書きたいと思います。