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