リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
配信JS/CSSの自動ミニファイ+ディスクキャッシュによる読み込み高速化
1. 目的:
既にページ種別ごとのJS/CSSバンドル分割、WebP変換ディスクキャッシュ、APCu短期キャッシュ、Service Workerキャッシュなどで転送量・応答速度を改善済みだが、配信されるJS/CSS自体はコメントや余分な空白・改行を含んだ未加工のソースのままであり、特にモバイル回線での初回読み込み(マップ画面・戦闘画面のJS一式)がまだ重い。バンドル済みJS/CSSを軽量化することで、マップ移動・戦闘に入るまでの初期表示と、Service Workerキャッシュ更新時の再ダウンロード量を削減する。
2. 具体的仕様:
- assets.php(または既存のバンドル生成処理)内に rpgsf_minify_js($code) / rpgsf_minify_css($code) という簡易ミニファイ関数を追加する。実装は正規表現ベースの軽量処理で十分:
- CSS: /* ... */ コメント除去、連続する空白・改行の圧縮、セレクタ/プロパティ間の不要スペース除去
- JS: 単一行 // コメントと /* */ ブロックコメントの除去(文字列リテラルやURL内の// は誤除去しないよう、簡易な文字列検出でスキップ)、行頭行末の空白トリム、連続する空行の圧縮
- 既存の rpgsf_cached_assets() の仕組みを再利用し、キャッシュキーに 'minified' を含めて、ビルド結果(バンドル済み文字列)をミニファイしてからAPCu/ディスクキャッシュ(storage/cache配下)に保存する。config.php に asset_minify (bool, デフォルトtrue) を追加し、無効化時は現行の未加工出力にフォールバックできるようにする。
- 出力時は既存の rpgsf_asset_url() のバージョンクエリ(?v=マニフェストバージョン)をそのまま利用し、Service Workerのキャッシュキーとも整合させる。
- ミニファイ処理でJSの構文が壊れる可能性がある変則的な記述(テンプレートリテラルや正規表現リテラル内のコメント記号など)に配慮し、安全側に倒す簡易ルール(危険なパターンを検出したら圧縮をスキップしてそのファイルは元コードのまま返す)を入れる。
3. 既存機能との整合:
- 出力されるJS/CSSの実行結果・見た目は変わらず、ファイルサイズのみ縮小するため、既存のページ描画・操作・戦闘・マップ移動ロジックには影響しない。
- asset_minify=false設定で即座に無効化でき、後方互換を保つ。
- 既存のバンドル分割・APCuキャッシュ・Service Workerキャッシュ・gzip圧縮(mod_deflate)と組み合わせて動作し、二重圧縮による不具合は生じない(ミニファイはテキスト段階の軽量化、gzipは転送時圧縮のため独立して機能する)。
既にページ種別ごとのJS/CSSバンドル分割、WebP変換ディスクキャッシュ、APCu短期キャッシュ、Service Workerキャッシュなどで転送量・応答速度を改善済みだが、配信されるJS/CSS自体はコメントや余分な空白・改行を含んだ未加工のソースのままであり、特にモバイル回線での初回読み込み(マップ画面・戦闘画面のJS一式)がまだ重い。バンドル済みJS/CSSを軽量化することで、マップ移動・戦闘に入るまでの初期表示と、Service Workerキャッシュ更新時の再ダウンロード量を削減する。
2. 具体的仕様:
- assets.php(または既存のバンドル生成処理)内に rpgsf_minify_js($code) / rpgsf_minify_css($code) という簡易ミニファイ関数を追加する。実装は正規表現ベースの軽量処理で十分:
- CSS: /* ... */ コメント除去、連続する空白・改行の圧縮、セレクタ/プロパティ間の不要スペース除去
- JS: 単一行 // コメントと /* */ ブロックコメントの除去(文字列リテラルやURL内の// は誤除去しないよう、簡易な文字列検出でスキップ)、行頭行末の空白トリム、連続する空行の圧縮
- 既存の rpgsf_cached_assets() の仕組みを再利用し、キャッシュキーに 'minified' を含めて、ビルド結果(バンドル済み文字列)をミニファイしてからAPCu/ディスクキャッシュ(storage/cache配下)に保存する。config.php に asset_minify (bool, デフォルトtrue) を追加し、無効化時は現行の未加工出力にフォールバックできるようにする。
- 出力時は既存の rpgsf_asset_url() のバージョンクエリ(?v=マニフェストバージョン)をそのまま利用し、Service Workerのキャッシュキーとも整合させる。
- ミニファイ処理でJSの構文が壊れる可能性がある変則的な記述(テンプレートリテラルや正規表現リテラル内のコメント記号など)に配慮し、安全側に倒す簡易ルール(危険なパターンを検出したら圧縮をスキップしてそのファイルは元コードのまま返す)を入れる。
3. 既存機能との整合:
- 出力されるJS/CSSの実行結果・見た目は変わらず、ファイルサイズのみ縮小するため、既存のページ描画・操作・戦闘・マップ移動ロジックには影響しない。
- asset_minify=false設定で即座に無効化でき、後方互換を保つ。
- 既存のバンドル分割・APCuキャッシュ・Service Workerキャッシュ・gzip圧縮(mod_deflate)と組み合わせて動作し、二重圧縮による不具合は生じない(ミニファイはテキスト段階の軽量化、gzipは転送時圧縮のため独立して機能する)。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (rpg-story-forge))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=rpg-story-forge
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/rpg-story-forge/
ご利用ありがとうございます!
ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=rpg-story-forge
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/rpg-story-forge/
ご利用ありがとうございます!
Echo
Iris