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

## 概要

本ドキュメントは、Sandboxサンプルアプリケーションにおけるメインウィンドウの画面設計書である。このアプリケーションは、Avaloniaフレームワークの開発テスト用サンドボックス環境を提供しており、新機能の実験や動作確認に使用される。

### 本画面の処理概要

この画面は、開発テスト用の空のメインウィンドウである。XAMLでは何もコンテンツが定義されておらず、開発者が自由にUIを追加してテストできるサンドボックス環境を提供する。

**業務上の目的・背景**：Avaloniaフレームワークの開発過程において、新しいコントロールや機能のプロトタイピング・テストを行うための環境を提供することが目的である。このサンドボックスは、Avaloniaのコア開発チームが新機能を実験したり、バグを再現したりするために使用される。一般の開発者もこのパターンを参考に、独自のサンドボックス環境を構築できる。

**画面へのアクセス方法**：Sandboxアプリケーションを起動すると、このメインウィンドウが表示される。コンテンツは空の状態で開始される。

**主要な操作・処理内容**：
1. ウィンドウ表示：空のウィンドウを表示
2. 開発者がXAMLまたはコードでコンテンツを追加して実験

**画面遷移**：
- 遷移元：アプリケーション起動
- 遷移先：なし

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

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 42 | Window | 主機能 | サンドボックスのメインウィンドウ。開発テスト用 |

## 画面種別

テスト / サンドボックス

## URL/ルーティング

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

## 入出力項目

該当なし（空のサンドボックス）

## 表示項目

該当なし（デフォルトでは空。開発者が自由に追加）

## イベント仕様

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

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

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

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

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

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

## メッセージ仕様

該当なし

## 例外処理

該当なし

## 備考

- 空のWindowとして定義されている（UIコンテンツなし）
- 開発テスト目的で使用される
- コードビハインドでWin32.WinRT.Compositionへの参照がある（Windows固有機能のテスト用）
- TextInputOptionsの名前空間がインポートされている（テキスト入力テスト用）
- 必要に応じて開発者がXAMLまたはC#でコンテンツを追加してテスト

---

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

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

### 推奨読解順序

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

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

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | MainWindow.axaml | `samples/Sandbox/MainWindow.axaml` | 空のWindowタグのみの定義 |

**読解のコツ**: このXAMLファイルは意図的に空にされている。開発者がテストしたいUIを自由に追加できるようになっている。

**主要処理フロー**:
- **1-3行目**: 標準的なWindow定義（名前空間、クラス名のみ）
- **3行目**: `x:Class="Sandbox.MainWindow"`でコードビハインドを関連付け
- コンテンツは意図的に空

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

コードビハインドでのusingステートメントと初期化処理を確認する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | MainWindow.axaml.cs | `samples/Sandbox/MainWindow.axaml.cs` | 標準的なWindow初期化、特殊なusingステートメント |

**主要処理フロー**:
- **1-6行目**: 各種名前空間のインポート（Avalonia基本、TextInput、Win32.WinRT.Composition）
- **10-15行目**: MainWindowクラス定義、partial classとしてXAMLと連携
- **12-14行目**: コンストラクタでInitializeComponentを呼び出し

#### Step 3: インポートされている名前空間の意味を理解する

特殊なインポートがなぜ存在するかを確認する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | MainWindow.axaml.cs | `samples/Sandbox/MainWindow.axaml.cs` | Win32関連、TextInput関連のインポート |

**主要処理フロー**:
- **4行目**: `Avalonia.Input.TextInput` - テキスト入力機能のテスト用
- **6行目**: `Avalonia.Win32.WinRT.Composition` - Windows固有のComposition APIテスト用

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

```
App起動
    │
    └─ MainWindow()
           │
           └─ InitializeComponent()
                  │
                  └─ (空のUIを表示)
```

### データフロー図

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

アプリ起動 ───▶ MainWindow生成 ───▶ 空のウィンドウ表示
                                     │
                                     ▼
                              開発者による
                              コンテンツ追加 (任意)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| MainWindow.axaml | `samples/Sandbox/MainWindow.axaml` | XAML | メインウィンドウUIレイアウト（空） |
| MainWindow.axaml.cs | `samples/Sandbox/MainWindow.axaml.cs` | ソース | コードビハインド |
| App.axaml | `samples/Sandbox/App.axaml` | XAML | アプリケーション定義 |
| Program.cs | `samples/Sandbox/Program.cs` | ソース | アプリケーションエントリーポイント |
