よいバージョン管理ツールを使う理由(>_<)

「よいバージョン管理ツールを探しているのですが、お奨めはありませんか?」といった類の質問をよく耳にする。

しかし、そこには大きな落とし穴がある。バージョン管理ツールはしっかりとしたソフトウェア構成管理を実現するための手段であるという点を理解した上でこのような質問をされる方はそう多くはない。要するにバージョン管理ツールを使用すること自体を目的としているケースが非常に多い。ファイルサーバーにソースコード一式を日付毎に保管してはいるのだが、実際は開発者のワークステーション毎に異なったバージョンが存在していてデグレードが繰り返し発生するような状況をバージョン管理ツールの導入で一気に解消できると勘違いしていたりするがこれは大きな間違いだ。

例えば、[いつも動作可能なソフトウェア一式をどのワークステーションでも簡単に取得することが出来る」というような目的を実現するためには何が必要だろうか?

リポジトリとは分離されたプライベートワークスペースが提供できるバージョン管理ツールを使用すれば、自分自身の開発環境を他のメンバーによる変更から分離することは可能だ。しかし、自分の行った変更がシステムを壊さないということを保証するためにはプライベートシステムビルド、つまり常時結合時に使用しているビルド構成とかけ離れていないビルド構成(日時ビルドにそれなりの時間がかかってしまう場合は短時間でビルドが完了するような構成を使用する必要があるかもしれない)を使用したワンステップビルドが自分のワークステーションで実行できなくてはならない。そして、自分の変更をリポジトリにコミットする前に他のメンバーの変更を取り込んだ上でビルドスクリプトを自分のワークステーションで実行し、何も壊れていないことを確認できた場合にだけコミットするというルールに従って開発メンバー全員が自主的に行動することが何より重要となってくる。

目的を明確にした上でそれを実現するための手段のひとつとしてバージョン管理ツールを使用するといった指針がなければ、よいバージョン管理ツールを使ったところで何も変わらない。目的を明確にする方法がわからなければ、この書籍から多くのヒントを得ることができるだろう。

パターンによるソフトウェア構成管理 (IT Architects’ Archive―ソフトウェア開発の課題)

パターンによるソフトウェア構成管理 (IT Architects’ Archive―ソフトウェア開発の課題)