ティンカラー日記

こなゆき(a.k.a. p-snow)

15 Oct 2024

実は奥深い「締切り」の世界

「хххというタスク管理アプリでは締切りの管理が難しい」という声をたまたま耳にしました。個人的に締切りの遵守にあまり自信がある方ではありませんが、Org Modeではタスクの期限をどうあつかえるのかをいい機会なのでまとめてみようと思います。

Org Modeでは、締切りはタスク項目とセットで機能します。TODO ステートのついたOrgエントリの上でM-x org-deadlineを実行して締切日を指定すれば、以下のような期限(DEADLINE)をもつタスクができあがります。

* TODO 入金
DEADLINE: <2024-10-31 Thu>

では、Org Modeはどうやってこのタスクをリマインドしてくれるのでしょうか。それは、org-agendaを実行したきに次のような一行を表示することで教えてくれます。

In   15 d.:  入金

毎日org-agendaを実行していれば「14 d.」「13 d.」となり、心の準備をすることができ、もし期日前までにやっておかなければならないことがあれば実行するというステップが踏めるわけです。

期限の数日前に無事、入金が完了しました。でもそのままではその後も毎日、期限までリマインドは繰り返されます。この表示を止めるには以下の設定をして「入金」項目のTODOステートをDONEにします。

(setq org-agenda-skip-deadline-if-done t)

ちなみに、org-agendaで締切りの何日前からリマインド表示するかは以下の設定で調整できます。この場合は2週間前から表示してくれます。

(setq org-deadline-warning-days 14)

この設定はすべてのタスクに共通して適用されるのですが、タスクによっては別の値を設定したいこともありますよね。例えば、「原稿の提出」など、期限までに2週間では終わらない作業を終わらせなければならない場合は以下のように個別にリマインド開始日を指定することができます。これで2ヶ月前からお知らせしてくれます。

* TODO 原稿の提出
DEADLINE: <2024-10-31 Thu -2m>

ところで、原稿の執筆に集中して取り組みはじめた後は、今度はリマインドが邪魔という事態が起こったりします。そんなときはタスクにSCHEDULED属性に執筆開始日を入れて以下の設定をします。

* TODO 原稿の提出
SCHEDULED: <2024-10-01 Tue> DEADLINE: <2024-10-31 Thu>
(setq org-agenda-skip-deadline-prewarning-if-scheduled 'pre-scheduled)

これでシステムには、このタスクに着手したことを伝えて事前のリマインド表示は中止させるのです。

このように締切りと一口に言ってもいろいろな背景を考え合わせる必要があり、それをコンピュータ上で管理しようとするとけっこう難しい課題につきあたることがわかります。万人に有効な解決策をタスク管理アプリが提供することはけっこうな高難度なのでしょう。結果的に冒頭で紹介したようなユーザの声が聞こえてくるのも、ある意味では無理からぬことなのかなと個人的には感じています。

Tags: org agenda