diff --git a/CLAUDE.md b/CLAUDE.md index f8906c5..ecb8cae 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ -# プロジェクト名 +# TIAS Shot - +舌診用の撮影ソフトウェア(WinForms / .NET Framework 4.8 / x64).産業用カメラ(ImagingSource・Lumenera)で舌を撮影し,舌診チャートによる自動校正と色変換行列の算出を経て sRGB 変換画像を保存する.上流(nakaguchi)v1.7 からのフォークで,クラッシュ・メモリリーク修正と性能改善を積んでいる([docs/変更まとめ_v1.6-v1.7から.md](docs/変更まとめ_v1.6-v1.7から.md)). ## 開発進捗 @@ -9,7 +9,16 @@ ## 必須ルール(コード実装時) - +### プロジェクト固有の規約(本体は `.claude/rules/` の path-scoped rule・該当ファイル編集時に自動ロード) + +- **テスト方針**(`.claude/rules/testing.md`): ピュアロジック層は NUnit で必ず自動テスト,ハードウェア結合層(カメラ/UI/スレッド)は対象外としビルド+実機で担保.テストも **x64 必須**(`AnyCPU` はネイティブ DLL ロードで実行時に失敗) +- **エラーハンドリング方針**(`.claude/rules/error-handling.md`): `ErrorMsg`+`bool` 返却・`ShowMessage`/`MessageBox`・`Debug.WriteLine` の既存パターンに従う.空 `catch` 禁止.**`Mat`・`Bitmap` 等のネイティブ資源は `using`/`try-finally` で確実に解放**(GC 任せはリーク→OOM/GDI 枯渇クラッシュ) +- ※ コーディング規約(coding-style)・プロジェクト構成規則(project-structure)は**未整備**(GUIDE_01 の規約整備フェーズ参照) + +### rule 未収載の固有不変条件(コード変更時に壊さないこと) + +- **プレビュー表示 Bitmap の所有権モデル**: カメラコールバックが渡す入力 bmp は「読むだけ」,表示は UI 所有コピー(`FastClone`),入力の Dispose 責任は呼び出し側.コールバックスレッドから毎フレーム `Invalidate()` しない(描画はタイマー駆動).経緯は [PLAN_03](docs/03_PLAN/PLAN_03_プレビューメモリリーク修正計画.md) +- **診断・評価機能は Release に含めない**: ビルドフラグ(`MEMMONITOR`・`WHITEBOARD`)でコードごと出し分ける([ENV_06](docs/02_ENV/ENV_06_ビルド構成とビルドフラグ.md)) ### Git 運用 @@ -63,16 +72,30 @@ ### 03_PLAN(計画) - +- プレビューメモリリーク修正計画: docs/03_PLAN/PLAN_03_プレビューメモリリーク修正計画.md +- 性能評価計測計画: docs/03_PLAN/PLAN_04_性能評価計測計画.md +- ※ PLAN_01(リファクタリング)・PLAN_02(バグ修正)は完了につき削除済み(要点は docs/PROGRESS.md,経緯は git 履歴) ### 04_SPEC(仕様・設計) - +- 機能仕様: docs/04_SPEC/SPEC_01_機能仕様.md +- 設定ファイル仕様: docs/04_SPEC/SPEC_02_設定ファイル仕様.md +- 白板撮影プロトコル(照明均一性評価): docs/04_SPEC/SPEC_03_白板撮影_照明均一性評価.md +- 白板撮影データ仕様(SmTIAS 引き渡し用): docs/04_SPEC/SPEC_04_白板撮影データ仕様.md ### 05_TECH(技術設計) - +- クラス設計: docs/05_TECH/TECH_01_クラス設計.md +- カメラ制御仕様: docs/05_TECH/TECH_02_カメラ制御仕様.md +- 色補正処理仕様: docs/05_TECH/TECH_03_色補正処理仕様.md ### 06_TEST(テスト) - +- テスト仕様(回帰・手動テスト手順): docs/06_TEST/TEST_01_テスト仕様.md +- 性能評価計測結果(v1.6/v1.7/現行の 3 版比較): docs/06_TEST/TEST_02_性能評価計測結果.md +- メモリ修正効果計測(自動ベンチ): docs/06_TEST/TEST_03_メモリ修正効果計測.md + +### その他(docs 直下) + +- 進捗フルログ: docs/PROGRESS.md +- 上流向け変更サマリ(v1.6/v1.7 から何をどう直したか・差分確認付き): docs/変更まとめ_v1.6-v1.7から.md diff --git a/README.md b/README.md index 3d7aecf..597390d 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,35 @@ # TIAS Shot -TIAS撮影ソフトウェア +TIAS 撮影ソフトウェア(舌診用).舌診チャートによる自動校正と色変換行列の算出を経て,sRGB 変換画像を保存する. -## 説明 -- 新カメラ ImagingSource DBK33UX178(ソースコード上は DFK33UX178,実機の型番は要確認), DFK23UX249 対応 +## 説明 (Features) + +- 新カメラ ImagingSource DBK33UX178(ソースコード上は DFK33UX178,実機の型番は要確認),DFK23UX249 対応 - 旧カメラ Lumenera Lw110 対応 -- 舌診チャート対応 +- 舌診チャート対応(チャート検出による自動校正) - 変換行列の次数を変更可能(設定ファイルで指定) -- 光源のON/OFF制御 -- sRGB変換写真の保存 +- 光源の ON/OFF 制御 +- sRGB 変換写真の保存 +- 白板撮影モード(照明均一性評価用・`WHITEBOARD` ビルド限定) +- メモリ観測ツール(性能計測用・`MEMMONITOR` ビルド限定) -## 開発環境 -- Visual C# 2022 -- OpenCV Sharp 4.10 +## v1.6/v1.7 からの変更 (Changes since v1.6/v1.7) + +本リポジトリは上流(nakaguchi)v1.7 からのフォークで,クラッシュ修正・メモリリーク修正・性能改善を積んでいる.**何をどう直したか(各変更の状況と差分の確認方法)**は次を参照する. + +- [docs/変更まとめ_v1.6-v1.7から.md](docs/変更まとめ_v1.6-v1.7から.md) — 変更ごとの「状況/変更/効果/差分確認コマンド」 +- [docs/06_TEST/TEST_02_性能評価計測結果.md](docs/06_TEST/TEST_02_性能評価計測結果.md) — 3 バージョン実機計測の定量比較 + +## 開発環境 (Development Environment) + +- Visual Studio 2022(Visual C#) +- .NET Framework 4.8 / **x64 のみ**(OpenCvSharp がネイティブ DLL に依存) +- OpenCvSharp 4.10 +- カメラ SDK: IC Imaging Control 3.5(ImagingSource)/lumenera.api(Lumenera) + +環境構築は [docs/02_ENV/ENV_02_環境構築手順.md](docs/02_ENV/ENV_02_環境構築手順.md),ビルド・テスト・実行コマンドは [docs/02_ENV/ENV_04_開発コマンド.md](docs/02_ENV/ENV_04_開発コマンド.md),ビルドフラグ(`WHITEBOARD`・`MEMMONITOR`)は [docs/02_ENV/ENV_06_ビルド構成とビルドフラグ.md](docs/02_ENV/ENV_06_ビルド構成とビルドフラグ.md) を参照する. + +## ドキュメント (Documents) + +設計・仕様・テストのドキュメントは `docs/` にカテゴリ別(`01_GUIDE`〜`06_TEST`)で置く.全体像は [docs/02_ENV/ENV_05_ディレクトリ構成.md](docs/02_ENV/ENV_05_ディレクトリ構成.md),開発の経緯は [docs/PROGRESS.md](docs/PROGRESS.md) を参照する. +