📋 Tera計算2_1メニュー画面.vb

詳細技術仕様書 - メインメニュー画面の構造と動作

📌 概要

Tera計算2_1メニュー画面.vbは、Tera計算2配送センター規模計算システムのメインメニュー画面を実装するVB.NETフォームクラスです。 本画面は、アプリケーションの起動時に表示され、ユーザーが主要な2つの機能(データ加工と規模計算)にアクセスするためのエントリポイントとして機能します。

🎯 主要機能

  • データディレクトリの検証: 起動時に必要なデータフォルダーの存在を確認
  • データ加工画面の起動: 規模計算に必要な基礎データを作成する画面を開く
  • 規模計算画面の起動: 配送センター規模計算のメイン処理画面を開く
  • ライセンス情報の表示: 著作権と有効期限の表示
  • 親メニューへの復帰: Tera計算システム全体のメインメニューへ戻る

✅ ファイル情報

項目 内容
ファイル名 Tera計算2_1メニュー画面.vb
デザイナーファイル Tera計算2_1メニュー画面.Designer.vb (245行)
クラス名 Tera計算2メニュー画面F
継承元 System.Windows.Forms.Form
コード行数 32行 (本体)

🏗️ クラス構造

クラス定義

Public Class Tera計算2メニュー画面F
	Inherits System.Windows.Forms.Form

	' イベントハンドラー:
	' - Tera計算2開始画面F_Load
	' - Tera計算2_データ加工Bt_Click
	' - Tera計算2_規模計算Tb_Click
	' - メニュー画面へBt_Click
End Class

継承階層

Object (System.Object)
MarshalByRefObject
Component
Control
ScrollableControl
ContainerControl
Form
Tera計算2メニュー画面F ⬅ 本クラス

🎨 UI設計

フォームプロパティ

プロパティ 説明
ClientSize 1484 × 861 クライアント領域のサイズ
StartPosition CenterScreen 画面中央に表示
AutoScroll True 必要時に自動スクロール
Text "Tera計算2メニュー画面" ウィンドウタイトル

コントロール階層

Tera計算2メニュー画面F (Form)
TabControl12 (TabControl)
スタート画面Tb (TabPage)
子コントロール:
  • Label317 - タイトルラベル
  • Tera計算2_データ加工Bt - データ加工ボタン
  • Label366, Label1 - 説明ラベル
  • Tera計算2_規模計算Tb - 規模計算ボタン
  • Label2 - 説明ラベル
  • Tera計算2_説明Bt - 説明ボタン
  • メニュー画面へBt - 戻るボタン
  • TabControl1 - 内側のタブコントロール

主要コントロール詳細

📊 TabControl12

TabControl

位置: (3, 6)

サイズ: 1477 × 823

役割: メイン画面のタブコンテナ。「スタート画面Tb」タブを含む。

📄 スタート画面Tb

TabPage

背景色: RGB(192, 255, 192) - 薄緑

サイズ: 1469 × 797

役割: メインメニューのコンテンツを格納するタブページ。

🔤 Label317

Label

フォント: Microsoft Sans Serif, 14.25pt, Bold

テキスト: "Tera計算2_配送センター規模計算 開始画面"

位置: (110, 78)

役割: 画面タイトルの表示。

🔘 Tera計算2_データ加工Bt

Button

背景色: RGB(255, 255, 192) - 薄黄色

フォント: MS UI Gothic, 11.25pt, Bold

テキスト: "Tera計算2_規模計算用データ加工"

位置: (128, 153)

サイズ: 322 × 23

役割: データ作成画面を起動。

🔘 Tera計算2_規模計算Tb

Button

背景色: RGB(255, 255, 192) - 薄黄色

フォント: MS UI Gothic, 11.25pt, Bold

テキスト: "Tera計算2_規模計算"

位置: (128, 247)

サイズ: 322 × 23

役割: 規模計算画面を起動。

🔘 Tera計算2_説明Bt

Button

背景色: RGB(255, 255, 192) - 薄黄色

テキスト: "Tera計算2_規模計算 説明"

位置: (124, 341)

サイズ: 322 × 23

役割: 説明画面を表示(イベントハンドラー未確認)。

🔘 メニュー画面へBt

Button

背景色: RGB(255, 255, 192) - 薄黄色

