バージョン管理とは
バージョン管理とは、ファイルの変更履歴を管理することです。
ファイルをいつ・誰が・どのように変更したのかの履歴をバージョンとして管理し、特定の時点まで戻したり、複数のバージョンを同時に開発したりすることが出来るようになります。
では、バージョン管理をするとどのようなメリットがあるのでしょうか?
変更内容を残すことができる
変更内容を記録することはソフトウェア開発では非常に重要なことです。
例えば、問題が起きた場合に『いつ、だれが変更をした』ということが分かればその本人に聞いたりすれば解決は早まります。
『この変更を入れた後に問題がおきた』ということが分かれば、その変更に原因を絞り込むこともできます。
差分を確認することが出来る
ある変更の前後の差を知りたい時、バージョンの比較をして変更点を確認することが出来れば、ファイルの変更と結果を明確に理解することが出来ます。
例えば、『あの機能どうやって追加したんだっけ?』とか『あの不具合の対応方法って何だっけ?』と思ったときにすぐにその変更点を見ることが出来ますし、不具合が起きる前後を比較すれば原因は確実にその差分にあるでしょう。
人の変更を上書きしないですむ
複数人で共通のソフトウェアを開発していると、同じ個所を別々に修正することがあります。
これを単純に後の人が上書きしてしまうと、先に変更した部分が消えてしまい、プログラムが動かなくなってしまいます。
バージョン管理システムを上手く使えていないチームでは『○○さん、あのファイル変更しました?動かないんですけど。』とか、そんな会話が聞かれます。
バージョン管理システムはこのようなことを避けるためにマージという作業を発生させて、意図せず人の変更を上書きしてしまうことを防ぎ、複数人の改修を併せた正しいプログラムを作成することが出来ます。
過去のバージョンに戻すことが出来る
バージョン管理システムは変更の履歴を残している為、以前の任意のバージョンに戻すことができます。
不具合が起きてしまったときや、開発した機能を元に戻したい時などに非常に役に立ちます。
並行で開発することが出来る
複数人で開発すると、担当Aさんは機能Aを開発、担当Bさんは機能Bを開発というように、同時に並行して別々の開発をすることがあります。
バージョン管理システムは、ブランチという機能を使って、複数の派生版を作成することができ、それぞれで開発を行い、それを一つに纏めるということが出来ます。
他にも、一つの機能を開発していたのだけれども、急遽別の機能を先に入れたいなんていうことも実際の開発では良く起きます。
その場合にもバージョン管理システムを利用すれば、一旦先に新たな機能を開発して、その後に改めて途中から以前に取り組んでいた開発をするのに戻る様なことが出来るようになります。
こうして、同時並行的にソフトウェアを開発し、安全にマージしていくことで大人数でスピード感のある開発が実現します。
ベースラインを引くことが出来る
バージョン管理システムではタグというを設定できます。
例えば、複数人で並行開発していた際に、全員の開発が纏まったらリリースしようなんて言うことがあります。
その様な場合に、複数の改修を纏めて一つのバージョンとして記録しておくことが出来ます。