シンプルで直感的な10秒ピッタリを目指すタイミングゲームです。
- 「スタート」ボタンを押すとタイマーがスタートします
- カウンターが0.00秒からカウントアップを開始します
- 3秒経過すると数字が非表示になります(より難しくなります)
- ちょうど10.00秒だと思ったタイミングで「ココ!」ボタンを押してください
- 10秒との誤差が表示されます
- 誤差が小さいほど良い評価
- 誤差に応じたコメントが表示されます
- 0.001秒未満:「⏰️…あなたが時の神か…🙏」
- 0.05秒未満:「惜しい!!!🎉」
- 0.1秒未満:「すごい!ほぼピッタリ!👏👏👏」
- 15秒経過すると自動的に終了
- デジタル時計風の見やすい表示
- 3秒後にカウンターが非表示になる演出
- 直感的な操作性
- 10秒との誤差に基づく評価システム
- HTML5
- CSS3(アニメーション効果)
- JavaScript(タイマー処理・状態管理)
- Google Fonts(DS-Digital)を使用したデジタル表示
- アクションボタンの状態分岐をボタンの文字列ではなくdata-action属性で管理するように変更
- ボタンラベル(「スタート」「ココ!」「もう一度」など)をHTMLのdata属性(data-label-start等)で管理し、JavaScriptはその値を参照してラベル・aria-labelを切り替える方式に変更
- アクセシビリティ向上のため、ボタンのaria-labelも状態に応じて自動更新
- 「もう一度」ボタンの動作不具合を修正
ten-count/
├── index.html # メインのHTML
├── README.md # プロジェクト説明
├── assets/ # 静的アセット
├── css/ # スタイルシート
│ ├── style.css # メインのCSS
│ └── ranking.css # ランキング表示用CSS
├── js/ # JavaScriptファイル
│ ├── app.js # アプリケーションのエントリポイント
│ ├── config.js # 設定値管理
│ └── components/ # コンポーネント別のJS
│ ├── animation.js # アニメーション効果
│ ├── DiffMessageManager.js # 差分メッセージ管理
│ ├── form.js # ランキング登録フォーム
│ ├── ranking.js # ランキング管理・Supabase連携
│ ├── storage.js # ローカルストレージ管理
│ ├── timer.js # タイマー初期化
│ ├── TimerController.js # タイマー制御
│ ├── TimerUI.js # タイマーUI管理
│ └── ui.js # UI管理(タブ切替など)
└── data/ # ローカルデータ保存用
└── rankings.json # ローカル開発用ランキングデータ
- ローカルストレージを使用したランキング機能
- 誤差の保存と管理(ベストレコード、直近10回分の履歴)
- ランキング表示(誤差が小さい順のトップ10)
- Supabaseを使用したグローバルランキング機能
- 日別ランキング - 当日の誤差が小さい順のトップ10
- 週別ランキング - 今週の誤差が小さい順のトップ10
- ランキング登録フォーム - 名前を入力して記録を送信
- TimerController - タイマーの制御(開始、停止、更新、リセット)
- TimerUI - タイマーの表示管理
- DiffMessageManager - 誤差に応じたコメントの生成
- RankingStorage - ローカルストレージでの記録管理
- Supabase連携 - グローバルランキングのデータ送受信
config.jsで一元管理されたゲーム設定- TARGET_TIME: 目標時間(10秒)
- FADE_DELAY: 数字が非表示になるまでの時間(3秒)
- FORCE_STOP_DELAY: 強制停止までの時間(15秒)
- その他UI/UX関連の設定値
- Supabaseを使用したグローバルランキング機能の実装
- 日別・週別ランキングの表示
- ランキング登録フォームの追加
- コンポーネント構成の整理
- app.jsをエントリポイントとした明確なモジュール構成
- 各機能をコンポーネント化して保守性向上
- ランキング表示UIの改善
- タブ切り替えによる複数ランキング表示
- 1位〜3位の特別表示(メダルアイコンなど)