# 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」の哲学は、実行時の制約はあれど、開発時の自由度として実現される。