無趣味の戯言

📄️

タイマーアプリ作ろうとして挫折しそう

こんにちは、だいちゃんです。

ひょんな事から久しぶりにJSで遊んでみたくなり、思いつきでリポジトリ立てて遊び始めてみたものの、意外と難しくて早々に心折れてます。

なにかアドバイスあればご教示願います。

アプリ概要

Youtubeで誰かのモーニングルーティーンで、朝デスクに座ったら真っ先に無印のタスクリストに1日のやることを書き出していたのを見て、大学時代に読んだ「18分集中法」という本をふと思い出しまして。もしかしてこの2つ組み合わせたら自分のパフォーマンスを最大に活かせるのでは?という、もう誰かが思いついているだろう浅はかな考えにも関わらず、タスクリスト付きタイマーアプリ作ってみようと思い立ちました。


ミドリ メモ ToDoリスト 紺91802345


18分集中法―時間の「質」を高める (ちくま新書)

仕様としては、タスクリストとしての機能と、18分・2分経ったタイミングでタスクリストを上から順番に舐めて「次はこれの時間ですよ」とアラームを鳴らすだけの簡単なものを想定しています。

始業のタイミングで今日やることすべて書き出して1日中このタイマーに従ってもいいし、こっから3時間は集中して作業すっぞ!って時にも使えるかなと思ってます。

スマホアプリ化したかったのと、スキル的にJavaScript使う選択肢が有力だなと思ったので、Webアプリとして作り、PWAにも対応させようと考えています。

肝心のタイマー部分で挫折しそう

JavaScriptのsetIntervalでアラームを鳴らす予定だったのですが、結果的に普通にsetIntervalだけでは実装できませんでした。
理由として、特に18分という長い時間のタイマーは、その途中でスリープすることが想定されます。そのスリープ中、タイマーが止まってしまう(setIntervalを始め、JSの処理を止めてるらしい)ので、正確な計測ができないことがわかりました。

多分、スリープ直後は大丈夫そうなので、2分のタイマーはイケそうですが。

ちなみに、PWAにしたらよりネイティブアプリに近くなってバックグラウンドでJSの処理を走り続けられるのかと思いきや、Service Workerにも時間制限があるらしく、その対処方法も塞がれてしまいました。

プッシュ通知はスタンバイしてるはずなので、GCPとかでタイマー管理してプッシュ通知投げれば出来そうですが、正直めんどくささと天秤にかけたときに「そこまでする?」ってなってしまうんですよね。

PWAから端末側のアラームの設定をいじるのも難しそうだし、そもそもそれやっちゃうとPCで使えないですもんね。

これから試そうと思ってること

ひとまず、スリープさせなければいいので、18分の無音の音源を作ってそれをバックグラウンドで流し続けるのもありかなと思ったりしています。

今後、設定画面とか作って、18分以外の時間でも対応させたいので、1分の無音音源をbase64に変換して、それをJS側で組み合わせて...とかできないですかね?

ひとまずPC版からどうにかしてみようと思い

ます。

PC版ならメモリに余裕ある限りJS殺すこともなさそう?なので。

いまはまだ使うに耐えない感じですが、気が向いたら続きやりますw
現状こんな感じ→ https://play.udcxx.me/21-task_timer/

Buy Me A Coffee