新人技術者のためのロジカル・シンキング入門(4) ―― 直したバグがゾンビのごとく復活する
【2】管理ツールの採用は避けられない(1/2)
ここではまず,「チーム開発においてはなんらかの管理ツールの採用が不可欠である」というかなりあたりまえの結論を採用したいと思います.図5にチーム開発向けソース管理の全体像をまとめました.
図 5 チーム開発向けソース管理の全体像
まず,ミスは入り口と出口で起こりうることを整理する.コンフリクトは複数人が同じファイルにアクセスすることによって起こる.これらが管理ツールとその運用ルールによってどのように防げるかを,次に検討する
ツールをいっさい用いずに,なんらかの管理ルールのようなものだけで乗り切ろうとすると,どんなにがんばってもどこかで破たんをきたします.数人で構成されるチームなら,まだなんとかなるかもしれません.しかし,複数のチームが集まって数百人にのぼる人数で作り上げるプログラムにまったく管理ツールが導入されていないとしたら,もはやそれは自殺行為です.
次のような例を想像してみましょう.計10チームで開発を行っており,各チーム合計3人ずつが1週間でソース更新を行うとします.
まず問題となるのが,各チーム内のソース管理です.チームのメンバは,各人がまちがいなく最新のソースを入手し,改造後は正しく管理元を更新しなければなりません.なおかつ,コンフリクトを防ぐための完ぺきなルール作りとその徹底が必要となります.だれがどのような順番で改造を開始し,更新しても,矛盾や上書きが生じないことが必要になります.このような事態に対して,管理ツールを導入せずになんらかの手順のルール化で対応しようとした場合,チーム内の人数が増えれば増えるほど難易度が増していきます.
さらに問題となるのはチーム間の整合性です.通常は,チームをまたがってソースを共有することはないでしょうから,コンフリクトの心配はないかもしれません.しかし,最新のソースの組み合わせがどれなのか,ということについて,各チームがまちがいなく把握できるしくみが必要です.各チーム内でもそれがおぼつかない状況で,チームをまたがってそれができるのでしょうか?
軽く想像してみただけでも途方もない話になることはおわかりいただけると思います.
● ツールの導入だけですべてを解決することはできない
問題は,「管理ツールを導入すれば,即座にすべての問題が解決するのか?」ということです.それを検討するために,管理ツールを導入すると,何が保護されるのかを考えてみることにしましょう.言い換えれば,管理ツールを導入しても,それだけでは防げないミスはどういうものかを考えることになります.これは,管理ツールで救えるミスと導入しただけでは救えないミスを切り分けることで,導入後のルール作りの基礎とするのが目的です.
1) 入り口のミス
まず,ソース・コードを取ってくる入り口のミスから考えてみます.図2と図6を比べてみてください.管理ツールが導入されていれば,ソース・サーバに最新版があるのでまちがいようがないように思われます.しかし,ソース修正に夢中になり,ローカル・マシンにあるソースの組み合わせを「最新版のつもり」で改造してしまう人が現れたらどうなるでしょう? ソースを修正して提出したときに問題が発生しうることになりますね.なぜなら,改造する対象のソースが,ソース・サーバで管理されていたソースの最新版と異なるかもしれないからです.
したがって,まずソースを取ってくる入り口の部分では,「改造前にかならずソース・サーバからソースを取ってくること」というルールを徹底しなければならないことがわかります.管理ツールにも,変更が開始されると,ソース・サーバ上にそのことが記録されます.これがないと,管理ツールの外で改造が始まることになってしまいます.