# Architecture Design

> PRD・機能設計からアーキテクチャ設計書（docs/architecture.md）を作成する。 「アーキテクチャ設計して」「技術選定して」「インフラ設計」「システム構成を決めて」 「技術スタックを決めて」「非機能要件の設計」などの依頼時に発火。 技術選定（理由付き）・レイヤー設計・データ戦略・セキュリティ・スケーラビリティを出力。

- Skill: `majiayu000/architecture-design-3` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/architecture-design-3`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/architecture-design-3/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/architecture-design-3

---


# Architecture Design Skill

機能設計の「どう実現するか」を「どの技術で・どう構成するか」に落とし込む。

## 入出力

| 種別 | パス |
|------|------|
| 入力 | `docs/product-requirements.md`（PRD） |
| 入力 | `docs/functional-design.md`（機能設計） |
| 入力 | `docs/architecture.md`（既存あれば優先） |
| 出力 | `docs/architecture.md` |

## 参照ファイル

| ファイル | 読むタイミング |
|----------|----------------|
| `./template.md` | 新規作成時のベース |
| `./reference.md` | 技術選定基準・レビュー観点 |

## 手順

### 1. 要件抽出
```
PRD・機能設計から以下を抽出：
- 非機能要件（性能・信頼性・セキュリティ）
- データモデル・データ量見込み
- 外部連携要件
- 制約条件（予算・期間・チームスキル）
```

### 2. 既存設計の確認
- `docs/architecture.md` が存在する？
  - **Yes** → 構造を維持して差分更新
  - **No** → `./template.md` をコピーして新規作成

### 3. アーキテクチャ設計

`./template.md` の構造に従い、以下を埋める：

| セクション | 内容 | 必須 |
|-----------|------|------|
| 技術スタック | 言語・FW・DB・ツール + 選定理由 | ✅ |
| システム構成図 | Mermaid + コンポーネント説明 | ✅ |
| レイヤー設計 | 各層の責務・依存ルール | ✅ |
| データ戦略 | DB設計・バックアップ・キャッシュ | ✅ |
| セキュリティ | 認証・認可・暗号化・監査 | ✅ |
| パフォーマンス | 目標値・測定方法・最適化方針 | ✅ |
| スケーラビリティ | 想定負荷・スケール戦略 | ✅ |
| 依存関係管理 | バージョン固定方針 | ✅ |
| テスト戦略 | Unit/Integration/E2E方針 | ✅ |

### 4. 技術選定の根拠確認

すべての技術選定に以下が書かれているか確認：
- **用途**: 何に使うか
- **選定理由**: なぜこれを選んだか
- **代替案**: 検討した他の選択肢（あれば）

### 5. 非機能要件との整合性チェック

PRDの非機能要件が設計でカバーされているか確認：
- [ ] パフォーマンス要件 → 設計で対応策が書かれている
- [ ] 信頼性要件 → バックアップ・復旧戦略がある
- [ ] セキュリティ要件 → 認証・認可・暗号化が定義されている

### 6. 出力
`docs/architecture.md` を作成/更新し、変更点をサマリ提示

## 発火例
- 「アーキテクチャ設計して」
- 「技術選定を整理して」
- 「インフラ構成を決めて」
- 「非機能要件の設計をお願い」
- 「セキュリティ設計をして」

## 境界（やらないこと）
- **要件定義** → `prd-writing` スキル
- **機能設計（コンポーネント・フロー）** → `functional-design` スキル
- **ディレクトリ構造** → `repository-structure` スキル
- **コーディング規約** → `development-guidelines` スキル

