送信者情報マスタ画面レイアウト調整手順書.md

# 送信者情報マスタ画面レイアウト調整手順書

## 概要
送信者情報マスタ画面の余白を調整し、サイズ変更を制限します。また、「Chatwork送信用アカウント名」欄を「テスト送信者ルームID」欄の右端と同じ長さに引き伸ばします。

## 現状の分析

### 現在の設定
- **フォームサイズ**:ClientSize = new Size(1200, 400)
- **FormBorderStyle**:FixedSingle(既に設定済み、サイズ変更不可)
- **パネル構成**:単一のパネルにSenderInfoControlを配置
- **SenderInfoControl内のレイアウト**:
  - APIトークン欄:幅598px
  - テスト送信先ルームID欄:幅230px
  - Chatwork送信用アカウント名欄:幅294px(調整が必要)

### 問題点
1. 四方の余白が大きい
2. 「Chatwork送信用アカウント名」欄が短い

## 修正方針

### 目標
1. 四方の余白を最小限に抑える(設計書サンプル程度、右側の余白はカット)
2. 「Chatwork送信用アカウント名」欄を「テスト送信者ルームID」欄の右端まで延長
3. 画面の最大化・サイズ調整不可(既に設定済み)

## 実装手順

### ステップ1: TableLayoutPanelの追加によるレイアウト管理

#### 1.1 M_SenderMaster.Designer.csの修正

現在は単一のパネルを使用していますが、余白を管理するためにTableLayoutPanelを追加します。

```csharp
private void InitializeComponent()
{
    this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
    this.panel = new System.Windows.Forms.Panel();
    this.tableLayoutPanel1.SuspendLayout();
    this.SuspendLayout();
    // 
    // tableLayoutPanel1
    // 
    this.tableLayoutPanel1.ColumnCount = 3;
    this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
    this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
    this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
    this.tableLayoutPanel1.Controls.Add(this.panel, 1, 1);
    this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
    this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
    this.tableLayoutPanel1.Name = "tableLayoutPanel1";
    this.tableLayoutPanel1.RowCount = 3;
    this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
    this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
    this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
    this.tableLayoutPanel1.Size = new System.Drawing.Size(1200, 400);
    this.tableLayoutPanel1.TabIndex = 0;
```

### ステップ2: SenderInfoControl内のレイアウト調整

#### 2.1 SenderInfoControl.csの修正

Loadイベントまたはコンストラクタで、「Chatwork送信用アカウント名」欄の幅を調整します。

```csharp
private void SenderInfoControl_Load(object sender, EventArgs e)
{
    // 既存のコード...
    
    // Chatwork送信用アカウント名欄の幅を調整
    // テスト送信先ルームID欄の右端位置を計算
    int testRoomIdRight = testRoomIDTxtBox.Location.X + testRoomIDTxtBox.Width;
    
    // Chatwork送信用アカウント名欄の幅を調整
    senderNameMemoTxtBox.Width = testRoomIdRight - senderNameMemoTxtBox.Location.X;
}
```

### ステップ3: コントロールの配置最適化

#### 3.1 余白の調整

SenderInfoControl内のコントロールの位置を調整して、余白を最小限にします。

```csharp
// 左側の余白を20pxに設定
lblApiToken.Location = new Point(20, lblApiToken.Location.Y);
apiTokenTxtBox.Location = new Point(20, apiTokenTxtBox.Location.Y);
lblSenderNameMemo.Location = new Point(20, lblSenderNameMemo.Location.Y);
senderNameMemoTxtBox.Location = new Point(20, senderNameMemoTxtBox.Location.Y);
```

## 代替実装方法(コード内での動的調整)

### M_SenderMaster.csでの実装

```csharp
public M_SenderMaster()
{
    InitializeComponent();

    this.ActiveControl = null;

    this.ClientSize = new Size(1200,400);

    // ウィンドウサイズを固定にする(既に設定済み)
    this.FormBorderStyle = FormBorderStyle.FixedSingle;
    
    // 最大化ボタンを無効化
    this.MaximizeBox = false;

    // 現在の画面の中央に表示する
    this.StartPosition = FormStartPosition.CenterScreen;
    
    // パネルに余白を設定
    this.Padding = new Padding(20);

    _senderInfo = new SenderInfoControl();
    _senderInfo.Dock = DockStyle.Fill;
    panel.Controls.Add(_senderInfo);

    this.ActiveControl = panel;
}
```

### SenderInfoControl.csでの実装

```csharp
private void AdjustControlLayouts()
{
    // テスト送信先ルームID欄の右端位置を取得
    int rightMostPosition = testRoomIDTxtBox.Location.X + testRoomIDTxtBox.Width;
    
    // Chatwork送信用アカウント名欄の幅を調整
    senderNameMemoTxtBox.Width = rightMostPosition - senderNameMemoTxtBox.Location.X;
    
    // 左側の余白を調整(20pxに統一)
    int leftMargin = 20;
    lblApiToken.Location = new Point(leftMargin, lblApiToken.Location.Y);
    apiTokenTxtBox.Location = new Point(leftMargin, apiTokenTxtBox.Location.Y);
    lblSenderNameMemo.Location = new Point(leftMargin, lblSenderNameMemo.Location.Y);
    lblSenderNameMemoNote.Location = new Point(leftMargin, lblSenderNameMemoNote.Location.Y);
    senderNameMemoTxtBox.Location = new Point(leftMargin, senderNameMemoTxtBox.Location.Y);
}
```

## テストシナリオ

### シナリオ1: レイアウトの確認
1. 送信者情報マスタ画面を開く
2. 四方の余白が適切(20ピクセル程度)であることを確認
3. 画面内のコントロールが適切に配置されていることを確認

### シナリオ2: テキストボックスの幅確認
1. 「Chatwork送信用アカウント名」欄の右端が「テスト送信者ルームID」欄の右端と揃っていることを確認
2. 各テキストボックスに文字を入力して、適切に表示されることを確認

### シナリオ3: サイズ変更制限の確認
1. ウィンドウの境界をドラッグしてサイズ変更できないことを確認
2. 最大化ボタンが無効化されていることを確認

## 実装の注意点

### 1. アンカー設定の確認
SenderInfoControl内のコントロールのAnchorプロパティが適切に設定されていることを確認します。現在はAnchorStyles.Noneに設定されているため、動的な調整が必要です。

### 2. フォント設定との整合性
FontSettingHelperによるフォント設定が適用された後でも、レイアウトが崩れないことを確認します。

### 3. 最小サイズの考慮
すべてのコントロールが表示できる最小サイズを確保します。

## 実装チェックリスト

### M_SenderMaster
- [ ] Paddingプロパティまたは余白管理の実装
- [ ] MaximizeBoxプロパティをfalseに設定
- [ ] コンパイルエラーがないことを確認

### SenderInfoControl
- [ ] Chatwork送信用アカウント名欄の幅調整
- [ ] 左側余白の調整(20pxに統一)
- [ ] 右側余白の確認と調整

### 動作確認
- [ ] 四方の余白が適切であること
- [ ] テキストボックスの幅が正しく調整されていること
- [ ] サイズ変更ができないこと
- [ ] すべてのコントロールが正しく表示されること

## まとめ

この修正により、送信者情報マスタ画面の余白が最小限に抑えられ、画面スペースが有効活用されます。また、「Chatwork送信用アカウント名」欄が適切な長さに調整され、使いやすさが向上します。