トップページ⇒tech
80コメント27KB

エージェント技術でも考えてみっか。ヒマだから。

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
ソフトウェア開発において「現実世界のモデリング」を行う際、
OO技術者は「もの」の「自律性」を構想する。
そしてこの自律性は「全てはオブジェクトである」の標語のもと、
汎神論的に脚色され、過剰に導入される。

これまで主に「手段」(設計・開発)の領域で勢力を強めてきた
この過剰な自律性は、その「過剰」であるが故に、宿命的に
「目的」(製品・実行時動作)の領域にも侵出しようとする。

この自律性の欲求は、実際にはOOの黎明期から常に/既に懐胎され、
また小出しに実現されもしてきたが、分散オブジェクト技術の普及に
伴い、この動きはさらに加速しつつある。
このような現状において、だれかが与えた新しいスローガンが
「エージェント指向」である。

確かに標語としての「エージェント指向」は、流行りすたりを何回か
くり返してきた。しかし、前述の「手段→目的」の方向にそった
「自律性」の領土拡大は必然的に継続する。
従ってこれからもエージェント指向は成長を止めない。
近い将来、実行時のソフトウェアコンポーネントは「ある」ではなく
「いる」と叙述されるようになる。

・・・なんつって。長い前置きすんませんでした。
そろそろ流行語ではなくプログラム技術として語り始めてもいいかなと。

分散オブジェクト技術、AI、アーキテクチャパターン、
各社フレームワークの評価などなど、エージェント関連であれば
切り口はおまかせします。
煽り・冷やかしでもプログラマらしいやつなら歓迎です。

とりあえず→http://www.agent.org/
標準化団体→http://www.fipa.org/
サルでも分るJava実装→https://www2.toshiba.co.jp/beegent/
0002ごめんNGNG
終了
0003デフォルトの名無しさんNGNG
>>1
>そろそろ流行語ではなくプログラム技術として語り始めてもいいかなと。

全然流行語じゃない。よって逝ってよし終了
0004sagentNGNG
sage
0005デフォルトの名無しさんNGNG
何か。もいつか TextToSpeech でしゃべるのだろうか
0006デフォルトの名無しさんNGNG
東芝のBeegent ってどーよ?
0007デフォルトの名無しさんNGNG
モノと工場を分けるのですか?
00081NGNG
>>4
ありがと。いや、なんとなく。おもしろかったんで。
ちなみにsageには賢人の意味があるらしい。

>>6
いま試してるとこ。
とりあえずインストール→サンプル実行は、驚くほどすんなり終わる。
ドキュメントも日英両方そろってる。
入門用としては結構いけてるんじゃないかな。

状況に応じて動的に自己判断するようなAI的要素はあんまりないみたい。
デザパタのStateパターンでプログラマがゴリゴリ状態遷移を書くのが
基本らしい。

アーキテクチャはBrokerパターン。ただし、Client/Serverの区別はしてない。
JavaVM上でエージェントラッパーが待ってるマシンの間を、BEEっていう
エージェントが動き回る感じ。
あとエージェント同士が会話するためのプロトコルがFIPAって団体で定めら
れてて、これをXMLのフォーマットで表現して、通信するようになってる。

