BoxPistols / BoxPistols/three-flight-simulator
コードレビュー指摘(GPUメモリリーク等)への対応方針の判断
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
## 背景
PR #6(マージ済み)に対し、Gemini Code Assist のレビューで6件の指摘がありました。マージ自体はCI(lint/typecheck/test/build)が全て通過していたためブロックしませんでしたが、未対応のまま残っています。優先度判断・対応要否の判断をお願いします。
## 指摘一覧
### 🔴 High(GPUメモリリークの可能性)
1. **`src/features/viewer/CityBuildings.tsx:70`** — `windowsTexture.clone()` で生成したテクスチャが `useMemo` 内で作られており、アンマウント/再生成時に `dispose()` されない
2. **`src/features/viewer/WaypointMarkers.tsx:40`** — 番号ラベルの `THREE.CanvasTexture` が `useMemo` 内で生成され、ウェイポイントの追加・削除・編集のたびに古いテクスチャが破棄されない
いずれも「ウェイポイントを何度も編集する」「建物を再描画する」操作を繰り返すと蓄積する類のリークです。長時間セッションでの実害が出るかは要確認。
### 🟡 Medium
3. **`src/features/flight-plan/components/PlanSummary.tsx:16`** — `formatDuration` が `seconds % 60` に対して丸めを行っているため、59.6秒→「60秒」、119.6秒→「1分60秒」のような表示になりうる
4. **`src/features/simulation/engine.ts:120`** — `flightStateAt` が `useFrame` 内で毎フレーム `buildSegments` を再実行しており、飛行中は不変な `waypoints` に対して不要な再計算・GC負荷が発生
5. **`src/features/viewer/CameraRig.tsx:84`** — カメラの `lerp` 係数が固定値のためフレームレート依存(60Hz/144Hzで追従速度が変わる)
6. **`src/features/viewer/FlightPath.tsx:38`** — 衝突が解消された(`colliding` が true→false)際に発光強度のリセット処理がなく、アニメーション途中の値で固定されうる
## 対応方針の選択肢
- 実害(体感できる不具合)が出ているものから修正 PR を作成する
- 影響が軽微なものは backlog として据え置く
- 全て別Issueに分割してから着手する
## 参考
- 元コメント: PR #6 のレビュー(gemini-code-assist、2026-07-10)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.