# 画面設計書 10-設定画面

## 概要

本ドキュメントは、Ghosttyターミナルエミュレータの設定画面の設計について記載する。この画面は、現在GUI設定機能が未実装であることをユーザーに通知し、設定ファイルの編集方法を案内するプレースホルダー画面である。

### 本画面の処理概要

設定画面は、GUI設定機能が「Coming Soon」であることを表示し、設定ファイルによる設定方法を案内する。

**業務上の目的・背景**：Ghosttyは設定ファイル（`$HOME/.config/ghostty/config.ghostty`）による設定を採用しているが、将来的にはGUIによる設定機能の提供が計画されている。現時点ではその機能が未実装のため、ユーザーに設定ファイルの編集を案内するプレースホルダー画面を表示する。

**画面へのアクセス方法**：
- メニューバーから「Ghostty > Settings...」を選択
- キーボードショートカット Cmd+, を押下

**主要な操作・処理内容**：
1. アプリケーションアイコンと「Coming Soon」メッセージの表示
2. 設定ファイルのパス案内

**画面遷移**：
- 任意の画面 → 設定画面表示
- 設定画面閉じる → 元の画面に戻る

**権限による表示制御**：特になし。すべてのユーザーに同一の画面が表示される。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 39 | 設定ファイル | 主機能 | 設定ファイルの編集案内表示 |
| 50 | 設定編集 | 遷移先機能 | 設定ファイルをエディタで開く案内 |

## 画面種別

情報表示画面（モーダル）

## URL/ルーティング

N/A（ネイティブデスクトップアプリケーション）

## 入出力項目

| 項目名 | 入力/出力 | データ型 | 必須 | 説明 |
|--------|----------|----------|------|------|
| - | - | - | - | 入出力項目なし（情報表示のみ） |

## 表示項目

| 項目名 | 表示位置 | データ型 | 説明 |
|--------|----------|----------|------|
| アプリケーションアイコン | 左側 | Image | AppIconImage、128x128ピクセル |
| タイトル | 右上 | Text | "Coming Soon." と工事中絵文字 |
| 説明テキスト | 右下 | Text | 設定ファイルの編集案内 |

## イベント仕様

### 1-画面表示

設定メニューが選択されると、以下の処理が実行される：

1. `SettingsView`がSwiftUIビューとして初期化
2. `@EnvironmentObject`で`AppDelegate`を注入
3. HStack/VStackレイアウトで内容を配置
4. ウィンドウサイズは500x156に固定

### 2-画面閉じる

ウィンドウの閉じるボタンをクリックすると：

1. ウィンドウが閉じる
2. 設定は変更されない（情報表示のみのため）

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

N/A（本アプリケーションはデータベースを使用しない）

## メッセージ仕様

| メッセージID | 種別 | メッセージ内容 | 表示条件 |
|-------------|------|---------------|----------|
| MSG001 | タイトル | "Coming Soon." | 常時 |
| MSG002 | 説明 | "You can't configure settings in the GUI yet. To modify settings, edit the file at $HOME/.config/ghostty/config.ghostty and restart Ghostty." | 常時 |

## 例外処理

| 例外状況 | 処理内容 |
|----------|----------|
| AppDelegate未設定 | SwiftUIのEnvironmentObjectが未設定の場合、ランタイムエラー |

## 備考

- macOS専用画面
- SwiftUIで実装
- 将来的にはGUI設定機能が追加される予定（"Coming Soon"表示）
- 設定ファイルパス: `$HOME/.config/ghostty/config.ghostty`
- ウィンドウサイズ固定（500x156ピクセル）
- アプリケーションアイコンを使用した視覚的なブランディング

---

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

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

### 推奨読解順序

#### Step 1: ビュー構造を理解する

SettingsViewの構造とレイアウトを理解。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | SettingsView.swift | `macos/Sources/Features/Settings/SettingsView.swift` | struct SettingsView（3-25行目） |

**読解のコツ**: SwiftUI Viewプロトコルに準拠したシンプルな構造体。HStackで左右に分割し、左にアイコン、右にテキストを配置。

#### Step 2: レイアウト詳細を理解する

UIコンポーネントの配置とサイズ制約を理解。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | SettingsView.swift | `macos/Sources/Features/Settings/SettingsView.swift` | Image設定（9-12行目） |
| 2-2 | SettingsView.swift | 同上 | VStack内テキスト（14-20行目） |
| 2-3 | SettingsView.swift | 同上 | frame制約（23行目） |

**主要処理フロー**:
1. **9-12行目**: アプリアイコン画像を128x128で表示
2. **14-20行目**: "Coming Soon"タイトルと説明テキストを縦に配置
3. **23行目**: ウィンドウサイズを500x156に固定

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

```
SettingsView (SwiftUI View)
    │
    ├─ @EnvironmentObject
    │      └─ appDelegate: AppDelegate
    │
    └─ body: some View
           │
           └─ HStack
                  │
                  ├─ Image("AppIconImage")
                  │      ├─ .resizable()
                  │      ├─ .scaledToFit()
                  │      └─ .frame(width: 128, height: 128)
                  │
                  └─ VStack(alignment: .leading)
                         │
                         ├─ Text("Coming Soon.")
                         │      └─ .font(.title)
                         │
                         └─ Text("You can't configure settings...")
                                ├─ .multilineTextAlignment(.leading)
                                └─ .lineLimit(nil)
```

### データフロー図

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

設定メニュー選択 ─────────▶ SettingsView初期化 ─────────▶ ウィンドウ表示
                              │
                              ▼
                        HStackレイアウト
                              │
                              ├─ Image("AppIconImage") ──▶ アイコン表示
                              │
                              └─ VStack
                                    │
                                    ├─ "Coming Soon." ────▶ タイトル表示
                                    │
                                    └─ 説明テキスト ──────▶ 案内表示

(ユーザーは画面を閉じるのみ、設定変更なし)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| SettingsView.swift | `macos/Sources/Features/Settings/SettingsView.swift` | ソース | 設定画面ビュー |
| AppDelegate.swift | `macos/Sources/App/AppDelegate.swift` | ソース | アプリケーションデリゲート（EnvironmentObject） |
| AppIconImage | `macos/Assets.xcassets/AppIconImage.imageset/` | アセット | アプリケーションアイコン画像 |
