2025-08-12 10:13:11 +09:00
|
|
|
|
# 🚀 Getting Started with Nyash - Practical Guide
|
|
|
|
|
|
|
|
|
|
|
|
**最終更新: 2025年8月8日**
|
|
|
|
|
|
|
|
|
|
|
|
## 🎯 5分でNyashを理解する
|
|
|
|
|
|
|
|
|
|
|
|
Nyashは「Everything is Box」哲学に基づく、シンプルで強力なプログラミング言語です。
|
|
|
|
|
|
このガイドでは、実際にコードを書きながらNyashの機能を学んでいきます。
|
|
|
|
|
|
|
|
|
|
|
|
## ⚡ クイックスタート
|
|
|
|
|
|
|
|
|
|
|
|
### **1. 環境構築**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# リポジトリのクローン
|
|
|
|
|
|
git clone [repository-url]
|
|
|
|
|
|
cd nyash/nyash-rust
|
|
|
|
|
|
|
|
|
|
|
|
# ビルド
|
|
|
|
|
|
cargo build
|
|
|
|
|
|
|
|
|
|
|
|
# 実行
|
2025-11-06 15:41:52 +09:00
|
|
|
|
./target/debug/nyash your_program.hako
|
2025-08-12 10:13:11 +09:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### **2. はじめてのNyashプログラム**
|
2025-11-06 15:41:52 +09:00
|
|
|
|
`hello.hako`を作成:
|
2025-08-12 10:13:11 +09:00
|
|
|
|
```nyash
|
|
|
|
|
|
print("Hello, Nyash World!")
|
|
|
|
|
|
print("Everything is Box! 🎉")
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
実行:
|
|
|
|
|
|
```bash
|
2025-11-06 15:41:52 +09:00
|
|
|
|
./target/debug/nyash hello.hako
|
2025-08-12 10:13:11 +09:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
出力:
|
|
|
|
|
|
```
|
|
|
|
|
|
Hello, Nyash World!
|
|
|
|
|
|
Everything is Box! 🎉
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 📚 基本構文チュートリアル
|
|
|
|
|
|
|
|
|
|
|
|
### **Step 1: 変数と初期化**
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
# 🎯 新機能:初期化付き変数宣言
|
|
|
|
|
|
local name = "Alice"
|
|
|
|
|
|
local age = 25
|
|
|
|
|
|
local height = 165.5
|
|
|
|
|
|
local isStudent = true
|
|
|
|
|
|
|
|
|
|
|
|
print("Name: " + name)
|
|
|
|
|
|
print("Age: " + age)
|
|
|
|
|
|
print("Height: " + height)
|
|
|
|
|
|
print("Student: " + isStudent)
|
|
|
|
|
|
|
|
|
|
|
|
# 複数変数の同時宣言・初期化
|
|
|
|
|
|
local x = 10, y = 20, z = 30
|
|
|
|
|
|
print("Sum: " + (x + y + z)) # 60
|
|
|
|
|
|
|
|
|
|
|
|
# 混合宣言(初期化あり・なし)
|
|
|
|
|
|
local initialized = 42, uninitialized, another = "test"
|
|
|
|
|
|
uninitialized = "assigned later"
|
|
|
|
|
|
print("Values: " + initialized + ", " + uninitialized + ", " + another)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### **Step 2: 演算子の使用**
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
local a = 10
|
|
|
|
|
|
local b = 3
|
|
|
|
|
|
|
|
|
|
|
|
# 算術演算子
|
|
|
|
|
|
print("Addition: " + (a + b)) # 13
|
|
|
|
|
|
print("Subtraction: " + (a - b)) # 7
|
|
|
|
|
|
print("Multiplication: " + (a * b)) # 30
|
|
|
|
|
|
print("Division: " + (a / b)) # 3.3333333333333335
|
|
|
|
|
|
|
|
|
|
|
|
# 論理演算子(自然言語ライク)
|
|
|
|
|
|
local hasPermission = true
|
|
|
|
|
|
local isLoggedIn = true
|
|
|
|
|
|
local canAccess = hasPermission and isLoggedIn
|
|
|
|
|
|
print("Can access: " + canAccess) # true
|
|
|
|
|
|
|
|
|
|
|
|
local isDenied = not canAccess
|
|
|
|
|
|
print("Is denied: " + isDenied) # false
|
|
|
|
|
|
|
|
|
|
|
|
# 比較演算子
|
|
|
|
|
|
print("a > b: " + (a > b)) # true
|
|
|
|
|
|
print("a == b: " + (a == b)) # false
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### **Step 3: 制御構造**
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
function testControlFlow() {
|
|
|
|
|
|
local score = 85
|
|
|
|
|
|
|
|
|
|
|
|
# if文
|
|
|
|
|
|
if score >= 90 {
|
|
|
|
|
|
print("Grade: A")
|
|
|
|
|
|
} else if score >= 80 {
|
|
|
|
|
|
print("Grade: B") # これが実行される
|
|
|
|
|
|
} else {
|
|
|
|
|
|
print("Grade: C or below")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# ループ(統一構文)
|
|
|
|
|
|
local count = 0
|
|
|
|
|
|
loop(count < 3) {
|
|
|
|
|
|
print("Count: " + count)
|
|
|
|
|
|
count = count + 1
|
|
|
|
|
|
if count == 2 {
|
|
|
|
|
|
print("Breaking at 2")
|
|
|
|
|
|
break
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
testControlFlow()
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### **Step 4: Box(クラス)の定義**
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
box Person {
|
|
|
|
|
|
init { name, age, email } # フィールド定義(カンマ必須!)
|
|
|
|
|
|
|
|
|
|
|
|
# コンストラクタ(引数サポート)
|
|
|
|
|
|
Person(n, a, e) {
|
|
|
|
|
|
me.name = n
|
|
|
|
|
|
me.age = a
|
|
|
|
|
|
me.email = e
|
|
|
|
|
|
print("Person created: " + me.name)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# メソッド
|
|
|
|
|
|
introduce() {
|
|
|
|
|
|
print("Hi, I'm " + me.name + ", age " + me.age)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getInfo() {
|
|
|
|
|
|
return me.name + " (" + me.age + ") - " + me.email
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# デストラクタ
|
|
|
|
|
|
fini() {
|
|
|
|
|
|
print("Person destroyed: " + me.name)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 使用例
|
|
|
|
|
|
person = new Person("Bob", 30, "bob@example.com")
|
|
|
|
|
|
person.introduce()
|
|
|
|
|
|
print("Info: " + person.getInfo())
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 🏭 実践例:Calculator アプリ
|
|
|
|
|
|
|
|
|
|
|
|
完全なCalculatorアプリを実装:
|
|
|
|
|
|
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
# 📱 Calculator App - Nyash版
|
|
|
|
|
|
|
|
|
|
|
|
box Calculator {
|
|
|
|
|
|
init { history }
|
|
|
|
|
|
|
|
|
|
|
|
Calculator() {
|
|
|
|
|
|
me.history = new ArrayBox()
|
|
|
|
|
|
print("🧮 Calculator initialized!")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
add(a, b) {
|
|
|
|
|
|
local result = a + b
|
|
|
|
|
|
me.addToHistory("ADD", a, b, result)
|
|
|
|
|
|
return result
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
subtract(a, b) {
|
|
|
|
|
|
local result = a - b
|
|
|
|
|
|
me.addToHistory("SUB", a, b, result)
|
|
|
|
|
|
return result
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
multiply(a, b) {
|
|
|
|
|
|
local result = a * b
|
|
|
|
|
|
me.addToHistory("MUL", a, b, result)
|
|
|
|
|
|
return result
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
divide(a, b) {
|
|
|
|
|
|
if b == 0 {
|
|
|
|
|
|
print("❌ Error: Division by zero!")
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
local result = a / b
|
|
|
|
|
|
me.addToHistory("DIV", a, b, result)
|
|
|
|
|
|
return result
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
addToHistory(op, a, b, result) {
|
|
|
|
|
|
local record = op + ": " + a + " " + op + " " + b + " = " + result
|
|
|
|
|
|
me.history.push(record)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
showHistory() {
|
|
|
|
|
|
print("📊 Calculation History:")
|
|
|
|
|
|
local size = me.history.size()
|
|
|
|
|
|
local i = 0
|
|
|
|
|
|
loop(i < size) {
|
|
|
|
|
|
print(" " + (i + 1) + ". " + me.history.get(i))
|
|
|
|
|
|
i = i + 1
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
clear() {
|
|
|
|
|
|
me.history = new ArrayBox()
|
|
|
|
|
|
print("🧹 History cleared!")
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# ✨ Calculator使用例
|
|
|
|
|
|
calc = new Calculator()
|
|
|
|
|
|
|
|
|
|
|
|
print("=== Basic Operations ===")
|
|
|
|
|
|
print("10 + 5 = " + calc.add(10, 5))
|
|
|
|
|
|
print("10 - 3 = " + calc.subtract(10, 3))
|
|
|
|
|
|
print("4 * 7 = " + calc.multiply(4, 7))
|
|
|
|
|
|
print("15 / 3 = " + calc.divide(15, 3))
|
|
|
|
|
|
print("10 / 0 = " + calc.divide(10, 0)) # ゼロ除算エラーテスト
|
|
|
|
|
|
|
|
|
|
|
|
print("")
|
|
|
|
|
|
calc.showHistory()
|
|
|
|
|
|
|
|
|
|
|
|
print("")
|
|
|
|
|
|
print("=== Complex Calculations ===")
|
|
|
|
|
|
local complex1 = calc.add(calc.multiply(3, 4), calc.divide(20, 4))
|
|
|
|
|
|
print("(3 * 4) + (20 / 4) = " + complex1)
|
|
|
|
|
|
|
|
|
|
|
|
calc.showHistory()
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## ⚡ 並行処理の実践
|
|
|
|
|
|
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
# 🚀 Parallel Processing Example
|
|
|
|
|
|
|
|
|
|
|
|
function heavyComputation(iterations) {
|
|
|
|
|
|
print("⚙️ Starting computation with " + iterations + " iterations...")
|
|
|
|
|
|
|
|
|
|
|
|
local sum = 0
|
|
|
|
|
|
local i = 0
|
|
|
|
|
|
loop(i < iterations) {
|
|
|
|
|
|
sum = sum + (i * i)
|
|
|
|
|
|
i = i + 1
|
|
|
|
|
|
|
|
|
|
|
|
# 進捗表示(1000回毎)
|
|
|
|
|
|
if (i % 1000) == 0 {
|
|
|
|
|
|
print(" Progress: " + i + "/" + iterations)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
print("✅ Computation completed: " + sum)
|
|
|
|
|
|
return sum
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function parallelDemo() {
|
|
|
|
|
|
print("🚀 Starting parallel computations...")
|
|
|
|
|
|
|
|
|
|
|
|
# 3つのタスクを並行実行
|
|
|
|
|
|
future1 = nowait heavyComputation(5000)
|
|
|
|
|
|
future2 = nowait heavyComputation(3000)
|
|
|
|
|
|
future3 = nowait heavyComputation(4000)
|
|
|
|
|
|
|
|
|
|
|
|
print("⏳ All tasks started. Waiting for results...")
|
|
|
|
|
|
|
|
|
|
|
|
# 結果を待機して取得
|
|
|
|
|
|
result1 = await future1
|
|
|
|
|
|
result2 = await future2
|
|
|
|
|
|
result3 = await future3
|
|
|
|
|
|
|
|
|
|
|
|
local total = result1 + result2 + result3
|
|
|
|
|
|
print("🎉 All tasks completed!")
|
|
|
|
|
|
print("Total sum: " + total)
|
|
|
|
|
|
|
|
|
|
|
|
return total
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 実行
|
|
|
|
|
|
parallelDemo()
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 🏗️ Static Box(名前空間)の活用
|
|
|
|
|
|
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
# 🏗️ Utility Classes with Static Boxes
|
|
|
|
|
|
|
|
|
|
|
|
static box MathUtils {
|
|
|
|
|
|
init { PI, E }
|
|
|
|
|
|
|
|
|
|
|
|
static {
|
|
|
|
|
|
me.PI = 3.14159265359
|
|
|
|
|
|
me.E = 2.71828182846
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
square(x) {
|
|
|
|
|
|
return x * x
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
circleArea(radius) {
|
|
|
|
|
|
return me.PI * me.square(radius)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
power(base, exp) {
|
|
|
|
|
|
local result = 1
|
|
|
|
|
|
local i = 0
|
|
|
|
|
|
loop(i < exp) {
|
|
|
|
|
|
result = result * base
|
|
|
|
|
|
i = i + 1
|
|
|
|
|
|
}
|
|
|
|
|
|
return result
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static box StringUtils {
|
|
|
|
|
|
init { EMPTY }
|
|
|
|
|
|
|
|
|
|
|
|
static {
|
|
|
|
|
|
me.EMPTY = ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
reverse(str) {
|
|
|
|
|
|
# 簡易的な実装例
|
|
|
|
|
|
return "REVERSED:" + str
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
isEmpty(str) {
|
|
|
|
|
|
return str == me.EMPTY
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 使用例
|
|
|
|
|
|
print("π = " + MathUtils.PI)
|
|
|
|
|
|
print("Circle area (r=5): " + MathUtils.circleArea(5))
|
|
|
|
|
|
print("2^8 = " + MathUtils.power(2, 8))
|
|
|
|
|
|
|
|
|
|
|
|
print("Empty check: " + StringUtils.isEmpty(""))
|
|
|
|
|
|
print("Reverse: " + StringUtils.reverse("Hello"))
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 🐛 デバッグ機能の活用
|
|
|
|
|
|
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
# 🐛 Debug Features Showcase
|
|
|
|
|
|
|
|
|
|
|
|
box DebugExample {
|
|
|
|
|
|
init { data, counter }
|
|
|
|
|
|
|
|
|
|
|
|
DebugExample() {
|
|
|
|
|
|
me.data = "example"
|
|
|
|
|
|
me.counter = 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
process() {
|
|
|
|
|
|
me.counter = me.counter + 1
|
|
|
|
|
|
return "Processed #" + me.counter
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function debuggingDemo() {
|
|
|
|
|
|
# DebugBoxでトラッキング開始
|
|
|
|
|
|
DEBUG = new DebugBox()
|
|
|
|
|
|
DEBUG.startTracking()
|
|
|
|
|
|
|
|
|
|
|
|
print("🔍 Creating objects for debugging...")
|
|
|
|
|
|
|
|
|
|
|
|
# オブジェクトを作成してトラッキング
|
|
|
|
|
|
obj1 = new DebugExample()
|
|
|
|
|
|
obj2 = new DebugExample()
|
|
|
|
|
|
|
|
|
|
|
|
DEBUG.trackBox(obj1, "Primary Object")
|
|
|
|
|
|
DEBUG.trackBox(obj2, "Secondary Object")
|
|
|
|
|
|
|
|
|
|
|
|
# 処理実行
|
|
|
|
|
|
result1 = obj1.process()
|
|
|
|
|
|
result2 = obj2.process()
|
|
|
|
|
|
result3 = obj1.process()
|
|
|
|
|
|
|
|
|
|
|
|
print("Results: " + result1 + ", " + result2 + ", " + result3)
|
|
|
|
|
|
|
|
|
|
|
|
# デバッグレポート表示
|
|
|
|
|
|
print("")
|
|
|
|
|
|
print("=== Memory Report ===")
|
|
|
|
|
|
print(DEBUG.memoryReport())
|
|
|
|
|
|
|
|
|
|
|
|
print("")
|
|
|
|
|
|
print("=== Full Debug Dump ===")
|
|
|
|
|
|
print(DEBUG.dumpAll())
|
|
|
|
|
|
|
|
|
|
|
|
# デバッグ情報をファイルに保存
|
|
|
|
|
|
DEBUG.saveToFile("debug_output.txt")
|
|
|
|
|
|
print("🎉 Debug information saved to debug_output.txt")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
debuggingDemo()
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 📦 ファイル組織とモジュール
|
|
|
|
|
|
|
|
|
|
|
|
### **プロジェクト構造**
|
|
|
|
|
|
```
|
|
|
|
|
|
my_nyash_project/
|
2025-11-06 15:41:52 +09:00
|
|
|
|
├── main.hako # メインプログラム
|
2025-08-12 10:13:11 +09:00
|
|
|
|
├── utils/
|
2025-11-06 15:41:52 +09:00
|
|
|
|
│ ├── math.hako # 数学ユーティリティ
|
|
|
|
|
|
│ ├── string.hako # 文字列ユーティリティ
|
|
|
|
|
|
│ └── debug.hako # デバッグ関数
|
2025-08-12 10:13:11 +09:00
|
|
|
|
└── models/
|
2025-11-06 15:41:52 +09:00
|
|
|
|
├── person.hako # Personクラス
|
|
|
|
|
|
└── calculator.hako # Calculatorクラス
|
2025-08-12 10:13:11 +09:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-11-06 15:41:52 +09:00
|
|
|
|
### **main.hako**
|
2025-08-12 10:13:11 +09:00
|
|
|
|
```nyash
|
|
|
|
|
|
# 📦 Module System Example
|
|
|
|
|
|
|
2025-11-06 15:41:52 +09:00
|
|
|
|
include "utils/math.hako"
|
|
|
|
|
|
include "utils/string.hako"
|
|
|
|
|
|
include "models/person.hako"
|
|
|
|
|
|
include "models/calculator.hako"
|
2025-08-12 10:13:11 +09:00
|
|
|
|
|
|
|
|
|
|
function main() {
|
|
|
|
|
|
print("🚀 Multi-module Nyash Application")
|
|
|
|
|
|
|
|
|
|
|
|
# 各モジュールの機能を使用
|
|
|
|
|
|
person = new Person("Alice", 25, "alice@example.com")
|
|
|
|
|
|
person.introduce()
|
|
|
|
|
|
|
|
|
|
|
|
calc = new Calculator()
|
|
|
|
|
|
result = calc.add(10, 20)
|
|
|
|
|
|
print("Calculation result: " + result)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
main()
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 🎯 ベストプラクティス
|
|
|
|
|
|
|
|
|
|
|
|
### **1. 変数命名**
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
# ✅ Good
|
|
|
|
|
|
local userName = "alice"
|
|
|
|
|
|
local totalAmount = 1000
|
|
|
|
|
|
local isComplete = true
|
|
|
|
|
|
|
|
|
|
|
|
# ❌ Avoid
|
|
|
|
|
|
local x = "alice"
|
|
|
|
|
|
local amt = 1000
|
|
|
|
|
|
local flag = true
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### **2. Box設計**
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
# ✅ Good: 明確な責任分離
|
|
|
|
|
|
box UserAccount {
|
|
|
|
|
|
init { username, email, balance }
|
|
|
|
|
|
|
|
|
|
|
|
UserAccount(u, e) {
|
|
|
|
|
|
me.username = u
|
|
|
|
|
|
me.email = e
|
|
|
|
|
|
me.balance = 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
deposit(amount) {
|
|
|
|
|
|
me.balance = me.balance + amount
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# ❌ Avoid: 責任の混在
|
|
|
|
|
|
box EverythingBox {
|
|
|
|
|
|
# 多すぎる責任を持たせない
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### **3. エラーハンドリング**
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
function safeOperation(a, b) {
|
|
|
|
|
|
if b == 0 {
|
|
|
|
|
|
print("❌ Error: Division by zero")
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
return a / b
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### **4. パフォーマンス考慮**
|
|
|
|
|
|
```nyash
|
|
|
|
|
|
# ✅ 効率的:static box使用
|
|
|
|
|
|
result = MathUtils.calculate(data)
|
|
|
|
|
|
|
|
|
|
|
|
# ✅ 効率的:初期化付き宣言
|
|
|
|
|
|
local result = heavyCalculation(), cache = new MapBox()
|
|
|
|
|
|
|
|
|
|
|
|
# ⚠️ 注意:不要なオブジェクト生成を避ける
|
|
|
|
|
|
loop(i < 1000) {
|
|
|
|
|
|
# 毎回new しない設計を心がける
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 🚀 次のステップ
|
|
|
|
|
|
|
|
|
|
|
|
### **学習順序**
|
|
|
|
|
|
1. ✅ **基本構文** - このガイドで完了
|
2025-11-06 15:41:52 +09:00
|
|
|
|
2. **並行処理** - `test_async_*.hako`を参考に
|
2025-08-12 10:13:11 +09:00
|
|
|
|
3. **Static Box応用** - ユーティリティクラス作成
|
|
|
|
|
|
4. **デバッグ技法** - DebugBox完全活用
|
|
|
|
|
|
5. **アプリケーション開発** - 実践的なプロジェクト
|
|
|
|
|
|
|
|
|
|
|
|
### **サンプルプログラム**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 実装済みサンプル
|
2025-11-06 15:41:52 +09:00
|
|
|
|
./target/debug/nyash test_local_init.hako # 初期化付き変数
|
|
|
|
|
|
./target/debug/nyash app_dice_rpg.hako # RPGバトルゲーム
|
|
|
|
|
|
./target/debug/nyash app_statistics.hako # 統計計算
|
|
|
|
|
|
./target/debug/nyash test_async_parallel.hako # 並行処理
|
2025-08-12 10:13:11 +09:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### **リファレンス**
|
|
|
|
|
|
- `docs/LANGUAGE_OVERVIEW_2025.md` - 言語全体概要
|
|
|
|
|
|
- `docs/TECHNICAL_ARCHITECTURE_2025.md` - 技術仕様
|
|
|
|
|
|
- `CLAUDE.md` - 開発者向け詳細情報
|
|
|
|
|
|
|
|
|
|
|
|
## 🎉 おめでとうございます!
|
|
|
|
|
|
|
|
|
|
|
|
このガイドでNyashの主要機能を学習しました!
|
|
|
|
|
|
|
|
|
|
|
|
**習得内容:**
|
|
|
|
|
|
- ✅ 基本構文(変数・演算子・制御構造)
|
|
|
|
|
|
- ✅ Box(クラス)定義とオブジェクト指向
|
|
|
|
|
|
- ✅ 並行処理・非同期プログラミング
|
|
|
|
|
|
- ✅ Static Box・名前空間システム
|
|
|
|
|
|
- ✅ デバッグ機能・開発支援ツール
|
|
|
|
|
|
- ✅ 実践的なアプリケーション開発
|
|
|
|
|
|
|
|
|
|
|
|
**Nyashでプログラミングの新しい可能性を探究してください!** 🚀
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
*Getting Started Guide v1.0*
|
|
|
|
|
|
*Everything is Box - Start Simple, Think Big*
|