# Ddd Architecture

> DDD Architecture Skill

- Skill: `majiayu000/ddd-architecture-3` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add majiayu000/ddd-architecture-3`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/ddd-architecture-3/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/majiayu000/ddd-architecture-3

---


# DDD Architecture Skill

## Description
ドメイン駆動設計（DDD）に準拠したバックエンドコードを書くためのスキルです。

## Automatic Activation
このスキルは以下のファイルを編集する際に自動で適用されます：
- `backend/src/domain/**/*.ts` - エンティティ、リポジトリIF
- `backend/src/application/**/*.ts` - ユースケース、DTO、サービス
- `backend/src/infrastructure/**/*.ts` - DynamoDB実装、マッパー
- `backend/src/presentation/**/*.ts` - コントローラー、ルート
- `backend/src/container/**/*.ts` - DIコンテナ

## Architecture Layers

```
Presentation Layer (コントローラー、ルート)
    ↓
Application Layer (ユースケース、アプリケーションサービス)
    ↓
Domain Layer (エンティティ、リポジトリインターフェース)
    ↑
Infrastructure Layer (DynamoDBリポジトリ実装)
```

## Directory Structure

```
backend/src/
├── domain/
│   ├── entities/{feature}/      # エンティティ定義
│   └── repositories/{feature}/  # リポジトリインターフェース
├── application/
│   ├── dto/{feature}/           # Data Transfer Objects
│   ├── usecases/{feature}/      # ユースケース
│   └── services/{feature}/      # アプリケーションサービス
├── infrastructure/
│   ├── repositories/{feature}/  # DynamoDB実装
│   └── mappers/{feature}/       # エンティティ⇔DBマッパー
└── presentation/
    ├── controllers/{feature}/   # コントローラー
    └── routes/{feature}/        # ルーティング
```

## Implementation Rules

### 1. Domain Layer
- エンティティはビジネスロジックを持つ
- リポジトリはインターフェースのみ定義
- 外部依存を持たない

### 2. Application Layer
- ユースケースは1つの操作を表す
- DTOで入出力を定義
- ドメインオブジェクトを操作

### 3. Infrastructure Layer
- リポジトリインターフェースを実装
- DynamoDBとの通信を担当
- マッパーでエンティティ変換

### 4. Presentation Layer
- HTTPリクエスト/レスポンスを処理
- 認証・認可のミドルウェア適用
- Swagger定義も更新

## New Feature Checklist

新機能追加時は以下を全て実装:

- [ ] `domain/entities/{feature}/{Feature}.ts`
- [ ] `domain/repositories/{feature}/{Feature}Repository.ts`
- [ ] `application/dto/{feature}/{Feature}Dto.ts`
- [ ] `application/usecases/{feature}/{Feature}UseCase.ts`
- [ ] `infrastructure/repositories/{feature}/DynamoDB{Feature}Repository.ts`
- [ ] `infrastructure/mappers/{feature}/{Feature}Mapper.ts`
- [ ] `presentation/controllers/{feature}/{Feature}Controller.ts`
- [ ] `presentation/routes/{feature}/{feature}Routes.ts`
- [ ] `container/Container.ts` にDI登録
- [ ] `server.ts` にルート追加
- [ ] `config/swagger.ts` にAPI定義追加

## Naming Conventions

| 種類 | 命名規則 | 例 |
|-----|---------|-----|
| エンティティ | PascalCase | `Order`, `MenuItem` |
| リポジトリIF | PascalCase + Repository | `OrderRepository` |
| リポジトリ実装 | DynamoDB + PascalCase + Repository | `DynamoDBOrderRepository` |
| ユースケース | PascalCase + UseCase | `CreateOrderUseCase` |
| コントローラー | PascalCase + Controller | `OrderController` |
| ルート | camelCase + Routes | `orderRoutes` |
| DTO | PascalCase + Dto | `CreateOrderDto` |

