異世界ポイント市場の実装記録
— レート・表示速度・グラフ・マイページ(2026年3月)
サイト内コンテンツ「異世界ポイント市場」について、カーソルと異世界ポイントの換算を数値で管理すること、公開ページの表示を速くすること、グラフに軸の意味が分かる数字を付けること、あわせてマイページの入力まわりの改善を行いました。仕様の正本はリポジトリ内のコードと docs/異世界ポイント市場-仕様書.md です。本ページはそのときの作業を人が読み返しやすい形でまとめた記録です。
1. カーソルと異世界ポイントの数値レート(為替に近い挙動)
- 実装済み — 運営設定キー fantasy_market_points_per_cursor(1 カーソルあたりの異世界ポイント数)。管理画面 /share/admin?tab=fantasy_market から数値で保存する。
- 実装済み — 投入時はウォレットから max(1, round(カーソル数×レート)) を減算。DB の points_locked は実際に引いたポイント、cursors_locked は市場カーソル数として保持。
- 実装済み — 精算時は指数から求めたカーソル相当に、精算時点のレートを掛けて異世界ポイントを戻す(レート変更後の精算は新レートが適用される)。
2. ページ表示の高速化(バックグラウンド進行)
- 実装済み — GET /fantasy-market および GET /fantasy-market/my では、request_market_advance_background() により maybe_advance_market() をデーモンスレッドで走らせ、HTML の生成は待たない。表示は SQLite にある直近データ。
- 実装済み — 投入・精算の POST では従来どおり同期で maybe_advance_market() を呼び、指数を確定してから処理する(バックグラウンドがロック中ならそこで待機し得る)。
3. 計測ログ(任意で有効化)
- 実装済み — 環境変数 FANTASY_MARKET_DEBUG_TIMING を 1 / true 等にすると、/fantasy-market の各段階(DB 読み取り・テンプレ描画など)と、maybe_advance_market 内の Yahoo・RSS・OpenAI などの秒数がログに出る。通常運用ではオフ。
4. 指数グラフの縦軸・横軸
- 実装済み — static/js/fantasy_market_chart.js で、縦方向のグリッド線ごとに 指数の数値、横方向に ローソクの本番号(1=最古、右が最新)、キャプションで 表示本数・最大 320 本・時間の目安(market_tick_seconds() と本数から算出)を表示。
- 実装済み — テンプレートから fantasy_market_chart_meta(JSON)で tick_sec と max_candles を渡す。
5. マイページの入力と文言
- 実装済み — 投入カーソル欄の右に、入力値に応じて 「異世界ポイント○○相当」 を即時表示(static/js/fantasy_market_my_open.js、色は main-layout.css の .fantasy-market-points-equivalent)。
- 実装済み — 換算の見出しを 「今日の異世界為替レート」 に変更。
6. ドキュメント
- 実装済み — docs/異世界ポイント市場-仕様書.md を現仕様に合わせて更新し、§13 実装済み に追加分を表形式で整理。
- 実装済み — docs/OpenAI-APIと異世界ポイント市場-記事用メモ.md に本記事ページへの案内を追記。
- 実装済み — .env.example に計測用変数のコメント例。
7. おわりに
以降の仕様変更は、まず docs/異世界ポイント市場-仕様書.md を更新し、必要なら本ページの追記(他記事の追記欄 と同様の考え方)で履歴を残すとよいと思います。ナビの追加・戻るリンクのルールは .cursor/rules/content-navigation.mdc に従っています。
← 立ち上げストーリー
← プログラム構築の記録
← デプロイの記録
← ボタン1つデプロイの記録
← デプロイでまたハマった話
← ログイン設定の記録
← 改善記録
← ファイル紹介の使い方
← OGP・SEOの記録
← 統合ログインの設計・経緯
← Search Console・サイトマップ
← 環境変数・.env の管理
← Git 入門・インストール
← インストール後に Git で行う設定
← カード神経衰弱の記録
← 異世界シューティングの記録
← 異世界シューティングの難易度
← 異世界戦記(全画面・迷路レイアウト)の記録
← 複数人でのゲーム進行
← 異世界衰弱(不具合の修正)
← 異世界衰弱(機能別フローチャート)
← 異世界ポイントの活用について