« 無花果 | メイン | レッドリング・オブ・デス orz »

2008年09月06日

バージョン管理システム

開発に役立つかもしれないことシリーズ1。
シリーズ化するかどうかわかんないけど。

使っているソフトは何度か変わったけど、入社してしばらくした後からずっと使っているシステム。
多人数でのソフト開発ではこれがないと相当辛い。
ソフト開発以外にもかなり有用。

機能をざっくり言うなら、編集しているファイルがいつの状態へも戻せると言うもの。
厳密には、いつでもではなく、過去に登録した状態のみだけど。

作業途中のファイルを別名で日付や番号をつけて保存しておいて、後でそのファイルに戻したりしている人は、そのような作業がより手軽に出来るシステムと考えるといい。
別名ではなく、フォルダごとコピーして日付のフォルダにしたり、フォルダを圧縮して日付をつけたりしている人も同じ。

いつでも元に戻せると言うのは、単純にミスった時や変更を取りやめたい時のみに効果を発揮するわけではない。
プログラムの場合は、少し変更すると動かなくなったりするので、変更をためらうことがある。
でも、そのような変更がいつでも取り消せるのなら、動かなくなることを恐れずに大胆に変更を加えることが出来る。
これはプログラムに限らず、他のデータでも同じ事が言えると思う。

バージョン管理以外に、バージョン管理システムが担う機能として、データ共有がある。
多人数で共同作業をする時、複数のファイルを相互に編集したりすることがあるが、バージョン管理システムがないと変更を加える時、声を掛け合いながら同じファイルを編集しないようにしないといけない。
テキストファイル以外の場合、同じファイルを変更してしまうと、両方の変更を反映するのは難しいので、そのようなデータの場合は同時に作業するのを避けないといけないのは、バージョン管理システムを使っても同じ。
ちなみに Excel では、共同作業のために共有フォルダにおいて同時に作業するためのオプションがあって、同じセルに変更を加えないのであれば、同時に編集できる。
同じセルに変更を加えた時は、編集を取り消すか、不整合が起きないように修正したり出来る。
そのため同時に Excel ファイルを編集するような用途では、共有にファイルを置いておいたほうが作業はしやすい。
ただ、バージョン管理は出来ないので(Excel で履歴を取らせる事も出来るがファイルがどんどん大きくなっていき、そのうち破綻する)、バージョン管理システムを併用した方が良い。

バージョン管理システムには、ロック方式とコピー、マージ方式の二種類ある。
ロック方式は、同時に編集権を得られるのは一人だけで、誰かがそのファイルを編集している時は、他の人はそのファイルを編集できない。
コピー、マージ方式は、誰でもどのファイルでも編集できる。
ただ、同時に同じファイルを編集していた場合、後からバージョン管理システムに登録(チェックインやコミットと言う)しようとした人は、前回取得後他の人が修正してしまっていることを知らされる。
この場合、他の人の修正と自分の修正を混ぜて齟齬が出ないようにする必要がある。
このような作業をマージと言うが、非生産的な作業に加え、かなり精神力を使う。
このマージがこの方式の欠点だけど、同時に編集できる以上やむをえない。
では、ロック方式にすればいいかというと、その場合編集権を持っている人がその権利をつかんだまま休んだりすると、そのファイルを編集したいのに出来なくて困ることがある。
複数人で同時に作業する効率を高めようとしたら、コピー、マージ方式になってしまう。
ただ、マージ作業が出来ないようなバイナリファイルを扱っている場合は、ロック方式の方がやりやすいのではないかと思う。
また、少人数で作業する場合もロック方式でもそれほど困らない。

マージを避けるために、実作業する時は、変更を加える直前に最新状態の取得(チェックアウト)を行い、出来るだけ編集期間を短くして同じファイルを同時に編集しないようにしたり、大規模な修正を加える場合は周りに声をかけて、編集中の人がいないか確認し、いたら編集が終わるのを待ち、自分の作業中は他の人にそのファイルを触らないようにしてもらったりする。
なんだか本末転倒だけれど、マージを避けるには仕方ない。
後、大体早い者勝ちルールで作業する。
つまり、後からコミットした人がマージ作業をすることになる。
だから、何気なく隣の人のディスプレイを見た時に、同じファイルを編集していたら、やばい!急いで作業しないと!となる。

バージョン管理システムで使ったことのあるのは、Visual SourceSafe, StarTeam, Subversion, CVS 。
前二つは市販のもの、後二つはフリーソフト。
Visual SourceSafe と Subversion が好み。
Subversion は、クライアントソフトの TortoiseSVN の使い勝手が良いので、使いやすいと感じる。
Visual SourceSafe はロック方式。なんだかんだあったけど、結構使いやすかった印象。


次は、issue 管理システム について書こうかな。

投稿者 Takenori : 2008年09月06日 23:48


トラックバック

このエントリーのトラックバックURL:
http://kaede-software.com/mt/tb-ping.cgi/1684


Total : Today : Yesterday :