(58)【調査した分野】(Int.Cl.,DB名)
前記1または2以上の各端末装置が具備している端末機能部のドライバを識別する1以上のドライバ識別子を、端末装置ごとに格納し得るサーバドライバ管理部をさらに具備し、
前記シナリオ生成部は、
前記サーバドライバ管理部に格納されている1以上のドライバ識別子に応じて、生成するシナリオが異なる請求項1記載の情報システム。
【発明を実施するための形態】
【0015】
以下、情報システム等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【0016】
(実施の形態1)
本実施の形態において、サーバ装置で端末装置のカレントの情報を管理することにより、2以上の各端末装置におけるユーザの指示等から構成された端末要求をサーバ装置が受信し、端末要求を用いて、サーバ装置で処理を行い、その処理結果と、端末要求を用いて取得されるシナリオ元情報と、端末装置のカレント情報とを用いて、シナリオを構成し、2以上の各端末装置に送信する情報システムについて説明する。なお、端末装置は、シナリオを解釈し、ドライバを駆動し、ハードウェア(端末機能部)を動作させる。また、本実施の形態において、カレント情報を用いずに、シナリオは構成されても良い。
【0017】
また、本実施の形態において、サーバ装置で2以上の各端末装置のドライバを管理する情報システムについて説明する。なお、本実施の形態において、例えば、サーバ装置で、ユーザと端末装置の種類とを管理し、かつ端末装置の種類ごとに具備するドライバを管理することにより、各端末装置のドライバを管理する。なお、端末装置の種類とは、例えば、機種名や品番などである。
【0018】
また、本実施の形態において、一の端末装置に対する操作により、サーバ装置が他の端末装置にコマンドを送信し、他の端末装置がコマンドを処理する情報システムについて説明する。
【0019】
また、本実施の形態において、2以上の端末装置をグループ管理し、コマンドを送付できる他の端末装置はグループ内の端末装置のみに限定する情報システムについて説明する。
【0020】
また、本実施の形態において、ユーザごとに、使用中の端末装置が移動できる情報システムについて説明する。なお、本実施の形態において、端末装置を移動した場合、ユーザのカレント情報を移動先の端末装置に引き継げる。
【0021】
また、本実施の形態において、端末要求を蓄積し、2以上の端末要求の履歴に基づいて、シナリオを生成する情報システムについて説明する。つまり、ユーザの指示の履歴に応じて、生成するシナリオが異なる情報システムについて説明する。
【0022】
さらに、本実施の形態において、蓄積された端末要求を統計処理する情報システムについて説明する。
【0023】
図1は、本実施の形態における情報システムの概念図である。情報システムは、1または2以上の端末装置1とサーバ装置2を備える。端末装置1とサーバ装置2とは、インターネット、イントラネット等のネットワーク3により通信可能である。なお、情報システムは、サーバ装置2も、2以上具備しても良い。
【0024】
端末装置1は、いわゆるパーソナルコンピュータ、いわゆるスマートフォンや携帯電話等の携帯端末、街角に設置されている表示装置、テレビジョン装置、ナビゲーション装置等、問わない。端末装置1は、ドライバにより駆動される1以上のハードウェアを具備し、情報を出力できる装置であれば良い。
【0025】
図2は、本実施の形態における情報システムを構成する端末装置1のブロック図である。端末装置1は、端末機能部101、端末ドライバ管理部102、端末オブジェクト格納部103、端末受付部104、端末送信部106、端末受信部107、端末パーサ部108、端末機能呼出部109、および端末オブジェクト出力部110を備える。
【0026】
図3は、本実施の形態における情報システムを構成するサーバ装置2のブロック図である。サーバ装置2は、カレント情報格納部200、対応情報格納部201、サーバドライバ管理部202、グループ情報格納部203、履歴格納部204、受信部205、端末要求処理部206、シナリオ生成部207、送信部208、履歴蓄積部209、受付部210、統計処理結果取得部211、統計処理結果出力部212、カレント情報更新部213、ユーザ管理情報格納部214、およびユーザ管理情報変更部215を備える。
【0027】
また、サーバドライバ管理部202は、種類別ドライバ情報格納手段2021、および端末管理情報格納手段2022を備える。
【0028】
端末装置1を構成する端末機能部101は、ドライバにより駆動され、所定の機能を実現する。端末機能部101は、通常、ハードウェアであり、例えば、ディスプレイ、スピーカー、カメラ、電話等である。ただし、端末機能部101は、メール機能を実現するソフトウェアでも良い。
【0029】
端末ドライバ管理部102は、1以上の端末機能部101のドライバを識別する1以上のドライバ識別子を格納し得る。
【0030】
端末オブジェクト格納部103は、1以上のオブジェクトを格納し得る。オブジェクトとは、データや情報と捉えても良い。オブジェクトは、例えば、アニメーションのキャラクタの情報である。オブジェクトは、データや情報と、当該データ等を処理するプログラムやスクリプト等が一体化されていても良い。なお、端末オブジェクト格納部103のオブジェクトは、通常、サーバ装置2から受信されたオブジェクトである。
【0031】
端末受付部104は、ユーザからの1以上の指示を受け付ける。指示は、データを有しても、有さなくても良い。指示とは、操作と捉えても良い。ここで、受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
【0032】
指示の入力手段は、タッチパネルやキーボードやマウスやメニュー画面によるもの等、何でも良い。端末受付部104は、タッチパネルやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【0033】
端末要求構成部105は、1以上の指示に対応する要求である端末要求を構成する。端末要求構成部105は、通常、端末受付部104が受け付けた1以上の指示を用いて、端末要求を構成する。端末要求は、通常、指示の対象のオブジェクトの識別子を有するが、オブジェクトの識別子を有さなくても良い。端末要求は、例えば、指示の対象のオブジェクトの識別子と、指示の内容を示す指示内容情報とを有する。指示内容情報とは、指示した位置を示す座標情報または、指示した領域を特定する領域識別子、操作の種類を示す操作種類識別子および位置や領域を示す座標情報や領域識別子等である。操作種類識別子は、ドラッグ、ダブルクリック、クリック、タッチ等、操作を識別する情報である。また、端末要求は、通常、端末装置1に特有の情報である端末特有情報を含む。端末特有情報とは、例えば、端末装置1にとって変化のない静的特有情報と、動的に変化する動的特有情報とがあり得る。静的特有情報は、例えば、端末装置1の識別子である端末識別子、端末装置1のユーザの識別子等である。また、動的特有情報は、例えば、端末装置1の位置を示す端末位置情報、端末装置1が存在する場所の天気を示す天気情報、現在時刻等である。
【0034】
端末要求構成部105は、例えば、ユーザが画面に対して指示した場合に、表示中のオブジェクトのオブジェクト識別子であり、端末装置1が保持しているオブジェクト識別子を取得する。また、端末要求構成部105は、ユーザの指示した画面上の位置を示す1以上の座標情報から操作種類識別子を取得する。そして、端末要求構成部105は、オブジェクト識別子、操作種類識別子、1以上の座標情報を有する端末要求を構成する。
【0035】
端末要求構成部105は、端末受付部104が音声を受け付けた場合、当該音声を音声認識し、文字列を取得しても良い。そして、端末要求構成部105は、当該文字列を含む端末要求を構成しても良い。また、端末要求構成部105は、端末受付部104が一の言語の文を受け付けた場合、当該文を他の言語に機械翻訳し、当該機械翻訳結果を含む端末要求を構成しても良い。つまり、端末要求構成部105は、端末受付部104が受け付けた1以上の指示に対して、音声認識、機械翻訳等の処理を実行しても良い。
【0036】
また、端末要求構成部105は、端末受付部104が音声を受け付けた場合、当該音声をサンプリングし、デジタル化して、端末要求を構成しても良い。
【0037】
また、端末要求構成部105は、端末受付部104が受け付けた指示等により動作する端末機能部101の識別子またはドライバのドライバ識別子を取得し、端末要求に含めても良い。さらに、端末要求構成部105は、端末受付部104が受け付けた指示等により動作するソフトウェアの識別子を取得し、端末要求に含めても良い。
【0038】
なお、端末要求構成部105が構成する端末要求のデータ構造は問わないことは言うまでもない。なお、情報システムで扱う他のデータのデータ構造も問わない。
【0039】
端末送信部106は、端末要求構成部105が構成した端末要求をサーバ装置2に送信する。端末送信部106は、サーバ装置2に端末要求を送信するために、サーバ装置2を識別するサーバ装置識別子を保持している。なお、サーバ装置識別子は、サーバ装置2と通信するために必要な情報であり、例えば、サーバ装置2のIPアドレス、MACアドレス、サーバ装置2が情報を取得できるメールアドレス等である。
【0040】
端末受信部107は、端末要求の送信に対応して、サーバ装置2からシナリオを受信する。シナリオは、端末装置1のドライバを動作させるコマンドを有する。また、シナリオは、通常、コマンドとデータとを有する。シナリオは、例えば、端末機能部101への動作指示、表示されているオブジェクトの動作を示すコマンドである動作コマンド等を有する。端末機能部101への動作指示は、例えば、ドライバ識別子とドライバに渡すデータとを含む。シナリオは、1または2以上のコマンド等を有する。コマンド等とは、コマンド、データ、またはコマンドとデータ等である。
【0041】
端末パーサ部108は、シナリオを解釈し、1以上のドライバ識別子、およびデータを取得する。データは、1以上のドライバ識別子で識別される1以上の端末機能部101に渡すデータであり、シナリオが有するデータである。また、データは、オブジェクトでも良い。
【0042】
また、端末パーサ部108は、シナリオを解釈し、シナリオから動作コマンドを取得しても良い。
【0043】
端末機能呼出部109は、端末パーサ部108が取得した1以上のドライバ識別子で識別される1以上の端末機能部101に、端末パーサ部108が取得したデータを渡し、1以上の端末機能部101を呼び出す。ここで、呼び出すとは、動作させる、という意味であると捉えても良い。
【0044】
端末オブジェクト出力部110は、1以上のオブジェクトを出力する。ここで、オブジェクトは、通常、サーバ装置2から受信されたデータである。また、出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。つまり、端末オブジェクト出力部110は、オブジェクトをディスプレイに表示しても良いし、端末オブジェクト格納部103に蓄積しても良い。
【0045】
また、端末オブジェクト出力部110は、動作コマンドに従って、動作コマンドに対応するオブジェクトを動作させる。この動作結果は、通常、ディスプレイに表示される。ただし、端末オブジェクト出力部110は、スピーカーを通して声またはサウンドにより動作結果を出力しても良いし、LED等を利用した光の明滅を行うことにより動作結果を出力しても良いし、機械の動作等によって様々な表現で動作結果を報知する等しても良い。
【0046】
サーバ装置2を構成するカレント情報格納部200は、1または2以上のカレント情報を端末装置1ごとに格納し得る。カレント情報とは、端末装置1の現在の状態を示す情報である。カレント情報は、例えば、端末装置1で出力中のオブジェクトのオブジェクト識別子を有する。また、カレント情報は、例えば、端末装置1で出力中のオブジェクトの位置を示す位置情報やオブジェクトのサイズ等を有する。
【0047】
対応情報格納部201は、1以上の対応情報を格納し得る。対応情報は、端末要求を構成する情報とシナリオ元情報との対応を示す情報である。シナリオ元情報は、シナリオを構成する元になる情報である。対応を示す情報とは、情報そのものであっても良い。つまり、対応情報は、端末要求を構成する情報とシナリオ元情報とを有する情報でも良いし、端末要求を構成する情報へのポインタとシナリオ元情報へのポインタとを有する情報等でも良い。シナリオ元情報は、1以上のコマンドを含むコマンド列でも良いし、プログラム等でも良い。
【0048】
サーバドライバ管理部202は、1または2以上の各端末装置1が具備している端末機能部101の1以上のドライバ識別子を、端末装置1ごとに格納し得る。ドライバ識別子は、ドライバを識別する情報であり、例えば、ドライバ名、ドライバのディスク上での物理アドレス等である。サーバドライバ管理部202は、端末装置1ごと、または端末装置1の種類ごとに、1以上のドライバ識別子を格納していることは好適である。
【0049】
サーバドライバ管理部202を構成する種類別ドライバ情報格納手段2021は、端末装置1の種類を示す種類識別子と1以上のドライバ識別子とを対応付ける1以上の種類別ドライバ情報を格納し得る。なお、AとBとを対応付ける情報とは、AとBとを有する情報でも良いし、AとBとのリンクを示す情報でも良いし、Aの格納場所を示す情報とBの格納場所を示す情報とを有する情報等でも良い。また、端末装置1の種類とは、例えば、機種、またはメーカー、またはメーカーと機種等である。
【0050】
端末管理情報格納手段2022は、端末装置1を識別する端末識別子と種類識別子とを対応付ける1以上の端末管理情報を格納し得る。
【0051】
グループ情報格納部203は、グループ情報を格納し得る。グループ情報は、2以上の端末装置1のグループを特定する情報である。グループ情報は、2以上の各端末装置1を識別する2以上の端末識別子を有する.
【0052】
履歴格納部204は、要求履歴を格納し得る。要求履歴は、受信部205が受信した端末要求の一部または全部である。履歴格納部204は、端末装置1ごとに、要求履歴を格納していることは好適である。また、履歴格納部204は、端末装置1の端末機能部101ごとに、要求履歴を格納していても良い。ここでの端末機能部101ごととは、ドライバ識別子ごとと同意義である。さらに、履歴格納部204は、端末装置1ごとに、かつ、端末装置1で動作したソフトウェア単位で要求履歴を格納していても良い。なお、ソフトウェア単位とは、ソフトウェアの識別子に対応づける、という意義である。
【0053】
受信部205は、端末装置1から端末要求を受信する。
【0054】
端末要求処理部206は、受信部205が受信した端末要求を解釈する。そして、端末要求処理部206は、当該端末要求に対応するシナリオ元情報を、対応情報格納部201から取得する。また、端末要求処理部206は、端末要求に対応する処理を行い、処理結果を取得する。処理とは、例えば、図示しないデータベースに対する検索処理、端末要求が有する文字列に対する機械翻訳処理等、何でも良い。
【0055】
端末要求処理部206は、例えば、端末要求が音声を含む場合、当該音声を音声認識し、文字列を取得しても良い。そして、端末要求処理部206は、当該文字列を用いて、シナリオ元情報を、対応情報格納部201から取得しても良い。
【0056】
シナリオ生成部207は、端末要求処理部206が取得したシナリオ元情報と、端末要求処理部206が処理を行って得た処理結果と、端末装置1に対応するカレント情報とを用いて、シナリオを生成する。
【0057】
また、シナリオ生成部207は、端末要求処理部206が取得したシナリオ元情報と、端末要求処理部206が処理を行って得た処理結果とを用いて、シナリオを生成しても良い。
【0058】
シナリオ生成部207は、受信部205が受信した端末要求、および履歴格納部204に格納されている要求履歴を用いてシナリオを生成しても良い。つまり、端末要求が同じでも、要求履歴が異なれば生成するシナリオが異なることは好適である。例えば、キャラクタへのタッチ状況に応じて、動作が異なることは好適である。
【0059】
なお、通常、シナリオ生成部207は、サーバドライバ管理部202に格納されている1以上のドライバ識別子に応じて、生成するシナリオが異なる。ここで、生成するシナリオが異なるとは、例えば、シナリオ内に、端末装置1が保有しないドライバのドライバ識別子を含まないようにすることである。例えば、音声出力を行うことを指示するシナリオの送信先の端末装置1が、音声出力を行うドライバ(端末機能部101)を具備せず、表示装置を搭載している(表示を行うドライバ(端末機能部101)を具備する端末装置1である場合、出力する情報を表示装置に表示するシナリオに変更する。なお、表示装置に情報を表示するシナリオは、文字列で情報を出力するシナリオでも良いし、キャラクタでの手話やジェスチャー表現等で情報を出力するシナリオでも良い。つまり、シナリオ生成部207は、例えば、情報を出力する機能を有する複数のドライバや端末機能部101のうち、端末装置1が有するドライバや端末機能部101を起動するように、シナリオを変更する。
【0060】
また、シナリオに含まれる指示であり、情報を出力する等の指示に対応するドライバや端末機能部101を有しない端末装置1に送信するシナリオを構成する場合、シナリオ生成部207は、当該命令に対応する部分を消去して、シナリオを生成しても良い。かかる場合、本来、予定するシナリオの内容に欠損が生じることとなる。具体的には、例えば、画像と音声を端末で再生する命令等を含むシナリオである場合、ディスプレイデバイスのドライバとスピーカーのドライバを有する端末装置1に送信するシナリオは、画像と音声を端末で再生する命令等を含むシナリオであるが、スピーカーのドライバを有しない端末装置1に送信するシナリオは、画像を端末で再生する命令等を含み、音声を再生する命令を含まないシナリオである。
【0061】
なお、端末装置1が保有しないドライバに関して、サーバ装置2が処理を行うことは好適である。また、この処理は、通常、端末要求処理部206が行う。
【0062】
ユーザが利用する端末装置1の移動が発生する場合、シナリオ生成部207は、旧端末装置のカレント情報を用いて、シナリオを生成することは好適である。なお、旧端末装置とは、移動前の端末装置1である。
【0063】
送信部208は、シナリオ生成部207が生成したシナリオを端末装置1に送信する。また、送信部208は、他端末装置に、コマンドやシナリオを送信しても良い。他端末装置も、端末装置1と同様の構成を有することが好適であるが、コマンドやシナリオを受信し、当該コマンドやシナリオに応じた動作が行えれば良い。ここで、コマンドやシナリオを送信する先の他端末装置の識別子は、予め格納されていても良いし、端末装置1から受信されても良いし、他端末装置から端末装置1とペアである旨の情報が受信されても良い。端末装置1とペアである旨の情報は、例えば、端末装置1のユーザを識別するユーザ識別子である。
【0064】
送信部208は、シナリオ生成部207が生成したシナリオを端末装置1に送信する。また、送信部208は、他端末装置に、コマンドを送信しても良い。他端末装置も、端末装置1と同様の構成を有することが好適であるが、コマンドを受信し、当該コマンドに応じた動作が行えれば良い。ここで、コマンドを送信する先の他端末装置の識別子は、予め格納されていても良いし、端末装置1から受信されても良いし、他端末装置から端末装置1とペアである旨の情報が受信されても良い。端末装置1とペアである旨の情報は、例えば、端末装置1のユーザを識別するユーザ識別子である。
【0065】
ただし、送信部208は、グループ情報が有する2以上のいずれかの端末識別子にも対応しない端末装置1にはコマンドを送信しないことは好適である。
【0066】
また、ユーザが利用する端末装置1の移動が発生する場合、送信部208は、シナリオ生成部207が生成したシナリオを新端末装置に送信する。
【0067】
履歴蓄積部209は、受信部205が受信した端末要求の一部または全部である要求履歴を履歴格納部204に蓄積する。端末要求の一部とは、2以上の端末要求から生成される情報も含む、とする。また、履歴蓄積部209は、端末要求が有する端末機能部101の識別子またはドライバのドライバ識別子ごとに、要求履歴を履歴格納部204に蓄積しても良い。また、履歴蓄積部209は、端末要求が有するソフトウェアの識別子ごとに、要求履歴を履歴格納部204に蓄積しても良い。また、履歴蓄積部209は、シナリオ生成部207が生成したシナリオに含まれる端末機能部101の識別子またはドライバ識別子ごとに、要求履歴を履歴格納部204に蓄積しても良い。また、履歴蓄積部209は、シナリオ生成部207が生成したシナリオに含まれるソフトウェアの識別子ごとに、要求履歴を履歴格納部204に蓄積しても良い。
【0068】
受付部210は、サーバ装置2のユーザの指示やデータ等を受け付ける。指示やデータ等の入力手段は、キーボードやマウスやメニュー画面によるもの等、何でも良い。受付部210は、キーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【0069】
統計処理結果取得部211は、要求履歴を統計処理し、統計処理結果を取得する。統計処理とは、例えば、平均値を取得する処理、単位時間あたりの操作の数を取得する処理等である。統計処理の内容は問わない。
【0070】
統計処理結果出力部212は、統計処理結果取得部211が取得した統計処理結果を出力する。
【0071】
カレント情報更新部213は、シナリオの端末装置1への送信に応じて、カレント情報を更新する。更新されるカレント情報は、シナリオが送信された端末装置1のカレント情報である。カレント情報更新部213は、シナリオの端末装置1への送信とは無関係に、カレント情報を更新しても良い。例えば、カレント情報に端末装置1の位置情報が含まれる場合であり、端末装置1から当該端末装置1の位置情報が受信された場合、カレント情報更新部213は、当端末装置1の位置情報を最新の位置情報に更新する。なお、最新の位置情報とは、現時刻から最も近い時刻に受信された位置情報である。
【0072】
ユーザ管理情報格納部214は、1以上のユーザ管理情報を格納し得る。ユーザ管理情報は、端末装置1のユーザを識別するユーザ識別子と端末識別子とを対応付ける情報である。ユーザ管理情報は、ユーザが現在利用している端末装置を管理するための情報である。
【0073】
ユーザ管理情報変更部215は、端末要求が、処理を行う端末装置1を移動する旨の要求である場合に、処理を行う端末装置1が、現在処理を行っている端末装置1である旧端末装置から新端末装置に変更になるように、ユーザ管理情報が有する端末識別子であり、端末要求を送信してきた端末装置1のユーザのユーザ識別子に対応する端末識別子を、新端末装置の端末識別子に変更する。
【0074】
端末ドライバ管理部102、端末オブジェクト格納部103、カレント情報格納部200、対応情報格納部201、サーバドライバ管理部202、グループ情報格納部203、履歴格納部204、ユーザ管理情報格納部214、種類別ドライバ情報格納手段2021、および端末管理情報格納手段2022は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【0075】
端末ドライバ管理部102等にドライバ識別子等が記憶される過程は問わない。例えば、記録媒体を介してドライバ識別子等が端末ドライバ管理部102等で記憶されるようになってもよく、通信回線等を介して送信されたドライバ識別子等が端末ドライバ管理部102等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力されたドライバ識別子等が端末ドライバ管理部102等で記憶されるようになってもよい。
【0076】
端末送信部106、端末受信部107、受信部205、および送信部208は、通常、無線または有線の通信手段で実現されるが、放送手段で実現されても良い。
【0077】
端末パーサ部108、端末機能呼出部109、端末要求処理部206、シナリオ生成部207、履歴蓄積部209、統計処理結果取得部211、カレント情報更新部213、およびユーザ管理情報変更部215は、通常、MPUやメモリ等から実現され得る。端末パーサ部108の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0078】
端末オブジェクト出力部110、および統計処理結果出力部212は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。端末オブジェクト出力部110は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【0079】
次に、情報システムの動作について説明する。まず、端末装置1の動作について、
図4のフローチャートを用いて説明する。
【0080】
(ステップS401)端末受付部104は、ユーザ等から指示またはデータ等を受け付けたか否かを判断する。指示等を受け付ければステップS402に行き、受け付けなければステップS401に戻る。
【0081】
(ステップS402)端末要求構成部105は、ステップS401で受け付けた指示等を用いて、端末要求を構成するか否かを判断する。端末要求を構成すると判断した場合はステップS403に行き、端末要求を構成しないと判断した場合はステップS411に行く。なお、端末要求構成部105は、例えば、端末要求を構成するイベントや指示や条件等を予め格納しており、ステップS401で受け付けた指示等が、かかる格納しているイベントや指示や条件等に合致するか否かにより、端末要求を構成するか否かを判断する。また、端末要求構成部105は、例えば、端末要求を構成しないイベントや指示や条件等を予め格納しており、ステップS401で受け付けた指示等が、かかる格納しているイベントや指示等に合致しない場合に、端末要求を構成すると判断する。なお、条件とは、例えば、N(Nは0より大きい数値)秒間、入力が無いこと、所定の入力後、N秒、経過したこと等である。また、ステップS402において、端末要求構成部105は、条件に合致するまで、ウェイトしても良い。
【0082】
(ステップS403)端末要求構成部105は、ステップS401で受け付けた指示等、またはステップS401で受け付けた指示等と一時蓄積している指示等を用いて端末要求を構成する。なお、端末要求を構成する処理について、
図5のフローチャートを用いて説明する。
【0083】
(ステップS404)端末送信部106は、ステップS403で構成された端末要求を、サーバ装置2に送信する。なお、端末送信部106は、例えば、サーバ装置2のIPアドレスを保持している。
【0084】
(ステップS405)端末受信部107は、サーバ装置2からシナリオを受信したか否かを判断する。シナリオを受信すればステップS406に行き、シナリオを受信しなければステップS405に戻る。
【0085】
(ステップS406)端末パーサ部108は、ステップS405で受信されたシナリオを解釈し、1以上のドライバ識別子、およびデータを取得する。なお、ここでは、シナリオは、1以上のドライバを操作する命令を含むとする。
【0086】
(ステップS407)端末機能呼出部109は、カウンタiに1を代入する。
【0087】
(ステップS408)端末機能呼出部109は、ステップS406で取得した情報の中で、i番目のドライバの操作に関する情報が存在するか否かを判断する。i番目のドライバの操作に関する情報が存在すればステップS409に行き、存在しなければステップS401に戻る。
【0088】
(ステップS409)端末機能呼出部109は、ステップS406で取得した情報の中で、i番目のドライバの操作に関する情報に従って、i番目のドライバを操作する。
【0089】
(ステップS410)端末機能呼出部109は、カウンタiを1、インクリメントする。ステップS408に戻る。
【0090】
(ステップS411)端末送信部106は、指示等をバッファに一時蓄積する。ステップS401に戻る。
【0091】
なお、ステップS402において、端末送信部106は、ステップS401で受け付けた指示等を用いて、端末要求を構成するか否かを判断した。しかし、指示等を受け付けた場合、常に、端末要求を構成しても良い。
【0092】
また、
図4のフローチャートにおいて、シナリオの中に、ドライバを動作させる処理以外の処理が記載されていても良い。その場合、端末装置1は、シナリオに従って、動作を行う。
【0093】
また、
図4のフローチャートにおいて、ユーザからの指示等を受け付けることなく、シナリオをサーバ装置2から受信し、当該シナリオを処理しても良い。
【0094】
さらに、
図4のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【0095】
次に、ステップS403の端末要求を構成する処理について、
図5のフローチャートを用いて説明する。
【0096】
(ステップS501)端末要求構成部105は、バッファに指示等が存在するか否かを判断する。バッファに指示等が存在すればステップS502に行き、バッファに指示等が存在しなければステップS503に行く。
【0097】
(ステップS502)端末要求構成部105は、バッファから指示等を読み出す。
【0098】
(ステップS503)端末要求構成部105は、ステップS501で受け付けられた指示等を取得する。
【0099】
(ステップS504)端末要求構成部105は、ステップS503で取得した指示等、またはステップS503で取得した指示等とステップS502で読み出した指示等とを用いて、指示対象のオブジェクト識別子を取得する。なお、指示等が画面上の座標値(x,y)であり、端末要求構成部105は、現在、画面上に表示されているオブジェクトのオブジェクト識別子およびオブジェクトの表示位置(例えば、オブジェクトの輪郭を特定する座標値の集合)を保持しており、指示等が示す座標値に対応するオブジェクト識別子を取得する。なお、かかる技術は、オブジェクトの管理技術として公知であるので、詳細な説明を省略する。例えば、画面上にあるキャラクタが表示されている場合、端末要求構成部105は、タッチされたキャラクタのオブジェクト識別子を取得する。
【0100】
(ステップS505)端末要求構成部105は、ステップS503で取得した指示等、またはステップS503で取得した指示等とステップS502で読み出した指示等とを用いて、指示内容情報を取得する。指示内容情報は、例えば、タッチされたこと、ドラッグされてこと、またはタッチされたキャラクタの領域を示す領域識別子等である。例えば、端末要求構成部105は、現在、画面上に表示されているオブジェクトの領域識別子と領域を特定する位置情報(領域の輪郭を示す座標値の集合)を保持している、とする。
【0101】
(ステップS506)端末要求構成部105は、端末特有情報を取得する。端末特有情報は、例えば、GPS受信機で取得された位置情報、現在時刻、端末識別子等である。
【0102】
(ステップS507)端末要求構成部105は、オブジェクト識別子、指示内容情報、端末特有情報を有する端末要求を構成する。なお、ここで、端末要求構成部105は、オブジェクト識別子、指示内容情報、端末特有情報のうち、1または2の情報のみから端末要求を構成しても良い。上位処理にリターンする。
【0103】
なお、
図5のフローチャートにおいて、端末要求の構成方法の一例を説明した。端末要求構成部105は、受け付けられた指示等から端末要求を構成すれば良く、その方法は問わない。
【0104】
例えば、端末要求構成部105は、受け付けられた音声を音声認識し、文字列を取得しても良い。そして、端末要求構成部105は、当該文字列と端末識別子等の端末特有情報により、端末要求を構成しても良い。
【0105】
また、端末要求構成部105は、受け付けられた音声をサンプリングし、音声データを取得しても良い。そして、端末要求構成部105は、当該音声データと端末識別子等の端末特有情報により、端末要求を構成しても良い。
【0106】
次に、サーバ装置2の動作について、
図6のフローチャートを用いて説明する。
【0107】
(ステップS601)受信部205は、端末装置1から端末要求を受信したか否かを判断する。端末要求を受信すればステップS602に行き、端末要求を受信しなければステップS611に行く。
【0108】
(ステップS602)端末要求処理部206は、受信部205が受信した端末要求を解釈する。そして、端末要求処理部206は、端末要求に対応するシナリオ元情報を、対応情報格納部201から取得する。
【0109】
(ステップS603)端末要求処理部206は、端末要求の解釈結果を用いて、サーバ装置2が行うべき処理が存在するか否かを判断する。サーバ装置2が行うべき処理が存在すればステップS604に行き、存在しなければステップS605に行く。端末要求処理部206は、例えば、端末要求が変数を含む場合、またはシナリオ元情報が変数を含む場合、サーバ装置2が行うべき処理が存在すると判断する。
【0110】
(ステップS604)端末要求処理部206は、端末要求が指示する処理であり、サーバ装置2が行うべき処理を行う。そして、端末要求処理部206は、処理結果を取得する。
【0111】
(ステップS605)シナリオ生成部207は、シナリオを構成する。シナリオ構成処理について、
図7のフローチャートを用いて説明する。
【0112】
(ステップS606)送信部208は、ステップS605で構成されたシナリオを端末装置1に送信する。
【0113】
(ステップS607)履歴蓄積部209は、ステップS601で受信された端末要求の全部または一部を履歴格納部204に蓄積する。なお、端末要求の一部は、1以上の端末要求から構成された情報(例えば、後述する好感度)も含む、と考える。
【0114】
(ステップS608)ユーザ管理情報変更部215は、端末要求または送信されたシナリオから、ユーザの指示が端末装置1の移動であるか否かを判断する。端末装置1の移動であればステップS609に行き、端末装置1の移動でなければステップS601に戻る。
【0115】
(ステップS609)ユーザ管理情報変更部215は、端末要求を送信してきた端末装置1に関して、現在処理を行っている端末装置1である旧端末装置から新端末装置に変更になるように、ユーザ管理情報が有する端末識別子であり、端末要求を送信してきた端末装置1のユーザのユーザ識別子に対応する端末識別子を、新端末装置の端末識別子に変更する。ステップS601に戻る。
【0116】
(ステップS610)カレント情報更新部213は、シナリオの端末装置1への送信に応じて、カレント情報を更新する。なお、カレント情報を更新する必要が無い場合は、ステップS610では何もしない。
【0117】
(ステップS611)受付部210は、統計処理を行うことを示す指示を受け付けたか否かを判断する。かかる指示を受け付けた場合はステップS612に行き、指示を受け付けない場合はステップS601に戻る。なお、かかる指示を、適宜、統計処理指示という。
【0118】
(ステップS612)統計処理結果取得部211は、履歴格納部204の1または2以上の端末要求を用いて、統計処理を行う。そして、統計処理結果取得部211は統計処理結果を取得する。
【0119】
(ステップS613)統計処理結果出力部212は、ステップS612で取得された統計処理結果を出力する。ステップS601に戻る。
【0120】
なお、
図6のフローチャートにおいて、ステップS607の処理等、他の処理と独立して行える処理の順序は問わないことは言うまでもない。
【0121】
また、
図6のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【0122】
次に、ステップS605のシナリオ構成処理について、
図7のフローチャートを用いて説明する。
【0123】
(ステップS701)シナリオ生成部207は、端末要求が有する端末識別子を取得し、メモリ上に配置する。
【0124】
(ステップS702)シナリオ生成部207は、ステップS604の処理結果を取得し、メモリ上に配置する。なお、ステップS604の処理結果が存在しない場合もあり得る。
【0125】
(ステップS703)シナリオ生成部207は、カレント情報格納部200から、ステップS701で取得した端末識別子に対応するカレント情報を取得し、メモリ上に配置する。
【0126】
(ステップS704)シナリオ生成部207は、カウンタiに1を代入する。
【0127】
(ステップS705)シナリオ生成部207は、ステップS602で取得されたシナリオ元情報の中で、i番目の処理単位のシナリオ元情報が存在するか否かを判断する。i番目の処理単位が存在すればステップS706に行き、i番目の処理単位が存在しなければ上位処理にリターンする。なお、処理単位とは、例えば、シナリオ生成部207がパージングする単位であり、例えば、行である。
【0128】
(ステップS706)シナリオ生成部207は、i番目の処理単位のシナリオ元情報を、解釈する。
【0129】
(ステップS707)シナリオ生成部207は、ステップS706における解釈結果を用いて、メモリから必要な情報を取得する。そして、シナリオ生成部207は、i番目の処理単位のシナリオ元情報と取得した情報とを用いて、シナリオを生成する。例えば、シナリオ生成部207は、i番目の処理単位のシナリオ元情報の変数に、取得した情報を代入し、シナリオを取得する。
【0130】
(ステップS708)シナリオ生成部207は、ステップS707で取得したシナリオをバッファに追記する。
【0131】
(ステップS709)シナリオ生成部207は、カウンタiを1、インクリメントする。ステップS705に戻る。
【0132】
なお、
図7のフローチャートにおいて、シナリオ構成のための処理の一例を示した。つまり、シナリオ構成のための処理は他の処理でも良い。
【0133】
以下、本実施の形態における情報システムの具体的な動作について説明する。情報システムの概念図は
図1である。
【0134】
図8は、端末装置1の端末ドライバ管理部102に格納されている端末ドライバ管理表の一例である。ここでの端末ドライバ管理表は、ある一の端末装置1が具備しているドライバの情報を管理している。また、端末ドライバ管理表は、「ID」「ドライバ識別子」「ドライバ呼出関数」を有するレコードを1以上格納している。「ID」は、端末ドライバ管理表のレコードを識別する情報である。また、「ドライバ識別子」は、ドライバを識別する情報である。さらに、「ドライバ呼出関数」は、ドライバを動作させるための関数である。ここで、「ドライバ呼出関数」の代わりに、ドライバを動作させるためのメッセージでも良いし、メソッド名でも良いし、ドライバ呼出へのポインタの情報等でも良い。つまり、端末ドライバ管理表のレコードは、ドライバを動作させるための情報であれば何でも良い。なお、ドライバ呼出関数「show_char()」はキャラクタを表示等するドライバの呼び出し関数の一例であり、「voice()」は音声を再生するドライバの呼び出し関数の一例であり、「ui()」はユーザインターフェイスをハンドリングするドライバの呼び出し関数の一例であり、「camera()」はカメラのドライバの呼び出し関数の一例であり、「tel()」は電話のドライバの呼び出し関数の一例であり、「mail()」はドライバの呼び出し関数の一例であり、「data_manage()」はデータ管理を行うドライバの呼び出し関数の一例である。
【0135】
図9は、端末装置1の端末オブジェクト格納部103に格納されている端末オブジェクト管理表の一例である。ここでの端末オブジェクト管理表は、「ID」「キャラクタ」「全体領域情報」「部分情報」「表示フラグ」を有するレコードを1以上格納している。「ID」はキャラクタ識別子である。「全体領域情報」は、キャラクタが表示される画面上での領域を示す情報である。「全体領域情報」は、通常、2以上の座標情報を有する。座標情報は、通常、画面上での座標情報である。また、「部分情報」は、キャラクタの部分に関する情報である。部分とは、顔、胸、お腹、手、足等である。「部分情報」は、「部分識別子」「部分領域情報」を有する。「部分識別子」は、部分を識別するIDであり、例えば、胸は「1」、顔は「2」である。また、「部分領域情報」は、キャラクタの部分の領域を示す情報であり、通常、2以上の座標情報を有する。座標情報は、画面上での座標情報でも良いし、キャラクタ内での相対的な座標の情報等でも良い。「表示フラグ」は、現在、キャラクタが表示されているか否かを示す情報である。ここでは、「表示フラグ=1」を有するレコードに対応するキャラクタは、現在、端末装置1の画面上に表示されている。また、「表示フラグ=0」を有するレコードに対応するキャラクタは、現在、端末装置1の画面上に表示されていない。
【0136】
また、
図10は、サーバ装置2の対応情報格納部201に格納されている対応情報管理表である。対応情報管理表は、「ID」「端末要求」「シナリオ元情報」を有するレコードを1以上格納している。「ID」は、対応情報管理表のレコードを識別する情報である。「端末要求」は、端末要求を示す情報である。また、「シナリオ元情報」は、端末要求に対応するシナリオ元情報である。「シナリオ元情報」は、ここでは、コマンド、制御情報付きのコマンドであるが、その構造、内容は問わない。なお、ここでは、コマンドは、例えば、関数の形式である。また、制御情報は、例えば、「if then else」等である。
図10において、「call($キャラクタ)」は、「$キャラクタ」で特定されるキャラクタを端末装置1に呼び出し、端末装置1で出力するシナリオである。また、「volumne_up($端末装置識別子,$数値)」は「$端末装置識別子」で識別される端末装置1において出力されるボリュームを「$数値」分、アップするシナリオである。また、「get_char($ユーザ識別子,$キャラクタ)」は、ユーザ識別子で識別されるユーザの端末装置1で、現在、表示されているキャラクタに関する情報を取得する関数である。また、「delete($ユーザ識別子,$キャラクタ)」は、ユーザ識別子で識別されるユーザの端末装置1からキャラクタの表示を消去する(未表示にする)命令に対応するシナリオである。また、「put_char($端末識別子,ch)」は端末識別子で識別される端末装置1に、変数「ch」に格納されているキャラクタに関する情報を送信する命令に対応するシナリオである。また、「search($端末識別子,$人)」は、端末識別子で識別される端末装置1のユーザと「$人」の関係を有するユーザの端末識別子を検索する関数である。また、「tel(terminal,"電源をONにして下さい")」は、terminalで特定される端末装置1に電話をかけ、"電源をONにして下さい"を出力するシナリオである。また、「put($位置情報,terminal)」は、terminalで特定される端末装置1に位置情報を送信するシナリオである。また、「start_up(navi())」は、端末装置1のナビゲーションシステムを起動するためのシナリオである。また、「set_destination($位置情報)」は、端末装置1のナビゲーションシステムにおいて、目的地を設定するシナリオである。また、「route_search($現在位置,$目的地)」は、現在地を始点、目的地を終点とする経路探索を行うシナリオである。また、「send_message()」は、引数内のメッセージを送信し、端末装置1で出力を促すシナリオである。なお、かかるシナリオ、関数は例であることは言うまでもない。
【0137】
また、
図11は、サーバ装置2のサーバドライバ管理部202の種類別ドライバ情報格納手段2021が格納している種類別ドライバ情報管理表の一例である。種類別ドライバ情報管理表は、「ID」「種類識別子」「ドライバ識別子」を有するレコードを1以上格納している。「ID」は、レコードを識別する情報である。「種類識別子」は、端末装置1の種類を識別する情報である。また、「ドライバ識別子」は、ドライバを識別する情報である。つまり、種類別ドライバ情報表は、1以上の端末装置1の種類ごとに、端末装置1が保有するドライバを管理している。
【0138】
また、
図12は、端末管理情報格納手段2022の端末管理情報管理表である。端末管理情報管理表は、端末装置1の種類を管理する表であり、「ID」「端末識別子」「種類識別子」を有するレコードを1以上格納している。
【0139】
図13は、サーバ装置2のグループ情報格納部203に格納されているグループ情報管理表である。グループ情報管理表は、「グループID」「端末識別子」を有するレコードを1以上格納している。「グループID」は、グループを識別する情報である。「端末識別子」は、グループIDで特定されるグループに属する端末装置の識別子である。そして、属性値「端末識別子」は、2以上の端末識別子を有する。サーバ装置2がグループ情報管理表を用いる場合、端末要求を送信してきた端末装置と、同一のグループに存在する端末装置のみ、当該端末要求に基づいて、制御できない、とする。
【0140】
図14は、サーバ装置2の履歴格納部204が格納している履歴管理表の一例である。履歴管理表は、「ID」「端末識別子」「要求履歴」「好感度」を有するレコードを1以上格納している。「要求履歴」は、端末識別子で識別される端末装置1から送信された1以上の端末要求の履歴を格納する。また、「好感度」は、要求履歴から構成される情報であり、キャラクタの、端末装置1のユーザに対する好感度である。例えば、閾値以上の回数、キャラクタの胸やお腹へタッチしたことを示す1以上の端末要求が受信された場合、端末要求処理部206は、対応する好感度の値を下げる。また、例えば、閾値以上の回数、キャラクタの頭や顔へタッチしたことを示す1以上の端末要求が受信された場合、端末要求処理部206は、対応する好感度の値を上げる。また、N分(Nは正の数値)以上、タッチを示す端末要求が受信されなかった場合、端末要求処理部206は、対応する好感度を初期値(例えば、「高」)に戻す。なお、好感度の「高」「中」「低」は、それぞれ、例えば、数値「1」「2」「3」に対応する。また、好感度を変更する処理は、例えば、端末要求処理部206が行う。
【0141】
図15は、カレント情報格納部200に格納されているカレント情報管理表である。カレント情報管理表は、各端末装置1のカレントの状態を管理する表である。カレント情報管理表は、「ID」「端末識別子」「カレント情報」を有するレコードを1以上格納している。「カレント情報」は、「オブジェクト識別子」「出力位置」「画像ID」「電源」等を有する。「カレント情報」の「オブジェクト識別子」は、端末装置1で出力されているオブジェクト識別子であり、「出力位置」は画面上におけるオブジェクトの出力位置であり、「画像ID」は端末装置1で出力されている画像を識別する情報であり、
図17のオブジェクト管理表のレコード番号「ID」の値に対応する情報である。また、「電源」は電源がONかOFFかを示す情報である。なお、ここでは、「電源=OFF」の際でも、端末装置1の電話機能は使用できる、とする。つまり、「電源=OFF」は電話が鳴ることについてのみ待機の状態である。とする。
【0142】
図16は、ユーザ管理情報格納部214に格納されているユーザ管理情報管理表である。ユーザ管理情報管理表は、現在、ユーザが利用している端末装置を管理する表であり、「ID」「ユーザ識別子」「端末識別子」を有するレコードを1以上格納している。
【0143】
また、
図17は、シナリオ生成部207が保持しているキャラクタ管理表である。キャラクタ管理表は、「ID」「キャラクタID」「名前」「データ」を有する。「データ」は「画像」「音声」「部分情報」を有する。「部分情報」は、「部分識別子」「部分領域情報」を有する。また、「データ」は「全体領域情報」を含むことは好適である。「全体領域情報」は、
図9の「全体領域情報」と同様の情報である。また、「ID」はレコードを識別する情報である。また、「キャラクタID」は、キャラクタ識別子である。また、「名前」はキャラクタの名前である。また、「データ」は、端末装置1で出力されるデータであり、「画像」は通常、動画であるが、静止画でも良い。
【0144】
さらに、
図18は、端末要求処理部206が保持している関連ユーザ管理表である。関連ユーザ管理表は、端末装置1を所有しているユーザに関係のある人を、その関係とともに管理する表である。
図18は、「ID」「端末識別子1」「関係」「端末識別子2」を有するレコードを1以上格納している。「端末識別子1」は、端末識別子であり、第一のユーザが所有する端末の識別子である。「端末識別子2」は、端末識別子であり、第二のユーザが所有する端末の識別子である。「関係」は、第一のユーザと第二のユーザとの関係を示す情報である。関連ユーザ管理表の「ID=1」のレコードにおいて、端末識別子「101」のユーザのおばあちゃんが、端末識別子「103」のユーザである、ことを示す。
【0145】
かかる状況において、本実施の形態における情報システムの具体的な動作について、4つの例を挙げて説明する。
【0146】
(具体例1)
具体例1は、端末装置1に入力された命令をサーバ装置2で解釈し、サーバ装置2から端末装置1へオブジェクト(ここでは、キャラクタ)を送信し、端末装置1の状態を管理する情報システムの例である。さらに具体的には、端末装置1のユーザが、端末装置1にキャラクタ「Yちゃん」を呼び出すため、「Yちゃん、出てきて」と音声入力し、サーバ装置2からのシナリオにより、キャラクタ「Yちゃん」が端末装置1に表示される処理について説明する。
【0147】
まず、端末装置識別子「101」で識別される端末装置1のユーザが、自分の端末装置1に向かって、「Yちゃん、出てきて」を音声で指示した、とする。次に、端末受付部104は、音声「Yちゃん、出てきて」を受け付ける。なお、
図15のカレント情報管理表によれば、現在、端末識別子「101」で識別される端末装置1のカレント情報は「オブジェクト識別子:NULL(−)、出力位置:NULL(−)、画像ID:NULL(−)、・・・、電源「1(ON)」」であるので、当該端末装置1において、電源ONであるが、オブジェクトは表示されていない。
【0148】
次に、端末要求構成部105は、音声が途切れたので、端末要求を構成すると判断する。そして、端末要求構成部105は、音声「Yちゃん、出てきて」をデジタル化して、音声データを得る。また、端末要求構成部105は、予め格納している端末識別子「101」、図示しないGPS受信機で取得された位置情報(Xa,Ya)を取得する。また、端末要求構成部105は、図示しない時計や、外部の装置(例えば、NTPサーバ)から現在時刻「2012/10/27 10:38:51」取得する。そして、端末要求構成部105は、端末要求「101,(Xa,Ya),2012/10/27 10:38:51,音声データ「Yちゃん、出てきて」」を構成する。なお、端末識別子「101」は静的な端末特有情報であり、位置情報や現在時刻は動的な端末特有情報である。また、音声データ「Yちゃん、出てきて」は指示内容情報に該当する。ただし、本端末要求は、指示対象のオブジェクト識別子を有さない。また、ここでの端末要求は「端末識別子,位置情報,現在時刻,指示内容情報」を有するが、この端末要求の構造は一例であることは言うまでもない。
【0149】
次に、端末送信部106は、構成された端末要求を、サーバ装置2に送信する。
【0150】
次に、サーバ装置2の受信部205は、端末装置1から端末要求「101,(Xa,Ya),2012/10/27 10:38:51,音声データ「Yちゃん、出てきて」」を受信する。
【0151】
次に、端末要求処理部206は、受信された端末要求から指示内容情報「音声データ「Yちゃん、出てきて」」を取得する。そして、端末要求処理部206は、音声データ「Yちゃん、出てきて」を音声認識し、文字列「Yちゃん、出てきて」を取得する。
【0152】
次に、端末要求処理部206は、指示内容情報に対応する文字列「Yちゃん、出てきて」を用いて、
図10の対応情報管理表を検索する。なお、指示内容情報に対応する文字列は、指示内容情報である、としても良い。
【0153】
そして、端末要求処理部206は、指示内容情報が、対応情報管理表の「ID=1」の端末要求「$キャラクタ"出てきて"」にマッチする、と判断する。そして、端末要求処理部206は、対応情報管理表の「ID=1」のシナリオ元情報「call($キャラクタ)」を取得する。
【0154】
次に、シナリオ生成部207は、端末要求「$キャラクタ"出てきて"」と文字列「Yちゃん、出てきて」とから、変数「$キャラクタ」の値「Yちゃん」を得る。次に、シナリオ生成部207は、「Yちゃん」を用いて、
図17のキャラクタ管理表を検索し、「ID=1」のレコードのデータ(画像、音声)を得る。そして、シナリオ生成部207は、シナリオ元情報「call($キャラクタ)」と「ID=1」のレコードのデータ(画像、音声)とから、シナリオ「call(画像,音声)」を構成する。本シナリオは、「ID=1」のレコードのデータ(画像、音声)を含む。つまり、「call(画像,音声)」は画像と音声とを含む意味である。
【0155】
次に、送信部208は、構成されたシナリオ「call(画像,音声)」を端末装置1に送信する。なお、送信部208は、端末識別子「101」に対応する送信先の情報(例えば、IPアドレス)を保持しており、かかる送信先の情報を用いて、シナリオを端末装置1に送信する。
【0156】
次に、履歴蓄積部209は、受信された端末要求を用いて、要求履歴「101,(Xa,Ya),2012/10/27 10:38:51,「Yちゃん、出てきて」」を履歴格納部204に蓄積する。なお、履歴蓄積部209は、シナリオ元情報「call($キャラクタ)」、またはシナリオ「call(画像,音声)」を履歴格納部204に蓄積しても良い。かかる場合、端末要求の一部とは、シナリオ元情報または生成されたシナリオでも良い。
【0157】
次に、カレント情報更新部213は、端末識別子「101」で識別される端末装置1のカレント情報を更新する。つまり、カレント情報更新部213は、「Yちゃん」のキャラクタ識別子「1」、画像ID「1」を取得する。そして、カレント情報更新部213は、
図15のカレント情報管理表における端末識別子「101」に対応するレコードの中の、「オブジェクト識別子」の属性値に「1」、および画像IDの属性値に「1」を書き込む。つまり、カレント情報更新部213は、「ID=1」のレコードにおいて、現在「NULL(−)」であるオブジェクト識別子を「1」に変更し、かつ現在「NULL(−)」である画像IDを「1」に変更する。なお、カレント情報更新部213は、キャラクタの、端末装置1における出力位置(例えば、出力位置の初期値である(0,0)等)をも書き込んでも良い。
【0158】
次に、端末装置1の端末受信部107は、サーバ装置2からシナリオ「call(画像,音声)」を受信する。
【0159】
次に、端末パーサ部108は、受信されたシナリオを解釈し、(画像,音声)のキャラクタをディスプレイに表示される。つまり、端末機能呼出部109は、シナリオ「call(画像,音声)」を用いて、ドライバ識別子「キャラクタ」に対応するドライバ呼出関数「show_char(画像)」を実行し、キャラクタをディスプレイに表示する。また、端末機能呼出部109は、シナリオ「call(画像,音声)」を用いて、ドライバ識別子「音声再生」に対応するドライバ呼出関数「voice(音声)」を実行し、キャラクタの音声を再生する。
【0160】
次に、「101」で識別される端末装置1の端末オブジェクト管理表に、
図9の「ID=1」のレコードが格納される。なお、
図9では、表示フラグが「0」であるが、表示フラグは「1」に変更される。
【0161】
以上、本具体例によれば、端末装置1とサーバ装置2とが通信しながら、端末装置1での処理が続けられ、かつ、端末装置1から送信された端末要求をサーバ装置2が解釈する。そして、サーバ装置2で少なくとも一部の処理を行い、サーバ装置2が処理結果と端末要求に対応するシナリオ元情報とを用いたシナリオを構成し、端末装置1に送信する。そして、端末装置1が、自信が具備するドライバの駆動を含むシナリオを解釈し、ドライバを動作させ、所望の処理を行う。また、サーバ装置2では、現在の端末装置1の状態がカレント情報管理表で管理される。
【0162】
(具体例2)
具体例2は、端末装置1から送信された端末要求をサーバ装置2で解釈し、サーバ装置2から端末装置1のドライバを動作させる例である。そして、具体例2は、端末装置1のユーザの操作の履歴に基づいて、端末装置1において異なる動作を実現できる動作の例である。さらに具体的には、端末装置1のユーザが、端末装置1に表示されているキャラクタの胸を閾値以上タッチした場合に、端末装置1のユーザの好感度が下がり、好感度が高い場合と比較して、キャラクタの動作が異なる処理について説明する。また、具体例2において、サーバ装置2で管理している端末装置1のドライバの情報に基づいて、端末装置1に送信されるシナリオが異なる動作についても説明する。
【0163】
今、
図14の履歴管理表によれば、端末識別子「101」のユーザに対するキャラクタ「ID=1」の好感度は「高」である。なお、好感度は「高」「中」「低」の3段階のいずれかで管理される、とする。また、
図14の履歴管理表によれば、端末識別子「101」のユーザは、キャラクタ識別子「1」で識別されるキャラクタの胸を1回、顔を1回、タッチしていることが分かる。
【0164】
また、ここでは、端末要求処理部206は、キャラクタの胸またはお腹に、3分以内に、3回以上タッチした場合に、好感度が一つ下がる、とする。
【0165】
かかる状況において、端末装置1のユーザが、
図19の画面上の「キャラクタID=1」のキャラクタの胸をタッチした、とする。なお、
図19の画面はタッチパネルである。
【0166】
次に、端末受付部104は、このユーザからキャラクタ「1」の胸へのタッチを示す座標情報を含む指示(例えば、point(xb,yb))を受け付ける。point(xb,yb)は、例えば、タッチパネルのドライバからの出力である。
【0167】
次に、端末要求構成部105は、
図9の端末オブジェクト管理表の「表示フラグ=1」に対応するキャラクタ識別子(オブジェクト識別子)「1」を取得する。
【0168】
そして、端末要求構成部105は、指示(point(xb,yb))から、タッチされたと判断する。そして、端末要求構成部105は、座標情報(xb,yb)が、
図9の端末オブジェクト管理表の「ID=1」のレコードが有する部分領域情報「(x101,y101)(x102,y102)・・・」で特定される領域内の点であることを検知する。そして、端末要求構成部105は、当該部分領域情報と対になる部分識別子「1」を取得する。
【0169】
次に、端末要求構成部105は、受け付けた指示から部分識別子「1」が取得できたので、端末要求を構成すると判断する。なお、端末要求構成部105は、
図9の端末オブジェクト管理表で管理されている部位識別子が取得できた場合に、端末要求を構成すると判断するとする。
【0170】
次に、端末要求構成部105は、端末要求「touch(1,1)」を構成する。つまり、端末要求構成部105は、タッチされたとの判断から、「touch」を取得し、オブジェクト識別子「1」、部分識別子「1」から「touch」の引数(1,1)を得る。なお、端末要求構成部105は、ユーザがオブジェクトに対して行った操作の種類(タッチ(クリック)、ダブルクリック、ドラッグ等)に応じた関数名(端末要求を構成する情報の一例)を保持している、とする。
【0171】
また、端末要求構成部105は、例えば、端末識別子「101」、位置情報(Xc,Yc)、現在時刻「2012/10/28 11:38:25」も取得した、とする。そして、端末要求構成部105は、端末要求「touch(1,1)」に、端末識別子、位置情報および現在時刻をも加えて、送信する端末要求「touch(1,1),101,(Xc,Yc),2012/10/28 11:38:25」を構成した、とする。
【0172】
次に、端末送信部106は、構成された端末要求を、サーバ装置2に送信する。
【0173】
次に、サーバ装置2の受信部205は、端末装置1から端末要求「touch(1,1),101,(Xc,Yc),2012/10/28 11:38:25」を受信する。
【0174】
次に、端末要求処理部206は、受信部205が受信した端末要求を解釈し、「touch(1,1)」を取得する。そして、端末要求処理部206は、「touch(1,1)」が
図10の対応情報管理表の「ID=3」のレコードにマッチする、と判断する。そして、端末要求処理部206は、「touch(1,1)」から「オブジェクト識別子=1」「部位識別子=1」を得る。なお、端末要求処理部206は、ここでは、「touch(1,1)」は2回目であるので、
図14の履歴管理表の好感度「高」を変更しない。
【0175】
次に、シナリオ生成部207は、「ID=3」のレコードのシナリオ元情報を対応情報管理表から取得する。そして、シナリオ生成部207は、取得したシナリオ元情報に従って、端末識別子「101」の好感度「高」を
図14の履歴管理表から得る。そして、シナリオ生成部207は、シナリオ元情報を解釈し、当該シナリオ元情報が有する好感度「高」に対応する記述「show_char($オブジェクト識別子,ID=2)」を得る。次に、シナリオ生成部207は、「show_char($オブジェクト識別子,ID=2)」の変数「$オブジェクト識別子」に「1」を代入し、「show_char(1,2)」を得る。次に、シナリオ生成部207は、オブジェクト識別子「1」に対応し、「ID=2」のデータ(ID=2のレコードのデータ)を
図17から取得する。このデータは、
図17の「ID=2」のレコードの画像と、音声データ「もう、やだー」である。
【0176】
また、シナリオ生成部207は、端末識別子「101」に対応する種類識別子「k01」を取得する。そして、シナリオ生成部207は、種類識別子「k01」に対応するドライバ識別子であり、画像に対応するドライバ識別子である「キャラクタ」が存在するか否かを、
図11のドライバ管理表から判断する。ここで、種類識別子「k01」に対応するドライバ識別子「キャラクタ」が存在するので、シナリオ生成部207は、シナリオ「(キャラクタ,「ID=2」のレコードの画像)」を取得する。また、シナリオ生成部207は、種類識別子「k01」に対応するドライバ識別子であり、音声に対応するドライバ識別子である「音声再生」が存在するか否かを、
図11のドライバ管理表から判断する。ここで、種類識別子「k01」に対応するドライバ識別子「音声再生」が存在するので、シナリオ生成部207は、シナリオ「(音声再生,「ID=2」のレコードの音声)」を取得する。そして、シナリオ生成部207は、シナリオ「(キャラクタ,「ID=2」のレコードの画像)、(音声再生,「ID=2」のレコードの音声)」を構成する。なお、show_charは、キャラクタを端末装置で出力するコマンドであり、画像に対応するドライバ識別子が「キャラクタ」であり、音声に対応するドライバ識別子が「音声再生」であることを示す情報を、シナリオ生成部207は、保持している、とする。
【0177】
また、例えば、端末識別子「101」に対応する種類識別子が「k02」であったと仮定した場合、シナリオ生成部207は、
図11のドライバ管理表から、種類識別子が「k02」に対応するドライバ識別子であり、画像に対応するドライバ識別子である「キャラクタ」が存在すると判断するが、音声に対応するドライバ識別子「音声再生」は存在しない、と判断する。そして、シナリオ生成部207は、シナリオ「(キャラクタ,「ID=2」のレコードの画像)」を構成する。
【0178】
次に、送信部208は、構成されたシナリオを端末装置1に送信する。また、次に、履歴蓄積部209は、受信された端末要求の全部または一部を履歴格納部204に蓄積する。ここでは、履歴蓄積部209は、端末要求の一部と考えられる「(1,1,タッチ)」を履歴格納部204に蓄積する。
【0179】
次に、カレント情報更新部213は、シナリオの端末装置1への送信に応じて、カレント情報を更新する。つまり、カレント情報更新部213は、
図15のカレント情報管理表において、端末装置識別子「101」に対応する画像IDの値を「2」に変更する。
【0180】
次に、端末装置1の端末受信部107は、サーバ装置2からシナリオ「(キャラクタ,「ID=2」のレコードの画像)、(音声再生,「ID=2」のレコードの音声)」を受信する。
【0181】
次に、端末パーサ部108は、受信されたシナリオを解釈し、ドライバ識別子「キャラクタ」と「ID=2」のレコードの画像、およびドライバ識別子「音声再生」と音声「もう、やだー」を取得する。なお、端末パーサ部108は、各ドライバ識別子に対応するドライバ呼出関数を保持している。
【0182】
次に、端末機能呼出部109は、ドライバ呼出関数を用いて、ドライバ識別子「キャラクタ」に対応するドライバに対して、「ID=2」のレコードの画像を与え、当該ドライバを起動する。また、端末機能呼出部109は、同様に、ドライバ識別子「音声再生」に対応するドライバに対して、音声「もう、やだー」を与え、当該ドライバを起動する。その結果、
図19のキャラクタ表示が
図20のように変わり、音声「もう、やだー」が出力される。なお、
図20のキャラクタは、胸を触られているが、好感度が「高」なので、笑っている画像である。
【0183】
次に、上記と同様に、端末装置1のユーザが、
図20の画面上の「キャラクタID=1」のキャラクタの胸をタッチした、とする。
【0184】
すると、上記と同様に、端末要求構成部105は、送信する端末要求「touch(1,1),101,(Xd,Yd),2012/10/28 11:38:48」を構成した、とする。
【0185】
次に、端末送信部106は、構成された端末要求を、サーバ装置2に送信する。
【0186】
次に、サーバ装置2の受信部205は、端末装置1から端末要求を受信する。そして、端末要求処理部206は、受信部205が受信した端末要求を、上記と同様に解釈する。そして、「touch(1,1)」は3回目であるので、端末要求処理部206は、
図14の履歴管理表の好感度「高」から「中」に変更する。
【0187】
次に、シナリオ生成部207は、「ID=3」のレコードのシナリオ元情報を対応情報管理表から取得する。そして、シナリオ生成部207は、取得したシナリオ元情報に従って、端末識別子「101」の好感度「中」を履歴管理表から得る。そして、シナリオ生成部207は、シナリオ元情報を解釈し、当該シナリオ元情報が有する好感度「中」に対応する記述「show_char($オブジェクト識別子,ID=3)」を得る。次に、シナリオ生成部207は、「show_char($オブジェクト識別子,ID=3)」の変数「$オブジェクト識別子」に「1」を代入し、「show_char(1,3)」を得る。次に、シナリオ生成部207は、オブジェクト識別子「1」に対応し、「ID=3」のデータ(ID=3のレコードのデータ)を
図14から取得する。このデータは、
図17の「ID=3」のレコードの画像と、音声データ「やらしいわね」である。また、シナリオ生成部207は、画像に対応するドライバ識別子「キャラクタ」と、音声に対応するドライバ識別子「音声再生」とを取得する。そして、シナリオ生成部207は、シナリオ「(キャラクタ,「ID=3」のレコードの画像)、(音声再生,「ID=3」のレコードの音声)」を構成する。
【0188】
次に、送信部208は、構成されたシナリオを端末装置1に送信する。また、次に、履歴蓄積部209は、受信された端末要求の全部または一部を履歴格納部204に蓄積する。ここでは、履歴蓄積部209は、端末要求の一部と考えられる「(1,1,タッチ)」を履歴格納部204に蓄積する。
【0189】
次に、カレント情報更新部213は、
図15のカレント情報管理表において、端末装置識別子「101」に対応する画像IDの値を「3」に変更する。
【0190】
次に、端末装置1の端末受信部107は、サーバ装置2からシナリオ「(キャラクタ,「ID=3」のレコードの画像)、(音声再生,「ID=3」のレコードの音声)」を受信する。
【0191】
次に、端末パーサ部108は、受信されたシナリオを解釈し、ドライバ識別子「キャラクタ」と「ID=3」のレコードの画像、およびドライバ識別子「音声再生」と音声「やらしいわね」を取得する。
【0192】
次に、端末機能呼出部109は、ドライバ識別子「キャラクタ」に対応するドライバに対して、「ID=3」のレコードの画像を与え、当該ドライバを起動する。また、端末機能呼出部109は、ドライバ識別子「音声再生」に対応するドライバに対して、音声「やらしいわね」を与え、当該ドライバを起動する。その結果、
図20のキャラクタ表示が
図21のように変わり、音声「やらしいわね」が出力される。なお、
図21のキャラクタは、胸を触られているが、好感度が「中」なので、胸を隠している画像である。
【0193】
以上、本具体例によれば、端末装置1とサーバ装置2とが通信しながら、端末装置1での処理が続けられる情報システムにおいて、端末装置1のユーザの操作の履歴に基づいて、端末装置1において異なる動作を実現できる。
【0194】
(具体例3)
具体例3は、端末装置1から送信された端末要求をサーバ装置2で解釈し、端末要求を送信した端末装置1以外の端末装置のドライバをサーバ装置2から送信するシナリオにより動作させる例である。さらに具体的には、具体例3は、一の端末装置1におけるユーザ操作に基づいて、他の端末装置1を操作できる動作の例である。また、端末装置1の状態に応じて、適用されるシナリオが変化することにより、異なる動作を行う例である。
【0195】
まず、端末装置識別子「101」で識別される端末装置1のユーザが、自分の端末装置1に向かって、「おばあちゃんを連れてきて」を音声で指示した、とする。
【0196】
次に、端末装置1の端末受付部104は、音声「おばあちゃんを連れてきて」を受け付ける。次に、端末要求構成部105は、端末受付部104が受け付けていた音声が途切れたことを検知し、端末受付部104が受け付けた指示等を用いて、端末要求を構成すると判断する。
【0197】
次に、端末要求構成部105は、音声「おばあちゃんを連れてきて」を音声認識し、文字列「おばあちゃんを連れてきて」を取得する。また、端末要求構成部105は、端末装置1が格納している端末識別子「101」を取得する。また、端末要求構成部105は、端末装置1が保持しているGPS受信機が取得した位置情報(Xe,Ye)を取得する。なお、GPS受信機は、例えば、端末機能部101の一つである。また、端末要求構成部105は、図示しない時計や、外部の装置(例えば、NTPサーバ)から現在時刻「2012/10/28 13:59:53」取得する。そして、端末要求構成部105は、端末要求「101,(Xe,Ye),2012/10/28 13:59:53,"おばあちゃんを連れてきて"」を構成する。
【0198】
次に、端末送信部106は、構成された端末要求を、サーバ装置2に送信する。
【0199】
次に、サーバ装置2の受信部205は、端末装置1から端末要求「101,(Xe,Ye),2012/10/28 13:59:53,"おばあちゃんを連れてきて"」を受信する。
【0200】
次に、端末要求処理部206は、受信部205が受信した端末要求から指示内容情報「おばあちゃんを連れてきて」を取得する。
【0201】
次に、シナリオ生成部207は、指示内容情報「おばあちゃんを連れてきて」を用いて、
図10の対応情報管理表を検索する。そして、シナリオ生成部207は、指示内容情報が、対応情報管理表の「ID=5」の端末要求「$人.*"連れてきて"」にマッチする、と判断する。そして、シナリオ生成部207は、対応情報管理表の「ID=5」のシナリオ元情報を取得する。
【0202】
次に、シナリオ生成部207は、端末要求「$人.*"連れてきて"」の中に、変数が存在することを検知し、サーバ装置2が行うべき処理が存在すると判断する。なお、このサーバ装置2が行うべき第一の処理は、変数「$人」を取得する処理である。
【0203】
次に、シナリオ生成部207は、指示内容情報「おばあちゃんを連れてきて」と端末要求「$人.*"連れてきて"」を用いて、変数「$人」に対応する「おばあちゃん」を、指示内容情報から取得する。なお、ここで、「おばあちゃん」を取得する方法は問わない。例えば、シナリオ生成部207は、「おばあちゃんを連れてきて」を形態素解析し、単語「おばあちゃん」を取得し、変数「$人」に対応すると判断する。
【0204】
次に、シナリオ生成部207は、対応情報管理表の「ID=5」のシナリオ元情報を解釈する。つまり、シナリオ生成部207は、シナリオ元情報の「terminal=search($端末識別子,$人)」の変数「$端末識別子」「人」に、「101」「おばあちゃん」を代入する。そして、シナリオ生成部207は、「terminal=search(101,おばあちゃん)」を実行する。つまり、シナリオ生成部207は、
図18の関連ユーザ管理表の「端末識別子1=101」かつ「関係=おばあちゃん」に合致するレコードから、端末識別子2「103」を取得する。つまり、「terminal=search(101,おばあちゃん)」の「terminal」が「103」である、として取得された。
【0205】
次に、シナリオ生成部207は、シナリオ元情報を解釈し、「terminal!=NULL」に合致すると判断する。そして、シナリオ生成部207は、
図8の「ID=5」のレコードから、「terminal!=NULL」に対応するシナリオ元情報を取得する。次に、シナリオ生成部207は、「if(terminal.電源==OFF)」を解釈し、端末識別子「103」の端末装置1のカレント情報のうちの、属性値「電源=0」を取得する。なお、ここでは、「電源=0」は「OFF」に該当し、「電源=1」は「ON」に該当する。また、電源のOFFとは、ここでは、電話機能は動作し、他の機能は停止していることである、とする。
【0206】
そして、シナリオ生成部207は、「if(terminal.電源==OFF)」を真である、と判断し、シナリオ元情報「tel(terminal,"電源をONにして下さい")」を取得する。そして、シナリオ生成部207は、変数「terminal」に「103」を代入し、シナリオ「tel(103,"電源をONにして下さい")」を得る。
【0207】
次に、送信部208は、端末識別子「103」で識別される端末装置1(おばあちゃんの端末装置1)に、シナリオ「tel(103,"電源をONにして下さい")」を送信する。つまり、送信部208は、おばあちゃんの端末装置1に電話をかけ、「電源をONにして下さい」を送信する。なお、送信部208は、端末装置識別子「103」に対応する電話番号を保持している、とする。
【0208】
次に、おばあちゃんの端末装置1の電話のドライバが起動され、おばあちゃんが受話器を取ると、「電源をONにして下さい」が発声される。そして、おばあちゃんは、端末装置1の電源をONにした(電話以外の機能も動作可能にした)、とする。
【0209】
次に、シナリオ生成部207は、シナリオ元情報「put($位置情報,terminal);start_up(navi());set_destination($位置情報);route_search($現在位置,$目的地);」を取得する。
【0210】
次に、シナリオ生成部207は、「put($位置情報,terminal)」に「位置情報=(Xe,Ye)」「terminal=103」を代入し、「put((Xe,Ye),103)」を構成する。
【0211】
次に、送信部208は、端末識別子「101」とおばあちゃんの端末装置の端末識別子「103」とが、グループ情報格納部203でグループとして管理されているか否かをチェックする。ここで、
図13のグループ情報管理表によれば、「101」と「103」とはグループとして管理されている。従って、送信部208は、おばあちゃんの端末装置1に、「put((Xe,Ye),103)」等のコマンドを送信しても良い、と判断する。そして、送信部208は、「103」の端末装置1に、「put((Xe,Ye),103)」を送信する。「put((Xe,Ye),103)」は、端末装置1の位置情報(Xe,Ye)を通知するコマンドである。
【0212】
そして、おばあちゃんの端末装置1は、端末装置1の位置情報(Xe,Ye)を受信し、一時蓄積する。なお、まず、おばあちゃんの端末装置1に、案内を行う処理を実施しても良いか否かを問い合わせる情報を出力し、おばあちゃんの端末装置1から「許可」を示す情報を受信した場合にも、以下に説明する案内を行う処理を進めることは好適である。
【0213】
次に、送信部208は、コマンド「start_up(navi)();」を、「103」の端末装置1に送信する。
【0214】
次に、おばあちゃんの端末装置1は、コマンド「start_up(navi());」を受信し、当該コマンドに従い、navi()を起動する。つまり、おばあちゃんの端末装置1では、ナビゲーションシステム(端末機能部の一つ)が起動される。なお、おばあちゃんの端末装置1は、シナリオ「start_up(navi());」はナビゲーションシステムを起動することを示す情報が格納されている、とする。
【0215】
次に、送信部208は、コマンド「set_destination($位置情報);」を、「103」の端末装置に送信する。
【0216】
次に、おばあちゃんの端末装置1は、コマンド「set_destination($位置情報);」を受信し、当該コマンドに従い、位置情報(Xe,Ye)を目的地として、ナビゲーションシステムに設定する。なお、おばあちゃんの端末装置1は、シナリオ「set_destination($位置情報);」は、ナビゲーションシステムの目的地に、「$位置情報」を設定することを示す情報が格納されている、とする。
【0217】
次に、送信部208は、コマンド「route_search($現在位置,$目的地);」を、「103」の端末装置1に送信する。
【0218】
次に、おばあちゃんの端末装置1は、コマンド「route_search($現在位置,$目的地);」の変数「$現在位置」におばあちゃんの端末装置の現在位置を代入する。また、おばあちゃんの端末装置1は、変数「$目的地」に位置情報(Xe,Ye)を代入する。なお、おばあちゃんの端末装置1はGPS受信機等の位置情報を取得する機能を有し、当該機能を用いて、「$現在位置」を取得できる、とする。
【0219】
そして、おばあちゃんの端末装置1は、コマンド「route_search((Xf,Yf),(Xe,Ye));」を実行し、ナビゲーションのための経路探索を行う。そして、経路案内がおばあちゃんの端末装置1で行われる、とする。なお、経路案内における目的地は、「おばあちゃんを連れてきて」と音声入力したユーザが居る位置である。なお、おばあちゃんの端末装置1は、シナリオ「route_search((Xf,Yf),(Xe,Ye));」は、ナビゲーションシステムを用いて、2つの地点間の経路案内を行うことを示す情報が格納されている、とする。
【0220】
本具体例によれば、一の端末装置1におけるユーザ操作に基づいて、他の端末装置1を操作できる。また、本具体例によれば、一の端末装置1におけるユーザ操作に基づいて、グループ管理された他の端末装置1のみ操作ができる。
【0221】
(具体例4)
具体例4は、オブジェクトが端末間を移動できる情報システムである。さらに具体的には、端末装置1のユーザが、端末装置1に存在しているキャラクタを、別の端末装置に移動させる場合について説明する。なお、端末装置1のユーザは、ユーザ識別子「A」で識別されるユーザである、とする。
【0222】
また、現在、ユーザ「A」の端末装置1(端末識別子「101」)に、キャラクタ識別子「1」のキャラクタが存在し、かかること(ユーザ識別子:A,端末識別子:101,キャラクタ識別子:1)が、
図15のカレント情報管理表に格納されている、とする。つまり、
図15の「ID=1」のレコードの「オブジェクト識別子=1」である、とする。
【0223】
かかる状況において、ユーザ「A」は、端末識別子「501」で識別される端末装置1(以下、端末「501」)にユーザ識別子「A」と、音声「ここに移動して」とを入力した、とする。
【0224】
次に、端末「501」の端末受付部104は、ユーザ識別子「A」および音声「ここに移動して」を受け付ける。次に、端末要求構成部105は、受け付けたデータを用いて、端末要求を構成すると判断する。
【0225】
次に、端末「501」の端末要求構成部105は、ユーザ識別子「A」、音声「ここに移動して」、端末「501」の端末識別子「501」を用いて、端末要求(501,A,"ここに移動して")を構成する。なお、端末要求構成部105は、音声認識機能を有し、音声「ここに移動して」を文字列「ここに移動して」に変換した、とする。なお、端末「501」は、端末識別子「501」を予め保持している、とする。
【0226】
次に、端末「501」の端末送信部106は、構成された端末要求(501,A,"ここに移動して")を、サーバ装置2に送信する。
【0227】
次に、サーバ装置2の受信部205は、端末装置1から端末要求(501,A,"ここに移動して")を受信する。
【0228】
次に、端末要求処理部206は、受信部205が受信した端末要求を解釈する。そして、端末要求処理部206は、端末要求の解釈結果を用いて、サーバ装置2が行うべき処理が存在すると判断する。つまり、端末要求処理部206は、"ここに移動して"を用いて、
図10の表の「ID=4」のレコードに合致する、と判断する。そして、端末要求処理部206は、「ID=4」のレコードのシナリオ元情報「ch=get_char($ユーザ識別子,$キャラクタ); delete($ユーザ識別子,$キャラクタ); put_char($端末識別子,ch)」を得る。そして、得たシナリオ元情報の中に変数を含むので、端末要求処理部206は、サーバ装置2が行うべき処理が存在すると判断する。
【0229】
次に、端末要求処理部206は、「$ユーザ識別子」に対応する「A」を端末要求から取得する。また、端末要求処理部206は、「$キャラクタ」に対応する「ID=1」のキャラクタの情報を取得する。(ユーザ識別子:A,端末識別子:101,キャラクタ識別子:1)から、端末要求処理部206は、ユーザ識別子「A」に対応するキャラクタ識別子は「1」であると取得できる。また、端末要求処理部206は、「$端末識別子」に対応する「501」を端末要求から取得する。
【0230】
次に、シナリオ生成部207は、「ch=get_char($ユーザ識別子,$キャラクタ);」の変数に値を代入し、「ch=get_char(A,1);」を得る。そして、シナリオ生成部207は、「ch=get_char(A,1);」を実行し、変数「ch」にキャラクタの情報を代入する。次に、シナリオ生成部207は、「delete($ユーザ識別子,$キャラクタ);」の変数に値を代入し、「delete(A,1);」を得る。そして、シナリオ生成部207は、「delete(A,1);」を実行し、ユーザ識別子「A」に対応するキャラクタの情報を、現在、キャラクタが存在する端末装置1の端末識別子「101」を取得する。なお、キャラクタの情報は、キャラクタの画像を含む。
【0231】
そして、送信部208は、端末識別子「101」で識別される端末装置1に、「delete(A,1);」を送信する。そして、端末識別子「101」で識別される端末装置1の端末受信部107は、シナリオ「delete(A,1);」を受信し、端末パーサ部108は当該シナリオを解釈する。そして、端末機能呼出部109は、ディスプレイから「ID=1」のキャラクタを削除する。
【0232】
次に、シナリオ生成部207は、「put_char($端末識別子,ch)」の変数に値を代入し、「put_char(501,ch)」を得る。なお、変数「ch」には、キャラクタの情報が代入されている、とする。
【0233】
次に、送信部208は、「put_char(501,ch)」を端末識別子「501」で識別される端末「501」に送信する。
【0234】
次に、ユーザ管理情報変更部215は、端末要求または送信されたシナリオから、ユーザの指示が端末装置1の移動である、と判断する。そして、ユーザ管理情報変更部215は、
図16のユーザ管理情報管理表のユーザ識別子「A」に対応する端末識別子を「101」から「501」に変更する。
【0235】
次に、カレント情報更新部213は、シナリオの端末装置1への送信に応じて、カレント情報を更新する。つまり、カレント情報更新部213は、
図15のカレント情報管理表において、端末装置識別子「101」に対応するオブジェクト識別子の属性値を「NULL(−)」、画像IDの属性値を画像IDの値を「NULL(−)」に変更する。また、カレント情報更新部213は、端末装置識別子「501」に対応するオブジェクト識別子の属性値を「1」、画像IDの属性値を画像IDの値を「1」に変更する。
【0236】
次に、端末「501」の端末受信部107は「put_char(501,ch)」を受信する。そして、端末パーサ部108は、「put_char(501,ch)」を解釈する。そして、端末「501」の端末機能呼出部109は、キャラクタのドライバに変数「ch」のデータ(キャラクタのデータ)を渡し、キャラクタのドライバを起動させる。そして、端末「501」のディスプレイには、キャラクタが表示される。
【0237】
以上、本具体例によれば、端末間のオブジェクトが移動できる。
【0238】
以上、本実施の形態によれば、ドライバにより駆動される1以上のハードウェアを具備し、かつ情報処理能力が十分でない端末装置において、1以上のハードウェアを有効に利用しつつ、複雑な情報処理が行える。
【0239】
また、本実施の形態によれば、サーバ装置で端末装置の現在の状況を管理することにより、情報処理能力が十分でない端末装置において、1以上のハードウェアを有効に利用しつつ、複雑な情報処理が行える。
【0240】
また、本実施の形態によれば、サーバ装置で端末装置のドライバを管理することにより、情報処理能力が十分でない端末装置において、1以上のハードウェアを有効に利用しつつ、複雑な情報処理が行える。また、本実施の形態によれば、端末装置が具備するドライバの登録、管理が容易に行える。
【0241】
さらに、本実施の形態によれば、処理中に、処理を行う対象の端末装置を変更できる。
【0242】
なお、本実施の形態において、端末装置1から送信された端末要求を、サーバ装置2が解釈して、シナリオを端末装置1に返す、という処理を行っている。ただし、サーバ装置2は、端末装置1から端末要求を受信しない場合にでも、予め決められた条件を満たす場合、端末装置1にシナリオを送信しても良い。予め決められた条件とは、例えば、予め決められた時刻になったこと、サーバ装置2の状態が予め決められた条件を満たすこと等である。サーバ装置2の状態が予め決められた条件を満たすこととは、例えば、CPU負荷が閾値以下であること、サーバ装置2が起動していること等である。
【0243】
また、本実施の形態において、例えば、サーバ装置2が、ダウンした場合、サーバ装置2がダウンから復帰するまで、サーバ装置2からの復帰した旨の情報の受信まで端末装置1は待機状態となり、端末装置1が本来持つ機能が動作する。また、かかる場合、通常、端末装置1は現在の状態を保持(退避)している。なお、端末装置1が本来持つ機能とは、例えば、OSがユーザからの指示等を受け付ける状態である。また、サーバ装置2から復帰した旨の情報を受信した場合、端末装置1は、退避した状態を呼び出し、サーバ装置2とのやりとりを再開する。
【0244】
また、端末装置1で処理を行っている場合、通常、サーバ装置2と常時通信を行っている。そのため、サーバ装置2が、例えば、ダウンした場合、端末装置1の処理は停止しても良い。
【0245】
さらに、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD−ROMなどの記録媒体に記録して流布しても良い。なお、本実施の形態における端末装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記憶媒体に、前記1以上の端末機能部のドライバを識別する1以上のドライバ識別子を格納しており、コンピュータを、ユーザからの1以上の指示を受け付ける端末受付部と、前記1以上の指示に対応する要求である端末要求を構成する端末要求構成部と、前記端末要求を前記サーバ装置に送信する端末送信部と、前記端末要求の送信に対応して、前記サーバ装置からコマンドとデータとを有するシナリオを受信する端末受信部と、前記シナリオを解釈し、前記1以上のドライバ識別子、および当該1以上のドライバ識別子で識別される1以上の機能部に渡すデータであり、前記シナリオが有するデータを取得する端末パーサ部と、前記端末パーサ部が取得した前記1以上のドライバ識別子で識別される1以上の端末機能部に、前記端末パーサ部が取得したデータを渡し、前記1以上の端末機能部を呼び出す端末機能呼出部として機能させるためのプログラムである。
【0246】
また、上記プログラムにおいて、1以上のオブジェクトを格納し得る端末オブジェクト格納部と、前記1以上のオブジェクトを出力する端末オブジェクト出力部とをさらに具備し、前記シナリオは、オブジェクトの動作を示すコマンドである動作コマンドを有し、前記端末パーサ部は、前記シナリオを解釈し、当該シナリオから動作コマンドを取得し、前記端末オブジェクト出力部は、前記動作コマンドに従って、当該動作コマンドに対応するオブジェクトを動作させることは好適である。
【0247】
また、本実施の形態におけるサーバ装置2を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記憶媒体に、端末要求を構成する情報とシナリオを構成する元になる情報であるシナリオ元情報との対応を示す1以上の対応情報を格納しており、かつ、端末装置の現在の状態を示す情報であるカレント情報を、端末装置ごとに格納しており、コンピュータを、端末装置から端末要求を受信する受信部と、前記受信部が受信した端末要求を解釈し、当該端末要求に対応するシナリオ元情報を、前記記憶媒体から取得し、かつ、前記受信部が受信した端末要求に対応する処理を行う端末要求処理部と、前記端末要求処理部が取得したシナリオ元情報と、前記端末要求処理部が処理を行って得た処理結果と、前記端末装置に対応するカレント情報とを用いて、シナリオを生成するシナリオ生成部と、前記シナリオ生成部が生成したシナリオを端末装置に送信する送信部と、前記シナリオの端末装置への送信に応じて、前記カレント情報を更新するカレント情報更新部として機能させるためのプログラムである。
【0248】
上記プログラムにおいて、前記記録媒体に、さらに、前記1または2以上の各端末装置が具備している端末機能部のドライバを識別する1以上のドライバ識別子を、端末装置ごとに格納しており、前記シナリオ生成部は、前記記録媒体に格納されている1以上のドライバ識別子に応じて、生成するシナリオが異なるものとして、コンピュータを機能させることは好適である。
【0249】
上記プログラムにおいて、前記記録媒体に、端末装置の種類を示す種類識別子と1以上のドライバ識別子とを対応付ける1以上の種類別ドライバ情報と、端末装置を識別する端末識別子と種類識別子とを対応付ける1以上の端末管理情報とを格納しており、前記シナリオ生成部は、前記記録媒体に格納されている1以上のドライバ識別子に応じて、生成するシナリオが異なるものとして、コンピュータを機能させることは好適である。
【0250】
上記プログラムにおいて、前記記録媒体に、さらに、端末装置のユーザを識別するユーザ識別子と端末識別子とを対応付ける1以上のユーザ管理情報を格納しており、前記端末要求が、処理を行う端末装置を移動する旨の要求である場合に、処理を行う端末装置が、現在処理を行っている端末装置である旧端末装置から新端末装置に変更になるように、ユーザ管理情報が有する端末識別子であり、前記端末要求を送信してきた端末装置のユーザのユーザ識別子に対応する端末識別子を、前記新端末装置の端末識別子に変更するユーザ管理情報変更部とをさらに具備し、前記シナリオ生成部は、前記旧端末装置のカレント情報を用いて、シナリオを生成し、前記送信部は、前記シナリオ生成部が生成したシナリオを新端末装置に送信するものとして、コンピュータを機能させることは好適である。
【0251】
また、
図22は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態の情報システムを実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。
図22は、このコンピュータシステム300の概観図であり、
図23は、システム300のブロック図である。
【0252】
図22において、コンピュータシステム300は、CD−ROMドライブを含むコンピュータ301と、キーボード302と、マウス303と、モニタ304とを含む。
【0253】
図23において、コンピュータ301は、CD−ROMドライブ3012に加えて、MPU3013と、MPU3013、CD−ROMドライブ3012に接続されたバス3014と、ブートアッププログラム等のプログラムを記憶するためのROM3015と、MPU3013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM3016と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク3017とを含む。ここでは、図示しないが、コンピュータ301は、さらに、LANへの接続を提供するネットワークカードを含んでも良い。
【0254】
コンピュータシステム300に、上述した実施の形態の情報システムの機能を実行させるプログラムは、CD−ROM3101に記憶されて、CD−ROMドライブ3012に挿入され、さらにハードディスク3017に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ301に送信され、ハードディスク3017に記憶されても良い。プログラムは実行の際にRAM3016にロードされる。プログラムは、CD−ROM3101またはネットワークから直接、ロードされても良い。
【0255】
プログラムは、コンピュータ301に、上述した実施の形態の情報システムの機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム300がどのように動作するかは周知であり、詳細な説明は省略する。
【0256】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
【0257】
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【0258】
また、上記各実施の形態において、一の装置に存在する2以上の通信手段(端末情報送信部、端末情報受信部など)は、物理的に一の媒体で実現されても良いことは言うまでもない。
【0259】
また、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【0260】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。