📚 Phase 12: Nyashスクリプトプラグインシステム設計と埋め込みVM構想
## 主な成果 - Nyashスクリプトでプラグイン作成可能という革命的発見 - C ABI制約の分析と埋め込みVMによる解決策 - MIR/VM/JIT層での箱引数サポートの詳細分析 ## ドキュメント作成 - Phase 12基本構想(README.md) - Gemini/Codex先生の技術分析 - C ABIとの整合性問題と解決策 - 埋め込みVM実装ロードマップ - 箱引数サポートの技術詳細 ## 重要な洞察 - 制約は「リンク時にC ABI必要」のみ - 埋め込みVMでMIRバイトコード実行により解決可能 - Nyashスクリプト→C ABIプラグイン変換が実現可能 Everything is Box → Everything is Plugin → Everything is Possible!
This commit is contained in:
147
docs/development/roadmap/phases/phase-12/REVISED-PROPOSAL.md
Normal file
147
docs/development/roadmap/phases/phase-12/REVISED-PROPOSAL.md
Normal file
@ -0,0 +1,147 @@
|
||||
# Phase 12(改訂版):Nyashスクリプトプラグイン - 開発支援ツールとして
|
||||
|
||||
## 🎯 現実的な位置づけ
|
||||
|
||||
**スクリプトプラグインは、JIT/AOT/EXEとは独立した開発支援機能として実装する。**
|
||||
|
||||
## 📊 制約と可能性の整理
|
||||
|
||||
### ❌ できないこと(技術的制約)
|
||||
- MIR/VM/JIT/AOTからのスクリプトプラグイン呼び出し
|
||||
- スクリプトプラグインのEXE埋め込み
|
||||
- ネイティブプラグインとの完全な相互運用性
|
||||
|
||||
### ✅ できること(現実的な価値)
|
||||
- インタープリターモードでの高速プロトタイピング
|
||||
- 既存プラグインの組み合わせによる新機能開発
|
||||
- ビルド不要な機能拡張(開発時のみ)
|
||||
|
||||
## 🔄 修正された開発フロー
|
||||
|
||||
```
|
||||
┌─────────────────┐
|
||||
│ アイデア/要件 │
|
||||
└────────┬────────┘
|
||||
↓
|
||||
┌─────────────────┐
|
||||
│ Nyashスクリプト │ ← 高速イテレーション
|
||||
│ プラグイン作成 │ ビルド不要
|
||||
└────────┬────────┘
|
||||
↓
|
||||
┌─────────────────┐
|
||||
│ インタープリター│
|
||||
│ でテスト/検証 │
|
||||
└────────┬────────┘
|
||||
↓
|
||||
性能要求?
|
||||
↙ ↘
|
||||
No Yes
|
||||
↓ ↓
|
||||
そのまま Rust/Cで
|
||||
使用 再実装
|
||||
↓
|
||||
ネイティブ
|
||||
プラグイン
|
||||
↓
|
||||
JIT/AOT/EXE
|
||||
```
|
||||
|
||||
## 📝 実装方針
|
||||
|
||||
### 1. インタープリター専用機能として実装
|
||||
|
||||
```nyash
|
||||
// script_plugin.ny
|
||||
export box CustomLogic {
|
||||
init {
|
||||
_math = new MathBox() // ネイティブプラグイン利用
|
||||
_cache = new MapBox()
|
||||
}
|
||||
|
||||
process(data) {
|
||||
// 複雑なビジネスロジック
|
||||
// インタープリターでのみ実行
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 明確な使用場面の区別
|
||||
|
||||
```nyash
|
||||
// development.ny(開発時)
|
||||
local plugin = include("custom_logic.ny") // ✅ OK
|
||||
|
||||
// production.ny(本番時)
|
||||
local plugin = new CustomLogicBox() // ネイティブ版を使用
|
||||
```
|
||||
|
||||
### 3. トランスパイル支援ツール(将来)
|
||||
|
||||
```bash
|
||||
# Nyashスクリプト → Rustテンプレート生成
|
||||
nyash-to-rust custom_logic.ny > custom_logic_plugin/src/lib.rs
|
||||
```
|
||||
|
||||
## 🎯 価値提案(修正版)
|
||||
|
||||
### 開発者にとっての価値
|
||||
1. **探索的プログラミング** - アイデアを即座に試せる
|
||||
2. **プロトタイピング** - ビルドなしで機能検証
|
||||
3. **学習曲線の緩和** - Rust/C知識不要で拡張開発
|
||||
|
||||
### エコシステムへの貢献
|
||||
1. **アイデアの具現化** - スクリプトで検証→ネイティブで実装
|
||||
2. **コミュニティ参加** - より多くの開発者が貢献可能
|
||||
3. **ベストプラクティス** - 成功パターンの蓄積
|
||||
|
||||
## 🚀 実装計画(現実的版)
|
||||
|
||||
### Phase 12.1: 基盤構築(2週間)
|
||||
- [ ] export box構文(インタープリター専用)
|
||||
- [ ] include()関数の拡張
|
||||
- [ ] 基本的なプラグインレジストリ
|
||||
|
||||
### Phase 12.2: 開発体験向上(3週間)
|
||||
- [ ] ホットリロード(開発モード)
|
||||
- [ ] エラーメッセージ改善
|
||||
- [ ] デバッグ支援機能
|
||||
|
||||
### Phase 12.3: 移行支援(4週間)
|
||||
- [ ] パフォーマンス分析ツール
|
||||
- [ ] Rust変換テンプレート
|
||||
- [ ] 移行ガイドライン
|
||||
|
||||
## 📚 ドキュメント戦略
|
||||
|
||||
### 明確な制約の説明
|
||||
```markdown
|
||||
# Nyashスクリプトプラグイン
|
||||
|
||||
⚠️ **重要な制約**
|
||||
- インタープリターモードでのみ動作
|
||||
- JIT/AOT/EXEでは使用不可
|
||||
- 本番環境ではネイティブプラグインへの移行推奨
|
||||
```
|
||||
|
||||
### 使用例の充実
|
||||
- プロトタイピング例
|
||||
- ネイティブ移行例
|
||||
- パフォーマンス比較
|
||||
|
||||
## 🎉 期待される成果(現実的版)
|
||||
|
||||
### 短期(3ヶ月)
|
||||
- 開発効率の向上(プロトタイピング時間80%削減)
|
||||
- 新規開発者の参入(Rust不要)
|
||||
- アイデア検証の高速化
|
||||
|
||||
### 中期(1年)
|
||||
- 成功パターンの確立
|
||||
- ネイティブプラグインの品質向上
|
||||
- コミュニティ主導の機能提案増加
|
||||
|
||||
## 結論
|
||||
|
||||
**スクリプトプラグインは、C ABIの制約を認識した上で、開発支援ツールとして大きな価値を提供できる。**
|
||||
|
||||
「Everything is Box」の哲学は、実行時の制約はあれど、開発時の自由度として実現される。
|
||||
Reference in New Issue
Block a user