THEORY.md
# 導出的創造 理論
## 核心
```
定義が正しければ、コードは導出される。
バグは「定義の誤り」か「導出の誤り」しかない。
両方を構造的に防げば、バグはゼロになる。
```
---
## 6層アーキテクチャ
```
Layer -1: 複雑性分析層
↓ 何を作るか、どの程度複雑か
Layer 0: 意図結晶化層
↓ 曖昧 → 明確
Layer 1: 定義導出層
↓ 契約 → コード
Layer 2: 継続検証層
↓ 常に整合性を確認
Layer 3: 自己修復層
↓ 不整合を自動検出・修正
Layer 4: 定義深化層
↓ 不足を発見、契約を更新
```
---
## 複雑性理論
### 3軸
| 軸 | 低 | 高 |
| :----- | :--------------- | :------------------------- |
| 閉鎖性 | 外部連携なし | API、DB、外部サービス |
| 静的性 | 状態単純 | 動的スキーマ、リアルタイム |
| 単独性 | シングルユーザー | マルチユーザー、権限 |
### 5 Tier
| Tier | 特徴 | 契約階層 | 期間 |
| :--- | :------------ | :------------------------ | :--- |
| 1 | 閉×静×単 | Vision→Module→Function | 時間 |
| 2 | 閉×動×単 | Vision→Module→Function | 日 |
| 3 | 開×動×協 | +Domain, External, Sync | 週 |
| 4 | 開×動×協+メタ | +Meta, Permission, Tenant | 月 |
| 5 | 開×動×進化 | +Evolution, Plugin | 6月+ |
---
## 契約の原理
### 契約とは
```
「何を作るか」の合意文書。
コードの前に存在する。
コードは契約から導出される。
```
### 契約階層
```
Vision Contract
「なぜ作るか」「何のために」
Domain Contract
「どの領域を担当するか」「境界は」
Meta Contract(Tier 4+)
「ユーザーは何を定義できるか」
Module Contract
「どの部品か」「責務は」
Function Contract
「何をするか」「入力は」「出力は」「エラーは」
```
### 契約の検証
```
契約は検証可能でなければならない。
✓ 「ユーザーを作成できる」→ テスト可能
✗ 「使いやすい」→ 曖昧、テスト不能
曖昧な契約 → 曖昧な実装 → バグ
明確な契約 → 明確な実装 → バグゼロ
```
---
## 導出の原理
### 導出とは
```
契約からコードへの構造的変換。
創造性は不要。機械的な変換。
Contract → Type → Interface → Implementation → Test
```
### 導出ルール
```typescript
// 契約
// User: id(UUID), email(検証済み), role(admin/user/guest)
// → 型に導出
type UserId = string & { readonly __brand: 'UserId' };
type Email = string & { readonly __brand: 'Email' };
type Role = 'admin' | 'user' | 'guest';
interface User {
readonly id: UserId;
readonly email: Email;
readonly role: Role;
}
// → インターフェースに導出
interface UserService {
create(email: Email, role: Role): Promise>;
findById(id: UserId): Promise