# インフラ構成図

## 全体インフラ構成図

```mermaid
graph TB
    subgraph DEV["開発環境"]
        VS["Visual Studio 2022<br/>v143 Toolset"]
        PS["PowerShell 7+"]
        SDK["Windows 11 SDK<br/>10.0.22621.0"]
        VCPKG["vcpkg<br/>C++パッケージ管理"]
        NUGET["NuGet<br/>.NETパッケージ管理"]
    end

    subgraph SRC["ソースコード管理"]
        GH["GitHub<br/>microsoft/terminal"]
    end

    subgraph CICD["CI/CD 基盤"]
        subgraph AZ["Azure Pipelines"]
            CI["ci.yml<br/>メインCI"]
            RELEASE["ob-release.yml<br/>リリースビルド"]
            NIGHTLY["ob-nightly.yml<br/>ナイトリービルド"]
            FUZZ["fuzz.yml<br/>ファジングテスト"]
            PGO["pgo.yml<br/>PGO最適化"]
        end
        subgraph GHA["GitHub Actions"]
            WINGET_WF["winget.yml<br/>WinGet公開"]
            SPELL["spelling2.yml<br/>スペルチェック"]
            PROJ["addToProject.yml<br/>プロジェクト管理"]
        end
    end

    subgraph BUILD["ビルドマトリクス"]
        X64["x64 ビルド"]
        X86["x86 ビルド"]
        ARM64["ARM64 ビルド"]
    end

    subgraph TEST["テスト基盤"]
        TAEF["TAEF<br/>テスト実行"]
        UT["ユニットテスト"]
        FT["機能テスト"]
        UIA["UI自動化テスト"]
        BENCH["ベンチマーク<br/>ConsoleBench"]
    end

    subgraph PKG["パッケージング"]
        MSIX["MSIX / WAP<br/>CascadiaPackage"]
        BUNDLE["msixbundle<br/>マルチアーキテクチャ"]
        PORT["Portable ZIP<br/>アンパッケージ版"]
    end

    subgraph DIST["配布チャネル"]
        STORE["Microsoft Store"]
        GHREL["GitHub Releases"]
        WINGET["WinGet<br/>Windows Package Manager"]
        APPINST["App Installer<br/>Canary"]
    end

    subgraph CLIENT["クライアント (エンドユーザー)"]
        WIN["Windows 10/11<br/>build 19041+"]
    end

    DEV --> SRC
    SRC --> CICD
    CI --> BUILD
    RELEASE --> BUILD
    NIGHTLY --> BUILD
    BUILD --> TEST
    TAEF --> UT
    TAEF --> FT
    TAEF --> UIA
    TEST --> PKG
    MSIX --> BUNDLE
    PKG --> DIST
    WINGET_WF --> WINGET
    DIST --> CLIENT
```

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

```mermaid
graph LR
    subgraph TRIGGER["トリガー"]
        PUSH["Push to main"]
        PR["Pull Request"]
        SCHED["スケジュール<br/>ナイトリー"]
        TAG["リリースタグ"]
    end

    subgraph STAGES["Azure Pipelines ステージ"]
        AUDIT["Stage 1<br/>Audit Mode<br/>(x64のみ)"]
        HEALTH["Stage 2<br/>Code Health<br/>コード品質チェック"]
        subgraph BUILD_STAGE["Stage 3: Build (並列)"]
            B_X64["x64 Build"]
            B_X86["x86 Build"]
            B_ARM["ARM64 Build"]
        end
        subgraph TEST_STAGE["Stage 4: Test (並列)"]
            T_X64["x64 Test"]
            T_X86["x86 Test"]
            T_ARM["ARM64 Test"]
        end
    end

    subgraph ARTIFACTS["成果物"]
        BIN["バイナリ<br/>(exe, dll)"]
        APPX["MSIX パッケージ<br/>(appx)"]
        MSIXB["MSIX バンドル<br/>(msixbundle)"]
        SYMBOLS["デバッグシンボル<br/>(pdb)"]
    end

    PUSH --> AUDIT
    PR --> AUDIT
    AUDIT --> HEALTH
    HEALTH --> BUILD_STAGE
    B_X64 --> T_X64
    B_X86 --> T_X86
    B_ARM --> T_ARM
    TEST_STAGE --> ARTIFACTS

    SCHED --> NIGHTLY_BUILD["ナイトリービルド<br/>ob-nightly.yml"]
    TAG --> RELEASE_BUILD["リリースビルド<br/>ob-release.yml"]
    NIGHTLY_BUILD --> ARTIFACTS
    RELEASE_BUILD --> ARTIFACTS
```

## パッケージング・配布フロー

