Emacs org-modeを使ってみる: (12) GTDツールとして

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

今回は,GTD (Getting Things Done)ツールとして使う方法についてまとめてみる.
なおUbuntu 8.04 LTSとEmacs22上で, org-6.34c (2010年1月10日リリース)の利用を前提にしている.

参考資料

GTD (Getting Things Done)ツールとして活用する方法についての Webページには以下のようなものがある.

GTDとは

Wikipediaによると,GTDのシステムは以下のように行う.


GTDは次の5つのステップで構成され、これを1週間など一区切りごとに繰り返す。

  1. 収集:頭の中にある「気になっていること(問題)」を紙などに書き出す。作業中のメモ書きなども参照して、問題点を出して行く。
  2. 処理:書き出した内容を、手順に添って、リスト化する。
  3. 整理:リストを自身がスケジュール管理に使っているツール(PDAやシステム手帳など)に入れ込む。
  4. 見直し:自分の状況や状態でそれらが可能かどうか見直し、検討する。
  5. 実行:リストアップした「出来ること」を順次片付ける。

準備

準備として,いくつかのファイルとタグを使い分けるようにする.

ファイルの利用

たとえば,以下のようにいくつかのファイルを ~/org/ ディレクトリ中に作成する.

  • メモ用: ~/org/notes.org
  • 仕事用: ~/org/work.org
  • 家用: ~/org/home.org
  • 読み物用: ~/org/readings.org

実際にどのようなファイルを利用するかは,各自の使い方に応じて変更して欲しい.
さらに,各ファイルの先頭に以下のように記述し, 10文字以内のカテゴリ名を設定する(設定しなければファイル名がカテゴリ名となる).

#+CATEGORY: メモ
タグの利用

次に,各種タスクのコンテキストを表すためにタグ名を設定する.
タグ名を用いると,すべてのorgファイルにまたがって,タスクの種類を分類できる.たとえば,以下のような分類が考えられる.

  • どこで行うタスクか
    • オフィス,出先,店,銀行,書店など
  • 誰に対して行うタスクか
    • ボス,部下など
  • 何をするタスクか
    • 報告,買物,振込,電話,メール,読書など
  • 何を使うタスクか
    • パソコン,携帯電話など
  • どのようなタスクか
    • プロジェクトなど

ここでは,以下のタグを利用する.

タグ名 ショートカット 意味
@OFFICE o オフィスで行う
@HOME h 家で行う
SHOPPING s 買物する
MAIL m メールする
PROJECT p プロジェクト

これも,実際にどのようなタグを利用するかは,各自の使い方に応じて変更して欲しい.
すべてのorgファイルで同一のタグを用いる場合は,.emacsファイル等に以下のように設定する.

(setq org-tag-alist
  '(("@OFFICE" . ?o) ("@HOME" . ?h) ("SHOPPING" . ?s)
    ("MAIL" . ?m) ("PROJECT" . ?p)))

orgファイル毎で設定する場合は,ファイル中に以下のように記述する.

#+TAGS: @OFFICE(o) @HOME(h)
#+TAGS: SHOPPING(s) MAIL(m) PROJECT(p)

タグを設定するには,見出し行で「C-c C-c」とタイプすれば良い.見出し行には,複数のタグを設定できる.

TODO状態遷移の変更

ファイル中に以下のように記述すれば,ファイル毎に利用するTODO状態を設定できる.

#+TODO: TODO(t) WAIT(w) | DONE(d) SOMEDAY(s) CANCEL(c)

ここでは「TODO」キーワードは, GTDでの「次のアクション (Next Action)」の意味で用いている.
また,以下のように「!」を追加すると,その状態への変更の日時を記録できる.

#+TODO: TODO(t!) WAIT(w!) | DONE(d!) SOMEDAY(s!) CANCEL(c!)
プロジェクト

複数のサブタスクからなるタスクには, PROJECTタグを付けると良い.
また,見出しに [/] や [%] を付けると完了した件数や割合を管理できる.
たとえば「第1回ORG会議」の後ろに [/] を記述する.

