nyash

🐱 Nyash プログラミング言語

次世代ブラウザーネイティブ開発体験

🇺🇸 English Version / 英語版はこちら

Build Status Everything is Box WebAssembly Try Now MIT License


🚀 今すぐNyashを体験!

インストール不要、設定不要 - ブラウザーを開くだけ!

👉 🎮 Nyashブラウザープレイグラウンド起動 👈

体験できる機能:


Nyashが革命を起こす理由

🎯 メモリ安全性の革命

// 従来の言語: 手動メモリ管理、クラッシュ、セキュリティ問題
// Nyash: Everything is Box - 自動的、安全、エレガント

static box Main {
    init { player, enemies, canvas }
    
    main() {
        me.player = new PlayerBox("勇者", 100)
        me.canvas = new WebCanvasBox("game", 800, 600)
        
        // メモリは自動管理 - クラッシュなし、メモリリークなし!
        me.player.render(me.canvas)
        return "ゲーム安全実行中!"
    }
}

🌐 ブラウザーファースト設計

🎨 創作プログラミングが簡単に

// コードでアートを作る - 自然に!
box Artist {
    init { name, color }
    
    paintMasterpiece(canvas) {
        canvas.fillCircle(100, 100, 50, me.color)
        canvas.fillText("Art by " + me.name, 10, 200, "24px Arial", me.color)
    }
}

// 複数のアーティストが協力
picasso = new Artist("ピカソ", "red")
monet = new Artist("モネ", "blue")
// 各Boxが独自の状態と動作を維持!

非同期処理の簡潔性

// 複雑さなしの並列処理
nowait future1 = heavyComputation(10000)
nowait future2 = renderGraphics()

// 実行中に他の作業を...
setupUI()

// 準備ができたら結果を取得
result1 = await future1
result2 = await future2

🏗️ 革命的アーキテクチャ

Everything is Box 哲学

Nyashのすべての値は Box - 統一された、メモリ安全なコンテナです:

従来の言語 Nyash
int x = 42; x = new IntegerBox(42)
string name = "Hello"; name = new StringBox("Hello")
複雑なcanvas設定 canvas = new WebCanvasBox("game", 800, 600)
手動メモリ管理 自動Boxライフサイクル管理

Static Box Main パターン

// クリーンで予測可能なプログラム構造
static box Main {
    init { database, ui, gameState }  // すべてのフィールドを事前宣言
    
    main() {
        // 論理的順序で初期化
        me.database = new DatabaseBox("save.db")
        me.ui = new UIManagerBox()
        me.gameState = new GameStateBox()
        
        // プログラムロジックここに
        return runGameLoop()
    }
}

視覚的デバッグ統合

debug = new DebugBox()
debug.startTracking()

player = new PlayerBox("勇者")
debug.trackBox(player, "メインキャラクター")

// ブラウザーでリアルタイムメモリ可視化!
print(debug.memoryReport())  // ライブ統計、デバッグ地獄なし

🎮 創作コーディングに最適

ゲーム開発

教育的プログラミング

Webアプリケーション


📖 言語の特徴

クリーンで表現力豊かな構文

// 自然なオブジェクト指向プログラミング
box Player {
    init { name, health, inventory }
    
    Player(playerName) {
        me.name = playerName
        me.health = 100
        me.inventory = new ArrayBox()
    }
    
    takeDamage(amount) {
        me.health = me.health - amount
        if me.health <= 0 {
            me.respawn()
        }
    }
    
    respawn() {
        me.health = 100
        print(me.name + " がリスポーンしました!")
    }
}

強力な演算子

// 明確性のための自然言語演算子
isAlive = health > 0 and not poisoned
canCast = mana >= spellCost or hasItem("魔法の指輪")
gameOver = playerDead or timeUp

// 内蔵数学演算
distance = sqrt((x2 - x1)^2 + (y2 - y1)^2)
angle = atan2(deltaY, deltaX)

ジェネリックプログラミング

// 型安全なジェネリックコンテナ
box Container<T> {
    init { value }
    
    Container(item) { me.value = item }
    getValue() { return me.value }
}

numbers = new Container<IntegerBox>(42)
texts = new Container<StringBox>("こんにちは")

🛠️ 使い始める

ブラウザー開発(推奨)

# 1. リポジトリクローン
git clone https://github.com/moe-charm/nyash.git
cd nyash

# 2. WebAssemblyバージョンビルド
cd projects/nyash-wasm
./build.sh

# 3. ブラウザーでプレイグラウンドを開く
# 任意の現代ブラウザーでnyash_playground.htmlを開く

ネイティブ開発

🐧 Linux/WSL

# ネイティブバージョンビルド
cargo build --release

# プログラムをローカルで実行
./target/release/nyash program.nyash

# 例を試す
./target/release/nyash test_async_demo.nyash
./target/release/nyash app_dice_rpg.nyash

🪟 Windows版 (クロスコンパイル)

# クロスコンパイラーインストール
cargo install cargo-xwin

# Windows実行ファイルビルド
cargo xwin build --target x86_64-pc-windows-msvc --release

# 生成された実行ファイル (916KB)
target/x86_64-pc-windows-msvc/release/nyash.exe

🎯 対象ユーザー


🤝 貢献

Nyashはオープンソースで、貢献を歓迎しています!

📄 ライセンス

MIT ライセンス - 個人および商用利用無料。


🔗 リンク

👨‍💻 作者

Moe Charm - プログラミング言語デザイナー・開発者

AI支援と献身的開発で革新的プログラミング言語を創造 🤖


🤖 プロジェクトのサポート

Nyashは最先端のAI協業で開発されています!

継続的な開発をサポートしたい場合:

開発サポート - イノベーションの燃料を!

Claude Code による支援 - 高度なAI開発ツールは無料ではありません! 🤖

あなたのサポートはプロジェクトの維持、新機能の開発、プログラミング言語設計の境界を押し広げることに役立ちます。すべての貢献が違いを生みます! 🙏


❤️、🤖 Claude Code、そしてEverything is Box哲学で構築

Nyash - すべての値がBoxであり、すべてのBoxが物語を語る場所。