# 開発進捗ログ

<!--
本ファイルは追記型のフル進捗ログ．

- 最新エントリは下に追記する（時系列順．古いものが上，新しいものが下）
- CLAUDE.md の「開発進捗」セクションは最新 1 行のみ（上書き運用）
- 詳細・失敗パターン・設計判断はすべて本ファイルに残す
- 書式・運用ルールは .claude/rules/progress-log.md を参照
  （本ファイルの編集時に自動ロードされる）
-->

- [x] **プロジェクト立ち上げ（/setup）完了**: 引き継いだ DeepTIAS v2.7（C# WinForms）に合わせて要件定義・技術スタック・環境構築手順・仕様書・規約・開発計画を作成した．
  - 動機: 前任者のソースは単体でビルド・実行できず，配布済み exe も現行ソースと一致しなかった（旧 exe は OpenCvSharp3 / .NET 4.7.1，現行ソースは OpenCvSharp4 / .NET 4.8）．
  - 設計判断: 目的を「誰でもビルド・実行できる」「解析結果を変えずに整理」の 2 つに絞り，回帰テストを作ってから整理する順序にした．.NET への移行は TensorFlowSharp の作り直しが要るため対象外．
  - 環境: 存在しない `OpenCvSharpExtern.dll` の参照を削除してビルドが通ることを確認済み（NuGet の runtime パッケージが同 DLL を配置する）．実行は外部バイナリ取り込み後に確認する．
  - 未実装・後段: PLAN_02 ステップ 1 から．未決事項は Image&Calib の出力先固定（`Output\debug`）と回帰テストの正解データの作り方．

- [x] **回帰テストの正解を旧 exe の出力に決定**: 研究で使われてきた解析結果が旧 exe（2021 年 12 月版）の出力と判明したため，正解を旧 exe の出力とし，PLAN_02 にステップ 3「旧 exe と現行ソースの解析結果の比較」を追加した．
  - 設計判断: 当初は「現行ソースの結果を正解（案 A）」としていたが，それでは現行ソースと旧 exe のずれ（OpenCV 3.2 → 4.9）を正解として固めてしまい，過去の研究データと比べられなくなるため不採用とした．

- [x] **PLAN_02 ステップ 1: 実行に必要なファイルの取り込み**: 旧ビルド出力から外部 exe・ネイティブ DLL・色補正データ・出力雛形を `Tongue extraction/runtime/` に取り込み，ビルドだけで実行ファイル一式が揃うようにした．Image モードで 2 枚の解析が通ることを確認した．
  - 設計判断: 取り込む DLL は PE のインポート表で依存関係を調べて決めた（`RemoveSmallRegionDLL` → `opencv_world320`，`TongueAnalysis.exe` → `opencv_*3413d`）．`TongueAnalysis.exe` は `Data\` を作業ディレクトリから読むため，ルート側の `Data/` を採用した（`rgb2lab/Data/` とは改行コードだけが違う）．データと雛形は改行を変換せず旧ビルドとバイト単位で同一に保つ．
  - 発見: Image モードで `1-drawBox`・`shape` の中間ファイルが最後の画像の分しか残らない既存の不具合（`MyMakeDir` が画像ごとにフォルダを空にする）．ステップ 2 の対象に追加した．
  - 未実装・後段: Image&Calib モードは VC++ デバッグ用ランタイムが無く未検証．旧 exe（正本）での Image モード実行もまだ．

- [x] **PLAN_02 ステップ 2: 実行を妨げる不具合の修正**: `dst2` ウィンドウでの停止，Start のたびの解析の重複登録，例外の握りつぶし，Image モードで中間ファイルが最後の画像分しか残らない件，Image&Calib の出力先の `Output\debug` 固定を直した．`analysis.csv` は修正前とバイト単位で一致．
  - 設計判断: 重複登録は「DoWork のハンドラを 1 つにして RunWorkerAsync の引数でモードを渡す」方式にした（登録を外し忘れて重複する余地が構造上無いため）．
  - テスト・リファクタリング（`/implement` の Phase 2・3）は省略した．変更が画面操作の流れだけで，規約上画面操作は自動テストの対象外であり，テストプロジェクトはステップ 4 で作るため．整理はステップ 6 で行う．
  - 未実装・後段: Image&Calib の完走確認には Visual Studio 2022 Community（C++ によるデスクトップ開発）の導入が必要（ステップ 3 の前提）．出力フォルダ名が 12 時間表記で午後のフォルダが午前より前に並ぶ件は未対応．

- [x] **開発環境を Build Tools 中心に変更**: IDE（Visual Studio 2022 Community）を必須にせず，Build Tools 2022 に「C++ ビルド ツール」を追加する構成にした．これで VC++ のデバッグ用ランタイムが入り，Image&Calib モードが最後まで動くことを確認した．
  - 設計判断: 開発計画にはビルド・実行・テストの作業しか無く，画面のレイアウトを変える予定が無いため，十数 GB の IDE を必須にしない．画面を編集するときだけ Community を追加する．デバッグ用ランタイムは単体配布・再配布ができないため，開発ツールとして入れるしかない．
  - 発見: 旧 exe の Image&Calib 出力（`_legacy\Output\20260818030340`）と比べると，色補正（`LabCsv`）はバイト単位で一致したが，舌検出の矩形が 1〜2 画素ずれ，以降の 304 列中 253 列がずれていた（中央値で約 1%）．ステップ 3 で原因を調べる．比べた旧出力が 2021 年 12 月版の exe によるものかは未確認のため，ステップ 3 で旧 exe を改めて実行する．
