単なる1つの作業で終わるタスクもありますが、一連の流れとしてプロジェクト的に管理するタスクや、会議の前後に発生するタスクなど、多種多様のタスクを遅滞なく完了していく必要があります。ここでは、 Obsidian - Dataview を活用したタスク管理方法について説明します。
タスク管理項目
Obsidian 素のままでは、タグやチェックマークを利用したタスク管理がメインとなると思いますが、 Obsidian - Dataview を利用すると、実行予定日や実施日など様々な項目を利用して、管理や抽出が可能となります。
- Title (タイトル)
- zettelkasten 方式でファイル名では内容が不明なので、 Obsidian - Dataview で内容を把握できるようなタイトルを全ノートで設定します。
- DueData (期限日)
- タスクの期限日です。
- PlanDate (作業予定日)
- 簡単に終わらない一連のタスクは実施予定日を設定し、「本日のタスク」に表示します。
- Worked (作業日)
- 実際に作業をした日です。この日付を入力すると「本日のタスク」から「本日実施タスク」に移し、残りのタスクにフォーカスできるようにしています。
- Completed (完了日)
- タスクが本当に完了した日を登録し、以後のタスク対象に挙げないようにします。委託分などやキャンセル分などは、ステータスはそのままに完了日を登録して完了扱いにします。
- Status (ステータス)
#todo/inbox
- 振り分け待ち。可及的速やかに予定を決める必要があります。自分は基本的にこれは利用せずに、作成時に他のステータスを設定するようにしています。
- 振り分けに迷うようであれば、このステータスを一時的に利用し、仕事の合間に振り分ける必要があります。
#todo/next
- 期限日以前であろうとも早く終わらせるべきタスク。タスクは早めに処理した方がリラックスできます。タスクが多いだけで気が滅入りますし、完了マークを付けるために仕事するようなものですから。
#todo/active
- 時間を見つけて対応すべきタスク。緊急ではないが、マメに確認するべきタスク。作業予定日を利用すれば、そちらで対応してもいいと思います。
#todo/delegated
- 誰かに依頼したタスク。完全にお任せして終わりであれば、依頼した日を完了日としてタスクを終わらせていいですが、見届けが必要なら完了を確認してから完了日を登録しましょう。
#todo/scheduled
- 予定済みのタスク。会議などで決めるタスクが相当すると思いますが、 Obsidian では簡単にノートの関連付けができるので、リンクしておいた方が分かり易いとも思います。
#todo/preparation
#todo/scheduled
でもいいかもしれませんが、自分は会議用のノートはこのステータスで管理しています。
#todo/waiting
- 問い合わせなどの回答待ちや、状況の変化を待っているタスクです。期限日を利用して、適宜督促するのに利用します。
#todo/delegated
は自部門、#todo/waiting
は他部門や他社などに利用しています。
- 問い合わせなどの回答待ちや、状況の変化を待っているタスクです。期限日を利用して、適宜督促するのに利用します。
#todo/someday
- 覚書程度で、週次や月次のレビューで見直した方がいいタスクです。
#todo/canceled
- キャンセルになったタスクです。キャンセルになったことを明確にするため、キャンセルのステータスにして、完了日を登録します。
- Project (プロジェクト)
- プロジェクト管理を行う場合に利用します。
- Client (相手先)
- 自分は営業関係の仕事なので、外部のクライアントとの会議が多いのですが、社内であっても相手先部門を登録しておくと、その部門で検索がしやすいです。
- Parent (元ノート)
- タスク発生元となったノート
- Obsidian - Note Refactor で利用しています。
- タスク発生元となったノート
タスク登録方法
テンプレートの利用
Obsidian - Templater を利用して、ある程度自動的に設定できます。
Alfred の利用
Alfred の Alfred - Workflow|Workflow や Alfred - Snippet|Snippet を利用して項目を登録できます。以下は、ノートにタスク関連項目を追加する Alfred - Snippet|Snippet です。
# Title::
> Status:: #todo/<% tp.file.cursor(48) %>
> Task:: <% tp.file.cursor(49) %>
> Project:: [[<% tp.file.cursor(50) %>]]
> Client:: [[<% tp.file.cursor(51) %>]]
> DueDate:: <% tp.file.cursor(52) %>
> PlanDate::
> Estimated:: <% tp.file.cursor(54) %>
> Spent::
> Worked::
> Completed::
<% tp.file.cursor(55) %>
作成時に DueDate も決める場合には、 Alfred - Workflow のオプションで日数を指定して期限日を入力することもできます。自分は、 Obsidian - Natural Language Dates で日付を入力するようにしています。
タスク管理ノート
期限超過タスク
## 期限超過タスク
```dataview
table Status, Title, Task, DueDate, Client from #todo and !"templates" and !"personal"
where (Completed = "N" or !Completed or Completed = "")
and DueDate and DueDate < date(today)
sort DueDate asc
```
本日のタスク
## 本日のタスク
table Status, Title, Task, Client, DueDate from #todo and !"templates" and !"personal"
where (Completed = "N" or !Completed or Completed = "")
and ((DueDate and DueDate = date(today)) or (PlanDate and (PlanDate = date(today) or contains(PlanDate, date(today)))))
sort DueDate asc
```
</code></pre>
<h3>次のタスク</h3>
<pre><code>## 次のタスク
table Title, Task, Client, DueDate from #todo/next and !"templates" and !"personal"
where (Completed = "N" or !Completed or Completed = "")
and (!DueDate or DueDate > date(today))
sort DueDate asc
```
直近タスク
## 直近タスク
```dataview
table Status, Title, Task, Client, DueDate from #todo and !"templates" and !"personal"
where (Completed = "N" or !Completed or Completed = "")
and (DueDate and (DueDate > date(today)) and (DueDate <= (date(today) + dur(7 day))))
sort DueDate asc
```
待ちタスク
## 待ちタスク
```dataview
table Title, Task, Client, DueDate from #todo/waiting and !"templates" and !"personal"
where !Completed and (!DueDate or DueDate > date(today))
sort DueDate asc
```
委託タスク
## 委託タスク
```dataview
table Title, Task, Client, DueDate from #todo/waiting and !"templates" and !"personal"
where !Completed and (!DueDate or DueDate > date(today))
sort DueDate asc
```
今月タスク
```dataview
table Status, Title, Task, Client, DueDate from #todo and !"templates" and !"personal"
where (Completed = "N" or !Completed or Completed = "")
and (DueDate and (DueDate > (date(today) + dur(7 day))) and (DueDate <= date(eom)))
sort DueDate asc
```
</code></pre>
<h3>本日完了タスク</h3>
<pre><code>## 本日完了タスク
```dataview
table Status, Title, Task, Client, DueDate from #todo and !"templates" and !"personal"
where Completed and Completed = date(today)
sort DueDate asc
```
</code></pre>
<h3>未完了全タスク</h3>
<pre><code>```dataview
table Status, Title from #todo and !"templates" and !"personal"
where !Completed
```
日別の管理
各日付のタスクを調べるためには、date(today) ではなく対象日付を指定する必要があります。日付をファイル名とする日誌を自動作成し、this.file.day を利用して該当日の実績を把握することができます。詳細は、 日誌テンプレート - Obsidian を参照してください。
会議のタスク管理
(会議テンプレート - Obsidian) のタスク管理 を参照してください。