バージョン管理とは、システムの変更を管理することだ。バージョン管理をするシステムをバージョン管理システム(version control system)という言う。
バージョン管理システムは現代のエンジニアにとってなくてはならないシステムになっている。
このページでは「バージョン管理とは?」について解説をしてみた。参考にしていただければ幸いだ。
バージョン管理とは?
バージョン管理とは、プロジェクトの中で更新されていく様々な成果物の変更の履歴を成果物そのものも含めて記録することだ。
ここでいう成果物はプログラムが書かれたプログラムやファイル、画面定義ファイル、設定ファイルやXMLファイルなどプロジェクトに関係する様々なものを指す。
もっというと、他のどんなファイルでも良い。
分かりやすくするためにプログラムが書かれたプログラム・ファイルのバージョン管理を考えてみよう。
ある機能を追加するためにプログラム・ファイルは書き換えられる。この時記録されるのは、いつ、誰が、どこに、どのような変更を行ったかである。
どのような変更を行ったかが分かるようにプログラム・ファイルそのものの内容も記録される。こうして、後でバージョン管理によって記録された情報からプログラム・ファイルに対する変更がどのようなものかを誰もが知ることができたり、以前のバージョンのプログラム・ファイルの内容に戻したりすることができる。
これらの管理を自動化したツールがたくさんある。代表的なものとしては、Git、Subversion、CVSなどである。一般的にバージョン管理はこれらのツールを使って行われる。
バージョン管理による変更の記録
実際のバージョン管理によってどのように変更が記録されるかを見てみよう。3人のプログラマがそれぞれプログラム・ファイルを変更したとする。その変更がバージョンごとに記録される。
バージョン管理を利用した例
では、このように記録された変更の記録をどのように利用することができるか例を用いて見てみよう。
最初の例は、担当のプログラマが変わった場合である。田中さんが突然退社したため中村さんがプログラム-01の機能の追加を新たに担当するようになったとしよう。この時、中村さんは退社した田中さんから直接聞かなくてもバージョン管理からこれまでだれが、いつ、どのような変更を行ったかを知ることができる。
次の例は誤ってコードを修正したり削除したりしてしまった時だ。エディタの編集機能を使ってある程度コードを前の状態に戻すことができる。しかし、そうできなくてもバージョン管理によってプログラム・ファイルが保存されているので、直前のバージョンに保存されたファイルからソースコードを復元させることができる。
次の図はプログラマの田中さんが誤って修正してしまったコードを直前のバージョンに戻しているところである。
最後にプログラムにバグが見つかった時について考えてみよう。
バージョン管理がなされていれば、過去に保存したプログラム・ファイルを使ってテストすると最初はなかったバグがどのバージョンから発生しているかを調べることができる。
そして、バグがなかったバーションとバグが発生したバージョンのソースコードを比較すると、バグの原因と関係あるコードを見つけることができる。
次の図は、テスト結果からバージョン1.0 にはなかったバグがバージョン1.1で発生していることを示している。つまり、バージョン1.0から1.1への変更の間にバグの原因があることが分かる。
この他にもバージョン管理にはたくさんの活用方法がある。ぜひ理解を深めてもらいたい分野である。
まとめ
このページではバージョン管理とは何かについてまとめてご紹介してきた。エンジニアにとって必要不可欠な技術だ。ぜひ使い方を覚えていっていただければと思う。