テキスト: "tera計算 メニュー画面へ"

位置: (128, 435)

サイズ: 322 × 23

役割: フォームを閉じて親メニューに戻る。

📊 TabControl1

TabControl

位置: (579, 18)

サイズ: 873 × 773

タブ: "目隠しTp" (空), "概要Tp" (概要1Rtb含む)

役割: 右側に概要や説明を表示するタブ領域。

📝 概要1Rtb

RichTextBox

フォント: MS UI Gothic, 11.25pt, Bold

位置: (22, 16) (概要Tp内)

サイズ: 816 × 356

テキスト: リソースから読み込み

役割: システムの概要説明を表示。

🔤 著作権L

Label

フォント: MS UI Gothic, 9.75pt, Bold

初期テキスト: "物流技術研究所"

位置: (797, 839) - 画面右下

役割: 著作権と有効期限を表示(Load時に動的設定)。

説明ラベル

ラベル名 テキスト フォント 配置
Label366 "規模計算に必要なデータを作成" MS UI Gothic, 11.25pt (200, 189)
Label1 "Tera計算0でデータを再作成時は必要" Regular (赤色) (203, 212)
Label2 "出荷データから配送センター規模計算をする" MS UI Gothic, 11.25pt (187, 282)

⚡ イベントハンドラー

1. Tera計算2開始画面F_Load

Form.Load 初期化

📄 ソースコード

Private Sub Tera計算2開始画面F_Load(sender As Object, e As EventArgs) Handles MyBase.Load
	ファイル確認()

	' MyData_設定1読込()        ' MyData.xlsx有り
	著作権L.Text = 会社及び有効期限
End Sub

🔍 処理内容

  1. ファイル確認() を呼び出し、データディレクトリの存在を検証
  2. 会社及び有効期限 グローバル変数の値を 著作権L ラベルに設定

注: コメントアウトされた MyData_設定1読込() は、カスタム設定ファイル読み込み機能(現在未使用)。

⚠️ 起動時の重要な依存処理

ファイル確認() はTera計算k1.vbモジュールで定義されており、A:~F:ドライブから Tera計算Data フォルダーを検索します。見つからない場合やフォルダーが複数存在する場合はエラーメッセージを表示し、 アプリケーションを終了します(End ステートメント)。

2. Tera計算2_データ加工Bt_Click

Button.Click 画面遷移

📄 ソースコード

Private Sub Tera計算2_データ加工Bt_Click(sender As Object, e As EventArgs) _
	Handles Tera計算2_データ加工Bt.Click

	' Public Class Tera計算2開始画面Fから Tera計算2データ作成F をモーダルで表示する
	Dim Tera計算2データ作成F As New Tera計算2用データ作成F
	Tera計算2データ作成F.ShowDialog(Me)
	Tera計算2データ作成F.Dispose()
End Sub

🔍 処理内容

  1. Tera計算2用データ作成F フォームの新しいインスタンスを作成
  2. ShowDialog(Me) で現在のフォームを親としてモーダル表示
  3. 子フォームが閉じられた後、Dispose() でリソースを解放

目的: 規模計算に必要な集計データ(T610_全出荷集計など)を作成する画面を開く。

✅ モーダルダイアログの動作

  • 子フォームが開いている間、親フォーム(本メニュー画面)は操作不可
  • 子フォームを閉じると親フォームに制御が戻る
  • ユーザーは子フォームでの操作を完了してから次の操作に進む

3. Tera計算2_規模計算Tb_Click

Button.Click 画面遷移

📄 ソースコード

Private Sub Tera計算2_規模計算Tb_Click(sender As Object, e As EventArgs) _
	Handles Tera計算2_規模計算Tb.Click

	' Public Class Tera計算2開始画面Fから 配送センター規模計算_改4From をモーダルで表示する

	' 配送センター規模計算データ(T610_全出荷集計)が有れば開始

	Dim 配送センター規模計算_改4From As New 配送センター規模計算_改5From
	配送センター規模計算_改4From.ShowDialog(Me)
	配送センター規模計算_改4From.Dispose()
End Sub

🔍 処理内容

  1. 配送センター規模計算_改5From フォームの新しいインスタンスを作成
  2. ShowDialog(Me) でモーダル表示
  3. フォーム終了後、Dispose() でリソースを解放

