はじめに
Notion Tips の第66回目は依存関係による Next action の絞り込み方法を解説します。ちょうど後期の授業準備を始めたので、私が実際に使っているタスクデータベースで解説します。
授業タスクの依存関係の設定
まず授業自体のタスクを作成します。こちらは、校務支援システムから出力される ics データから Notion タスクを作成しています。こちらのやり方は以下の記事で解説しているので、そちらを参照してください。
タスクデータベースのフルページにはこれらの依存関係を設定するためのタイムラインビューが用意されています。このタイムラインビューでは完了していないタスクが日付順に並んでいます。検索で授業名を入れるとその授業タスクだけが階段上に並ぶので、依存関係を順番に設定していきます。これは非常に簡単です。授業のタスクは日付が設定されているので、週ごとのスプリントに自動的に結びつけられるようにしています。
授業準備タスクの依存関係の設定
授業は日程が決まっていますが、授業準備は日付が決まっていない「いつかやる」タスクに流し込みます。これは Excel から貼り付けると簡単に一括作成できます。
レジュメ作成は授業の前に実施する必要があるので、依存関係を設定します。さらに次の授業準備は前の授業準備が終わらないと実施できないので、その間にも依存関係を設定します。
これらの依存関係を設定したことで、私の「いつかやる」タスクは以下のように一番最初のレジュメ作成だけが表示されるようになっています。また、そのタスクを実施しなければならない残日数が remain として表示されています(ここでは29日)。一方、データベースの授業はまだ依存関係の設定をしていないので、フラットに並んでいるのがわかります。これから他の授業の依存関係も設定していくと、すべての授業のレジュメ作成が並ぶ形になります。remain の小さいものから順番に並ぶので、日付猶予の少ないものから順番に作業していくことになります。
絞り込みの仕組み
この絞り込みをしているのは「_ready」という数式です。この数式にチェックが入るのは以下の場合です。
- blocked by に何も設定されていない (empty() である)
- blocked by に設定されているが、全てが Done である (Done でないものが empty() である)
この二つは以下の数式で一括で判定できます。元々はロールアップで割合を使っていたので、二つの条件を or で記載していたのですが、後者の () の中身に気づき非常に簡潔になりました。
prop("blocked by").filter(current.prop("Status") != "Done").empty()
もう一つの _remain は以下のようになります。こちらは blocking のタスクの中から日付が設定されているものを探し、今日との日付差分を計算します。ただし、すでに Done になったタスクは 0 にしています。
if(prop("Status") == "Done", 0, prop("blocking").filter(current.prop("Start date").empty().not()) .first() .prop("Start date") .formatDate("YYYY-MM-DD") .parseDate() .dateBetween(today(), "days") )
おわりに
今回は私の授業に対する実例を使って、依存関係のあるタスクのうち今できるものだけを絞り込む仕組みを解説しました。タスク自体は非常に大量に入れるのですがうまく依存関係を設定することで、今気にしなければいけないものだけが見えるようになり、集中しやすくなりました。