覚えられませんっ

元「覚えらんない人のためのオンラインソフト備忘録」。遅ればせながらブログ移行してみた次第。

「デジタル手帳」の仕事術^^;;-TODO編-

スケジュールとTODO

Outlookでは、「予定」と「仕事」は別物、という視点が採られている。そもそもが、この視点自体我々日本人にとってかなり新しいものなのかもしれない。というのは、能率手帳をはじめとする従来の綴じ手帳には、TODOリストにあたるページは存在しなかったからだ。Things to doとかDon't forgetとかのチェックリストは80年代のシステム手帳ブームのおりに輸入された考え方であろう。基本的にアナログ視点のTODOリストはこの当時から特に進化してはおらず、その日あるいは1週間程度にすべき仕事を書き出し、済んだものをチェックオフしていく、その快感が日々を充実させてくれる、というような概念のものである。
これは基本的に、短期間のリストである。まったく急ぐことではないのだが、機会があればやっておこう、というようなことは通常この手のTODOリストには入れてもらえないか、入れてもらえたとしてもリストが目に触れる時間の範囲内で処理してもらえずに翌日なり次週なりのチェックリストに先送りされる可能性が高い。次のチェックリストが作成される時には忘れ去られている可能性すらある。特にスケジューラーとチェックリストが同一ページ内に存在する場合、過去のページにやり残しのTODOの屍が累々ということにもなりかねない。前回触れた「第2領域」の活動には締切がない場合が多いので、「第2領域」ほどあとまわしになりがち、という悪循環も生まれやすい。
「第2領域的」な、時間制限のないTODO,時間との関わりのないTODOは、週間スケジュールなどの時間によって視点が移っていくページに記入してはならない。アナログの場合でも、野口悠紀雄氏が近著『超手帳法』で述べているように、この目的のためだけのノートを用意すべきである。
しかし、このようなノートであっても、処理されずに残ってしまった案件はやはり時間の経過とともに「去る者日々に疎く」なることは免れない。新しい案件がどんどん入ってくれば、ノートはやがて次のページに進んでしまうからである。前出の『超手帳法』の中ではデジタルTODOリストのデメリットが述べられているが、その最大のものは「要件が見えなくなること」とされている。これは、俺が思うにまったく逆である。アナログであれば時間の経過とともに見えなくなるものが、デジタルであるからこそ見えている状態にすることが可能なのだといいたい。

デジタルTODOリストのメリット

アナログのTODOリストは、前述のようにどうしても時間の呪縛から逃れることが難しい。しかしデジタルのTODOリストであれば時間の呪縛とは無縁でいられる。検索やマスクの機能がそれを可能にするのだ。Outlookにデフォルトで用意されているビューだけでも「今後7日間の仕事」「終了した仕事」「期限の過ぎた仕事」「分類項目別」などがある。該当するもの以外にマスクをかけて表示してくれたり、分類項目別にグループ化して表示してくれるわけだ。さらに時間を軸として表示したいのなら「時間帯」ビューを用いるといわゆるガントチャートとしての表示さえ可能である。もちろんソートも自由自在だ。
さらにデジタルならではのメリットとして、前回のスケジューラーでも述べたように、物理的なスペースの制限がなく、いくらでも書ける、ということがある。やった方がよいことは小さなことでもスペースを気にすることなくTODOリストに入力できる。そして仮にそれらが数百件のリストになったとしても、様々なビューとソート機能が条件に該当する要件を瞬時に探し出してくれるのだ。

「ついでにのシステム化」

西村晃氏の提唱する「ついでにのシステム化」。ある場所に出かけた時に、その場所でついでにできることをやってしまおう、それをきちんとリストアップしておく習慣を付けてシステム化しよう、という考え方である。この考え方を徹底させると、TODOリストの「分類項目」は「場所」をひとつのキーとすべきであることがわかる。前述のようにOutlookでは分類項目別にグループ化して表示できるので、たとえば「銀座」という項目を作成して分類しておけば、「銀座」に出向いた時にすべきことがグループ化できるわけだ。また、分類項目を複数割り当てることも可能なので、たとえば東急ハンズで買い物がある場合、「渋谷」「池袋」の両方の分類項目を割り当てておけば、同じものが「渋谷」「池袋」両方のグループに表示されることになる。Outlookはこのへんのフレキシビリティもよくできていると思う。

「覚えらんない人」むけの「ルーティンワークチェックリスト」

普通の頭の持ち主であるみなさんはおそらく毎日習慣的に行っていることをうっかり忘れたりはなさらないでしょう。しかし覚えらんない人=俺はとうに寿命の半分を生きてしまったこともあり、さすがに飯を食ったか食わないかがわからなくなることまではないが、犬に餌をやったかやらないか程度のことがどうしても思い出せなくなることがある。また就寝前に玄関の施錠を忘れるとか、台所の換気扇を朝までまわしっぱなしとか、コップに水を汲んでいたのを忘れて小一時間も出しっぱなしとか、こういったことが俺の身の上にとっては本当にあった怖い話なのでイヤになる。
こうした毎日の習慣をチェックしていくのには、Outlookの仕事に毎日の定期的な仕事としてアラームを指定しておく、という手もあるが、これをやるとTODOリストが「犬に餌をやる」「玄関のカギを確認」などという日常的なあまりに日常的なTODOであふれかえり、リストが見にくくなるうえに格好悪くて人前でPDAなど使えたものではなくなるだろう。
そこで俺は毎日の雑多なルーティーンワークをチェックするリストを作っている。このリストは前回書かせていただいたテキスト日記のボトムの部分に記述しておき、PrincipiaさんでいただいてきたAutoHotKeyスクリプトのCheckList.ahkでTODOリストとしてデスクトップに出しておき、全部チェックされたら閉じる、というやり方で使用している。このスクリプトは・から始まる行をリストアップしてチェックボックスつきのチェックリストとして表示してくれるもの。また就寝前には毎日共通の就寝前用のリストをTclock2chの自動実行で表示し、全部チェックアップされるまでは寝られない、というのを約束事にしている。*1
なお、Principiaさんのオリジナルはテキストファイルからチェックアウトした行を削除するような作りになっているが、ルーティーンワーク用には毎日毎週同じものを使うことになるので、以下に晒すものは削除しないように自己流で書き換えてある。俺の自己流はあてにならないことおびただしいので、使用なさる場合は自己責任でお願いします。不安な方はPrincipiaさんでもらってください。

