Network Scheme
大規模サーバーから解放し有機的分散ネットワーキングの実現に向けて
スクリプト言語の特徴
• キーボードから直接プログラミング
• エージェントがコンピュータ世界で即座に実行
• 伝えた内容をその場でエージェントに確認もできる
し
ひと
インタラクション 知識
エージェント
エージェント間会話はScheme言語で
• 人がスクリプトでエージェントに知識を教える
• 教わった知識をもとに他のエージェントと会話する
• エージェントはそれぞれ独自の役割を持ち仕事をする
• 会話を通して仕事の結果確認と新しい役割を伝える
• 遠いエージェントには伝言ゲームで伝える
しし
しし しし
しし
しし
しし
しし
Scheme エージェントに組み込む機能
• イベントドリブン型のREPLを組み込む
• 通信ソケット接続機能をプロシジャーとして組み込む
• マルチスレッド処理機能を組み込む
• 追加コマンドはrequest、threadやセキュリテイ関連コマンド
• エージェント間の会話はrequestコマンドで行う
• 伝言はrequestコマンドの中にスクリプトリテラルを記述
会話の例
• エージェントは立ち上がると以前の知識をファイルから読み込みメインが起動
• エージェントはキーボードからスクリプトを受け付けるスレッドを立ち上げる
• エージェントは他のエージェントから接続されると新たなスレッドを起動する
• リクエストを他のエージェントに送り結果をスクリプトと見なし評価する
• 動作中のメインスレッドで使っている関数定義を変更する
• 新しい関数定義も含めバックアップする
(interactor b)(interactor a)
(connect b)
(request b ‘(+ 1 2 3 4)) (+ 1 2 3 4)
1010
(request b
‘(request c ‘(* 2 3 ))
(request c ‘(* 2 3))
何故ここで Scheme?
• 関数定義ができて関数利用ができ結果がその場で判る
• パーサーが小さく拡張が容易で実装もコンパクト
• 文の区切りが明確でかっこ良い
• エージェントが活躍するのは動的言語でしょ!
• Tiny Schemeなら私にもいじれる
出典: ちょっと変わったLisp入門
吉田 裕美
Mono To Monoはもっと会話したがっているはずだ!
• 植木鉢は奇麗な花を咲かせるために話したがっているはずだ(koubachi)
• 多くの物は直射日光をいやがっているはずだ(オートシェーディング)
• 多くの家電はもっと立派なユーザーインターフェースをほしがっているはずだ
• 車同士も喧嘩せず仲良く話したがっているはずだ
• 雲の上の神様に操られるのでなく、皆んなで機能を融通し合いたいはずだ
--
:::
:
--
--
実装形態と新規プロシジャー
• Tiny Scheme をベースに拡張
• IP Socket をREPLに組み込む
• IO 関数をイベントドリブン型に変更
• IO イベントでスレッドを起動させる (16 channel)
• リソース解放にdispatchコマンドを追加
• セキュリティ機能組み込み
• CPU16bit, FRAM100kB, ROM100kB, SIO(Fi-FI, NFC, Bluetooth)
• (interactor port)
• (open-socket adr port)
• (discon iop)
• (request iop)
• (thread exp)
• (check thn)
• (break thn)
• (dispatch)
• (main exp)
• (backup fp)
• (auth1 iop msg1)
• (auth2 iop mas4)
• (authr iop)
• (ex-auth1 iop (exp1 exp2 …))
• (ex-auth2 iop)
• (ex-authr iop)
• (setsym symb flag)
• (reqsym symb)
• (key-update symb key)
• (undef symb)
ネットワーク・スレッド関連 セキュリテイ認証関連
デモ!でも!デモ?
ジンクス、デモはいつも失敗する

Mult-channel network scheme