スケジュール管理とタスク管理をからめる

なにかしらのシステムを開発する時、要件定義を行ってから機能を洗い出し、それぞれの機能をタスクに分割し予想工数を割り当て見積もりを行う。

その総工数から判断してスケジュールを組み立てていくわけだけど、例えば総工数が200時間だとしてそれを単純に8時間で割って25日かかると考える。一ヶ月の出勤日数を22日として、200時間を処理するには一ヶ月と三日あればいいと判断するわけだ。

開発担当者が開発専任ならば、これはそんなに間違っていないと思う。しかし社内システムを開発するようなエンジニアの場合、開発専任という事はあまりなく、運用やその他の作業を持っている事が多い。そういった場合にはこの判断の仕方はあまり役に立たない。

なので、スケジュールの合間に開発作業(タスク)を入れていくわけだけど、現状スケジュール管理システムとタスク管理システムが別々で連携することもできず、スケジュールに開発作業を照らし合わせてみて、本当にそのスケジュールで間に合うかどうか正確には確かめられていない。

スケジュール管理システムは10年以上前に社内で開発されたPerl製のWebアプリケーションで、タスク管理システムにはTracを使っている(Tracのチケット機能を使ってタスクの作業者への割り当てや工数の試算なんかを行っている)。

そこで思ったのだが、「Tracに登録したチケット(タスク)をスケジュール管理システムのスケジュールとして登録できたらおもしろいんじゃね?」
さらに時間を入れるとその分だけチケットの工数から引かれて、残工数がわかったりしたらスケジュールが立てやすくなるかも!?。

UIを作る

さっそくUIのモックを作ってみた。ぐだぐだ説明するよりも実際に動くものを見たほうが早いので以下のURLで公開した。

Firefox3で開くとクラッシュするので注意!!

解説

まずメイン画面、左側にスケジュール、右側にタスクが表示されている。

右側のタスクをDragして、適当な日付にDropすると以下の画面が表示される。

開始時間と終了時間を入力して、[OK]ボタンでスケジュールを追加できる。追加すると以下のように表示される(削除ボタンで削除できる)。

右側のタスク一覧のところにも消費した時間の分だけゲージが進む。

一通りスケジュールを入れてみると以下のようになる。

正直なところ、このやり方に意味があるかどうかはやってみないとわからない。UIの使い勝手をもっとよくしたら結構使えそうな気がしないでもない。
なんにせよ別々のシステムを組み合わせて新しいシステムを作る(マッシュアップする)一つの例にはなった。

[追記]
Trac-Lightningにはチケットをカレンダーとガントチャートで見る機能が付いている事を知った。これ意味ないやん・・・orz

おまけ

ちなみにこのシステムを本当に作るとなるとアーキテクチャは以下のようになる。

システム配置図

見ての通りかなり実験的なシステムだということがわかる。やりたい放題やったったw保守する人が大変ですねw

ソース