.. ユースケース documentation master file, created by sphinx-quickstart on Fri Mar 27 17:17:56 2020. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. .. このテンプレートの使用方法: .. 1. 「ユースケース タイトル」を具体的な機能名に変更 .. 2. 関連するユーザーストーリーファイル名を指定 .. 3. 各セクションの「..」で始まるコメント行を参考に具体的な内容を記載 .. 4. 不要なセクションは削除可能(入力項目、エラーメッセージなど) .. 5. コメント行(「..」で始まる行)は最終版では削除 [ 機能名 ] ========================================== **最終更新**: [ 更新日を記載 ] .. contents:: 目次 :depth: 2 :local: 関連ユーザーストーリー -------------------------------------------- * :doc:`../user_story/[ユーザーストーリーファイル名]` アクター -------------------------------------------- - **[ 主アクター名 ]**: [ 役割・説明 ](主アクター) - **[ 副アクター名 ]**: [ 役割・説明 ](副アクター) - **[ システム名 ]**: [ 外部システムの役割 ](副アクター) 事前条件 -------------------------------------------- - [ システム状態(例:システムが正常に動作している) ] - [ ユーザー状態(例:ユーザーがトップページにアクセス可能である) ] - [ データ状態(例:外部システムが正常に動作している) ] - [ 外部システム状態(例:必要な画面が正常に表示される) ] 事後条件 -------------------------------------------- **成功時**: - [ 正常終了時のシステム状態(例:新しいデータが作成されている) ] - [ ユーザーに表示される内容(例:完了画面が表示されている) ] - [ データ状態変化(例:ステータスがアクティブ状態になっている) ] - [ 外部連携(例:確認メールが送信されている) ] - [ 権限・機能変更(例:新機能が利用可能になっている) ] **失敗時**: - [ 異常終了時のシステム状態(例:データが作成されていない) ] - [ エラー表示(例:エラーメッセージが表示されている) ] - [ ユーザー状態(例:ユーザーは元の状態のまま) ] 基本コース -------------------------------------------- 1. [ アクター ]が[ システム画面・機能 ]にアクセスする 2. [ アクター ]が「[ ボタン名・操作 ]」をクリックする 3. システムが[ 画面名 ]を表示する 4. [ アクター ]が必要な情報を入力する - [ 必須項目1 ] - [ 必須項目2 ] - [ 必須項目3 ] 5. [ アクター ]が[ 同意・設定 ]を行う 6. [ アクター ]が「[ 実行ボタン名 ]」をクリックする 7. システムが[ バリデーション処理 ]を実行する 8. システムが[ 重複・制約チェック ]を実行する 9. システムが[ 強度・形式チェック ]を実行する 10. システムが[ データ ]をデータベースに保存する 11. システムが[ 外部システム ]に[ 依頼内容 ]を依頼する 12. [ 外部システム ]が[ 処理内容 ]を実行する 13. システムが[ 完了画面 ]を表示する 14. システムが[ 後続処理 ]を実行する 15. ユースケース終了 代替コース -------------------------------------------- **7a. [ バリデーションエラー ]がある場合** 7a1. システムが[ エラー種別 ]を検出する 7a2. システムが該当項目に[ エラーメッセージ ]を表示する 7a3. [ アクター ]がエラーを修正する 7a4. 基本コースの手順7に戻る **8a. [ 重複・制約違反 ]の場合** 8a1. システムが[ 重複・制約 ]を検出する 8a2. システムが「[ 具体的エラーメッセージ ]」というエラーメッセージを表示する 8a3. システムが「[ 代替手段リンク ]」リンクを提供する 8a4. システムが「[ 修正手段リンク ]」リンクを提供する 8a5. ユースケース終了 **9a. [ 強度・形式不足 ]の場合** 9a1. システムが[ 条件不足 ]を検出する 9a2. システムが「[ 詳細要件メッセージ ]」というエラーメッセージを表示する 9a3. [ アクター ]が[ 修正対象 ]を修正する 9a4. 基本コースの手順9に戻る **12a. [ 外部システム処理失敗 ]の場合** 12a1. [ 外部システム ]が[ エラー種別 ]を返す 12a2. システムが[ ログ記録 ]をログに記録する 12a3. システムが「[ エラー説明メッセージ ]」というメッセージを表示する 12a4. 基本コースの手順13に戻る 入力項目 -------------------------------------------- .. list-table:: :header-rows: 1 * - 項目名 - 必須 / 任意 - 制限 * - [ 項目名1 ] - 必須 - [ 形式制限(例:RFC 5322準拠のフォーマット) ] [ 文字数制限(例:最大254文字) ] * - [ 項目名2 ] - 必須 - [ 強度制限(例:8文字以上) ] [ 文字種制限(例:英数字記号を含む) ] [ 上限制限(例:最大128文字) ] * - [ 項目名3 ] - 必須 - [ 文字数制限(例:最大50文字) ] [ 文字種制限(例:特殊文字制限あり) ] * - [ 項目名4 ] - 必須 - [ 形式制限(例:7桁数字(ハイフンなし)) ] [ 地域制限(例:日本の郵便番号形式) ] * - [ 項目名5 ] - 必須 - [ 選択制限(例:47都道府県から選択) ] * - [ 同意項目1 ] - 必須 - [ 必須選択(例:チェックボックス必須選択) ] エラーメッセージ -------------------------------------------- .. list-table:: :header-rows: 1 * - 入力項目名 - エラーパターン - エラーメッセージ * - [ 項目名1 ] - 未入力 - [ 項目名1 ]は必須です * - [ 項目名1 ] - 形式不正 - 正しい[ 形式名 ]形式で入力してください * - [ 項目名1 ] - 重複 - この[ 項目名1 ]は既に登録されています * - [ 項目名2 ] - 未入力 - [ 項目名2 ]は必須です * - [ 項目名2 ] - 強度不足 - [ 項目名2 ]は[ 具体的要件 ]が必要です * - [ 同意項目 ] - 未同意 - [ 同意項目名 ]に同意する必要があります 画面設計 -------------------------------------------- **画面遷移図**: :doc:`../screen/diagram` このユースケースに関連する画面遷移図と画面一覧は、画面設計書を参照してください。 **画面設計のポイント**: - [ 開始画面名 ]: [ 画面の役割・説明 ] - [ 入力画面名 ]: [ 入力項目・バリデーション説明 ] - [ 完了画面名 ]: [ 完了状態・次のアクション説明 ] - [ エラー画面名 ]: [ エラー表示・復旧方法説明 ] メール定義 -------------------------------------------- .. list-table:: :header-rows: 1 * - メールタイトル - メール定義書 リンク * - [ メール名1 ] - :doc:`../mail/[メールファイル名1]` * - [ メール名2 ] - :doc:`../mail/[メールファイル名2]` シーケンス図 -------------------------------------------- **概念レベル(ロバスト図ベース)** .. mermaid:: :caption: メイン処理フロー sequenceDiagram participant Client as 主アクター名 participant WebApp as Webアプリケーション participant Service as 処理制御名 participant DB as エンティティ名 participant External as 外部アクター名 Client->>WebApp: 操作実行 WebApp->>Service: 処理要求 Service->>DB: データ検証 DB-->>Service: 検証結果 Service->>DB: データ作成更新 DB-->>Service: 作成更新完了 Service->>External: 外部連携 External-->>Service: 連携完了 Service-->>WebApp: 処理完了 WebApp-->>Client: 完了画面表示 External->>Client: 外部通知 **条件分岐テスト** .. mermaid:: sequenceDiagram participant Client as クライアント participant API as API participant Service as サービス participant DB as データベース Client->>API: リクエスト送信 API->>Service: 処理要求 Service->>DB: データ検索 DB-->>Service: 検索結果 alt データが存在する場合 Service-->>API: 成功レスポンス API-->>Client: データ返却 else データが存在しない場合 Service-->>API: エラーレスポンス API-->>Client: エラー通知 end **実装レベル(技術アーキテクチャ)** .. mermaid:: sequenceDiagram participant Client as 主アクター名 participant Web as フロントエンド名 participant AppService as アプリケーションサービス名 participant DomainService as ドメインサービス名 participant ValidationService as バリデーションサービス名 participant Repository as リポジトリ名 participant External as 外部システム名 Client->>Web: 画面アクセス Web-->>Client: 画面表示 Client->>Web: 情報入力・送信 Web->>AppService: メソッド名(引数) AppService->>Repository: 保存メソッド(エンティティ) Repository-->>AppService: 保存完了 AppService->>ValidationService: 検証メソッド(データ) ValidationService-->>AppService: 検証結果 AppService->>DomainService: ビジネスメソッド(データ) DomainService->>DomainService: ビジネスロジック実行 DomainService-->>AppService: 処理結果エンティティ AppService->>Repository: 保存メソッド(結果エンティティ) Repository-->>AppService: 保存完了 AppService->>External: 外部連携メソッド(データ) External-->>AppService: 処理完了 External->>Client: 外部からの通知 AppService->>AppService: ドメインイベント発行 AppService-->>Web: 完了レスポンス Web-->>Client: 完了画面表示