僕は開発をする時はポモドーロ・テクニックを使うようにしてる。
最近今まで使っていたアプリがまともに使えなくなってしまったので乗り換えを検討した。
色々検討した結果自分で作ってしまうことにしたんだけど、それは次の理由から
- かかった時間は記録しておきたい
- ターミナルで動作させたい
1つ目のかかった時間を記録させることに関しては自分が何に時間をかけたのかを後から振り返りたいけど覚えておくのも面倒だし自分でどこかに記録するのも面倒なのでポモドーロをしたら勝手に記録してほしい。
2つ目のターミナルで動作させたいは完全な好みで普段コードを書く時はvimを使っているのでターミナルで作業しているので、出来ればブラウザ移動とかしたくない。
これを満たすものがGoで作ったPomodoroのgomodoro!!
gomodoroとは?
機能としては
- ポモドーロ・テクニック機能
- 25分の活動と5分の休憩を繰り返して3回まわした後の休憩は15分の休憩を繰り返す
- タスク追加機能
- 何のタスクに対してポモドーロを行っているかを管理するため
- 活動時間をTogglに記録
- 0秒になると通知センターで終わったことを通知する
- ターミナルでずっと出すのも邪魔なのでタブとかでわけておいても終わったことが分かるようにするため
こんな感じで動く
使い方
Goが入っている方はgo get github.com/hatappi/gomodoro
でもインストール出来るし、ここにMacOSとLinuxそれぞれの環境ごとのバイナルを置いてあるのでGoがなくてもいける。
後はTogglにデータを連携しないといけないので設定ファイルを作る必要がある。
ApiToken
はtogglのプロフォール画面から取得が出来る。
PID
はtogglのProjectIDでProject画面の任意のプロジェクトのURLから取得出来る。
例:) https://toggl.com/app/projects/xxxx/edit/yyyy の時はyyyyがPID
[Toggl] ApiToken = "xxx" PID=yyyyy
これで準備は出来たので次のコマンドを叩くだけ
$ gomodoro
最初はタスクがないのでタスク登録を促される。
タスクがある時に起動すると次のような画面が表示される。
選択する時はj
で下へ移動して、k
で上へ移動する。
新規タスクを作る時はこの画面でn
を押すことで出来る。
後はポモドーロをこなすだけ!!
なんでGoで書いたの?
特に理由はなくておそらくRubyの方が書いてる歴が長いので早くFirst Releaseできたんだろうけど、最近Goを書いているのでGoの練習がてらでやってみたかった。
それだけ。
技術的なところ
今回はポモドーロのタイマーを動かしつつもタイマーとめたりアプリを閉じたりみたいな操作をうけつけたかったのでgorutineを使ってタイマーとキー入力をうけつけるようにした。 go ~~~
みたいな感じでスレッドさくっと立てられるのは便利!
後はタイマー表示したりタスクを選択する部分に関してはpecoでも使われているtermbox-goを使った。
これも最初は癖があるけど使いなれるとターミナル上で色々描けるようになるので便利。
今後に関して
とりあえず自分は使うので足りない機能追加したりバグ潰したりのんびりやっていく。