# 画面設計書 1-トップページ

## 概要

libuvドキュメントサイトのトップページ（index.rst）に関する画面設計書。Sphinxで生成されるReadTheDocsサイトのエントリポイントであり、プロジェクト概要・機能一覧・目次・ダウンロード情報・インストール情報を表示する。

### 本画面の処理概要

本画面はlibuvドキュメントサイトのランディングページとして機能し、利用者がプロジェクトの全体像を把握し、各セクションへ効率的にナビゲーションするための起点となる。

**業務上の目的・背景**：libuvはNode.jsをはじめとする多くのプロジェクトで使用されるクロスプラットフォーム非同期I/Oライブラリであり、開発者が迅速にAPIリファレンスやユーザーガイドにアクセスできるよう、整理されたトップページが必要となる。本画面はドキュメントサイト全体のハブとして、初めてlibuvに触れる開発者から上級者まで、適切な情報へ導く役割を果たす。

**画面へのアクセス方法**：ReadTheDocsサイトのルートURL（https://docs.libuv.org/ 等）にアクセスすることで表示される。Sphinxビルドにより `docs/src/index.rst` から生成されるHTMLページがエントリポイントとなる。

**主要な操作・処理内容**：
1. プロジェクト概要（Overview）の閲覧 - libuvの目的と利用プロジェクト（Node.js、Luvit、Julia、uvloop等）の確認
2. 機能一覧（Features）の閲覧 - イベントループ、TCP/UDPソケット、DNS解決、ファイルI/O等の主要機能の把握
3. ドキュメントセクションへのナビゲーション - 設計概要、APIリファレンス、ユーザーガイド、アップグレードガイドへの遷移
4. ダウンロードリンクの参照 - libuv配布サイトへのリンク
5. インストール手順の参照 - GitHubリポジトリのREADMEへのリンク

**画面遷移**：
- 遷移先：設計概要（design.rst）、APIドキュメント一覧（api.rst）、ユーザーガイド一覧（guide.rst）、アップグレードガイド一覧（upgrading.rst）
- 遷移元：なし（トップレベルページ）。ただし各子ページからブレッドクラム等でトップへ戻ることが可能

**権限による表示制御**：なし。本ドキュメントサイトは公開情報であり、全ユーザーが同一の内容を閲覧可能。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 180 | バージョン情報取得 | 補助機能 | トップページでのlibuvバージョン表記に関連 |
| 3 | イベントループ実行 | 遷移先機能 | APIリファレンス・ユーザーガイド各ページへのナビゲーション目次 |

## 画面種別

目次・ナビゲーションページ（トップページ）

## URL/ルーティング

- ソースファイル: `docs/src/index.rst`
- 生成先URL: サイトルート（例: `https://docs.libuv.org/en/v1.x/`）
- Sphinxルーティング: `index.html`（デフォルトのマスタードキュメント）

## 入出力項目

本画面はSphinxにより静的HTMLとして生成されるため、ユーザーからの入力項目は存在しない。

| 項目名 | 入出力 | 型 | 説明 |
|--------|--------|-----|------|
| ページタイトル | 出力 | テキスト | "Welcome to the libuv documentation" |
| プロジェクト概要 | 出力 | テキスト | libuvの説明文とプロジェクトリンク |
| 機能一覧 | 出力 | リスト | libuvが提供する主要機能の箇条書き |
| ドキュメント目次 | 出力 | リンクリスト | 設計概要・API・ガイド・アップグレードへのリンク |
| ダウンロードリンク | 出力 | URL | libuv配布サイトへの外部リンク |
| インストール情報リンク | 出力 | URL | GitHubリポジトリREADMEへの外部リンク |

## 表示項目

### Overview セクション

