フリップ時計
全画面、12/24時間表示、秒表示に対応したリアルタイムのフリップ時計。
フリップ時計とは?
このツールは、各桁の変化ごとにリアルなページめくりアニメーションでクラシックなフリップ時計の効果を完璧に再現します。ダウンロード不要でブラウザ上で直接動作し、全画面モード、12/24時間形式の切り替え、オプションの秒表示を備えています。
用途:デスク時計、オフィス装飾、ライブ配信背景、プレゼンテーションタイマー、ポモドーロテクニック、大画面ディスプレイなど。すべての時間計算はローカルで行われ、プライバシーを保護します。
使い方
使い方
- 時計は現在時刻を自動的に表示し、リアルタイムで更新されます
- 「12H/24H」ボタンをクリックして時刻表記を切り替えます
- 「Seconds/No seconds」ボタンをクリックして秒の表示を切り替えます
- 「Fullscreen」ボタンをクリックしてフルスクリーンモードに入ります
- 設定は自動的に保存され、次回アクセス時に復元されます
ヒント
- プロジェクターや壁面ディスプレイ、予備のタブレットでフルスクリーンモードを使用すると、部屋の隅からでも時刻が見やすくなります
- 会議や授業、イベント中に時計を常に表示する必要がある場合は、システムのスリープや画面の暗転を無効にしてください
- 地域をまたいだスケジュール共有には24時間表記を選び、秒の表示は正確なタイミングが必要な場合のみ有効にしましょう
利用シーン
仕組み
時刻はUnixエポックからのミリ秒単位のDate.now()から取得されますが、単純なsetInterval(fn, 1000)はタイマーがベストエフォートでスケジュールされるためドリフトが発生し、ずれが蓄積します。本ツールでは1000 - (Date.now() % 1000)を計算して次のティックをスケジュールし、実際の壁時計の秒境界に合わせ、フリップ遷移にはrequestAnimationFrameを使用します。これにより、タブがフォーカスを失ったりモニターがスリープ状態になったりした際にアニメーションが自動的に一時停止します。Page Visibility API(document.visibilityState)はvisibilitychange時に表示桁を再同期し、ユーザーが数分後に戻った際に古い値が表示されるのを防ぎます。
表示のフォーマットは、Intl.DateTimeFormatのhourCycleオプション('h23'で24時間表示、'h12'で12時間AM/PM表示)を使用してブラウザのロケールから読み取ります。サマータイムへの移行は暗黙的に処理されます。getHours()などのDateメソッドがオフセットシフトを含むローカル時刻を返すため、春には02:00から03:00にスキップし、秋には01:00が2回表示されますが、追加のロジックは不要です。
- 3Dフリップ: 絶対配置レイヤーにCSS transform: rotateX(-180deg)を適用、親要素にperspective: 600px、backface-visibility: hiddenでミラーされた裏面を抑制
- GPUコンポジット: will-change: transformによりフリッピング要素が独自レイヤーに昇格し、遷移は再描画ではなくコンポジットで実行
- ドリフトなしティック: setTimeoutの遅延を1000 - (Date.now() % 1000)で計算し、各ティックが実際の秒境界に到達、タイマーのずれを蓄積しない
- アニメーションタイミング: requestAnimationFrameが0degから-180degの遷移を駆動し、バックグラウンドタブではブラウザが自動的にスロットリング
- バックグラウンド復旧: Page Visibility APIがvisibilitychangeを監視し、Date.now()を再読み込みして、タブがフォーカスを回復した際に正しい値にジャンプ
- ロケールと時間サイクル: Intl.DateTimeFormatのhourCycle 'h23'または'h12'で、ユーザーのシステムロケールから24時間表示または12時間AM/PM表示を選択
- 全画面制御: Element.requestFullscreen()とdocument.exitFullscreen()が壁面表示モードを制御し、Escが標準の終了キー
使用例
デスクトップで使用
ブラウザのウィンドウサイズを調整してデスクトップの隅に配置し、常時表示の時計として使用。大画面ディスプレイ表示
プロジェクターや大画面ディスプレイに接続し、F11 キーで全画面表示にして、会議室やイベント会場で表示。ライブ配信の背景
OBS にブラウザソースを追加し、フリップ時計の URL を配信背景として使用。よくある質問
時計はどのタイムゾーンを使用しますか?
OS で設定されたデバイスのローカルタイムゾーンを使用します。別のタイムゾーンを表示するには、専用のワールドクロックツールを使用してください。時計はシステムの時刻認識に従うため、VPN やタイムゾーンの偽装では変更されません。
12 時間制と 24 時間制を切り替えできますか?
はい。設定で切り替えられます。12 時間制は AM/PM を表示し、24 時間制は AM/PM なしで 00~23 を表示します。お好みで選択してください。一部のビルドではデフォルトで OS のロケールに合わせます。
秒針が 1 秒以上飛ぶことがあるのはなぜですか?
バックグラウンドタブのスロットリングが原因です。タブを切り替えるとブラウザは更新レートを下げ、戻ったときに時計はスキップして追いつきます。スムーズなアニメーションを得るにはタブをフォーカスしたままにしてください。フォーカス中でも飛ぶ場合は CPU が過負荷状態です。他に動作しているプロセスを確認してください。
フリップアニメーションはパフォーマンスに影響しますか?
CSS の transform アニメーションは GPU アクセラレーションされており、最近のデバイスでは軽量です。古いノートパソコンやスマートフォンでは、1 秒に 1 回わずかなカクつきが見られることがあります。静的な時計面が良い場合は、設定でフリップアニメーションを無効にできます。
全画面表示で一晩中動かし続けられますか?
はい。デスクや枕元の時計として全画面で使用するように設計されています。最近の OS は画面を暗くしたりスリープに入れたりするので、起きたままにしておく必要があります(ディスプレイ設定で「スリープしない」に設定するか、OS の NoSleep を使用)。ノートパソコンでは電源に接続してください。バッテリーのスリープモードではタブが一時停止します。
数時間にわたって正確に動作しますか?
はい。時計はシステムクロックによって駆動され、ネットワーク接続されたデバイスでは NTP により同期され続けます。最近の OS では 24 時間運転でのドリフトは通常 1 秒未満です。
何かアップロードされますか?
いいえ。時計はデバイスから時刻を読み取るだけです。ログ記録も送信もされません。