ドメインモデル

最終更新: [ 更新日を記載 ]

概要

本文書では、システムの業務領域(ドメイン)におけるアクター、エンティティ、ビジネス概念、値オブジェクトを定義します。 設計全体の共通言語となる重要な用語集としても機能します。

アクター(Actor)

システム利用者

  • システムを利用する主要なユーザー

  • システムの基本機能を利用する権限を持つ

  • 認証・認可機能により管理される

システム管理者

  • システムの運用・管理を行う管理者

  • データ管理、システム監視を担当

  • 管理機能への高レベルアクセス権限を持つ

外部システム

  • 本システムと連携する外部システム

  • API通信による情報交換を行う

  • 各種サービス提供者との連携を担当

エンティティ(Entity)

ユーザー(User)

  • システムの利用者を表すコアエンティティ

  • 一意のユーザーIDで識別される

  • ログイン状態、基本情報を持つ

商品(Product)

  • 管理対象の商品・サービスを表すエンティティ

  • 商品ID、名前、価格、在庫数を持つ

  • 在庫管理と価格管理の責務を持つ

ショッピングカート(ShoppingCart)

  • 顧客の購入予定商品を管理するエンティティ

  • ユーザーごとに1つのアクティブなカートを持つ

  • 24時間の有効期限がある

カート商品(CartItem)

  • ショッピングカートに追加された商品アイテム

  • 商品情報、数量、単価、小計を含む

  • 同一商品は数量で調整される

コントローラ(Controller)

ユーザー管理

  • ユーザー情報の管理・更新

  • ユーザー権限の制御

  • アカウント状態の管理

ショッピングカート管理

  • カートへの商品追加・削除・数量変更

  • カート合計金額の計算

  • カート有効期限の管理

商品確保管理

  • カートに追加された商品を在庫から一時的に確保

  • 他の顧客による購入を防ぐ

  • カートの有効期限まで確保される

購入手続き管理

  • カート内商品の決済処理

  • 配送先指定、支払い方法選択

  • 完了時にカートがクリアされる

バウンダリ(Boundary)

外部システム連携

  • 外部システムとの通信

  • API連携による情報交換

  • システム間データ連携

在庫管理システム連携

  • 外部在庫管理システムとの通信

  • リアルタイム在庫チェック

  • 在庫確保・解放の処理

決済システム連携

  • 外部決済システムとの通信

  • 決済処理の実行

  • 決済結果の受信・処理

ユーザーインターフェース

  • Webページ、APIエンドポイント

  • ユーザー操作の受付

  • システム状態の表示

ビジネス概念(Domain Concepts)

商品確保(Product Reservation)

  • カートに追加された商品を在庫から一時的に確保するビジネスルール

  • 他の顧客による購入を防ぐ排他制御

  • カートの有効期限まで確保される

在庫(Stock/Inventory)

  • 販売可能な商品の数量を表すビジネス概念

  • リアルタイムで更新される

  • カート追加時にチェックされる

セッション管理(Session Management)

  • ユーザーのログイン状態とカート状態の管理

  • セッション有効期限の制御

  • ログアウト時のカート保持ルール

価格計算(Price Calculation)

  • 商品価格、税額、送料の計算ロジック

  • 割引、クーポン適用の処理

  • 通貨換算(必要に応じて)

値オブジェクト(Value Objects)

金額(Money)

  • 価格、税額、合計金額を表現

  • 通貨情報を含む

  • 不変オブジェクト

数量(Quantity)

  • カート内商品の数量

  • 在庫数量

  • 正の整数値のみ許可

期限(ExpiryTime)

  • カート有効期限

  • セッション有効期限

  • タイムゾーン考慮

商品コード(ProductCode)

  • 商品を一意に識別するコード

  • JANコード、SKUなどのフォーマット

  • バリデーションルールを含む

ユーザーID(UserID)

  • ユーザーを一意に識別する識別子

  • UUID形式またはシーケンシャル番号

  • 不変オブジェクト

日時(DateTime)

  • システム内で使用される日時情報

  • タイムゾーン情報を含む

  • 不変オブジェクト

ドメインモデル クラス図

        classDiagram
    class User["ユーザー"] {
        +user_id: int
        +name: string
        +created_at: datetime
        +is_active: boolean
        --
        +login()
        +logout()
        +checkCart()
    }

    class Product["商品"] {
        +product_id: int
        +name: string
        +price: decimal
        +stock_quantity: int
        +is_available: boolean
        --
        +checkStock()
        +getPrice()
        +reduceStock()
    }

    class ShoppingCart["ショッピングカート"] {
        +cart_id: int
        +user_id: int
        +total_amount: decimal
        +created_at: datetime
        +expires_at: datetime
        --
        +addProduct()
        +removeProduct()
        +calculateTotal()
        +isExpired()
    }

    class CartItem["カート商品"] {
        +item_id: int
        +cart_id: int
        +product_id: int
        +quantity: int
        +unit_price: decimal
        +subtotal: decimal
        --
        +updateQuantity()
        +calculateSubtotal()
    }

    %% リレーション
    User ||--|| ShoppingCart : "owns"
    ShoppingCart ||--o{ CartItem : "contains"
    Product ||--o{ CartItem : "referenced by"
    

ユースケース図

        graph LR
    ユーザー --> |商品検索| 商品検索処理
    ユーザー --> |カート追加| カート管理処理
    ユーザー --> |購入手続き| 購入処理
    管理者 --> |商品管理| 商品管理処理
    管理者 --> |在庫管理| 在庫管理処理

    外部システム --> |在庫確認| 在庫管理処理
    外部システム --> |決済処理| 購入処理
    

用語集

用語

定義

備考

ユーザー

システムを利用する人

顧客、管理者を含む総称

商品

販売・管理対象となるアイテム

物理的商品、サービス、デジタルコンテンツを含む

カート

購入予定商品の一時保存場所

ショッピングカートの略称

在庫

販売可能な商品の数量

リアルタイムで変動する

セッション

ユーザーのログイン状態

一定時間で自動無効化

決済

購入代金の支払い処理

外部システムとの連携で実現

関連文書

設計文書:

プロジェクト管理:

  • プロジェクト憲章

  • 要求仕様書