注: 変数名は 配送センター規模計算_改4From だが、実際のクラスは 配送センター規模計算_改5From(命名の不整合)。

⚠️ 前提条件

コメントによれば、配送センター規模計算データ(T610_全出荷集計)が存在することが前提です。 このデータは「Tera計算2_データ加工」で作成されますが、コード内で明示的な存在確認は行われていません。 規模計算画面内で必要データの有無がチェックされると推測されます。

4. メニュー画面へBt_Click

Button.Click 画面終了

📄 ソースコード

Private Sub メニュー画面へBt_Click(sender As Object, e As EventArgs) _
	Handles メニュー画面へBt.Click

	Me.Close()
End Sub

🔍 処理内容

Me.Close() を呼び出し、現在のフォームを閉じます。 このフォームが親フォームからモーダルまたはモードレスで呼び出されている場合、制御は親フォームに戻ります。

Tera計算2_説明Bt について

⚠️ イベントハンドラー未確認

デザイナーには Tera計算2_説明Bt ボタンが定義されていますが、 本ファイルの32行のコード内には対応するClickイベントハンドラーが見つかりませんでした。 以下の可能性が考えられます:

  • 他のコードファイル(Partial Class)に実装されている
  • 将来の実装のために配置されているが未実装
  • 外部ドキュメント(PDFやヘルプファイル)を開く処理が別途定義されている

🚀 起動処理フロー

アプリケーション起動からメニュー画面表示まで

アプリケーション起動
Tera計算2メニュー画面F.Load イベント発生
ファイル確認() 実行
A:~F: ドライブから "Tera計算Data" フォルダーを検索
フォルダー未検出
エラーメッセージ表示
End (アプリ終了)
複数フォルダー検出
エラーメッセージ表示
End (アプリ終了)
1フォルダー検出 (正常)
パス変数を設定
処理継続
↓ (正常時)
著作権L.Text = 会社及び有効期限
メニュー画面表示完了

ファイル確認() の詳細動作

📄 ソースコード (Tera計算k1.vb より)

Public Sub ファイル確認() Dim chk As Integer = 0 ' フォルダーの存在確認 System.IO.Directory.Exists() If System.IO.Directory.Exists("A:\Tera計算Data") Then Dat保存Path = "A:\Tera計算Data" : chk += 1 If System.IO.Directory.Exists("B:\Tera計算Data") Then Dat保存Path = "B:\Tera計算Data" : chk += 1 If System.IO.Directory.Exists("C:\Tera計算Data") Then Dat保存Path = "C:\Tera計算Data" : chk += 1 If System.IO.Directory.Exists("D:\Tera計算Data") Then Dat保存Path = "D:\Tera計算Data" : chk += 1 If System.IO.Directory.Exists("E:\Tera計算Data") Then Dat保存Path = "E:\Tera計算Data" : chk += 1 If System.IO.Directory.Exists("F:\Tera計算Data") Then Dat保存Path = "F:\Tera計算Data" : chk += 1 If chk = 0 Then MsgBox("dataディレクトリが存在しません,[Tera計算Data]を任意のドライブに複写") End ElseIf chk >= 2 Then MsgBox("dataディレクトリが複数存在します") End End If ' ファイルパス設定 SoftDataPath = Dat保存Path & "\SoftData" MyDB = Dat保存Path & "\Tera計算.accdb" MyTable = "T000_出荷データ" MyExcel = Dat保存Path & "\出荷データ.xlsx" MySheet = "Sheet1" End Sub

🔍 設定されるグローバル変数

変数名 値の例 用途
Dat保存Path "D:\Tera計算Data" データフォルダーのルートパス
SoftDataPath "D:\Tera計算Data\SoftData" ソフトウェアデータディレクトリ
MyDB "D:\Tera計算Data\Tera計算.accdb" Accessデータベースファイルパス
MyTable "T000_出荷データ" メインテーブル名
MyExcel "D:\Tera計算Data\出荷データ.xlsx" 出荷データExcelファイルパス
MySheet "Sheet1" Excelシート名

🔗 依存関係

モジュール依存