| 表示項目 | 内容 | 備考 |
|----------|------|------|
| 説明文 | "libuv is a multi-platform support library with a focus on asynchronous I/O." | Node.js、Luvit、Julia、uvloop等の利用プロジェクトへのリンクを含む |
| 注記 | ドキュメントの誤り報告方法（Pull Requestリンク） | GitHubリポジトリへのリンク |

### Features セクション

| 表示項目 | 内容 |
|----------|------|
| イベントループ | epoll, kqueue, IOCP, event portsによる高機能イベントループ |
| TCP/UDPソケット | 非同期TCP/UDPソケット |
| DNS解決 | 非同期DNS解決 |
| ファイルI/O | 非同期ファイル・ファイルシステム操作 |
| ファイルシステムイベント | ファイルシステムイベント監視 |
| TTY制御 | ANSIエスケープコード制御TTY |
| IPC | ソケット共有によるIPC（Unixドメインソケット/Windowsネームドパイプ） |
| 子プロセス | 子プロセス管理 |
| スレッドプール | スレッドプール |
| シグナルハンドリング | シグナル処理 |
| 高精度クロック | 高精度クロック |
| スレッドプリミティブ | スレッドおよび同期プリミティブ |

### Documentation セクション（toctree）

| 表示項目 | 遷移先 | ファイル |
|----------|--------|---------|
| Design overview | 設計概要ページ | `design.rst` |
| API documentation | APIドキュメント一覧ページ | `api.rst` |
| User guide | ユーザーガイド一覧ページ | `guide.rst` |
| Upgrading | アップグレードガイドページ | `upgrading.rst` |

### Downloads セクション

| 表示項目 | 内容 |
|----------|------|
| ダウンロードリンク | `https://dist.libuv.org/dist/` への外部リンク |

### Installation セクション

| 表示項目 | 内容 |
|----------|------|
| インストール手順リンク | `https://github.com/libuv/libuv/blob/master/README.md` への外部リンク |

## イベント仕様

### 1-ドキュメント目次リンク押下

Sphinxの `toctree` ディレクティブにより生成されたリンクを押下すると、対応するドキュメントページ（設計概要、APIリファレンス、ユーザーガイド、アップグレードガイド）へ遷移する。遷移はHTMLページ間の通常のハイパーリンクによるページ遷移である。

### 2-外部リンク押下

Overview内のプロジェクトリンク（Node.js、Luvit等）、Downloads、Installationの外部リンクを押下すると、外部サイトへ遷移する。

## データベース更新仕様

### 操作別データベース影響一覧

本画面は静的HTMLドキュメントサイトであり、データベースは使用しない。

| 操作（イベント） | 対象テーブル | 操作種別 | 概要 |
|----------------|-------------|---------|------|
| N/A | N/A | N/A | データベースアクセスなし |

## メッセージ仕様

本画面は静的HTMLとして生成されるため、動的なメッセージ表示は行わない。

| メッセージID | 種別 | メッセージ内容 | 表示条件 |
|-------------|------|--------------|----------|
| N/A | N/A | N/A | N/A |

## 例外処理

- Sphinxビルド失敗時: `index.rst` の構文エラーや参照先ファイルの不在がある場合、HTMLが生成されない
- 外部リンク切れ: プロジェクトリンクや配布サイトリンクが無効になった場合、404エラーとなる（静的ドキュメントのため自動検知は行わない）

## 備考

- 本ページは `docs/src/index.rst` を元にSphinx（ReadTheDocs）でビルドされる静的HTMLページである
- `toctree` ディレクティブの `:maxdepth: 1` 設定により、直下の子ページ名のみが目次として表示される
- 外部リンクはSphinxの `_` サフィックスによるハイパーリンク記法で定義されている

---

## コードリーディングガイド

本画面を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: データ構造を理解する

本画面はSphinxのreStructuredText（RST）ファイルから生成される静的ページである。RSTの構造（セクション、toctreeディレクティブ、外部リンク定義）を理解することが前提となる。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | conf.py | `docs/src/conf.py` | Sphinxプロジェクト設定。マスタードキュメント、テーマ、拡張機能の定義を確認 |
| 1-2 | index.rst | `docs/src/index.rst` | トップページのRSTソース。セクション構造・toctree・外部リンクの定義 |

