2 ポイント 投稿者 GN⁺ 2025-09-03 | 1件のコメント | WhatsAppで共有
  • iPhoneのアラームアプリにおける時間選択の仕組みは、円形デザインではない
  • 見た目は回転式インターフェースのように見えるが、実際には長いリストで構成されている
  • ユーザーがスクロールする際に、終わりがないように感じられるよう作られている
  • 開発者やUXデザイナーにとって、UIの錯視効果の事例として注目されている
  • 実際の実装方法への理解は、アプリ開発の参考になる

iPhoneのアラームアプリにおける時間選択UIの構造

  • iPhoneのアラームアプリで時間を設定するための選択UIは、表面的には円形(回転ホイール)に見える
  • しかし、この選択UIは実際には開始と終了が決まっている非常に長いリストとして実装されている
  • ユーザーがスクロールすると、上下どちらにも延々と回せるような錯覚を与える
  • この実装方式は、直接的な円形インターフェースを採用しなくても、似たユーザー体験を提供するためのデザインである
  • 開発者は無限スクロール型のリストを活用し、円形に見えるようユーザーインターフェースを設計している

開発者およびUX設計の観点

  • この方式により、単純なリストだけで複雑な円形インターフェースを置き換えることができる
  • 実際には、リストの両端で反対方向へ移動することはないが、項目数が非常に多いため、ユーザーが限界に到達しにくくなっている
  • このデザインは、UIの錯視効果を利用して、ユーザーが期待する体験を提供している
  • アプリ開発において、リスト実装だけで円形UIの利便性と使いやすさを確保できる事例である

結論

  • iPhoneのアラームアプリの時間選択UIは、長いリストを回しているように見せる方式で円形効果を生み出している
  • これは開発者やUI/UXデザイナーに対して、直感的でありながら効率的なインターフェース設計の方向性を示している

