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

4.1 KiB
Raw Blame History

ビルトインBox型 API リファレンス

Nyashで利用できる全ビルトインBox型のAPI仕様書です。

📡 P2PBox - 通信ードBox

P2P通信を行うードを表すBox。通信世界IntentBoxに参加してメッセージを送受信できます。

コンストラクタ

// 通信ノードを作成
local node = new P2PBox(node_id, world)

パラメータ:

  • node_id (String): ノードの一意識別子
  • world (IntentBox): 参加する通信世界

メソッド

send(intent, data, target)

特定のノードにメッセージを送信します。

local result = node.send("greeting", message_data, "target_node_id")

パラメータ:

  • intent (String): メッセージの種類
  • data (Box): 送信するデータ
  • target (String): 送信先ードID

戻り値: StringBox("sent")

on(intent, callback)

指定したintentのメッセージを受信した際のリスナーを登録します。

node.on("chat", callback_function)

パラメータ:

  • intent (String): 監視するメッセージ種類
  • callback (MethodBox): 受信時に呼ばれる関数

戻り値: StringBox("listener added")

off(intent)

指定したintentのリスナーを解除します。

node.off("chat")

パラメータ:

  • intent (String): 解除するメッセージ種類

戻り値: StringBox("listener removed" / "no listener found")

get_node_id()

このードのIDを取得します。

local id = node.get_node_id()

戻り値: StringBox(ードID)

使用例

// 通信世界を作成
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を共有して通信します。

コンストラクタ

// 通信世界を作成
local world = new IntentBox()

パラメータ: なし

特徴

  • ローカル通信: 同一プロセス内のP2PBox間でメッセージをやり取り
  • スレッドセーフ: Arcにより並行アクセス対応
  • 将来拡張: WebSocket版や分散版への拡張予定

使用例

// 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。

コンストラクタ

local text = new StringBox("Hello")

基本メソッド

  • toString(): 文字列表現を取得
  • length(): 文字列長を取得
  • concat(other): 文字列結合
  • substring(start, end): 部分文字列取得

🔢 IntegerBox - 整数Box

整数データを格納・操作するBox。

コンストラクタ

local num = new IntegerBox(42)

基本メソッド

  • toString(): 文字列表現を取得
  • add(other): 加算
  • subtract(other): 減算
  • multiply(other): 乗算
  • divide(other): 除算

📺 ConsoleBox - コンソール出力Box

コンソールへの出力を行うBox。

コンストラクタ

local console = new ConsoleBox()

メソッド

  • log(message): メッセージをログ出力
  • error(message): エラーメッセージを出力

🗂️ MapBox - 連想配列Box

キー・バリューペアでデータを格納するBox。

コンストラクタ

local map = new MapBox()

メソッド

  • set(key, value): キー・バリューを設定
  • get(key): 値を取得
  • has(key): キーが存在するかチェック
  • remove(key): キー・バリューを削除

最終更新: 2025年8月11日