```mermaid
graph TB
    subgraph SOURCE["ビルド成果物"]
        BIN_X64["x64 バイナリ"]
        BIN_X86["x86 バイナリ"]
        BIN_ARM["ARM64 バイナリ"]
    end

    subgraph PACKAGE["パッケージング"]
        WAP["WAP Project<br/>CascadiaPackage.wapproj"]
        MANIFEST["AppxManifest"]
        SIGN["コード署名"]
        BUNDLE_CREATE["Create-AppxBundle.ps1<br/>バンドル作成"]
        UNPACK["New-UnpackagedTerminal<br/>Distribution.ps1<br/>ポータブル版作成"]
    end

    subgraph CHANNELS["配布チャネル"]
        subgraph STABLE["Stable チャネル"]
            STORE_S["Microsoft Store<br/>Microsoft.WindowsTerminal"]
            GH_S["GitHub Releases<br/>msixbundle"]
            WG_S["WinGet<br/>Microsoft.WindowsTerminal"]
        end
        subgraph PREVIEW["Preview チャネル"]
            STORE_P["Microsoft Store<br/>Microsoft.WindowsTerminal.Preview"]
            GH_P["GitHub Releases<br/>Preview msixbundle"]
            WG_P["WinGet<br/>Preview"]
        end
        subgraph CANARY["Canary チャネル"]
            AI_C["App Installer<br/>Windows 11"]
            ZIP_C["Portable ZIP"]
        end
    end

    SOURCE --> WAP
    WAP --> MANIFEST
    MANIFEST --> SIGN
    SIGN --> BUNDLE_CREATE
    SIGN --> UNPACK
    BUNDLE_CREATE --> STABLE
    BUNDLE_CREATE --> PREVIEW
    UNPACK --> CANARY
```

## 依存関係管理構成図

```mermaid
graph TB
    subgraph PROJECT["Windows Terminal プロジェクト"]
        SRC["ソースコード<br/>C++17 / C++/WinRT / C# / XAML"]
    end

    subgraph VCPKG_DEPS["vcpkg 依存関係"]
        FMT["fmt 11.1.4<br/>フォーマットライブラリ"]
        GSL["ms-gsl 3.1.0<br/>Guidelines Support Library"]
        JSON["jsoncpp 1.9.5<br/>JSONパーサー"]
        CLI["CLI11 2.4.2<br/>CLIパーサー"]
        CMARK["cmark 0.30.3<br/>Markdownパーサー"]
    end

    subgraph NUGET_DEPS["NuGet 依存関係"]
        TAEF_PKG["Microsoft.Taef<br/>10.100.251104001"]
        PGO_PKG["Microsoft.Internal.<br/>PGO-Helpers.Cpp 0.2.34"]
        PDB_PKG["Microsoft.Debugging.<br/>Tools.PdbStr"]
        SRCTOOL["Microsoft.Debugging.<br/>Tools.SrcTool"]
    end

    subgraph OSS["OSS ライブラリ (同梱)"]
        CHROMIUM["chromium<br/>base numerics"]
        STB["stb<br/>シングルヘッダー"]
        INTERVAL["interval_tree"]
        WYHASH["wyhash<br/>ハッシュ関数"]
        XORG["xorg_apps_rgb<br/>RGBカラー"]
    end

    subgraph SDK_DEPS["SDK / プラットフォーム"]
        WIN_SDK["Windows 11 SDK<br/>10.0.22621.0"]
        MIN_SDK["最小SDK<br/>10.0.18362.0"]
        DOTNET["/.NET Framework 4.8"]
    end

    SRC --> VCPKG_DEPS
    SRC --> NUGET_DEPS
    SRC --> OSS
    SRC --> SDK_DEPS
```

## テスト基盤構成図

```mermaid
graph TB
    subgraph FRAMEWORK["テストフレームワーク"]
        TAEF_FW["TAEF<br/>Test Authoring and<br/>Execution Framework"]
        PS_TEST["PowerShell テスト<br/>Run-Tests.ps1"]
    end

    subgraph UNIT["ユニットテスト"]
        UT_CORE["UnitTests_TerminalCore"]
        UT_CTRL["UnitTests_Control"]
        UT_SETTINGS["UnitTests_SettingsModel"]
        UT_HOST["Host.UnitTests"]
        UT_TIL["til.unit.tests"]
        UT_TYPES["Types.Unit.Tests"]
        UT_PARSER["Parser.UnitTests"]
        UT_ADAPTER["Adapter.UnitTests"]
        UT_BUFFER["TextBuffer.Unit.Tests"]
        UT_APP["TerminalApp.UnitTests"]
        UT_WIN32["Interactivity.Win32.UnitTests"]
    end

    subgraph INTEGRATION["統合テスト"]
        FT_HOST["Host.FeatureTests"]
        FT_PTY["winconpty.FeatureTests"]
        LOCAL["LocalTests_TerminalApp"]
    end

    subgraph SPECIAL["特殊テスト"]
        UIA["UI自動化テスト<br/>WindowsTerminal_UIATests"]
        FUZZ_VT["VTCommandFuzzer"]
        FUZZ_HOST["Host.FuzzWrapper"]
        BENCH_TEST["ConsoleBench<br/>パフォーマンス"]
        RENDER["RenderingTests<br/>描画テスト"]
    end

    subgraph ANALYSIS["品質分析"]
        AUDIT_MODE["AuditMode<br/>静的解析"]
        CPP_CHECK["CppCoreCheck"]
        WPR["Windows Performance<br/>Recorder"]
    end

    TAEF_FW --> UNIT
    TAEF_FW --> INTEGRATION
    TAEF_FW --> SPECIAL
    PS_TEST --> UNIT
    PS_TEST --> INTEGRATION
    SPECIAL --> ANALYSIS
```
