ようやく勝てそうだ

はぁ、ようやくdotprojectさんにも勝てそうです。dotproject(http://www.dotproject.net/)は、このブログでも何回か紹介してるんだけど、「プロジェクトマネジメント」用のopen sourceなソフトです。

結論

そこそこ使える。予定を作って、進捗状況を把握するには十分だと思う。

不満点

実は、ガントチャートを表示で思うようにいかなかったのだが、設定・修正・妥協を行うことによって、そこそこ満足できるものになる。以下に不満点記してみる。

  1. ガントチャートの表示がタスクの開始日(Start date)でソートされていて、好きな順序でガントチャートを表示できない。
  2. ガントチャートの表示時に、誰に割り当てられた仕事かわからない。
  3. 親タスク(抽象的タスク)が、実タスクとして扱われる。
  4. タスクのDuration(想定予測時間)を0に設定できず、抽象的な親タスクの時間もカウントしてしまう。

設定・修正・妥協

(1)ソートの問題
ソースコードを変更しました。gantt.phpファイルの中の90行目あたりに、ソートする項目を設定している。task_startdate(正確な文字列は忘れた)から、task_nameに変更。そして、タスクの命名規則を01.ホニャララ、02.ホニャララとする。

(2)仕事の割り当て表示
ガントチャートの表示時に"Caption"をチェックできるのでこいつにチェックを入れて、表示する。

(3)親タスクの抽象化
タスクの設定時にDependencyのところで、Dynamic Taskとして設定する(この設定をするとタスクの依存関係を、設定したタスクに対して行えなくなる、けどまぁ気にしない)

(4)タスクのDuration
tasks.class.phpファイル内に以下のような記載があるので、ここを0にする。

$this->task_duration = '1';

とりあえず、問題なく動いている。

とりあえず、以上のような設定・修正・妥協をして、使える形になった。ふぅ。

その他

実は、オープンソースの類はソフトウェアに埋め込まれている「考え方」を逐一自分で試して(ソフトを動かして)試さなければならない。ドキュメントが充実していないからね。今回もこんな例があった。

ProjectのReportでallocatedナントカがあるのだが、ここでの表示を有効にするためにはタスクに正確なdurationを設定しておかなければならない。このdurationの時間と、TaskのHuman Resourceってのがあってここでもある人にXX%を割り当てる設定がある。はじめ、タスクの日数と1日の労働時間と%からallocatedを計算するのかと思っていたのだが、durationを使うらしい。同じ内容なのに、使う項目が違っていたりする。ということで、allocatedナントカを使うならはじめにdurationを設定しなければならない(ソースを修正するのもありだが(笑))。

捕捉

どうやら、durationは、「人時」を表しているらしい。つまり仕事のボリュームを表していて、1人で40時間かかる仕事をduration 40hと表しているみたい(きっと)。そして、Human resourceのタブを使って、ある人の稼働時間のXX%を割り当てると、この仕事を終らせるのにかかる時間を計算してくれてるみたい。たとえば、50%なら40人時の仕事は、80時間かかることになる。

が、この考えをどのように展開しているかはまだ不明。要調査だが、時間がないなぁ。

そして、この背景にある考え方はまずあるボリュームの仕事があって、これに対してある人のXX%の稼働を割り当てるという考え方だ。僕が勘違いしていたのは、ある仕事があって、それを(仕事のボリュームを無視して)○○時間で終らせてください。と考えていたことだ。

前者の考え方はボトムアップ式で、仕事量が正確に見積もれれば、正確性があるのでお客さんに対してスケジュールを提示することができる。後者は、お客さんがいついつまでにやってくれという要求に対してのスケジューリング技法でどちらかというとトップダウン式。これだと、お客さんの要求を(リソースはとりあえず無視して)満たすことができる。が、仕事量を無視しているからトラブルプロジェクトになるんだろうな。(笑)。まぁ、どっちもどっちだ。

どうやら、僕は、プロジェクトマネジメントを正確に(体に染み込むまで)理解していないらしいです。はぁ、また勉強せねば。きっと、前者はまっとうなスケジューリング技法だろう。だが現実場面では後者のスケジューリングが多い気がする。