リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: 合体ドロップ
ランキング画面にCSVダウンロード機能を追加
1. 目的:
現在ランキング画面では上位5件のみをテキストとしてコピーできるが(v1.41.0)、より多くの件数を記録したい、Excel等で集計したいというニーズに対応する。選択中のモード・タブ(今日/昨日/今週/歴代/日付指定)の上位記録をCSVファイルとしてダウンロードできるようにし、既存のコピー機能を補完する。
2. 具体的な仕様:
- pages/ranking.php に新規エンドポイント pages/rank_export.php (GET専用) を追加。パラメータは mode, tab(today/yesterday/weekly/alltime/date), date(tabがdateの場合のみ) を既存のranking画面の状態と同じ形式で受け取る。
- vd_valid_mode() で mode を検証し、不正値は 'vegetable' にフォールバック。tab も許可リストでチェックし、不正値は 'today' にフォールバック。dateパラメータは既存の日付指定タブと同じ検証ロジック(空・不正・未来日は今日にフォールバック)を再利用する。
- 各tabに応じたSQLクエリ(既存のranking.php内のクエリと同一条件)で上位50件を取得し、rank(順位), player_name, score, max_evolution, duration_sec, created_at(JST表記) の列を持つCSVを生成する。
- レスポンスヘッダーに Content-Type: text/csv; charset=utf-8 と Content-Disposition: attachment; filename="ranking_{mode}_{tab}_{date}.csv" を設定し、UTF-8 BOM を先頭に付与してExcelでの文字化けを防ぐ。
- ranking.php の画面に既存の「📋 ランキングをコピー」ボタンの隣に「⬇ CSVダウンロード」ボタン(アンカータグでrank_export.phpへリンク)を追加し、現在選択中のmode/tab/dateをクエリパラメータとして付与する。日本語ラベルは「⬇ CSVダウンロード」、英語は「⬇ Download CSV」。
- データが0件の場合はヘッダー行のみのCSVを返す(専用メッセージへの分岐は不要、既存の空表示メッセージはHTML側のみに影響)。
3. 既存機能との整合:
- 既存のコピー機能(rank_check.phpや共有テキスト生成)、スコア送信API、DBスキーマ、localStorageは変更しない。
- rank_export.php は読み取り専用のGET APIとして新規追加するのみで、既存のranking.php内のロジックには影響を与えない。
- CSVの取得件数は上位50件に固定し、大量データによるパフォーマンス低下を防ぐ。
現在ランキング画面では上位5件のみをテキストとしてコピーできるが(v1.41.0)、より多くの件数を記録したい、Excel等で集計したいというニーズに対応する。選択中のモード・タブ(今日/昨日/今週/歴代/日付指定)の上位記録をCSVファイルとしてダウンロードできるようにし、既存のコピー機能を補完する。
2. 具体的な仕様:
- pages/ranking.php に新規エンドポイント pages/rank_export.php (GET専用) を追加。パラメータは mode, tab(today/yesterday/weekly/alltime/date), date(tabがdateの場合のみ) を既存のranking画面の状態と同じ形式で受け取る。
- vd_valid_mode() で mode を検証し、不正値は 'vegetable' にフォールバック。tab も許可リストでチェックし、不正値は 'today' にフォールバック。dateパラメータは既存の日付指定タブと同じ検証ロジック(空・不正・未来日は今日にフォールバック)を再利用する。
- 各tabに応じたSQLクエリ(既存のranking.php内のクエリと同一条件)で上位50件を取得し、rank(順位), player_name, score, max_evolution, duration_sec, created_at(JST表記) の列を持つCSVを生成する。
- レスポンスヘッダーに Content-Type: text/csv; charset=utf-8 と Content-Disposition: attachment; filename="ranking_{mode}_{tab}_{date}.csv" を設定し、UTF-8 BOM を先頭に付与してExcelでの文字化けを防ぐ。
- ranking.php の画面に既存の「📋 ランキングをコピー」ボタンの隣に「⬇ CSVダウンロード」ボタン(アンカータグでrank_export.phpへリンク)を追加し、現在選択中のmode/tab/dateをクエリパラメータとして付与する。日本語ラベルは「⬇ CSVダウンロード」、英語は「⬇ Download CSV」。
- データが0件の場合はヘッダー行のみのCSVを返す(専用メッセージへの分岐は不要、既存の空表示メッセージはHTML側のみに影響)。
3. 既存機能との整合:
- 既存のコピー機能(rank_check.phpや共有テキスト生成)、スコア送信API、DBスキーマ、localStorageは変更しない。
- rank_export.php は読み取り専用のGET APIとして新規追加するのみで、既存のranking.php内のロジックには影響を与えない。
- CSVの取得件数は上位50件に固定し、大量データによるパフォーマンス低下を防ぐ。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (vegetable-drop))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「合体ドロップ」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=vegetable-drop
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/vegetable-drop/
ご利用ありがとうございます!
(deploy 自動リカバリにより通知が遅延した可能性があります。 DEPLOY-RECOVERY-01)
ご要望いただいた「合体ドロップ」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=vegetable-drop
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/vegetable-drop/
ご利用ありがとうございます!
(deploy 自動リカバリにより通知が遅延した可能性があります。 DEPLOY-RECOVERY-01)
Echo
Iris