リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: 合体ドロップ
Service Workerによるゲーム画面のオフラインキャッシュ対応
1. 目的:
現在は「送信できなかったスコアを端末に保留し後で再送信する」機能はあるが、そもそも通信が不安定/圏外な状態でゲーム画面(play.php)自体の読み込みに失敗すると遊べない。一度訪問済みの端末なら、電波が不安定な移動中やオフラインでもタイトル・プレイ画面を開けるようにし、既存の保留スコア機構と組み合わせて『いつでもプレイでき、戻ったら自動送信される』体験を完成させる。
2. 具体的な仕様:
- ルート直下に sw.js を新規追加し、play.php(および title/help/zukan等の静的表示中心のページ)の読み込み時に `if ('serviceWorker' in navigator)` でフィーチャー検出しつつ registration するJSを追加(未対応ブラウザは従来通り何もしない)。
- キャッシュ名はアプリバージョン(manifest.jsonのversion、例: vd-cache-v1.129.0)を含める。install時にCSS/JS/フォント/アイコン画像などの静的アセットをプリキャッシュし、activate時に旧バージョンのキャッシュ名を削除して自動的に切り替える。
- キャッシュ戦略は静的アセットのみ cache-first、submit_score.php・rank_check.php・ランキング取得などDBから動的データを返すエンドポイントは常に network-only (Service Worker内でパスを判定してキャッシュ対象から除外)とし、順位やスコアが古いまま表示される事故を防ぐ。
- オフライン時にAPIへのfetchが失敗した場合、既存の「保留中スコア」の文言・UIをそのまま流用して『通信が回復したら自動送信されます』というメッセージを出す(新規の保留ロジックは追加せず、既存の保留キューにフォールバックさせるだけ)。
- index.php(page未指定時)のトップ表示部にも同じ登録スクリプトを配置し、初回訪問時にキャッシュを作成しておく。
3. 既存機能との整合:
- Service Worker登録は非対応ブラウザ・登録失敗時とも例外を握りつぶし、既存の画面表示・操作性には一切影響しない。
- 動的API(スコア送信・順位取得・ランキング一覧)は明示的にキャッシュ対象から除外するため、既存のランキング精度・上位%表示・保留スコア再送信ロジックに影響しない。
- DBスキーマ変更なし。CSS/JS/画像パスの構成が変わらない前提でキャッシュリストを組むため、既存の相対パス参照はそのまま機能する。
- バージョンごとにキャッシュ名を変えるため、今後のアップデート時に旧アセットが残り続けて表示崩れを起こす心配もない。
現在は「送信できなかったスコアを端末に保留し後で再送信する」機能はあるが、そもそも通信が不安定/圏外な状態でゲーム画面(play.php)自体の読み込みに失敗すると遊べない。一度訪問済みの端末なら、電波が不安定な移動中やオフラインでもタイトル・プレイ画面を開けるようにし、既存の保留スコア機構と組み合わせて『いつでもプレイでき、戻ったら自動送信される』体験を完成させる。
2. 具体的な仕様:
- ルート直下に sw.js を新規追加し、play.php(および title/help/zukan等の静的表示中心のページ)の読み込み時に `if ('serviceWorker' in navigator)` でフィーチャー検出しつつ registration するJSを追加(未対応ブラウザは従来通り何もしない)。
- キャッシュ名はアプリバージョン(manifest.jsonのversion、例: vd-cache-v1.129.0)を含める。install時にCSS/JS/フォント/アイコン画像などの静的アセットをプリキャッシュし、activate時に旧バージョンのキャッシュ名を削除して自動的に切り替える。
- キャッシュ戦略は静的アセットのみ cache-first、submit_score.php・rank_check.php・ランキング取得などDBから動的データを返すエンドポイントは常に network-only (Service Worker内でパスを判定してキャッシュ対象から除外)とし、順位やスコアが古いまま表示される事故を防ぐ。
- オフライン時にAPIへのfetchが失敗した場合、既存の「保留中スコア」の文言・UIをそのまま流用して『通信が回復したら自動送信されます』というメッセージを出す(新規の保留ロジックは追加せず、既存の保留キューにフォールバックさせるだけ)。
- index.php(page未指定時)のトップ表示部にも同じ登録スクリプトを配置し、初回訪問時にキャッシュを作成しておく。
3. 既存機能との整合:
- Service Worker登録は非対応ブラウザ・登録失敗時とも例外を握りつぶし、既存の画面表示・操作性には一切影響しない。
- 動的API(スコア送信・順位取得・ランキング一覧)は明示的にキャッシュ対象から除外するため、既存のランキング精度・上位%表示・保留スコア再送信ロジックに影響しない。
- DBスキーマ変更なし。CSS/JS/画像パスの構成が変わらない前提でキャッシュリストを組むため、既存の相対パス参照はそのまま機能する。
- バージョンごとにキャッシュ名を変えるため、今後のアップデート時に旧アセットが残り続けて表示崩れを起こす心配もない。
💬 返信 (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/
ご利用ありがとうございます!
ご要望いただいた「合体ドロップ」のオフラインゲーム画面キャッシュ対応を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=vegetable-drop
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/vegetable-drop/
ご利用ありがとうございます!
Echo
Iris