# インフラ構成図

## 全体構成図

```mermaid
graph TB
    subgraph "ソースコード管理"
        GH[GitHub Repository<br/>libuv/libuv]
    end

    subgraph "CI/CDパイプライン（GitHub Actions）"
        direction TB
        GHA_UNIX[CI-unix.yml]
        GHA_WIN[CI-win.yml]
        GHA_DOCS[CI-docs.yml]
        GHA_SAMPLE[CI-sample.yml]
        GHA_SAN[sanitizer.yml]
    end

    subgraph "ドキュメント"
        RTD[ReadTheDocs<br/>Sphinx HTML]
    end

    subgraph "依存関係管理"
        DEP[Dependabot<br/>週次更新]
    end

    GH -->|Push / PR トリガー| GHA_UNIX
    GH -->|Push / PR トリガー| GHA_WIN
    GH -->|PR トリガー<br/>docs/**| GHA_DOCS
    GH -->|Push / PR トリガー<br/>docs/code/**| GHA_SAMPLE
    GH -->|Push / PR トリガー| GHA_SAN
    GH -->|Webhook| RTD
    DEP -->|PR 自動作成| GH
```

## CI/CDパイプライン詳細構成図

```mermaid
graph LR
    subgraph "CI-unix ワークフロー"
        direction TB
        U_LINUX[build-linux<br/>Ubuntu<br/>Autotools]
        U_ANDROID[build-android<br/>Android NDK<br/>API 30 / x86_64]
        U_MACOS[build-macos<br/>macOS 14/15<br/>CMake + Ninja]
        U_IOS[build-ios<br/>iOS<br/>Xcode]
        U_QEMU[build-cross-qemu<br/>14アーキテクチャ<br/>QEMU]
    end

    subgraph "CI-win ワークフロー"
        direction TB
        W_VS[build-windows<br/>VS 2022/2025<br/>Win32/x64/ARM64]
        W_MINGW_BUILD[build-mingw<br/>Ubuntu上MinGW<br/>i686/x86_64]
        W_MINGW_TEST[test-mingw<br/>Windows上テスト]
        W_MINGW_BUILD -->|アーティファクト| W_MINGW_TEST
    end

    subgraph "Sanitizer ワークフロー"
        direction TB
        S_LINUX[sanitizers-linux<br/>Ubuntu 22.04<br/>ASAN/MSAN/TSAN/UBSAN]
        S_MACOS[sanitizers-macos<br/>macOS 14<br/>ASAN/TSAN/UBSAN]
        S_WIN[sanitizers-windows<br/>Windows 2022<br/>UBSAN + Clang 17]
    end
```

## ビルドシステム構成図

```mermaid
graph TB
    subgraph "主要ビルドシステム: CMake"
        CMAKE[CMakeLists.txt<br/>CMake 3.10+]
        CMAKE --> UV_SHARED[uv<br/>共有ライブラリ]
        CMAKE --> UV_STATIC[uv_a<br/>静的ライブラリ]
        CMAKE --> UV_TEST[uv_run_tests<br/>テストスイート]
        CMAKE --> UV_BENCH[uv_run_benchmarks_a<br/>ベンチマーク]
        CMAKE --> UV_TIDY[tidy-*<br/>clang-tidy解析]
    end

    subgraph "代替ビルドシステム: Autotools"
        AUTOGEN[autogen.sh] --> CONFIGURE[configure.ac<br/>Autoconf]
        CONFIGURE --> MAKEFILE[Makefile.am<br/>Automake]
        MAKEFILE --> LIBUV_LA[libuv.la<br/>Libtool ライブラリ]
    end

    subgraph "クロスコンパイル"
        TOOLCHAIN[cmake-toolchains/<br/>cross-mingw32.cmake]
        CMAKE -.->|ツールチェーン指定| TOOLCHAIN
    end

    subgraph "パッケージ配布"
        PKGCONFIG_SHARED[libuv.pc.in<br/>共有ライブラリ用]
        PKGCONFIG_STATIC[libuv-static.pc.in<br/>静的ライブラリ用]
    end
```

## テスト対象プラットフォーム構成図

```mermaid
graph TB
    subgraph "ネイティブビルド"
        direction LR
        LINUX[Linux<br/>Ubuntu]
        MACOS[macOS<br/>14 / 15]
        WIN[Windows<br/>VS 2022/2025]
    end

    subgraph "クロスコンパイル + エミュレーション"
        direction LR
        ANDROID[Android<br/>API 30]
        IOS[iOS<br/>Xcode]
        subgraph "QEMU (14アーキテクチャ)"
            ARM[arm<br/>aarch64]
            RISCV[riscv64]
            PPC[ppc<br/>ppc64<br/>ppc64le]
            S390X[s390x]
            MIPS[mips<br/>mips64<br/>mipsel<br/>mips64el]
            MUSL[arm-musl<br/>aarch64-musl<br/>riscv64-musl]
        end
    end

    subgraph "MinGWクロスコンパイル"
        MINGW_I686[MinGW i686]
        MINGW_X64[MinGW x86_64]
    end

    subgraph "サニタイザー検証"
        ASAN[ASAN<br/>Linux / macOS / Windows]
        MSAN[MSAN<br/>Linux]
        TSAN[TSAN<br/>Linux / macOS]
        UBSAN[UBSAN<br/>Linux / macOS / Windows]
    end
```

## コード品質パイプライン構成図

```mermaid
graph LR
    SRC[ソースコード] --> CLANG_TIDY[clang-tidy<br/>静的解析<br/>.clang-tidy設定]
    SRC --> ASAN_CHECK[AddressSanitizer<br/>メモリエラー検出]
    SRC --> MSAN_CHECK[MemorySanitizer<br/>未初期化メモリ検出]
    SRC --> TSAN_CHECK[ThreadSanitizer<br/>データ競合検出]
    SRC --> UBSAN_CHECK[UBSanitizer<br/>未定義動作検出]
    SRC --> CTEST[ctest<br/>ユニットテスト]
    SRC --> SPHINX[Sphinx<br/>ドキュメント検証]

    CLANG_TIDY --> RESULT[品質レポート]
    ASAN_CHECK --> RESULT
    MSAN_CHECK --> RESULT
    TSAN_CHECK --> RESULT
    UBSAN_CHECK --> RESULT
    CTEST --> RESULT
    SPHINX --> RESULT
```
