blechmusikの日記

キー・カスタマイズ・ソフトウェア "DvorakJ" の覚え書きをはじめとして様々なことを書いています。

EmacsのhowmをGTD向けアプリケーション用に改変している

 GTDといえば今となっては懐かしい響きのように聞こえるかもしれないが、訳あって howmGTD 用に改造して使っている。org-modeでGTDをいかに達成するかはさまざまなページで論じられてきたが、 howm の改造により同種のシステムに相当するものを作り出すということはどうやらあまり試されてこなかったようだ。
 howmGTDの考えをできるだけよく反映させるうえで気づき実装した点をいくつか手短に記したい。
 まず改変のベースとするのは howm-menu-reminder の実行結果である。そこで、その実行結果を一次的に保存するようにした。以下の一例をemacsの起動時に読み込むファイルに追記し、 howm-menu-reminder を実行すると *my-howm:howm-menu-reminder-original* と *my-howm:howm-menu-reminder-cached* の変数にその実行結果を自動的に格納する。

(setf *my-howm:howm-menu-reminder-original* "")
(setf *my-howm:howm-menu-reminder-cached* "")

(defadvice howm-menu-reminder (after my-howm:howm-menu-reminder activate)
  (let ((ret ad-return-value))
    (setq *my-howm:howm-menu-reminder-original* ret)
    (setq *my-howm:howm-menu-reminder-cached* ret)
    ret))

 こうして保存された howm-menu-reminder の実行結果に文字列を適宜追加したり、文字列を除去することで、表示するための文字列を設定するのである。


 続けて『Amazon.co.jp: ひとつ上のGTD ストレスフリーの整理術 実践編 仕事というゲームと人生というビジネスに勝利する方法: デビッド・アレン, 田口 元: 本』の付録6「ワークフロー処理と整理の流れ」*1の順序に従って、各種処理作業に対応するhowmの記号の関係をまとめておこう。

  • inbox用の記号表記システムを実装し、?記号を新たに導入した
  • 「いつかやる/多分やる」リストは~記号を利用する
  • 資料はwiki記法風の表記を利用する
  • プロジェクトは-記号を利用する
  • プロジェクトのプランはプロジェクトの記事のエントリーに書いておく
  • 連絡待ちは+記号を利用し、それに続けて@waitingを書いておく
  • カレンダーは!記号と@記号を利用する
    • !記号は自分自身の行動に関わるその日の予定
    • @記号は自分自身の行動に直接関わらないが知っておくべきその日の予定(想定しているのはhowm wiki - Holidayのようなものである)
  • 次にとるべき行動のリストは+記号を利用する
    • それに続けて@homeや@officeのように書けば、場所ごとに項目をまとめた一覧を生成する


 次に付録7「6つのレベルの見通し」*2に移るが、こちらはごく簡単なシステムを用意するにとどめている。

  • 高度マップは-記号を利用する

 すでに述べたようにプロジェクトでも-記号を利用している。そこで、-記号のあとに @1000 があれば「プロジェクト」、@3000 や @5000 があれば「目標とゴール」や「目的と重要な価値観」を意味するようにした。


 @home や @office といった文字列を入力する手間を軽減するために、auto-complete.elを活用していることも触れねばなるまい。auto-complete.elのオムニ補完を利用することで、空白のあとに@を入力すると @home や @office といった選択可能な項目が即座に列挙される。

(ac-define-source howm-gtd
  '((candidates .
                (list  " @home"
                       " @office"
                       " @anywhere"
                       ))
    (prefix . "\\( @.*\\)")))


(add-hook 'howm-mode-hook
          (lambda ()
            (auto-complete-mode t)

            (make-local-variable 'ac-auto-start)
            (setq ac-auto-start 2)

            (make-local-variable 'ac-sources)
            (add-to-list 'ac-sources 'ac-source-howm-gtd)
            ))

 他には、余興?としてタスクを done状態に変更した際に特定の音声ファイルを再生する機能をも盛り込んでいる。これは howm-congrats-hook に音源再生の一連の処理を追加することによって可能となる。

(add-hook 'howm-congrats-hook
          (lambda ()
            (play-voice-congrats)))

 howmの強力な全文検索機能(grep)と howm-menu-reminder の改変しやすさのおかげで、 GTD を有効に活用するためのシステムをそれなりに構築できたと思う。

*1:p. viii.

*2:pp. ix-x.