# 画面遷移図

本ドキュメントは、Nimコンパイラプロジェクトの各CLIツール間の画面（コマンド）遷移を示します。

## 全体概要

```mermaid
graph TB
    subgraph User["ユーザー"]
        CLI[コマンドライン]
    end

    subgraph NimTools["Nim ツール群"]
        NIM[nim コンパイラ]
        KOCH[koch ビルドツール]
        NIMSUGGEST[nimsuggest IDE支援]
        NIMPRETTY[nimpretty コードフォーマッター]
        NIMGREP[nimgrep 検索ツール]
        TESTAMENT[testament テストツール]
        NIMINST[niminst インストーラ]
        DRNIM[DrNim 静的解析]
    end

    CLI --> NIM
    CLI --> KOCH
    CLI --> NIMSUGGEST
    CLI --> NIMPRETTY
    CLI --> NIMGREP
    CLI --> TESTAMENT
    CLI --> NIMINST
    CLI --> DRNIM

    KOCH --> NIM
    KOCH --> NIMSUGGEST
    KOCH --> NIMPRETTY
    KOCH --> TESTAMENT
    KOCH --> NIMINST
```

## nim コンパイラ サブコマンド遷移

```mermaid
graph LR
    subgraph NimCompiler["nim コンパイラ"]
        NIM_MAIN[nim メイン]
        NIM_C[nim c<br/>Cコード生成]
        NIM_CPP[nim cpp<br/>C++コード生成]
        NIM_JS[nim js<br/>JavaScript生成]
        NIM_DOC[nim doc<br/>ドキュメント生成]
        NIM_R[nim r<br/>コンパイル&実行]
        NIM_E[nim e<br/>スクリプト実行]
        NIM_CHECK[nim check<br/>構文チェック]
        NIM_DUMP[nim dump<br/>設定ダンプ]
        NIM_HELP[nim --help]
        NIM_VERSION[nim --version]
    end

    NIM_MAIN --> NIM_C
    NIM_MAIN --> NIM_CPP
    NIM_MAIN --> NIM_JS
    NIM_MAIN --> NIM_DOC
    NIM_MAIN --> NIM_R
    NIM_MAIN --> NIM_E
    NIM_MAIN --> NIM_CHECK
    NIM_MAIN --> NIM_DUMP
    NIM_MAIN --> NIM_HELP
    NIM_MAIN --> NIM_VERSION
```

## koch ビルドツール サブコマンド遷移

```mermaid
graph LR
    subgraph KochTool["koch ビルドツール"]
        KOCH_MAIN[koch メイン]
        KOCH_BOOT[koch boot<br/>ブートストラップ]
        KOCH_TOOLS[koch tools<br/>ツールビルド]
        KOCH_DOCS[koch docs<br/>ドキュメント生成]
        KOCH_TESTS[koch tests<br/>テスト実行]
        KOCH_CSOURCE[koch csource<br/>Cソース生成]
        KOCH_ZIP[koch zip<br/>ZIPパッケージ]
        KOCH_XZ[koch xz<br/>tar.xzパッケージ]
        KOCH_NIMBLE[koch nimble<br/>Nimbleビルド]
        KOCH_ATLAS[koch atlas<br/>Atlasビルド]
        KOCH_HELP[koch --help]
    end

    KOCH_MAIN --> KOCH_BOOT
    KOCH_MAIN --> KOCH_TOOLS
    KOCH_MAIN --> KOCH_DOCS
    KOCH_MAIN --> KOCH_TESTS
    KOCH_MAIN --> KOCH_CSOURCE
    KOCH_MAIN --> KOCH_ZIP
    KOCH_MAIN --> KOCH_XZ
    KOCH_MAIN --> KOCH_NIMBLE
    KOCH_MAIN --> KOCH_ATLAS
    KOCH_MAIN --> KOCH_HELP
```

## nimsuggest IDE支援 サブコマンド遷移

