📄 仕様書検証レポート図解ロードマップWBS 進捗ボード

📋 WBS 進捗ボード

iPhone 牌認識テスト改善 → PDCA 精度ループ → スマートグラス Phase 0 の全作業を分解し、状態を常時更新。
最終更新: 2026-07-27 未明(第8報)— WBS 2 は 88% 到達。残りは ort 更新・自ホスト(慎重に実施)と学習(jitaku 待ち)のみ。以後は朝9:00 の PDCA 定期実行を監視— 🤖 24時間自走モード運用中(Claude Code が進捗のたびにこのページを自動更新。あなたの作業は「完成後の最終確認」まで一切不要)。
🔬 速報: AI 代替評価が完了し、「精度が悪すぎた」の主因を実証 — ①学習データと実物牌の見た目の違い(ドメイン差・実写一致上限72.8%) ②手ブレ・ピンボケ・暗所(JPEG や解像度はほぼ無関係)。①の対策(実牌ドメイン適応=2.14)が改善の本命、②は今夜デプロイ済みのブレ除外ゲート+警告表示で対処済み。

WBS 1: P0 — テスト成立の土台(今週)12/14 = 86%
残り: 1.11 タスク定義の上書き確認(90%)・1.13 PDCA 初回サイクル監視中 — どちらもあなたの作業不要
WBS 2: P1 — 精度・速度(前倒し進行中)14/16 = 88%
7/26 夜に前倒し完了: KEEP パラメータ(2.4 一部)・鮮鋭度ゲート(2.12 一部)・E2E 拡張 10項目(2.15a)。実牌アトラス切り出し(2.14 前段)実行中
WBS 3: P2+PDCA 運用(8/10〜8/22)0/9 = 0%
WBS 4: スマートグラス Phase 0(9月〜)0/9 = 0%
開始条件: WBS 3 完了+field 精度確定(8/31)
🎉 2026-07-26 の成果: 本番停止(1ヶ月無検知のモデル欠落)を発見・復旧し、P0 のコード改修 10 項目をすべて実装・デプロイ済み。精度が悪かった主因のうち「モデルが配信されていない」「6枚スキャンで牌の上下44%が AI に見えていない」「ピンボケ距離への誘導」「1フレームの誤認識が混入し放題」の4つは今日の時点で解消済みです。次にあなたの iPhone で開いたときは、画面下に「ms | モデル版 | webgpu/wasm」が常時表示され、正しい条件でテストできます。

WBS 1: P0 — テスト成立の土台(7/26〜7/31)

