VSSなんて使っちゃいけません

SCM(ソースコード管理システム)も数あれど、俺が実際に使ったことがあるのは3種類だ。CVS, Subversion, そしてVSS(Visual Source Safe)である。

CVSは素晴らしい。CVSバージョン管理モデルが大きな成功を収めていることは、あらゆるオープンソースプロダクトのSCMとして採用されていることからもわかるし、俺も実際に使ってみて同じ結論に達している。

そして、Subversionは"より"素晴らしい。CVSの素晴らしいモデルを引き継ぎ、かつ旧式になったCVSで問題視されているあらゆる欠点を克服したSubversionは、もう非の打ちようがないほどに(ホントは少しある)優れたツールだ。どのSCMを使ってよいか悩んでいるようであれば、迷わずSubversionを使いなさい、と自信を持って勧められる。CVSを使っている人も、一日も早くSubversionに乗り換えたまえ!

さて、VSSだ。マイクロソフト謹製のSCM。俺はこれが嫌いだ。

まず、悲観ロック機構を採用しているのが気に入らないのだが、これはプロダクトの性能ではなくアーキテクチャの話になるし、多分に宗教的な側面があるので、見送ろう。

致命的な問題は、「金がかかる」、「プラットフォームがWindowsに限られる」の二点だ。

VSSは有償であり、しかも高価だ。だから、導入にも金がかかるし、導入後もエンジニアを増員するたびにクライアントが必要になり、そこで再び金がかかる(ライセンスの形態にもよるが)。過去の現場では、VSSクライアントのライセンスを購入する余裕がないために、自分で最新のコードを取得できない、という腐った環境になっていた。

さらに、「Windows上でしか使えない」というのも面倒がある。つまり、UNIX系のマシンからチェックアウトできないってことだろう?サーバ系アプリケーションは未だにUNIXサーバ上で動かすことが多い。ナイトリービルドを行うことは近代ソフトウェア開発でのベストプラクティスの一つだが、当然動作環境に近い環境でビルドしたい。でも、VSSを使っている限りそれは非常に面倒になる。

では、VSSの利点はなにか?というと、Visual Studioとの親和性が高いこと(というか、VSの一部だ)ぐらいしか思いつかない。

予算が潤沢なプロジェクトで、Visual Studioを使って、Windowsプラットフォームのみで動作するアプリケーションを作る、という環境であればVSSも悪くない。それ以外のケースでは、VSSを導入するメリットは無い。

Webを検索してみると、VSSの欠点について良く説明しているサイトが見つかったので、こちらを読むと、より理解が深まる。オンラインでなければソースを編集できない!そうだよ、そうなんだよ!呆れを通り越して怒りすら感じる!

http://lowlife.jp/nobonobo/zine/18/24.html

そういうわけで、VSSなんて使っちゃいけません。Subversion > CVS >>>>> VSSの順で勧めよう。おっと、これは間違いだ。Subversion > CVSの順で勧め、VSSは勧めない。