@startuml
!include color.inc

プレゼンテーション ---> アプリ
アプリ ---> ドメイン
ドメイン ---> インフラ

package 商品カテゴリ <<Folder>> {
 package プレゼンテーション {
  package ビューモデル {
   namespace 小カテゴリ {
    class 一覧ビューモデル
   }
   namespace 大カテゴリ {
    class 一覧ビューモデル
   }
  }
  namespace コントローラ {
   namespace 小カテゴリ {
    class 一覧コントローラ
   }
   namespace 大カテゴリ {
    class 一覧コントローラ
    class 登録コントローラ
   }
  }
 }
 package アプリ {
  namespace ユースケース {
   namespace 小カテゴリ {
    class 一覧表示クエリサービス
    interface 一覧表示クエリサービスインターフェース
   }
   namespace 大カテゴリ {
    class 一覧表示クエリサービス
    interface 一覧表示クエリサービスインターフェース
    class 登録
   }
  }
 }
 package ドメイン {
  package モデル {
   class 商品カテゴリ
   class 商品カテゴリID
   class 商品カテゴリファクトリ
   interface 商品カテゴリリポジトリインターフェース
  }
 }
 package インフラ {
  namespace レスポンスデータ {
   class 商品カテゴリIDレスポンスデータ
   class 商品カテゴリレスポンスデータ
   namespace 小カテゴリ {
    class 小カテゴリレスポンスデータ
    class 一覧表示クエリレスポンスデータ
   }
   namespace 大カテゴリ {
    class 商品カテゴリレスポンスデータ
    class 一覧表示クエリレスポンスデータ
   }
  }
  package エロクアント {
   class 小カテゴリエロクアント
   class 大カテゴリエロクアント
  }
  namespace リポジトリ {
   namespace 小カテゴリ {
    class 一覧表示クエリレスポンスデータ
   }
   namespace 大カテゴリ {
    class 一覧表示クエリレスポンスデータ
   }
  }
 }
}

@enduml