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