一本集中〜↑↑

VOYAGE GROUP Advent Calendar 2015 の 22 日目のエントリです。

小学生時代での成績表に「落ち着きがない」と書かれ何も変わらないまま大人になった自分には、長年の課題として集中力がないというのがあります。サンタさんには集中力をくださいと願っているのにいつも届かないです(クリスマス要素クリア)。僕は常に進捗が最高なのですが、たまに「今日はいつもより進捗が最高じゃないな?」とか思ったり、それが続くと効率的に動けているかとか集中力のこととかについて考えます。今回はその集中を続けるためのポモドーロテクニックという枠組みで必要なタイマーを作った話をします。

集中力の意味を弊社自慢の辞書横断検索サービス「コトバンク」で引いてみると(VOYAGE GROUP 要素クリア)

kotobank.jp

とのことです。今回は集中力がない状態というのを、ある物事に注意を向けにくい状態ということにします。集中できなくなってしまう要因としては色々あります。TwitterSlack の通知の割り込みが入ってきてしまうので作業中にその対応をすることになってしまったり、辛いものを食べてなんだかとてもお腹が痛かったり、火事ですぐに作業を中止しないといけなかったり、文章中にそれほど重要ではないリンクや修飾語や(カッコ書き)があったりする、などが物事を進めることを邪魔します。集中力がない場合はやらないといけない・やりたいと思うような気になることが他にもあって、そっちに手をつけてしまうわけです。一本に集中したい。

ポモドーロテクニック

ポモドーロテクニックは集中するためのシンプルな枠組みです。

  1. 終わらせたいタスクを選ぶ
  2. 25 分、タスクに取り組む (それ以外はしない)
  3. 短い休憩
  4. 2 と 3 を 4 回繰り返したら 20 分の休憩

というシンプルな枠組みです。この枠組みがもたらす効果としては「他のことに気をやらなくていいので思考がシンプルになる」「割り込みを無視できる(強い意志が必要)」とか色々あるとは思うのですが、僕は「必ずタスクに取り組んでいるので前に進む」というのと「25 分は取り組もうという気にさせる取っ掛かり」の2つが大きいと考えています。僕の好きなコラムに「射撃しつつ前進」というジョエル・スポルスキが書いたものがあります。このコラムには余計なことに足をとらわれずに物事を「前進し続けること」とそのためにまずは「ただ始めること」が大切というようなことが書かれています。ポモドーロテクニックはこのコラムにある「前進し続ける」ことと「ただ始めること」が実現できて、お気に入りのテクニックです。

このポモドーロテクニックをするためにはタイマーが必要です。物理的なタイマーからスマホやデスクトップで動くソフトウェアまで様々なものがあり、何を使用しても問題ありません。今回は自分のニーズにあったポモドーロテクニック専用タイマーを作ってみました。会社のエンジニア1名とディレクター1名の3人で開発合宿に行った時に作ったものですが、開発合宿も割り込みを減らしたり短い時間で達成することを明確化したりして集中するのに良い枠組みです。

減量

ところで減量の話です。辛い #ajiting という記事でも触れたのですが、今年は 7 月から減量を始めて 3 ヶ月くらいで約 8 kg の減量をしました。少しは痩せたいというのと他の人が始めたのでなんとなくという軽い気持ちで始めたのですが、途中から楽しくなってちゃんと続けられました。こういうのは減量しないと死んでしまうとかの明確で重要な動機が無いと続けられないと思っていたのですが、これもただ始めることが大切だったと思います。

他にも続けるのに必要だったものがあります。

  • 現状を見てもらう
  • 記録をして可視化、現状把握をする

減量中は Google スプレッドシートに記録してグラフ化し、会社のダイエット仲間に見てもらっていました(#gachi_diet という Slack チャンネルがあります)。共有しているのでお前減量できてないじゃんと言われたくない気持ちから減量をやめることへの抑止力になりました。記録の可視化は現状把握と改善のための次のアクションに繋がります。少し体重増えたなーということが数値で分かったらその日の食事を気にしたり、結果が出ていることが分かって減量を続けるのが楽しくなります。

ポモドーロテクニックは良いものです。でも、気がついたらポモる(ポモドーロテクニックする)ことを忘れて集中できてないモードになっていたりします。ポモるという大枠に入るための工夫として、減量の体験が参考にならないかと思いました。なんかイタチごっこになっているような気もしますがとりあえず試してみることが大切です。ということで下記のような機能のあるタイマーが欲しくなりました。

  • ポモに入ったというのとステータスを Slack に投稿(現状を見てもらう)
  • タスクに取り組んでいる時間を記録、グラフ化

計測する値は本当に取り組んでいる時間でいいのか?という疑問はありますが、ひとまずこれで進めましょう。

ポモ子

今回作ったタイマーの様子です。名前はポモ子です。

f:id:jewel12:20151222145905p:plain

  • 魅惑の機能たち
    • 時間が経過するか next を押すたびに「Working」「Short Break」を切り替えられる
      • 4 回目の Short Break が Long Break になります
      • なんと各ステータスの時間を変更可能!ソースコードのハードコーディングされた部分を弄ってみてください!自分は Whorking が 15 分で、Short Break が 3 分の設定でやってます(変更機能は作ったのですが画面作るのが面倒になってやめた)
    • Working の時間を記録して日毎にグラフ表示
      • 記録はじめた日からその日までのグラフが表示されます!直近のだけみたい時はうっとおしくて便利!
      • pouchdb-server を起動していれば永続化とデータ共有が可能
    • デスクトップアプリケーションとして動作
      • メニューバーに残り時間が表示されます
    • 各ステータスが終わると「Hi!」とだけ出てくる簡素で雑でシンプルな通知!
    • Slack 投稿機能はまだ!
      • 本当は今日実装しようかなと思っていたのですが、社内バーの AJITO で寿司を食べていたら時間がなくなりました

コードは以下になります(徹夜で作ったのでひどいのはご愛嬌)。

jewel12/pomoco · GitHub

基本部分は Haskell 風味な AltJS (HTML や CSS の出力もできる) の Elm で実装し、デスクトップアプリケーション化は Electron を使っています。メニューバーへの通知機能を利用したので、Electron の方のコードを少し書く事にはなりましたが、Elm で出力した HTML を包むだけでデスクトップアプリが作れて Electron 便利という感想がありました。

タスク取り組み時間の記録は永続化したり共有したかったので localStorage ではなく PouchDB を使用。DB に接続できない間は localStorage に貯めておいて接続できたら送るという事ができて、DB 側の環境がなくてもスタンドアロンで動きます。

Elm の公式で提供されている例と我流でストリーム志向なクライアントサイドプログラミングをすると、パターンを知らないためかどう書くんだろうと迷うところが多かったので、色々調べてみたい気持ちになりました。Rx 周りを探せば良さそう。

ちょっと使ってみて

自分が作ったという愛着で最初の方は使っていましたが、測定値がタスク取り組み時間だとあんまり参考にならなくて、ポモるためのきっかけには関係ありませんでした。取り組み時間よりも何に取り組んで、それを達成したかどうかというところに関心があるかなぁと思うと、なかなか定量化し辛いですね。やはり Slack 通知機能を使って監視してもらうしかない。

まとめ

集中し続けるための工夫として、ポモドーロテクニックで使用するタイマーを作ってみました。まだまだ理想的なタイマーはできないようです。改善していきたい!

明日 12/23 の担当は @hironomiu さんです!もうすぐクリスマスね〜!