システム開発の質を高めるバージョン管理ツールとは?

システム開発の質を高めるバージョン管理ツールとは?

From: リナックスアカデミー 松田航
新宿本校にて、、、

「バージョン管理」

という言葉をご存知でしょうか。

システム開発においては
欠かすことのできない手法です。

これが欠けてしまうと
開発作業は大きく混乱してしまいます。

今日は
大切なバージョン管理に必要な…

「バージョン管理ツール」

…についてお話しましょう。

バージョン管理は何のために?

多くの場合、
システム開発は1人では行いません。

複数のエンジニアが集まり
システムを作り上げてゆきます。

システムを作るにあたっては
設計書やプログラム、マニュアルなど

多くのファイルを作りながら
進められてゆきます。

全て1人でするならば…

どのファイルに
どんなことを書いたのか、
どのように修正したのかなど、

ファイルの内容を
ある程度覚えておくことができます。

しかし、
複数の人で開発をする場合は別です。

自分が書いたファイルが
知らない間に他の人に修正されたり、

プログラムが書き換えられたりと
ファイルの状態を把握できなくなります。

ファイルの状態を把握できないと
何が起こるかというと…

本来は
プログラムのバグを修正した
最新のファイルを納品しないといけないのに

バグのある古いファイルで納品し
システムトラブルが発生することもあります。

そのような問題を避けるために
ファイルのバージョン管理を行う…

「バージョン管理ツール」

…が、
ほとんどの開発現場で導入されています。

ファイルのライフサイクルを管理する

バージョン管理ツールとは
ひとことで言うと…

「ファイルのライフサイクルを管理するツール」

…だと言えます。

ファイルに対して…

誰が、いつ作成したのか?
誰が、いつ、どこを修正したのか?
ファイルが何回修正されたのか?

…などをデータベースで管理します。

プログラムだけでなく、
様々なフォーマットのドキュメントや、

画像ファイルや動画ファイル、
音楽ファイルに至るまで、
あらゆるファイルを管理することができます。

また、
複数の人が同じファイルを
同時に変更することがないように

誰が今、ファイルを変更しているか?

といったことも管理することができます。

バージョン管理ツールには
大きく分けて2つのタイプがあります。

■集中型

まず1つ目は「集中型」と呼ばれるタイプ。

これは、
ファイルのバージョン管理をする

「リポジトリ」

と呼ばれるデータベースのようなものが、
専用のサーバーで一元管理されているタイプです。

比較的古いバージョン管理ツールは
この集中型のものが多いですね。

■分散型

そして2つ目は「分散型」と呼ばれるタイプです。

分散型も集中型と同じように
リポジトリでファイルを管理しますが、

作業する人がそれぞれに
リポジトリのコピーを持つことで、

たとえば
ネットワークに繋がっていなくても
修正することができるというのが特徴です。

最近開発された
バージョン管理ツールは分散型が多いですね。

代表的なバージョン管理ツール

それでは、
代表的なバージョン管理ツールを見てみましょう。

■CVS

CVSとは
Concurrent Versions Systemの略称で、
並行バージョン管理システムを意味します。

1990年に開発された
比較的歴史の古いバージョン管理ツールです。

こちらは集中型の
バージョン管理システムになります。

■Apache Subversion

多くの開発現場で使われていた
CVSの問題点を改善するために作られたツールです。

2000年に開発され、
操作がCVSと似ていることから、

CVSからSubversionに
乗り換えるユーザが多くいました。

CVSと同じく
集中型バージョン管理システムです。

■Visual Source Safe

1994年にMicrosoft社が開発した
集中型のバージョン管理ツールです。

CVSやSubversionと違い
フリーウェアではなく商用ツールですが…

ファイルの破損といった
トラブルがけっこうあったツールですね。

商用だから良い!
というわけではありませんね。

■Git

2005年に開発された
分散型のバージョン管理ツールです。

Linuxカーネルの
ソースコード管理のために開発されたもので、

今では多くの開発者に使われている
人気のバージョン管理ツールです。

開発者は
Linuxカーネルの生みの親である
リーナス・トーバルズです。

もちろんフリーウェアです。

フリーで使えて質が良い…

やはり
オープンソースはいいですね(笑

開発の生産性と質を高めるために

この他にも
多くのバージョン管理ツールがありますが、

現在の主流は
SubversionとGitです。

Subversionのシェアは高いですが、
それを追うようにGitがシェアを広げています。

これらの
集中型と分散型の代表的なツールを
一度は触っておいたほうが良いでしょう。

私はプログラムを触らないから…

という方も、
一度は触っておいてください。

なぜなら、
管理するファイルはプログラムだけでなく、

業務資料や仕様書といった
さまざまなファイルが対象となるからです。

バージョン管理ツールを
活用することで…

システム開発の生産性を高め、
開発の質そのものを高めることに繋がるのです。

 

リナックスアカデミー
松田

PS
gitflow画像は下記からの引用です
http://artandlogic.com/2013/02/confessions-of-a-git-skeptic/

PPS
実践的な開発手法を習得するならこちら