どんなふうにタスクを管理すれば効率を上げられるのだろう?
仕事やプライベートのタスクのほぼ全てを書き出して管理している。そうすると一人の社会人が関わるタスクがいかに多いかが分かる。それらのタスクは全て処理される訳ではないけれど、書く事で記録が残り後で見返す事ができる。それと引き換えにして、タスクの管理コストが増える。そのコストを下げるために、Emacsを使っている。Emacsにはorg-modeというドキュメントシステムがある。org-modeはドキュメント作成の他にも、プロジェクト管理、表計算、LaTeXやHTMLへの変換など多様な機能を提供している。Emacs Lispで実装されており、その挙動のほとんどを動的に変更できる。
今回は、僕がEmacsとorg-modeを使う上で工夫している事を書く事にする。
これはたんに僕が考えている事なんだけれど、正しいやり方というのは特になくて、それぞれが考えた思い思いのやり方が、その時のその文脈での正解だと思う。だから、ここに書く事も、特にそれが正解という訳ではなくて、今の僕にとって都合が良かった正解というだけだ。
キーバインド
- s-1
- 今やる事の一覧
- s-2
- 今日やる事の一覧
- s-3
- 明日やる事の一覧
(defun org-agenda-display-week-view-now ()
(interactive)
(org-agenda-list)
(org-agenda-week-view))
(defun org-agenda-display-priolity-A ()
(interactive)
(let ((org-agenda-custom-commands
'(("A" "Priority #A tasks" tags-todo "+PRIORITY=\"A\""))))
(org-agenda nil "A")))
(define-key override-global-map (kbd "s-1") #'org-agenda-display-priolity-A)
(define-key override-global-map (kbd "s-2") #'org-agenda-list)
(define-key override-global-map (kbd "s-3") #'org-agenda-display-week-view-now)
org-todoのstatusを増やす
org-todoにはTODOとDONEのステータスがデフォルトで用意されている。この値は org-todo-keywords
に追加したい値を設定する事でカスタマイズできる。完了状態なのか、そうでないかは |
記号よりも前に登録されているか、後に登録されているかによって判断される。ここでは必要と思われるステータスを追加する。
(setq org-todo-keywords
'((sequence "TODO" "EPIC" "WAIT" "GOAL" "MEET" "|" "DONE" "CANCEL" "MAYBE")))
なお、この値はcustomizeを使って変更できる。
アジェンダビューでの表示順序を指定する
アジェンダビューでプロジェクト毎にタスクが固まるように、 org-agenda-sorting-strategy
ソート戦略を設定する。
この変数は M-x customize
を使っても管理できるが、頻繁に変更するような運用をする場合、すぐに評価できるように setq
を.emacs.d/init.elに記述した方が都合が良い事もある。
(setq org-agenda-sorting-strategy
'((agenda time-up priority-down category-keep priority-down category-keep)
(todo category-down priority-down)
(tags priority-down category-keep)
(search category-keep)))
タスクの優先度を設定する
org-modeのタスクの優先度を設定する。Aが最優先だ。 優先度は以下の要素を鑑みて設定する。
- 締切日時
労力対価値
- 作業時間
- 心理負荷
(setq org-priority-lowest ?B)
org-agendaのフォーマット
%c / %e / %l / %T / %t / %s / %b /
%c the category of the item, \"Diary\" for entries from the diary, or as given by the CATEGORY keyword or derived from the file name %e the effort required by the item %l the level of the item (insert X space(s) if item is of level X) %i the icon category of the item, see `org-agenda-category-icon-alist' %T the last tag of the item (ignore inherited tags, which come first) %t the HH:MM time-of-day specification if one applies to the entry %s Scheduling/Deadline information, a short string %b show breadcrumbs, i.e., the names of the higher levels %(expression) Eval EXPRESSION and replace the control string by the result
(setq org-agenda-prefix-format '((agenda . " %i %-12:c%?-12t% s") (todo . " %i %-12:c") (tags . " %i %-12:c") (search . " %i %-12:c")))
(setq org-agenda-prefix-format
'((agenda . " %-30.30b %7(org-assign-assignee-value-custom) %4(org-clock-sum-current-item-custom) %4e ")
(todo . "%-9.9c / %e / %l / %T / %t / %s / %b / ")
(tags . "")
(search . "")
))
org-global-properties
(setq org-global-properties
'(("Effort_ALL" . "5 13 21 34 55 89 144 233 377 610 987")))
過去に設定していたカスタマイズ
過去に設定していたが、やめてしまった設定を記載しておく。
Emacsの設定ファイルを素早く開く
Emacsの設定ファイルは開く回数が多いため、素早く開けるように独自の関数を定義してキーを割り当てる。
(defun open-emacs-init-file () (interactive) (expand-file-name "~/.emacs.d/README.org")) (bind-key* "s-2" #'open-emacs-init-file)
ファイルを分割した事、org-agendaのキー割り当てにs-1やs-2を使いたかった事などから、の設定は使わないようにした。Emacsの起動画面のdefault-directoryをEmcsの設定ファイルのある場所にしてお茶を濁すなどした。