Emacs org-modeを使ってみる: (24) 繰り返し行動の記録

このエントリーをはてなブックマークに追加

今回は,繰り返し行う行動の記録方法についてまとめてみる.
なおUbuntu 8.04 LTSとEmacs22上で, org-6.34c (2010年1月10日リリース)の利用を前提にしている.

設定

(5) TODOリスト」に記載したように,以下のように設定されているとする.

;; TODO状態
(setq org-todo-keywords
      '((sequence "TODO(t)" "WAIT(w)" "|" "DONE(d)" "SOMEDAY(s)")))
;; DONEの時刻を記録
(setq org-log-done 'time)

また,習慣(habits)の記録を行う場合は,以下の行を追加する.

(require 'org-habit)

TODO状態の変化を記録

何度も行う行動について,毎回の完了時刻を行う場合,以下のように記述する.

** TODO 毎回の完了時刻の記録
   :PROPERTIES:
   :LOGGING: DONE(!) logrepeat
   :END:

「C-c C-t d」でDONE状態にすると,以下のように時刻が同時に記録される.

** DONE 毎回の完了時刻の記録
   - State "TODO"       from "DONE"       [2010-02-25 木 12:34]
   :PROPERTIES:...

「C-c C-t t」でTODO状態に変更し,再び 「C-c C-t d」でDONE状態にすると,以下のように時刻が追記される.

** DONE 毎回の完了時刻の記録
   - State "TODO"       from "DONE"       [2010-02-26 金 12:12]
   - State "TODO"       from "DONE"       [2010-02-25 木 12:34]
   :PROPERTIES:...

毎日,毎週の行動

上の方法だと,自分でTODO状態に変更する必要があった.
以下のようにSCHEDULEDの日時中に「.+1d」などと記述すれば,自動的にTODO状態になる.

** TODO 毎回の完了時刻の記録
   SCHEDULED: <2010-02-25 木 .+1d>
   :PROPERTIES:
   :LOGGING: DONE(!) logrepeat
   :END:

「C-c C-t d」でDONE状態にすると,以下のように時刻が同時に記録され, SCHEDULEDの日時が明日に設定され,状態はTODOとなる.

** TODO 毎回の完了時刻の記録
   SCHEDULED: <2010-02-26 金 .+1d>
   - State "TODO"       from "DONE"       [2010-02-25 木 12:34]
   :PROPERTIES:
   :LOGGING: DONE(!) logrepeat
   :LAST_REPEAT: [2010-02-25 木 12:34]
   :END:

「.+2d」,「.+1w」,「.+1m」と記述すれば,それぞれ今日から二日後,一週間後,一ヶ月後にスケジュールされる.
なお「+1d」と「.+1d」の違いは,前者はSCHEDULEDに記載されている日を一日進めるのに対し,後者は今日から一日後を設定する点が異なる.
また「++1w」と記述すれば,直近の同一曜日にスケジュールできる.

アジェンダ表示

アジェンダ表示した場合,将来のスケジュールも含めて繰り返し表示される.

習慣の記録

「:LOGGING: logrepeat」ではなく「:STYLE: habit」と記述すると,習慣の記録となる.

** TODO 習慣の記録
   SCHEDULED: <2010-02-25 木 .+1d>
   :PROPERTIES:
   :STYLE: habit
   :END:

「毎日,毎週の行動」と同様に,「C-c C-t d」とタイプすると,時刻が記録される.

アジェンダ表示

アジェンダ表示に切替えると,行動記録が色付きで棒状に表示される.

意味
スケジュール設定以前
スケジュール日に実行された
スケジュール日の翌日に実行された
スケジュール日の翌日にも実行されていない

なお,実行済みのスケジュールや将来のスケジュールは表示されない.