Emacsのorg-modeでGTDを始めてみた

今更ながらGTDを始めてみた。頭の中がもやもやしてしまってストレスがたまっていたからだ。きっかけはorg-modeとの出会い…っていうか本腰入れて使ってみようと思ったから。そこでGTDが話題になっていた。

GTDは収集→処理→整理→レビュー→実行のプロセスを経る。そして毎週レビューする、これ最重要。頭の中をクリーンな状態に保って効率を上げる。

収集は頭の中で思い付いたことを「すべて」メモリダンプする作業だ。初GTDならば本来数時間取られるけど、俺はメモ魔なのでそんなに時間を取らないだろう。元からかなり書き出されている。頭がぼーとしているときに寝転んで数十分ほど紙に書き出してみた。

処理はリストに移動する作業だ。もちろんその前に収集した内容をorg-modeに書き込んでおく。うーん、リストに移動する際、手作業でカーソルを移動させるのは面倒でやってられん。org-modeでInbox内のツリーを特定の階層に移動するEmacs Lispを書くべきだな、こりゃ。それとも最新版ではそういうコードがあるかな?写真でわかるGTD(初回編) (3/4) - ITmedia エンタープライズフローチャートが書いてあった。フローチャートってなんか苦手なので母国語(笑)のRubyで書き下してみた。こんなんでいいのかな。NoMethodErrorとかNameErrorなんて野暮なツッコミはやめてくれ。

for task in Inbox 
  task.result = 理想の状態
  if task.一週間以内に前に進める必要がある?
    next_action = task.next_action
    if task.複雑?       # 次のアクションを考えるのがなにか面倒そうな場合
      ProjectList << task
      next_action = review task
    end
    if next_action.十分簡単? :time_limit => 2.minutes
      next_action.doit!    # 今すぐやれ
    elsif next_action.自分でやるべき?
      if next_action.あとでやる?
        Calendar << next_action
      else
        NextActionList << next_action
      end
    else
      WaitingList << next_action
    end
  else
    if task.もはや必要ない?
      task.destroy!
    elsif task.資料?
      DataFolder << task
    else
      MaybeList << task
    end
  end
end

整理はorg-modeに落とし込んでいくことなのだが、処理の段階で書き込まれてるから不要?org-modeはカレンダーとの連携もできるし。

レビューは今日やることを選定する作業。初回はリストが最新なので不要。「週次レビュー」でいろいろやる。んだけど、行動する順番を決めたりするのはここなのかな?それとも整理?

実行は文字通りさあやれということ。

org-modeはPlain Textなのでバージョン管理ができる。diffを取れば仕事の進捗がわかる。こういう単一のファイルの場合もローカルでgit使えばいいのかな?vc-git.elもあるし、RCSよりも高機能だろうし。

追記

やはりツリーを特定の階層に移動させるコマンドorg-refileがあった。C-c C-wでできるのが便利だ。バージョン6.12からなのでつい1ヶ月ちょい前に実装されたのだった。やはりバージョンアップした甲斐があった。
どうやって探したかというと、ドキュメントでツリーをkillするコマンドorg-cut-subtreeを見付けて、ソースからそれを検索したのだった。