気を抜くとすぐサボるので、出来る限り自分を働かせたいが、ずっと『頑張る』だと息が続かないので、プログラムで適切に通知する。
基本はポモドーロテクニックなのだけれど、ポモドーロテクニックを管理するアプリケーションはその時間の『中身』まで特に言及しないので難しい。
そこで見つけたのがこちら
Focus
起動すると Blacklisted なサイトに繋がらないとか、 Blacklisted なアプリケーションが落とされるとかするロックなアプリケーション。
標準の Blacklisted なサイトに加え、僕がよく見てる小説サイトとか、ニコ動とかを入れてある。アプリケーションは LINE と Twitter を落とすようにした。
これだけで大分違う。特に『手持ち無沙汰になると Cmd+L して b.haten ではてブトップを見に行ってしまう』というバカみたいな悪癖の防止になる。
Focus with script
Focus には focus 開始時と unfocus 時に bash スクリプトを実行出来る機能があるので、 focus 時に以下のようなコードを入れてある。
touch /tmp/focus-now
open -a Reminders.app
touch
がなぜ必要かはあとでわかるけど、やってることは単に Mac 標準のリマインダーアプリを起動してるだけ。すでに起動済みの場合はフォーカスが移るので、どうやっても視界に入れさせられるハメになる。
なんかのタスクやコード書いてると、途中で『おっ、これライブラリ化できるのでは?』とか言い始めて脇道にそれるから、最悪それても25分以内に現実に帰ってこれるようにした。それるのはまぁ、仕方ない。そういうのもクリエィティブだよ。
んで肝心の unfocus の方
rm /tmp/focus-now
terminal-notifier \
-title "おつかれさまでした!" \
-message "もし延長が必要なら、すぐにこの通知をクリックしましょう。" \
-group "focus-rest" \
-remove "focus-rest" \
-sender "BradJasper.Focus" \
-open "focus://focus?minutes=5"
sleep 300
[ ! -f /tmp/focus-now ] && terminal-notifier \
-title "そろそろお仕事しませんか?" \
-message "5分もゆっくりなさったんですから、お元気でしょう?" \
-group "focus-5min" \
-remove "focus-5min" \
-sender "BradJasper.Focus" \
-open "focus://focus?minutes=25"
exit 0
ちょい煽ってる文言なのは僕の趣味なんでお好きに変えていただくとして、 teminal-notifier の機能をフル活用した作りになってる。
-sender
は BundleID を指定するとそのアプリケーションの通知として機能するようになるので、別の通知と分けるために使ってる。これ指定しないとなんでもかんでも terminal-notifier からの通知になるから気をつけた方がいい。
-group
と -remove
を指定してるのは、同じ通知で通知センターが圧迫されないように。これを入れておくと、最悪放置してても最後の一件だけが残るようになる。ゴミは溜めない。
そして、肝心の -open
だけど、このカスタム URI スキームは Focus が標準で提供してる機能で、ターミナルとかから手軽に Focus を起動するためにあるんだけど、これを使って『もうちょっと、もうちょっとだけ!』を実現してる。
この際、延長したのに『5分もゆっくりなさったんですから……』って言われると頭の血管ブチ切れるので、それを抑制するために /tmp/focus-now
のロックが生きてくるという感じ。便利。
厳密な管理は息苦しい
正直、通知を無視して仕事し続けるのも休み続けるのも出来るんだけど、問題はそれが常態化することで、ポモドーロテクニックはイケてるけど、それに縛られ続けるってのもよくない。
僕は仕事し続けるのもしんどいけど仕事でいい感じに進んでる時に強制的に休まされるのも嫌いなので、例えば『ハーイ5分休憩でーす。コーヒーを飲みなさーい』とかされるとめちゃ腹立つ。
その辺を柔軟にするための延長機能拡張で、これはなかなか悪くない。急かされるけど怒られはしない感じ。
そういう管理面もほとんど割れ窓だと思っていて、結局ポモドーロアプリ起動しなくなって終わるなら、厳密じゃなくてもいいからゆるい感じで出来る範囲の運用した方がいいと思う。
まとめ
Focus.app 買え。