# 技術スタック (Tech Stack)

## 全体像 (Overview)

Windows / Mac 両対応のデスクトップアプリとして再構築する．当面のターゲットは Windows とし，Mac 対応が必要になった時点で同一コードのまま動作確認する．

| 項目 | 採用技術 | 選定理由 |
| --- | --- | --- |
| 言語 | Python 3.12 | 保守・引き継ぎの容易さ．研究用途との親和性 |
| GUI | PySide6（Qt for Python） | Win/Mac 両対応．画像表示・クリック操作・ダイアログが揃う |
| 画像処理・SVM | opencv-python（OpenCV 4.x） | 現行 (OpenCV 2.4) と同じ OpenCV 系実装．`cv2.ml.SVM` で診断結果の同一性を確保 |
| 数値計算 | NumPy | opencv-python の依存．CSV・行列演算に使用 |
| テスト | pytest | core ロジック（Lab 変換・SVM 分類・CSV 読込）の回帰テスト |
| lint / フォーマット | Ruff | lint とフォーマットを 1 ツールで両立 |
| パッケージ管理 | uv（pyproject.toml + uv.lock） | 依存の完全な再現．`uv sync` 一発で環境構築 |
| 配布 | PyInstaller（必要になった時点で導入） | Windows は exe，Mac は app として単体配布可能 |

## 現行実装からの移行対応 (Migration Notes)

- SVM: 旧 API `CvSVM`（OpenCV 2.x）→ `cv2.ml.SVM_create()`（RBF, C_SVC, γ=0.011, C=12.0）に置き換える．パラメータ・学習データが同じであれば予測結果は一致する見込み．**現行 exe の出力との突き合わせで検証する**
- GUI: MFC ダイアログ → PySide6 ウィジェットに置き換える（画面構成は現行を踏襲）
- 文字コード: Shift-JIS → UTF-8 に統一する

## 動作環境 (Supported Environments)

- Windows 10/11 x64（当面の主ターゲット）
- macOS（将来対応．コードは対応を前提に書き，OS 依存処理を避ける）
