要件定義書 の目的(1. 誰でもビルド・実行できる状態にする,2. 解析結果を変えずにコードを整理する)を達成するための作業順序を定める.
/implement で進め,ステップごとに作業ブランチを切って main に取り込む.| # | ステップ | 目的 | 解析結果への影響 |
|---|---|---|---|
| 1 | 実行に必要なファイルの取り込み | ビルドだけで実行ファイル一式が揃うようにする | なし |
| 2 | 実行を妨げる不具合の修正 | 解析を最後まで安定して回せるようにする | なし |
| 3 | 旧 exe と現行ソースの解析結果の比較 | 現行ソースが研究データと同じ結果を出すかを確かめる | ずれがあれば旧 exe に合わせる(ユーザー承認のもと) |
| 4 | テストプロジェクトと回帰テストの作成 | 旧 exe と同じ結果であり続けることを確かめる手段を作る | なし |
| 5 | 未使用コード・参照の削除 | 読む量を減らし,不要な依存(脆弱性のある Newtonsoft.Json 等)をなくす | なし(回帰テストで確認) |
| 6 | 解析処理の切り出しと重複の統合 | 画面から解析処理を分け,2 モードの重複(約 420 行)をなくす | なし(回帰テストで確認) |
| 7 | エラー処理とログの整備 | 失敗の原因が分かるようにする | なし(回帰テストで確認) |
DeepTIAS2.7.1-Latest)から,ソースに無く実行に必要なファイルを取り込む
RemoveSmallRegionDLL.dll(と依存する opencv_world320.dll),TongueAnalysisDLL.dllpython/TongueFeatures.exe,rgb2lab/(TongueAnalysis.exe と色補正データ,依存する OpenCV 3.4 のデバッグ版 DLL)template_outputDir/,template_outputDir_withCalib/*.exe・*.dll を Git LFS の対象に加えるbin\x64\Release\ に揃うようにするanalysis.csv が出力される_legacy\(.git/info/exclude で管理対象外)に丸ごとコピーして作業したTongue extraction\runtime\ に置いた.TongueAnalysisDLL.dll(宣言のみで未使用)と OpenCvSharp3 時代の DLL は取り込んでいないCv2.ImShow・Cv2.WaitKey)で解析が止まる箇所を削除するRunWorkerCompleted で受け取り,画面に表示して操作できる状態に戻すOutput\debug に固定されている件を直し,Image モードと同じ日時フォルダに出力する(意図が不明だったため,ユーザーの既定方針で日時フォルダに戻した)1-detection\1-drawBox\・4-featureExtraction\shape\)が最後の画像の分しか残らない不具合を直す(画像ごとに MyMakeDir でフォルダを空にしているため.analysis.csv の値には影響しない.ステップ 3 で中間画像を比べるために必要)analysis.csv は修正前とバイト単位で一致した.Image&Calib は VC++ デバッグ用ランタイムが無く TongueAnalysis.exe が起動しないため,エラー表示と画面の復帰までを確認した配布済みの旧 exe は現行ソースからビルドしたものではない(旧 exe は OpenCvSharp3 / OpenCV 3.2,現行ソースは OpenCvSharp4 / OpenCV 4.9).二値化・輪郭検出・縮小などは OpenCV のバージョンで結果が変わりうるため,整理を始める前に一致するかを確かめる.
analysis.csv を列ごとに比べるDeepTIAS.Tests をソリューションに追加するanalysis.csv と中間画像)を正解データとし,DeepTIAS.Tests/TestData/ に置くForm1 - backups.cs,Settings.Designer.cs・Settings1.Designer.cs)を削除するDllImport 宣言・using を削除するmodels/ResUnet_0.9518.pb の扱いを決める(削除するか,別の場所に保管するか)Form1.cs の解析処理を,画面に依存しないクラスに切り出す(置き場所は .claude/rules/project-structure.md).claude/rules/error-handling.md に沿って,握りつぶしている例外をなくし,失敗の原因をダイアログとログで伝えるlog.txt を書き出す要件定義書の「やらないこと」のとおり,新機能の追加,解析手法の変更,モデルの差し替え,外部バイナリの作り直しは本計画に含めない.
DeepTIAS2.7.1-Latest)にある 2021 年 12 月版の DeepTIAS2.7.exe で出したものとする.これより古い版で出したデータが混ざっている場合は,比べる相手を決め直す