>>5、>>7
すんません。意味わかりません。
0009デフォルトの名無しさんNGNG
import net.$2ch.pc.sagent.*; // >>4
0010デフォルトの名無しさんNGNG
JADEってどうなの?
0011ななしNGNG
OOでもエージェント指向でもない
CELLをお勧めする(誰も、書いてる私ですら知らない、つーか、存在してない。
0012デフォルトの名無しさんNGNG
面白くない。
0013デフォルトの名無しさんNGNG
モバイルエージェントのマイグレーションについて語ってよ
0014騙りNGNG
マイグレーションですが何か?
0015デフォルトの名無しさんNGNG
>>14は嘘をついている。
本物のマイグレーションは俺だ。
001614NGNG
だから騙りって逝ってるじゃん
0017デフォルトの名無しさんNGNG
>>10
んなもん自分で調べろや!

っていうのもアレなんで、JADE一式ダウンロードして、
サラっとドキュメントに目を通してみました。まだ動かしてないけど。

・FIPA標準への積極的な準拠。
・Javaイベント・RMI・IIOPで通信する、但しプログラマには透過的。
・オプションでACLにXMLを使える。
・ライセンスはGNUのLesser General Public License
・APIもBee-gentより大規模な感じ。
(ちらっと見ただけなんで、どんなアーキテクチャかまだよく分らん。)

Bee-gentより本格的みたいだけど、ちょっと敷居が高い感じ。

あとNTTで、MINERVAっていうAI開発環境とJADEを併用して
「知的分散型エージェント」とかいうのを作ろうとしてるらしいです。
00181NGNG
>>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を継承してお好みのエージェントを作って下さいとのことです。
0019デフォルトの名無しさんNGNG
MINERVAってどう?
0020デフォルトの名無しさんNGNG
>1
sageるな。堂々とageよ。
0021デフォルトの名無しさんNGNG
旨いよ
0022デフォルトの名無しさんNGNG
http://bach.cs.kobe-u.ac.jp/prolog/
0023デフォルトの名無しさんNGNG
つーか人生ネタだな。
0024仕様書無しさんNGNG
煽りはじめたマイグレーション
明日を変えることさ♪
0025あNGNG
ポストオブジェクト指向?
0026デフォルトの名無しさんNGNG
これからは述語論理が来るとか言われました。
どうもProlog(笑)が関係しいるらしいので
勉強します、許してください。
0027デフォルトの名無しさんNGNG
>>24
TMN ?
0028デフォルトの名無しさんNGNG
>>27
ばかが。
渡辺美里だ
00291NGNG
>>19
MINERVAって直接Javaのオブジェクト操作できるんだね。

Amzi Prolog使ってるんだけど、こっちは推論エンジンだけDLLとか
Javaのパッケージで提供されてて、推論部分はProlog、それ以外(GUI等)は
他の言語ってふうに切り分けられてる。

MINERVAのサイトにサンプルのアプレットあって、全部Prologで書いてた。
ttp://www.ifcomputer.com/MINERVA/ExamplePrograms/home_en.html

2ヶ月期限で試用できるらしい。
0030デフォルトの名無しさんNGNG
MCORBAってエージェントに関係あるのかな?
0031デフォルトの名無しさんNGNG
FIPAよりOMGのMAFの方が重要だろ。
0032デフォルトの名無しさんNGNG
エージェントの定義キボンヌ.
0033デフォルトの名無しさんNGNG
処理系としての定義:継続と共に移動可能なインスタンス。
アプリケーションとしての定義:ユーザーの代行者として行動することで特定のサービスを実現するインスタンス。

明確な定義って見たことないけど概ねこれぐらいの認識だと思われ。
0034デフォルトの名無しさんNGNG
>>32
CORBAのモバイル・エージェント・ファシリティ仕様(MAF)で定義されてて、
その1章4節に、「エージェントとは、個人や組織に代わって自律的に
行動するコンピュータプログラムである。」って書いてある。

この後に、ステーショナリ・エージェントとモバイル・エージェントの定義が
続いてる。実行を始めたシステムでのみ動作するエージェントがステーショナリ、
ステーショナリの制約に拘束されずシステム間を移動できるのがモバイルと
なってる。

まあ、たいていのエージェント実装が、「エージェント」の一言で移動性を前提に
しているのを見ると、エージェント≒モバイルエージェントって認識で良いと思う。
OMGが唯一の権威ってわけでもないだろうし、そもそもCORBAファシリティの仕様だから。

ってことで>>33さんの見解におおむね同意。
0035デフォルトの名無しさんNGNG
マイグレーションはいいとしても、
AIって言ったとたんに胡散臭くなるね。
0036デフォルトの名無しさんNGNG
AIって10年位前にSI業界でもちょっと流行ったと思うけど、まだそんなこと
言ってる奴いるの?終わってるでしょアレ。
0037デフォルトの名無しさんNGNG
とりあえずLISP逝ってよし。
0038デフォルトの名無しさんNGNG
アプレットってエージェントですか?
0039デフォルトの名無しさんNGNG
>>38
自律性が無いし、移動もコードだけ。
エージェントでいうマイグレーションは実行開始と終了の間の話。
0040デフォルトの名無しさんNGNG
P2Pとかも関係あるの?
0041独りごとNGNG
MCORBAがうまくビルドしてくれない。
Cygwinだからまずいのか…
0042デフォルトの名無しさんNGNG
問題は、何に使うのか、だよなぁ。
マイグレーションがあって初めて可能になり
しかもめちゃくちゃ嬉しい活用法って思いつかん。
0043デフォルトの名無しさんNGNG
>>41
ビルドできないのがidlから生成したmercuryコードなのか、
mercuryコードから生成したcコードなのか、それともMCORBA自体の
ビルドなのか分らないと、助けようがありません。
0044デフォルトの名無しさんNGNG
>>42
> マイグレーションがあって初めて可能になり
> しかもめちゃくちゃ嬉しい活用法って思いつかん。

特別に何か劇的に素晴らしいことがあるわけじゃないまま、
いつのまにか拡がって行くってのもあり得るんじゃないかな。
もちろんオブジェクト指向からのアナロジーだけど。
0045デフォルトの名無しさんNGNG
Subsumption Architecture(SA)にも”エージェント”ってあります。
SAはAIのアルゴリズムの一つで、固有のプロセスで並列に動作する複数の
エージェントが、与えられた優先順位に従って解を導くという仕組みです。
・・・って関係ないか。
0046デフォルトの名無しさんNGNG
>>44
そういやC++って何がきっかけで普及したんだろ?
0047デフォルトの名無しさんNGNG
>>30、>>41
MCORBAもうまいこと成長したら、OMGが言うところの"Stationary Agent"として
使えそうだね。
CORBA使ってるような分野だったらまず型のある言語の方が優勢だろうから、
先祖のPrologと比べるとMercuryの方が多少導入しやすいはず。
0048デフォルトの名無しさんNGNG
そりゃ言いたくないがMFCのおかげだ。>>46
0049デフォルトの名無しさんNGNG
>>48
MFCなんぞ使わなくてもC++って便利。
テンプレート萌え。STLラヴ。
0050デフォルトの名無しさんNGNG
>>46

Cの上位互換臭いところじゃない?
GBアドバンスが売れてるのと同じさ。
0051デフォルトの名無しさんNGNG
GBAが売れているからといってGBA用のソフトが売れているわけでもない。
C++が普及しているからといってOOまで一般化しているわけでもない。
ふむ。
0052デフォルトの名無しさんNGNG
>>48
ワラタ
0053デフォルトの名無しさんNGNG
>>46
Windows95 が売れて VC++ が作られたから。
0054デフォルトの名無しさんNGNG
FIPAのドキュメントにざっと目を通してみた。
とにかく難解だ。量も多いし。
もっとシンプルで分りやすい文書ないのかな。

「モバイル」についてはちっちゃな仕様書がオマケみたいに付いてるだけだった。
マイグレーションといっても、FIPA的には特に大きな関心事ではないみたいだ。
0055デフォルトの名無しさんNGNG
>>54
FIPAの奴はモバイルエージェントじゃなくて
知的エージェントの方がメインなんじゃないかな?
仕様書も特定用途向けのエージェントの相互作用に関するものが大半。
0056デフォルトの名無しさんNGNG
>1
メタファーが【物】から【者】に変化するとも言えるだろうね。
0057エージェントNGNG
スミスですが何か?
0058デフォルトの名無しさんNGNG
>>57
旬を過ぎたネタは寒い。
0059デフォルトの名無しさんNGNG
>>53
なんでVisualObjectiveCにしなかったんだろ・・・
やっぱりその時点でもうC++が流行ってたからじゃないの?
006054NGNG
>>55
CORBAの垂直ファシリティっぽい仕様書は、とりあえず後回しにしてる。
どんな分野がターゲットになってるかはタイトルだけで大体わかるから。

エージェント間通信と抽象アーキテクチャに興味があるんだけど、その
部分だけで質、量ともになかなか手ごわい。

っていうか俺の理解力がダメなのか…(鬱

>>59
逆にObjectiveCがマイナー過ぎたとか。
0061デフォルトの名無しさんNGNG
モバイルエージェントの実装ってみんなJavaなんですね
仕事でJava使ってると、謳い文句のポータビリティに
いまいち不満あるんだけど、やはりほかの言語にくらべると
かなりマシって事でしょうか
0062デフォルトの名無しさんNGNG
>>61
VMをベースに設計されてて仕様がとりあえず固まってるからってぐらいなんじゃない?
あと、もちろんそれなりにメジャーだから。
Smalltalkなんかでもマイグレーションできる処理系はあったけど
今日日その手の処理系を作るとなったらマイナーだから選択肢にはならない。
で、そこそこメジャーだからJava。
0063デフォルトの名無しさんNGNG
>>56
トレンドがAIからALに移行するとも言えるだろうね。
0064デフォルトの名無しさんNGNG
>>62
.NETってどうでしょう?
マイグレーションのインフラになり得るでしょうか?
0065デフォルトの名無しさんNGNG
>>64
VMベースである以上やろうと思えばできるはず。
要はプロセスなりオブジェクトなりの
現在の状態が取得できればいいわけだから。
ただ、Microsoftがそういう処理系を提供するかどうかは別。
マイグレーションよりも先にJiniみたいなダイナミックインストール的な話が先だと思う。
0066デフォルトの名無しさんNGNG
>>64
マイクロソフトは、マイクロソフトの製品間でしか、マイグレーション許さないだろうから、
マイグレーションのインフラになり得ないんじゃないでしょうか?
マイグレーションが有用な場面が増えてきた時に、
マイクロソフトの製品間限定で可能か?ならイェスでしょうが。
0067デフォルトの名無しさんNGNG
.NETってコンセプトはごもっともだけど、なにしろM$ってのがイタ過ぎだ。
0068デフォルトの名無しさんNGNG
>>63
ALってさ、セルオートマトンにしてもコンピュータウィルスにしても、
今のところどうも下等生物のイメージなんだよね。
まだまだ役に立たないって言うかさ。
学者の遊びの世界で充分だよ。
00691NGNG
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に置いてある。
0070デフォルトの名無しさんNGNG
http://www.microsoft.com/japan/developer/net/dndotnet/objserializ.asp

↑マイグレーション可能っぽくない?
00711NGNG
情報ありがと。>>70

単にオブジェクトが値渡しでCLR間移動できるだけなら当たり前の話だと
思うけど、SoapFormatterっていうのが面白そうだね。
(これを見せたかったと理解しました。)

一年くらい前にSOAP1.1のW3C NOTE読んだ時いまいちピンと来なくて、
それ以来圧縮放置状態だったけど、こんな風に使えるんだね。

ただ、将来的にCLR上のモバイルエージェント・フレームワークが構想される
にしても、技術的な話は別にして、MSの独占体質がやっぱり少し不安だ。
偏見かな…?
0072デフォルトの名無しさんNGNG
>>70
これはSOAPのパケットを見る限りではIPは残らないね。
ということはシリアライズ結果の移送可能性があるという程度になる。
それでも十分ではあるけど。
00731NGNG
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技法に似ているけど、それが戦略なのか妥協なのかは
この文書だけでは判断できなかった。
0074デフォルトの名無しさんNGNG
>>73
言語要素としてbeliefとかdesireとか入ってるって事か?
Schemerの方々なんか、こう言うのたまらなく嫌だろうな。
0075デフォルトの名無しさんNGNG
↓MITのAgent。知的エージェントのアイデアがいろいろ載ってる。
http://agents.www.media.mit.edu/groups/agents/projects/
0076デフォルトの名無しさんNGNG
BDI理論の最初の論文ってどこで見られるの?
Bratmanって人だよね?
0077デフォルトの名無しさんNGNG
>>73-74
JACK Agent LanguageというJAVA拡張のAOPで、classやinterfaceの他に、
agent,capability,database,view,event,planなども書ける。
ファイルの拡張子も別々。
0078デフォルトの名無しさんNGNG
JADEダウソして動かしてみたけど、結構いけてる感じだね。
0079デフォルトの名無しさんNGNG
>>76
これか?
M.Bratman:『Intention,Plans, and Practical Reason.』
邦題:『意図と行為』
0080デフォルトの名無しさんNGNG
本買ったのでage
■ このスレッドは過去ログ倉庫に格納されています