IDタスク状態担当期限完了日/備考
1.1本番モデル欠落の発見・復旧(P0-0)— bb8bf7a0 から回収・SHA256 検証・再デプロイ✅ 完了Claude7/267/26。本番 octet-stream 10.6MB 配信確認
1.2モデル読込の故障検出+version/EP/ms 常時表示+cache-bust+model-meta.json(#1)✅ 完了Claude7/277/26 前倒し。content-type+先頭バイト検査
1.3ort CDN 死亡時ガード(#2)— 読込失敗でもサンプル体験は生存✅ 完了Claude7/277/26 前倒し
1.4カメラライフサイクル(#3)— wakeLock・画面ロック復帰・track ended 監視・連打ガード・1080p 要求✅ 完了Claude7/287/26 前倒し
1.5iOS 26 クラッシュ対策(#4)— 150ms スロットリング+400回ごとセッション再生成✅ 完了Claude7/287/26 実装。有効性判定は 1.11 で
1.6確定時 video.pause()+カメラエラー日本語案内(#5)✅ 完了Claude7/277/26 前倒し
1.7ガイド枠のモード分岐(#6)— 6枚スキャンの上下44%クロップ解消+縦持ち下限✅ 完了Claude7/277/26 前倒し
1.8精度直結の即効修正7点 — SCAN_CONF 復活(confThr連動)・➕を安定必須化・多重集合キー・dims 検証・conf% 表示・0z 可視化・セーフエリア・サンプル誤タップ保護・「20cm離す」文言✅ 完了Claude7/277/26 前倒し
1.9誤認識フィードバック送信(#7)— worker meta/flag 対応デプロイ済・オプトイン UI・確定/✕削除時送信・pull-feedback の auto 除外+review 隔離✅ 完了Claude7/297/26 前倒し。worker 疎通テスト済
1.10再発防止(P0-H)— pdca-cycle a1 のデプロイ前 assert+check-model-health.py(content-type 監視・NG 時 LINE 通知)✅ 完了Claude7/287/26 前倒し。OK 動作確認済
1.11🔌 jitaku-pc1 電源投入 → install-pdca-task.ps1 実行(Phase D)🔄 90%あなた(物理)7/29(水)7/26 前倒しで電源投入済・23日ぶりオンライン復帰・初回 PDCA サイクル起動済(MahjongPDCA タスクは既存定義で稼働 — 定義の中身確認と上書き再登録が残)
1.12🤖 実機テストの AI 代替(4系統)完了 — ①ローカル実測: 学習ドメイン内 P=0.943/R=0.733・萬子が最弱(R 0.43〜0.52) ②劣化評価: 精度を壊す主犯は手ブレ(−0.100)>ピンボケ(−0.064)>暗所(−0.037)、JPEG/低解像度はほぼ無害 ③ブラウザE2E: 7/7 pass(本日改修の回帰込み・2回再現) ④投票シミュレーション: 27条件×18組×200試行で最適パラメータ特定✅ 完了Claude(6 agents)7/277/26 夜完了。成果: tools/eval_onnx_local.py・eval_degraded.py・e2e-camera-ai.mjs・keep-vote-sim.mjs+実測 JSON 4本(docs-site/data/)
1.14🔬 実写クロスチェック(重要発見) — 実物牌フルセット写真(最良条件)でクラス一致上限 72.8%・7m/9m/7p/8p/西/白の6クラス全滅・誤りは conf 0.84〜0.94 の高信頼系統誤り。「精度が悪すぎ」の主因は手ブレ以前に牌面スタイルのドメイン差(学習データが FluffyStuff 様式のみ)と実証。※検証画像は中国式牌のため日本式リーチ牌では改善余地あり✅ 完了Claude対策の本命 = 2.14 実牌ドメイン適応へ
1.15⚡ 実測に基づく即効修正の前倒し適用 — KEEP を minVotes8/streak2 に変更(誤固定ほぼ半減の実測裏付け)/ 鮮鋭度ゲート(ブレフレームの票を投票から自動除外+「📷ブレ検出」表示)/ 暗所警告(「💡照明を明るく」表示)→ E2E 7/7 維持を確認して本番デプロイ✅ 完了Claude7/26 深夜
1.13🤖 jitaku-pc1 の初回 PDCA サイクル貫通確認 — MahjongPDCA タスクは登録済・RunNow 起動済(Claude 非依存の Python+タスクスケジューラで稼働)。完走すれば pdca-state.json が自動更新されるため Claude が監視中。保険: 明日 09:00 の日次自動実行🔄 監視中jitaku-pc1(自動)+Claude(監視)7/27 09:00⚠ ブロッカー(新規): jitaku の Claude Code OAuth が23日オフラインで失効 — リモート dispatch(エラー自己修復・YOLOX 学習指示)が不可。PDCA 自体は影響なし。復旧は最終確認時に claude login 1回のみお願いする予定

WBS 2: P1 — 精度・速度(8/3〜8/8・約16h)

IDタスク状態担当期限
2.1✅ KEEP 校正の複数フレーム化+14枚許容+健全性自動再校正 — 見落とし30%条件の成功率 73〜82%→96.5〜100%(校正到達100%)・ロック時間 12〜14s→4〜7s(sim v2 実測: keep-sim-v2.json)✅ 完了Claude(agent)7/26
2.2✅ 枠割当のグローバルシフト補正(median オフセット推定)+ロック済み枠も EMA 追従 — 手ブレ大(σ20px)の誤固定 4.4〜5.0%→0.8〜2.2%(1/2〜1/6)✅ 完了Claude(agent)7/26
2.3✅ KEEP 投票リングバッファ化(直近20票)— 初期誤票の永続を解消✅ 完了Claude(agent)7/27
2.4✅ KEEP.conf の confThr 連動(max(confThr+0.05, 0.40))+スロット別の保留理由表示(票不足/一致低/conf低/安定待)✅ 完了Claude(agent)7/27
2.5✅ 赤5の2層投票 — 赤5フリッカーストレスで旧実装 35.5〜83% に崩壊する条件を 98.5〜100% 維持(sim v3 実測)✅ 完了Claude(agent)7/27
2.6✅ NMS 2段閾値+IoA 包含抑制(同一牌の二重カウント解消)— E2E 17項目の回帰 pass 確認済み✅ 完了Claude7/26
2.7✅ 混同ペア色サニティ(soft)— 9s/9p は赤の主軸(縦/横)で矛盾検出→conf減点+訂正候補保持、無赤8種の赤検出は照明かぶり疑いで減点。tiles 実測で較正済み✅ 完了Claude(agent)7/27
2.8ort 1.27.0 化+webgpu/非JSEP 二段ロード(#27584/#26827 回避)+実機 smoke testClaude+確認8/6
2.9✅ ウォームアップ推論(NaN/Inf 検査)+実行時 wasm フォールバック(連続エラー5回で張替え)— iOS WebGPU 実行時故障対策✅ 完了Claude(agent)7/27
2.10ort 自ホスト(vendor/)+COOP/COEP(スコープ限定)+wasm マルチスレッドClaude8/7
2.11✅ ズームスライダー(feature-detect・対応端末で自動表示+初期1.5倍)— 「離してズーム」でピンボケ回避。動作値の最終確認のみ実機で✅ 完了Claude7/27
2.12✅ requestVideoFrameCallback 化(同一フレーム二重推論排除・150ms スロットル維持)+完了後間引き(全ロック/14枚到達で 1000ms)+鮮鋭度ゲート(先行実装済)✅ 完了Claude(agent)7/27
2.13✅ テンソル再利用(3MB/フレームの GC 排除)+overlay 再確保抑止+imageSmoothingQuality=high(索子細線対策)✅ 完了Claude(agent)7/27
2.14a🎯 実牌アトラス切り出し完了 — 実写3枚から 216/216 牌を切り出し(検出box+グリッド幾何)、クラス割当 199枚(92.1%)・34クラス全てに4〜8枚・検出全滅だった 7m/9m/7p/8p/西/白 も全数確保(全216セル目視検証済)。2種の実物セットの彫刻・光沢・手彩色テクスチャ = FluffyStuff と別ドメイン✅ 完了Claude(agent)7/26tools/extract_real_tiles.py+synth/real-tiles-atlas/(再生成可)
2.14b✅ 合成パイプラインの実牌アトラス対応完了 — --tile-src real-atlas(混合率・角丸マスク・スケール正規化・花牌 distractor・萬子オーバーサンプリング)。スモーク評価で仮説を定量確認: 実牌スタイル100%で R 半減(0.733→0.365)・萬子 R 0.237 = 再学習の効果余地が大きい✅ 完了Claude(agent)7/26後方互換維持・シード再現性維持
2.14c学習データ 5,000 枚の本生成完了(実写50%混合=78,037 タイル配置+萬子1.8倍+低画質+distractor 815)— 595MB。jitaku 復旧後に 1 dispatch で再学習まで回せるランブック(docs/train-real-atlas-runbook.md)も整備。検収条件: 実写一致 72.8%→85%+/萬子退行なし✅ 完了このPC7/26学習実行のみ jitaku OAuth 復旧待ち(唯一の残ブロッカー)
2.15aE2E 拡張 10項目完了 — CDN断/カメラ拒否/track ended/400回セッション再生成/📸確定→タップ採点(14枚完全フロー)/feedback 送信 ON・OFF/縦持ちガイド枠/decode形状ガード/ブレゲート — 全 pass・既存7項目も維持・バグゼロ。本日改修は計17自動テストで検証済み✅ 完了Claude(agent)7/26tools/e2e-camera-ai-ext.mjs
2.15bsim v2(系統誤り・FP・ROI実効qモデルで投票再掃引)Claude8/5〜

WBS 3: P2+PDCA 運用(8/10〜8/22)

IDタスク状態担当期限
3.1誤ロックスロットの個別訂正+38クラス手動パレット(訂正ペアを最高品質データとして送信)Claude8/12
3.2セッションサマリ JSON(log-ml-progress.py 直貼り形式)+実効 fps EMAClaude8/13
3.3点数条件バー(ツモ/ロン・親/子・リーチ・ドラ)— 門前ツモ固定の解消Claude8/14
3.4✕ボタン 44px 化+undo 操作スタック統一Claude8/15
3.5📱 定点テスト(週2回・15分)— 火・土。✕削除・訂正がそのまま学習データに⬜ 継続あなた毎週
3.6feedback 30件到達 → PDCA 自動再学習 初回発火(GTX1050)自動(jitaku)8月中〜下旬
3.7再学習モデルの萬子退行ガード → 合格なら自動デプロイ(a1・P0-H assert 済)自動同上
3.8review キュー(✕削除画像)の人手ラベル確認 → val 昇格Claude+確認8/22
3.9🎯 field 精度(実地認識率)の一次データ確定 — field_val_map50 ≠ null に判断8/31

WBS 4: スマートグラス Phase 0(9月〜・親仕様 §10)

IDタスク状態担当備考
4.1Go/No-Go: XREAL One Pro + Eye 発注判断(¥93,780)あなたWBS 3.9 の結果を見て
4.2T-0 資産回収の完遂(.pt R2 退避 — jitaku 復旧後)Claude1.11 完了後いつでも
4.3YOLOX 再学習(Apache 2.0 回帰・AGPL 回避)+souzu_v1 と mAP 比較jitaku-pc1C-1。−5pt 以内がゲート
4.4Unity 6 + XREAL SDK 疎通(T-1: fps/レイテンシ/画角×姿勢)Claude+実機発注後
4.5一人称データ収集 500〜1,000枚+外注検収(¥10〜15万)収集+外注条件マトリクス: 牌3種×照明3×卓2
4.6老眼被験者テスト(実牌+HUD 同時視認)— C-2 ゲートあなた教室ユースケースの成立条件
4.7NPU 変換検証(ONNX→QNN/LiteRT)Claudem-2 ゲート
4.8KWS 技術選定スパイク(sherpa-onnx/Vosk 比較・≤300ms)Claude誤起動検証込み
4.9Phase 0 Go/No-Go 判定会(4ゲート: 老眼・画角・NPU・YOLOX mAP)あなた9月末目標
「前回と同じこと(精度が悪くてやる気が落ちる)」を防ぐ仕組み: ① 画面に常時「モデル版 | EP | 推論ms」が出るので壊れた状態で気づかずテストすることがもうない ② 本番モデル欠落は check-model-health.py が検知して LINE に通知(pdca の自動デプロイにも assert 済) ③ ➕ボタンは5フレーム安定するまで押せないので誤認識が混ざりにくい ④ それでも誤認識したら ✕ を押すだけで学習データとして届き、30件で自動再学習が回る — テストするほど賢くなるループに変わりました。