**読解のコツ**: RSTファイルでは `===` や `---` による見出しレベル定義、`.. toctree::` による子ページ階層定義、`.. _Name: URL` による参照ターゲット定義が重要な構文要素である。

#### Step 2: エントリーポイントを理解する

Sphinxビルドにおいて `index.rst` がルートドキュメント（マスタードキュメント）として位置づけられている。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | index.rst | `docs/src/index.rst` | 1行目から始まるタイトル定義とセクション構造を確認 |

**主要処理フロー**:
1. **2-7行目**: タイトル "Welcome to the libuv documentation" の定義
2. **8-11行目**: Overview セクション - libuvの概要説明
3. **23-37行目**: Features セクション - 機能一覧の箇条書き
4. **40-49行目**: Documentation セクション - toctreeによる子ページ目次定義（maxdepth:1）
5. **52-55行目**: Downloads セクション - 配布サイトリンク
6. **58-61行目**: Installation セクション - GitHub READMEリンク

#### Step 3: 関連するバージョン情報を理解する

トップページでバージョン表記が使用される場合、バージョン情報の定義元を確認する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | version.h | `include/uv/version.h` | UV_VERSION_MAJOR/MINOR/PATCH マクロの定義（33-35行目） |
| 3-2 | version.c | `src/version.c` | uv_version()/uv_version_string() 関数の実装（38-45行目） |

**主要処理フロー**:
- **version.h 33行目**: `#define UV_VERSION_MAJOR 1` - メジャーバージョン定義
- **version.h 34行目**: `#define UV_VERSION_MINOR 52` - マイナーバージョン定義
- **version.h 35行目**: `#define UV_VERSION_PATCH 1` - パッチバージョン定義
- **version.c 38-40行目**: `uv_version()` 関数が `UV_VERSION_HEX` を返却
- **version.c 43-45行目**: `uv_version_string()` 関数がバージョン文字列を返却

### プログラム呼び出し階層図

```
Sphinx Build (sphinx-build)
    |
    +-- docs/src/conf.py (ビルド設定読み込み)
    |
    +-- docs/src/index.rst (マスタードキュメント解析)
    |       |
    |       +-- toctree ディレクティブ解析
    |       |       +-- design.rst
    |       |       +-- api.rst
    |       |       +-- guide.rst
    |       |       +-- upgrading.rst
    |       |
    |       +-- 外部リンク解析
    |               +-- Node.js, Luvit, Julia, uvloop, others
    |               +-- dist.libuv.org
    |               +-- github.com/libuv/libuv
    |
    +-- HTML出力 (index.html)
```

### データフロー図

```
[入力]                   [処理]                      [出力]

docs/src/index.rst  --> Sphinx ビルドエンジン  -->  _build/html/index.html
docs/src/conf.py    -->    (RST解析・HTML生成)  -->  (静的HTMLページ)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| index.rst | `docs/src/index.rst` | テンプレート | トップページのRSTソースファイル |
| conf.py | `docs/src/conf.py` | 設定 | Sphinxビルド設定ファイル |
| design.rst | `docs/src/design.rst` | テンプレート | 遷移先：設計概要ページ |
| api.rst | `docs/src/api.rst` | テンプレート | 遷移先：APIドキュメント一覧ページ |
| guide.rst | `docs/src/guide.rst` | テンプレート | 遷移先：ユーザーガイド一覧ページ |
| upgrading.rst | `docs/src/upgrading.rst` | テンプレート | 遷移先：アップグレードガイドページ |
| version.h | `include/uv/version.h` | ソース | バージョン番号マクロの定義 |
| version.c | `src/version.c` | ソース | バージョン取得関数の実装 |
