# 画面設計書 32-イントロダクション

## 概要

libuvユーザーガイドのイントロダクションページ（guide/introduction.rst）に関する画面設計書。libuvの導入、歴史的背景、対象読者、ビルド方法を解説するページの構造と仕様を定義する。

### 本画面の処理概要

本ページはlibuvユーザーガイドの第1章として、libuvの概要・歴史・対象読者・サンプルコードのビルド方法を解説する導入ページである。

**業務上の目的・背景**：libuvを学習しようとする開発者が、ライブラリの成り立ちや歴史を理解し、学習の準備を整えるための入り口となるページである。Node.jsの進化過程で生まれたlibuvの経緯を知ることで、ライブラリの設計思想を深く理解できる。システムプログラマーとNode.jsモジュール開発者の2つの対象読者を明確に定義している。

**画面へのアクセス方法**：ユーザーガイド一覧（No.31 guide.rst）のtoctreeリンクからアクセスする。URLパスは `/guide/introduction.html` となる。

**主要な操作・処理内容**：
1. libuvの概要説明の表示（高性能イベント駆動I/Oライブラリとしての位置づけ）
2. 対象読者（Who this book is for）の表示 -- システムプログラマー / Node.jsモジュール開発者
3. 歴史的背景（Background）の表示 -- Node.jsからの派生経緯、libev、IOCP
4. サンプルコードのビルド手順の表示（autogen.sh / configure / make）

**画面遷移**：
- 遷移元：ユーザーガイド一覧（No.31）
- 遷移先：基本事項（No.33）、および外部リンク（GitHub、Node.js、V8、Rustなど）

**権限による表示制御**：なし。全ての閲覧者に同一の内容が表示される。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| - | - | - | 画面機能マッピングにNo.32の定義なし（目次ページのためナビゲーション用途のみ） |

## 画面種別

説明（チュートリアル導入ページ）

## URL/ルーティング

- ソースファイル：`docs/src/guide/introduction.rst`
- 生成先URL：`/guide/introduction.html`
- Sphinxルーティング：guide.rstのtoctreeから参照

## 入出力項目

本ページはドキュメントページのため、ユーザー入力項目は存在しない。

| 項目名 | 入出力 | 型 | 説明 |
|--------|--------|-----|------|
| Introduction本文 | 出力 | テキスト | libuvの概要説明 |
| Who this book is for | 出力 | テキスト | 対象読者の説明（2種類） |
| Background | 出力 | テキスト | Node.js/libev/libuvの歴史的背景 |
| Code | 出力 | テキスト/コードブロック | ビルド手順 |
| 外部リンク | 出力 | ハイパーリンク | v1.42.0, V8, libev, libuv, node.js, Rust等 |

## 表示項目

| 項目名 | 表示内容 | 備考 |
|--------|----------|------|
| セクションタイトル | "Introduction" | ページ見出し（h1） |
| 導入テキスト | libuvの概要説明テキスト | 高性能イベント駆動I/Oライブラリ、同一APIをWindows/Unixで提供 |
| Who this book is for (h2) | 対象読者の説明 | 1. システムプログラマー 2. Node.jsモジュール開発者 |
| Background (h2) | 歴史的背景 | Node.js→libev→IOCP→libuv成立の流れ |
| Code (h2) | サンプルビルド手順 | sh autogen.sh / ./configure / make |
| 外部リンク集 | v1.42.0, V8, libev等へのリンク | ページ末尾に定義 |

## イベント仕様

### 1-外部リンククリック

外部サイト（GitHub、公式ドキュメントなど）へのリンクをクリックすると、新規タブ/同一タブで外部サイトに遷移する。

### 2-前後ページナビゲーション

Sphinxが自動生成するPrevious/Nextナビゲーションにより、前ページ（ユーザーガイド一覧 No.31）または次ページ（基本事項 No.33）へ遷移する。

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

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

| 操作（イベント） | 対象テーブル | 操作種別 | 概要 |
|----------------|-------------|---------|------|
| - | - | - | 静的HTMLページのため該当なし |

## メッセージ仕様

| メッセージID | 種別 | メッセージ内容 | 表示条件 |
|-------------|------|--------------|---------|
| - | - | - | 特別なメッセージ表示なし |

## 例外処理

静的HTMLページのため、アプリケーションレベルの例外処理は発生しない。

## 備考

- 本ページはlibuv v1.42.0を対象として記述されている（introduction.rst行50）。
- 「official libuv documentation」へのリンクにより、APIリファレンスへの誘導も行っている。
- サンプルコードはlibuv GitHubリポジトリの `docs/code/` ディレクトリに格納されており、`make` でビルドする。
- 2017年にNikhil Maratheの著作がlibuv公式ドキュメントに統合された経緯がある。

---

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

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

### 推奨読解順序

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

本ページはreStructuredTextドキュメントであり、セクション見出しとリンク定義が構造の主要要素となる。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | introduction.rst | `docs/src/guide/introduction.rst` | 全体構造（Introduction / Who this book is for / Background / Code）を把握する |

**読解のコツ**: reStructuredTextでは `====` がh1レベル、`----` がh2レベルの見出し記法である。`.. _label:` 形式はSphinxクロスリファレンスラベルを定義する。

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

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | introduction.rst | `docs/src/guide/introduction.rst` | 行1-8: 導入テキスト |
| 2-2 | introduction.rst | `docs/src/guide/introduction.rst` | 行16-31: 対象読者セクション |
| 2-3 | introduction.rst | `docs/src/guide/introduction.rst` | 行33-48: 歴史的背景セクション |
| 2-4 | introduction.rst | `docs/src/guide/introduction.rst` | 行52-64: サンプルコードセクション |

**主要処理フロー**:
1. **行1**: `Introduction` -- セクション見出し
2. **行4-8**: libuvの概要説明（evented I/O library、Windows/Unix共通API）
3. **行16-17**: "Who this book is for" セクション開始
4. **行21-23**: 対象読者1 -- システムプログラマー
5. **行25-29**: 対象読者2 -- Node.jsモジュール開発者
6. **行33-34**: "Background" セクション開始
7. **行36-48**: Node.js/libev/IOCP/libuvの歴史
8. **行52-53**: "Code" セクション開始
9. **行57-61**: ビルド手順（autogen.sh / configure / make）

#### Step 3: 外部リンク定義を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | introduction.rst | `docs/src/guide/introduction.rst` | 行66-73: 外部リンク定義一覧 |

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

```
guide.rst (ユーザーガイド一覧)
    |
    +-- guide/introduction.rst [本画面]
           |
           +-- 外部リンク: https://github.com/libuv/libuv (libuv)
           +-- 外部リンク: https://docs.libuv.org/en/v1.x/ (公式ドキュメント)
           +-- 外部リンク: https://v8.dev (V8)
           +-- 外部リンク: https://www.nodejs.org (Node.js)
           +-- 外部リンク: https://www.rust-lang.org (Rust)
```

### データフロー図

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

introduction.rst     --> Sphinxビルド             --> introduction.html
  セクション見出し          reStructuredText解析        HTMLページ
  外部リンク定義            HTML生成                   外部リンク付き本文
  コードブロック            シンタックスハイライト       ビルド手順
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| introduction.rst | `docs/src/guide/introduction.rst` | テンプレート | イントロダクションページ本体 |
| guide.rst | `docs/src/guide.rst` | テンプレート | 親ページ（toctreeで参照） |
| conf.py | `docs/src/conf.py` | 設定 | Sphinxビルド設定 |
