スケジューラ

試験機の占有予定を組む時、割込みで優先作業が入って、待ち行列の実施時期が全体としてシフトしたりする管理。
ずれた後の特定の案件がいつ頃完了予定かを把握・プレゼンすること。


‥こんなの、非常に基本的なことだから、便利なツールくらいそこここに転がっていたっていいはずなのに‥


というのが、このところphpCollabやdotProjectをトライしてはガントチャートを所望しようとしていたモチベーションなんである。



たいした試験機ではないけれど、1台しかなく、かつ、世の中的にもどうやら他にないようで、
また、条件によって非常に1案件あたりに時間が掛かったりするものだから、
プロジェクトのネックになっているらしく、きめ細かなスケジュール管理が求められるようだ。


でもこれ、モデル的には『ホテルの予約』なんかとまったく同じなんだし、
上記大物アプリに挑戦しなくったって、あっていいと思うんだけどなぁ〜。

でも割とdotProjectの軽快性が気に入ったので、そっちのアプローチも諦めずに続ける
積もりだけど、木村さんのパッチを当てるにしてもうまくいかず、手でやりかけるも
量の多さに辟易して、ならいっそのことと、またぞろCygwin導入を行なっている
状況で、こうなってくると、もう、手段と目的が逆転して、楽しいんだけどなんだか
訳分からんことになるのは必定。いいんだけど。ちなみに、失敗しない Cygwin の インストール 【 Windows 7 編 】という記事は非常にありがたく、XPでも同様にやっている(まだ終わらん)状況。



さて、戻って、スケジュール管理の本質へ。
今回の問題は、非常にシンプルで、単純化されていて、突き詰めておくと後々応用が利きそうだ。

  • 言葉はさておき、1つのプロジェクトには、複数のテストが含まれ、複数あるプロジェクトのテストをこの唯一の試験機でこなしていく。
  • テストは1日以上1日単位で試験機を占有することとする。(実際は1日中で切り替えは行なうが‥実績ではある日に2つのテストが存在することは考えておいたほうがいいか‥)
  • 切り替え日(試験機条件の大幅な変更に伴なう)、行事日など、営業日でテストを行なわない日の存在。
  • 基本的に受注した順にプロジェクトのテストをこなすが、プロジェクト間の優先順位、あるいは、特定のテストだけ先行実施の指示によりテストを並べなおす。
  • 現実として納期は存在するものの、この試験機状況の性質上、『納期に間に合わす』という行為は存在しない。予定をこなしている途中で、順序変更が随時なされる。

この管理で何がめんどくさいかというと、割込みを入れた場合の、後続の予定のカレンダー上のシフト作業が単純だが人力では大変。特に、カレンダーと営業日が必ずしも一致しないこと、後続予定が1年以上大量なので、ちょっとずらすだけで、手作業だと時間が取られる、ということが本質。

だから、テストというオブジェクトというか実態を並べなおす作業を自動化できないかと考えた。これをアプリケーションで考えると、テストというオブジェクトを並べ直す作業だけど、データベースだとテストを並べたテーブルを定義して更新していくのが本質的なところかな。あと、その並びに従って、カレンダーのテーブルを埋めていく。