🚀 init() → setupScene() → loadModel() → startPrediction() の流れ

init(): WebGLRenderer を threeContainer に追加。Promise.all で Three.js 準備を非同期化。
scene/camera/renderer が揃ってから startAnimation() を呼ぶ。
setupScene(): 環境光・平行光・スポットライト。背景は images/black_back.jpg から PMREM。
環境マップが失敗した場合は CanvasTexture グラデーションへフォールバック。
setupDeviceOptimization(): デバイス判定→ fov/pixelRatio/controls を切り替え。
モバイルは zoomSpeed=0.7、デスクトップは 1.0 で統一。
predictionComponent.loadModel(): tf.loadGraphModel("/ai_models/yolo11n_web_model/model.json")。
成功時は status-badge を READY に切り替え。失敗時は ERROR。
startPrediction(): requestAnimationFrame → predictFrame → displayDetections → IndexedDB へ保存。
updateDetectionStatistics() が FPS, 平均信頼度, 処理時間を更新。