# 機能設計書 44-ヘルプ表示

## 概要

本ドキュメントは、Ghosttyターミナルエミュレータにおける「ヘルプ表示」機能の設計を記述する。この機能は、CLIコマンド`+help`、`-h`、または`--help`を通じて、Ghosttyの使用方法、利用可能なアクション、および設定オプションの概要を表示する。

### 本機能の処理概要

**業務上の目的・背景**：コマンドラインツールにおいて、ヘルプ表示は最も基本的な機能の一つである。ユーザーがGhosttyの使い方を理解し、利用可能な機能を発見できるようにすることで、ツールの習得を促進し、ドキュメント参照の手間を軽減する。

**機能の利用シーン**：
- Ghosttyを初めて使用する際に基本的な使い方を確認する
- 利用可能なCLIアクション（+コマンド）を確認する
- 特定のアクションのヘルプを表示する（`+<action> --help`）
- 設定オプションの指定方法を確認する

**主要な処理内容**：
1. コマンドライン引数のパース
2. ヘルプテキストの生成と出力
3. 利用可能なアクション一覧の動的生成
4. 各アクション固有のヘルプへの誘導

**関連システム・外部連携**：
- なし（純粋なテキスト出力機能）

**権限による制御**：特になし。すべてのユーザーがヘルプ表示を実行可能。

## 関連画面

| 画面No | 画面名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| なし | - | - | CLI専用機能のため画面関連なし |

## 機能種別

情報表示 / CLI出力

## 入力仕様

### 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 | バリデーション |
|-------------|-----|-----|------|---------------|
| help | bool | No | --helpフラグ（内部用） | デフォルト: false |

### 入力データソース

- コマンドライン: `ghostty +help`、`ghostty -h`、`ghostty --help`
- 他のアクションと組み合わせ: `ghostty +<action> --help`

## 出力仕様

### 出力データ

| 項目名 | 型 | 説明 |
|--------|-----|------|
| 使用方法 | []const u8 | 基本的な使用方法の説明 |
| オプション説明 | []const u8 | 設定オプションの指定方法 |
| アクション一覧 | [][]const u8 | 利用可能な+アクションのリスト |

### 出力先

- 標準出力（stdout）

## 処理フロー

### 処理シーケンス

```
1. Options構造体の初期化
   └─ helpフラグのデフォルト値設定

2. コマンドライン引数のパース
   └─ argsIteratorによる引数解析

3. ヘルプテキストの出力
   └─ 使用方法の説明
   └─ オプション指定方法の説明
   └─ -eコマンドの説明

4. アクション一覧の動的生成
   └─ Action enumからフィールド名を抽出
   └─ 各アクションを+プレフィックス付きで出力

5. 補足情報の出力
   └─ アクション固有ヘルプへの誘導

6. バッファフラッシュ
   └─ 出力バッファの書き出し
```

### フローチャート

```mermaid
flowchart TD
    A[+help実行] --> B[Options初期化]
    B --> C[引数パース]
    C --> D[ヘルプヘッダー出力]
    D --> E[使用方法出力]
    E --> F[オプション説明出力]
    F --> G[Action enumループ]
    G --> H{次のアクションあり?}
    H -->|Yes| I[アクション名出力]
    I --> H
    H -->|No| J[フッター出力]
    J --> K[バッファフラッシュ]
    K --> L[終了コード0で終了]
```

## ビジネスルール

### 業務ルール

| ルールNo | ルール名 | 内容 | 適用条件 |
|---------|---------|------|---------|
| BR-44-01 | 動的アクション一覧 | アクション一覧はAction enumから自動生成 | 常時 |
| BR-44-02 | アクション固有ヘルプ | 各アクションは`+<action> --help`で個別ヘルプを表示可能 | アクションにhelp関数がある場合 |
| BR-44-03 | 正常終了 | ヘルプ表示は常に終了コード0で終了 | 常時 |

### 計算ロジック

特になし。

## データベース操作仕様

本機能はデータベースを使用しない。

## エラー処理

### エラーケース一覧

| エラーコード | エラー種別 | 発生条件 | 対処方法 |
|------------|----------|---------|---------|
| - | I/Oエラー | 標準出力への書き込み失敗 | エラーを返す |

### リトライ仕様

リトライなし。

## トランザクション仕様

トランザクションは使用しない。

## パフォーマンス要件

- 瞬時に実行完了すること（静的テキスト出力のみ）

## セキュリティ考慮事項

- ヘルプテキストは機密情報を含まない

## 備考

- macOSではCLIからのターミナル起動はサポートされていない（About画面に誘導）
- 設定オプションの詳細はConfig.zigを参照するよう案内

---

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

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

### 推奨読解順序

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

Options構造体とAction enumを理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | help.zig | `src/cli/help.zig` | Options構造体の定義（9-16行目） |
| 1-2 | ghostty.zig | `src/cli/ghostty.zig` | Action enumの定義 |

**読解のコツ**: help.zigのOptionsはhelpフラグを持つが、これは`--help`と`-h`を登録するためのもの。実際のヘルプ出力は通常の処理フローで行われる。

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

run関数の処理フローを理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | help.zig | `src/cli/help.zig` | run関数の全体構造（18-78行目） |

**主要処理フロー**:
1. **24-31行目**: Options初期化と引数パース
2. **33-35行目**: バッファとstdoutライターの初期化
3. **36-63行目**: ヘルプテキストの出力（writeAll）
4. **65-67行目**: アクション一覧のループ出力
5. **69-74行目**: フッターの出力

#### Step 3: アクション一覧の動的生成

Action enumからアクション名を取得する仕組みを理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | help.zig | `src/cli/help.zig` | inline forによるenum列挙（65行目） |
| 3-2 | ghostty.zig | `src/cli/ghostty.zig` | Action enumの定義 |

**主要処理フロー**:
- **65行目**: `@typeInfo(Action).@"enum".fields`でenumフィールドを取得
- **66行目**: 各フィールド名を`+{name}`形式で出力

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

```
ghostty +help / -h / --help
    │
    └─ cli.help.run
           │
           ├─ args.argsIterator (引数パース)
           │
           ├─ args.parse (Options解析)
           │
           ├─ stdout.writeAll (ヘルプテキスト出力)
           │      └─ 静的ヘルプ文字列
           │
           └─ @typeInfo(Action).@"enum".fields
                  └─ 各フィールド名を+プレフィックス付きで出力
```

### データフロー図

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

コマンドライン ──────▶ run関数 ─────────────────▶ 標準出力
(+help/-h/--help)         │
                          │
静的ヘルプテキスト ──▶ writeAll ────────────────▶ 使用方法説明
                          │
Action enum ─────────▶ inline for ───────────▶ アクション一覧
                          │
                          ▼
                    バッファフラッシュ ────────▶ stdout
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| help.zig | `src/cli/help.zig` | ソース | ヘルプ表示コマンドの実装 |
| ghostty.zig | `src/cli/ghostty.zig` | ソース | Action enumの定義 |
| args.zig | `src/cli/args.zig` | ソース | コマンドライン引数パーサー |
