Subtasks, splits and dependencies¶
タスクに形を与える方法は 3 つあります。サブタスクに分解する、均等な部分に Split する、 そして何が先に終わっている必要があるかを宣言する、の 3 つです。
Subtasks¶
task detail panel の Subtasks タブで、タスクを分解できます。タイトルを入力して Enter を押すと追加されます。各サブタスクは独自のプロパティ(status、estimate、 dates など)を持ち、それぞれ専用のパネルで開きます。
この 2 つのルールは重要です。planner がこれらに依存しているからです:
- 親タスクの estimate は、サブタスクの合計です。 タスクに子タスクができた時点で、 その estimate は編集できなくなり、「(sum of subtasks)」と表示されます。変更するに は、サブタスクの estimate を変更してください。
- planner はリーフ(末端のタスク)をスケジュールし、親タスクはスケジュールしません。 サブタスクを持つタスクはスキップされ、代わりにそのサブタスクがスケジュールされます。 両方をスケジュールすると、同じ作業が二重に予約されてしまいます。ワンクリックでの予約 についても同様です。サブタスクを持つタスクでは Auto-plan は使えず、代わりに各サブ タスクを reserve してください。
サブタスクの due date は、親タスクの due date より後にはできません。Empi はその変更を 拒否し、代わりにその日付まで extend the parent(親タスクの期限を延ばす)ことを提案 します。
Splitting a task¶
Split は、見積もりが設定された 1 つのタスクを、いくつかの均等な部分に分けます。 task panel から開く(または List や Kanban ビューの bulk action bar から開く)ことがで き、slot duration を選ぶと、Empi が estimate をその長さのサブタスクに分割します。 最後の部分には端数がまとめて割り当てられます。
- まずタスクに estimate が設定されている必要があります。それがなければ、分割するもの がありません。
- 1 回の split で作られるサブタスクは 2 個から 20 個です。2 個未満になるような duration は選択肢に表示されません。
- subtask を split すると、それが part 1 になり、残りが兄弟(sibling)のサブタスク として追加されます。
Split は、作業を一口サイズの単位に分けて、各部分に個別の status を持たせるための方法 です。capacity を新たに生み出すものではありません。estimate の合計は変わりませんし、 1 日に収まらないタスクは、そもそも planner が自動的に連続する複数日にまたがって配置し ます。
Dependencies¶
Blocked by には、このタスクより先に終わらせる必要があるものが一覧表示されます。 Blocking はその逆で、このタスクを待っている側の一覧です。どちらも properties column から設定でき、他のタスクを検索して選べます。
依存関係は、計画上の hard(絶対的な)制約です。planner は、そのタスクが Blocked by に挙げているものがすべて完了して初めて、他の条件を検討する前にタスクを配置します。依 存関係が満たされて初めて、残りの順序付け(overdue を最優先、次に進行中の作業、次に due date が早いもの、その次に priority)が適用されます。
未完了の blocker があるタスクには、バッジが表示されます(「Blocked by 2 unfinished tasks」)。すべて完了すると、「Dependencies complete, ready to schedule」と表示され ます。
Tip
Empi は、未完了の blocker がある間、タスクを自動的に Blocked ステータスへ移動 できます。このトグルは Settings の Tasks にあります。
Date conflicts¶
依存関係と日付は、互いに矛盾することがあります。Empi は編集時にそれを検知し、planner が黙って失敗するのではなく、タスクの Scheduling conflicts の下に表示します:
- タスクの開始日が、依存タスクの完了より前になっている。 blocker の due date がこ のタスクの開始日より後になっているため、指定した日に作業を開始できません。
- blocker の due date が、依存元のタスクより後になっている。 これはスケジュールの 調整だけでは解決できません。待っている側より、待たれている側の期限が後になっている ためです。
- blocker の due date が、このタスクの親タスクより後になっている。 サブタスク自体 の日付がどうであれ、期限内にスケジュールすることができません。
依存関係の循環(A が B を待ち、B が A を待つ)も、planner によって同じように dependency conflict として報告されます。
それぞれの競合には、実際に解決するためのアクションが用意されています:
- blocking task の Remove dependency。
- Open blocker で、代わりに blocker 側の日付を修正しに行く。
- Reschedule to
で、このタスクを条件を満たす最も早い日付に移動する。 - 誤って変更してしまった場合は Keep the original dates。
Reschedule すると、新しい日付に合わなくなった予約済みの slot が解放されることがありま す。その場合 Empi が知らせてくれるので(「Freed 2 earlier slots」)、解放された時間が capacity に戻ったことがひと目でわかります。