以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システム20は、ネットワークを介して端末装置11,12,13と通信し、端末装置11が周辺にある他の端末装置にアクセスできるように制御する。
端末装置11は、ユーザによって操作される携帯端末装置であり、例えば、携帯電話機やPDA(Personal Digital Assistant)やノート型コンピュータなどである。端末装置11は、端末装置11が存在する場所に応じた環境データを生成する。環境データは、場所に関してユーザが入力するデータでもよいし、端末装置11が備える1またはそれ以上のセンサデバイスを用いて生成される端末装置11の周囲の状況を示すデータでもよい。例えば、端末装置11は、撮像装置を用いて端末装置11の周囲の風景を示す画像を生成する。また、例えば、端末装置11は、マイクロホンを用いて端末装置11の周囲の環境音や同じ場所にいる人の音声を記録する。また、例えば、端末装置11は、無線インタフェースによって検出されたアクセスポイントを示す通信状況データを生成する。
端末装置12,13は、ユーザが操作する装置であり、携帯端末装置でもよいし、プロジェクタやテレビ受像機やデスクトップ型コンピュータなどの据置型の端末装置であってもよい。端末装置12,13は、端末装置11からアクセスされ、端末装置11と通信することがある。ここで、端末装置12は場所Aに存在し(例えば、場所Aに設置されており)、端末装置13は場所Bに存在する(例えば、場所Bに設定されている)。場所A,Bは、それぞれ、異なるコミュニティが形成されることが期待される一定の空間であり、例えば、会議室のような壁によって区切られた部屋である。第1の実施の形態では、端末装置11をもつユーザが、端末装置12の存在する場所Aに入って来た場合を考える。
情報処理システム20は、1またはそれ以上の情報処理装置(例えば、サーバコンピュータ)を備えたシステムである。情報処理システム20は、以下で説明する機能を実現するため、1またはそれ以上のプロセッサや1またはそれ以上の記憶装置を備えてもよい。プロセッサは、CPU(Central Processing Unit)やDSP(Digital Signal Processor)であってもよいし、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのその他の電子回路を含んでもよい。プロセッサは、例えば、記憶装置に格納されているプログラムの命令を実行する。記憶装置は、RAM(Random Access Memory)などの揮発性メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性の記憶装置でもよい。
情報処理システム20は、1またはそれ以上の情報処理装置を用いて、複数のエージェントプロセスを並行して実行することができる。複数のエージェントプロセスは、常時起動されてアクセスを受付可能な状態であってもよい。また、複数のエージェントプロセスは、互いに異なる仮想マシンのオペレーティングシステム(OS:Operating System)上で実行されていてもよい。各エージェントプロセスは、何れか1つの場所または端末装置に対応付けられている。すなわち、エージェントプロセス21は場所Aに対応付けられ、エージェントプロセス22は場所Bに対応付けられている。エージェントプロセス23は端末装置11に対応付けられ、エージェントプロセス24は端末装置12に対応付けられ、エージェントプロセス25は端末装置13に対応付けられている。
エージェントプロセス21は、場所Aを管理するために起動される。エージェントプロセス21は、場所Aに存在する端末装置(端末装置12)に対応するエージェントプロセス(エージェントプロセス24)のリストにアクセスすることができる。同様に、エージェントプロセス22は、場所Bを管理するために起動される。エージェントプロセス22は、場所Bに存在する端末装置(端末装置13)に対応するエージェントプロセス(エージェントプロセス25)のリストにアクセスすることができる。
エージェントプロセス23は、端末装置11との間にコネクションを確立して端末装置11と通信を行う。端末装置11とエージェントプロセス23の間のコネクションは、常時確立した状態であってもよい。同様に、エージェントプロセス24は、端末装置12との間にコネクションを確立して端末装置12と通信を行う。エージェントプロセス25は、端末装置13との間にコネクションを確立して端末装置13と通信を行う。端末装置11,12,13は、情報処理システム20と通信を行うとき、複数のエージェントプロセスのうち自装置に対応するエージェントプロセスとのみ通信すればよい。
また、情報処理システム20が備える記憶装置には、対応情報26が格納されている。対応情報26は、場所A,Bそれぞれにおいて端末装置11によって生成され得る環境データ(または、当該環境データを解析することで抽出される特徴情報)と、当該場所を管理するためのエージェントプロセスとの間の対応関係を示す。例えば、対応情報26は、場所A,Bそれぞれについて、風景画像に写り得るオブジェクトや、録音された音に含まれ得る周波数成分や、検出され得るアクセスポイントなどを示す情報を含む。
ここで、端末装置11が場所Aに入ると、端末装置11からエージェントプロセス23に、端末装置11で生成された環境データが送信される。送信される環境データは、複数の種類のデータを含んでもよい。すると、エージェントプロセス23は、対応情報26を参照して、複数のエージェントプロセスのうち環境データに対応するエージェントプロセスを検索する。ここで検索されるエージェントプロセスは、場所Aを管理するためのエージェントプロセス21であることが期待される。
対応情報26に特徴情報が登録されている場合、エージェントプロセス23は、端末装置11が送信した環境データから特徴情報を抽出してもよい。例えば、エージェントプロセス23は、画像認識技術を用いて、風景画像に写った椅子や机などのオブジェクトを認識する。また、例えば、エージェントプロセス23は、信号処理技術を用いて、録音された音に含まれる周波数毎の信号成分を抽出する。ただし、端末装置11からエージェントプロセス24に送信される環境データが、解析済の特徴情報であってもよい。
環境データからエージェントプロセス21が検索されると、エージェントプロセス23は、エージェントプロセス21にアクセスする。すると、エージェントプロセス21からエージェントプロセス23に、場所Aに存在する端末装置(端末装置12)に対応付けられたエージェントプロセス(エージェントプロセス24)を識別するための情報(例えば、そのエージェントプロセスが動作する仮想マシンのアドレス)が渡される。
端末装置11が同じ場所Aに存在する端末装置12と通信したいとき、エージェントプロセス23は、エージェントプロセス21から取得した識別情報に基づいてエージェントプロセス24にアクセスする。そして、エージェントプロセス23とエージェントプロセス24がネゴシエーションして、端末装置11と端末装置12との間の通信を制御する。
例えば、エージェントプロセス23,24は、端末装置11が備える通信インタフェースを示す情報と端末装置12が備える通信インタフェースを示す情報とを交換することで、通信方法を決定する。端末装置11,12が情報処理システム20を迂回して通信できる通信インタフェースを備える場合、端末装置12に接続するための接続情報(例えば、端末装置12のアドレス)を、エージェントプロセス23から端末装置11に送信する。端末装置11に接続するための接続情報(例えば、端末装置11のアドレス)を、エージェントプロセス24から端末装置12に送信してもよい。一方、端末装置11,12が情報処理システム20を迂回して通信する通信インタフェースを備えていない場合、エージェントプロセス23,24がその旨を端末装置11,12に通知してデータを中継する。
第1の実施の形態によれば、端末装置11に対応するエージェントプロセス23と他の端末装置に対応するエージェントプロセスとの間でネゴシエーションが行われて、端末装置11と他の端末装置との間の通信が制御される。このため、端末装置11は様々な種類の他の端末装置と、適切な通信方法で円滑に通信を開始することができる。また、ネゴシエーションにおいてエージェントプロセス23が介在することで、端末装置11が他の端末装置と直接ネゴシエーションする場合と比べて、セキュリティが向上する。
また、場所毎にその場所に存在する端末装置に関する情報を一元管理するエージェントプロセス(エージェントプロセス21,22)を設けることで、端末装置11やエージェントプロセス23は、端末装置12が場所Aに存在することを容易に知ることができる。ここで、1つの「場所」である空間の範囲は、1つの会議室や1つのフロアや1つの建物など、コミュニティの形成状況に応じて任意に定義できる。定義された「場所」に対応するエージェントプロセスがその場所に存在する端末装置に関する情報のみを管理することで、複数の場所が近接していても、各端末装置が何れの場所に属するかが特定される。例えば、場所A,Bが近接していても、端末装置11やエージェントプロセス23は、場所Aには端末装置12が存在し端末装置13が存在しないことを知ることができる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、ネットワーク31,32、携帯端末装置100,100a、ディスプレイ100b,100c、アクセスポイント100d,100e、サーバ装置200,200aおよびデータベースサーバ200bを含む。
ディスプレイ100bとアクセスポイント100dは会議室Aに設置され、ディスプレイ100cとアクセスポイント100eは会議室Bに設置されている。また、会議室Aには会議の出席者によって携帯端末装置100,100aが持ち込まれている。サーバ装置200,200aおよびデータベースサーバ200bは、クラウドサービスを提供するデータセンタに設置されている。ネットワーク31はインターネットなどの広域ネットワークであり、ネットワーク32はデータセンタ内のLAN(Local Area Network)である。アクセスポイント100d,100eはネットワーク31に接続されている。
携帯端末装置100,100aは、携帯電話機やPDAやノート型コンピュータなど、ユーザから操作される携帯型の端末装置である。ディスプレイ100b,100cは、携帯端末装置100,100aなどの他の端末装置からのアクセスに応じて画像を表示する端末装置であり、テレビ受像機やプロジェクタであってもよい。携帯端末装置100,100aおよびディスプレイ100b,100cは、1またはそれ以上の種類の通信インタフェースを備える。通信インタフェースの種類は端末装置によって異なってもよい。ただし、携帯端末装置100,100aは無線インタフェースを備えることが好ましい。アクセスポイント100d,100eは、無線LANの通信方式に従って、無線リンク間または無線リンクと有線リンクとの間でデータを中継する通信装置である。
ここで、携帯端末装置100,100aおよびディスプレイ100b,100cは、ネットワーク31,32を介してサーバ装置200,200aと通信することができる。ネットワーク31に接続する方法としては、携帯電話網(図示せず)を利用する方法、アクセスポイント100d,100eを利用する方法、会議室A,Bに設けられた有線LAN(図示せず)を利用する方法などが考えられる。また、携帯端末装置100,100aおよびディスプレイ100b,100cのうちの任意の2つは、共通のアクセスポイントを介して通信できることもあるし、通信装置を介さずに直接通信できることもある。
サーバ装置200,200aは、複数の仮想的なコンピュータ(仮想マシン)を並行して動作させることができるサーバコンピュータである。もちろん、ネットワーク32には3台以上のサーバ装置が接続されていてもよい。各仮想マシンではOSが動作しており、他の仮想マシンとは独立に情報処理が行われる。各仮想マシンには、アドレスなどの識別情報が付与されている。複数の仮想マシンは、サーバ装置200,200aの負荷に応じてサーバ装置200,200aに分散して配置されてもよい。
ここで、サーバ装置200,200aには、1つの端末装置および1つの会議室につき1つの仮想マシンが用意される。すなわち、携帯端末装置100,100aおよびディスプレイ100b,100cそれぞれに対応する仮想マシン(ユーザ仮想マシン)と、会議室A,Bそれぞれに対応する仮想マシン(オーナー仮想マシン)とが用意される。各端末装置は、複数の仮想マシンのうちその端末装置に対応する仮想マシンと通信し、他の端末装置に対応する仮想マシンや会議室に対応する仮想マシンとは直接通信しない。各会議室に対応する仮想マシンは、その会議室にある端末装置を管理するために用いられる。
データベースサーバ200bは、HDDなどの不揮発性の記憶装置にデータを記憶して管理するサーバコンピュータである。サーバ装置200,200aで動作する仮想マシンからデータベースサーバ200bに対して、ネットワーク32を介してデータの読み出しやデータの書き込みなどのデータアクセスが行われる。
なお、携帯端末装置100は前述の端末装置11の一例であり、携帯端末装置100aやディスプレイ100bは前述の端末装置12の一例であり、ディスプレイ100cは前述の端末装置13の一例である。また、サーバ装置200,200aおよびデータベースサーバ200bの集合は、前述の情報処理システム20の一例である。
図3は、携帯端末装置のハードウェア例を示すブロック図である。携帯端末装置100は、CPU101、RAM102、フラッシュメモリ103、ディスプレイ104、タッチパネル105、マイクロホン106、撮像部107および無線インタフェース108を有する。上記ユニットは、携帯端末装置100内でバス109に接続されている。携帯端末装置100aも、携帯端末装置100と同様のハードウェアを用いて実現できる。
CPU101は、プログラムの命令を実行する演算器を含むプロセッサである。CPU101は、フラッシュメモリ103に記憶されているプログラムやデータの少なくとも一部をRAM102にロードしてプログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、携帯端末装置100は複数のプロセッサを備えてもよく、複数のプロセッサまたはプロセッサコアを用いて並列処理を行ってもよい。また、2以上のプロセッサの集合、FPGAやASICなどの専用回路、2以上の専用回路の集合、プロセッサと専用回路の組み合わせなどを「プロセッサ」と呼んでもよい。
RAM102は、CPU101が実行するプログラムやプログラムから参照されるデータを一時的に記憶する揮発性メモリである。なお、携帯端末装置100は、RAM以外の種類のメモリを備えてもよく、複数個の揮発性メモリを備えてもよい。
フラッシュメモリ103は、OSやファームウェアやアプリケーションソフトウェアなどのソフトウェアのプログラムおよびデータを記憶する不揮発性の記憶装置である。なお、携帯端末装置100は、HDDやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数個の不揮発性の記憶装置を備えてもよい。
ディスプレイ104は、CPU101からの命令に従って画像を表示する。ディスプレイ104としては、液晶ディスプレイ(LCD:Liquid Crystal Display)や有機EL(Electro Luminescence)ディスプレイなどを用いることができる。
タッチパネル105は、ディスプレイ104に重ねて設けられており、ディスプレイ104に対するユーザのタッチ操作を検出してタッチ位置を入力信号としてCPU101に通知する。タッチ操作には、タッチペンなどのポインティングデバイスまたはユーザの指が用いられる。タッチ位置の検出方式には、例えば、マトリクススイッチ方式、抵抗膜方式、表面弾性波方式、赤外線方式、電磁誘導方式、静電容量方式など様々な検出方式があり、何れの方式を採用してもよい。なお、携帯端末装置100は、複数の入力キーを備えたキーパッドなど、他の種類の入力デバイスを備えてもよい。
マイクロホン106は、音の物理振動を電気信号に変換することで音入力を受け付け、音信号としての電気信号をCPU101に出力する。マイクロホン106を用いることで、携帯端末装置100の周囲の環境音や周囲にいる人の音声を録音することができる。
撮像部107は、光を電気信号に変換するイメージセンサを備える。イメージセンサとしては、CCDセンサ(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)センサなどを用いることができる。イメージセンサが生成した画像信号をJPEG(Joint Photographic Experts Group)などの所定の画像形式に変換する処理は、CPU101が行ってもよいし、撮像部107が備えるDSPが行ってもよい。
無線インタフェース108は、無線通信を行う通信インタフェースである。無線インタフェース108は、受信信号の復調・復号や送信信号を符号化・変調などを行う。無線インタフェース108は、携帯電話網などの広域ネットワークにアクセスするものでもよいし、無線LANなどのローカルネットワークにアクセスするものでもよいし、Bluetooth(登録商標)などの規格に従って近距離無線通信を行うものでもよい。例えば、無線インタフェース108は、アクセスポイント100dを介してネットワーク31に接続する。携帯端末装置100は、複数の無線インタフェースを備えてもよい。
なお、CPU101に実行させるプログラムは、フラッシュメモリ103に他の記憶装置からコピーするようにしてもよい。また、CPU101に実行させるプログラムは、無線インタフェース108がネットワーク31からダウンロードするようにしてもよい。
図4は、サーバ装置のハードウェア例を示すブロック図である。サーバ装置200は、CPU201、RAM202、HDD203、画像信号処理部204、入力信号処理部205、ディスクドライブ206および通信インタフェース207を有する。上記ユニットは、サーバ装置200内でバス208に接続されている。サーバ装置200aやデータベースサーバ200bも、サーバ装置200と同様のハードウェアを用いて実現できる。
CPU201は、前述のCPU101と同様に、プログラムの命令を実行する演算器を含むプロセッサである。RAM202は、前述のRAM102と同様に、CPU201が実行するプログラムやデータを一時的に記憶する揮発性メモリである。
HDD203は、OSやファームウェアやアプリケーションソフトウェアなどのソフトウェアのプログラムおよびデータを記憶する不揮発性の記憶装置である。なお、サーバ装置200は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数個の不揮発性の記憶装置を備えてもよい。
画像信号処理部204は、CPU201からの命令に従って、サーバ装置200に接続されたディスプレイ41に画像を出力する。ディスプレイ41としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部205は、サーバ装置200に接続された入力デバイス42から入力信号を取得し、CPU201に通知する。入力デバイス42としては、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ206は、記録媒体43に記録されたプログラムやデータを読み取る駆動装置である。記録媒体43として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ206は、CPU201からの命令に従って、記録媒体43から読み取ったプログラムやデータをRAM202またはHDD203に格納する。
通信インタフェース207は、ネットワーク32を介して他の情報処理装置(例えば、携帯端末装置100,100aやデータベースサーバ200bなど)と通信を行う。
ただし、サーバ装置200はディスクドライブ206を備えていなくてもよく、専ら他の情報処理装置からアクセスされる場合には、画像信号処理部204や入力信号処理部205を備えていなくてもよい。また、ディスプレイ41や入力デバイス42は、サーバ装置200の筐体と一体に形成されていてもよい。
図5は、仮想マシンの配置例を示すブロック図である。サーバ装置200は、仮想マシン210,210a,220およびハイパーバイザ230を有する。サーバ装置200aも、サーバ装置200と同様に複数の仮想マシンとハイパーバイザを有する。
仮想マシン210は、携帯端末装置100に対応付けられた仮想マシンである。携帯端末装置100がサーバ装置200,200aによって提供されるサービスを初めて利用するとき、仮想マシン210のディスクイメージが生成されて仮想マシン210がサーバ装置200で起動される。仮想マシン210は、一度起動した後は携帯端末装置100の原電のON/OFFに関係なく常時稼働していてもよい。携帯端末装置100の電源がONの間、携帯端末装置100と仮想マシン210との間にコネクションが確立されている。
仮想マシン210aは、携帯端末装置100aに対応付けられた仮想マシンである。携帯端末装置100aがサーバ装置200,200aによって提供されるサービスを初めて利用するとき、仮想マシン210aのディスクイメージが生成されて仮想マシン210aがサーバ装置200で起動される。仮想マシン210aは、仮想マシン210と同様に常時稼働していてもよい。携帯端末装置100aの電源がONの間、携帯端末装置100aと仮想マシン210aとの間にコネクションが確立されている。
仮想マシン220は、会議室Aに対応する仮想マシンである。仮想マシン220は、例えば、会議室Aの管理者からの指示に応じてサーバ装置200で生成されて起動される。
ハイパーバイザ230は、仮想マシン210,210a,220を制御する。ハイパーバイザ230は、仮想マシン210,210a,220にCPU201の演算リソースやRAM202の記憶リソースを割り振る。ハイパーバイザ230の制御のもと、仮想マシン210,210a,220が起動される。また、ハイパーバイザ230は、仮想マシン210,210a,220の間の通信、携帯端末装置100と仮想マシン210との間の通信、携帯端末装置100aと仮想マシン210aとの間の通信を中継する。通信の中継は、仮想マシン210,210a,220に割り振られたアドレスに基づいて行う。
ここで、仮想マシン210は、オペレーティングシステム211とユーザエージェント212を有する。仮想マシン210aは、オペレーティングシステム211aとユーザエージェント212aを有する。仮想マシン220は、オペレーティングシステム211とオーナーエージェント222を有する。ユーザエージェント212,212aおよびオーナーエージェント222は、ソフトウェアのモジュールとして実装できる。
オペレーティングシステム211,211a,221は、ハイパーバイザ230から割り振られたCPU201の演算リソースやRAM202の記憶リソースを管理し、アプリケーションソフトウェアの実行をスケジューリングする。
ユーザエージェント212は、オーナーエージェント222や他のユーザエージェントと連携して、携帯端末装置100と他の端末装置との間の通信を制御する。同様に、ユーザエージェント212aは、オーナーエージェント222や他のユーザエージェントと連携して、携帯端末装置100aと他の端末装置との間の通信を制御する。オーナーエージェント222は、会議室Aに関する情報を一元的に管理し、何れかのユーザエージェントからの要求に応じて会議室Aに関する情報をそのユーザエージェントに提供する。具体的には、オーナーエージェント222は、会議室Aに存在する端末装置(ディスプレイ100bなど)に対応する仮想マシンのリストを管理する。これにより、ユーザエージェント212,212aは、会議室Aに存在する端末装置を容易に知ることができる。
なお、仮想マシン210またはユーザエージェント212は前述のエージェントプロセス23の一例であり、仮想マシン210aまたはユーザエージェント212aは前述のエージェントプロセス24の一例である。また、仮想マシン220またはオーナーエージェント222は前述のエージェントプロセス21の一例である。
また、上記説明では仮想マシン210,210a,220の全てがサーバ装置200に配置されているものとしたが、仮想マシン210,210a,220の少なくとも1つがサーバ装置200aに配置されてもよい。その場合、サーバ装置200aに配置される仮想マシンはサーバ装置200aのハイパーバイザによって制御される。
前述のように、サーバ装置200またはサーバ装置200aでは、ディスプレイ100b,100cに対応する仮想マシンや会議室Bに対応する仮想マシンも稼働している。ディスプレイ100b,100cに対応する仮想マシンは、ユーザエージェントを有しており、会議室Bに対応する仮想マシンは、オーナーエージェントを有している。
図6は、携帯端末装置とサーバ装置の機能例を示すブロック図である。ここでは、仮想マシン210,220がサーバ装置200に配置される場合を考える。
携帯端末装置100は、起動通知部111、環境データ送信部112および通信制御部113を有する。起動通知部111、環境データ送信部112および通信制御部113は、例えば、携帯端末装置100で実行されるソフトウェアのモジュールとして実装される。携帯端末装置100aも携帯端末装置100と同様の機能を有する。
起動通知部111は、携帯端末装置100が最初に起動したとき、または、サーバ装置200,200aによって提供されるサービスを利用するためのアプリケーションソフトウェアが初めて実行されたとき、その旨を所定のサーバ装置に通知する。通知先のサーバ装置は、サーバ装置200,200aの何れかでもよいし、サーバ装置200,200aを管理する管理用コンピュータでもよい。これにより、携帯端末装置100に対応するユーザエージェント212がサーバ装置200で起動する。以降、起動通知部111は、携帯端末装置100の電源がONになる毎に、携帯端末装置100とユーザエージェント212との間にコネクションを確立し、電源がONである間コネクションを維持する。
環境データ送信部112は、マイクロホン106や撮像部107や無線インタフェース108などのセンサデバイスを用いて、携帯端末装置100の周囲の状況を示す環境データを生成する。生成する環境データには複数の種類のデータが含まれてもよい。
例えば、環境データ送信部112は、撮像部107を用いて携帯端末装置100の周囲の風景を撮像した風景画像を生成する。また、環境データ送信部112は、マイクロホン106を用いて携帯端末装置100の周囲の環境音や携帯端末装置100の近くにいる人の音声を録音した音データを生成する。また、環境データ送信部112は、会議室にQRコード(登録商標)などの二次元コードやロゴタイプが貼付されているとき、撮像部107を用いて二次元コードやロゴタイプを読み取る。また、環境データ送信部112は、無線インタフェース108を用いて無線信号の受信状況を示す無線情報(例えば、無線インタフェース108によって検出されたアクセスポイントのリスト)を生成する。
環境データは、例えば、携帯端末装置100をもつユーザが会議室Aに入ったときにユーザの操作に応じて生成される。環境データ送信部112は、生成した環境データをユーザエージェント212(すなわち、携帯端末装置100に対応する仮想マシン210で稼働しているユーザエージェント)に送信する。環境データに対する応答として、環境データ送信部112は、携帯端末装置100が属する場所である会議室Aに存在する端末装置のリストをユーザエージェント212から受信する。また、環境データ送信部112は、無線LANや近距離無線通信方式など携帯端末装置100が使用可能な通信方式をユーザエージェント212に通知する。通信方式を示す情報は、環境データと合わせて送信してもよいし、環境データとは別タイミングで(例えば、仮想マシン210が初めて起動するときや仮想マシン210とコネクションを確立するときに)送信してもよい。
通信制御部113は、環境データ送信部112がユーザエージェント212から受信した端末装置のリストをディスプレイ104に表示する。ユーザがリストの中から通信相手とする端末装置を選択すると、通信制御部113は、選択された端末装置をユーザエージェント212に通知する。そして、通信制御部113は、ユーザエージェント212から指示された方法で、ユーザが選択した端末装置と通信するよう制御する。携帯端末装置100が他の端末装置と通信するときの通信経路としては、サーバ装置200を経由する経路、サーバ装置200は迂回するがアクセスポイント100dなどの通信装置を経由する経路、通信装置を経由せずに直接通信する経路が挙げられる。
ユーザエージェント212は、オーナーアクセス部213およびネゴシエーション部214を有する。オーナーエージェント222は、認証部223および場所情報提供部224を有する。他のユーザエージェントもユーザエージェント212と同様の機能を有し、他のオーナーエージェントもオーナーエージェント222と同様の機能を有する。
オーナーアクセス部213は、携帯端末装置100から環境データを受信すると、環境データから特徴情報を抽出する。例えば、環境データに風景画像が含まれている場合、オーナーアクセス部213は、風景画像に写ったオブジェクトを認識する。また、環境データに音データが含まれている場合、オーナーアクセス部213は、音信号を複数の周波数成分に分解し、どの周波数成分がどのような周期で現れるか分析する。ただし、センサデバイスから取得されたデータの分析を携帯端末装置100で行うようにしてもよい。その場合、携帯端末装置100からユーザエージェント212に送信される環境データは分析済の特徴情報であり、オーナーアクセス部213は環境データを分析しなくてよい。
そして、オーナーアクセス部213は、特徴情報を用いて、携帯端末装置100が現在いる場所に対応する仮想マシンを探す。例えば、携帯端末装置100から受信した環境データの特徴情報が会議室Aの特徴に適合する場合、オーナーアクセス部213は、携帯端末装置100が会議室Aにいると推定して、会議室Aに対応する仮想マシン220を特定する。特徴情報から仮想マシンを探すとき、データベースサーバ200bが参照される。
特徴情報から仮想マシン220が特定されると、オーナーアクセス部213は仮想マシン220にアクセスする。すると、オーナーアクセス部213は、仮想マシン220が管理する会議室Aに存在する端末装置のリストおよびそれら端末装置に対応する仮想マシンのリストを、仮想マシン220のオーナーエージェント222から取得して保持する。オーナーアクセス部213は、オーナーエージェント222から取得した端末装置のリストを携帯端末装置100に転送する。これにより、携帯端末装置100は、携帯端末装置100が属する会議室Aに存在する端末装置を知ることができる。
ネゴシエーション部214は、携帯端末装置100から使用可能な通信方式を示す情報を受信して保持しておく。ネゴシエーション部214は、携帯端末装置100から通信相手の端末装置が指定されると、オーナーアクセス部213が取得した端末装置および仮想マシンのリストに基づいて、指定された端末装置に対応する仮想マシンを特定する。そして、ネゴシエーション部214は、特定した仮想マシンのユーザエージェントとネゴシエーションを行い、互いが保持する使用可能な通信方式の情報に基づいて通信方法を決定する。ネゴシエーション部214は、決定した通信方法で携帯端末装置100が通信を行うよう制御する。携帯端末装置100がサーバ装置200経由で他の端末装置と通信すると決定した場合、ネゴシエーション部214はデータを中継する。
認証部223は、ユーザエージェント212からアクセスを受け付けると、ユーザエージェント212が会議室Aに関する情報を提供してよい相手であるか認証する。具体的には、認証部223は、環境データから抽出された特徴情報をユーザエージェント212から取得し、ユーザエージェント212が会議室Aにいる端末装置に対応するものであることを特徴情報から確認する。認証部223は、確認できた場合は認証成功と判定し、確認できなかった場合は認証失敗と判定する。ただし、仮想マシン210がブラックリストに記載されているときは、特徴情報に関係なく認証失敗と判定してもよい。
場所情報提供部224は、認証部223がユーザエージェント212の認証に成功すると、データベースサーバ200bから会議室Aに存在する端末装置を特定するための情報およびそれら端末装置に対応する仮想マシンを特定するための情報を取得する。そして、場所情報提供部224は、会議室Aの場所情報として、端末装置のリストおよびそれら端末装置に対応する仮想マシンのリストをユーザエージェント212に提供する。
データベースサーバ200bは、エージェントテーブル241と場所情報テーブル242を記憶する。これらテーブルは、HDDなどの不揮発性の記憶装置に記憶されている。エージェントテーブル241には、端末装置または会議室に対応する仮想マシンに関する情報が登録されている。エージェントテーブル241では、少なくとも各会議室に対応する仮想マシンについて、当該仮想マシンが管理する会議室の特徴情報が関連付けられている。場所情報テーブル242には、会議室毎に、当該会議室に設置されている端末装置や当該会議室に持ち込まれた端末装置に対応する仮想マシンが登録されている。
図7は、環境データの例を示す図である。環境データ114は、携帯端末装置100の環境データ送信部112によって生成されてユーザエージェント212に送信される。携帯端末装置100aも環境データ114と同様の環境データを生成し得る。環境データ114は、風景画像、音データ、二次元コードおよび無線情報を含む。
風景画像は、撮像部107によって撮像された周囲の画像であり、JPEGなど所定の形式の画像ファイルとして表される。音データは、マイクロホン106によって捕捉された環境音や音声を含むデータであり、WAVなど所定の形式の音ファイルとして表される。二次元コードは、撮像部107によって撮像された視覚的コードであり、JPEGなど所定の形式の画像ファイルとして表される。ただし、環境データ送信部112は、撮像した二次元コードに代えて、二次元コードを復号したデータ(例えば、二次元コードが表す文字列)を環境データ114に含めてもよい。無線情報は、無線インタフェース108によって検出されたアクセスポイントのSSID(Service Set Identifier)など、無線信号の受信状況を示す情報であり、テキストファイルとして表される。
図8は、エージェントテーブルの例を示す図である。エージェントテーブル241は、データベースサーバ200bに記憶されている。エージェントテーブル241は、ユーザエージェント212,212aおよびオーナーエージェント222から参照され、また、ユーザエージェント212,212aによって更新される。エージェントテーブル241は、ID(Identification)、種別、風景、音、コードおよび無線の項目を含む。
IDの項目には、仮想マシンの識別情報(例えば、仮想マシンのアドレス)が登録される。仮想マシンの識別情報は、例えば、当該仮想マシンが初めて起動するときに割り当てられる。種別の項目には、各仮想マシンがどのような端末装置または場所に対応しているかが登録される。例えば、会議室A,Bに対応する仮想マシンについては「会議室」、携帯端末装置100,100aに対応する仮想マシンについては「携帯端末」、ディスプレイ100b,100cに対応する仮想マシンについては「ディスプレイ」が、種別の項目に登録される。端末装置の種別は、例えば、当該端末装置に対応する仮想マシンが初めて起動するときに端末装置から通知される。端末装置の種別は、ユーザが複数の端末装置の中から通信相手を選択するのに十分な情報であることが好ましい。
風景、音、コードおよび無線の項目には、仮想マシンに対応する場所または仮想マシンに対応する端末装置の属する場所についての特徴情報が登録される。すなわち、風景の項目には、風景画像に写る1またはそれ以上のオブジェクトが登録される。音の項目には、音信号に含まれる1またはそれ以上の周波数成分と各周波数成分が現れる周期が登録される。コードの項目には、二次元コードとしての画像(または、二次元コードの復号結果)が登録される。無線の項目には、無線信号の受信状況が登録される。
会議室A,Bに対応する仮想マシンについては、予め会議室A,Bの特徴情報がエージェントテーブル241に登録されている。会議室Aに持ち込まれる携帯端末装置100,100aに対応する仮想マシンについては、携帯端末装置100,100aで生成された環境データの特徴情報がエージェントテーブル241に登録される。会議室Aに設置されたディスプレイ100bおよび会議室Bに設置されたディスプレイ100cに対応する仮想マシンについては、エージェントテーブル241に特徴情報が登録されなくてもよい。
図9は、場所情報テーブルの例を示す図である。場所情報テーブル242は、データベースサーバ200bに記憶されている。場所情報テーブル242は、オーナーエージェント222から参照され、また、オーナーエージェント222によって更新される。場所情報テーブル242は、場所名、設置端末および参加端末の項目を含む。
場所名の項目には、会議室A,Bの名称が登録される。設置端末の項目には、各会議室に設置されている端末装置に対応する仮想マシンの識別情報が登録される。例えば、会議室Aについては、会議室Aに設置されたディスプレイ100bに対応する仮想マシンの識別情報が設定される。参加端末の項目には、各会議室に持ち込まれた端末装置に対応する仮想マシンの識別情報が登録される。例えば、会議室Aについては、会議室Aに持ち込まれた携帯端末装置100aに対応する仮想マシン210aの識別情報が設定される。携帯端末装置100,100aの移動に伴って、参加端末の項目は更新される。
次に、ユーザエージェント212およびオーナーエージェント222により、携帯端末装置100と会議室Aにある他の端末装置と間の通信を制御する手順の例を説明する。他のユーザエージェントもユーザエージェント212と同様の処理を実行でき、他のオーナーエージェントもオーナーエージェント222と同様の処理を実行できる。
図10は、場所情報取得の手順例を示すフローチャートである。図10に示す処理が携帯端末装置100に対応するユーザエージェント212によって実行される。
(ステップS11)オーナーアクセス部213は、携帯端末装置100から環境データを受信する。受信する環境データには、風景画像、音データ、二次元コードおよび無線情報のうちの1またはそれ以上の種類のデータが含まれている。
(ステップS12)オーナーアクセス部213は、画像認識技術や信号処理技術などを用いて、受信した環境データをデータ項目毎に分析して特徴情報を抽出する。そして、オーナーアクセス部213は、受信した環境データの特徴情報とエージェントテーブル241に登録された特徴情報とを比較して、携帯端末装置100の属する会議室に対応付けられた仮想マシンを検索する。ここでは、会議室Aに対応付けられた仮想マシン220が検索されると期待される。会議室に対応する仮想マシンの検索方法の詳細は後述する。
(ステップS13)オーナーアクセス部213は、携帯端末装置100から受信した環境データの特徴情報を、仮想マシン210に関する特徴情報としてエージェントテーブル241に登録する。携帯端末装置100が前にいた場所に関する特徴情報がエージェントテーブル241に登録されている場合、その既存の特徴情報は消去してよい。
(ステップS14)オーナーアクセス部213は、ステップS12で取得した仮想マシン220の識別情報を用いて、仮想マシン220で動作するオーナーエージェント222にアクセスする。このとき、オーナーアクセス部213は、携帯端末装置100から受信した環境データの特徴情報をオーナーエージェント222に渡す。
(ステップS15)オーナーアクセス部213は、オーナーエージェント222による認証が成功したか判断する。認証が成功したときは、会議室Aに関する端末装置のリストと仮想マシンのリストがオーナーエージェント222から提供される。認証が失敗したときは、その旨がオーナーエージェント222から通知される。認証が成功した場合は処理をステップS16に進め、失敗した場合は処理をステップS18に進める。
(ステップS16)オーナーアクセス部213は、オーナーエージェント222から取得した会議室Aに存在する端末装置のリストとそれら端末装置に対応する仮想マシンのリストを保持する(例えば、RAM202またはHDD203に保存する)。
(ステップS17)オーナーアクセス部213は、オーナーエージェント222から取得した会議室Aに存在する端末装置のリストを、携帯端末装置100に送信する。
(ステップS18)オーナーアクセス部213は、携帯端末装置100に認証失敗を通知する。なお、オーナーアクセス部213は、携帯端末装置100に環境データを再生成させて新たな環境データに基づいて認証を試みてもよい。また、オーナーアクセス部213は、オーナーエージェントの選択を間違えたと判断して、受信済の同じ環境データに基づいて他のオーナーエージェントによる認証を試みてもよい。
なお、上記ステップS13のエージェントテーブル241を更新する処理は、ステップS14の後など任意のタイミングで行ってよく、ステップS15のオーナーエージェントによる認証が成功した場合のみ行ってもよい。また、上記ステップS17の端末装置のリストを送信する処理は、ステップS16の前に行ってもよい。
図11は、オーナー検索の手順例を示すフローチャートである。図11に示す処理が上記ステップS12においてユーザエージェント212によって実行される。
(ステップS111)オーナーアクセス部213は、受信した環境データに風景画像が含まれているか判断する。環境データに風景画像が含まれる場合は処理をステップS112に進め、含まれない場合は処理をステップS113に進める。
(ステップS112)オーナーアクセス部213は、画像認識技術を用いて、風景画像に写った1またはそれ以上のオブジェクトを認識する。認識され得るオブジェクトには、例えば、会議室に設置された椅子・机・ソファや会議室の壁の模様などが含まれる。認識させたいオブジェクトの形状・色彩などの特徴が予め定義されていてもよい。
(ステップS113)オーナーアクセス部213は、受信した環境データに音データが含まれているか判断する。環境データに音データに含まれる場合は処理をステップS114に進め、含まれない場合は処理をステップS115に進める。
(ステップS114)オーナーアクセス部213は、信号処理技術を用いて、環境音や音声を示す音信号を複数の周波数成分に分解し、レベルが一定上の各周波数成分について出現する周期を算出する。例えば、周波数f1の信号が周期x1で現れ周波数f2の信号が周期x2で現れるという情報が、音データの特徴情報となり得る。ただし、音データの特徴情報はこれに限定されず、周期の情報を含まなくてもよい。
(ステップS115)オーナーアクセス部213は、エージェントテーブル241に登録された仮想マシンの中から、何れかの会議室に対応したオーナーエージェントを備える仮想マシン、すなわち、種別が「場所」である仮想マシンを1つ選択する。
(ステップS116)オーナーアクセス部213は、受信した環境データに含まれるデータ項目(風景画像・音データ・二次元コード・無線情報など)を1つ選択する。
(ステップS117)オーナーアクセス部213は、ステップS116で選択したデータ項目について、受信した環境データの特徴情報とステップS115で選択した仮想マシンに対応付けられている特徴情報とを比較し、両者の一致度を算出する。
データ項目が風景画像の場合、オーナーアクセス部213は、例えば、エージェントテーブル241の風景の項目に登録されたオブジェクトのうち、受信した風景画像から認識されたオブジェクトの割合を一致度とする。データ項目が音データの場合、オーナーアクセス部213は、例えば、エージェントテーブル241の音の項目に登録された(周波数,周期)の組のうち、受信した音データから認識された組の割合を一致度とする。ただし、周波数や周期の比較では一定の誤差を許容してもよい。
データ項目が二次元コードの場合、オーナーアクセス部213は、例えば、エージェントテーブル241のコードの項目に登録された二次元コードと受信した二次元コードとを比較して、全体のセル数に対する色が一致したセルの割合を一致度とする。ただし、二次元コードを復号して得られた文字列同士を比較することで一致度を算出することも可能である。データ項目が無線情報の場合、オーナーアクセス部213は、例えば、エージェントテーブル241の無線の項目に登録されたアクセスポイントのうち、受信した無線情報に記載されたアクセスポイントの割合を一致度とする。ただし、無線情報に受信信号レベルの情報を含めるようにして比較に用いてもよいし、無線情報にアクセスポイント以外の検出された無線通信装置の情報を含めるようにして比較に用いてもよい。
(ステップS118)オーナーアクセス部213は、受信した環境データに含まれる全てのデータ項目をステップS116で選択したか判断する。全て選択した場合は処理をステップS119に進め、未選択のものがある場合は処理をステップS116に進める。
(ステップS119)オーナーアクセス部213は、ステップS117で算出した1またはそれ以上のデータ項目についての一致度を重み付けして合計することで、環境データ全体の一致度を算出する。例えば、風景画像の重みを50、音データの重みを30、二次元コードの重みを90、無線情報の重みを60のように予め設定しておく。
(ステップS120)オーナーアクセス部213は、種別が「場所」である仮想マシンをステップS115で全て選択したか判断する。全て選択した場合は処理をステップS121に進め、未選択のものがある場合は処理をステップS115に進める。
(ステップS121)オーナーアクセス部213は、ステップS119で算出した環境データ全体の一致度が最大となる仮想マシンを、携帯端末装置100がいる場所に対応する仮想マシン(オーナー仮想マシン)として選択する。携帯端末装置100が会議室Aにいる場合、仮想マシン220が選択されると期待される。ただし、環境データに含まれるデータ項目が少ない場合や、環境データが携帯端末装置100のいる場所の特徴を十分に表現できていない場合には、オーナーアクセス部213は選択を誤る可能性がある。
なお、上記ステップS111,S112の風景画像の処理と上記ステップS113,S114の音データの処理とは、逆順に実行してもよいし並行して実行してもよい。
図12は、場所情報提供の手順例を示すフローチャートである。図12に示す処理が会議室Aに対応するオーナーエージェント222によって実行される。
(ステップS21)認証部223は、ユーザエージェント212からのアクセスを受け付け、環境データの特徴情報をユーザエージェント212から取得する。
(ステップS22)認証部223は、アクセス元のユーザエージェント212が、オーナーエージェント222が管理する会議室Aにいる端末装置に対応するユーザエージェントであるか認証する。ユーザエージェントの認証方法の詳細は後述する。
(ステップS23)認証部223は、ステップS22の認証に成功したか、すなわち、ユーザエージェント212が会議室Aにいる端末装置に対応するユーザエージェントであることを確認できたか判断する。認証に成功した場合は処理をステップS24に進め、認証に失敗した場合は処理をステップS28に進める。
(ステップS24)場所情報提供部224は、場所情報テーブル242から、会議室Aに存在する端末装置に対応する仮想マシンを検索する。これにより、場所情報提供部224は、会議室Aに設置されたディスプレイ100bに対応する仮想マシンの識別情報と、会議室Aに持ち込まれた携帯端末装置100aに対応する仮想マシン210aの識別情報とを、場所情報テーブル242から取得する。なお、セキュリティの観点から、場所情報提供部224が、場所情報テーブル242に登録された情報のうちオーナーエージェント222が管理する会議室A以外の場所の情報にアクセスできないようにしてもよい。
(ステップS25)場所情報提供部224は、エージェントテーブル241から、ステップS24で検索された各仮想マシンに対応する端末装置の種別を検索する。種別には、ユーザが通信相手を選択しやすいようにモデル名や型番号などが含まれてもよい。
(ステップS26)場所情報提供部224は、端末装置のリストと各端末装置に対応する仮想マシンを特定するためのリストとを含む場所情報を、ユーザエージェント212に提供する。例えば、端末装置のリストはステップS25で取得した種別のリストであり、仮想マシンのリストはステップS24で取得した識別情報のリストである。
(ステップS27)認証部223は、ユーザエージェント212が動作する仮想マシン210の識別情報を、会議室Aの参加端末として場所情報テーブル242に登録する。
(ステップS28)認証部223は、認証が失敗した(取得した特徴情報が会議室Aを示していると確認できなかった)旨をユーザエージェント212に通知する。
なお、上記ステップS27の場所情報テーブル242を更新する処理は、ユーザエージェント212の認証に成功した後の任意のタイミングで行ってよい。
図13は、ユーザ認証の手順例を示すフローチャートである。図13に示す処理が上記ステップS22においてオーナーエージェント222によって実行される。
(ステップS131)認証部223は、ユーザエージェント212から取得した特徴情報とオーナーエージェント222が管理する会議室Aの特徴情報との間で、全体の一致度を算出する。特徴情報の一致度は、図11のステップS116〜S119と同様に、データ項目毎の一致度を算出し、1またはそれ以上のデータ項目の一致度を重み付けして合計することで算出できる。ただし、認証部223は、ユーザエージェント212が用いた方法とは異なる方法で特徴情報の一致度を算出するようにしてもよい。
(ステップS132)認証部223は、ステップS131で算出した特徴情報の一致度に基づいて、ユーザエージェント212に対応する端末装置が会議室Aにいると言えるか判断する。例えば、特徴情報の一致度が所定の閾値以上のときは端末装置が会議室Aにいると判断し、それ以外のときは端末装置が会議室Aにいるか否か不明と判断する。端末装置が会議室Aにいると言える場合は処理をステップS133に進め、端末装置が会議室Aにいると言えない場合は処理をステップS134に進める。
(ステップS133)認証部223は、認証成功と判定する。
(ステップS134)認証部223は、ユーザエージェント212に追加の特徴情報を要求する。すると、ユーザエージェント212から携帯端末装置100に追加の環境データが要求される。要求に応じて携帯端末装置100からユーザエージェント212に追加の環境データが送信された場合、ユーザエージェント212で特徴情報が抽出され、ユーザエージェント212からオーナーエージェント222に追加の特徴情報が提供される。ただし、携帯端末装置100が追加の環境データを送信しない場合もある。
(ステップS135)認証部223は、ユーザエージェント212から追加の特徴情報を取得したか判断する。追加の特徴情報を要求してから一定時間以内にユーザエージェント212から応答がない場合や、ユーザエージェント212から拒否応答を取得した場合には、認証部223は、追加の特徴情報の取得に失敗したと判断してよい。追加の特徴情報を取得した場合は、処理をステップS131に進め、前に取得した特徴情報と追加の特徴情報とを合わせて(または、追加の特徴情報単独で)一致度を算出する。追加の特徴情報を取得しなかった場合は、処理をステップS136に進める。
(ステップS136)認証部223は、認証失敗と判定する。
なお、オーナーエージェント222は、過去に場所情報を不正利用しようとした仮想マシンなど、不適切な情報処理を行った仮想マシンが登録されたブラックリストを利用できる場合がある。その場合、認証部223は、ブラックリストに登録された仮想マシン上のユーザエージェントについては、特徴情報に関係なく認証失敗と判断してよい。
図14は、通信開始の手順例を示すフローチャートである。図14に示す処理が携帯端末装置100に対応するユーザエージェント212によって実行される。
(ステップS31)ネゴシエーション部214は、ユーザによって選択された通信相手の端末装置を示す通知を携帯端末装置100から受信する。
(ステップS32)ネゴシエーション部214は、オーナーエージェント222から取得している仮想マシンのリストの中から、携帯端末装置100から通知された通信相手に対応する仮想マシンを選択する。そして、ネゴシエーション部214は、選択した仮想マシンの識別情報に基づいて、当該仮想マシンのユーザエージェントにアクセスする。
(ステップS33)ネゴシエーション部214は、携帯端末装置100が備える通信インタフェースでサポートされる通信方式の情報を、通信相手のユーザエージェントに提供する。また、ネゴシエーション部214は、通信相手が備える通信インタフェースでサポートされる通信方式の情報を、通信相手のユーザエージェントから取得する。
(ステップS34)ネゴシエーション部214は、通信相手のユーザエージェントとネゴシエーションし、携帯端末装置100および通信相手がサポートする通信方式に応じて通信方法を決定する。このとき、サーバ装置200,200aを経由しない通信方法を優先的に選択することが好ましい。例えば、携帯端末装置100と通信相手が共通の近距離無線通信方式をサポートしている場合、両者が通信装置を介さずに直接通信できる。携帯端末装置100と通信相手が無線LANをサポートしており共通のアクセスポイントを検出している場合、両者がアクセスポイントを介して通信できる。もちろん、携帯端末装置100と通信相手がサーバ装置200経由で通信することも可能である。
(ステップS35)ネゴシエーション部214は、ステップS34で決定した通信方法がサーバ装置200,200aを迂回するものであるか判断する。通信方法がサーバ装置200,200aを迂回するものである場合は処理をステップS36に進め、それ以外の通信方法である場合は処理をステップS38に進める。
(ステップS36)ネゴシエーション部214は、通信相手のユーザエージェントから、携帯端末装置100が通信相手に接続するための接続情報を取得する。接続情報には、例えば、通信相手のアドレスが含まれる。ネゴシエーション部214は、通信相手のユーザエージェントに、携帯端末装置100に接続するための接続情報を提供してもよい。
(ステップS37)ネゴシエーション部214は、ステップS37で取得した接続情報を携帯端末装置100に送信する。これにより、携帯端末装置100は、接続情報に基づいてユーザが選択した通信相手とコネクションを確立して通信することができる。
(ステップS38)ネゴシエーション部214は、携帯端末装置100がサーバ装置200を経由してデータ通信を行うことを許可する旨を通知する。これにより、携帯端末装置100からユーザエージェント212にデータが送信され得る。
(ステップS39)ネゴシエーション部214は、データ中継を開始する。すなわち、ネゴシエーション部214は、携帯端末装置100から受信したデータを通信相手のユーザエージェントに渡す。このデータは通信相手のユーザエージェントから通信相手の端末装置に転送される。また、ネゴシエーション部214は、通信相手のユーザエージェントから取得したデータを携帯端末装置100に転送する。
なお、上記ステップS36の接続情報を取得する処理は、ステップS32で通信相手のユーザエージェントにアクセスして以降、任意のタイミングで行ってもよい。
図15は、端末装置間での通信開始の例を示すシーケンス図である。ここでは、携帯端末装置100が携帯端末装置100aと通信する場合を考える。
携帯端末装置100は、会議室Aに持ち込まれると環境データをユーザエージェント212に送信する(ステップS141)。ユーザエージェント212は、環境データから特徴情報を抽出し、特徴情報に基づいて会議室Aに対応するオーナーエージェント222を探す。そして、ユーザエージェント212は、オーナーエージェント222に場所情報を要求する(ステップS142)。オーナーエージェント222は、会議室Aに存在する端末装置のリストとそれら端末装置に対応するユーザエージェントを示すリストを、ユーザエージェント212に提供する(ステップS143)。ユーザエージェント212は、端末装置のリストを携帯端末装置100に送信する(ステップS144)。
携帯端末装置100は、端末装置のリストの中からユーザが通信相手として携帯端末装置100aを選択すると、ユーザエージェント212に通信相手を通知する(ステップS145)。ユーザエージェント212は、携帯端末装置100aに対応するユーザエージェント212aを探し、ユーザエージェント212aに通信開始を要求する(ステップS146)。すると、ユーザエージェント212,212aはネゴシエーションを行い、携帯端末装置100,100aの間の通信方法を決定する(ステップS147)。
サーバ装置200,200aを迂回する通信方法が選択された場合、ユーザエージェント212は、携帯端末装置100aの接続情報を携帯端末装置100に送信する(ステップS148)。ユーザエージェント212aは、携帯端末装置100の接続情報を携帯端末装置100aに送信する(ステップS148a)。ユーザエージェント212aと携帯端末装置100aの間にはコネクションが既に確立されているため、即座に接続情報を送信できる。ただし、ステップS148,S148aの何れか一方が行われなくてもよい。携帯端末装置100は、携帯端末装置100aに接続し、ユーザエージェント212,212aを介さず携帯端末装置100aにデータを送信する(ステップS149)。
一方、サーバ装置200を経由する通信方法が選択された場合、ユーザエージェント212は、携帯端末装置100に通信許可を通知する(ステップS150)。ユーザエージェント212aは、携帯端末装置100aに通信開始を通知する(ステップS150a)。ユーザエージェント212aと携帯端末装置100aの間にはコネクションが既に確立されているため、即座に通信開始が通知できる。携帯端末装置100は、ユーザエージェント212にデータを送信する(ステップS151)。ユーザエージェント212は、データをユーザエージェント212aに渡す(ステップS152)。ユーザエージェント212aは、データを携帯端末装置100aに転送する(ステップS153)。
次に、サーバ装置200,200aによる通信制御の変形例を説明する。
図16は、通信経路の切替例を示す図である。サーバ装置200は、同じ場所に存在すると判断された端末装置の間の通信方法を、サーバ装置200を経由する通信方法からサーバ装置200を迂回する通信方法に途中で切り替えることもできる。
例えば、会議室Aに存在する携帯端末装置100,100aは、まずサーバ装置200上のユーザエージェント212,212a経由でデータ通信を開始する。データ通信の開始後に、携帯端末装置100のユーザエージェント212は、会議室Aに存在するアクセスポイント100dを携帯端末装置100から利用可能であるか検討する。利用可能であれば、ユーザエージェント212は、携帯端末装置100aのユーザエージェント212aにアクセスポイント100dを利用することを提案し、ネゴシエーションを行う。
アクセスポイント100dを利用することが決定されると、ユーザエージェント212は携帯端末装置100に通信方法の切替を指示し、ユーザエージェント212aは携帯端末装置100aに通信方法の切替を指示する。ただし、アクセスポイント100dを利用することを決定する前に、サーバ装置200から携帯端末装置100,100aにその旨を通知してユーザの許可を取るようにしてもよい。携帯端末装置100,100aは、サーバ装置200からの指示に基づいて、サーバ装置200を経由する通信方法から、サーバ装置200を経由せずアクセスポイント100dを経由する通信方法に切り替える。
図17は、オーナーエージェントの階層化の例を示す図である。サーバ装置200,200aが会議室A,Bのように複数の場所を管理する場合、2以上の場所を包含する上位の管理単位を設定し、オーナーエージェントを階層化することもできる。
例えば、会議室A,Bを含むフロアに対応するオーナーエージェントを用意し、会議室Aのオーナーエージェントと会議室Bのオーナーエージェントの上位エージェントと位置付ける。フロアのオーナーエージェントは、会議室Aの場所情報を会議室Aのオーナーエージェントから取得でき、会議室Bの場所情報を会議室Bのオーナーエージェントから取得できる。また、会議室A,Bのオーナーエージェントは、自身に対応する会議室以外の他の会議室の場所情報をフロアのオーナーエージェントに問い合わせることができる。
ここで、会議室Aに存在することが確認された端末装置のユーザエージェントが、会議室Bに存在する端末装置を知りたいとする。この場合、会議室Aのオーナーエージェントがフロアのオーナーエージェントに会議室Bに問い合わせ、フロアのオーナーエージェントが会議室Bのオーナーエージェントに問い合わせる。すると、会議室Bの場所情報が、会議室Bのオーナーエージェントからフロアのオーナーエージェントを介して会議室Aのオーナーエージェントに提供される。このように、オーナーエージェントの階層構造を辿ることで、ユーザエージェントは他の場所の場所情報を取得できる。
ただし、セキュリティの観点から、各オーナーエージェントから問い合わせ可能な他のオーナーエージェントの範囲を設定しておくことが好ましい。例えば、あるオーナーエージェントを始点として辿ることができる階層の数を制限する。問い合せを受けたオーナーエージェントが始点のオーナーエージェントを認証するようにしてもよい。
第2の実施の形態の情報処理システムによれば、携帯端末装置100に対応するユーザエージェント212と他の端末装置に対応するユーザエージェントとの間でネゴシエーションが行われて、適切な通信方法が決定される。このため、携帯端末装置100はユーザエージェント212と通信すれば、同じ場所に存在する様々な種類の端末装置と円滑に通信を開始することができる。また、ユーザエージェント同士でネゴシエーションが行われることで、携帯端末装置100が他の端末装置と直接ネゴシエーションする場合と比べてセキュリティが向上する。また、各ユーザエージェントが個別の仮想マシンで動作するため、複数のユーザエージェントの情報処理が隔離されてセキュリティが向上する。
また、場所毎にオーナーエージェントが設けられ、その場所に存在する端末装置に関する情報がオーナーエージェントにより一元管理される。このため、携帯端末装置100は現在いる場所に存在する端末装置を容易に知ることができる。ここで、1つの「場所」の範囲は、1つの会議室や1つのフロアなど、コミュニティの形成状況に応じて任意に定義できる。定義された「場所」に対応するオーナーエージェントがその場所に存在する端末装置に関する情報のみを管理することで、複数の場所が近接していても各端末装置が何れの場所に属するかが特定される。例えば、携帯端末装置100の現在位置から一定距離以内に存在する端末装置を探すという方法と異なり、会議室A,Bが近接していても、会議室Aに存在する端末装置のリストの中にディスプレイ100cが紛れ込むことがない。また、携帯端末装置100はセンサデバイスを用いて環境データを生成することで、現在いる「場所」の情報を取得でき、ユーザの負担を軽減することができる。
なお、第1の実施の形態の機能は、端末装置11,12,13や情報処理システム20にプログラムを実行させることで実現できる。また、第2の実施の形態の機能は、携帯端末装置100,100aやサーバ装置200,200aにプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体43)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体にプログラムを複製してから(インストールしてから)実行してもよい。