# インフラ構成図

## 概要

Dear ImGuiはクライアントサイドで動作する組み込み型GUIライブラリであり、従来のサーバーインフラストラクチャを持ちません。本ドキュメントでは、ライブラリのアーキテクチャ構成とビルド/CI環境を図示します。

## ライブラリアーキテクチャ構成図

```mermaid
graph TB
    subgraph "Dear ImGui ライブラリ構成"
        subgraph "Core（コアモジュール）"
            IMGUI_H["imgui.h<br/>メインヘッダー"]
            IMGUI_CPP["imgui.cpp<br/>コア実装"]
            IMGUI_WIDGETS["imgui_widgets.cpp<br/>ウィジェット"]
            IMGUI_DRAW["imgui_draw.cpp<br/>描画処理"]
            IMGUI_TABLES["imgui_tables.cpp<br/>テーブル機能"]
            IMGUI_DEMO["imgui_demo.cpp<br/>デモ/サンプル"]
        end

        subgraph "Internal（内部ライブラリ）"
            STB_TEXTEDIT["imstb_textedit.h<br/>テキスト編集"]
            STB_TRUETYPE["imstb_truetype.h<br/>フォント処理"]
            STB_RECTPACK["imstb_rectpack.h<br/>矩形パッキング"]
        end

        IMGUI_CPP --> STB_TEXTEDIT
        IMGUI_CPP --> STB_TRUETYPE
        IMGUI_CPP --> STB_RECTPACK
    end
```

## プラットフォームバックエンド構成図

```mermaid
graph LR
    subgraph "Platform Backends（プラットフォーム）"
        GLFW["imgui_impl_glfw<br/>GLFW"]
        SDL2["imgui_impl_sdl2<br/>SDL2"]
        SDL3["imgui_impl_sdl3<br/>SDL3"]
        WIN32["imgui_impl_win32<br/>Win32"]
        OSX["imgui_impl_osx<br/>macOS"]
        ANDROID["imgui_impl_android<br/>Android"]
        GLUT["imgui_impl_glut<br/>GLUT"]
        ALLEGRO["imgui_impl_allegro5<br/>Allegro5"]
    end

    subgraph "Renderer Backends（レンダラー）"
        DX9["imgui_impl_dx9<br/>DirectX 9"]
        DX10["imgui_impl_dx10<br/>DirectX 10"]
        DX11["imgui_impl_dx11<br/>DirectX 11"]
        DX12["imgui_impl_dx12<br/>DirectX 12"]
        OGL2["imgui_impl_opengl2<br/>OpenGL 2"]
        OGL3["imgui_impl_opengl3<br/>OpenGL 3"]
        METAL["imgui_impl_metal<br/>Metal"]
        VULKAN["imgui_impl_vulkan<br/>Vulkan"]
        WGPU["imgui_impl_wgpu<br/>WebGPU"]
        SDLGPU["imgui_impl_sdlgpu3<br/>SDL_GPU"]
        SDLREND["imgui_impl_sdlrenderer<br/>SDL_Renderer"]
    end

    subgraph "Dear ImGui Core"
        CORE["imgui.cpp"]
    end

    GLFW --> CORE
    SDL2 --> CORE
    SDL3 --> CORE
    WIN32 --> CORE
    OSX --> CORE
    ANDROID --> CORE
    GLUT --> CORE
    ALLEGRO --> CORE

    DX9 --> CORE
    DX10 --> CORE
    DX11 --> CORE
    DX12 --> CORE
    OGL2 --> CORE
    OGL3 --> CORE
    METAL --> CORE
    VULKAN --> CORE
    WGPU --> CORE
    SDLGPU --> CORE
    SDLREND --> CORE
```

## 対応プラットフォーム一覧

```mermaid
graph TB
    subgraph "対応プラットフォーム"
        subgraph "Desktop"
            WINDOWS["Windows<br/>DirectX/OpenGL/Vulkan"]
            LINUX["Linux<br/>OpenGL/Vulkan"]
            MACOS["macOS<br/>Metal/OpenGL"]
        end

        subgraph "Mobile"
            IOS["iOS<br/>Metal"]
            ANDROID_OS["Android<br/>OpenGL ES"]
        end

        subgraph "Web"
            EMSCRIPTEN["Emscripten<br/>WebGL/WebGPU"]
        end

        subgraph "Console（非公式）"
            CONSOLE["Nintendo Switch<br/>PlayStation<br/>Xbox<br/>（サードパーティ）"]
        end
    end
```

## CI/CD環境構成図

```mermaid
graph TB
    subgraph "GitHub"
        REPO["ocornut/imgui<br/>リポジトリ"]

        subgraph "GitHub Actions"
            BUILD["build workflow<br/>自動ビルド"]
            STATIC["static-analysis workflow<br/>静的解析"]
        end

        RELEASES["GitHub Releases<br/>バイナリ配布"]
    end

    subgraph "外部ツール"
        PVS["PVS-Studio<br/>静的解析ツール"]
        COVERAGE["OpenCppCoverage<br/>カバレッジ"]
    end

    subgraph "テスト"
        TEST_ENGINE["Dear ImGui Test Engine<br/>自動テスト"]
    end

    REPO --> BUILD
    REPO --> STATIC
    STATIC --> PVS
    BUILD --> RELEASES
    REPO --> TEST_ENGINE
    TEST_ENGINE --> COVERAGE
```

## アプリケーション統合構成図

```mermaid
graph TB
    subgraph "エンドユーザーアプリケーション"
        APP["アプリケーション"]

        subgraph "Dear ImGui統合"
            IMGUI_INIT["ImGui::CreateContext()<br/>初期化"]
            IMGUI_BACKEND["Backend初期化<br/>Platform + Renderer"]
            IMGUI_LOOP["フレームループ<br/>NewFrame/Render"]
            IMGUI_SHUTDOWN["ImGui::DestroyContext()<br/>終了処理"]
        end

        subgraph "レンダリングパイプライン"
            VERTEX["頂点バッファ出力"]
            DRAW_CALLS["ドローコール実行"]
            GPU["GPU描画"]
        end
    end

    APP --> IMGUI_INIT
    IMGUI_INIT --> IMGUI_BACKEND
    IMGUI_BACKEND --> IMGUI_LOOP
    IMGUI_LOOP --> VERTEX
    VERTEX --> DRAW_CALLS
    DRAW_CALLS --> GPU
    IMGUI_LOOP --> IMGUI_SHUTDOWN
```

## ビルドシステム構成

```mermaid
graph LR
    subgraph "ビルドシステム"
        subgraph "Windows"
            VCXPROJ["Visual Studio<br/>.vcxproj"]
            BAT["build_win32.bat<br/>バッチファイル"]
        end

        subgraph "Unix/Linux/macOS"
            MAKEFILE["Makefile"]
            CMAKE["CMakeLists.txt"]
        end

        subgraph "Web"
            EMSCRIPTEN_MAKE["Makefile.emscripten"]
        end

        subgraph "Mobile"
            ANDROID_GRADLE["Gradle<br/>Android"]
            XCODE["Xcode<br/>iOS"]
        end
    end
```

## 備考

本プロジェクトはクライアントサイドのGUIライブラリであり、従来のサーバーインフラストラクチャ（Web/AP/DBサーバー、ロードバランサー、CDN等）は存在しません。上記の図は、ライブラリのアーキテクチャ構成、対応プラットフォーム、およびCI/CD環境を示しています。
