2019/03/11

gemを作ってみました

みなさんこんばんは。宇賀神です。

今日は前から一度やってみたかった、gemを作ったお話です。

知ってますか

「ポモドーロ・テクニック」を。25分働いて5分休憩する、という働き方のアレです。知らない方はググってみてください。熱く語っている人がたくさんいます。

かくいう私も知ってはいたものの、今までなんとなく定着せずに来ました。
その原因を考えてみたところ、

  • 時間測るのがめんどくさい
  • ブラウザアプリとかあるけど起動するのがめんどくさい
  • めんどくさい

というのが主だったように思います。
というわけで、その「めんどくささ」をとことん排除するものを作れたらと思ったわけです。

なぜgemなのか

gemを作ってみたかったからです。(きっぱり)
Rails開発を何年かやっていて、色んなgemにお世話になったものの、作ってみたことってなかったなーと思いまして。なんでもいいからやってみたいと思っていたのです。
今回作ったツールについても、既にクオリティの高いものが開発されている点については、一旦見なかったことにしています。

仕様

いくら個人開発といっても、ソフトウェアを作るには仕様が必要です。
というわけで目的である「めんどくささを排除する」を満たせるよう、ざっくり以下の感じの仕様を決めました。

- ターミナルで動作するアプリであること
- 25分 → 5分 → 25分...というように、延々とカウントダウンをし続けること
- 25分の終わりの際に流している音楽を止めること
- 5分の終わりの際に流していた音楽を再生すること

結論から言うと下の2つは現在未実装です。
というか最後のやつは実現できるかわからんレベルの理想です。

出来上がったもの

ソースコードはGitHubで公開しております。名前は鳥山明先生の名作、Dr.スランプをインスパイアしています。モジュール名とかもちょいちょいインスパイアしてます。(途中で名前変えてガッチャガチャになったのは内緒の話)
https://github.com/ugajin/pomodorokun

実際の使用画面はこんな感じ
Image from Gyazo

…gifにしたら想像以上に地味でした。
5秒前からカウントダウンの音鳴らすとかしているんですが、gifでは伝えられない。

使い方はREADMEに書いておきますので、気が向いた方は使ってやってください。
もちろん技術的に詰まった面とかもありましたので、そのへんは別の記事にまとめますね。

これから実装したい機能

上に書いた未実装の2つ以外にも、実装しながら思いついたやつもあったのでメモも含めて。

- 音を止めたり流したり
- `you gotta 5 pomo!` とかみたいにpomo数を表示したい(英語が合っているかは知らない)
- 起動コマンドにオプションつけることで効果音変更したい
- 起動コマンドにオプションつけることでworkingとbreakingの時間を指定したい
- 4pomoごとに20分の休憩にしたい
- 起動中のターミナルが寂しいのでなんか賑やかにしたい

こんな感じでやりながらアイデアも出たので、しばらくこのへんで遊ぶかもしれないです。

おわりに

数年振りに個人開発やってみたんですが、やってみるとやっぱり楽しいですね。
アラレちゃんインスパイアとか、個人開発じゃなきゃ出来ないようなおふざけも許されるので、久々にプログラミングを純粋に楽しめてたと思います。

今度はiOSアプリとか作ってみたいなぁ。作ったことないけど。