# Clean Architecture

> クリーンアーキテクチャを採用しているプロジェクト向けの設計・レビュー支援。4層構造（ドメイン層、 ユースケース層、インターフェースアダプタ層、インフラストラクチャ層）に基づく。特にインフラ層は 横断的関心事（ロギング、設定管理）のみ、永続化やRPCはインターフェースアダプタ層に配置すべき という原則を適用する。トリガー：「クリーンアーキテクチャで」「クリーンアーキテクチャに従って」 「クリーンアーキテクチャのレビュー」など、クリーンアーキテクチャを明示的に指定した場合のみ起動。 一般的な「設計レビュー」「アーキテクチャ相談」では起動しない。

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

---


# クリーンアーキテクチャ

クリーンアーキテクチャを採用しているプロジェクト向けの設計・レビュー支援。

> **注意**: このスキルはプロジェクトがクリーンアーキテクチャを採用している場合にのみ使用する。
> 他のアーキテクチャ（Hexagonal、Onion、レイヤード等）には適用しない。

## 層構造の概要

```
┌─────────────────────────────────────────────────────┐
│  Infrastructure（横断的関心事のみ）                   │
│  ・ログ ・設定 ・メトリクス ・DI設定                  │
├─────────────────────────────────────────────────────┤
│  Interface Adapters（外部との境界）                  │
│  ・Controller ・Repository実装 ・Gateway実装         │
├─────────────────────────────────────────────────────┤
│  Use Cases（アプリケーション固有ルール）             │
│  ・Use Case ・Output Port（Repository Interface等）│
├─────────────────────────────────────────────────────┤
│  Domain（ビジネスルール）                            │
│  ・Entity ・Value Object ・Domain Service           │
└─────────────────────────────────────────────────────┘
```

## 重要な原則

### 永続化・RPCの配置場所

| コンポーネント | 配置層 |
|--------------|--------|
| Repository Interface | ユースケース層（Output Port） |
| **Repository 実装** | **インターフェースアダプタ層** |
| Gateway Interface | ユースケース層（Output Port） |
| **Gateway 実装（RPC等）** | **インターフェースアダプタ層** |

### インフラストラクチャ層の責務

**配置するもの**（横断的関心事のみ）:

- ロギング機構
- 設定管理
- メトリクス・トレーシング
- DIコンテナ設定

**配置しないもの**:

- Repository実装 → インターフェースアダプタ層へ
- 外部API Gateway → インターフェースアダプタ層へ

## レビュー時のチェックポイント

1. **ドメイン層に外部依存がないか**
   - DB接続、HTTPクライアント等の混入を確認

2. **Repository実装の配置が正しいか**
   - インターフェースアダプタ層にあるべき

3. **インフラストラクチャ層が肥大化していないか**
   - 永続化コードが紛れ込んでいないか確認

4. **依存方向が内向きか**
   - 外側の層から内側への依存のみ許可

## 詳細リファレンス

各層の詳細な責務と配置すべきコンポーネントの一覧は [references/layer-responsibilities.md](references/layer-responsibilities.md) を参照。

## 関連スキル（併読推奨）
このスキルを使用する際は、以下のスキルも併せて参照すること：
- `repository-placement`: クリーンアーキテクチャにおけるリポジトリインターフェースの配置
- `package-design`: 各層内のパッケージ設計原則
- `ddd-module-pattern`: ドメイン層内のモジュール構成

