ソフトウェア開発において「現実世界のモデリング」を行う際、
OO技術者は「もの」の「自律性」を構想する。
そしてこの自律性は「全てはオブジェクトである」の標語のもと、
汎神論的に脚色され、過剰に導入される。
これまで主に「手段」(設計・開発)の領域で勢力を強めてきた
この過剰な自律性は、その「過剰」であるが故に、宿命的に
「目的」(製品・実行時動作)の領域にも侵出しようとする。
この自律性の欲求は、実際にはOOの黎明期から常に/既に懐胎され、
また小出しに実現されもしてきたが、分散オブジェクト技術の普及に
伴い、この動きはさらに加速しつつある。
このような現状において、だれかが与えた新しいスローガンが
「エージェント指向」である。
確かに標語としての「エージェント指向」は、流行りすたりを何回か
くり返してきた。しかし、前述の「手段→目的」の方向にそった
「自律性」の領土拡大は必然的に継続する。
従ってこれからもエージェント指向は成長を止めない。
近い将来、実行時のソフトウェアコンポーネントは「ある」ではなく
「いる」と叙述されるようになる。
・・・なんつって。長い前置きすんませんでした。
そろそろ流行語ではなくプログラム技術として語り始めてもいいかなと。
分散オブジェクト技術、AI、アーキテクチャパターン、
各社フレームワークの評価などなど、エージェント関連であれば
切り口はおまかせします。
煽り・冷やかしでもプログラマらしいやつなら歓迎です。
とりあえず→
http://www.agent.org/ 標準化団体→
http://www.fipa.org/ サルでも分るJava実装→
https://www2.toshiba.co.jp/beegent/
終了
>>1 >そろそろ流行語ではなくプログラム技術として語り始めてもいいかなと。
全然流行語じゃない。よって逝ってよし終了
sage
何か。もいつか TextToSpeech でしゃべるのだろうか
6 :
デフォルトの名無しさん :01/11/11 16:51
東芝のBeegent ってどーよ?
7 :
デフォルトの名無しさん :01/11/11 16:57
モノと工場を分けるのですか?
>>4 ありがと。いや、なんとなく。おもしろかったんで。
ちなみにsageには賢人の意味があるらしい。
>>6 いま試してるとこ。
とりあえずインストール→サンプル実行は、驚くほどすんなり終わる。
ドキュメントも日英両方そろってる。
入門用としては結構いけてるんじゃないかな。
状況に応じて動的に自己判断するようなAI的要素はあんまりないみたい。
デザパタのStateパターンでプログラマがゴリゴリ状態遷移を書くのが
基本らしい。
アーキテクチャはBrokerパターン。ただし、Client/Serverの区別はしてない。
JavaVM上でエージェントラッパーが待ってるマシンの間を、BEEっていう
エージェントが動き回る感じ。
あとエージェント同士が会話するためのプロトコルがFIPAって団体で定めら
れてて、これをXMLのフォーマットで表現して、通信するようになってる。
>>5 、
>>7 すんません。意味わかりません。
import net.$2ch.pc.sagent.*; //
>>4
10 :
デフォルトの名無しさん :01/11/12 14:22
JADEってどうなの?
OOでもエージェント指向でもない CELLをお勧めする(誰も、書いてる私ですら知らない、つーか、存在してない。
面白くない。
13 :
デフォルトの名無しさん :01/11/12 17:01
モバイルエージェントのマイグレーションについて語ってよ
マイグレーションですが何か?
>>14 は嘘をついている。
本物のマイグレーションは俺だ。
だから騙りって逝ってるじゃん
>>10 んなもん自分で調べろや!
っていうのもアレなんで、JADE一式ダウンロードして、
サラっとドキュメントに目を通してみました。まだ動かしてないけど。
・FIPA標準への積極的な準拠。
・Javaイベント・RMI・IIOPで通信する、但しプログラマには透過的。
・オプションでACLにXMLを使える。
・ライセンスはGNUのLesser General Public License
・APIもBee-gentより大規模な感じ。
(ちらっと見ただけなんで、どんなアーキテクチャかまだよく分らん。)
Bee-gentより本格的みたいだけど、ちょっと敷居が高い感じ。
あとNTTで、MINERVAっていうAI開発環境とJADEを併用して
「知的分散型エージェント」とかいうのを作ろうとしてるらしいです。
>>13 Bee-gentのマイグレーションでいいかな。
・Bee(エージェント)はAwr(エージェントラッパー)の間を渡り歩く。
・Awr同士はお互いの位置(IPアドレス)と名前(String)を知っている。
・Beeはある名前のAwrのところに移動できる。
・AwrはあるBeeを他のAwrに移動させることが出来る。
・Beeを受け入れたAwrは、Beeの移動元を覚える。
・Beeに出て行かれたAwrは、その移動先を覚える。
・Beeにメッセージを送ると、Awr間で転送されて最後にはBeeに届く。
って感じですかね。
ちなみにI_BeeってインターフェイスがSerializableをextendsしていて、
これをクラスBeeがimplementsしてる。
このクラスBeeを継承してお好みのエージェントを作って下さいとのことです。
19 :
デフォルトの名無しさん :01/11/13 23:04
MINERVAってどう?
20 :
デフォルトの名無しさん :01/11/14 01:28
>1 sageるな。堂々とageよ。
21 :
デフォルトの名無しさん :01/11/14 08:59
旨いよ
23 :
デフォルトの名無しさん :01/11/14 11:19
つーか人生ネタだな。
24 :
仕様書無しさん :01/11/14 12:24
煽りはじめたマイグレーション 明日を変えることさ♪
ポストオブジェクト指向?
これからは述語論理が来るとか言われました。 どうもProlog(笑)が関係しいるらしいので 勉強します、許してください。
27 :
デフォルトの名無しさん :01/11/14 22:57
MCORBAってエージェントに関係あるのかな?
31 :
デフォルトの名無しさん :01/11/16 12:35
FIPAよりOMGのMAFの方が重要だろ。
エージェントの定義キボンヌ.
処理系としての定義:継続と共に移動可能なインスタンス。 アプリケーションとしての定義:ユーザーの代行者として行動することで特定のサービスを実現するインスタンス。 明確な定義って見たことないけど概ねこれぐらいの認識だと思われ。
34 :
デフォルトの名無しさん :01/11/17 22:16
>>32 CORBAのモバイル・エージェント・ファシリティ仕様(MAF)で定義されてて、
その1章4節に、「エージェントとは、個人や組織に代わって自律的に
行動するコンピュータプログラムである。」って書いてある。
この後に、ステーショナリ・エージェントとモバイル・エージェントの定義が
続いてる。実行を始めたシステムでのみ動作するエージェントがステーショナリ、
ステーショナリの制約に拘束されずシステム間を移動できるのがモバイルと
なってる。
まあ、たいていのエージェント実装が、「エージェント」の一言で移動性を前提に
しているのを見ると、エージェント≒モバイルエージェントって認識で良いと思う。
OMGが唯一の権威ってわけでもないだろうし、そもそもCORBAファシリティの仕様だから。
ってことで
>>33 さんの見解におおむね同意。
マイグレーションはいいとしても、 AIって言ったとたんに胡散臭くなるね。
AIって10年位前にSI業界でもちょっと流行ったと思うけど、まだそんなこと 言ってる奴いるの?終わってるでしょアレ。
とりあえずLISP逝ってよし。
38 :
デフォルトの名無しさん :01/11/18 14:28
アプレットってエージェントですか?
39 :
デフォルトの名無しさん :01/11/18 15:43
>>38 自律性が無いし、移動もコードだけ。
エージェントでいうマイグレーションは実行開始と終了の間の話。
40 :
デフォルトの名無しさん :01/11/19 20:15
P2Pとかも関係あるの?
MCORBAがうまくビルドしてくれない。 Cygwinだからまずいのか…
問題は、何に使うのか、だよなぁ。 マイグレーションがあって初めて可能になり しかもめちゃくちゃ嬉しい活用法って思いつかん。
43 :
デフォルトの名無しさん :01/11/19 21:25
>>41 ビルドできないのがidlから生成したmercuryコードなのか、
mercuryコードから生成したcコードなのか、それともMCORBA自体の
ビルドなのか分らないと、助けようがありません。
>>42 > マイグレーションがあって初めて可能になり
> しかもめちゃくちゃ嬉しい活用法って思いつかん。
特別に何か劇的に素晴らしいことがあるわけじゃないまま、
いつのまにか拡がって行くってのもあり得るんじゃないかな。
もちろんオブジェクト指向からのアナロジーだけど。
Subsumption Architecture(SA)にも”エージェント”ってあります。 SAはAIのアルゴリズムの一つで、固有のプロセスで並列に動作する複数の エージェントが、与えられた優先順位に従って解を導くという仕組みです。 ・・・って関係ないか。
>>44 そういやC++って何がきっかけで普及したんだろ?
47 :
デフォルトの名無しさん :01/11/20 01:02
>>30 、
>>41 MCORBAもうまいこと成長したら、OMGが言うところの"Stationary Agent"として
使えそうだね。
CORBA使ってるような分野だったらまず型のある言語の方が優勢だろうから、
先祖のPrologと比べるとMercuryの方が多少導入しやすいはず。
49 :
デフォルトの名無しさん :01/11/22 01:09
>>48 MFCなんぞ使わなくてもC++って便利。
テンプレート萌え。STLラヴ。
>>46 Cの上位互換臭いところじゃない?
GBアドバンスが売れてるのと同じさ。
GBAが売れているからといってGBA用のソフトが売れているわけでもない。 C++が普及しているからといってOOまで一般化しているわけでもない。 ふむ。
>>46 Windows95 が売れて VC++ が作られたから。
54 :
デフォルトの名無しさん :01/11/26 00:12
FIPAのドキュメントにざっと目を通してみた。 とにかく難解だ。量も多いし。 もっとシンプルで分りやすい文書ないのかな。 「モバイル」についてはちっちゃな仕様書がオマケみたいに付いてるだけだった。 マイグレーションといっても、FIPA的には特に大きな関心事ではないみたいだ。
>>54 FIPAの奴はモバイルエージェントじゃなくて
知的エージェントの方がメインなんじゃないかな?
仕様書も特定用途向けのエージェントの相互作用に関するものが大半。
56 :
デフォルトの名無しさん :01/11/26 00:47
>1 メタファーが【物】から【者】に変化するとも言えるだろうね。
スミスですが何か?
59 :
デフォルトの名無しさん :01/11/26 07:26
>>53 なんでVisualObjectiveCにしなかったんだろ・・・
やっぱりその時点でもうC++が流行ってたからじゃないの?
>>55 CORBAの垂直ファシリティっぽい仕様書は、とりあえず後回しにしてる。
どんな分野がターゲットになってるかはタイトルだけで大体わかるから。
エージェント間通信と抽象アーキテクチャに興味があるんだけど、その
部分だけで質、量ともになかなか手ごわい。
っていうか俺の理解力がダメなのか…(鬱
>>59 逆にObjectiveCがマイナー過ぎたとか。
モバイルエージェントの実装ってみんなJavaなんですね 仕事でJava使ってると、謳い文句のポータビリティに いまいち不満あるんだけど、やはりほかの言語にくらべると かなりマシって事でしょうか
>>61 VMをベースに設計されてて仕様がとりあえず固まってるからってぐらいなんじゃない?
あと、もちろんそれなりにメジャーだから。
Smalltalkなんかでもマイグレーションできる処理系はあったけど
今日日その手の処理系を作るとなったらマイナーだから選択肢にはならない。
で、そこそこメジャーだからJava。
>>56 トレンドがAIからALに移行するとも言えるだろうね。
64 :
デフォルトの名無しさん :01/11/26 23:16
>>62 .NETってどうでしょう?
マイグレーションのインフラになり得るでしょうか?
>>64 VMベースである以上やろうと思えばできるはず。
要はプロセスなりオブジェクトなりの
現在の状態が取得できればいいわけだから。
ただ、Microsoftがそういう処理系を提供するかどうかは別。
マイグレーションよりも先にJiniみたいなダイナミックインストール的な話が先だと思う。
66 :
デフォルトの名無しさん :01/11/27 03:35
>>64 マイクロソフトは、マイクロソフトの製品間でしか、マイグレーション許さないだろうから、
マイグレーションのインフラになり得ないんじゃないでしょうか?
マイグレーションが有用な場面が増えてきた時に、
マイクロソフトの製品間限定で可能か?ならイェスでしょうが。
.NETってコンセプトはごもっともだけど、なにしろM$ってのがイタ過ぎだ。
>>63 ALってさ、セルオートマトンにしてもコンピュータウィルスにしても、
今のところどうも下等生物のイメージなんだよね。
まだまだ役に立たないって言うかさ。
学者の遊びの世界で充分だよ。
IBMのaglet使ってみた。 TahitiっていうこじんまりしたGUIツールがデーモン兼管理ツールらしい。 IPアドレスとポートを指定して、各マシン上でTahitiを立ち上げておく。 agletを生成するにはTahitiから完全修飾クラス名を指定して"create"する。 アドレス指定で他所のaglet serverに送るとか、個々のagletに何か 実行させたりプロパティ見たりするのもTahitiのフォーム上で操作できる。 アークテクチャは上部のAgletRuntime層と下部のCommunication層の2層。 AgletRuntime層にAgletクラスがあってこれを継承してくれとのこと。 フレームワーク的にはJavaのイベント委譲モデル使ってる。 あとCommunication層にcom.ibm.mafってパッケージがあって、MAF/IDLの 実装があるんだけど、だからといって全然CORBAじゃないのが面白い。 # IBMにあるのはJDK1.1用なんで注意。 # Java2用のがSourceForgeに置いてある。
情報ありがと。
>>70 単にオブジェクトが値渡しでCLR間移動できるだけなら当たり前の話だと
思うけど、SoapFormatterっていうのが面白そうだね。
(これを見せたかったと理解しました。)
一年くらい前にSOAP1.1のW3C NOTE読んだ時いまいちピンと来なくて、
それ以来圧縮放置状態だったけど、こんな風に使えるんだね。
ただ、将来的にCLR上のモバイルエージェント・フレームワークが構想される
にしても、技術的な話は別にして、MSの独占体質がやっぱり少し不安だ。
偏見かな…?
>>70 これはSOAPのパケットを見る限りではIPは残らないね。
ということはシリアライズ結果の移送可能性があるという程度になる。
それでも十分ではあるけど。
Agent-based Modeling Technique(AMT)っての見つけた。
→
ttp://www.cs.und.edu/~jo/plaselab/amt2000/ppframe.htm ・モデリングにはAgent-based Modeling Language(AML)を使う。
Relationship図、Interaction図、Component図など。
UMLに近い感じかな。
・プロセスにはAgent-based Process Model(APM)を使う。
フェーズと成果物の関係がちょっとRUPに近い感じだけど、イテレーション
については語られていない。
※ BDIカードって言うのがあって、最初CRCカードみたいなものかと
思ったけど、どうやらこれがユースケースと対応するらしい。
・モデルの実装にはAgent-based Programming Language(APL)を使う。
agent Deposit extends BDI {
belief Deposit_B;
desire Deposit_D;
intention Deposit_I;
main() { ... }
}
belief Deposit_B extends BDI {
...
}
desire Deposit_D extends BDI {
...
}
intention Deposit_I extends BDI {
...
}
ってな感じらしい。意味はよくわからんが。。。
全体的にかなりポストオブジェクト指向を意識してるみたいだ。
やけに流行りのOO技法に似ているけど、それが戦略なのか妥協なのかは
この文書だけでは判断できなかった。
>>73 言語要素としてbeliefとかdesireとか入ってるって事か?
Schemerの方々なんか、こう言うのたまらなく嫌だろうな。
76 :
デフォルトの名無しさん :01/12/01 18:56
BDI理論の最初の論文ってどこで見られるの? Bratmanって人だよね?
>>73-74 JACK Agent LanguageというJAVA拡張のAOPで、classやinterfaceの他に、
agent,capability,database,view,event,planなども書ける。
ファイルの拡張子も別々。
78 :
デフォルトの名無しさん :01/12/08 17:35
JADEダウソして動かしてみたけど、結構いけてる感じだね。
79 :
デフォルトの名無しさん :01/12/08 20:17
>>76 これか?
M.Bratman:『Intention,Plans, and Practical Reason.』
邦題:『意図と行為』
80 :
デフォルトの名無しさん :
01/12/29 02:10 本買ったのでage