公開中 · PWA

Pocket Timer

オフラインでも動く、作業用の小さなタイマー

timer.example.com
Pocket Timer の画面。黒い背景の中央に残り時間が大きく表示されている

作った理由

作業の区切りに使うタイマーが欲しかったのですが、既存のアプリは通知や同期など使わない機能が多く、起動も遅く感じていました。ブラウザで開いてすぐ使えて、電波の無い場所でも動くものを自分で作りました。

技術的な判断

フレームワークを使わず、TypeScript と DOM API だけで実装しました。画面が 1 つしかないので、状態管理の層を足す理由がありませんでした。

終了音は音声ファイルを同梱せず、Web Audio API で生成しています。キャッシュする資産がアプリ本体だけになり、オフライン対応が単純になりました。

タイマーの残り時間は端末内の localStorage に保存し、タブを閉じても再開できるようにしました。サーバーは持っていません。

技術スタック

言語
TypeScript
UI
DOM APICSS
外部API
Web Audio APIService Worker
ビルド・配布
Vitevite-plugin-pwa
テスト・品質
VitestBiomeGitHub Actions