diff --git a/CLAUDE.md b/CLAUDE.md index e1dd441..33df8b3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -50,7 +50,10 @@ ### 02_ENV(環境) - +- 開発環境構築手順: docs/02_ENV/ENV_01_開発環境構築手順.md +- ディレクトリ構成: docs/02_ENV/ENV_02_ディレクトリ構成.md +- 依存ライブラリ一覧: docs/02_ENV/ENV_03_依存ライブラリ一覧.md +- ビルド構成とビルドフラグ: docs/02_ENV/ENV_04_ビルド構成とビルドフラグ.md ### 03_PLAN(計画) diff --git "a/docs/02_ENV/ENV_04_\343\203\223\343\203\253\343\203\211\346\247\213\346\210\220\343\201\250\343\203\223\343\203\253\343\203\211\343\203\225\343\203\251\343\202\260.md" "b/docs/02_ENV/ENV_04_\343\203\223\343\203\253\343\203\211\346\247\213\346\210\220\343\201\250\343\203\223\343\203\253\343\203\211\343\203\225\343\203\251\343\202\260.md" new file mode 100644 index 0000000..5146c0d --- /dev/null +++ "b/docs/02_ENV/ENV_04_\343\203\223\343\203\253\343\203\211\346\247\213\346\210\220\343\201\250\343\203\223\343\203\253\343\203\211\343\203\225\343\203\251\343\202\260.md" @@ -0,0 +1,75 @@ +# ビルド構成とビルドフラグ (Build Configurations and Flags) + +本プロジェクトは,診断・評価用の機能(メモリ観測・白板撮影・リーク再現)を**条件コンパイルシンボル(ビルドフラグ)**で出し分けている.配布版(Release)にはこれらをコードごと含めない方針である.本ドキュメントは,どのフラグが何を有効化し,どの構成で定義されるかをまとめる. + +## 設計方針 (Policy) + +- **Release(配布版)=素の製品**.診断・評価・デモ用の機能はコードごと除外する. +- **Debug=開発・検証版**.診断/評価機能(`MEMMONITOR`・`WHITEBOARD`)を自動で含める. +- 一部のデモ用フラグ(`LEAKY_REPRO`)は既定では未定義とし,必要なときだけ**手動で**付与して対比計測に使う. + +## ソリューション構成 (Solution Configurations) + +`TIASshot.sln` が定義する構成は次の 2 つ(プラットフォームは **x64** のみ).OpenCvSharp 等がネイティブ DLL に依存するため x64 でビルドする. + +| 構成 | 用途 | 定義されるシンボル | 出力先 | +| --- | --- | --- | --- | +| `Debug\|x64` | 開発・検証 | `DEBUG` `TRACE` `WHITEBOARD` `MEMMONITOR` | `TIASshot/bin/x64/Debug/` | +| `Release\|x64` | 配布 | `TRACE` | `TIASshot/bin/x64/Release/` | + +> ※ `TIASshot.csproj` には `Debug\|AnyCPU` / `Release\|AnyCPU` の PropertyGroup も残っているが,`.sln` は `x64` のみをビルド対象としており,通常はこれらを使わない. +> ※ `TIASshot/bin/Debug-NoWB/` というフォルダが残っている場合があるが,これは `WHITEBOARD` フラグ導入前の古い手動ビルドの残骸であり,現在のソリューションには対応する構成は存在しない. + +## ビルドフラグ一覧 (Build Flags) + +| シンボル | 目的 | 定義される構成 | Release(配布)含有 | 出し分け対象(主なもの) | +| --- | --- | --- | --- | --- | +| `MEMMONITOR` | メモリ観測ウィンドウ+プレビュー計測 | `Debug\|x64`(自動) | ✗ | `UI/MemoryMonitorForm`,`UI/PreviewProfiler`,`UI/TimedPictureBox`,`UI/Form1.MemMonitor`(F9 トグル),`Form1.ShowImage` 等のプレビュー計測 | +| `WHITEBOARD` | 白板撮影モード(照明均一性評価用) | `Debug\|x64`(自動) | ✗ | 白板撮影ボタン(`Form1` の専用 partial),`Cameras/IScam.ShotWhiteBoard` 等 | +| `LEAKY_REPRO` | メモリ修正(優先度2)前の挙動を再現するデモ用 | **どの構成でも未定義(手動オプトイン)** | ✗ | `ColorCorrection/ColorCorrector.ConvertImage` のリーク版分岐,`UI/MemoryMonitorForm` のモード表示 | +| `DEBUG` | .NET 標準デバッグシンボル | `Debug\|x64` | ✗ | 標準(一部の開発時分岐) | +| `TRACE` | .NET 標準トレースシンボル | 全構成 | ○ | `System.Diagnostics.Trace` | + +### MEMMONITOR — メモリ観測・プレビュー計測 + +- 起動時にメモリ観測ウィンドウ(`MemoryMonitorForm`)を自動で開き,PrivateMemory / WorkingSet をライブ折れ線グラフ+CSV で記録する. +- プレビュー経路の計測(各段の実効 FPS・コピー時間・描画時間・GDI/USER/ハンドル数・画像サイズ・校正/撮影/F9 のイベント)を CSV(`bin/x64/Debug/MemMonitor_Results/`)に出力する. +- 副モニタ表示を実行中に切り替える計測用ホットキー **F9** も本フラグ限定で有効. +- 配布版には不要なため Release では未定義. + +### WHITEBOARD — 白板撮影モード + +- SmTIAS との装置間比較(照明均一性評価)用に,校正・色補正を行わず素の RGB を保存する独立撮影パスを追加する. +- ImagingSource(IScam)でのみ実装.未対応カメラでは通知して何もしない. +- 配布版の舌診撮影フローには不要なため Release では未定義. + +### LEAKY_REPRO — リーク再現(対比計測デモ用) + +- メモリ修正(PLAN_02 優先度2=`ConvertImage` の中間 Mat 未解放)の**修正前の挙動**を忠実に再現するためのデモ用フラグ. +- 既定(未定義)では入れ子 `using` による**修正後**実装が使われる.`LEAKY_REPRO` を定義してビルドすると,`ConvertImage` が中間 Mat を Dispose しないリーク版に切り替わり,観測ウィンドウのモード表示も「リーク再現(修正前)」になる. +- 「修正前→修正後」をメモリ観測で対比録画するときにのみ使う.どの標準構成にも含めないため,使うときは手動で付与する(下記). + +## ビルド方法 (How to Build) + +### 配布版(Release) + +Visual Studio で構成 `Release`・プラットフォーム `x64` を選択してビルドする.`MEMMONITOR` / `WHITEBOARD` / `LEAKY_REPRO` はいずれも含まれない. + +### 開発・検証版(Debug) + +構成 `Debug`・プラットフォーム `x64` を選択してビルドする.`WHITEBOARD` と `MEMMONITOR` が自動で有効になる(メモリ観測ウィンドウが開き,白板撮影ボタンが表示される). + +### LEAKY_REPRO を有効にする(対比計測デモ時のみ) + +`LEAKY_REPRO` はソリューション構成に含まれないため,一時的に手動で付与する.いずれかの方法で行い,**計測後は元に戻す**こと. + +- Visual Studio: プロジェクトのプロパティ →[ビルド]→ 条件付きコンパイル シンボル に `LEAKY_REPRO` を追加してビルド. +- または `TIASshot.csproj` の `Debug|x64` の `` に一時的に `;LEAKY_REPRO` を追記してビルド. + +## 関連 (Related) + +- 各フラグ導入の経緯・設計判断は [docs/PROGRESS.md](../PROGRESS.md) の該当エントリを参照: + - `WHITEBOARD`(白板撮影の専用ビルド記号化) + - `MEMMONITOR` / `LEAKY_REPRO`(メモリ修正の効果検証ツール) +- メモリ計測の結果は [docs/06_TEST/TEST_01_メモリ修正効果計測.md](../06_TEST/TEST_01_メモリ修正効果計測.md). +- ファイル命名・カテゴリ規約は [docs/01_GUIDE/GUIDE_03_ファイル命名規則.md](../01_GUIDE/GUIDE_03_ファイル命名規則.md).