# 画面設計書 115-メインウィンドウ

## 概要

本ドキュメントは、SingleProjectSandboxサンプルアプリケーションにおけるメインウィンドウの画面設計書である。このアプリケーションは、単一プロジェクト構成でのAvalonia開発パターンを示すサンドボックス環境を提供している。

### 本画面の処理概要

この画面は、SingleProjectSandboxアプリケーションのメインウィンドウで、MainViewユーザーコントロールをホストするコンテナとして機能する。ウィンドウは固定サイズで、リサイズが無効化されている。

**業務上の目的・背景**：Avaloniaフレームワークにおいて、単一プロジェクト構成でマルチプラットフォームアプリケーションを構築するパターンをデモンストレーションすることが目的である。モバイルデバイス（iOS、Android）を含むマルチプラットフォーム開発において、共通のUIを単一プロジェクトで管理する方法を示している。開発者がプラットフォーム固有のプロジェクトを個別に管理することなく、クロスプラットフォームアプリケーションを構築できることを示す。

**画面へのアクセス方法**：SingleProjectSandboxアプリケーションを起動すると、このメインウィンドウが表示される。ウィンドウは画面中央に配置される（WindowStartupLocation="CenterScreen"）。

**主要な操作・処理内容**：
1. MainViewコントロールの表示：ウィンドウコンテンツとしてMainViewを表示
2. ウィンドウ操作：標準のウィンドウ閉じる操作（リサイズは無効）

**画面遷移**：
- 遷移元：アプリケーション起動
- 遷移先：なし（MainViewが直接コンテンツとして埋め込まれている）

**権限による表示制御**：特になし

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 42 | Window | 主機能 | シングルプロジェクトサンドボックスのメインウィンドウ |

## 画面種別

メイン / コンテナ

## URL/ルーティング

該当なし（デスクトップアプリケーション）

## 入出力項目

該当なし（入力はMainViewで処理）

## 表示項目

| 項目名 | 表示位置 | 説明 |
|--------|----------|------|
| MainView | ウィンドウ全体 | ログインフォーム等を含むユーザーコントロール |

## イベント仕様

### 1-ウィンドウクローズ

メインウィンドウが閉じられると、アプリケーションが終了する。

- **トリガー**：ウィンドウの閉じるボタンクリック、Alt+F4
- **処理フロー**：
  1. ウィンドウが閉じられる
  2. アプリケーションが終了

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

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

該当なし（データベースを使用しない）

## メッセージ仕様

該当なし

## 例外処理

該当なし

## 備考

- ウィンドウサイズは720x1280で固定（モバイルデバイスのアスペクト比をシミュレート）
- CanResize="False"によりリサイズが無効化されている
- WindowStartupLocation="CenterScreen"により画面中央に表示
- FluentThemeが適用されている（App.axaml）
- ウィンドウタイトルは「Single Project Sandbox」

---

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

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

### 推奨読解順序

#### Step 1: アプリケーション構成を理解する

アプリケーション全体の構成とテーマ設定を確認する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | App.axaml | `samples/SingleProjectSandbox/App.axaml` | FluentTheme適用、アプリケーション名設定 |

**読解のコツ**: SingleProjectSandboxはマルチプラットフォーム対応のサンプルで、App.axamlでFluentThemeを適用している。

**主要処理フロー**:
- **4行目**: アプリケーション名「Single Project Sandbox」
- **5-7行目**: FluentThemeの適用

#### Step 2: UI定義を理解する

XAMLファイルでUIレイアウトを確認する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | MainWindow.axaml | `samples/SingleProjectSandbox/MainWindow.axaml` | ウィンドウ設定、MainViewの配置 |

**主要処理フロー**:
- **4行目**: CanResize="False"でリサイズを無効化
- **5行目**: サイズ720x1280（モバイルシミュレーション）
- **6行目**: タイトル「Single Project Sandbox」
- **7行目**: WindowStartupLocation="CenterScreen"
- **9行目**: local:MainViewをコンテンツとして配置

#### Step 3: コードビハインドを理解する

コードビハインドでの初期化処理を確認する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | MainWindow.axaml.cs | `samples/SingleProjectSandbox/MainWindow.axaml.cs` | 標準的なWindow初期化パターン |

**主要処理フロー**:
- **8-11行目**: コンストラクタでInitializeComponentを呼び出し

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

```
App起動
    │
    └─ MainWindow()
           │
           ├─ InitializeComponent()
           │
           └─ MainView (コンテンツとして埋め込み)
                  │
                  └─ MainView.InitializeComponent()
```

### データフロー図

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

アプリ起動 ───▶ App初期化 ───▶ MainWindow生成
                                     │
                                     ▼
                              MainView埋め込み
                                     │
                                     ▼
                              画面表示 ───▶ ユーザー操作待ち
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| MainWindow.axaml | `samples/SingleProjectSandbox/MainWindow.axaml` | XAML | メインウィンドウUIレイアウト |
| MainWindow.axaml.cs | `samples/SingleProjectSandbox/MainWindow.axaml.cs` | ソース | コードビハインド |
| MainView.axaml | `samples/SingleProjectSandbox/MainView.axaml` | XAML | メインビューUIレイアウト |
| MainView.axaml.cs | `samples/SingleProjectSandbox/MainView.axaml.cs` | ソース | メインビューロジック |
| App.axaml | `samples/SingleProjectSandbox/App.axaml` | XAML | アプリケーション定義 |
