ワダチを作る #5:タイマーの記録を本番に出して、アイコンを入れた
前回(#4)で、坐禅のタイマーの設定と画面を作りました。今回は、その続きです。
- タイマーの記録(「やった」と、座った時間)
- タイマーの本番リリース
- アイコンを入れた
- 手順を飛ばした失敗が、2つ
タイマーの記録:開始で「やった」が付く
企画で決めていたとおり、タイマーを開始した時点で、その日の「やった」が付きます。途中で止めても、「やった」は残ります。「少しでも座ればよい」という続け方です。
記録は、timer_sessions(タイマーの1回分)に残します。
- 開始した時刻
- 設定した時間(開始のときの設定)
- 実際に座った時間(一時停止のあいだは含めない)
座った時間は、一時停止・止める・終わりのたびに保存します。途中で閉じられたときのために、15秒ごとと、画面が見えなくなったときにも保存します。そうすれば、閉じられても、最後に保存した時間が残ります。保存した時間より減らさず、設定の時間を超えないようにしました。
間違えて開始したときは、記録の画面で「やった」を外せば、タイマーの記録も一緒に消えます(ON DELETE CASCADE)。

記録の画面。その日に座った時間が出る(架空のデータ)
今日でない日や、やらない曜日の習慣でも、タイマーは使えます。ただ、「やった」は付かない、と画面で伝えます。
本番リリース:マイグレーションが2つ
タイマーの3つの Issue(設定・画面・記録)が、開発環境で受入を済ませたので、本番へリリースしました(develop → main)。マイグレーションが入るリリースは、2回目です。
0003:habitsに、タイマーの3列を足す(既存の行は、タイマーなし・10分・環境音なしになる)0004:timer_sessionsを作る
今回も、PR の本文に「戻す先の時刻(UTC)」を書きました。PR を作った時刻を書き、マージのあとで、GitHub のマージの時刻に書き換えました。本番のデプロイのログで、2つのマイグレーションが、順に適用されたことを確かめました。本番の URL(Access の後ろ)は、ログインなしだと 302 でログイン画面に移り、本番の workers.dev の URL は 404、と閉じたままです。
本番の画面は、自分で開いて、タイマーの設定から、開始・止める・記録の表示までを確かめました。
アイコンを入れた
ここまでのワダチには、アイコンがありませんでした。ChatGPT で作ってもらった画像を取り込みます。ハコヅミと同じく、アイコンの角の外は透過にします。
作ったのは、4つです。
- 192px・512px(通常用)。角の外は透過
- maskable(512px)。全面を背景色で埋めて、絵を80%に縮める(端末が、丸や角丸に切り抜くため)
- apple-touch-icon(180px)。iOS は、透過を黒く塗るので、こちらも全面を背景色で埋める
切り抜きは、画像の外枠に合わせた、角の丸い四角(少し角のふくらんだ形)で行いました。
文字を入れたくなった
最初の画像には、名前の文字がありませんでした。ハコヅミは、アイコンにも名前の文字が入っています。そこで、新しいバナーの「ワダチ」の文字を切り出して、アイコンに重ねました。轍の道の上だと文字が埋もれるので、文字の後ろに、背景色のやわらかい下地を敷きました。
ところが、そのあと、文字入りの新しい画像をもらったので、結局は、その画像に差し替えました。

本番に入れた、ワダチのアイコン
バナーの文字の色が変わった
バナーも、新しい画像に差し替えました。このとき、色を調べると、「ワダチ」の文字の色が変わっていました。前のバナーは #6a3313 で、基本色(#6b3212)と同じでした。新しいバナーは #4f2208 付近で、かなり濃くなっています。
ワダチは、ハコヅミと逆に、「バナーの文字の色を、基本色にする」と決めていました。そろえるかどうかは、まだ決めていません。
うっかりが、2つ
今回は、手順を飛ばした失敗が2つあり、どちらも、マージ済みかどうかを確かめなかったことが原因でした。
- PR #33 を、誤って閉じた:「マージした」と言われたときに、まだ未マージだったのに、ブランチを消して、PR が閉じてしまいました。ブランチを作り直して、開き直しました。
- アイコンの修正が、2回、本番に入らなかった:PR をマージされたあとで、同じブランチにコミットを足して push してしまいました。マージ済みの PR には、新しいコミットは入りません。新しいブランチと PR で出し直しました。
直し方は、同じです。ブランチを消す前も、コミットを足す前も、PR の状態を確かめます。マージ済みなら、新しい PR にします。これは、手元のルールとして、意識しておきます。
おわりに
タイマーが、本番に入りました。
- 開始で「やった」が付き、座った時間を残す
- 本番のマイグレーションは、2回目。戻す先の時刻を、PR に書いた
- アイコンは、角の外を透過にして、4つの大きさを作った
次は、積み上がりの見せ方(直近7日・30日の日数、通算、再開のひとこと)です。ワダチの一番大事な設計原則、「連続日数を主役にしない」を、画面にします。その前に、iPad の PWA の不具合(#42)が、公開の前に残っています。