# インフラ構成図

## 全体構成図

```mermaid
flowchart TB
    subgraph Developer["開発者環境"]
        DEV[開発者]
    end

    subgraph GitHub["GitHub"]
        REPO[("tidyverse/dplyr<br/>リポジトリ")]
        GHPAGES[("gh-pages<br/>ブランチ")]

        subgraph Actions["GitHub Actions"]
            CHECK["R-CMD-check<br/>(マルチOS/Rバージョン)"]
            COVERAGE["test-coverage<br/>(カバレッジ測定)"]
            PKGDOWN["pkgdown<br/>(ドキュメント生成)"]
            PRCMD["pr-commands<br/>(document/style)"]
            FORMAT["format-suggest<br/>(フォーマット提案)"]
            RHUB["rhub<br/>(クロスプラットフォーム)"]
        end
    end

    subgraph External["外部サービス"]
        CODECOV["Codecov<br/>(カバレッジレポート)"]
        CRAN["CRAN<br/>(パッケージ配布)"]
        RHUBSVC["R-hub<br/>(チェックサービス)"]
    end

    subgraph Hosting["ホスティング"]
        PAGES["GitHub Pages<br/>(dplyr.tidyverse.org)"]
    end

    subgraph Analytics["アナリティクス"]
        PLAUSIBLE["Plausible<br/>(アクセス解析)"]
        KAPA["kapa.ai<br/>(AIアシスタント)"]
    end

    DEV -->|push/PR| REPO
    REPO --> CHECK
    REPO --> COVERAGE
    REPO --> PKGDOWN
    REPO --> PRCMD
    REPO --> FORMAT
    REPO --> RHUB

    COVERAGE -->|レポート送信| CODECOV
    PKGDOWN -->|デプロイ| GHPAGES
    GHPAGES -->|ホスティング| PAGES
    RHUB -->|チェック実行| RHUBSVC

    PAGES -->|埋め込み| PLAUSIBLE
    PAGES -->|埋め込み| KAPA

    REPO -.->|手動サブミット| CRAN
```

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

```mermaid
flowchart LR
    subgraph Trigger["トリガー"]
        PUSH["push<br/>(main/master)"]
        PR["Pull Request"]
        RELEASE["Release<br/>(published)"]
        MANUAL["手動実行"]
        COMMENT["PRコメント<br/>(/document, /style)"]
    end

    subgraph Workflows["ワークフロー"]
        subgraph Check["R-CMD-check"]
            MACOS["macOS-latest<br/>(R release)"]
            WIN_REL["Windows-latest<br/>(R release)"]
            WIN_OLD["Windows-latest<br/>(R oldrel-4)"]
            UBUNTU_DEV["Ubuntu-latest<br/>(R devel)"]
            UBUNTU_REL["Ubuntu-latest<br/>(R release)"]
            UBUNTU_OLD1["Ubuntu-latest<br/>(R oldrel-1)"]
            UBUNTU_OLD2["Ubuntu-latest<br/>(R oldrel-2)"]
            UBUNTU_OLD3["Ubuntu-latest<br/>(R oldrel-3)"]
            UBUNTU_OLD4["Ubuntu-latest<br/>(R oldrel-4)"]
        end

        COV["test-coverage<br/>(Ubuntu)"]
        PKG["pkgdown<br/>(Ubuntu)"]
        FMT["format-suggest<br/>(Ubuntu)"]
        CMD["pr-commands<br/>(Ubuntu)"]
        RH["rhub<br/>(マルチプラットフォーム)"]
    end

    subgraph Output["出力"]
        RESULT["テスト結果"]
        COVREPORT["カバレッジ<br/>レポート"]
        DOCS["ドキュメント<br/>サイト"]
        SUGGEST["フォーマット<br/>提案"]
    end

    PUSH --> Check
    PUSH --> COV
    PUSH --> PKG
    PR --> Check
    PR --> COV
    PR --> PKG
    PR --> FMT
    RELEASE --> PKG
    MANUAL --> PKG
    MANUAL --> RH
    COMMENT --> CMD

    Check --> RESULT
    COV --> COVREPORT
    PKG --> DOCS
    FMT --> SUGGEST
```

## GitHub Actions ランナー構成

```mermaid
flowchart TB
    subgraph Runners["GitHub Actions ランナー"]
        subgraph Ubuntu["Ubuntu環境"]
            U1["R devel"]
            U2["R release"]
            U3["R oldrel-1"]
            U4["R oldrel-2"]
            U5["R oldrel-3"]
            U6["R oldrel-4"]
        end

        subgraph Windows["Windows環境"]
            W1["R release"]
            W2["R oldrel-4<br/>(rtools40)"]
        end

        subgraph macOS["macOS環境"]
            M1["R release"]
        end
    end

    subgraph Tools["共通ツール"]
        PANDOC["Pandoc"]
        RSPM["Public RSPM<br/>(パッケージミラー)"]
    end

    Ubuntu --> PANDOC
    Ubuntu --> RSPM
    Windows --> RSPM
    macOS --> PANDOC
    macOS --> RSPM
```

## セキュリティ構成

```mermaid
flowchart TB
    subgraph Secrets["シークレット管理"]
        GHT["GITHUB_TOKEN<br/>(自動提供)"]
        COV["CODECOV_TOKEN"]
        RH["RHUB_TOKEN"]
    end

    subgraph Permissions["権限設定"]
        READ["read-all<br/>(デフォルト)"]
        WRITE_C["contents: write<br/>(pkgdown, pr-commands)"]
        WRITE_P["pull-requests: write<br/>(format-suggest)"]
    end

    subgraph Workflows["ワークフロー"]
        W1["R-CMD-check"]
        W2["test-coverage"]
        W3["pkgdown"]
        W4["pr-commands"]
        W5["format-suggest"]
        W6["rhub"]
    end

    GHT --> W1
    GHT --> W2
    GHT --> W3
    GHT --> W4
    COV --> W2
    RH --> W6

    READ --> W1
    READ --> W2
    WRITE_C --> W3
    WRITE_C --> W4
    WRITE_P --> W5
```

## ドキュメントサイト構成

```mermaid
flowchart TB
    subgraph Source["ソース"]
        R["Rソースコード"]
        VIGN["Vignettes"]
        MAN["man/ ドキュメント"]
        NEWS["NEWS.md"]
        README["README.md"]
    end

    subgraph Build["ビルドプロセス"]
        ROXYGEN["roxygen2<br/>(ドキュメント生成)"]
        PKGDOWN["pkgdown<br/>(サイト生成)"]
    end

    subgraph Deploy["デプロイ"]
        GHPAGES["gh-pagesブランチ"]
        PAGES["GitHub Pages"]
    end

    subgraph Site["dplyr.tidyverse.org"]
        HOME["ホーム"]
        REF["リファレンス"]
        ARTICLES["記事"]
        NEWSPAGE["ニュース"]
    end

    subgraph Features["機能"]
        SEARCH["検索"]
        AI["AI アシスタント<br/>(kapa.ai)"]
        ANALYTICS["アクセス解析<br/>(Plausible)"]
    end

    R --> ROXYGEN
    MAN --> ROXYGEN
    ROXYGEN --> PKGDOWN
    VIGN --> PKGDOWN
    NEWS --> PKGDOWN
    README --> PKGDOWN

    PKGDOWN --> GHPAGES
    GHPAGES --> PAGES

    PAGES --> HOME
    PAGES --> REF
    PAGES --> ARTICLES
    PAGES --> NEWSPAGE

    HOME --> SEARCH
    HOME --> AI
    HOME --> ANALYTICS
```
