# 画面設計書 278-インポート測定

## 概要

本ドキュメントは、dbatoolsモジュールのインポート測定機能（Measure-DbatoolsImport）に関する画面設計書です。

### 本画面の処理概要

dbatoolsモジュールのインポート時に収集されたパフォーマンスデータを表示し、モジュールロード時間のトラブルシューティングを支援するPowerShellコマンドを提供します。

**業務上の目的・背景**：dbatoolsモジュールのインポート（`Import-Module dbatools`）に時間がかかる場合、その原因を特定する必要があります。本機能により、インポートプロセスの各ステップ（ライブラリロード、型エイリアス、内部コマンド、外部コマンドなど）の所要時間を確認し、ボトルネックを特定できます。パフォーマンスチューニングやサポートリクエストの際に有用な診断情報を提供します。

**画面へのアクセス方法**：PowerShellコンソールから`Measure-DbatoolsImport`コマンドを実行します。

**主要な操作・処理内容**：
1. モジュールインポート時の各ステップの所要時間表示
2. 0秒以上かかったステップのみをフィルタリング

**画面遷移**：CLIベースのため画面遷移は存在しません。

**権限による表示制御**：特別な権限は不要です。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 180 | Measure-DbatoolsImport | 主機能 | dbatoolsインポート時間の測定 |

## 画面種別

コマンドラインインターフェース（CLI）

## URL/ルーティング

PowerShellコマンドレット
- `Measure-DbatoolsImport`

## 入出力項目

### Measure-DbatoolsImport

本コマンドはパラメータを受け取りません。

## 表示項目

### Measure-DbatoolsImport出力

| 項目名 | 型 | 説明 |
|--------|-----|------|
| Name | string | 初期化ステップの名前（例: "Importing Type Aliases"） |
| Duration | TimeSpan | ステップの所要時間 |

**典型的なステップ名**：
- dbatoolsライブラリのロード
- 型エイリアスのインポート
- 内部コマンドのロード
- 外部コマンドのロード
- その他の初期化処理

## イベント仕様

### 1-インポート時間表示

Measure-DbatoolsImportコマンド実行時、$script:dbatools_ImportPerformance変数からインポートパフォーマンスデータを取得し、0秒以上かかったステップのみを出力します。

**処理詳細**：
1. $script:dbatools_ImportPerformance変数を参照
2. Where-Object Duration -ne '00:00:00' でフィルタリング
3. 結果をパイプラインに出力

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

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

本機能はSQL Serverデータベースに対する直接的な操作は行いません。

| 操作（イベント） | 対象テーブル | 操作種別 | 概要 |
|----------------|-------------|---------|------|
| N/A | N/A | SELECT（メモリ内） | パフォーマンスデータの読み取りのみ |

## メッセージ仕様

| 種別 | メッセージ | 条件 |
|------|----------|------|
| （なし） | 本コマンドは特別なメッセージを出力しません | - |

## 例外処理

| 例外条件 | 処理内容 |
|---------|---------|
| インポートパフォーマンスデータが存在しない | 空の結果を返却 |

## 備考

- $script:dbatools_ImportPerformanceはモジュールインポート時に自動収集される
- 0秒（'00:00:00'）のステップは除外される
- モジュールを再インポートするとパフォーマンスデータが更新される
- デバッグ目的で内部のインポートプロセスを分析するために使用

---

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

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

### 推奨読解順序

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

インポートパフォーマンスデータは$script:dbatools_ImportPerformance変数に格納されており、Name（ステップ名）とDuration（所要時間）のプロパティを持つオブジェクトの配列です。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | Measure-DbatoolsImport.ps1 | `public/Measure-DbatoolsImport.ps1` | 出力されるオブジェクトの構造を理解（20-27行目） |

**読解のコツ**: パフォーマンスデータはモジュールのpsm1ファイルでインポート時に収集されます。

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

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | Measure-DbatoolsImport.ps1 | `public/Measure-DbatoolsImport.ps1` | コマンド実行時の動作 |

**主要処理フロー**:
1. **39行目**: $script:dbatools_ImportPerformanceをフィルタリングして出力

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

```
Measure-DbatoolsImport
    │
    └─ $script:dbatools_ImportPerformance
           │
           └─ Where-Object Duration -ne '00:00:00'
                  │
                  └─ パイプライン出力
```

### データフロー図

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

（なし） ───────────────▶ $script:dbatools_ImportPerformance ───▶ PSCustomObject[]
                              │
                              └─ Where-Object (Duration > 0)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| Measure-DbatoolsImport.ps1 | `public/Measure-DbatoolsImport.ps1` | ソース | インポート測定コマンド |
| dbatools.psm1 | `dbatools.psm1` | ソース | パフォーマンスデータ収集（モジュール定義） |
