TODOのデータ構造について
TODOのデータ構造はキューであると考えている人が多いのではないか。しかし私の経験では、TODOのデータ構造はスタックである。
すなわち、後から追加されたTODOほど、先に処理される。逆に最初に追加したTODOは、いつまで経っても処理されない。これが現実であるから、どうしようもない。
しかしこれが現実であると言うことは、それが人間にとって自然であると言うことである。従って、スタック構造を採用したTODO管理システムこそが、パフォーマンスとモチベーションを最大化してくれるハズである。
だが人間が記憶領域に持っているスタックは非常に小さいため、いくつもpushすると最初にpushしておいた内容を忘れていってしまう。
- push そろそろ寝る
- push 寝る前に風呂に入る
- push 風呂に入る前にブログを書く
- pop
- pop
- push 水を飲む
- pop
- pop …なんだっけ?
人間の記憶に頼ったTODO管理では、すぐに破綻することは目に見えている。
そこで、TODOスタックをコンピュータに記憶させるためのツールatodeを開発した。このatodeコマンドは以下からダウンロードできる。
- atode 寝る
- 寝るをpushする
- atode 風呂に入る
- 風呂に入るをpushする
- atode -l
- 溜まっているTODOタスクを一覧表示する
- atode -k
- 先頭のタスクをpopする
- atode -z
- 先頭のタスクを後回しにする
以下のようなaliasを~/.bashrcなどに書いておくと良い。
alias atode?="atode -l" alias dekita="atode -k" alias orz="atode -z"
QuickSilverで呼び出せるとなお良いが、どうやってやればいいのか分からない。atode QuickSilverでコマンドを呼び出す方法を調べる。
使用例:
$ atode 寝る TODO: 寝る $ atode 風呂に入る TODO: 風呂に入る $ atode ブログを書く TODO: ブログを書く $ dekita done: 2008-04-09 02:16:08 ブログを書く $ atode? 2008-04-09 01:45:59 寝る 2008-04-09 01:46:01 風呂に入る $ dekita done: 2008-04-09 01:46:01 風呂に入る $ atode 水を飲む TODO: 水を飲む $ dekita done: 2008-04-09 02:57:34 水を飲む $ atode? 2008-04-09 01:46:46 寝る
atode?
2008-04-09 02:57:34 QuickSilverでコマンドを呼び出す方法を調べる。