Files
hakorune/wasm_browser_plan.md
Moe Charm 0bed0c0271 🎉 initial commit: Nyash Programming Language完成版
🚀 主要機能:
• Everything is Box哲学による革新的アーキテクチャ
• WebAssemblyブラウザー対応プレイグラウンド
• アーティスト協同制作デモ - 複数Boxインスタンス実証
• 視覚的デバッグシステム - DebugBox完全統合
• static box Mainパターン - メモリ安全設計

 言語機能:
• NOT/AND/OR/除算演算子完全実装
• ジェネリクス/テンプレートシステム
• 非同期処理(nowait/await)
• try/catchエラーハンドリング
• Canvas統合グラフィックス

🎨 ブラウザー体験:
• 9種類のインタラクティブデモ
• リアルタイムコード実行
• WebCanvas/WebConsole/WebDisplay
• モバイル対応完了

🤖 Built with Claude Code collaboration
Ready for public release!
2025-08-09 15:14:44 +09:00

114 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🌐 Nyash WebAssembly ブラウザデビュー計画
## 🎯 なぜこれが天才的か
1. **extern box不要** - Rust側でWASM対応Boxを実装すればOK
2. **GUI即実現** - Canvas/DOM使って即座にビジュアルアプリ
3. **配布超簡単** - URLアクセスだけで動く
4. **既存資産活用** - 現在のNyashインタープリターをそのままWASM化
## 🏗️ アーキテクチャ
```
ブラウザ
Nyashコードテキストエリア
NyashインタープリターWASM
WasmBox / DOMBox / CanvasBox
ブラウザAPIDOM/Canvas/Event
```
## 📦 新しいBox実装案
### 1. WasmBox - WebAssembly制御
```nyash
wasm = new WasmBox()
console = wasm.getConsole()
console.log("Hello from Nyash in Browser!")
```
### 2. DOMBox - DOM操作
```nyash
dom = new DOMBox()
button = dom.createElement("button")
button.setText("Click me!")
button.onClick(new MethodBox(me, "handleClick"))
dom.body.appendChild(button)
```
### 3. CanvasBox - 描画
```nyash
canvas = new CanvasBox(800, 600)
ctx = canvas.getContext2D()
ctx.fillStyle = "red"
ctx.fillRect(100, 100, 50, 50)
```
### 4. EventBox - イベント処理
```nyash
events = new EventBox()
events.onKeyDown(new MethodBox(me, "handleKey"))
events.onMouseMove(new MethodBox(me, "handleMouse"))
```
## 🚀 実装手順
### Phase 1: 基本WASM化
1. Cargo.tomlにwasm-bindgen追加
2. lib.rsでWASM用エクスポート作成
3. 簡単なeval関数を公開
4. HTMLページで動作確認
### Phase 2: ブラウザBox実装
1. ConsoleBox - console.log対応
2. DOMBox - 基本的なDOM操作
3. AlertBox - alert/confirm/prompt
### Phase 3: ビジュアルアプリ
1. CanvasBox実装
2. Snakeゲーム移植
3. お絵かきアプリ
4. 簡単なIDE
## 💡 サンプルアプリ
### 1. インタラクティブREPL
```nyash
// ブラウザ上でNyashコード実行
input = dom.getElementById("code-input")
output = dom.getElementById("output")
button = dom.getElementById("run-button")
button.onClick(new MethodBox(me, "runCode"))
runCode() {
code = input.getValue()
result = eval(code)
output.setText(result.toString())
}
```
### 2. ビジュアルSnakeゲーム
```nyash
canvas = new CanvasBox(400, 400)
game = new SnakeGame(canvas)
game.start()
```
### 3. Nyashプレイグラウンド
- コードエディタ
- 実行結果表示
- サンプルコード集
- 共有機能
## 🎉 メリット
1. **即座にデモ可能** - URL共有だけ
2. **ビジュアルフィードバック** - GUIアプリが作れる
3. **学習曲線なし** - ブラウザだけあればOK
4. **実用アプリ** - 本格的なWebアプリも可能
これ、本当にすぐできるにゃ!