リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: ワールドクイズトリップ - 世界地図で学ぶ地理クイズゲーム
「今日のデイリーチャレンジ」モードの追加
## 1. 目的
毎日決まった10問セットを全ユーザーが同じ条件でプレイできる「デイリーチャレンジ」モードを追加する。日付シードによる再現性のある出題で、同じ日に遊んだユーザー同士がスコアを比較できる。毎日ログインする動機づけを高め、リテンション向上を図る。
## 2. 具体的な仕様
### 2-1. 出題ロジック
- サーバー側 PHP で `date('Ymd')` を乱数シード (`srand(intval(date('Ymd')))`) にして 195 カ国からランダムに10カ国を選ぶ。
- 問題タイプ(首都・国旗・大陸・通貨)も同シードで決定する。
- 同じ日付なら誰がアクセスしても同一の10問が出題される。
- 難易度固定は「ミックス」(初〜上級が約3:4:3の比率でシードで決定)。
### 2-2. プレイ制限
- ニックネームと日付の組み合わせを `daily_challenge_scores` テーブルで管理し、**1日1回のみ**スコアを記録できる。
- 2回目以降にアクセスした場合は「本日分は回答済みです」と表示し、自分のスコアと当日ランキングを閲覧のみ可能にする(再プレイは不可)。
- ニックネーム未入力の場合は既存のニックネーム入力フローへ誘導する。
### 2-3. スコア計算
- 正解1問につき基礎点100点。
- 制限時間は1問20秒(タイマーUI付き)。残り秒数 × 5点をボーナス加算。
- 全問正解ボーナス +500点。
- 満点: (100+100) × 10 + 500 = 2500点 を上限目安。
### 2-4. DBテーブル (新規追加)
```sql
CREATE TABLE daily_challenge_scores (
id INT AUTO_INCREMENT PRIMARY KEY,
nickname VARCHAR(50) NOT NULL,
play_date DATE NOT NULL,
score INT NOT NULL DEFAULT 0,
correct_count TINYINT NOT NULL DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uq_nick_date (nickname, play_date)
);
```
### 2-5. デイリーランキング表示
- プレイ後の結果画面に「本日のデイリーランキング Top20」を表示(同日 play_date で絞り込み・score 降順)。
- 自分の順位は色付きハイライトで強調。
- ランキング画面の既存モード別タブに「デイリー」タブを追加し、日付セレクター(直近7日分)で過去の結果も閲覧可能にする。
### 2-6. UI/UX
- トップメニューに「📅 デイリーチャレンジ」ボタンを追加。既存4モードボタンの下段に配置。
- ボタン上部に「本日残り HH:MM:SS」のカウントダウンタイマー(JSで翌00:00までを表示)を小テキストで表示し、毎日リセットを視覚的に伝える。
- 回答済みの場合はボタンを「✅ 回答済み(結果を見る)」に変化させてグレーアウト。
- 問題UIは既存の4択クイズ画面コンポーネントを流用し、タイマーバーを追加するだけの最小改修で済ませる。
- クイズ後の国カード詳細モーダルは既存のまま流用。
## 3. 既存機能との整合
- 既存の4モード・学習カード・学習レポート・ランキングは一切変更しない。
- `daily_challenge_scores` は新規テーブルのため既存テーブルに影響なし。
- 学習レポートの「苦手国Top10・国別正答率」集計クエリにデイリーチャレンジの正誤を含めるか否かは、既存の正誤記録テーブル (`quiz_results` 等) へのINSERT有無で制御し、既存レポートロジックは変更不要。
- ランキングページへの「デイリー」タブ追加は既存タブのHTML/CSSを複製する形で後付けし、既存タブの挙動を壊さない。
毎日決まった10問セットを全ユーザーが同じ条件でプレイできる「デイリーチャレンジ」モードを追加する。日付シードによる再現性のある出題で、同じ日に遊んだユーザー同士がスコアを比較できる。毎日ログインする動機づけを高め、リテンション向上を図る。
## 2. 具体的な仕様
### 2-1. 出題ロジック
- サーバー側 PHP で `date('Ymd')` を乱数シード (`srand(intval(date('Ymd')))`) にして 195 カ国からランダムに10カ国を選ぶ。
- 問題タイプ(首都・国旗・大陸・通貨)も同シードで決定する。
- 同じ日付なら誰がアクセスしても同一の10問が出題される。
- 難易度固定は「ミックス」(初〜上級が約3:4:3の比率でシードで決定)。
### 2-2. プレイ制限
- ニックネームと日付の組み合わせを `daily_challenge_scores` テーブルで管理し、**1日1回のみ**スコアを記録できる。
- 2回目以降にアクセスした場合は「本日分は回答済みです」と表示し、自分のスコアと当日ランキングを閲覧のみ可能にする(再プレイは不可)。
- ニックネーム未入力の場合は既存のニックネーム入力フローへ誘導する。
### 2-3. スコア計算
- 正解1問につき基礎点100点。
- 制限時間は1問20秒(タイマーUI付き)。残り秒数 × 5点をボーナス加算。
- 全問正解ボーナス +500点。
- 満点: (100+100) × 10 + 500 = 2500点 を上限目安。
### 2-4. DBテーブル (新規追加)
```sql
CREATE TABLE daily_challenge_scores (
id INT AUTO_INCREMENT PRIMARY KEY,
nickname VARCHAR(50) NOT NULL,
play_date DATE NOT NULL,
score INT NOT NULL DEFAULT 0,
correct_count TINYINT NOT NULL DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uq_nick_date (nickname, play_date)
);
```
### 2-5. デイリーランキング表示
- プレイ後の結果画面に「本日のデイリーランキング Top20」を表示(同日 play_date で絞り込み・score 降順)。
- 自分の順位は色付きハイライトで強調。
- ランキング画面の既存モード別タブに「デイリー」タブを追加し、日付セレクター(直近7日分)で過去の結果も閲覧可能にする。
### 2-6. UI/UX
- トップメニューに「📅 デイリーチャレンジ」ボタンを追加。既存4モードボタンの下段に配置。
- ボタン上部に「本日残り HH:MM:SS」のカウントダウンタイマー(JSで翌00:00までを表示)を小テキストで表示し、毎日リセットを視覚的に伝える。
- 回答済みの場合はボタンを「✅ 回答済み(結果を見る)」に変化させてグレーアウト。
- 問題UIは既存の4択クイズ画面コンポーネントを流用し、タイマーバーを追加するだけの最小改修で済ませる。
- クイズ後の国カード詳細モーダルは既存のまま流用。
## 3. 既存機能との整合
- 既存の4モード・学習カード・学習レポート・ランキングは一切変更しない。
- `daily_challenge_scores` は新規テーブルのため既存テーブルに影響なし。
- 学習レポートの「苦手国Top10・国別正答率」集計クエリにデイリーチャレンジの正誤を含めるか否かは、既存の正誤記録テーブル (`quiz_results` 等) へのINSERT有無で制御し、既存レポートロジックは変更不要。
- ランキングページへの「デイリー」タブ追加は既存タブのHTML/CSSを複製する形で後付けし、既存タブの挙動を壊さない。
💬 返信 (3)
🛠 開発を開始しました (機能追加 worldquiztrip)
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「ワールドクイズトリップ - 世界地図で学ぶ地理クイズゲーム」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=worldquiztrip
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/worldquiztrip/
ご利用ありがとうございます!
ご要望いただいた「ワールドクイズトリップ - 世界地図で学ぶ地理クイズゲーム」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=worldquiztrip
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/worldquiztrip/
ご利用ありがとうございます!
Echo
Iris