```mermaid
graph LR
    subgraph NimsuggestTool["nimsuggest IDE支援ツール"]
        NS_MAIN[nimsuggest メイン]
        NS_SUG[sug<br/>コード補完]
        NS_DEF[def<br/>定義ジャンプ]
        NS_USE[use<br/>参照検索]
        NS_CON[con<br/>コンテキスト情報]
        NS_HIGHLIGHT[highlight<br/>構文ハイライト]
        NS_OUTLINE[outline<br/>アウトライン]
        NS_HELP[--help]
    end

    NS_MAIN --> NS_SUG
    NS_MAIN --> NS_DEF
    NS_MAIN --> NS_USE
    NS_MAIN --> NS_CON
    NS_MAIN --> NS_HIGHLIGHT
    NS_MAIN --> NS_OUTLINE
    NS_MAIN --> NS_HELP
```

## testament テストツール サブコマンド遷移

```mermaid
graph LR
    subgraph TestamentTool["testament テストツール"]
        TEST_MAIN[testament メイン]
        TEST_ALL[all<br/>全テスト実行]
        TEST_CAT[cat<br/>カテゴリテスト]
        TEST_R[r<br/>単一テスト実行]
        TEST_HTML[html<br/>HTMLレポート]
    end

    TEST_MAIN --> TEST_ALL
    TEST_MAIN --> TEST_CAT
    TEST_MAIN --> TEST_R
    TEST_MAIN --> TEST_HTML
```

## niminst インストーラ サブコマンド遷移

```mermaid
graph LR
    subgraph NiminstTool["niminst インストーラツール"]
        INST_MAIN[niminst メイン]
        INST_CSOURCE[csource<br/>Cソース生成]
        INST_SCRIPTS[scripts<br/>スクリプト生成]
        INST_ZIP[zip<br/>ZIPパッケージ]
        INST_XZ[xz<br/>tar.xzパッケージ]
        INST_NSIS[nsis<br/>NSISインストーラ]
    end

    INST_MAIN --> INST_CSOURCE
    INST_MAIN --> INST_SCRIPTS
    INST_MAIN --> INST_ZIP
    INST_MAIN --> INST_XZ
    INST_MAIN --> INST_NSIS
```

## ツール間の連携フロー

```mermaid
graph TB
    subgraph DevWorkflow["開発ワークフロー"]
        EDIT[コード編集]
        SUGGEST[nimsuggest<br/>補完・定義ジャンプ]
        FORMAT[nimpretty<br/>コード整形]
        CHECK[nim check<br/>構文チェック]
        COMPILE[nim c/cpp/js<br/>コンパイル]
        RUN[nim r<br/>実行]
        TEST[testament<br/>テスト実行]
    end

    EDIT --> SUGGEST
    SUGGEST --> EDIT
    EDIT --> FORMAT
    FORMAT --> EDIT
    EDIT --> CHECK
    CHECK --> COMPILE
    COMPILE --> RUN
    COMPILE --> TEST

    subgraph BuildWorkflow["ビルドワークフロー"]
        KOCH_START[koch 開始]
        BOOTSTRAP[koch boot<br/>ブートストラップ]
        BUILD_TOOLS[koch tools<br/>ツールビルド]
        BUILD_DOCS[koch docs<br/>ドキュメント生成]
        RUN_TESTS[koch tests<br/>テスト実行]
        PACKAGE[koch zip/xz<br/>パッケージ作成]
    end

    KOCH_START --> BOOTSTRAP
    BOOTSTRAP --> BUILD_TOOLS
    BUILD_TOOLS --> BUILD_DOCS
    BUILD_DOCS --> RUN_TESTS
    RUN_TESTS --> PACKAGE
```

## 備考

- 本プロジェクトはCLIベースのコンパイラ・ツール群であり、GUIは持たない
- 各ツールはコマンドライン引数によってサブコマンドを切り替える
- kochはNimプロジェクト全体のビルド・保守を統括するメタビルドツール
- nimsuggestはエディタ/IDE連携のためのサーバープロセスとして動作
- testamentはNimコンパイラ自体のテストフレームワークとして使用