* 第1回ORG会議 [/] <2010-02-26 金 13:30-14:30>                    :PROJECT:
** WAIT [#A] 資料準備
   DEADLINE: <2010-02-25 木> SCHEDULED: <2010-02-22 月>
** TODO [#B] 開催通知
   DEADLINE: <2010-02-25 木> SCHEDULED: <2010-02-24 水>

ここで「資料準備」の状態を「DONE」にすると,完了した件数が [1/2] のように表示される.

* 第1回ORG会議 [1/2] <2010-02-26 金 13:30-14:30>                    :PROJECT:
** DONE [#A] 資料準備
   DEADLINE: <2010-02-25 木> SCHEDULED: <2010-02-22 月> CLOSED: [2010-02-22 月 10:00]
** TODO [#B] 開催通知
   DEADLINE: <2010-02-25 木> SCHEDULED: <2010-02-24 水>

GTDの実践

以下のGTDサイクルに応じて,GTDの実践の一つの方法について説明する.

  • 収集
  • 処理と整理
  • レビュー(評価)
  • 実行
収集

(8) メモを取る の方法で,メモを取る.メモは ~/org/notes.org の「Tasks」見出し中に保存される.

処理と整理~/org/notes.org の「Tasks」見出し中の項目に対し,以下の流れで処理を行う.
  1. 「行動を起こす必要があるか?」
    • 行動を起こす必要があるなら,2へ
    • いつかやれば良い場合は,TODO状態をSOMEDAYにする(C-c C-t s)
    • メモを残しておけばよいだけなら,TODO状態はなし
    • 不要なものは,削除
  2. 「次のアクションは複雑か?」
    • 複雑でないなら,3へ
    • 複雑なら,TODO状態をTODOにし(C-c C-t t),PROJECTタグを付ける(C-c C-c p)後ほどのレビューにより,次のアクションが決まる.
  3. 「2分以内でできる?」
    • できるなら,すぐ行動し,終了
    • できないなら,やるべきアクションを具体的に書き,4へ
  4. 「自分ですること?」
    • 自分ですることなら,TODO状態をTODOにし(C-c C-t t),5へ
    • 待たなければいけないことなら,TODO状態をWAITにし(C-c C-t w),終了
  5. 「いつやる?」
    • 締切りがあれば締切りを入れ(C-c C-d),いつやるかが決まればスケジュールを入れる(C-c C-s)

Tasksにあった項目は,適切なファイルや見出しにリファイルし, Tasks中の項目を空にする.

レビュー

以下を定期的(毎日,毎週)に実行する.
スケジュールを決める
「C-c a M」とタイプして「-SCHEDULED>="now"」の検索条件を入れると,スケジュールの決まっていないTODOおよびスケジュールが現在以前のTODOがアジェンダ表示されるので,これらのスケジュールを設定する.
なお,以下のように設定しておけば「C-c a x」で表示される.

(setq org-agenda-custom-commands
  '(("x" "Unscheduled TODO" tags-todo "-SCHEDULED>=\"<now>\"" nil)))

あるいは,org-agenda-todo-ignore-scheduled, org-agenda-todo-ignore-deadlinesの変数を設定しておけば,SCHEDULEDやDEADLINEの設定されているTODOをアジェンダ表示に含めないことができる.
プロジェクトに対する次のアクションを決める
「C-c a M」とタイプして「PROJECT」の検索条件を入れると, TODO状態のプロジェクトがアジェンダ表示される.
これらに対し,子見出し(子タスクに対応)を作成し,次のアクションに対応するTODO状態(TODOあるいはWAIT)を付ける.元のTODOは消しておくのが良いだろう.
なお,以下のように設定しておくと,「C-c a #」により小見出しにTODOあるいはWAITの現れていないプロジェクトがアジェンダ表示される.

(setq org-stuck-projects
  '("+PROJECT/-DONE-SOMEDAY" ("TODO" "WAIT")))

ちなみに,GTDにおけるプロジェクトとは,二つ以上の子タスクからなるタスクのことである.
TODOリストを確認
「C-c a t」でTODOリストがアジェンダ表示される.
以下のように設定すると,TODOリストのアジェンダ表示中で「C-c C-x C-c」とタイプした列表示で, SCHEDULEDとDEADLINEも表示される.

#+COLUMNS:   %25ITEM %TODO %PRIORITY %TAGS %SCHEDULED %DEADLINE

WAITリストを確認
TODOリストで「2 r」とタイプする.
SOMEDAYリストを確認
TODOリストで「4 r」とタイプする.
今週のスケジュールを確認
「C-c a a」で今週のスケジュールがアジェンダ表示される.

実行

今日のスケジュールを「C-c a a d」でアジェンダ表示し,必要があれば,アジェンダを「C-x C-w」でテキストファイルにエクスポートし,印刷する.
今日のスケジュールを実行していく.
実行したタスクは,DONEに変更する.プロジェクトのサブタスクで,次のサブタスクがある場合はそのサブタスクに対して処理と整理を行う.