org-modeをGTDに使う方法 #1
上図は2009年12月24日のスクリーンショット。 C-c a h コマンド結果の表示。
概要
- 参考にした情報:
- 拡張した事柄:
- 上記の参考情報から自分のスタイルに合うようにカスタマイズした。主にコンテキストタグやTODOタグである。
- 母艦以外のマシンからもシームレスにアクセス可能にした。tramp (SSH) を用いた。
- Googleカレンダーにエクスポートした。(次回以降紹介)
- iPhoneからアクセス可能にした。Mobile.org アプリを用いた。(次回以降紹介)
実践方法
気になることを全て書出す(収集)
- remember-mode を呼び出す (C-c r または F8)
- Todo(GTD)か notes(日々のメモ)かを選ぶ。
- 以下は週次レビューで行っても良い。
- コンテクストタグを選ぶ(OFFICE, HOME, Web, CALL)
- Todo の状態を選ぶ (TODO, STARTED, APPT, etc...)
- 締切日を登録する。(C-c C-d)
- スケジュールを開始する。(Next Action に対応)(C-c C-s)
- タスクを保存する。(C-c C-c)
日々の操作
- タスクを確認する。以下のどの方法で良い。
- 今日するべきことを確認する。 (C-c a d)
- コンテクストでタスクを確認する。(C-c a h)
- タイムライン上でタスクを確認する。(C-c a L)
- タスクの TODO 状態を DONE などに変更する (C-c C-t)
- 新しいスケジュールがあれば remember-mode (F8)で追加する。この場合TODOタグを APPT とする(C-c C-t)。
週次レビュー
- org ファイルを開く。 (C-c g または [F7])
- INBOX にたまったタスクを精査する。
- フローチャートにしたがって行動する。
- 適宜プロジェクトに分類する。(C-c C-w)
- 適宜締切日を登録する。(C-c C-d)
- 適宜スケジュールを開始する日を登録する(Next Action に対応)(C-c C-s)
org-mode の設定
org-modeの設定は、(1).emacs における設定と (2)orgファイルの指示行による設定の2種類である。
ここでは、文献*1をベースに、改造をした。現在用いている設定を末尾に掲載する。日々のGTDの実践のなかで、使い易いように書き換えてゆけば良いと思う。
母艦以外のマシンからシームレスにアクセスする方法
Emacsにはtrampという素晴らしいプログラムが標準で用意されている。古株のEmacsユーザには周知だろうが、trampはあの愛すべきコードange-ftpをsshなどの複数のメソッドに拡張したものである。trampを用いると、シームレスにリモートのファイルにアクセスすることができる。わざわざリモートマシンのHDDをマウントするほどではないが、シームレスにアクセスしたい場合に大変有効である。
org-mode において、trampを用いる方法はとても簡単である。母艦のorg-modeに関するemacs-lispの設定で、次のように設定してる箇所がある場合、
"~/org/foo.org"
上記を次のように機械的に置換すれば良い。
"/bokan.domain.jp/org/foo.org"
"/plink:bokan.domain.jp/org/foo.org"
とするほうが良いかもしれない。これはNTEmacsがsshを直接呼べないために、plinkを用いてsshを話すための方法である。
org-mode の設定(詳細)
設定するべきファイルは次の通り
Emacs-Lispによる設定(~/elisp/org-mode.el)
org-mode.el の内容は次の通りである。文献で紹介されたいた .emacsを元にしている。
(custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(auto-raise-tool-bar-buttons t t) '(auto-resize-tool-bars t t) '(calendar-week-start-day 1) '(case-fold-search t) '(org-agenda-files (quote ("~/org/birthday.org" "~/org/gtd.org"))) '(org-agenda-ndays 7) '(org-agenda-repeating-timestamp-show-all nil) '(org-agenda-restore-windows-after-quit t) '(org-agenda-show-all-dates t) '(org-agenda-skip-deadline-if-done t) '(org-agenda-skip-scheduled-if-done t) '(org-agenda-sorting-strategy (quote ((agenda time-up priority-down tag-up) (todo tag-up)))) '(org-agenda-start-on-weekday nil) ;; '(org-agenda-todo-ignore-deadlines t) ;; '(org-agenda-todo-ignore-scheduled t) ;; '(org-agenda-todo-ignore-with-date t) '(org-agenda-window-setup (quote other-window)) '(org-deadline-warning-days 7) '(org-export-html-style "<link rel=\"stylesheet\" type=\"text/css\" href=\"mystyles.css\">") '(org-fast-tag-selection-single-key nil) '(org-log-done (quote (done))) '(org-refile-targets (quote (("gtd.org" :maxlevel . 1) ("someday.org" :level . 1)))) '(org-reverse-note-order nil) '(org-tags-column -78) '(org-tags-match-list-sublevels nil) '(org-time-stamp-rounding-minutes 5) '(org-use-fast-todo-selection t) '(org-use-tag-inheritance nil) '(unify-8859-on-encoding-mode t nil (ucs-tables))) ;; These lines only if org-mode is not part of the X/Emacs distribution. (autoload 'org-mode "org" "Org mode" t) (autoload 'org-diary "org" "Diary entries from Org mode") (autoload 'org-agenda "org" "Multi-file agenda from Org mode" t) (autoload 'org-store-link "org" "Store a link to the current location" t) (autoload 'orgtbl-mode "org" "Org tables as a minor mode" t) (autoload 'turn-on-orgtbl "org" "Org tables as a minor mode") (add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) (define-key global-map "\C-cl" 'org-store-link) (define-key global-map "\C-ca" 'org-agenda) ;(setq org-log-done nil) (setq org-log-done t) (setq org-agenda-include-diary nil) (setq org-deadline-warning-days 7) (setq org-timeline-show-empty-dates t) (setq org-insert-mode-line-in-empty-file t) (require 'org-install) (autoload 'remember "remember" nil t) (autoload 'remember-region "remember" nil t) (setq org-directory "~/org/") (setq org-default-notes-file "~/org/notes.org") (setq remember-annotation-functions '(org-remember-annotation)) (setq remember-handler-functions '(org-remember-handler)) (add-hook 'remember-mode-hook 'org-remember-apply-template) (define-key global-map "\C-cr" 'org-remember) (setq org-remember-templates '( ("Todo" ?t "* TODO %^{やること} %^g\n%?\nAdded: %U" "~/org/gtd.org" "INBOX") ("Note" ?n "\n* %U %^{トピックス} %^g \n%i%?\n %a" "~/org/notes.org") )) (define-key global-map [f7] 'gtd) (define-key global-map [f8] 'remember) (define-key global-map [f9] 'remember-region) (setq org-agenda-exporter-settings '((ps-number-of-columns 1) (ps-landscape-mode t) (htmlize-output-type 'css))) (setq org-agenda-custom-commands '( ("p" "Projects" ((tags "PROJECT"))) ("h" "Office and Home Lists" ((agenda) (tags-todo "OFFICE") (tags-todo "HOME") (tags-todo "WEB") (tags-todo "CALL") )) ("d" "Daily Action List" ( (agenda "" ((org-agenda-ndays 1) (org-agenda-sorting-strategy (quote ((agenda time-up priority-down tag-up) ))) (org-deadline-warning-days 0) )))))) (setq org-todo-keywords '((sequence "TODO" "APPT" "STARTED" "DONE"))) (defun gtd () (interactive) (find-file "~/org/gtd.org")) (global-set-key (kbd "C-c g") 'gtd) (add-hook 'org-agenda-mode-hook 'hl-line-mode)
orgファイルの設定(~/org/gtd.rog)
~/org/gtd.org は次のような感じである。文献で紹介されたorgファイルをベースにしている。ファイルの最後に org-modeの設定を書くための見出しを立てて、設定を不可視にしている。設定はファイルの先頭でなくても良い。
* INBOX #+CATEGORY: INBOX * Research #+CATEGORY: Research * Project A #+CATEGORY: Project A * Private #+CATEGORY: Private * Archive #+CATEGORY: Archive * org-mode configuration #+STARTUP: overview #+STARTUP: hidestars #+STARTUP: logdone #+PROPERTY: Effort_ALL 0:10 0:20 0:30 1:00 2:00 4:00 6:00 8:00 #+COLUMNS: %38ITEM(Details) %TAGS(Context) %7TODO(To Do) %5Effort(Time){:} %6CLOCKSUM{Total} #+PROPERTY: Effort_ALL 0 0:10 0:20 0:30 1:00 2:00 3:00 4:00 8:00 #+TAGS: { OFFICE(o) HOME(h) WEB(w) DOWNTOWN(d) CALL(c) } #+TAGS: PROJECT(p) READING(r) #+TODO: TODO(t) STARTED(s) WAITING(w) APPT(a) | DONE(d) CANCELLED(c) DEFERRED(f)
スクリーンショットはこんな感じ。
orgファイルの設定(~/org/notes.org)
#+STARTUP: overview #+STARTUP: hidestars #+TAGS: OFFICE(o) RESEARCH(r) DIARY(d) BOOK(b) FILMS(f) IDEA(i) WEB(w) COMPUTER(c) * 記録とメモ ** [2009-04-23 木 18:53] ほげほげの メモ :OFFICE:
orgファイルの設定(~/org/someday.org )
いつかやることを記すファイル。とくに設定はない。
* Someday ** 大金持ちになりたい。 ** 富士山に登頂したい。
orgファイルの設定( ~/org/birthday.org)
予め決まっている日程を書くファイル。誕生日や祝日を記す。現在はとくに使っていない。
次回
次回のエントリーでは、org-modeをGoogleカレンダーにエクスポートする方法を紹介したい。Googleカレンダーの仕様が変則的なため、多少工夫が必要である。