プロジェクトマネージャ(=PM)の石出さんは今日も悩んでいます。 開発チームのスタッフからさまざまな問題が石出さんの元に集まってくるからです。例えば、こういう感じで……。
「コンパイルができません。ライブラリが違っているようです。でもライブラリはちゃんとあるんです。なぜでしょうか?」。調べてみると単純なバージョンの問題だった。このような問題は最近多い気がする。オープンソースのプロダクトを利用し始めてから特に多い気がする……。
「その障害は最新バージョンでは修正されていますよ」あるいは「その障害はいまのバージョンでは再現しないので大丈夫だと思います」というスタッフがいる。このような状況ではまともに品質を管理できない。どうしたらよいのだろう。
こういうやりとりもある。
「○×機能が実装されていませんよ」「(担当している)Aくん、どうなっているの?」「すみません。最新のコードにしていませんでした」「最新のコードにしたら以前テストした機能が障害になっちゃったよ」。……このようなことでは統合テストが進まない。
さらには、「ビルドが大変で時間がかかります」「障害が修正された後にビルドするために時間がかかります」という話を聞いた。ビルドするのにそんなに時間がかかるのだろうか。ビルドしている間はテストをするメンバーの手が止まってしまうことも少なくない。何とかならないのか。
それにしても、これらの問題の1つ1つは目くじらを立てるほどの問題ではないが、多く起こってくると大変だ。とはいえ、プロジェクトの存立を揺るがすほどの大きな問題ではないから根本的な対処をするといっても、大した時間もお金もかけられそうにない。
なるほど、石出さんはソースコードの管理およびビルドの管理について、かなり深刻に悩んでいるようです。この悩みを解決するにはどうすればいいのでしょうか。まずはこれらの問題点を整理してみましょう。
石出さんが抱えている問題は、ライブラリ管理、バージョン管理(ベースライン管理)、ビルド環境、ビルドの自動化という4つの分野に分けることができます。
プロジェクトで利用しているライブラリ(商用、自社、オープンソース)のバージョンの違いによるインターフェイスの不整合が起こることがあります。このことによってコンパイルができなかったり、プログラムの書き直しが必要になったりします。
特に、オープンソースのライブラリを利用している場合に多くこの問題が発生します。「環境設定定義書」などの文書によってライブラリのバージョンは指定してもプログラマが独自にダウンロードしたり、外部サイトでは指定したバージョンがダウンロードできなくなったりしてこの不整合が発生します。
テストしたコードの組み合わせが分からなくなっており、どの障害が修正されているのか、どのコードに対してテストをしているのか分からず、障害数を利用して品質を管理することもできません。また、顧客からの問い合わせに対して障害を再現できず最新バージョンにアップデートしてもらうなどの方法しか取れません。
ビルドを各個人のマシンで行っていると、ある人(開発のリーダー)のマシンに最新のソースコードが集まるようになります。その人のミスで実行可能コードが最新のコードではない場合が起こることもあります。個人のミスによって全体の作業に影響があるのはその人個人に問題があるのではなく、その仕組みそのものに問題があるといえます。
人間の手によってビルドを行うことは、その手順が属人的になり、ビルドの時間もかかってしまいます。
以上、問題点ははっきりしましたが、これらの問題をどう解決すればよいでしょうか。これらの問題点は、構成管理のワークフローを明確にせずに個人(例えば開発のリーダー)の環境を正としてプロジェクトを運用している点にあります。特にビルド管理がきちんとできていないところに問題がありそうです。ビルド管理は構成管理の一要素ですが意外に実行されていない管理の1つです。今回はビルドを意識することによってソースコードの管理およびビルド管理について説明します。
Copyright © ITmedia, Inc. All Rights Reserved.