[Squeak-ja: 3045] Re: Wiki としての SuperSwiki

Koji Yokokawa koubo2006 @ yengawa.jpn.org
2006年 7月 12日 (水) 17:31:10 JST


横川です。
お付き合いありがとうございます。

On Wed, 12 Jul 2006 03:32:33 +0900
"NAKATA, Shunsuke" <scriptonwikipage @ yahoo.co.jp> wrote:

> 横川さま
> 
> 中田です。返信ありがとうございます。
> 
> >>>> 高階の抽象化とその視覚化にはぼくも興味があって、
> >>>> IPA未踏プロジェクトのSwimmyで試みました。
> >>>> http://yengawa.homedns.org:8888/Swimmy
> >>>> Etoyですでにプログラムされた複数のオブジェクトをさらに組み合わせて
> >>>> 別のプログラムを構成する仕組みで、状態遷移図を視覚化に使いました。
> >>>> 可能性はありそうだけど、どう利用するかが難しくて課題を残してます。
> 
> サイトを拝見し、イメージファイルも開いてみましたが、、、
> 今ひとつ操作法がよくわかりませんでした。。。。
> (Squeakにまだ慣れてないのが大きな理由かも知れませんが)
> 
> サイトに書かれていた英文の説明をみましたが、
> エージェントシステムとのことですね。

使い方がわかりにくくてすみません。別の事にかまけて整備をほったらかしてま
す。
やっぱり使ってるところのビデオとか欲しいですよね。。。

Swimmyシステム自体はマルチエージェント開発実行環境ですが、その中のエージェ
ントのプログラミングをEtoyでプログラムされたオブジェクトをさらに組み合わ
せるという方法でやっているのでご紹介しました。
厳密に言うと高階とエージェントとは関係ありません。
(宣伝に走って、混乱させてしまったかもしれません。すみません。)

> 
> 残念ながら、私はエージェントのことは詳しくないのですが、
> テンプレートや高階関数が要素同士を強く結合させるものだとしたら、
> エージェントは弱く結合するというイメージでよろしいでしょうか。

その通りです。
結合力と考えると関数とマルチエージェントの間にオブジェクト指向が入ると思
います。(オブジェクト指向とは計算をオブジェクトという単位で区切ってオブ
ジェクト同士のメッセージのやり取りで計算を進める技術です。)
マルチエージェントはメッセージのやり取りをさらに柔軟にしています。

> 
> エージェント技術の用途が見えない、ひとつの理由は、
> この技術の特性によるものがあると思います。
> コーディング作業が主体をしめる現状のプログラミング環境に
> 適しているのは、静的な方つまりテンプレートや高階関数です。
> 
> そしてもうひとつの理由は、エージェント技術が未成熟である
> ことにあるのではないでしょうか。エージェントを動作させる
> 環境や言語など、基盤となる技術は十分だ思われますが、
> 実用的なフレームワークは(恐らく)存在しないのではありませんか。
> 
> 今でこそ当たり前になっているテンプレートの技術も、
> 「汎用プログラミング」という手法として古くから一部の
> 計算機科学者には知られていましたし、Ada言語でもgeneric機構
> として採用されていました。しかし、それが今のように実用
> 目的に用いられるまでには、SmalltalkのCollectionを含めて、
> ライブラリー・フレームワークの試行錯誤の蓄積があったからです。
> C++のテンプレートライブラリーはそれらの経験に基づくものです。
> 
> エージェントの場合、ソフトウェア世界をどのようにすれば、
> 過不足なくモデル化すればいいか、つまり、エージェントの
> 語彙をどのように設定するか、語彙のフレームワークがまだ
> 成熟していないのではないでしょうか。
> 
> 例えば「テレビのリモコン操作」などのようにな余りにも狭い世界で
> 語彙を決めると、テレビ以外の装置の操作ができないものとなります。
> 動的な性質をもつエージェントである必要すらなく、普通のオブジェクト
> で十分となってしまうわけです。
> 
> だからといって、具体的な目標がないままだと先には進めませんので、
> 手始めには、既存のオブジェクト技術で作られたものをエージェント
> でつくり直してみるというのはどうでしょうか。簡単なところでは、
> ウィンドウツールキットをエージェントで書いたらどうなるでしょう。
> その中で、どのような語彙が共通化できて、どのような語彙は共通化
> できないかが見えてくるのではないでしょうか。うまくすれば、
> その語彙はトランザクション制御やファイル操作やデータベース処理
> にさえ使えるかもしれません。

マルチエージェントの実用化にはおっしゃるとおりの問題があります。
現在それを解決する方向として具体的に進んでいるものの一つはFIPAというエー
ジェント間コミュニケーションの標準規格化です。

FIPAホームページ
http://www.fipa.org/

FIPAのとても詳しい説明。
日本語!チュートリアルつき!
http://www.mamezou.net/AgentVillage/index.html
(実はこれも宣伝です。注意;-)

個人的感想ですが、オブジェクト指向が出始めの頃「それって関数でできるじゃ
ん」といわれていたようですが、現在のエージェント技術も同じような境遇にあ
るように感じます。

> 
> 
> 
> 慣れた行動は別としても、私たちが何かをする時、とりわけ新しい何か
> を考えたり・作り出すときには頭の中には「イメージ」があります。
> イメージという思考思考過程は、これまでの経験から得たものの流れを、
> そのとき考えているものに "当てはめる" 過程が大きいと思います。
> 
> 難しく言えば、既知の物事との「同型性」(数学用語) を見つけて、
> それ関連づいている解法(アルゴリズム)を当てはめるというわけです。
> 逆に言えば、当てはめることのできる経験、つまり、思考の雛形
> がなければ、物事を解決できないといえます。
> 
> 
> 実用性が確かめられた多くの雛形が出揃った段階で、「利用者=作成者」
> の環境は本当の意味で実現するのではないでしょうか。その時には、
> 利用者(=作成者)は既存の雛形をいくつかつなぎ合わせて、自分の目下の
> 問題を簡単に解決している、という姿を私はイメージしています。
> "つなぎ合わせる" 作業を通して、利用者はそれと知らずにプログラミング
> 行為をしているというわけです。

オブジェクト指向技術ではタイプやインターフェイスと呼ばれる仕組みを利用し
て同型性をプログラミングに生かす方法が広く利用されていますね。
マルチエージェント技術ではロール(役割)によって同型性を取り入れています。
ぼくはこれをだんだんと「利用者=作成者」環境に近づく過程だと感じているの
ですが、これは意見の分かれるところでしょう。


-- !
Koji Yokokawa <koubo2006 @ yengawa.jpn.org>
    http://yengawa.com/
    ^self new!




Squeak-ja メーリングリストの案内