ウィジェット時計がずれる理由
ホーム画面のウィジェットの時計が実際の時刻とずれている。秒が出ない。 数字をもっと大きくしたい。この三つは別々の不満に見えて、原因は一つです。 ウィジェットは動いているアプリではなく、アプリが前もって用意した絵だから。 ここではその仕組みを、Angel Clock が実際に渡している数字で説明します。
ウィジェットは「小さなアプリ」ではない
iOS がウィジェットを表示したいとき、アプリを一瞬だけ起こして 絵の一覧を受け取ります。一枚ごとに「何時何分から有効か」の印が付いていて、 iOS はその時刻が来るたびに、誰も起こさずに絵を差し替えます。一覧を使い切ったら、 また訊きに来ます。
⇒ つまりウィジェットの新しさは、通信の速さでも端末の性能でもありません。 決めるのはアプリがどれだけ先まで用意したかと、 iOS がもう一度訊きに来てくれるかの二つだけです。
Angel Clock が渡している数字
毎分起こしてくれ、とは頼みません。2時間ぶんの分をまとめて渡します—— およそ120〜140枚の仕上がった絵、1分に1枚。 ゾロ目の時刻の前後だけはその倍の細かさで用意します。 そのあとは iOS が自分で差し替えるので、アプリが起こされるのは 一日およそ12回。ウィジェットに与えられる一日の目安が 40〜70回ですから、まだ十分な余裕があります。
ずれて見えるとしたら、たいていは一覧を使い切ったあと、iOS がまだ訊きに来ていない 時間帯です。アプリ側からできるのは「訊いてほしい」と伝えることだけで、 頻繁に頼むアプリほど、その日の分を早く使い切ります。
秒が出ないのはなぜか
同じ仕組みの続きです。秒を出すには一秒ごとに別の絵が要り、2時間ぶんなら7,200枚。 一日の目安が40〜70回の世界で、絵として毎秒差し替えるのは成立しません。
ただし、抜け道が一つだけあります。iOS には 「ある時刻からの経過」を自分で数え続ける文字表示があり、これは絵の差し替えなしに 毎秒動きます。秒が動くウィジェットは、たいていこれです。 ⇒ ただそれは数えているのであって、時刻を示しているのではありません。 いまが何時何分何秒かを絵として出し続ける時計は、この仕組みでは作れません。 秒が出ないのは手抜きではなく、そこが境目だからです。
数字が大きいのは、そのほうが読めるから
ウィジェットは見るものではなく、目に入るものです。 歩きながら、鞄から出す途中、机の上で伏せる直前——読む姿勢を取らない相手に届く必要があります。 だから Angel Clock のウィジェットは数字を大きく取り、そのぶん飾りを置きません。 背景は静止画ではなく、アプリと同じ空をそのまま焼き付けたものです。
ゾロ目の時刻そのものについては ゾロ目をよく見る、 誕生日から出る数字の確率は マスターナンバーの確率に。 英語版のより詳しい解説は the widget(英語)です。
ここに書いた仕組みは iOS のウィジェットに共通のもので、 Angel Clock だけの話ではありません。数字はこのアプリが実際に渡している値です。