Files
hakorune/docs/reference/builtin-boxes.md
Moe Charm 5080967ed3 📚 feat: docs/reference構造完成 + P2P実装Issue作成
🗂️ 重要ドキュメントをdocs/reference/に整理:
- language-reference.md (言語仕様完全リファレンス)
- override-delegation-syntax.md (デリゲーション構文仕様)
- design-philosophy.md (明示的デリゲーション革命)
- builtin-boxes.md (ビルトインBox型リファレンス)

🌐 P2P_IMPLEMENTATION_ISSUE.md作成:
- AI大会議仕様完全準拠
- 既存実装との違い明確化
- 段階的実装計画 (IntentBox→MessageBus→P2PBox)
- 包括的テスト要件
- Copilot実装用詳細仕様

🔄 docs/README.md更新:
- reference/構造反映
- アクセシビリティ向上

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-12 10:12:33 +09:00

182 lines
4.1 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.

# ビルトインBox型 API リファレンス
Nyashで利用できる全ビルトインBox型のAPI仕様書です。
## 📡 P2PBox - 通信ードBox
P2P通信を行うードを表すBox。通信世界IntentBoxに参加してメッセージを送受信できます。
### コンストラクタ
```nyash
// 通信ノードを作成
local node = new P2PBox(node_id, world)
```
**パラメータ:**
- `node_id` (String): ノードの一意識別子
- `world` (IntentBox): 参加する通信世界
### メソッド
#### send(intent, data, target)
特定のノードにメッセージを送信します。
```nyash
local result = node.send("greeting", message_data, "target_node_id")
```
**パラメータ:**
- `intent` (String): メッセージの種類
- `data` (Box): 送信するデータ
- `target` (String): 送信先ードID
**戻り値:** StringBox("sent")
#### on(intent, callback)
指定したintentのメッセージを受信した際のリスナーを登録します。
```nyash
node.on("chat", callback_function)
```
**パラメータ:**
- `intent` (String): 監視するメッセージ種類
- `callback` (MethodBox): 受信時に呼ばれる関数
**戻り値:** StringBox("listener added")
#### off(intent)
指定したintentのリスナーを解除します。
```nyash
node.off("chat")
```
**パラメータ:**
- `intent` (String): 解除するメッセージ種類
**戻り値:** StringBox("listener removed" / "no listener found")
#### get_node_id()
このードのIDを取得します。
```nyash
local id = node.get_node_id()
```
**戻り値:** StringBox(ードID)
### 使用例
```nyash
// 通信世界を作成
local world = new IntentBox()
// 2つのードを作成
local alice = new P2PBox("alice", world)
local bob = new P2PBox("bob", world)
// Bobがgreetingを受信するリスナー設定
bob.on("greeting", greeting_handler)
// AliceからBobにメッセージ送信
local message = new MapBox()
message.set("text", "Hello Bob!")
alice.send("greeting", message, "bob")
```
---
## 📨 IntentBox - 通信世界Box
P2PBoxが通信を行うための世界ネットワークを表すBox。複数のードが同一のIntentBoxを共有して通信します。
### コンストラクタ
```nyash
// 通信世界を作成
local world = new IntentBox()
```
**パラメータ:** なし
### 特徴
- ローカル通信: 同一プロセス内のP2PBox間でメッセージをやり取り
- スレッドセーフ: Arc<Mutex>により並行アクセス対応
- 将来拡張: WebSocket版や分散版への拡張予定
### 使用例
```nyash
// 1つの通信世界に複数ードが参加
local world = new IntentBox()
local node1 = new P2PBox("server", world)
local node2 = new P2PBox("client", world)
// 同一世界内での通信が可能
node1.send("data", payload, "client")
```
---
## 📝 StringBox - 文字列Box
文字列データを格納・操作するBox。
### コンストラクタ
```nyash
local text = new StringBox("Hello")
```
### 基本メソッド
- `toString()`: 文字列表現を取得
- `length()`: 文字列長を取得
- `concat(other)`: 文字列結合
- `substring(start, end)`: 部分文字列取得
---
## 🔢 IntegerBox - 整数Box
整数データを格納・操作するBox。
### コンストラクタ
```nyash
local num = new IntegerBox(42)
```
### 基本メソッド
- `toString()`: 文字列表現を取得
- `add(other)`: 加算
- `subtract(other)`: 減算
- `multiply(other)`: 乗算
- `divide(other)`: 除算
---
## 📺 ConsoleBox - コンソール出力Box
コンソールへの出力を行うBox。
### コンストラクタ
```nyash
local console = new ConsoleBox()
```
### メソッド
- `log(message)`: メッセージをログ出力
- `error(message)`: エラーメッセージを出力
---
## 🗂️ MapBox - 連想配列Box
キー・バリューペアでデータを格納するBox。
### コンストラクタ
```nyash
local map = new MapBox()
```
### メソッド
- `set(key, value)`: キー・バリューを設定
- `get(key)`: 値を取得
- `has(key)`: キーが存在するかチェック
- `remove(key)`: キー・バリューを削除
---
最終更新: 2025年8月11日