# 通知設計書 14-インストール完了通知

## 概要

本ドキュメントは、space-vimのインストールスクリプト（install.sh）において、インストールプロセス完了時に表示される最終メッセージの設計を記載する。

### 本通知の処理概要

インストール完了通知は、space-vimのインストールプロセスが全て正常に完了した後に、ユーザーへの感謝メッセージを表示する機能である。

**業務上の目的・背景**：インストールプロセスの完了をユーザーに明確に伝え、space-vimが使用可能な状態になったことを通知する。また、プロジェクトへの感謝の意を表すことで、ユーザーエクスペリエンスを向上させる。

**通知の送信タイミング**：main処理の最後（220行目）で、すべてのインストール処理が正常に完了した後にmsg関数を通じて表示される。

**通知の受信者**：インストールスクリプトを実行しているターミナルユーザー。標準エラー出力（stderr）に出力されるため、スクリプト実行者が直接確認する。

**通知内容の概要**：「Thanks for installing space-vim. Enjoy!」というメッセージが表示される。「space-vim」の部分は赤色で強調表示される。ANSIエスケープシーケンスを使用して視覚的に装飾する。

**期待されるアクション**：ユーザーはインストール完了を確認し、Vim/NeoVimを起動してspace-vimの利用を開始する。

## 通知種別

ターミナル標準エラー出力（CLI通知）

## 送信仕様

### 基本情報

| 項目 | 内容 |
|-----|------|
| 送信方式 | 同期 |
| 優先度 | 中 |
| リトライ | 無し |

### 送信先決定ロジック

スクリプト実行者のターミナルセッション（stderr）に直接出力される。送信先の動的決定は行わない。

## 通知テンプレート

### ターミナル出力の場合

| 項目 | 内容 |
|-----|------|
| 出力先 | stderr（標準エラー出力） |
| 形式 | ANSIカラーエスケープシーケンス付きテキスト |

### 本文テンプレート

```
\nThanks for installing \033[1;31m$app_name\033[0m. Enjoy!
```

- `\n` : 改行（前のメッセージとの間に空行を入れる）
- `\033[1;31m` : 太字赤色開始
- `$app_name` : アプリケーション名（"space-vim"）
- `\033[0m` : 色リセット
- `. Enjoy!` : 締めの挨拶

### 添付ファイル

該当なし

## テンプレート変数

| 変数名 | 説明 | データ取得元 | 必須 |
|--------|------|-------------|-----|
| $app_name | アプリケーション名 | グローバル変数（13行目で定義） | Yes |

## 送信トリガー・条件

### トリガー一覧

| トリガー種別 | トリガーイベント | 送信条件 | 説明 |
|------------|----------------|---------|------|
| シェルスクリプト実行 | インストール処理完了 | install関数が正常終了 | main処理の最終行（220行目） |

### 送信抑止条件

| 条件 | 説明 |
|-----|------|
| error関数が呼び出された場合 | エラーでスクリプトが終了するため、この通知には到達しない |
| --updateオプション指定時 | sync_repo関数内でexit 0により早期終了するため |

## 処理フロー

### 送信フロー

```mermaid
flowchart TD
    A[check_git完了] --> B[sync_repo完了]
    B --> C{--update?}
    C -->|Yes| D[exit 0で終了]
    C -->|No| E[install完了]
    E --> F[msg関数で完了メッセージ出力]
    F --> G[スクリプト正常終了]
```

## データベース参照・更新仕様

### 参照テーブル一覧

該当なし（ファイルシステムベースの処理）

### 更新テーブル一覧

該当なし

## エラー処理

### エラーケース一覧

| エラー種別 | 発生条件 | 対処方法 |
|----------|---------|---------|
| 出力失敗 | stderrへの書き込み不可 | シェルの標準動作に依存 |
| 文字化け | ターミナルがANSIエスケープ非対応 | 表示が乱れるが機能には影響なし |

### リトライ仕様

| 項目 | 内容 |
|-----|------|
| リトライ回数 | 0（リトライなし） |
| リトライ間隔 | 該当なし |
| リトライ対象エラー | 該当なし |

## 配信設定

### レート制限

| 項目 | 内容 |
|-----|------|
| 1分あたり上限 | 制限なし |
| 1日あたり上限 | 制限なし |

### 配信時間帯

制限なし（スクリプト実行時に即座に出力）

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

- 機密情報は含まれない
- ローカルターミナルへの出力のみで外部通信なし
- ANSIエスケープシーケンスによる表示制御のみ

## 備考

- 220行目で直接msg関数を呼び出している
- $app_nameは13行目で"space-vim"として定義されている
- 赤色（\\033[1;31m）でアプリケーション名を強調表示する
- この通知が表示されることは、インストールが正常に完了したことを意味する

---

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

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

### 推奨読解順序

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

グローバル変数`$app_name`が使用される。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | install.sh | `install.sh` | グローバル変数定義（13行目）を確認 |

**読解のコツ**: `app_name="space-vim"`としてスクリプト冒頭で定義されている。

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

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | install.sh | `install.sh` | main処理（214-220行目）の最終行を確認 |

**主要処理フロー**:
1. **214行目**: check_git関数
2. **216行目**: sync_repo関数
3. **218行目**: install関数
4. **220行目**: 完了メッセージ出力

#### Step 3: 完了メッセージの実装を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | install.sh | `install.sh` | 220行目の完了メッセージ |
| 3-2 | install.sh | `install.sh` | msg関数定義（56-58行目） |

**主要処理フロー**:
- **220行目**: `msg "\\nThanks for installing \\033[1;31m$app_name\\033[0m. Enjoy!"`
- **56-58行目**: msg関数でstderrに出力

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

```
main (214-220行目)
    |
    +-- check_git (151-155行目)
    |
    +-- sync_repo (75-91行目)
    |
    +-- install (196-209行目)
    |
    +-- msg (56-58行目) [220行目 - 完了メッセージ]
```

### データフロー図

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

$app_name変数 ──▶ メッセージ文字列生成 ──▶ msg関数 ──▶ stderr (ターミナル)
("space-vim")         |
                 ANSIカラーコード埋め込み
                 (赤色強調)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| install.sh | `install.sh` | ソース | インストールスクリプト本体。完了メッセージを含む |
