# インフラ設計書

## 概要

本ドキュメントは、Dear ImGuiプロジェクトのインフラストラクチャに関する設計書です。Dear ImGuiはC++で実装されたクライアントサイドのGUIライブラリであり、従来のサーバーインフラストラクチャを必要としないスタンドアロン型のライブラリです。

## システム構成

### 全体構成

Dear ImGuiは以下の特徴を持つ組み込み型GUIライブラリです:

- **デプロイメント形式**: ソースコード組み込み型（ヘッダーファイル + ソースファイル）
- **実行環境**: エンドユーザーのアプリケーション内で動作
- **外部依存**: なし（self-contained）
- **サーバー要件**: なし

本プロジェクトはサーバーサイドのインフラストラクチャを持たないため、従来のWeb/AP/DBサーバー構成は適用されません。

### サーバー構成

| サーバー種別 | 役割 | スペック | 台数 |
| --- | --- | --- | --- |
| 該当なし | - | - | - |

**理由**: Dear ImGuiはクライアントサイドで動作する組み込みライブラリであり、サーバーインフラストラクチャを必要としません。

### ネットワーク構成

本ライブラリ自体はネットワーク機能を持ちません。ただし、サードパーティ拡張として `imgui-remote` のようなリモートアクセス機能を提供する拡張が存在します。

## ビルド環境

Dear ImGuiは複数のビルドシステムに対応しています。

### 対応ビルドシステム

| ビルドシステム | 用途 | 対応プラットフォーム |
| --- | --- | --- |
| Makefile | Linux/macOS向けビルド | Linux, macOS |
| Makefile.emscripten | WebAssembly向けビルド | Web (Emscripten) |
| CMakeLists.txt | クロスプラットフォームビルド | Vulkan, WebGPU, Android |
| Visual Studio (.vcxproj) | Windows向けビルド | Windows |
| Xcode | macOS/iOS向けビルド | macOS, iOS |

### 対応レンダリングバックエンド

| バックエンド | ファイル | 対応API |
| --- | --- | --- |
| DirectX 9 | imgui_impl_dx9 | Windows |
| DirectX 10 | imgui_impl_dx10 | Windows |
| DirectX 11 | imgui_impl_dx11 | Windows |
| DirectX 12 | imgui_impl_dx12 | Windows |
| OpenGL 2 | imgui_impl_opengl2 | クロスプラットフォーム |
| OpenGL 3 | imgui_impl_opengl3 | クロスプラットフォーム |
| Metal | imgui_impl_metal | macOS, iOS |
| Vulkan | imgui_impl_vulkan | クロスプラットフォーム |
| WebGPU | imgui_impl_wgpu | Web |
| SDL_GPU | imgui_impl_sdlgpu3 | SDL3対応プラットフォーム |
| SDL_Renderer | imgui_impl_sdlrenderer2/3 | SDL対応プラットフォーム |

### 対応プラットフォームバックエンド

| バックエンド | ファイル | 対応プラットフォーム |
| --- | --- | --- |
| GLFW | imgui_impl_glfw | Windows, Linux, macOS |
| SDL2 | imgui_impl_sdl2 | クロスプラットフォーム |
| SDL3 | imgui_impl_sdl3 | クロスプラットフォーム |
| Win32 | imgui_impl_win32 | Windows |
| GLUT | imgui_impl_glut | クロスプラットフォーム |
| OSX | imgui_impl_osx | macOS |
| Android | imgui_impl_android | Android |
| Allegro5 | imgui_impl_allegro5 | クロスプラットフォーム |

## ミドルウェア

| ミドルウェア | バージョン | 用途 |
| --- | --- | --- |
| 該当なし | - | - |

**理由**: Dear ImGuiはスタンドアロンライブラリであり、ミドルウェアに依存しません。

## 外部サービス連携

| サービス名 | 用途 | 接続方式 |
| --- | --- | --- |
| GitHub Actions | CI/CD（ビルド検証） | GitHub API |
| PVS-Studio | 静的解析 | ローカル実行 |
| OpenCppCoverage | コードカバレッジ | ローカル実行 |

## スケーリング設計

本ライブラリはクライアントサイドで動作するため、従来のサーバースケーリングは適用されません。

パフォーマンスに関する設計指針:
- 効率的な頂点バッファ出力
- 最小限のドローコールとステート変更
- メモリ使用量の最適化

## 可用性設計

クライアントサイドライブラリとして、以下の可用性設計が適用されています:

- **クロスプラットフォーム対応**: Windows, Linux, macOS, Android, iOS, Web
- **複数レンダリングAPI対応**: DirectX, OpenGL, Metal, Vulkan, WebGPU
- **複数ウィンドウシステム対応**: GLFW, SDL, Win32, OSX Native

## バックアップ設計

| 対象 | 方式 | 頻度 | 保持期間 |
| --- | --- | --- | --- |
| ソースコード | Git (GitHub) | 継続的 | 無期限 |
| リリースバイナリ | GitHub Releases | リリース時 | 無期限 |

## 監視設計

本プロジェクトはオープンソースライブラリであり、以下の監視/品質管理が実施されています:

- **CI/CD**: GitHub Actionsによる自動ビルド
- **静的解析**: PVS-Studioによるコード品質チェック
- **テスト**: Dear ImGui Test Engineによる自動テスト

## 備考

### インフラ要件の不在について

Dear ImGuiは以下の理由により、従来のサーバーインフラストラクチャを必要としません:

1. **設計思想**: Immediate Mode GUI (IMGUI) パラダイムに基づく軽量ライブラリ
2. **実行形態**: エンドユーザーのアプリケーションに組み込まれて動作
3. **依存性**: 外部依存なし（self-contained）
4. **ネットワーク**: ネットワーク機能を持たない（拡張により追加可能）

### 開発者向けビルド環境要件

開発者がDear ImGuiを使用する際の最小要件:

| 要件 | 詳細 |
| --- | --- |
| コンパイラ | C++11対応コンパイラ（GCC, Clang, MSVC等） |
| グラフィックスAPI | OpenGL 2.0以上、DirectX 9以上、Metal、Vulkan等 |
| ウィンドウシステム | GLFW, SDL, Win32, OSX等 |
