はじめの一歩!ソースコード管理に必要なバージョン管理とは

はじめに

開発者の方には、お馴染みのRCS(Rivision Control System)が1982年に登場してから、30年余りが経過し、オープンソースソフトウェア(OSS)の Apache Project や、FreeBSD Project などを中心にさまざまなバージョン管理ソフトウェアが開発されています。ここでは、ソースコード管理に最適なバージョン管理ソフトウェアについて紹介します。

バージョン管理ソフトウェアとは

日々の業務において、私達は意識すること無くファイルの版数(バージョン)の管理を行っています。例えば、ファイルサーバー上にアップロードされたファイルや、ローカル上のファイルに対して、更新の際に古いファイルのファイル名に年月日などを付けて変更したり、新規に作成するファイルに年月日などを付けて作成するなど、意識すること無くバージョンを管理しようとしています。エクセルやワードであれば、作成者や変更履歴を記録することで、誰が行った変更なのか、いつ変更されたのかを知ることもできます。

しかし、現在業務で扱うデータは、テキストだけでは無く、Officeデータや映像、音声などのマルチメディアデータなど多岐に渡っています。これらのデータを全てバージョン管理するためには、先ほどの例のように年月日を付ける管理では到底対応できません。例えできたとしても、途方も無い手間、時間と専任担当者が必要になってしまいます。

これらの多岐に渡るデータのバージョン管理を行うソフトウェアが、バージョン管理ソフトウェアです。バージョン管理ソフトウェアは、ファイルの作成者、作成日付、更新日付、更新者、変更履歴、コメントなどをバージョン管理に必要な情報をリポジトリと呼ばれるデータベースとして保持します。このリポジトリに対して複数の担当者がアクセスし、ファイルの作成・更新・削除などの操作履歴(変更履歴)をリポジトリに記録します。このような管理を行うことで、ファイルに対する5W1Hを管理することができますので、ファイルに対する変更履歴を全て記録することが可能になっています。

このようにバージョン管理システムは、ファイルのライフサイクルを管理するためのソフトウェアであり、ソースコードの管理だけでなく、ウェブ開発に必要なHTML/CSSなどのテキストファイル、Office文書、FlashやMPEGと言ったマルチメディアデータなどの履歴管理を行うことができます。

バージョン管理ソフトウェアの分類

バージョン管理ソフトウェアは、リポジトリの管理方式の違いから下記の3つに分類されます。

単独型

ローカルマシン上のファイルのバージョンを管理します。

リポジトリに他の人がアクセスすることはできません。自分専用のリポジトリと言えます。
/bootcamp/wp-content/themes/_btcp/images/rivision01.png

集中型(クライアントサーバー型)

サーバー上のリポジトリを複数のクライアントがリモート操作して、バージョンを管理します。
サーバー上にリポジトリを作成し、リモートクライアントがサーバーに接続して利用する。クライアントサーバー間の接続には、SSH(Secure Shell) が用いられることが多い。

分散型とは異なり、サーバーに繋がっていないとリポジトリの変更(コミット)が行えません。
/bootcamp/wp-content/themes/_btcp/images/rivision02.png

分散型

サーバー上のリポジトリを複数のクライアントがローカルマシン上に複製し、変更結果ををリポジトリにマージすることで、バージョンを管理します。

サーバー上のリポジトリをクライアントが完全な形で複製し、クライアント側でファイルの操作を行い、変更結果をサーバー上にアップロード(マージ)する。リポジトリの複製をクライアント側で保持するため、ネットワークに接続できないオフライン状態でも、リポジトリの操作を行うことができます。
images/rivision03.png

代表的なバージョン管理ソフトウェア

代表的なバージョン管理ソフトウェアは、下記のとおりです。

分類 ソフトウェア 発表年 最新版 ステータス 備考
集中型 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の問題点を改善する目的で開発されました。
分散型 Mercurial(マーキュリアル) 2005年4月 2.8.1 (2013-12-01) 開発中 Python(パイソン) で実装されており、Mozilla Firefox のソースコード管理で使用されています。
分散型 Git(ギット) 2005年10月 1.8.5.1 (2013-12-03) 開発中 Linuxの開発者Linus Torvalds(リーナス・トーバルズが開発し、Linuxソースコードの管理に使用しています。

バージョン管理ソフトウェアの選び方

バージョン管理ソフトウェアは、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を皮切りに、時代の変遷とネットワークの急速な普及により、バージョン管理ソフトウェアの利用方法も単独型から集中型を経て分散型に進化しています。ソースコード管理は、開発者にとって避けて通れない道となっていますので、今回の記事を参考にして自分に合ったソフトウェアを見つけましょう。また、開発者以外の方もファイルのバージョン管理に、バージョン管理ソフトウェアを利用することで、煩わしい履歴管理から開放されますので、チャレンジしては如何でしょうか。バージョン管理ソフトウェアだけに限らず、ソフトウェアは使って見ないと解らないと思いますので、今回紹介したバージョン管理ソフトウェアを導入する記事を書きたいと思います。


社内サーバにリモートリポジトリを作るのも一つですが、「開発にまつわる面倒事」をこの際全部、tracpath(トラックパス)に任せてみませんか?
バージョン管理サービス・プロジェクト管理サービスの「tracpath(トラックパス)」では、
ユーザー5名、リポジトリ数3つまで、永久無料で利用可能です。

さっそく実務でも使って見ましょう。
自らも開発を行う会社が作ったからこそ、開発チームの「作る情熱」を支える、やるべきことに集中出来るサービスになっています。
エンタープライズ利用が前提のASPサービスなので、セキュリティも強固です。