1件のコメント

 
GN⁺ 2025-09-03
Hacker Newsのコメント
  • アラームアプリで本当に不便なバグ(あるいは仕様なのかもしれない)は、時刻ダイヤルが跳ね返って停止するまで待たないと AM/PM の設定が正しく反映されないこと。単にスワイプして保存を押すと前の設定がそのまま残り、大事な午前7時のアラームが午後7時のままになって会社に遅刻する羽目になる
    • 最近はメニューのコーディングすらまともにできていない気がする。たとえば macOS のリマインダーアプリのメインリスト画面で時刻のドロップダウンメニューを選ぶとき、目的の時刻の上でマウスボタンを離し、フラッシュアニメーションが動いている間にカーソルを少し上下に動かすと突然別の時刻が選ばれる。1984年以降ずっと macOS で共通だった動作とまったく一致していない。数年前にバグ報告をしたが、たぶんもっと重要な仕事が優先されているのだろう
    • このバグで何度か痛い目を見て、結局すべての端末で完全に24時間表示に切り替えた。毎日使うインターフェースとして見ても、iOS の縦スクロール式ダイヤル UI は使い勝手の面でも見た目の面でもかなりひどいと思う。それでもダイヤル中央をタップすると数字キーパッドが出る機能が追加されたのは本当にありがたかった。キーパッドで時刻を入力する方式はとてもよく設計されていて効率的
    • これ、自分だけかと思っていたが違ったのか。こんなに長い間 Apple がアラーム1つまともに作れていないという現実
    • Android から iPhone に乗り換えて生じた問題の中で、これがいちばん大きい。しかもさらに腹が立つのは、開発者やプログラマーにこういう問題を話すと、いつも「ちゃんとやれてないだけじゃない?」「それってそんなに重要?」みたいに軽く流されること。(重要だから寝坊したくないし、こういう会話になるんだ!)年収10万ドル以上ももらいながら、こんな細かいことすら素早く直せないのは本当にもどかしい。もっと誇りを持って、簡単なバグくらい大胆に直してほしい。それでもこの世界では UX がどんどん複雑になっている。シンプルさを掲げながらアラームとタイマーの UI が違っていて見た目だけ似ていたり、重複したカレンダーイベントが正規表現1行で消せそうなのに放置されていたり、同名の連絡先を見つけられず手動マージ手順が隠されていて、苦労して統合したら誕生日イベントが1つ余計に追加され、しかも削除もできない、などなど。(実体験です。)私たちはみんなソフトウェアをより悪くしていると思う。AI が生産性向上で仕事を奪うのではなく、私たちが品質基準をあまりに下げてしまったからだと思う。今では Perl や Brainfuck で書かれていないだけでも感心するレベル
    • だから睡眠/起床アラーム機能がある。この機能の UI は本当に悪くない。週間スケジュールを設定できるし、アラーム時刻を調整するときに円形の時計 UI であとどれだけ眠れるかを視覚的に示してくれる
  • 10年前でも優れたスマートフォンのアラームアプリはこういう姿だった。Nokia N9 のアラーム時計 UI を参照。そしてこれを扱った Hacker News の議論 もある
    • Google Clock アプリも似たような機能を提供している。メイン画面にスライダー、円形の時刻選択UI(個人的には好みではない)、そしてアラームまでの残り時間を知らせるトースト通知がある。毎日/無効のオプションだけ欠けている
    • Android の時計アプリはかなり良くて、Nokia N9 のアラームアプリに近い。今年初めに iPhone に乗り換えたが、さまざまな UI の問題が本当につらい。遅い回転ダイヤルにはうんざりしたし、アラーム設定後に Android が出してくれる「アラームまであと x 時間」という確認メッセージが本当に恋しい。特に数字スピナーは本当にひどい。Hilton アプリで子どもの年齢を毎回設定しなければならないたびに、数字ダイヤルを回すのでストレスがたまる。iOS がなぜ魔法のようで、楽しくて、直感的だという評判を得たのか分からない。もう Pixel に戻りたくなってきた
    • 面白いことに、iOS で Health アプリ経由から入る睡眠スケジュール設定画面は、Nokia N9 のアラーム時計にとてもよく似ている
    • まともなスマートフォンというのは重要だ。Nokia が最高の製品を出した直後に事業を諦めてしまったのは本当に残念
    • 最近の若い人の中には時計の針を読めない人も多いので、大衆向けにするならそういう点も考慮すべきだと思う
  • 少なくとも分/秒は短いリストで設定できて、一発で 00 に素早く行けるようにしてほしい。PalmOS の BigClock というアプリでは、数字の各桁の上側をタップすると1増加、下側をタップすると1減少する方式で、とても速く予測可能な入力ができた。スクロールホイールの跳ね返りのような視覚的フィードバックがなくても、目的の時刻を簡単に選べた。BigClock 紹介1, BigClock 紹介2
    • 単にキーボード(画面キーパッドでも物理キーパッドでも構わない)があればいい。最大4回入力すれば終わる
  • iOS の時計アプリは本当にいまひとつ。iOS 26 に AlarmKit が入るので、自分専用のカスタムアラームアプリを作れるようになるのが本当にうれしい。「繰り返しアラームは維持したまま明日だけ一時的にオフにする」みたいなごく当たり前の機能が欠けていたし、カレンダー連携アラームのようなものもなかった
    • 睡眠機能を使えば、通常のアラームの代わりにこうした「明日だけオフ」機能を数年前からすでに使えた。睡眠スケジュールを変更すると、全体のスケジュールを変えるのか、一度だけオフにするのか尋ねてくる
    • Apple がアラームアプリ作成の権限を直接開放するのは、セキュリティ上の大きな穴のようにも感じる
    • 睡眠スケジュールを使えば次のアラームだけスキップできるし、曜日ごとに異なる起床時刻にも対応している。通常のアラームと同じ場所からすぐ設定できる
    • 自分はそこまで悪いとは思わず、むしろシンプルなので標準アプリとしては理解しやすいと思う
  • このコードは書かれて以来、本当に二度と見直されなかったのだろうか。それともコードのリライト後まで生き残ったのだろうか。昔の iPhone はアラームのタイムゾーンが狂ったり、夏時間の切り替え時に正しく鳴らなかったりすることで悪名高かった。iPhone アラームバグ – タイムゾーン/夏時間の問題
    • これはタイムゾーンや Clock アプリの問題とは別。こうした制約は UIPickerView というシステムレベルの UI コンポーネントから生じているのだと思う。自分のアプリにも似たような「バグ」がある
    • 自然増殖的に生まれた結果だと思う。最初は A-Z リストだったのだろうが、誰かがそれを回転型にしようとして、UI レベルで最も簡単な解決策として有限のリストを何度も繰り返す方式を採ったので、そのまま残ったのだろう。たとえば HTML の有限リストは本当に簡単に作れるが、仮想化された JS の無限リストはフレームワークを変えるたびにまた移植しなければならないはず(SwiftUI に変わるとか)
    • 同じ少数のコンポーネントを繰り返し再利用する円形の無限リストを作るのはあまりに難しいので、(0..60).times(50).flatten() みたいな乱暴なコードが 1% の労力で問題の 99% を解決してしまう。QA でリストの端までスクロールしたときだけ問題になるなら、Product 側で初めて課題として上がるくらいだろう。誰が気にするというのか
  • これはカスタムウィジェット開発を避けるために使った見事なハックだ。どこかのエンジニアに拍手を送りたい
  • 10年以上こういうやり方が隠れていた。実際的な解決策について考えてみる価値はある
    • 実用主義は完璧主義より良いと思う
  • 自分が興味深いと思う点の1つは、タイマーとアラームが互いに離れた別実装を持っていること。アラームでは分単位が循環するのに、タイマーではそうならない。似たようなインターフェースなのに、なぜ違う実装なのか分からない。円形ですらないのも不思議だ。不要に複雑さを増しているコードだと思う
  • ここのコメントで iOS のアラームバグにうんざりしている人が多いので、同じような人向けに1つヒントを残しておく。Sharp が安くてそこそこ良い目覚まし時計を何種類も売っている。5~12ドルで、こういうバグから永遠に解放される。おまけに朝一番で手に取る機器が脳を壊すスマートフォンではない、というのが最大の利点だ。個人的には Walmart で買った Sharp Twin Bell モデルがいちばん高かったが、それでも 12.63 ドルだった
    • 同じモデルを使っている。昔のデジタルアラームでは体験できなかった最高の特徴は、毎晩自分でアラームを設定しなければならないことだ。アラームはオンオフスイッチだけで、鳴り始めたら切らなければならず、少なくとも12時間後にまたオンにしないといけない(さもないと夜8時に鳴るかもしれない)。だから毎晩予定を確認してからアラームスイッチを入れる習慣が生活に組み込まれ、今では休日や早朝アラームの設定を忘れる心配がなくなった。そして本当に音が大きいので、アラームを聞いてまた寝てしまったことがない
  • アラームとタイマーでスヌーズと停止ボタンの位置が逆なのはどうしても理解できない。ある方では停止ボタンが画面中央にあり、別の方では下部にある。なぜこういう部分が標準化されていないのか不思議だ
    • 朝、半分眠ったままスマホを手探りすると、いつもの位置にある大きくて明るいオレンジ色のスヌーズボタンを簡単に押してしまう。完全に目を覚ましてアラームを止めるには、位置の違う灰色の停止ボタンを押さなければならず、そのときだけやっと止まる。アラーム設定でスヌーズをオフにすれば、タイマーと同じように中央の大きなオレンジ色の停止ボタンを使える。ところがこのデザインはあまりに直感的すぎるのか、iOS 26 では2つのボタンの見た目が違うという理由でなくなると聞いた。いまやアラームで最も重要なのが見た目の美しさだなんて、本当に残念だ
    • 兄弟よ、本当にありがとうと言いたい。こうした細かなディテールの欠如のせいで、何年も本当に苦労してきた