# バッチ設計書 11-build_win32.bat (example_win32_directx11)

## 概要

本ドキュメントは、Dear ImGuiライブラリのWin32 + DirectX11サンプルアプリケーションをVisual Studio 32bitコンパイラでビルドするためのバッチスクリプトの設計書です。

### 本バッチの処理概要

**業務上の目的・背景**：Dear ImGuiは即時モードGUIライブラリであり、様々なグラフィックスAPIとの統合をサポートしています。本バッチは、Windows環境でDirectX11を使用したImGuiサンプルアプリケーションを簡単にビルドするために提供されています。開発者がVisual Studioの完全なプロジェクトファイルを設定することなく、コマンドラインから素早くサンプルをコンパイル・実行できるようにすることで、ImGuiの評価や統合テストを効率化します。

**バッチの実行タイミング**：開発者が手動で実行します。ImGuiの評価時、新機能テスト時、またはサンプルコードの修正後に実行されます。

**主要な処理内容**：
1. 出力ディレクトリ（Debug）とターゲット実行ファイル名（example_win32_directx11）を環境変数に設定
2. インクルードパスの設定（ImGui本体、バックエンド、Windows SDK、DirectX SDKのヘッダーディレクトリ）
3. ソースファイルの指定（main.cpp、imgui_impl_dx11.cpp、imgui_impl_win32.cpp、imgui*.cpp）
4. リンクするライブラリの指定（d3d11.lib、d3dcompiler.lib）
5. 出力ディレクトリの作成
6. MSVC cl.exeを使用したコンパイルとリンク

**前後の処理との関連**：このバッチはスタンドアロンで動作します。事前にvcvars32.batまたはvcvarsall.batを実行して、Visual Studioコマンドライン環境を設定しておく必要があります。

**影響範囲**：ローカルのDebugディレクトリに実行ファイルとオブジェクトファイルを生成します。システム全体には影響しません。

## バッチ種別

ビルドスクリプト（コンパイル・リンク処理）

## 実行スケジュール

| 項目 | 内容 |
|-----|------|
| 実行頻度 | 随時 |
| 実行時刻 | 任意 |
| 実行曜日 | 任意 |
| 実行日 | 任意 |
| トリガー | 手動 |

## 実行条件

### 前提条件

| 条件 | 説明 |
|-----|------|
| Visual Studio環境 | vcvars32.batまたはvcvarsall.batによるコンパイラ環境設定が必要 |
| DirectX SDK | DXSDK_DIR環境変数が設定されていること |
| Windows SDK | WindowsSdkDir環境変数が設定されていること |

### 実行可否判定

Visual Studioコマンドライン環境が設定されていない場合、cl.exeが見つからずビルドは失敗します。

## 入力仕様

### 入力パラメータ

| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
|-------------|-----|-----|-------------|------|
| なし | - | - | - | コマンドラインパラメータは受け取りません |

### 入力データソース

| データソース | 形式 | 説明 |
|-------------|------|------|
| main.cpp | C++ソース | サンプルアプリケーションのメインコード |
| imgui_impl_dx11.cpp | C++ソース | DirectX11バックエンド実装 |
| imgui_impl_win32.cpp | C++ソース | Win32プラットフォームバックエンド実装 |
| imgui*.cpp | C++ソース | ImGuiコアライブラリ |

## 出力仕様

### 出力データ

| 出力先 | 形式 | 説明 |
|-------|------|------|
| Debug/example_win32_directx11.exe | 実行ファイル | コンパイルされたサンプルアプリケーション |
| Debug/*.obj | オブジェクトファイル | コンパイル中間ファイル |

### 出力ファイル仕様

| 項目 | 内容 |
|-----|------|
| ファイル名 | example_win32_directx11.exe |
| 出力先 | Debug/ |
| 文字コード | バイナリ |
| 区切り文字 | N/A |

## 処理フロー

### 処理シーケンス

```
1. 環境変数設定
   └─ OUT_DIR=Debug, OUT_EXE=example_win32_directx11
2. インクルードパス設定
   └─ ImGui, バックエンド, Windows SDK, DirectX SDKのパスを設定
3. ソースファイル一覧設定
   └─ main.cpp, バックエンドファイル, ImGuiコアファイル
4. ライブラリ設定
   └─ d3d11.lib, d3dcompiler.lib
5. 出力ディレクトリ作成
   └─ mkdir %OUT_DIR%
6. コンパイル実行
   └─ cl.exeでコンパイル・リンク実行
```

### フローチャート

```mermaid
flowchart TD
    A[バッチ開始] --> B[環境変数設定]
    B --> C[インクルードパス設定]
    C --> D[ソースファイル指定]
    D --> E[ライブラリ指定]
    E --> F[出力ディレクトリ作成]
    F --> G[cl.exe実行]
    G --> H{コンパイル成功?}
    H -->|成功| I[実行ファイル生成]
    H -->|失敗| J[エラー出力]
    I --> K[バッチ終了]
    J --> K
```

## データベース操作仕様

### 操作別データベース影響一覧

該当なし（ファイルシステム操作のみ）

## エラー処理

### エラーケース一覧

| エラーコード | エラー種別 | 発生条件 | 対処方法 |
|------------|----------|---------|---------|
| N/A | コンパイルエラー | ソースコードに文法エラー | ソースコードを修正 |
| N/A | リンクエラー | ライブラリが見つからない | SDK環境変数を確認 |
| N/A | 環境エラー | cl.exeが見つからない | vcvars32.batを実行 |

### リトライ仕様

| 項目 | 内容 |
|-----|------|
| リトライ回数 | N/A（手動実行） |
| リトライ間隔 | N/A |
| リトライ対象エラー | N/A |

### 障害時対応

エラーが発生した場合は、コンパイラ出力を確認し、必要に応じて環境設定やソースコードを修正して再実行します。

## トランザクション仕様

| 項目 | 内容 |
|-----|------|
| トランザクション範囲 | N/A |
| コミットタイミング | N/A |
| ロールバック条件 | N/A |

## パフォーマンス要件

| 項目 | 内容 |
|-----|------|
| 想定処理件数 | 1回のビルド |
| 目標処理時間 | 数秒〜数十秒 |
| メモリ使用量上限 | 通常のコンパイル処理に依存 |

## 排他制御

同一ディレクトリでの同時実行は想定されていません。

## ログ出力

| ログ種別 | 出力タイミング | 出力内容 |
|---------|--------------|---------|
| コンパイルログ | コンパイル中 | コンパイラの警告・エラーメッセージ |
| リンクログ | リンク中 | リンカーの警告・エラーメッセージ |

## 監視・アラート

| 監視項目 | 閾値 | アラート先 |
|---------|-----|----------|
| N/A | N/A | N/A |

## 備考

- Visual Studio 2019以降での動作を想定
- DirectX SDKの代わりにWindows 10 SDKに含まれるDirectXヘッダーを使用可能
- コンパイルオプション: /nologo /Zi /MD /utf-8 /D UNICODE /D _UNICODE