Tera計算2メニュー画面F
依存 Tera計算k1.vb - グローバルモジュール
  • ファイル確認() - データディレクトリ検証
  • Dat保存Path - データフォルダーパス
  • SoftDataPath - ソフトデータパス
  • MyDB - データベースファイルパス
  • MyTable - テーブル名
  • MyExcel - Excelファイルパス
  • MySheet - シート名
  • 会社及び有効期限 - ライセンス情報
呼び出し Tera計算2用データ作成F - データ加工画面
  • 規模計算用の集計データを作成
  • T610_全出荷集計テーブルなどを生成
呼び出し 配送センター規模計算_改5From - 規模計算画面
  • 配送センター規模計算のメイン処理
  • パラメーター設定、シミュレーション、結果出力

外部リソース依存

リソースタイプ パス/名称 用途 必須
ディレクトリ [A-F]:\Tera計算Data データフォルダー(排他的に1つのみ) ✅ 必須
Accessデータベース Tera計算.accdb 出荷データ・集計データの格納 ✅ 必須
Excelファイル 出荷データ.xlsx 初期出荷データのインポート元 ❓ データにより
組み込みリソース 概要1Rtb.Text 概要説明テキスト ✅ 必須

System 名前空間依存

  • System.Windows.Forms - Form, TabControl, Button, Label, RichTextBox等
  • System.Drawing - Color, Font, Point, Size等
  • System.ComponentModel - IContainer, ComponentResourceManager等
  • System.IO (間接的) - ファイル確認()内でDirectory.Exists使用

🔄 画面遷移フロー

ユーザー操作による画面遷移

📋 Tera計算2メニュー画面F
(本画面)
Tera計算2_データ加工Bt クリック
📊 Tera計算2用データ作成F
(モーダル表示)
ユーザーがデータ加工処理を実行
画面を閉じる
📋 本画面に戻る
Tera計算2_規模計算Tb クリック
🏢 配送センター規模計算_改5From
(モーダル表示)
ユーザーが規模計算を実行
画面を閉じる
📋 本画面に戻る
メニュー画面へBt クリック
Me.Close()
フォーム閉鎖
🏠 親メニュー画面に戻る
(tera計算メインメニュー)

モーダルダイアログの動作特性

📌 ShowDialog() の特徴

  • ブロッキング動作: 子フォームが閉じられるまで親フォームの次の行が実行されない
  • フォーカス制限: 子フォームが開いている間、親フォームは操作不可
  • 同期処理: 子フォームの処理完了後に親フォームの処理が再開
  • リソース管理: ShowDialog()の後に明示的にDispose()を呼び出してメモリを解放

推奨操作フロー

✅ 標準的な使用手順

  1. アプリケーション起動
    • メニュー画面が自動的に表示される
    • データディレクトリが自動で検証される
  2. 初回またはデータ更新時
    • 「Tera計算2_規模計算用データ加工」ボタンをクリック
    • 出荷データから集計データを作成
  3. 規模計算実行
    • 「Tera計算2_規模計算」ボタンをクリック
    • パラメーター設定とシミュレーションを実行
  4. 終了
    • 「tera計算 メニュー画面へ」ボタンで親メニューに戻る

📝 技術ノート

コーディングスタイル

