# 環境構築手順 (Environment Setup)

## セットアップ方法の選択 (Setup Method)

### 自動セットアップ（推奨）

リポジトリルートの `setup.ps1` を使用することで，Visual Studio のインストール，データフォルダの作成，NuGet パッケージの復元を自動化できる．

**実行手順**

1. PowerShell を管理者権限で開く．
2. リポジトリのルートに移動する．

   ```powershell
   cd [リポジトリのパス]
   ```

3. スクリプトの実行ポリシーを一時的に変更する．

   ```powershell
   Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
   ```

4. セットアップスクリプトを実行する．

   ```powershell
   .\setup.ps1
   ```

5. スクリプト完了後，IC Imaging Control SDK を手動でインストールする．
   - 詳細は「必要なソフトウェア — IC Imaging Control SDK」を参照する．
6. 実機（カメラ・光源）を開発 PC で使う場合は，カメラと光源のドライバを手動でインストールする．
   - 詳細は「必要なソフトウェア — カメラ・光源のドライバ」を参照する．

**自動化される内容**

- Visual Studio 2022 のインストール（未インストール時のみ）
  - `.vsconfig` により「.NET デスクトップ開発」ワークロードが自動で設定される．
- `C:\TIAS_Data` フォルダの作成（未作成時のみ）
- NuGet パッケージの復元

**自動化されない内容（手動対応が必要）**

- IC Imaging Control SDK のインストール
- カメラ・光源のドライバのインストール（実機を使う場合）
- 実行時設定ファイルの配置（config.xml，カメラ設定 XML，CSV）

### 手動セットアップ

スクリプトを使用しない場合は，以下の「必要なソフトウェア」〜「実行時の準備」の手順に従って手動で構築する．

## 必要なソフトウェア (Required Software)

### Visual Studio 2022

- 公式サイトからインストーラをダウンロードしてインストールする．
- ワークロード選択で「.NET デスクトップ開発」を有効にする．
- リポジトリルートの `.vsconfig` をインストーラで読み込むと，必要なワークロードが自動で提案される．

### IC Imaging Control SDK

- The Imaging Source が提供するカメラ制御ライブラリ．
- ImagingSource 製カメラ（DFK33UX178，DFK23UX249）の使用に必要．
- インストール後，参照 DLL が Visual Studio から認識されることを確認する．

### Lumenera SDK

- Lumenera 製カメラ（Lw110）の使用に必要．
- リポジトリに同梱されている `lumenera.api.dll` は .NET 側のラッパーだけで，これだけでは実機を使えない．ネイティブの `lucamapi.dll` は下記「カメラ・光源のドライバ」の LuCam Software で導入する．
- ※ ビルドとセルフテスト（偽カメラ）は同梱 DLL だけでできる．

### カメラ・光源のドライバ

開発 PC で実機（カメラ・光源）を使う場合（実機テストを含む）に必要．いずれも導入には管理者権限（UAC）が要る．2026-10-08 に以下のバージョンで導入・動作確認した．

| 対象 | ドライバ（確認したバージョン） | 入手先 | ログイン |
| --- | --- | --- | --- |
| Lumenera 製カメラ（Lw110） | LuCam Software and Software Development Kit (Windows) 6.9.0 | [Teledyne Vision Solutions](https://teledynevisionsolutions.com/products/lt-series-usb3/GetResourcesSupportDownloads) の Resources & Support → Downloads タブ | 要（アカウント） |
| ImagingSource 製カメラ（DFK33UX178 等 33U/37U/38U） | Device Driver for USB 33U, 37U, 38U Cameras（Cam33U Driver and Tools）6.0.0.2811 | [The Imaging Source](https://www.theimagingsource.com/en-us/support/download/icwdmuvccamtis33u/) | 不要 |
| 光源（USB-シリアル変換 Silicon Labs CP2102） | CP210x Universal Windows Driver 11.6.0.420（zip） | [Silicon Labs](https://silabs.com/developers/usb-to-uart-bridge-vcp-drivers) | 不要 |

- **LuCam Software**: 導入するとネイティブの `lucamapi.dll` が `System32`／`SysWOW64` に入る．Lw110（USB 2.0）への対応はダウンロードページに明記されていない．
- **Cam33U Driver**: IC Imaging Control SDK（.NET ライブラリ）とは別に要る．無いとカメラが Windows 標準の汎用カメラとして認識され，「USB3 Vision Device」がエラーになって IC Imaging Control から使えない．
- **CP210x Driver**: スクリプト（`curl` 等）からのダウンロードは 403 で拒否されるため，ブラウザで落とす．zip を展開して導入する．
- 導入後の確認（デバイスマネージャー）:
  - ImagingSource: カメラがエラー表示（「USB3 Vision Device」の警告）なしで認識されている．
  - 光源: 「ポート (COM と LPT)」に「Silicon Labs CP210x USB to UART Bridge (COMn)」が現れる．アプリは `config.xml` の `LightSource/Device`（`Silicon Labs CP210x`）でこの名前を探して接続する．
  - Lumenera: `C:\Windows\System32\lucamapi.dll` があり，カメラがエラー表示なしで認識されている．

### Python と bash（Claude Code のフック用）

- `.claude/settings.json` のフック（リポジトリ外アクセス制限・通知）の実行に必要．アプリのビルド・実行には不要なため，Claude Code を使わない場合は省略できる．
- **Python 3.7 以上**: フックは `bash .claude/hooks/run_python.sh` 経由で起動し，`python3` → `python` → `py` の順に実際に起動できるものを使う（いずれか 1 つで起動できればよい）．
- **bash**: Git for Windows に付属するものを使う．Visual Studio と併せて `git` を入れていれば追加インストールは不要．
- ※ Python が見つからないとアクセス制限フックが Read・Write・Edit・Glob・Grep・Bash を**すべてブロックする**（通知フックは何もせず素通りする）．

## リポジトリのセットアップ (Repository Setup)

1. リポジトリのクローン

   ```bash
   git clone [リポジトリURL]
   cd TIASshot
   ```

2. ソリューションを開く
   - `TIASshot.sln` を Visual Studio 2022 で開く．

3. NuGet パッケージの復元
   - Visual Studio のメニューから「ビルド」→「NuGet パッケージの復元」を実行する．
   - または，パッケージマネージャーコンソールで以下を実行する．

   ```bash
   nuget restore TIASshot.sln
   ```

4. ビルド
   - 「ビルド」→「ソリューションのビルド」を実行し，エラーがないことを確認する．

## 実行時の準備 (Runtime Preparation)

### 設定ファイルの配置

- `TIASshot/config.xml` が実行ファイルと同じディレクトリに存在することを確認する．
- パラメータの詳細は `SPEC_02_設定ファイル仕様.md` を参照する．

### カメラ設定ファイルの確認

- ImagingSource カメラを使用する場合，以下のファイルが同ディレクトリに必要．
  - `DFK33UX178.xml`
  - `DFK23UX249.xml`

### TCC参照ファイルの確認

- 以下の CSV ファイルが実行ファイルと同じディレクトリに必要．
  - `tcc_srgb.csv`: sRGB 変換の参照値
  - `tcc_xyz.csv`: XYZ 変換の参照値

### データ保存フォルダの確認

- `config.xml` の `<SaveFolder>` に指定したフォルダへの書き込み権限があることを確認する．
- デフォルトは `C:\TIAS_Data`．
- `setup.ps1` を実行した場合，このフォルダは自動で作成される．
