« ^ »

作業をまんべんなくバランス良く進める

所要時間: 約 2分

これまで持っているタスクをどのように管理し、どの順番で処理するのかという事について様々な工夫をしてきた。現時点ではEmacsを使ってタスクを管理している。

Emacsには Org-mode というドキュメントシステムがある。これは軽量マークアップ言語であり、それらを統合的に扱うための仕組みだ1。他の軽量マークアップ言語との違いを考えると、 Org-mode 自身が様々な機能を取り入れていれている大きなシステムになっている。例えば表計算機能、出力の変換、タスクの管理、時間計測などだ。そして Org-mode の拡張として様々な機能がサードパーティとして公開されている。

僕はこの Org-mode の機能やその拡張である、 org-todoorg-agendaorg-super-agenda を使ってタスクの管理をしている。 org-todo の記法に従いタスクを Org-mode のファイル内に記述し、 org-agenda を使い一覧表示して進捗状況を把握している。 org-super-agendaorg-agenda の表示を更に見やすくするために、タスクのカテゴリをグループ化した表示を提供する。 org-super-agenda-groups 変数の設定によって表示する。この設定は、通常 .emacs.d/init.el に指定するため固定される。

表示順序が固定されると、表示上部(ファーストビュー)のカテゴリに属するタスクに目が行くため、どうしてもそのカテゴリの作業を優先して取り組んでしまう。

優先して取り組むカテゴリが固定している場合はそれで良いが、僕の場合は持っているカテゴリをそれぞれ進めていく必要があり、優先すべきカテゴリを固定しづらい。

つまり、作業をまんべんなく開発するために、 org-super-agenda-groups の設定( :order-multi 属性の値)をリングバッファのように循環させ、切り替えたい。このカテゴリの順序を切り替えられるようなEmacs Lispを実装した。

(setq org-cycleagenda-current-category "minet")

(defun org-cycleagenda-number-sequence ()
  (let ((first-index (ring-member org-agenda-categories-ring org-cycleagenda-current-category)))
    (number-sequence first-index (+ -1 first-index (ring-size org-agenda-categories-ring)))))

(defun org-cycleagenda-render-order-multi (index)
  `(:order-multi
    (,index
     (:category ,(ring-ref org-agenda-categories-ring
			   index)))))


(defun org-cycleagenda-render-super-agenda-groups ()
  `((:name "Habit" :habit t)
    (:name "Schedule" :todo "TODAY" :time-grid t)
    (:name "Deadline" :todo "TODAY" :deadline t)
    ,@(mapcar #'org-cycleagenda-render-order-multi
	      (org-cycleagenda-number-sequence))))

(defun org-cycleagenda-apply-next ()
  (interactive)
  (setq org-cycleagenda-current-category
	(ring-next org-agenda-categories-ring org-cycleagenda-current-category))
  (setq org-super-agenda-groups
	(org-cycleagenda-render-super-agenda-groups)))

これで、まんべんなく作業を進行できるようになる2。暫くはこれを使ってみる事にする。


1

代表的な軽量マークアップ言語に Markdown がある。 Markdown と一言で言っても様々な実装や付加的な機能を持ったものもあるので一括りにはできないが、通常 Markdown と言うとその記法に従いHTMLを生成するという部分に限られる。もちろんそこに様々な機能を追加したアプリケーションは存在する。

2

たぶん。おそらく。いや、きっとなるはず。