命名規則の特徴

  • 日本語識別子: クラス名、変数名、メソッド名に日本語を使用
  • サフィックス規則:
    • F - Form(例: Tera計算2メニュー画面F)
    • Bt - Button(例: Tera計算2_データ加工Bt)
    • Tb - TabPage または Button(用途による)
    • L - Label(例: 著作権L)
    • Rtb - RichTextBox(例: 概要1Rtb)
    • Tp - TabPage(例: 概要Tp)
  • コメントスタイル: シングルクォート(')を使用した行コメント

設計上の注意点

⚠️ 潜在的な問題点

  1. ハードコーディングされたドライブレター
    • A:~F:ドライブのみ検索(G:以降やネットワークドライブは非対応)
    • 改善案: アプリケーション設定ファイルまたはレジストリでパスを管理
  2. End ステートメントの使用
    • ファイル確認()内でEndを使用(推奨されない終了方法)
    • リソースの適切な解放が行われない可能性
    • 改善案: Application.Exit()または例外スローを使用
  3. 変数名とクラス名の不整合
    • 変数名: 配送センター規模計算_改4From
    • クラス名: 配送センター規模計算_改5From
    • バージョン管理の混乱を招く可能性
  4. データ存在確認の欠如
    • 規模計算実行時に必要なT610_全出荷集計テーブルの存在確認がない
    • ユーザーエクスペリエンスの低下(エラーが後から発生)
  5. 未実装機能
    • Tera計算2_説明Btのイベントハンドラーが未確認
    • MyData_設定1読込()がコメントアウト(カスタム設定機能未使用)

セキュリティ考慮事項

🔒 セキュリティ上の注意

  • パスインジェクション: ファイルパスは固定文字列で安全だが、将来的に動的パスを扱う場合は検証が必要
  • データベースアクセス: MyDBパスが直接使用される(SQL接続文字列の検証が必要)
  • ライセンス情報: 会社及び有効期限変数がグローバルで平文管理されている

パフォーマンス特性

⚡ パフォーマンス分析

  • 起動時間: ファイル確認()が最大6回のディレクトリ検索を実行(A:~F:)
    • 通常は数ミリ秒だが、ネットワーク環境やアクセス不可ドライブでタイムアウトの可能性
  • メモリ使用: モーダルダイアログは適切にDispose()されており問題なし
  • UI応答性: ShowDialog()によりブロッキング動作するため、子フォームの処理中は親画面が応答しない(設計通り)

メンテナンス性

✅ 良好な設計要素

  • 明確な責任分離: メニュー画面は起動とナビゲーションのみを担当
  • コメントの適切性: コード内に意図が明記されている
  • モジュール化: 共通処理はTera計算k1.vbに集約

デバッグ情報

🐛 デバッグ時の確認ポイント

  1. ファイル確認()の動作確認
    ' Dat保存Pathの値を確認 Debug.WriteLine("Dat保存Path: " & Dat保存Path)
  2. グローバル変数の状態確認
    ' Load時に以下を確認 Debug.WriteLine("MyDB: " & MyDB) Debug.WriteLine("MyExcel: " & MyExcel) Debug.WriteLine("会社及び有効期限: " & 会社及び有効期限)
  3. モーダルダイアログの戻り値
    ' ShowDialogの戻り値を確認(DialogResult) Dim result As DialogResult = Tera計算2データ作成F.ShowDialog(Me) Debug.WriteLine("Dialog Result: " & result.ToString())

拡張性

🔧 将来の拡張候補

  • 設定ファイル管理: コメントアウトされたMyData_設定1読込()の実装
  • ヘルプ機能: Tera計算2_説明Btの実装(PDF表示やヘルプダイアログ)
  • データ検証: 規模計算ボタンクリック時にT610テーブルの存在確認
  • ログ機能: 操作履歴やエラーログの記録
  • 多言語対応: リソースファイルを使用した国際化対応
  • テーマ切り替え: UIカラースキームのカスタマイズ

関連ファイル

ファイル名 種類 関連性
Tera計算k1.vb モジュール グローバル変数・共通関数を提供(ファイル確認()等)
Tera計算2_2データ作成.vb フォーム Tera計算2用データ作成F の実装ファイル
Tera計算2_3配送センタ規模計算.vb フォーム 配送センター規模計算_改5From の実装ファイル
Tera計算.accdb データベース 出荷データ・集計データを格納するAccessデータベース
出荷データ.xlsx Excel 初期出荷データのインポート元ファイル

📊 まとめ

クラスの役割

Tera計算2メニュー画面Fは、Tera計算2システムのエントリポイントとして機能し、 データ加工画面と規模計算画面へのナビゲーション機能を提供します。 起動時にデータディレクトリの検証を実行し、システムの前提条件を確保します。

設計思想

  • シンプルな画面構成: 初心者にも分かりやすいメニュー形式
  • 段階的ワークフロー: データ加工→規模計算の順序を視覚的に提示
  • モーダルダイアログ: 各機能を独立した画面として実行
  • 集約された初期化: 共通処理はグローバルモジュールで一元管理

使用上の注意

  • データディレクトリ(Tera計算Data)はA:~F:ドライブのいずれか1つのみに配置
  • 規模計算を実行する前にデータ加工処理を完了させる必要がある
  • モーダルダイアログ使用時は、子画面の処理完了まで待つ設計