3.7 KiB
3.7 KiB
🎯 Nyash デリゲーション設計サマリー
作成日: 2025年8月10日 状態: 設計完了・実装待ち
🎉 決定事項
基本方針
- ✅ 継承完全廃止 → デリゲーション全面移行
- ✅ Everything is Box哲学維持
- ✅ 明示性重視の文法
最終採用文法
// 基本形式(80%のケース)
box MeshNode extends P2PBox {
init routing = RoutingTable()
constructor(nodeId, world) {
super(nodeId, world) // super解禁!
me.routing = RoutingTable()
}
override send(intent, data, target) {
me.routing.log(target)
super.send(intent, data, target) // 直感的
}
}
// 複数デリゲーション(20%のケース)
box ComplexNode extends P2PBox {
init cache = CacheBox()
delegates cache // 追加デリゲーション
override send(intent, data, target) {
me.cache.store(intent, data)
super.send(intent, data, target)
}
}
🌟 3AI大会議結果
参加者
- 🤖 Claude(司会・バランス調整)
- 🌟 Gemini(ユーザー体験重視)
- 💻 ChatGPT(技術実装重視)
提案比較
| 提案者 | 文法 | 特徴 |
|---|---|---|
| Gemini | delegates to self.pos |
シンプル・直感的 |
| ChatGPT | delegate repo exposes API |
細かい制御・柔軟性 |
| 採用案 | extends + super |
馴染みやすさ・学習コスト最小 |
🚀 実装すべき機能
Phase 1: 基本デリゲーション(最優先)
box SimpleWrapper extends SomeBox {
constructor(args) {
super(args) // 基底初期化
}
override method() {
super.method() // 元実装呼び出し
}
}
Phase 2: 複数デリゲーション(中期)
box ComplexWrapper extends PrimaryBox {
init secondary = SecondaryBox()
delegates secondary
delegates tertiary only { save, load } // 選択的
}
🛠️ 実装方針
内部実装
extendsは実際にはデリゲーションsuperは内部フィールドへの参照- 自動メソッド転送生成
ASTノード追加
// ASTに追加すべき要素
BoxDeclaration {
extends: Option<String>, // extends PrimaryBox
delegates: Vec<String>, // delegates field1, field2
}
// superキーワード対応
SuperCall {
method: String,
arguments: Vec<Expression>,
}
📈 期待効果
NyaMeshライブラリでの改善
// Before: 20行以上の手動ラッピング
box MeshNode {
// 全メソッド手動転送...
send(...) { return me.p2p.send(...) }
broadcast(...) { return me.p2p.broadcast(...) }
// ...
}
// After: 5行程度
box MeshNode extends P2PBox {
override send(intent, data, target) {
me.routing.log(target)
super.send(intent, data, target)
}
}
改善率: 75%以上のコード削減
🎯 次のステップ
実装優先度
- 🔥
extends構文追加(パーサー・AST) - 🔥
superキーワード解禁(インタープリター) - 🔥 自動メソッド転送(メソッド解決)
- 🟡 複数delegates(将来拡張)
技術的課題
- ASTにextends/super追加
- superの型チェック・安全性
- メソッド転送の実装
- テストスイート作成
📝 設計哲学
「継承の表現力を、デリゲーションの安全性で実現する」
- 見た目は継承:学習コストを最小化
- 実装はデリゲーション:安全性を確保
- Everything is Box:一貫した設計哲学
次回作業開始時の参照用サマリー完了 🎉