1998.06 「エージェント」機能に挑戦

わーくすてーしょんのあるくらし (6)

1998-06 大橋克洋

< 1998.05 NEXTSTEP と OPENSTEP | 1998.07 すべての医療機器はコンピュータ周辺機器としてデザインすべし >

数年前に突然出現した Java は、急激に伸びつつある Internet という土壌の上であっという間に繁殖しました。 これはこれで良いのですが、私としては Java の前に Agent 機 能が世の中に広がって欲しかったのです。 もうかなり前になりますが、Apple 社が PR 用に作った有名なビ デオ・フイルムがありました。コンピュータの中に擬人化された エージェントが、ユーザの要求に対して優秀な秘書のように対応し てくれるものです。

これは実在のものではなく、あくまでも PR 用ですから何でもで きるわけですが「誰それのところへ行って、これこれの件について 調べてきて欲しい」とコンピュータに向かって喋っている間に、 「はい、これがその結果です」と返事が返ってきてしまうレスポン スの良さには、ちょっとびっくりしたりしました。 私の電子カルテ WINE のネーミングが Wise and Neat、すなわち 「お利口で手際のよい秘書が欲しい」というところから来ているよう に、私がもっとも欲しいのはそのようなものなのです。

○ エージェントとは

美味しい料理を食べるまでの過程を例に、エージェントを説明し てみましょう。 お客はエージェントに、「今日は旨い中華料理を食べたい」と注 文したとします。エージェントはお客にメニューを見せてオーダー をとります。次に、それを持ってマネージャー・エージェントの所 へ行き、事細かな指示書をもらいます。ここには、仕入先や仕入れ る食材、その他エージェントが行うべき内容が指示されています。 エージェントはまず材料の仕入を行います。市場では魚だとか野菜 だとか、専門のエージェントとやりとりして材料を仕入れます。

次にそれらを持って下ごしらえのエキスパート・エージェントの ところへ行き、下ごしらえしてもらいます。以後料理の手順に従 い、それぞれのエキスパートのところで食材を処理してもらいま す。最後に味見のエキスパートへ寄り、追加指示をもらうこともあ るかも知れません。このようにして最後に出来上がった料理を持っ てクライアントのところへ帰ってきます。

もちろん料理をこのようにたらい回しにされたのでは、味が落ち てしまいますが、電子的な処理についてはこのような手順で可能で す。特徴は一定の場所でひとかたまりの処理システムが働くのでは なく、エージェントが指示書や材料を保持して、色々なエキスパー ト・エージェントのところを回って処理するというところにありま す。すなわち、プログラム自体がデータを保持しながらネットワー ク上を歩き回るのです。

エージェントを組み込めば、プログラム同志の結合を密ではなく もっと粗にできます。エージェントは基本的にオブジェクト指向の 発展型と考えてよいと思います。エージェント自体が一つのオブ ジェクトなのですが、ネットワーク上を自律的に動けるよう、さら に独立性を高めたものと考えてよいでしょう。エージェントは、単 なる使い走り、お利口な秘書、あるいは戦国時代の忍びの者に例え る人もいるかも知れません。

用事を言いつけてエージェントを放った後は、それを忘れていて も構わないかも知れません。エージェントが結果を携えて帰ってき たとき「ああ、そうだった」と思いだすのかも知れません。私のよ うにモノグサで、物忘れの良い人間にはとても有り難いものです。

○ TeleScript 言語

エージェントについては GeneralMagic 社が作った TeleScript という言語があります。SONY や NTT で作った携帯端末に載せた ものが発表になりましたが、結局普及には至らなかったようです。 とても良いコンセプトなのに、本当に惜しいと思います。 TeleScript とは、エージェントが色々な仕事を引き受けてネッ トワーク上を自律的に動き回り、処理をしてくれるための Object 指向言語です。

例えばユーザが出張先で「帰りの飛行機の切符をとっておいて欲 しい」とエージェントに任務を与えたとします。 エージェントはユーザからもらった Ticket (ここで任務となっ ている飛行機の切符とは関係ありません。ユーザからエージェント への指示書です)を頼りに、ネットワーク経路をへて Place という 市場のようなところへ行きます。

Place には、本屋とか花屋とか切符売り場とか色々な Place が 入れ子になっていたりします。 エージェントは目的 Place に着くと、相手のエージェントと meet します(相手のエージェントは、切符売り場のおねえさんの ようなものです)。目的条件と合致した切符があれば、それを予約 して帰ってきます。目的のものがなかった場合、エージェントは ユーザに連絡を入れ指示を受けることもできます。

