活動時間の記録アプリ作ってみたREMAKE

sumtimer.com

10年前に作った活動時間記録アプリSumtimerのフルリメイクをしてみました。正確には数か月前に自分用に作って使用を続けてたのですが、そこそこ使えるツールになっている気がしたので公開用に日英対応したりランディングページを用意したりしました。

https://sumtimer.com/でホストしてます。ソースはこちらです。

作ったきっかけとしては、去年のICFPCの宿題としてTypeScriptを書く題材を探してたこと・可処分時間が増えて再びその使い方に意識が向いたタイミングだったこと・セパレートキーボードを作ったのでキーボード叩きたい盛りだったことなどがあります。技術スタックとしては、学習目的も兼ねて未経験だったVue, Vite, Firebase (Authentication, Firestore, Functions, Hosting), Quasar, Cypressなどを使いました。

リメイクで追加された機能

前回(10年前)のバージョンを使っていて、こういうこともできたら良かったなと思った機能がいくつかあったので、今回それらの実装を優先的に行いました。

データのエクスポート・インポート

なんでこれが前回は無かったんや…というやつの代表ですが、JSON形式で全記録のエクスポート・インポートできます。あとSumtimerでの記録をTogglにインポートする用にCSV形式でのエクスポートもサポートしました。

活動記録中の特定サイトブロック(フォーカスモード)

Chrome拡張機能を合わせて使用することで、例えば「勉強カテゴリーに属するアクティビティの実行中はTwitterとかYouTubeを見れないようにする」みたいなことができます。URLとページタイトルでブロックできます(正規表現可)。僕の場合、YouTubeは勉強で使うこともあるので”切り抜き”とかのページタイトルブロックで無限ブラウジングを避けてます。避けようとしてます。

Focus mode

ウィークリー目標の追跡

カテゴリーごとに1週間で何時間やるのを目標とするか設定できて、現状どの程度進捗してるかを確認できます。最近の経験上、いくつか違ったタイプの活動をそれぞれある程度の時間やった週は満足度高かった印象があるので、勉強に14時間・創作活動に14時間・運動3時間みたいに複数にまたがる目標を設定したりしていました。あと娯楽に対しては上限として設定したりしてます。

Weekly targets

活動記録の一時停止(休憩)サポート

なにかの作業時間を記録中に、ちょっとした休憩を入れてまたすぐ同じ作業を再開するつもりの時、記録の一時停止を使用することで複数の記録に分割せずに休憩を挟んだ1またまりの作業時間として記録できます。何をやったかのメモを1まとまりの作業時間に対して付けたかったり、すぐに再開するんだよって自分を戒めたい時に便利なことがありました。なお一時停止のまま30分経つと自動的に休憩開始時点までの時間で記録終了します。

Pause recording

感想

UIが!むずい!!普段変なUIを目にすると注文をつけたくなるタイプなのですが、自分で1からフリーハンドでデザインを決めるとなると死ぬほどむずかしくて迷走してました。してます。シンプルな機能のわりにUIがなんかとっちらかってるけど何をどう動かせば整うのかワカラン…ってなりまくって時間を浪費した印象もあり、こういうのはUIについて体系的に学んでたり良いUIをたくさん知ってると全然違うんだろうなと思ったりしました。あとCSSバトル連戦連敗でした。がんばりましょう。

Sumtimerの開発時間もSumtimerでつけてたのですが、今のところ165時間ほどになってます。Scope creepはできるだけ避けるべく、かなり具体的に検討しつつ一旦ドロップした機能はいくつもあり、結局最初に決めてた機能群の実装に絞ったのだけど、それでも想定の2倍ほどかかってることに。使った道具については少しは慣れたから次は早く作れるかというとそうでも無さそうな気がする。次は想像の2倍で見積もりましょう(知ってた気がする学び)。

末永く使う上でメンテがしんどくならないよう、外部依存は極力減らしたかったけど、Firebase (Firestore)にはがっつり依存してます。今回はFirebase使ってみてFirestoreの雰囲気もなんとなく分かったのと、使うことでバックエンド実装にかかる時間を短縮できたので使って良かったと思ってるのですが、バックエンド実装の学習機会にはなっていないので、また別のアプリ作る時はFirebase抜きでやりたいところです。RustかGoを使う機会にしたい気持ち。

自分向けツールの自前実装、時間はかかるしこれで満足とも永遠にならないのですが、それなりに気に入るところまではひとまず持って行けたので今後盆栽的にいじりながら使っていけそう。Web関係でいくつかの新道具にも触れられたのでヨシとします。また暇な時間出来たらやりたいね!(同期間でFactorio 280時間やってることからは目を逸らしながら)

コメントする