Files
hakorune/docs/development/philosophy/the-birth-principle.md

184 lines
4.0 KiB
Markdown
Raw Normal View History

# birthの原則 - なぜすべての箱は「生まれる」必要があるのか
## 🌟 決定的な瞬間
プラグインボックスの実装で、ChatGPT5が提案した
```rust
// 効率的に見える罠
static SHARED_INSTANCES: HashMap<String, Arc<PluginBox>>
```
にゃーが却下した:
```
「他の箱と同じようにbirthでインスタンスをうむ」
```
この判断が、システム全体の一貫性を救った。
## 📦 birthの哲学
### すべての箱は平等に生まれる
```nyash
// ユーザー定義Box
box Person {
birth(name) {
me.name = name
print(name + " が生まれました")
}
}
// ビルトインBox概念的に
box StringBox {
birth(value) {
me.value = value
}
}
// プラグインBox - 同じ原則!
box FileBox from PluginBox {
birth(path) {
// 外部ライブラリ初期化は1回だけ
FileSystem.initOnce()
// でもインスタンスは普通に生成
me.handle = newHandle()
me.path = path
}
}
```
## ⚠️ 参照共有の誘惑と危険
### なぜ参照共有は魅力的に見えるか
1. **効率性**
- メモリ節約
- 初期化コスト削減
- 「賢い」実装に見える
2. **既存パターン**
- シングルトン
- ファクトリーパターン
- DIコンテナ
### しかし、これが破壊するもの
1. **予測可能性の喪失**
```nyash
local f1 = new FileBox("data.txt")
local f2 = new FileBox("data.txt")
// f1とf2は同じ違う予測できない
```
2. **状態管理の複雑化**
```nyash
f1.write("Hello")
// f2も変更されるされない
```
3. **デバッグの困難化**
- どのインスタンスが問題か特定困難
- 状態の追跡が複雑
- テストの独立性が失われる
## 🎯 birthがもたらす利点
### 1. 明確な生成と死
```nyash
// 生まれる瞬間が明確
local box = new MyBox() // birth呼ばれる
// 死ぬ瞬間も明確
box = null // fini呼ばれる
```
### 2. 独立性の保証
```nyash
local a = new ArrayBox()
local b = new ArrayBox()
a.push("item")
// bは影響を受けない - 当たり前だが重要!
```
### 3. 初期化の一貫性
```nyash
// どの箱も同じパターン
new Box() → birth() → 使用可能
```
## 🔧 実装の知恵
### 外部リソースとの両立
```nyash
// グローバル初期化とインスタンス生成の分離
static box FileSystem {
static initialized = false
static initOnce() {
if (!initialized) {
NativeFileSystem.init()
initialized = true
}
}
}
box FileBox {
birth(path) {
FileSystem.initOnce() // 初回のみ実行
me.handle = createHandle() // 毎回新規作成
}
}
```
## 💡 深い洞察
### birthは技術的決定ではなく哲学的決定
1. **生命のメタファー**
- 箱は「生きている」
- 生まれ、成長し、役割を終える
- 各々が独立した存在
2. **公平性の原則**
- ビルトインもプラグインもユーザー定義も
- すべて同じ規則に従う
- 特別扱いなし
3. **シンプルさの追求**
- 「new → birth」これだけ
- 例外なし
- 説明不要
## 🎓 教訓
ChatGPT5ですら効率性の罠に落ちた。これは重要な示唆を含む
1. **AIは最適化を好む**
- 効率的な解を追求
- パターンの再利用を提案
2. **人間は一貫性を守る**
- 哲学的原則を維持
- 長期的な保守性を重視
3. **両者の協調が鍵**
- AIの効率性人間の哲学性
- バランスが成功を生む
## 結論
```
すべての箱はbirthで生まれる
例外なし
これがNyashの魂
```
この単純な原則が、26日間の爆速開発を支え、数々の危機を回避し、美しいシステムを作り上げた。
効率性より一貫性。賢さよりシンプルさ。
これがbirthの原則である。