生成AIを活用した設計書のブレークダウン
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>LLMのユースケース#xdb8bb0e]]
--[[生成AIを活用したプログラミング]]
--[[生成AIを活用したシステム開発]]
--生成AIを活用した設計書のブレークダウン
*目次 [#g61fa808]
#contents
*概要 [#q09851f1]
ココでは、SQL Server付属のNorthWind DBをベースに要件定義 ...
※ なぜ、LLMに、こんなことができるのか?については[[コチラ...
**全体的な使用感 [#q18ea7f3]
端的に、意図しない設計ディシジョンの先に進むことが問題
-Claude Sonnet 4.6(フリープラン)のChatUIで「履歴をコン...
-Claude は、DBにNOTNULLがあるので受注登録の下書きが出来な...
-概要の設計情報から詳細に渡る設計ディシジョンは多岐に渡る...
--最近のコーディング・エージェントは仕様確認をしてくるケ...
--完全に手動で行うならば、チャットで仕様確認が発生する可...
-そう考えると、ディシジョンが少ないユースケースでは、推論...
--プログラミングでは、言語に依ってはディシジョンが多いが...
--設計のブレークダウンは、エージェントの仕様確認が完全で...
**生成書類評価後の気付き [#a0e04dba]
簡単に使った感じでは「たたき台作成」程度の使用感
-出力には誤りもあるので人手によって修正が必要(後工程で顕...
-段階的詳細化のため、都度のプロンプト追加は必要(DOA的にD...
-出力体裁を揃えるために
--定義書テンプレートなどが必要
-記載レベルを揃えるために
--記載ルールの整備、用語集の作成、共通項の抽出などが必要
---事前条件:「DBに接続可能であること。」「入力情報が取得...
---エラーハンドリング:業務続行可能/不可能、業務/システム...
--記載レベルを合わせるには関連定義書も入力した方が良いかも~
(例えば「x選択ドロップダウン変更」イベント定義など)
-以下は生成AIの設計を修正したポイント。
--初回生成は1注文・1商品だった(n商品の明細化)。
--削除ボタンが編集モードにも実装されていた(不要)。
--ステータス管理で「キャンセル」の実装方法
**生成AI自身による見解 [#g444866c]
-LLMは「仕様未確定部分を勝手に補完」する
-設計は「探索問題」であり暴走し易い(「収束問題」は得意)
-「LLM = 文書生成器」ではなく「構造補完・ドラフト生成器」
-ドメイン知識不足、コンテキスト不足、業務ルール未定義
***LLM活用指針 [#k7c75abd]
|項目|方針|h
|要件定義|△(レビュー用途)|
|基本設計|△(叩き台の作成)|
|詳細設計|◯(限定的な使用)|
|実装|◎(行間のない詳細設計通りに動作)|
|設計ディシジョン|×(人間主導)→ △(AIエージェントによる...
***得手不得手(例) [#ba648636]
-「低自由度ドメイン」は得意
--CRUD
--定型帳票
--APIラッパー
-「高自由度ドメイン」は苦手
--業務設計
--状態遷移
--権限設計
*詳細 [#le458761]
-プロンプトヘッダは以下
(以下は)SQLServer付属のNorthWind DBを使用したサンプル...
-コレに任意の指示を加えて実行
-途中からDDLから生成したテーブル定義を読み込ませた(段階...
**要件定義 [#e315b2fc]
SQL Server付属のNorthWind DBを使用したサンプルアプリの機...
***モジュール一覧 [#pa1125a8]
|モジュール|主要テーブル|h
|受注管理|Orders / Order Details|
|顧客管理|Customers / Contacts|
|商品管理|Products / Categories|
|仕入先管理|Suppliers|
|担当者管理|Employees|
|配送管理|Shippers|
|売上分析|Sales Dashboard|
|在庫分析|Inventory Alerts|
|パフォーマンス分析|Employee Performance|
***各モジュールの詳細 [#te1b2c97]
|受注管理(Orders / Order Details&br;・受注一覧・検索・絞...
|仕入先管理(Suppliers&br;・仕入先一覧・国別フィルタ&br;...
|売上分析(Sales Dashboard&br;・月次・四半期・年次売上推...
**機能要件・画面仕様 [#j80a4980]
受注管理にフォーカス
-機能一覧・画面遷移
以下はSQLServer付属のNorthWind DBを使用したサンプルアプ...
{モジュール一覧}
このうち、受注管理の機能一覧・画面遷移を教えてください。
-イベント一覧
(前述のチャットの会話履歴をそのまま利用し)画面のイベン...
-画面項目一覧
以下はSQLServer付属のNorthWind DBを使用したサンプルアプ...
{機能一覧・画面遷移、イベント一覧}
各画面の画面項目一覧を作成してください。
***機能一覧 [#vff7bde5]
-受注一覧表示
--受注の一覧を表示し、各受注の詳細情報を確認できる。
--検索機能(顧客名、受注日、受注ステータスなど)
--ページネーション機能
-受注詳細表示
--選択した受注の詳細情報を表示。
--受注内容(商品、数量、単価、合計金額など)
--顧客情報、配送情報の表示
-受注新規登録
--新しい受注を作成するためのフォーム。
--顧客選択、商品選択、数量入力、配送情報などの入力。
-受注の編集
--既存の受注情報を編集するためのフォーム。
--受注内容の変更、顧客情報の変更、配送情報の変更。
-受注の削除
--受注を削除する機能。
--削除確認ダイアログ。
--受注ステータスの更新
-受注ステータス更新:処理中、発送済み(出荷日が使えるがキ...
-受注の印刷:受注内容を印刷するための機能。
***画面遷移 [#ze7afacf]
-受注一覧画面
--受注新規登録:受注詳細画面(登録モード)
--受注詳細:受注詳細画面(照会モード)
-受注詳細画面
--受注編集:受注詳細画面(編集モード)
--受注削除:確認ダイアログ(削除確認)
--受注一覧に戻る:受注一覧画面
--受注印刷:印刷プレビュー画面
-受注詳細画面(登録モード)
--受注作成:受注一覧画面
--キャンセル:受注一覧画面
-受注詳細画面(編集モード)
--受注更新:受注詳細画面
--キャンセル:受注詳細画面
**画面項目とイベント一覧 [#rb6d755e]
***受注一覧画面 [#if70856c]
-画面項目
--検索ボックス
---顧客名
---受注日
---受注ステータス
--受注一覧テーブル
---受注ID
---顧客名
---受注日
---必要日
---出荷日
---合計金額
---詳細ボタン
--ページネーション
---前のページボタン
---次のページボタン
---現在のページ番号
-イベント一覧
--ページ読み込み:受注データを取得し、一覧を表示
--検索ボックス入力:入力内容に基づいて受注一覧をフィルタ...
--ページネーションボタンクリック:次のページまたは前のペ...
--受注行クリック:クリックした受注を受注詳細画面(照会モ...
--登録ボタンクリック:受注詳細画面(登録モード)に遷移し...
***受注詳細画面(照会モード) [#je3461f8]
-画面項目
--受注情報
---受注ID
---顧客情報(顧客名、電話番号、住所)
---従業員情報(従業員名、職位、内線番号)
---受注日
---必要日
---出荷日
---合計金額
--受注明細情報
---商品情報(商品名、価格=単価-割引、在庫)
---数量
---合計金額(割引適用後)
--配送情報
---配送業者情報(社名、電話番号)
---配送先名
---配送先住所
---配送先市
---配送先地域
---配送先郵便番号
---配送先国
---運送料(誰?)
--アクションボタン
---編集ボタン
---削除ボタン
---印刷ボタン
---(一覧に)戻るボタン
-イベント一覧
--ページ読み込み:選択された受注の詳細情報を取得し表示
--編集ボタンクリック:受注編集画面に遷移
--削除ボタンクリック:削除確認ダイアログを表示
--印刷ボタンクリック:印刷プレビュー画面に遷移
--戻るボタンクリック:受注一覧画面に遷移する。
***受注詳細画面(登録モード) [#t54d0265]
※ 基本的に照会モードと同じだが、顧客名、従業員名、商品名...
-画面項目
--受注情報
--受注明細情報
--配送情報
--アクションボタン
---明細追加ボタン
---明細削除ボタン
---受注作成ボタン
---キャンセルボタン
-イベント一覧
--ページ読み込み:顧客、従業員、商品、配送業者、選択ドロ...
--顧客選択ドロップダウン変更:選択された顧客に基づいて、...
--従業員選択ドロップダウン変更:選択された従業員に基づい...
--明細追加ボタンクリック:明細(商品選択ドロップダウン、...
--明細削除ボタンクリック:明細を削除
--商品選択ドロップダウン変更:選択された商品に基づいて、...
--商品数量入力:価格と入力された数量に基づいて合計金額を...
--配送業者選択ドロップダウン変更:選択された配送業者に基...
--作成ボタンクリック:入力内容を検証し、受注、受注明細を...
--キャンセルボタンクリック:受注一覧画面に遷移
***受注詳細画面(編集モード) [#b4987707]
※ 基本的に照会モードと同じだが、顧客名、商品名は、選択ド...
-画面項目
--受注情報
--受注明細情報
--配送情報
--アクションボタン
---明細追加ボタン
---明細削除ボタン
---更新ボタン
---キャンセルボタン
-イベント一覧
--ページ読み込み:
---編集対象の受注情報を取得し表示
---顧客、従業員、商品、配送業者、選択ドロップダウンドロッ...
--顧客選択ドロップダウン変更:選択された顧客に基づいて、...
--従業員選択ドロップダウン変更:選択された従業員に基づい...
--明細追加ボタンクリック:明細(商品選択ドロップダウン、...
--明細削除ボタンクリック:明細を削除
--商品選択ドロップダウン変更:選択された商品に基づいて、...
--商品数量変更:価格と入力された数量に基づいて合計金額を...
--配送業者選択ドロップダウン変更:選択された配送業者に基...
--更新ボタンクリック:入力内容を検証し、受注、受注明細を...
--キャンセルボタンクリック:受注詳細画面(照会モード)に...
***印刷プレビュー画面 [#s0911ccc]
-画面項目
--受注情報
--受注明細情報
--配送情報
-アクションボタン
--印刷ボタン
--キャンセルボタン
**テーブル定義書 [#ya93c88e]
instnwnd.sqlのCREATE TABLEパートを使用して作成。
https://raw.githubusercontent.com/microsoft/sql-server-sa...
***Orders テーブル [#yb30c595]
注文の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|OrderID|注文の一意識別子|整数|主キー|自動増分|
|CustomerID|顧客ID|固定長文字列|外部キー|任意|
|EmployeeID|従業員ID|整数|外部キー|任意|
|OrderDate|注文日|日時||任意|
|RequiredDate|必要日|日時||任意|
|ShippedDate|出荷日|日時||任意|
|ShipVia|配送業者ID|整数|外部キー|任意|
|Freight|運送料|通貨||デフォルト0|
|ShipName|配送先名|文字列||任意|
|ShipAddress|配送先住所|文字列||任意|
|ShipCity|配送先市|文字列||任意|
|ShipRegion|配送先地域|文字列||任意|
|ShipPostalCode|配送先郵便番号|文字列||任意|
|ShipCountry|配送先国|文字列||任意|
***Order Details テーブル [#c6a9c736]
説明: 注文の詳細情報を格納するテーブル。
|列名|解説|型|キー|他|h
|OrderID|注文ID|整数|主キー1、外部キー|必須|
|ProductID|商品ID|整数|主キー2、外部キー|必須|
|UnitPrice|単価|通貨||必須、デフォルト0|
|Quantity|数量|小整数||必須、デフォルト1|
|Discount|割引|実数||必須、デフォルト0|
***Products テーブル [#xdcf3af1]
説明: 商品の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|ProductID|商品の一意識別子|整数|主キー|自動増分|
|ProductName|商品名|文字列||必須|
|SupplierID|供給業者ID|整数|外部キー|任意|
|CategoryID|カテゴリID|整数|外部キー|任意|
|QuantityPerUnit|単位あたりの数量|文字列||任意|
|UnitPrice|単価|通貨||デフォルト0|
|UnitsInStock|在庫数量|小整数||デフォルト0|
|UnitsOnOrder|注文中数量|小整数||デフォルト0|
|ReorderLevel|再注文レベル|小整数||デフォルト0|
|Discontinued|廃止フラグ|ビット||必須、デフォルト0|
***Customers テーブル [#e7749838]
説明: 顧客の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|CustomerID|顧客の一意識別子|固定長文字列|主キー|必須|
|CompanyName|会社名|文字列||必須|
|ContactName|担当者名|文字列||任意|
|ContactTitle|担当者の職位|文字列||任意|
|Address|住所|文字列||任意|
|City|市|文字列||任意|
|Region|地域|文字列||任意|
|PostalCode|郵便番号|文字列||任意|
|Country|国名|文字列||任意|
|Phone|電話番号|文字列||任意|
|Fax|FAX番号|文字列||任意|
***Categories テーブル [#cf8a7f74]
説明: 商品カテゴリの情報を格納するテーブル。
|列名|解説|型|キー|他|h
|CategoryID|カテゴリの一意識別子|整数|主キー|自動増分|
|CategoryName|カテゴリ名|文字列||必須|
|Description|説明|テキスト||任意|
|Picture|カテゴリの画像|画像||任意|
***Suppliers テーブル [#r145e7cc]
説明: 供給業者の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|SupplierID|供給業者の一意識別子|整数|主キー|自動増分|
|CompanyName|会社名|文字列||必須|
|ContactName|担当者名|文字列||任意|
|ContactTitle|担当者の職位|文字列||任意|
|Address|住所|文字列||任意|
|City|市|文字列||任意|
|Region|地域|文字列||任意|
|PostalCode|郵便番号|文字列||任意|
|Country|国名|文字列||任意|
|Phone|電話番号|文字列||任意|
|Fax|FAX番号|文字列||任意|
|HomePage|ホームページ|テキスト||任意|
***Shippers テーブル [#b2482377]
説明: 配送業者の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|ShipperID|配送業者の一意識別子|整数|主キー|自動増分|
|CompanyName|会社名|文字列||必須|
|Phone|電話番号|文字列||任意|
***Employees テーブル [#dd959f8d]
説明: 従業員の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|EmployeeID|従業員の一意識別子|整数|主キー|自動増分|
|LastName|従業員の姓|文字列||必須|
|FirstName|従業員の名|文字列||必須|
|Title|職位|文字列||任意|
|TitleOfCourtesy|敬称|文字列||任意|
|BirthDate|生年月日|日時||任意|
|HireDate|雇用日|日時||任意|
|Address|住所|文字列||任意|
|City|市|文字列||任意|
|Region|地域|文字列||任意|
|PostalCode|郵便番号|文字列||任意|
|Country|国|文字列||任意|
|HomePhone|自宅電話番号|文字列||任意|
|Extension|内線番号|文字列||任意|
|Photo|写真|画像||任意|
|Notes|メモ|テキスト||任意|
|ReportsTo|上司の従業員ID|整数|外部キー|任意|
|PhotoPath|写真のパス|文字列||任意|
**イベント詳細定義書 [#h63e90da]
-受注詳細画面(編集モード)にフォーカス
以下はSQLServer付属のNorthWind DBを使用したサンプルアプ...
{画面項目定義・イベント一覧}
以下のイベント詳細定義書を作成してください(概要、トリガ...
{・イベント名:イベント一覧に記載のイベント名}
{・イベント概要:イベント一覧に記載の概要}
***ページ読み込み [#if7b4349]
概要:編集対象の受注情報を取得し、フォームに表示
-概要
--編集対象の受注情報を取得し、フォームに表示。
--このイベントは、受注詳細画面(編集モード)が初めて表示...
--受注IDに基づいてDBから受注情報を取得し、各フォーム項目...
-トリガー条件
--ユーザーが受注詳細画面(編集モード)にアクセスした際に...
-事前条件
--NorthWind DBに接続可能であること。
--受注IDが取得済みであること。
-入力:受注ID
-出力:フォームへの受注データ表示
--受注情報
--受注明細情報
--配送情報
-処理内容
--受注情報の取得:受注IDに基づいて受注情報、受注明細情報...
--合計金額の計算:受注合計金額、明細合計金額(割引適用後...
-検証内容
--受注詳細画面(編集モード)が正しく表示されること。
--受注IDに基づく受注情報、受注明細情報が各フォーム項目に...
--受注合計金額、明細合計金額(割引適用後)が正しく計算さ...
-エラーハンドリング
--DB接続エラーが発生した場合:エラーメッセージを表示し、...
--受注IDが無効または存在しない場合:エラーメッセージを表...
-依存関係
--顧客、商品のデータは、別のイベントによって更新される可...
***選択ドロップダウン変更 [#r84c5f2a]
概要:選択された顧客、従業員、商品、配送業者IDに基づいて...
-概要
--選択された顧客、従業員、商品、配送業者IDに基づいて、関...
--このイベントは、選択ドロップダウンの選択が変更された際...
-トリガー条件
--選択ドロップダウンの選択が変更されたとき。
-入力
--選択ドロップダウンの選択値(ID)
-出力
--フォームに表示される情報
-処理内容
--選択ドロップダウンから選択されたIDを取得
--IDを使用して、DBから情報を取得
--取得した情報を画面の対応するフィールドに表示
-検証内容
--入力に対応した出力であるか確認する。
-エラーハンドリング
--DB接続エラーが発生した場合:エラーメッセージを表示
--IDが無効または存在しない場合:エラーメッセージを表示し...
-依存関係
--情報を取得するためのDB接続が必要。
--選択ドロップダウンにIDリストが事前にロードされているこ...
***数量入力変更 [#i5e848f1]
概要:入力された数量に基づいて合計金額を計算し表示
-概要:受注明細に入力された数量に基づいて合計金額を計算し...
-トリガー条件:ユーザーが数量入力フィールドに新しい値を入...
-事前条件
--受注詳細画面(編集モード)が表示されていること。
--商品が選択されていること(商品選択ドロップダウンで選択...
--単価が取得されていること(選択された商品の単価が表示さ...
-入力:数量入力フィールドに入力された数量(整数)。
-出力:受注合計金額、明細合計金額(割引適用後)(通貨形式...
-処理内容
--数量入力フィールドの値を取得
--選択された商品の単価を取得
--合計金額を計算する。
---合計金額 = 単価 × 数量
---明細合計金額(割引適用後)を表示
---明細を合計した受注合計金額を表示
-検証内容
--入力された数量が正の整数であることを確認
--数量が在庫数量を超えていないことを確認
-エラーハンドリング
--単価が取得できない場合、エラーメッセージを表示
--数量が無効な場合(負の数や非整数の場合)、エラーメッセ...
--数量が在庫数量を超える場合、在庫が不足している旨のメッ...
-依存関係
--商品選択ドロップダウンの選択状態(選択された商品が必要...
--単価の取得(選択された商品の情報が必要)。
--在庫情報(選択された商品の在庫数量が必要)。
***受注更新ボタンクリック [#nb92d92b]
概要:入力内容を検証し、受注情報を更新
-概要:入力内容を検証し、受注情報を更新
-トリガー条件:ユーザーが「受注更新ボタン」をクリック
-事前条件:
--受注詳細画面(編集モード)に更新情報が正しくフォームに...
--必要なドロップダウン(顧客選択、商品選択)が正しく初期...
-入力
-出力
--受注情報、受注明細がDBに保存される。
--更新成功時のメッセージの表示。
--更新失敗時のエラーメッセージの表示。
-処理内容
--受注情報、受注明細の入力内容の検証を行う。
--顧客選択が行われているか。
--商品選択が行われているか。
--数量が正の整数であるか。
--数量が在庫数量を超えていないか。
--配送情報が入力されているか。
--検証が成功した場合、受注情報をOrders、受注明細情報をOrd...
--更新処理が成功した場合、成功メッセージを表示する。
--更新処理が失敗した場合、エラーメッセージを表示する。
-検証内容
--各入力フィールドが適切に入力されているかを確認
--数量が在庫数を超えていないかを確認
-エラーハンドリング
--入力検証に失敗した場合、具体的なエラーメッセージを表示...
--DB更新処理に失敗した場合、エラーログを記録し、ユーザー...
-依存関係
--顧客・商品選択ドロップダウンの初期化が完了していること。
--在庫情報が最新であること(在庫情報は更新ロックでは同時...
***キャンセルボタンクリック [#s60f118e]
概要:受注詳細画面に遷移
*参考 [#uab7f0e2]
**[[ドキュメント標準のポイント>https://opentouryo.osscons...
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>LLMのユースケース#xdb8bb0e]]
--[[生成AIを活用したプログラミング]]
--[[生成AIを活用したシステム開発]]
--生成AIを活用した設計書のブレークダウン
*目次 [#g61fa808]
#contents
*概要 [#q09851f1]
ココでは、SQL Server付属のNorthWind DBをベースに要件定義 ...
※ なぜ、LLMに、こんなことができるのか?については[[コチラ...
**全体的な使用感 [#q18ea7f3]
端的に、意図しない設計ディシジョンの先に進むことが問題
-Claude Sonnet 4.6(フリープラン)のChatUIで「履歴をコン...
-Claude は、DBにNOTNULLがあるので受注登録の下書きが出来な...
-概要の設計情報から詳細に渡る設計ディシジョンは多岐に渡る...
--最近のコーディング・エージェントは仕様確認をしてくるケ...
--完全に手動で行うならば、チャットで仕様確認が発生する可...
-そう考えると、ディシジョンが少ないユースケースでは、推論...
--プログラミングでは、言語に依ってはディシジョンが多いが...
--設計のブレークダウンは、エージェントの仕様確認が完全で...
**生成書類評価後の気付き [#a0e04dba]
簡単に使った感じでは「たたき台作成」程度の使用感
-出力には誤りもあるので人手によって修正が必要(後工程で顕...
-段階的詳細化のため、都度のプロンプト追加は必要(DOA的にD...
-出力体裁を揃えるために
--定義書テンプレートなどが必要
-記載レベルを揃えるために
--記載ルールの整備、用語集の作成、共通項の抽出などが必要
---事前条件:「DBに接続可能であること。」「入力情報が取得...
---エラーハンドリング:業務続行可能/不可能、業務/システム...
--記載レベルを合わせるには関連定義書も入力した方が良いかも~
(例えば「x選択ドロップダウン変更」イベント定義など)
-以下は生成AIの設計を修正したポイント。
--初回生成は1注文・1商品だった(n商品の明細化)。
--削除ボタンが編集モードにも実装されていた(不要)。
--ステータス管理で「キャンセル」の実装方法
**生成AI自身による見解 [#g444866c]
-LLMは「仕様未確定部分を勝手に補完」する
-設計は「探索問題」であり暴走し易い(「収束問題」は得意)
-「LLM = 文書生成器」ではなく「構造補完・ドラフト生成器」
-ドメイン知識不足、コンテキスト不足、業務ルール未定義
***LLM活用指針 [#k7c75abd]
|項目|方針|h
|要件定義|△(レビュー用途)|
|基本設計|△(叩き台の作成)|
|詳細設計|◯(限定的な使用)|
|実装|◎(行間のない詳細設計通りに動作)|
|設計ディシジョン|×(人間主導)→ △(AIエージェントによる...
***得手不得手(例) [#ba648636]
-「低自由度ドメイン」は得意
--CRUD
--定型帳票
--APIラッパー
-「高自由度ドメイン」は苦手
--業務設計
--状態遷移
--権限設計
*詳細 [#le458761]
-プロンプトヘッダは以下
(以下は)SQLServer付属のNorthWind DBを使用したサンプル...
-コレに任意の指示を加えて実行
-途中からDDLから生成したテーブル定義を読み込ませた(段階...
**要件定義 [#e315b2fc]
SQL Server付属のNorthWind DBを使用したサンプルアプリの機...
***モジュール一覧 [#pa1125a8]
|モジュール|主要テーブル|h
|受注管理|Orders / Order Details|
|顧客管理|Customers / Contacts|
|商品管理|Products / Categories|
|仕入先管理|Suppliers|
|担当者管理|Employees|
|配送管理|Shippers|
|売上分析|Sales Dashboard|
|在庫分析|Inventory Alerts|
|パフォーマンス分析|Employee Performance|
***各モジュールの詳細 [#te1b2c97]
|受注管理(Orders / Order Details&br;・受注一覧・検索・絞...
|仕入先管理(Suppliers&br;・仕入先一覧・国別フィルタ&br;...
|売上分析(Sales Dashboard&br;・月次・四半期・年次売上推...
**機能要件・画面仕様 [#j80a4980]
受注管理にフォーカス
-機能一覧・画面遷移
以下はSQLServer付属のNorthWind DBを使用したサンプルアプ...
{モジュール一覧}
このうち、受注管理の機能一覧・画面遷移を教えてください。
-イベント一覧
(前述のチャットの会話履歴をそのまま利用し)画面のイベン...
-画面項目一覧
以下はSQLServer付属のNorthWind DBを使用したサンプルアプ...
{機能一覧・画面遷移、イベント一覧}
各画面の画面項目一覧を作成してください。
***機能一覧 [#vff7bde5]
-受注一覧表示
--受注の一覧を表示し、各受注の詳細情報を確認できる。
--検索機能(顧客名、受注日、受注ステータスなど)
--ページネーション機能
-受注詳細表示
--選択した受注の詳細情報を表示。
--受注内容(商品、数量、単価、合計金額など)
--顧客情報、配送情報の表示
-受注新規登録
--新しい受注を作成するためのフォーム。
--顧客選択、商品選択、数量入力、配送情報などの入力。
-受注の編集
--既存の受注情報を編集するためのフォーム。
--受注内容の変更、顧客情報の変更、配送情報の変更。
-受注の削除
--受注を削除する機能。
--削除確認ダイアログ。
--受注ステータスの更新
-受注ステータス更新:処理中、発送済み(出荷日が使えるがキ...
-受注の印刷:受注内容を印刷するための機能。
***画面遷移 [#ze7afacf]
-受注一覧画面
--受注新規登録:受注詳細画面(登録モード)
--受注詳細:受注詳細画面(照会モード)
-受注詳細画面
--受注編集:受注詳細画面(編集モード)
--受注削除:確認ダイアログ(削除確認)
--受注一覧に戻る:受注一覧画面
--受注印刷:印刷プレビュー画面
-受注詳細画面(登録モード)
--受注作成:受注一覧画面
--キャンセル:受注一覧画面
-受注詳細画面(編集モード)
--受注更新:受注詳細画面
--キャンセル:受注詳細画面
**画面項目とイベント一覧 [#rb6d755e]
***受注一覧画面 [#if70856c]
-画面項目
--検索ボックス
---顧客名
---受注日
---受注ステータス
--受注一覧テーブル
---受注ID
---顧客名
---受注日
---必要日
---出荷日
---合計金額
---詳細ボタン
--ページネーション
---前のページボタン
---次のページボタン
---現在のページ番号
-イベント一覧
--ページ読み込み:受注データを取得し、一覧を表示
--検索ボックス入力:入力内容に基づいて受注一覧をフィルタ...
--ページネーションボタンクリック:次のページまたは前のペ...
--受注行クリック:クリックした受注を受注詳細画面(照会モ...
--登録ボタンクリック:受注詳細画面(登録モード)に遷移し...
***受注詳細画面(照会モード) [#je3461f8]
-画面項目
--受注情報
---受注ID
---顧客情報(顧客名、電話番号、住所)
---従業員情報(従業員名、職位、内線番号)
---受注日
---必要日
---出荷日
---合計金額
--受注明細情報
---商品情報(商品名、価格=単価-割引、在庫)
---数量
---合計金額(割引適用後)
--配送情報
---配送業者情報(社名、電話番号)
---配送先名
---配送先住所
---配送先市
---配送先地域
---配送先郵便番号
---配送先国
---運送料(誰?)
--アクションボタン
---編集ボタン
---削除ボタン
---印刷ボタン
---(一覧に)戻るボタン
-イベント一覧
--ページ読み込み:選択された受注の詳細情報を取得し表示
--編集ボタンクリック:受注編集画面に遷移
--削除ボタンクリック:削除確認ダイアログを表示
--印刷ボタンクリック:印刷プレビュー画面に遷移
--戻るボタンクリック:受注一覧画面に遷移する。
***受注詳細画面(登録モード) [#t54d0265]
※ 基本的に照会モードと同じだが、顧客名、従業員名、商品名...
-画面項目
--受注情報
--受注明細情報
--配送情報
--アクションボタン
---明細追加ボタン
---明細削除ボタン
---受注作成ボタン
---キャンセルボタン
-イベント一覧
--ページ読み込み:顧客、従業員、商品、配送業者、選択ドロ...
--顧客選択ドロップダウン変更:選択された顧客に基づいて、...
--従業員選択ドロップダウン変更:選択された従業員に基づい...
--明細追加ボタンクリック:明細(商品選択ドロップダウン、...
--明細削除ボタンクリック:明細を削除
--商品選択ドロップダウン変更:選択された商品に基づいて、...
--商品数量入力:価格と入力された数量に基づいて合計金額を...
--配送業者選択ドロップダウン変更:選択された配送業者に基...
--作成ボタンクリック:入力内容を検証し、受注、受注明細を...
--キャンセルボタンクリック:受注一覧画面に遷移
***受注詳細画面(編集モード) [#b4987707]
※ 基本的に照会モードと同じだが、顧客名、商品名は、選択ド...
-画面項目
--受注情報
--受注明細情報
--配送情報
--アクションボタン
---明細追加ボタン
---明細削除ボタン
---更新ボタン
---キャンセルボタン
-イベント一覧
--ページ読み込み:
---編集対象の受注情報を取得し表示
---顧客、従業員、商品、配送業者、選択ドロップダウンドロッ...
--顧客選択ドロップダウン変更:選択された顧客に基づいて、...
--従業員選択ドロップダウン変更:選択された従業員に基づい...
--明細追加ボタンクリック:明細(商品選択ドロップダウン、...
--明細削除ボタンクリック:明細を削除
--商品選択ドロップダウン変更:選択された商品に基づいて、...
--商品数量変更:価格と入力された数量に基づいて合計金額を...
--配送業者選択ドロップダウン変更:選択された配送業者に基...
--更新ボタンクリック:入力内容を検証し、受注、受注明細を...
--キャンセルボタンクリック:受注詳細画面(照会モード)に...
***印刷プレビュー画面 [#s0911ccc]
-画面項目
--受注情報
--受注明細情報
--配送情報
-アクションボタン
--印刷ボタン
--キャンセルボタン
**テーブル定義書 [#ya93c88e]
instnwnd.sqlのCREATE TABLEパートを使用して作成。
https://raw.githubusercontent.com/microsoft/sql-server-sa...
***Orders テーブル [#yb30c595]
注文の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|OrderID|注文の一意識別子|整数|主キー|自動増分|
|CustomerID|顧客ID|固定長文字列|外部キー|任意|
|EmployeeID|従業員ID|整数|外部キー|任意|
|OrderDate|注文日|日時||任意|
|RequiredDate|必要日|日時||任意|
|ShippedDate|出荷日|日時||任意|
|ShipVia|配送業者ID|整数|外部キー|任意|
|Freight|運送料|通貨||デフォルト0|
|ShipName|配送先名|文字列||任意|
|ShipAddress|配送先住所|文字列||任意|
|ShipCity|配送先市|文字列||任意|
|ShipRegion|配送先地域|文字列||任意|
|ShipPostalCode|配送先郵便番号|文字列||任意|
|ShipCountry|配送先国|文字列||任意|
***Order Details テーブル [#c6a9c736]
説明: 注文の詳細情報を格納するテーブル。
|列名|解説|型|キー|他|h
|OrderID|注文ID|整数|主キー1、外部キー|必須|
|ProductID|商品ID|整数|主キー2、外部キー|必須|
|UnitPrice|単価|通貨||必須、デフォルト0|
|Quantity|数量|小整数||必須、デフォルト1|
|Discount|割引|実数||必須、デフォルト0|
***Products テーブル [#xdcf3af1]
説明: 商品の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|ProductID|商品の一意識別子|整数|主キー|自動増分|
|ProductName|商品名|文字列||必須|
|SupplierID|供給業者ID|整数|外部キー|任意|
|CategoryID|カテゴリID|整数|外部キー|任意|
|QuantityPerUnit|単位あたりの数量|文字列||任意|
|UnitPrice|単価|通貨||デフォルト0|
|UnitsInStock|在庫数量|小整数||デフォルト0|
|UnitsOnOrder|注文中数量|小整数||デフォルト0|
|ReorderLevel|再注文レベル|小整数||デフォルト0|
|Discontinued|廃止フラグ|ビット||必須、デフォルト0|
***Customers テーブル [#e7749838]
説明: 顧客の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|CustomerID|顧客の一意識別子|固定長文字列|主キー|必須|
|CompanyName|会社名|文字列||必須|
|ContactName|担当者名|文字列||任意|
|ContactTitle|担当者の職位|文字列||任意|
|Address|住所|文字列||任意|
|City|市|文字列||任意|
|Region|地域|文字列||任意|
|PostalCode|郵便番号|文字列||任意|
|Country|国名|文字列||任意|
|Phone|電話番号|文字列||任意|
|Fax|FAX番号|文字列||任意|
***Categories テーブル [#cf8a7f74]
説明: 商品カテゴリの情報を格納するテーブル。
|列名|解説|型|キー|他|h
|CategoryID|カテゴリの一意識別子|整数|主キー|自動増分|
|CategoryName|カテゴリ名|文字列||必須|
|Description|説明|テキスト||任意|
|Picture|カテゴリの画像|画像||任意|
***Suppliers テーブル [#r145e7cc]
説明: 供給業者の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|SupplierID|供給業者の一意識別子|整数|主キー|自動増分|
|CompanyName|会社名|文字列||必須|
|ContactName|担当者名|文字列||任意|
|ContactTitle|担当者の職位|文字列||任意|
|Address|住所|文字列||任意|
|City|市|文字列||任意|
|Region|地域|文字列||任意|
|PostalCode|郵便番号|文字列||任意|
|Country|国名|文字列||任意|
|Phone|電話番号|文字列||任意|
|Fax|FAX番号|文字列||任意|
|HomePage|ホームページ|テキスト||任意|
***Shippers テーブル [#b2482377]
説明: 配送業者の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|ShipperID|配送業者の一意識別子|整数|主キー|自動増分|
|CompanyName|会社名|文字列||必須|
|Phone|電話番号|文字列||任意|
***Employees テーブル [#dd959f8d]
説明: 従業員の情報を格納するテーブル。
|列名|解説|型|キー|他|h
|EmployeeID|従業員の一意識別子|整数|主キー|自動増分|
|LastName|従業員の姓|文字列||必須|
|FirstName|従業員の名|文字列||必須|
|Title|職位|文字列||任意|
|TitleOfCourtesy|敬称|文字列||任意|
|BirthDate|生年月日|日時||任意|
|HireDate|雇用日|日時||任意|
|Address|住所|文字列||任意|
|City|市|文字列||任意|
|Region|地域|文字列||任意|
|PostalCode|郵便番号|文字列||任意|
|Country|国|文字列||任意|
|HomePhone|自宅電話番号|文字列||任意|
|Extension|内線番号|文字列||任意|
|Photo|写真|画像||任意|
|Notes|メモ|テキスト||任意|
|ReportsTo|上司の従業員ID|整数|外部キー|任意|
|PhotoPath|写真のパス|文字列||任意|
**イベント詳細定義書 [#h63e90da]
-受注詳細画面(編集モード)にフォーカス
以下はSQLServer付属のNorthWind DBを使用したサンプルアプ...
{画面項目定義・イベント一覧}
以下のイベント詳細定義書を作成してください(概要、トリガ...
{・イベント名:イベント一覧に記載のイベント名}
{・イベント概要:イベント一覧に記載の概要}
***ページ読み込み [#if7b4349]
概要:編集対象の受注情報を取得し、フォームに表示
-概要
--編集対象の受注情報を取得し、フォームに表示。
--このイベントは、受注詳細画面(編集モード)が初めて表示...
--受注IDに基づいてDBから受注情報を取得し、各フォーム項目...
-トリガー条件
--ユーザーが受注詳細画面(編集モード)にアクセスした際に...
-事前条件
--NorthWind DBに接続可能であること。
--受注IDが取得済みであること。
-入力:受注ID
-出力:フォームへの受注データ表示
--受注情報
--受注明細情報
--配送情報
-処理内容
--受注情報の取得:受注IDに基づいて受注情報、受注明細情報...
--合計金額の計算:受注合計金額、明細合計金額(割引適用後...
-検証内容
--受注詳細画面(編集モード)が正しく表示されること。
--受注IDに基づく受注情報、受注明細情報が各フォーム項目に...
--受注合計金額、明細合計金額(割引適用後)が正しく計算さ...
-エラーハンドリング
--DB接続エラーが発生した場合:エラーメッセージを表示し、...
--受注IDが無効または存在しない場合:エラーメッセージを表...
-依存関係
--顧客、商品のデータは、別のイベントによって更新される可...
***選択ドロップダウン変更 [#r84c5f2a]
概要:選択された顧客、従業員、商品、配送業者IDに基づいて...
-概要
--選択された顧客、従業員、商品、配送業者IDに基づいて、関...
--このイベントは、選択ドロップダウンの選択が変更された際...
-トリガー条件
--選択ドロップダウンの選択が変更されたとき。
-入力
--選択ドロップダウンの選択値(ID)
-出力
--フォームに表示される情報
-処理内容
--選択ドロップダウンから選択されたIDを取得
--IDを使用して、DBから情報を取得
--取得した情報を画面の対応するフィールドに表示
-検証内容
--入力に対応した出力であるか確認する。
-エラーハンドリング
--DB接続エラーが発生した場合:エラーメッセージを表示
--IDが無効または存在しない場合:エラーメッセージを表示し...
-依存関係
--情報を取得するためのDB接続が必要。
--選択ドロップダウンにIDリストが事前にロードされているこ...
***数量入力変更 [#i5e848f1]
概要:入力された数量に基づいて合計金額を計算し表示
-概要:受注明細に入力された数量に基づいて合計金額を計算し...
-トリガー条件:ユーザーが数量入力フィールドに新しい値を入...
-事前条件
--受注詳細画面(編集モード)が表示されていること。
--商品が選択されていること(商品選択ドロップダウンで選択...
--単価が取得されていること(選択された商品の単価が表示さ...
-入力:数量入力フィールドに入力された数量(整数)。
-出力:受注合計金額、明細合計金額(割引適用後)(通貨形式...
-処理内容
--数量入力フィールドの値を取得
--選択された商品の単価を取得
--合計金額を計算する。
---合計金額 = 単価 × 数量
---明細合計金額(割引適用後)を表示
---明細を合計した受注合計金額を表示
-検証内容
--入力された数量が正の整数であることを確認
--数量が在庫数量を超えていないことを確認
-エラーハンドリング
--単価が取得できない場合、エラーメッセージを表示
--数量が無効な場合(負の数や非整数の場合)、エラーメッセ...
--数量が在庫数量を超える場合、在庫が不足している旨のメッ...
-依存関係
--商品選択ドロップダウンの選択状態(選択された商品が必要...
--単価の取得(選択された商品の情報が必要)。
--在庫情報(選択された商品の在庫数量が必要)。
***受注更新ボタンクリック [#nb92d92b]
概要:入力内容を検証し、受注情報を更新
-概要:入力内容を検証し、受注情報を更新
-トリガー条件:ユーザーが「受注更新ボタン」をクリック
-事前条件:
--受注詳細画面(編集モード)に更新情報が正しくフォームに...
--必要なドロップダウン(顧客選択、商品選択)が正しく初期...
-入力
-出力
--受注情報、受注明細がDBに保存される。
--更新成功時のメッセージの表示。
--更新失敗時のエラーメッセージの表示。
-処理内容
--受注情報、受注明細の入力内容の検証を行う。
--顧客選択が行われているか。
--商品選択が行われているか。
--数量が正の整数であるか。
--数量が在庫数量を超えていないか。
--配送情報が入力されているか。
--検証が成功した場合、受注情報をOrders、受注明細情報をOrd...
--更新処理が成功した場合、成功メッセージを表示する。
--更新処理が失敗した場合、エラーメッセージを表示する。
-検証内容
--各入力フィールドが適切に入力されているかを確認
--数量が在庫数を超えていないかを確認
-エラーハンドリング
--入力検証に失敗した場合、具体的なエラーメッセージを表示...
--DB更新処理に失敗した場合、エラーログを記録し、ユーザー...
-依存関係
--顧客・商品選択ドロップダウンの初期化が完了していること。
--在庫情報が最新であること(在庫情報は更新ロックでは同時...
***キャンセルボタンクリック [#s60f118e]
概要:受注詳細画面に遷移
*参考 [#uab7f0e2]
**[[ドキュメント標準のポイント>https://opentouryo.osscons...
ページ名: