06. 進捗と実績
計画を立てた後、実績を入れて追跡する。ここから「動いているプロジェクト」の管理になる。
now を 08-17 に置き、それ以前の実績を booking で与える。TaskJuggler は
now より前には新たな割当をせず、残作業だけを now 以降に再配置する
(projection モード)。
計画を立てた後、実績を入れて追跡する。ここから「動いているプロジェクト」の管理になる。
now を 08-17 に置き、それ以前の実績を booking で与える。TaskJuggler は
now より前には新たな割当をせず、残作業だけを now 以降に再配置する
(projection モード)。
| ファイル | 内容 |
|---|---|
progress.html |
実績を反映したスケジュール (complete / gauge 列つき) |
people.html |
リソース別の実績と予定 |
now = 2026-08-17 のときのスケジュール。
| タスク | 開始 | 終了 | 進捗 | ゲージ |
|---|---|---|---|---|
| ① 予定どおり完了 | 08-03 | 08-07 | 100% | on schedule |
| ② 半分だけ進んだ | 08-10 | 08-21 | 50% | on schedule |
| ③ 進捗率のみ手入力 | 08-17 | 08-21 | 60% | ahead of schedule |
| ④ 未着手 (②待ち) | 08-24 | 08-28 | 0% | on schedule |
② は 10 人日のうち 5 人日ぶんの実績があり、残り 5 人日が now 以降に
再スケジュールされて 08-21 終了になっている。
③ は booking がないので now から開始する扱いになり、complete 60 との
ギャップが “ahead of schedule” として出ている。
/*
* 06: 進捗と実績の追跡
*
* 実行: bundle exec tj3 -o 06-progress/out 06-progress/progress.tjp
*
* now を 8/17 に置き、それ以前の実績を booking で与える。
* TaskJuggler は now より前には新たな割当をせず、
* 残作業だけを now 以降に再配置する (projection モード)。
*/
/*
* 注意: project ヘッダの日付は timezone 属性を読む *前* に解釈されるため
* UTC 基準になる。"2026-08-03" と書くとプロジェクト開始は
* 2026-08-03 09:00 JST になり、8/3 0:00 を含む booking は
* 「プロジェクト期間外」エラーになる。
* 実績を日付境界で書きたいので、開始を週末側に少し広げてある。
*/
project prog "進捗と実績" 2026-08-01 +2m {
timezone "Asia/Tokyo"
timeformat "%Y-%m-%d"
// 「今日」をプロジェクト途中に置く。ここが計画と実績の境界になる
now 2026-08-17
/*
* 実績を記録するシナリオを指定する。
* これを指定すると、そのシナリオは projection モードでスケジュールされ、
* now より前の割当は booking で与えられたものだけになる。
*
* 旧 projection キーワードは非推奨。booking があれば自動で有効になる。
*/
trackingscenario plan
}
resource alice "Alice"
resource bob "Bob"
resource carol "Carol"
// ---- ① 実績どおり完了したタスク ----
/*
* booking は「実際に作業した時間」を記録する。
* sloppy 0 : 非稼働時間・休暇・他タスクの割当を一切含んではいけない (既定)
* sloppy 1 : 非稼働時間は含んでよい
* sloppy 2 : 非稼働時間と休暇を含んでよい
*
* 区間は <日付> - <日付> 形式。終了日は 0 時に展開されるので
* 8/3 - 8/8 は「8/3〜8/7 の 5 日間」を意味する。
* 区間内の稼働時間だけが実績として計上される (5 日 x 8h = 40h = 5人日)。
*/
task done "① 予定どおり完了" {
effort 5d
allocate alice
booking alice 2026-08-03 - 2026-08-08 { sloppy 2 }
}
// ---- ② 途中まで進んで遅れているタスク ----
/*
* 10 人日のうち 5 人日ぶんだけ実績がある。
* 残り 5 人日は now (8/17) 以降に再スケジュールされる。
*/
task delayed "② 半分だけ進んだ" {
effort 10d
allocate bob
booking bob 2026-08-10 - 2026-08-15 { sloppy 2 }
}
// ---- ③ 進捗率だけ手入力するタスク ----
/*
* complete はスケジューラに一切影響しない。
* レポートの complete / gauge 列とガントチャートの塗り分けに使われるだけの
* ドキュメント用途。TODO リスト的な簡易管理向け。
* 正確に追跡したいなら booking を使う。
*/
task rough "③ 進捗率のみ手入力" {
effort 5d
allocate carol
complete 60
}
// ---- ④ 未着手のタスク ----
task pending "④ 未着手 (②の完了待ち)" {
effort 5d
allocate alice
depends !delayed
}
// ---- レポート ----
/*
* complete 列は進捗率、gauge 列はそれをグラフィカルなゲージで表示する。
* ガントチャートでは now の位置に縦線が入り、
* 完了済みの部分が濃い色で塗られる。
*/
taskreport progress "progress" {
formats html
headline "実績を反映したスケジュール (now = 2026-08-17)"
columns name, start, end, effort, complete, gauge, chart
}
resourcereport people "people" {
formats html
headline "リソース別の実績と予定"
columns name, effort, chart
loadunit days
}
trackingscenario — 実績を記録するシナリオの指定booking — 実際に作業した時間の記録sloppy — booking の衝突チェックの緩さcomplete — 進捗率の手入力now — 計画と実績の境界。スケジュール結果に効く| booking | complete | |
|---|---|---|
| スケジューラへの影響 | あり (残作業を再計算) | なし |
| 用途 | 正確な実績追跡 | TODO リスト的な簡易管理 |
| 表示 | 工数・日付に反映 | complete / gauge 列とガントの塗り分けのみ |
booking の区間が非稼働時間と衝突したときの扱い。
| 値 | 許容する内容 |
|---|---|
0 (既定) |
非稼働時間・休暇・他タスクの割当を一切含めない |
1 |
非稼働時間は含んでよい |
2 |
非稼働時間と休暇を含んでよい |
日付境界で書くなら sloppy 2 が扱いやすい。
booking alice 2026-08-03 - 2026-08-08 { sloppy 2 } で「8/3〜8/7 の稼働時間ぶん」= 5人日。
project ヘッダの日付は timezone を読む前に UTC で解釈される。2026-08-03 と書くと開始は 08-03 09:00 JST になり、booking で 8/3 0:00 を指すと「プロジェクト期間外」エラーになる。2026-08-01 に広げて回避しているbooking alice 2026-08-03 - 2026-08-08 は 8/3〜8/7 の 5 日間になるprojection キーワードは非推奨。booking があれば projection モードは自動で有効になるsloppy / overtime が用意されているeffortdone / effortleft は「未テスト」警告つきの機能。使うなら結果を検証すること計画と実績のズレを数値で把握し、残作業がいつ終わるのかを再計算させられるようになる。
実績を別ファイルに分離する実務パターンは 11 の supplement で扱う。