数日後、滞在先で仕事を済ませたユーザが帰ろうとすると、「予 定の飛行機は2時間程出発が遅れます」という連絡が入り、ちょっ と街を見学したり昼飯を食べる時間が手に入りました。実はエー ジェントが切符を買って帰る前に、自分の分身を生成し切符売り場 においてきたのです。分身エージェントは帰りの日まで眠っていま したが、当日になると起きだして30分ごとに飛行機の発着時刻を チェックし、変更を連絡してきたのです。後日 Place からは飛行 機の切符代とともに、このエージェントの滞在費もしっかり請求が きました ...というのが TeleScript で実現される機能の紹介です。

○ エージェント、皆が持たねば意味がない

お気づきの方もあるかも知れませんが、このようなものを実現す るにはネットワーク上のどこにでも TeleScript エンジンの存在す る必要があります。自分だけ電話を持っていても、皆が電話を備え ていなければ何の役にも立たないように。冒頭で Java の前にエー ジェントが普及して欲しいと書いたのは、このようなことがあるか らです。もっとも、GeneralMagic 社は TeleScript を現在は Java を使って開発中と聞いていますので楽しみです。

Java がサーバからダウンロードするのに対し、TeleScript はク ライアントからサーバへアップロードするところが違いのひとつで す。ある指令を受けたエージェントが、自分なりの処理手順とそれ に必要なデータを保持して、ネットワーク上の別のコンピュータへ 移動するのです。

エージェントは、相手のコンピュータの中で動き回るということ から、コンピュータ・ウイルスと似たところもあります。従って、 TeleScript では相手の資源に直接タッチできないようセキュリテ イーについてはかなり神経を使って設計されているようです。 このあたりは Java も同じですね。

○ コンポーネント化される第三世代 WINE

開発中の私の電子カルテ「第三世代 WINE」は、オブジェクト指 向をさらにおし進め、電子カルテのベース(車で言えばシャーシ、 コンピュータで言えば基盤や函体)はまったく汎用の機能だけを持 つものとし、色々なツール(車で言えば、エンジン・サスペンショ ンなどからカーラジオ・エアコン・ボデイーカラーなど)は、すべ てユーザがオプションで選べるよう設計しています。

つまり、お絵描きツール・診療費計算エンジン・診断書など定型 文書作成ツールなどは、すべて独立したオブジェクトとし、ユーザ の好みで自由にプラグ・インできるのです。世の中には色々なメー カーの色々な電子カルテがあって良いと思いますが、これらのツー ルが共通で使えると、とても便利です(オーデイオの世界は、かな り昔からそうなっていますね)。

で、それらのツール類が協調して動作する手段として、エージェ ントを使おうと思っています。つまりそれぞれのツールは一応頭脳 を持って独立しており、相互にエージェントを放って連携するとい うものです。相互に直接通信する方が効率の良い面もありますが、 それには相互に相手のやりたいことを理解している必要がありま す。エージェントを介せば、エージェント同志が会話し意志疎通を ある程度やってくれますので、もっと抽象化できるはずです。

○ エージェント実現に向けて

とりあえず、同じマシーン上の色々なコンポーネント同志が連 携するタイプを実現します。これはエージェント本来の、異なるマ シーン間で連携をとるという形には至らぬ未熟なものですが、何し ろ初めの一歩ですので、そこから始めようと思っています。

これが実現するだけでも、独立して作られた色々なツール類を電 子カルテや他のツール類に接合することが大変楽になります。 このような使い方は、エージェント本来の使い方とはちょっとは ずれていそうですが、当面私が実現したい電子カルテにとってこの ような機能はとても具合が良いのです。

OPENSTEP は「分散オブジェクト」機能を標準装備していますの で、一歩進めてネットワーク対応にするのは容易なはずです。 エージェントのような機能をどうやって実現すればよいのか。な かなかうまいアイデアが浮かばず、2年位あたためてきたのです が、最近ようやく実装のアイデアが浮かび始めたのです。

まだ極めてプリミテイブなものですが、第三世代 WINE のコン ポーネント間をこれで接合するよう改良しました。やってみると、 プログラム自体がかなり簡略化でき、一部の複雑だったコードを バッサリと切り捨てられたのは予想外でした。ぐちゃぐちゃの悪性 腫瘍をきれいに摘除できた後のような快感です。 まだ私にとって、エージェント開発のほんの糸口をつかんだとこ ろですが、また少しずつレポートして行きたいと思います。

< 1998.05 NEXTSTEP と OPENSTEP | 1998.07 すべての医療機器はコンピュータ周辺機器としてデザインすべし >