;===============================================================================
; CheckList.ahk - ファイルから項目を読み込んでチェックリストを作成。;ぷりんきぴあさんで入手したものに手を加え、チェックしたものをテンポラリで削除して最終的にはもとのリストを書き戻すようにしたもの。
;===============================================================================

list = %1%	; 第1引数を対象ファイルとする。

gosub Main
return

; チェックリストの作成
Main:
	i := 0
	Loop, Read, %list%
	{
		i += 1
		StringGetPos, dot_pos, A_LoopReadLine, ・
		If dot_pos=0	; ・が一文字目にある行を抽出。
		{
			StringTrimLeft, item, A_LoopReadLine, 2
			listup(item)
		}
	}
	Gui, Add, Button, X55 Default, Reload	; "Reload"ボタンの作成
	Gui, Add, Button, x+25 yp+0 Default, New	; "New"ボタンの作成
	Gui, Show, X0 Y0, %1%
	
	WinSet, Transparent, 180, CheckList.ahk	; チェックリストウィンドウの透過度
	WinSet, AlwaysOnTop, On, CheckList.ahk	; チェックリストウィンドウを最前面
	
	return

listup(item)
{
	Gui, Add, Checkbox, W200, %item%	; 幅200px
	GUI, Submit
}

; "Reload"ボタンを押した時の挙動
ButtonReload:
	FileMove, %list%, %list%.tmp, 1	; 一時ファイルを作成
	Loop, %i%
	{
		GuiControlGet, x%a_index%, , Button%a_index%
		GuiControlGet, s%a_index%, , Button%a_index%, Text
		buf := s%a_index%
		If x%a_index%<>0	; チェックの付いてる項目だけ対象ファイルに書き出す。
			Continue
		else
			FileAppend, ・%buf%`n, %list%
	}
	GUI, Destroy	; 現在のチェックリストウィンドウを破棄
	gosub Main	; 対象ファイルの再読み込み。
	
	return

; "New"ボタンを押したときの挙動
ButtonNew:
	WinSet, AlwaysOnTop, Off, CheckList.ahk
	InputBox, UserInput, 新規登録, , , 200, 90
	If ErrorLevel <> 0
		return
	else
	{
		FileAppend, `n・%UserInput%, %list%	;ファイルに書き出す
		GUI, Destroy
		gosub Main
		WinSet, AlwaysOnTop, On, CheckList.ahk
	}
	return

; ウィンドウを閉じた時の挙動
GuiClose:
	FileMove, %list%.tmp, %list%, 1	; もとのファイルを書き戻す
	ExitApp

これを使うと、日記の中にTODOリストを作ることができるので、みやすたっぷでCheckList.ahkの引数に曜日ごとの日記テキストファイルのパスを指定してやれば、毎日起動時に曜日ごとのルーティーンワーク用チェックリストを表示することができるようになる。

「新しい〜」にグローバルホットキー

俺は自分の記憶力を本当に金輪際信用できないので「あ、あれやんなきゃ」と思いついた時に予定であれ仕事であれ速攻で入力画面を開いて速攻で書かなければならない。OutlookがアクティブならばCtrl+Shift+英字キーで「新しい〜」の入力画面が出せるが、これはグローバルホットキーではない。そこでこれもAutoHotKeyをつかってWindowsキー+英字キー一発で開けるようにしている。Autohotkey.iniに

#k::Run, "C:\Program Files\Microsoft Office\Office10\OUTLOOK.EXE" /c ipm.task
#a::
	Run, "C:\Program Files\Microsoft Office\Office10\OUTLOOK.EXE"  /c ipm.appointment
	Sleep, 300
	send, !j
	return
#n::Run, "C:\Program Files\Microsoft Office\Office10\OUTLOOK.EXE" /c ipm.stickynote

を記述するだけ。グローバルホットキーWin+kで「新しい仕事」Win+aで「新しい予定」Win+nで「新しいメモ」を開くことができる。*2

次回は「メモ」について

PC上でのメモに関して俺のやり方は文具としてのコンピュータを考える(2)-メモ(情報カード) - 覚えらんない人のためのオンラインソフト備忘録を書いた当時と基本的にはまったく変わっていない。相変わらずで取り込みMCDBのクエリーで絞り込み検索、という形が基本。したがって次回のメモのお話しはリナザウを中心とした外出時のメモのお話しと、アイディアノートについてのお話し。たいしたことは書けないと思いますが。
次回で「デジタル手帳」シリーズは一応終了とします。

*1:基本的に俺は起床してから就寝するまで自宅でだらだら仕事をしているので、就寝時以外はコンピュータを休止状態にすることはあっても電源を落とすことはほとんどない。

*2:俺んちではなぜか予定だけが入力欄にフォーカスが移らないので、Alt+jで「件名」の入力欄に強制的にフォーカスを移動している。