組み込みProgrammerのチラシの裏

GTD Implementation #2

| Comments

GTD(Getting Things Done)の本(はじめてのGTD ストレスフリーの整理術)を薦められたことがきっかけ。 以前からTODOをemacsのorg-modeを使って管理しようとしていたがうまくいかなかった。 そのため、GTDの実現手段として、emacsのorg-modeを使うことを決めた。

概要

GTDを実現するにあたり、以下の方針とした。

  • Android/PCからREAD/WRITEできる
  • 「次にとるべき行動」を整理できる 本ページの対象
  • 作業時間をベースに行動の振り返りができる1
  • 作業時間をベースに行動の振り返りができる2

構成

流れ

把握する

見極める/整理する

inbox.orgが空になるまでリストを見極め、整理する。 この作業が終わると、必要なリストが全てスケジュールされ、整理された状態になる。

todo.orgの状態遷移

org-modeを使ったGTDの実例

リストのSCHEDULE/DEADLINEを設定する

SCHEDULE/DEADLINEを設定することで、「次に実行する作業をリストから選ぶ」時にその日の計画が見えるようになる。 そのため、todo.orgに入れたTODOは全てSCHEDULE/DEADLINEを入力することにしている。

SCHEDULE

SCHEDULEを設定するには、リストを選択してC-c C-s(M-x org-schedule)を実行する。 そこでカレンダーが表示されるので、Shift + 矢印で日付を選択する。

以下の例は、task1の作業は1/7に予定するよう設定した。

1
2
3
4
5
6
#+TODO: TODO(t) WAIT(w) DOING(i) | DONE(d) SOMEDAY(s) CANCEL(c)

* todo
** proj_a [1/1]
*** DONE task1
SCHEDULED: <2024-01-07 日>

DEADLINE

DEADLINEを設定するには、リストを選択してC-c C-d(M-x org-deadline)を実行する。 そこでカレンダーが表示されるので、Shift + 矢印で日付を選択する。

以下の例は、task1の作業は1/14に期日を設定した。

1
2
3
4
5
6
#+TODO: TODO(t) WAIT(w) DOING(i) | DONE(d) SOMEDAY(s) CANCEL(c)

* todo
** proj_a [1/1]
*** DONE task1
DEADLINE: <2024-01-14 日>

繰り返し

SCHEDULE/DEADLINEそれぞれ日付のあとに+w, ++w, .+wのように指定する。

  • +1w : 機械的に、予定されていた日の一週間後に設定される。家賃の支払いなど、忘れたからと言って無くなったりしない予定に使う。
  • ++1w : 過去が帳消しになる。ジムの予定など、行かなかった日は忘れて、次に行く日を忘れないようにしたい場合
  • .+1w : 繰り返す日付や曜日が決まっているわけではなく、前回から一定の間隔をあけることが重要であるタイプ。ズレたら、ズレた日から起算し直す。

+1wは1週の繰り返しに使う。 w以外には、y, m, w, dを指定でき、それぞれ年, 月, 週, 日に対応する。

具体的には以下のように指定する。

1
2
3
4
5
6
SCHEDULED: <2024-01-07 日> # 1回のみの指定
SCHEDULED: <2024-01-07 日 +1m> # 毎月7日に繰り返す。過去を帳消しにしない。
SCHEDULED: <2024-01-07 日 ++1m> # 毎月7日に繰り返す。過去を帳消しにする。
SCHEDULED: <2024-01-07 日 .+1m> # DONEした日を基準に1ヶ月後を再設定する。
SCHEDULED: <2024-01-07 日 +1w> # 毎週日曜日に繰り返す。過去を帳消しにしない。
SCHEDULED: <2024-01-07 日 +2w> # 隔週日曜日に繰り返す。過去を帳消しにしない。

以下のような毎週繰り返すタスクがあり、1月7日に作業を実施する場合を例とする。

1
2
3
4
5
6
#+TODO: TODO(t) WAIT(w) DOING(i) | DONE(d) SOMEDAY(s) CANCEL(c)

* todo
** proj_a [0/1]
*** TODO task1
SCHEDULED: <2024-01-07 日 +1w>

作業完了し、C-c C-c(M-x org-todo)でTODOなどの状態からDONEに変更したとき、自動的に以下の処理が走る。

  1. 一瞬DONEになる
  2. SCHECULEを1月7日から1月14日に変更
  3. LAST_REPEATに現在時刻を追記
  4. TODOに戻す
1
2
3
4
5
6
7
8
9
#+TODO: TODO(t) WAIT(w) DOING(i) | DONE(d) SOMEDAY(s) CANCEL(c)

* todo
** proj_a [0/1]
*** TODO task1
SCHEDULED: <2024-01-14 日 +1w>
:PROPERTIES:
:LAST_REPEAT: [2024-01-07 日 21:00]
:END:

次に実行する作業をリストから選ぶ

C-c a(M-x org-agenda)で以下を開く。

1
2
3
4
5
6
7
8
9
10
11
Press key for an agenda command:
--------------------------------        <   Buffer, subtree/region restriction
a   Agenda for current week or day      >   Remove restriction
t   List of all TODO entries            e   Export agenda views
m   Match a TAGS/PROP/TODO query        T   Entries with special TODO kwd
s   Search for keywords                 M   Like m, but only TODO entries
/   Multi-occur                         S   Like s, but only TODO entries
?   Find :FLAGGED: entries              C   Configure custom agenda commands
*   Toggle sticky agenda views          #   List stuck projects (!=configure)

n   Agenda and all TODOs

さらにaを押して、「Agenda for current week or day」を選択する。 これで以下のようにその週で予定(SCHEDULE)している作業、およびその期日(DEADLINE)を確認することができる。 以下の例は、org-agendaを実行した日は1/7であり、task1の作業は1/7に予定し、1/14に期日を設定した表示である。

1
2
3
4
5
6
7
8
9
10
Week-agenda (W01):
Monday      1 January 2024 W01
Tuesday     2 January 2024
Wednesday   3 January 2024
Thursday    4 January 2024
Friday      5 January 2024
Saturday    6 January 2024
Sunday      7 January 2024
  todo:       Scheduled:  TODO task1
  todo:       In   7 d.:  TODO task1

この中から次に実行する作業をリストから選ぶ。

参考図書

Comments