以下、情報システム等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態1)
本実施の形態において、端末装置でのユーザの指示等から構成された端末要求をサーバ装置が受信し、端末要求を用いて、サーバ装置で処理を行い、その処理結果と、端末要求を用いて取得されるシナリオ元情報とを用いて、シナリオを構成し、端末装置に送信する情報システムについて説明する。なお、端末装置は、シナリオを解釈し、ドライバを駆動し、ハードウェア(端末機能部)を動作させる。
また、本実施の形態において、端末要求を蓄積し、2以上の端末要求の履歴に基づいて、シナリオを生成する情報システムについて説明する。つまり、ユーザの指示の履歴に応じて、生成するシナリオが異なる情報システムについて説明する。
また、本実施の形態において、蓄積された端末要求を統計処理する情報システムについて説明する。
また、本実施の形態において、一の端末装置に対する操作により、サーバ装置が他の端末装置にコマンドを送信し、他の端末装置がコマンドを処理する情報システムについて説明する。
さらに、本実施の形態において、2以上の端末装置をグループ管理し、コマンドを送付できる他の端末装置はグループ内の端末装置のみに限定する情報システムについて説明する。
図1は、本実施の形態における情報システムの概念図である。情報システムは、1または2以上の端末装置1とサーバ装置2を備える。端末装置1とサーバ装置2とは、インターネット、イントラネット等のネットワーク3により通信可能である。なお、情報システムは、サーバ装置2も、2以上具備しても良い。
端末装置1は、いわゆるパーソナルコンピュータ、いわゆるスマートフォンや携帯電話等の携帯端末、街角に設置されている表示装置、テレビジョン装置、ナビゲーション装置等、問わない。端末装置1は、ドライバにより駆動される1以上のハードウェアを具備し、情報を出力できる装置であれば良い。
図2は、本実施の形態における情報システムのブロック図である。
情報システムを構成する端末装置1は、端末機能部101、端末ドライバ管理部102、端末オブジェクト格納部103、端末受付部104、端末要求構成部105、端末送信部106、端末受信部107、端末パーサ部108、端末機能呼出部109、および端末オブジェクト出力部110を備える。
サーバ装置2は、対応情報格納部201、サーバドライバ管理部202、グループ情報格納部203、履歴格納部204、受信部205、端末要求処理部206、シナリオ生成部207、送信部208、履歴蓄積部209、受付部210、統計処理結果取得部211、および統計処理結果出力部212を備える。
端末装置1を構成する端末機能部101は、ドライバにより駆動され、所定の機能を実現する。端末機能部101は、通常、ハードウェアであり、例えば、ディスプレイ、スピーカー、カメラ、電話等である。ただし、メール機能を実現するソフトウェアでも良い。 端末ドライバ管理部102は、1以上の端末機能部101のドライバを識別する1以上のドライバ識別子を格納し得る。
端末オブジェクト格納部103は、1以上のオブジェクトを格納し得る。オブジェクトとは、データや情報と捉えても良い。オブジェクトは、例えば、アニメーションのキャラクタの情報である。オブジェクトは、データや情報と、当該データ等を処理するプログラムやスクリプト等が一体化されていても良い。なお、端末オブジェクト格納部103のオブジェクトは、通常、サーバ装置2から受信されたオブジェクトである。
端末受付部104は、ユーザからの1以上の指示を受け付ける。指示は、データを有しても、有さなくても良い。指示とは、操作と捉えても良い。ここで、受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
指示の入力手段は、タッチパネルやキーボードやマウスやメニュー画面によるもの等、何でも良い。端末受付部104は、タッチパネルやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
端末要求構成部105は、1以上の指示に対応する要求である端末要求を構成する。端末要求構成部105は、通常、端末受付部104が受け付けた1以上の指示を用いて、端末要求を構成する。端末要求は、通常、指示の対象のオブジェクトの識別子を有するが、オブジェクトの識別子を有さなくても良い。端末要求は、例えば、指示の対象のオブジェクトの識別子と、指示の内容を示す指示内容情報とを有する。指示内容情報とは、指示した位置を示す座標情報または、指示した領域を特定する領域識別子、操作の種類を示す操作種類識別子および位置や領域を示す座標情報や領域識別子等である。操作種類識別子は、ドラッグ、ダブルクリック、クリック、タッチ等、操作を識別する情報である。また、端末要求は、通常、端末装置1に特有の情報である端末特有情報を含む。端末特有情報とは、例えば、端末装置1にとって変化のない静的特有情報と、動的に変化する動的特有情報とがあり得る。静的特有情報は、例えば、端末装置1の識別子である端末識別子、端末装置1のユーザの識別子等である。また、動的特有情報は、例えば、端末装置1の位置を示す端末位置情報、端末装置1が存在する場所の天気を示す天気情報、現在時刻等である。
端末要求構成部105は、例えば、ユーザが画面に対して指示した場合に、表示中のオブジェクトのオブジェクト識別子であり、端末装置1が保持しているオブジェクト識別子を取得する。また、端末要求構成部105は、ユーザの指示した画面上の位置を示す1以上の座標情報から操作種類識別子を取得する。そして、端末要求構成部105は、オブジェクト識別子、操作種類識別子、1以上の座標情報を有する端末要求を構成する。
端末要求構成部105は、端末受付部104が音声を受け付けた場合、当該音声を音声認識し、文字列を取得しても良い。そして、端末要求構成部105は、当該文字列を含む端末要求を構成しても良い。また、端末要求構成部105は、端末受付部104が一の言語の文を受け付けた場合、当該文を他の言語に機械翻訳し、当該機械翻訳結果を含む端末要求を構成しても良い。つまり、端末要求構成部105は、端末受付部104が受け付けた1以上の指示に対して、音声認識、機械翻訳等の処理を実行しても良い。
また、端末要求構成部105は、端末受付部104が音声を受け付けた場合、当該音声をサンプリングし、デジタル化して、端末要求を構成しても良い。
また、端末要求構成部105は、端末受付部104が受け付けた指示等により動作する端末機能部101の識別子またはドライバのドライバ識別子を取得し、端末要求に含めても良い。さらに、端末要求構成部105は、端末受付部104が受け付けた指示等により動作するソフトウェアの識別子を取得し、端末要求に含めても良い。
なお、端末要求構成部105が構成する端末要求のデータ構造は問わないことは言うまでもない。なお、情報システムで扱う他のデータのデータ構造も問わない。
端末送信部106は、端末要求構成部105が構成した端末要求をサーバ装置2に送信する。端末送信部106は、サーバ装置2に端末要求を送信するために、サーバ装置2を識別するサーバ装置識別子を保持している。なお、サーバ装置識別子は、サーバ装置2と通信するために必要な情報であり、例えば、サーバ装置2のIPアドレス、MACアドレス、サーバ装置2が情報を取得できるメールアドレス等である。
端末受信部107は、端末要求の送信に対応して、サーバ装置2からシナリオを受信する。シナリオは、端末装置1のドライバを動作させるコマンドを有する。また、シナリオは、通常、コマンドとデータとを有する。シナリオは、例えば、端末機能部101への動作指示、表示されているオブジェクトの動作を示すコマンドである動作コマンド等を有する。端末機能部101への動作指示は、例えば、ドライバ識別子とドライバに渡すデータとを含む。シナリオは、1または2以上のコマンド等を有する。コマンド等とは、コマンド、データ、またはコマンドとデータ等である。
端末パーサ部108は、シナリオを解釈し、1以上のドライバ識別子、およびデータを取得する。データは、1以上のドライバ識別子で識別される1以上の端末機能部101に渡すデータであり、シナリオが有するデータである。また、データは、オブジェクトでも良い。
また、端末パーサ部108は、シナリオを解釈し、シナリオから動作コマンドを取得しても良い。
端末機能呼出部109は、端末パーサ部108が取得した1以上のドライバ識別子で識別される1以上の端末機能部101に、端末パーサ部108が取得したデータを渡し、1以上の端末機能部101を呼び出す。ここで、呼び出すとは、動作させる、という意味であると捉えても良い。
端末オブジェクト出力部110は、1以上のオブジェクトを出力する。ここで、オブジェクトは、通常、サーバ装置2から受信されたデータである。また、出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。つまり、端末オブジェクト出力部110は、オブジェクトをディスプレイに表示しても良いし、端末オブジェクト格納部103に蓄積しても良い。
また、端末オブジェクト出力部110は、動作コマンドに従って、動作コマンドに対応するオブジェクトを動作させる。この動作結果は、通常、ディスプレイに表示される。ただし、端末オブジェクト出力部110は、スピーカーを通して声またはサウンドにより動作結果を出力しても良いし、LED等を利用した光の明滅を行うことにより動作結果を出力しても良いし、機械の動作等によって様々な表現で動作結果を報知する等しても良い。
サーバ装置2を構成する対応情報格納部201は、1以上の対応情報を格納し得る。対応情報は、端末要求を構成する情報とシナリオ元情報との対応を示す情報である。シナリオ元情報は、シナリオを構成する元になる情報である。対応を示す情報とは、情報そのものであっても良い。つまり、対応情報は、端末要求を構成する情報とシナリオ元情報とを有する情報でも良いし、端末要求を構成する情報へのポインタとシナリオ元情報へのポインタとを有する情報等でも良い。シナリオ元情報は、1以上のコマンドを含むコマンド列でも良いし、プログラム等でも良い。
サーバドライバ管理部202は、1以上のドライバ識別子を格納し得る。ここでのドライバ識別子は、端末装置1が具備している端末機能部101のドライバを識別する情報である。ドライバ識別子は、例えば、ドライバ名、ドライバのディスク上での物理アドレス等である。サーバドライバ管理部202は、端末装置ごと、または端末装置の種類ごとに、1以上のドライバ識別子を格納していることは好適である。
グループ情報格納部203は、グループ情報を格納し得る。グループ情報は、2以上の端末装置1のグループを特定する情報である。グループ情報は、2以上の各端末装置1を識別する2以上の端末識別子を有する.
履歴格納部204は、要求履歴を格納し得る。要求履歴は、受信部205が受信した端末要求の一部または全部である。履歴格納部204は、端末装置1ごとに、要求履歴を格納していることは好適である。また、履歴格納部204は、端末装置1の端末機能部101ごとに、要求履歴を格納していても良い。ここでの端末機能部101ごととは、ドライバ識別子ごとと同意義である。さらに、履歴格納部204は、端末装置1ごとに、かつ、端末装置1で動作したソフトウェア単位で要求履歴を格納していても良い。なお、ソフトウェア単位とは、ソフトウェアの識別子に対応づける、という意義である。
受信部205は、端末装置1から端末要求を受信する。
端末要求処理部206は、受信部205が受信した端末要求を解釈する。そして、端末要求処理部206は、当該端末要求に対応するシナリオ元情報を、対応情報格納部201から取得する。また、端末要求処理部206は、端末要求に対応する処理を行い、処理結果を取得する。処理とは、例えば、図示しないデータベースに対する検索処理、端末要求が有する文字列に対する機械翻訳処理等、何でも良い。
端末要求処理部206は、例えば、端末要求が音声を含む場合、当該音声を音声認識し、文字列を取得しても良い。そして、端末要求処理部206は、当該文字列を用いて、シナリオ元情報を、対応情報格納部201から取得しても良い。
シナリオ生成部207は、端末要求処理部206が取得したシナリオ元情報と、端末要求処理部206が処理を行って得た処理結果とを用いて、シナリオを生成する。
シナリオ生成部207は、受信部205が受信した端末要求、および履歴格納部204に格納されている要求履歴を用いてシナリオを生成する。つまり、端末要求が同じでも、要求履歴が異なれば生成するシナリオが異なることは好適である。例えば、キャラクタへのタッチ状況に応じて、動作が異なることは好適である。
シナリオ生成部207は、サーバドライバ管理部202に格納されている1以上のドライバ識別子に応じて、生成するシナリオが異なる。ここで、生成するシナリオが異なるとは、例えば、端末装置1が保有しないドライバのドライバ識別子を含まないようにすることである。また、端末装置1が保有しないドライバに関して、サーバ装置2の端末要求処理部206が処理を行うことは好適である。
送信部208は、シナリオ生成部207が生成したシナリオを端末装置1に送信する。また、送信部208は、他端末装置に、コマンドを送信しても良い。他端末装置も、端末装置1と同様の構成を有することが好適であるが、コマンドを受信し、当該コマンドに応じた動作が行えれば良い。ここで、コマンドを送信する先の他端末装置の識別子は、予め格納されていても良いし、端末装置1から受信されても良いし、他端末装置から端末装置1とペアである旨の情報が受信されても良い。端末装置1とペアである旨の情報は、例えば、端末装置1のユーザを識別するユーザ識別子である。
ただし、送信部208は、グループ情報が有する2以上のいずれかの端末識別子にも対応しない端末装置1にはコマンドを送信しないことは好適である。
履歴蓄積部209は、受信部205が受信した端末要求の一部または全部である要求履歴を履歴格納部204に蓄積する。端末要求の一部とは、2以上の端末要求から生成される情報も含む、とする。また、履歴蓄積部209は、端末要求が有する端末機能部101の識別子またはドライバのドライバ識別子ごとに、要求履歴を履歴格納部204に蓄積しても良い。また、履歴蓄積部209は、端末要求が有するソフトウェアの識別子ごとに、要求履歴を履歴格納部204に蓄積しても良い。また、履歴蓄積部209は、シナリオ生成部207が生成したシナリオに含まれる端末機能部101の識別子またはドライバ識別子ごとに、要求履歴を履歴格納部204に蓄積しても良い。また、履歴蓄積部209は、シナリオ生成部207が生成したシナリオに含まれるソフトウェアの識別子ごとに、要求履歴を履歴格納部204に蓄積しても良い。
受付部210は、サーバ装置2のユーザの指示やデータ等を受け付ける。指示やデータ等の入力手段は、キーボードやマウスやメニュー画面によるもの等、何でも良い。受付部210は、キーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
統計処理結果取得部211は、要求履歴を統計処理し、統計処理結果を取得する。統計処理とは、例えば、平均値を取得する処理、単位時間あたりの操作の数を取得する処理等である。統計処理の内容は問わない。
統計処理結果出力部212は、統計処理結果取得部211が取得した統計処理結果を出力する。
端末ドライバ管理部102、端末オブジェクト格納部103、対応情報格納部201、サーバドライバ管理部202、グループ情報格納部203、および履歴格納部204は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
端末ドライバ管理部102等にドライバ識別子等が記憶される過程は問わない。例えば、記録媒体を介してドライバ識別子等が端末ドライバ管理部102等で記憶されるようになってもよく、通信回線等を介して送信されたドライバ識別子等が端末ドライバ管理部102等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力されたドライバ識別子等が端末ドライバ管理部102等で記憶されるようになってもよい。
端末送信部106、端末受信部107、受信部205、および送信部208は、通常、無線または有線の通信手段で実現されるが、放送手段で実現されても良い。
端末パーサ部108、端末機能呼出部109、端末要求処理部206、シナリオ生成部207、履歴蓄積部209、および統計処理結果取得部211は、通常、MPUやメモリ等から実現され得る。端末パーサ部108の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
端末オブジェクト出力部110、および統計処理結果出力部212は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。端末オブジェクト出力部110は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
次に、情報システムの動作について説明する。まず、端末装置1の動作について、図3のフローチャートを用いて説明する。
(ステップS301)端末受付部104は、ユーザ等から指示またはデータ等を受け付けたか否かを判断する。指示等を受け付ければステップS302に行き、受け付けなければステップS301に戻る。
(ステップS302)端末要求構成部105は、ステップS301で受け付けた指示等を用いて、端末要求を構成するか否かを判断する。端末要求を構成すると判断した場合はステップS303に行き、端末要求を構成しないと判断した場合はステップS311に行く。なお、端末要求構成部105は、例えば、端末要求を構成するイベントや指示や条件等を予め格納しており、ステップS301で受け付けた指示等が、かかる格納しているイベントや指示や条件等に合致するか否かにより、端末要求を構成するか否かを判断する。また、端末要求構成部105は、例えば、端末要求を構成しないイベントや指示や条件等を予め格納しており、ステップS301で受け付けた指示等が、かかる格納しているイベントや指示等に合致しない場合に、端末要求を構成すると判断する。なお、条件とは、例えば、N(Nは0より大きい数値)秒間、入力が無いこと、所定の入力後、N秒、経過したこと等である。また、ステップS302において、端末要求構成部105は、条件に合致するまで、ウェイトしても良い。
(ステップS303)端末要求構成部105は、ステップS301で受け付けた指示等、またはステップS301で受け付けた指示等と一時蓄積している指示等を用いて端末要求を構成する。なお、端末要求を構成する処理について、図4のフローチャートを用いて説明する。
(ステップS304)端末送信部106は、ステップS303で構成された端末要求を、サーバ装置2に送信する。なお、端末送信部106は、例えば、サーバ装置2のIPアドレスを保持している。
(ステップS305)端末受信部107は、サーバ装置2からシナリオを受信したか否かを判断する。シナリオを受信すればステップS306に行き、シナリオを受信しなければステップS305に戻る。
(ステップS306)端末パーサ部108は、ステップS305で受信されたシナリオを解釈し、1以上のドライバ識別子、およびデータを取得する。なお、ここでは、シナリオは、1以上のドライバを操作する命令を含むとする。
(ステップS307)端末機能呼出部109は、カウンタiに1を代入する。
(ステップS308)端末機能呼出部109は、ステップS306で取得した情報の中で、i番目のドライバの操作に関する情報が存在するか否かを判断する。i番目のドライバの操作に関する情報が存在すればステップS309に行き、存在しなければステップS301に戻る。
(ステップS309)端末機能呼出部109は、ステップS306で取得した情報の中で、i番目のドライバの操作に関する情報に従って、i番目のドライバを操作する。
(ステップS310)端末機能呼出部109は、カウンタiを1、インクリメントする。ステップS308に戻る。
(ステップS311)端末送信部106は、指示等をバッファに一時蓄積する。ステップS301に戻る。
なお、ステップS302において、端末送信部106は、ステップS301で受け付けた指示等を用いて、端末要求を構成するか否かを判断した。しかし、指示等を受け付けた場合、常に、端末要求を構成しても良い。
また、図3のフローチャートにおいて、シナリオの中に、ドライバを動作させる処理以外の処理が記載されていても良い。その場合、端末装置1は、シナリオに従って、動作を行う。
さらに、図3のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
次に、ステップS303の端末要求を構成する処理について、図4のフローチャートを用いて説明する。
(ステップS401)端末要求構成部105は、バッファに指示等が存在するか否かを判断する。バッファに指示等が存在すればステップS402に行き、バッファに指示等が存在しなければステップS403に行く。
(ステップS402)端末要求構成部105は、バッファから指示等を読み出す。
(ステップS403)端末要求構成部105は、ステップS301で受け付けられた指示等を取得する。
(ステップS404)端末要求構成部105は、ステップS403で取得した指示等、またはステップS403で取得した指示等とステップS402で読み出した指示等とを用いて、指示対象のオブジェクト識別子を取得する。なお、指示等が画面上の座標値(x,y)であり、端末要求構成部105は、現在、画面上に表示されているオブジェクトのオブジェクト識別子およびオブジェクトの表示位置(例えば、オブジェクトの輪郭を特定する座標値の集合)を保持しており、指示等が示す座標値に対応するオブジェクト識別子を取得する。なお、かかる技術は、オブジェクトの管理技術として公知であるので、詳細な説明を省略する。例えば、画面上にあるキャラクタが表示されている場合、端末要求構成部105は、タッチされたキャラクタのオブジェクト識別子を取得する。
(ステップS405)端末要求構成部105は、ステップS403で取得した指示等、またはステップS403で取得した指示等とステップS402で読み出した指示等とを用いて、指示内容情報を取得する。指示内容情報は、例えば、タッチされたこと、ドラッグされてこと、またはタッチされたキャラクタの領域を示す領域識別子等である。例えば、端末要求構成部105は、現在、画面上に表示されているオブジェクトの領域識別子と領域を特定する位置情報(領域の輪郭を示す座標値の集合)を保持している、とする。
(ステップS406)端末要求構成部105は、端末特有情報を取得する。端末特有情報は、例えば、GPS受信機で取得された位置情報、現在時刻、端末識別子等である。
(ステップS407)端末要求構成部105は、オブジェクト識別子、指示内容情報、端末特有情報を有する端末要求を構成する。なお、ここで、端末要求構成部105は、オブジェクト識別子、指示内容情報、端末特有情報のうち、1または2の情報のみから端末要求を構成しても良い。上位処理にリターンする。
なお、図4のフローチャートにおいて、端末要求の構成方法の一例を説明した。端末要求構成部105は、受け付けられた指示等から端末要求を構成すれば良く、その方法は問わない。
例えば、端末要求構成部105は、受け付けられた音声を音声認識し、文字列を取得しても良い。そして、端末要求構成部105は、当該文字列と端末識別子等の端末特有情報により、端末要求を構成しても良い。
次に、サーバ装置2の動作について、図5のフローチャートを用いて説明する。
(ステップS501)受信部205は、端末装置1から端末要求を受信したか否かを判断する。端末要求を受信すればステップS502に行き、端末要求を受信しなければステップS508に行く。
(ステップS502)端末要求処理部206は、受信部205が受信した端末要求を解釈する。そして、端末要求処理部206は、端末要求に対応するシナリオ元情報を、対応情報格納部201から取得する。
(ステップS503)端末要求処理部206は、端末要求の解釈結果を用いて、サーバ装置2が行うべき処理が存在するか否かを判断する。サーバ装置2が行うべき処理が存在すればステップS504に行き、存在しなければステップS505に行く。端末要求処理部206は、例えば、端末要求が変数を含む場合、またはシナリオ元情報が変数を含む場合、サーバ装置2が行うべき処理が存在すると判断する。
(ステップS504)端末要求処理部206は、端末要求が指示する処理であり、サーバ装置2が行うべき処理を行う。そして、端末要求処理部206は、処理結果を取得する。
(ステップS505)シナリオ生成部207は、ステップS502で取得されたシナリオ元情報、またはステップS502で取得されたシナリオ元情報とステップS504で取得された処理結果とを用いて、シナリオを構成する。
(ステップS506)送信部208は、ステップS505で構成されたシナリオを端末装置1に送信する。
(ステップS507)履歴蓄積部209は、ステップS501で受信された端末要求の全部または一部を履歴格納部204に蓄積する。ステップS501に戻る。なお、端末要求の一部は、1以上の端末要求から構成された情報(例えば、後述する好感度)も含む、と考える。
(ステップS508)受付部210は、統計処理を行うことを示す指示を受け付けたか否かを判断する。かかる指示を受け付けた場合はステップS509に行き、指示を受け付けない場合はステップS501に戻る。なお、かかる指示を、適宜、統計処理指示という。
(ステップS509)統計処理結果取得部211は、履歴格納部204の1または2以上の端末要求を用いて、統計処理を行う。そして、統計処理結果取得部211は統計処理結果を取得する。
(ステップS510)統計処理結果出力部212は、ステップS509で取得された統計処理結果を出力する。ステップS501に戻る。
なお、図5のフローチャートにおいて、ステップS507の処理等、他の処理と独立して行える処理の順序は問わないことは言うまでもない。
また、図5のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
以下、本実施の形態における情報システムの具体的な動作について説明する。情報システムの概念図は図1である。
図6は、端末装置1の端末ドライバ管理部102に格納されている端末ドライバ管理表の一例である。ここでの端末ドライバ管理表は、ある一の端末装置1が具備しているドライバの情報を管理している。また、端末ドライバ管理表は、「ID」「ドライバ識別子」「ドライバ呼出関数」を有するレコードを1以上格納している。「ID」は、端末ドライバ管理表のレコードを識別する情報である。また、「ドライバ識別子」は、ドライバを識別する情報である。さらに、「ドライバ呼出関数」は、ドライバを動作させるための関数である。ここで、「ドライバ呼出関数」の代わりに、ドライバを動作させるためのメッセージでも良いし、メソッド名でも良いし、ドライバ呼出へのポインタの情報等でも良い。つまり、端末ドライバ管理表のレコードは、ドライバを動作させるための情報であれば何でも良い。なお、ドライバ呼出関数「show_char()」はキャラクタを表示等するドライバの呼び出し関数の一例であり、「voice()」は音声を再生するドライバの呼び出し関数の一例であり、「ui()」はユーザインターフェイスをハンドリングするドライバの呼び出し関数の一例であり、「camera()」はカメラのドライバの呼び出し関数の一例であり、「tel()」は電話のドライバの呼び出し関数の一例であり、「mail()」はドライバの呼び出し関数の一例であり、「data_manage()」はデータ管理を行うドライバの呼び出し関数の一例である。
図7は、端末装置1の端末オブジェクト格納部103に格納されている端末オブジェクト管理表の一例である。ここでの端末オブジェクト管理表は、「ID」「キャラクタ」「全体領域情報」「部分情報」「表示フラグ」を有するレコードを1以上格納している。「ID」はキャラクタ識別子である。「全体領域情報」は、キャラクタが表示される画面上での領域を示す情報である。「全体領域情報」は、通常、2以上の座標情報を有する。座標情報は、通常、画面上での座標情報である。また、「部分情報」は、キャラクタの部分に関する情報である。部分とは、顔、胸、お腹、手、足等である。「部分情報」は、「部分識別子」「部分領域情報」を有する。「部分識別子」は、部分を識別するIDであり、例えば、胸は「1」、顔は「2」である。また、「部分領域情報」は、キャラクタの部分の領域を示す情報であり、通常、2以上の座標情報を有する。座標情報は、画面上での座標情報でも良いし、キャラクタ内での相対的な座標の情報等でも良い。「表示フラグ」は、現在、キャラクタが表示されているか否かを示す情報である。ここでは、「表示フラグ=1」を有するレコードに対応するキャラクタは、現在、端末装置1の画面上に表示されている。また、「表示フラグ=0」を有するレコードに対応するキャラクタは、現在、端末装置1の画面上に表示されていない。
また、図8は、サーバ装置2の対応情報格納部201に格納されている対応情報管理表である。対応情報管理表は、「ID」「端末要求」「シナリオ元情報」を有するレコードを1以上格納している。「ID」は、対応情報管理表のレコードを識別する情報である。「端末要求」は、端末要求を示す情報である。また、「シナリオ元情報」は、端末要求に対応するシナリオ元情報である。「シナリオ元情報」は、ここでは、コマンド、制御情報付きのコマンドであるが、その構造、内容は問わない。なお、ここでは、コマンドは、例えば、関数の形式である。また、制御情報は、例えば、「if then else」等である。図8において、「get_char($ユーザ識別子,$キャラクタ)」は、ユーザ識別子で識別されるユーザの端末装置1で、現在、表示されているキャラクタに関する情報を取得する関数である。また、「delete($ユーザ識別子,$キャラクタ)」は、ユーザ識別子で識別されるユーザの端末装置1からキャラクタの表示を消去する(未表示にする)命令に対応するシナリオである。また、「put_char($端末識別子,ch)」は端末識別子で識別される端末装置1に、変数「ch」に格納されているキャラクタに関する情報を送信する命令に対応するシナリオである。また、「search($端末識別子,$人)」は、端末識別子で識別される端末装置1のユーザと「$人」の関係を有するユーザの端末識別子を検索する関数である。また、「put($位置情報,terminal)」は、terminalで特定される端末装置1に位置情報を送信するシナリオである。また、「start_up(navi())」は、端末装置1のナビゲーションシステムを起動するためのシナリオである。また、「set_destination($位置情報)」は、端末装置1のナビゲーションシステムにおいて、目的地を設定するシナリオである。また、「route_search($現在位置,$目的地)」は、現在地を始点、目的地を終点とする経路探索を行うシナリオである。また、「send_message()」は、引数内のメッセージを送信し、端末装置1で出力を促すシナリオである。なお、かかるシナリオ、関数は例であることは言うまでもない。
また、図9は、サーバ装置2のサーバドライバ管理部202が格納しているサーバドライバ管理表の一例である。ここでのサーバドライバ管理表は、ある一の端末装置1が具備しているドライバの情報を管理している。また、サーバドライバ管理表は、「ID」「端末識別子」「ドライバ識別子」を有するレコードを1以上格納している。「ID」は、レコードを識別する情報である。「端末識別子」は、端末装置を識別する情報である。また、「ドライバ識別子」は、ドライバを識別する情報である。つまり、サーバドライバ管理表は、1以上の端末装置1が保持しているドライバを管理している。
図10は、サーバ装置2のグループ情報格納部203に格納されているグループ情報管理表である。グループ情報管理表は、「グループID」「端末識別子」を有するレコードを1以上格納している。「グループID」は、グループを識別する情報である。「端末識別子」は、グループIDで特定されるグループに属する端末装置の識別子である。そして、属性値「端末識別子」は、2以上の端末識別子を有する。サーバ装置2がグループ情報管理表を用いる場合、端末要求を送信してきた端末装置と、同一のグループに存在する端末装置のみ、当該端末要求に基づいて、制御できない、とする。
図11は、サーバ装置2の履歴格納部204が格納している履歴管理表の一例である。履歴管理表は、「ID」「端末識別子」「要求履歴」「好感度」を有するレコードを1以上格納している。「要求履歴」は、端末識別子で識別される端末装置1から送信された1以上の端末要求の履歴を格納する。また、「好感度」は、要求履歴から構成される情報であり、キャラクタの、端末装置1のユーザに対する好感度である。例えば、閾値以上の回数、キャラクタの胸やお腹へタッチしたことを示す1以上の端末要求が受信された場合、端末要求処理部206は、対応する好感度の値を下げる。また、例えば、閾値以上の回数、キャラクタの頭や顔へタッチしたことを示す1以上の端末要求が受信された場合、端末要求処理部206は、対応する好感度の値を上げる。また、N分(Nは正の数値)以上、タッチを示す端末要求が受信されなかった場合、端末要求処理部206は、対応する好感度を初期値(例えば、「高」)に戻す。なお、好感度の「高」「中」「低」は、それぞれ、例えば、数値「1」「2」「3」に対応する。また、好感度を変更する処理は、例えば、端末要求処理部206が行う。
さらに、図12は、端末要求処理部206が保持している関連ユーザ管理表である。関連ユーザ管理表は、端末装置1を所有しているユーザに関係のある人を、その関係とともに管理する表である。図12は、「ID」「端末識別子1」「関係」「端末識別子2」を有するレコードを1以上格納している。「端末識別子1」は、端末識別子であり、第一のユーザが所有する端末の識別子である。「端末識別子2」は、端末識別子であり、第二のユーザが所有する端末の識別子である。「関係」は、第一のユーザと第二のユーザとの関係を示す情報である。関連ユーザ管理表の「ID=1」のレコードにおいて、端末識別子「101」のユーザのおばあちゃんが、端末識別子「103」のユーザである、ことを示す。
現在、端末装置1には、図13に示すように、「ID=1」に対応するキャラクタが表示されている。そして、かかる状況において、本実施の形態における情報システムの具体的な動作について、4つの例を挙げて説明する。
(具体例1)
具体例1は、端末装置1に入力された命令をサーバ装置2で解釈し、サーバ装置2から端末装置1のドライバを動作させる例である。さらに具体的には、端末装置1のユーザが、端末装置1から出力される音が小さいため、「ボリュームを3あげて」と指示し、サーバ装置2からの命令により、ボリュームが3、アップされる処理について説明する。
まず、端末装置識別子「101」で識別される端末装置1のユーザが、自分の端末装置1に向かって、「ボリュームを3あげて」を音声で指示した、とする。
次に、端末装置1の端末受付部104は、音声「ボリュームを3あげて」を受け付ける。次に、端末要求構成部105は、端末受付部104が受け付けていた音声が途切れたことを検知し、端末受付部104が受け付けた指示等を用いて、端末要求を構成すると判断する。
次に、端末要求構成部105は、音声「ボリュームを3あげて」を音声認識し、文字列「ボリュームを3あげて」を取得する。また、端末要求構成部105は、端末装置1が格納している端末識別子「101」を取得する。なお、端末識別子「101」が格納されている領域は問わない。また、端末要求構成部105は、端末装置1が保持しているGPS受信機が取得した位置情報(Xa,Ya)を取得する。なお、GPS受信機は、例えば、端末機能部101の一つである。また、端末要求構成部105は、図示しない時計や、外部の装置(例えば、NTPサーバ)から現在時刻「2012/10/27 10:38:51」取得する。そして、端末要求構成部105は、端末要求「101,(Xa,Ya),2012/10/27 10:38:51,"ボリュームを3あげて"」を構成する。なお、端末識別子「101」は静的な端末特有情報であり、位置情報や現在時刻は動的な端末特有情報である。また、文字列「ボリュームを3あげて」は指示内容情報に該当する。ただし、本端末要求は、指示対象のオブジェクト識別子を有さない。また、ここでの端末要求は「端末識別子,位置情報,現在時刻,指示内容情報」を有するが、この端末要求の構造は一例であることは言うまでもない。
次に、端末送信部106は、構成された端末要求を、サーバ装置2に送信する。
次に、サーバ装置2の受信部205は、端末装置1から端末要求「101,(Xa,Ya),2012/10/27 10:38:51,"ボリュームを3あげて"」を受信する。
次に、端末要求処理部206は、受信された端末要求から指示内容情報「ボリュームを3あげて」を取得する。
次に、端末要求処理部206は、指示内容情報「ボリュームを3あげて」を用いて、図8の対応情報管理表を検索する。そして、端末要求処理部206は、指示内容情報が、対応情報管理表の「ID=2」の端末要求「"ボリュームを"$数値"あげて"」にマッチする、と判断する。そして、端末要求処理部206は、対応情報管理表の「ID=2」のシナリオ元情報「volume_up($端末識別子,$数値)」を取得する。
次に、端末要求処理部206は、端末要求「"ボリュームを"$数値"あげて"」の中に、変数が存在することを検知し、サーバ装置2が行うべき処理が存在すると判断する。なお、このサーバ装置2が行うべき処理は、変数「$数値」を取得する処理である。
次に、端末要求処理部206は、指示内容情報「ボリュームを3あげて」と端末要求「"ボリュームを"$数値"あげて"」とを用いて、変数「$数値」に対応する「3」を、指示内容情報から取得する。
次に、シナリオ生成部207は、端末要求から端末識別子「101」を取得する。また、シナリオ生成部207は、端末要求処理部206が取得した変数「$数値」に対応する「3」を得る。
そして、シナリオ生成部207は、シナリオ元情報「volume_up($端末識別子,$数値)」と、端末識別子「101」、変数「$数値」に対応する「3」を用いて、シナリオ「volume_up(101,3)」を構成する。
次に、送信部208は、構成されたシナリオ「volume_up(101,3)」を端末装置1に送信する。なお、送信部208は、端末識別子「101」に対応する送信先の情報(例えば、IPアドレス)を保持しており、かかる送信先の情報を用いて、シナリオを端末装置1に送信する。
次に、履歴蓄積部209は、受信された端末要求「101,(Xa,Ya),2012/10/27 10:38:51,"ボリュームを3あげて"」の全部または一部を履歴格納部204に蓄積する。なお、履歴蓄積部209は、シナリオ「volume_up(101,3)」を履歴格納部204に蓄積しても良い。かかる場合、端末要求の一部とは、生成されたシナリオでも良い。
次に、端末装置1の端末受信部107は、サーバ装置2からシナリオ「volume_up(101,3)」を受信する。
次に、端末パーサ部108は、受信されたシナリオを解釈し、ドライバ識別子「音声再生」、およびデータ「volume_up 3」を取得する。なお、端末パーサ部108は、シナリオが有する関数名と、ドライバ識別子またはドライバに与える関数名との対応を保持している、とする。
そして、端末機能呼出部109は、ドライバ識別子「音声再生」で識別されるドライバに対して音量を「3」上げるように指示する。そして、以後、端末装置1から出力される音声は「3」アップされた音声となる。
以上、本具体例によれば、端末装置1とサーバ装置2とが通信しながら、端末装置1での処理が続けられ、かつ、端末装置1から送信された端末要求をサーバ装置2が解釈する。そして、サーバ装置2で少なくとも一部の処理を行い、サーバ装置2が処理結果と端末要求に対応するシナリオ元情報とを用いたシナリオを構成し、端末装置1に送信する。そして、端末装置1が、自信が具備するドライバの駆動を含むシナリオを解釈し、ドライバを動作させ、所望の処理を行う。
(具体例2)
具体例2は、端末装置1から送信された端末要求をサーバ装置2で解釈し、サーバ装置2から端末装置1のドライバを動作させる例である。そして、具体例2は、端末装置1のユーザの操作の履歴に基づいて、端末装置1において異なる動作を実現できる動作の例である。さらに具体的には、端末装置1のユーザが、端末装置1に表示されているキャラクタの胸を閾値以上タッチした場合に、端末装置1のユーザの好感度が下がり、好感度が高い場合と比較して、キャラクタの動作が異なる処理について説明する。
今、図11の履歴管理表によれば、端末識別子「101」のユーザに対するキャラクタ「ID=1」の好感度は「高」である。なお、好感度は「高」「中」「低」の3段階のいずれかで管理される、とする。また、図11の履歴管理表によれば、端末識別子「101」のユーザは、キャラクタ識別子「1」で識別されるキャラクタの胸を1回、顔を1回、タッチしていることが分かる。
また、シナリオ生成部207は、シナリオを生成するために、図14に示すキャラクタ管理表を保持している、とする。キャラクタ管理表は、「ID」「キャラクタID」「データ」を有する。「データ」は「画像」「音声」を有する。「ID」はレコードを識別する情報である。また、「キャラクタID」は、キャラクタ識別子である。また、「データ」は、端末装置1で出力されるデータであり、「画像」は通常、動画であるが、静止画でも良い。
また、ここでは、端末要求処理部206は、キャラクタの胸またはお腹に、3分以内に、3回以上タッチした場合に、好感度が一つ下がる、とする。
かかる状況において、端末装置1のユーザが、図13の画面上の「キャラクタID=1」のキャラクタの胸をタッチした、とする。なお、図13の画面はタッチパネルである。
次に、端末受付部104は、このユーザからキャラクタ「1」の胸へのタッチを示す座標情報を含む指示(例えば、point(xb,yb))を受け付ける。point(xb,yb)は、例えば、タッチパネルのドライバからの出力である。
次に、端末要求構成部105は、図7の端末オブジェクト管理表の「表示フラグ=1」に対応するキャラクタ識別子(オブジェクト識別子)「1」を取得する。
そして、端末要求構成部105は、指示(point(xb,yb))から、タッチされたと判断する。そして、端末要求構成部105は、座標情報(xb,yb)が、図7の端末オブジェクト管理表の「ID=1」のレコードが有する部分領域情報「(x101,y101)(x102,y102)・・・」で特定される領域内の点であることを検知する。そして、端末要求構成部105は、当該部分領域情報と対になる部分識別子「1」を取得する。
次に、端末要求構成部105は、受け付けた指示から部分識別子「1」が取得できたので、端末要求を構成すると判断する。なお、端末要求構成部105は、図7の端末オブジェクト管理表で管理されている部位識別子が取得できた場合に、端末要求を構成すると判断するとする。
次に、端末要求構成部105は、端末要求「touch(1,1)」を構成する。つまり、端末要求構成部105は、タッチされたとの判断から、「touch」を取得し、オブジェクト識別子「1」、部分識別子「1」から「touch」の引数(1,1)を得る。なお、端末要求構成部105は、ユーザがオブジェクトに対して行った操作の種類(タッチ(クリック)、ダブルクリック、ドラッグ等)に応じた関数名(端末要求を構成する情報の一例)を保持している、とする。
また、端末要求構成部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」を構成した、とする。
次に、端末送信部106は、構成された端末要求を、サーバ装置2に送信する。
次に、サーバ装置2の受信部205は、端末装置1から端末要求「touch(1,1),101,(Xc,Yc),2012/10/28 11:38:25」を受信する。
次に、端末要求処理部206は、受信部205が受信した端末要求を解釈し、「touch(1,1)」を取得する。そして、端末要求処理部206は、「touch(1,1)」が図8の対応情報管理表の「ID=3」のレコードにマッチする、と判断する。そして、端末要求処理部206は、「touch(1,1)」から「オブジェクト識別子=1」「部位識別子=1」を得る。なお、端末要求処理部206は、ここでは、「touch(1,1)」は2回目であるので、図11の履歴管理表の好感度「高」を変更しない。
次に、シナリオ生成部207は、「ID=3」のレコードのシナリオ元情報を対応情報管理表から取得する。そして、シナリオ生成部207は、取得したシナリオ元情報に従って、端末識別子「101」の好感度「高」を図11の履歴管理表から得る。そして、シナリオ生成部207は、シナリオ元情報を解釈し、当該シナリオ元情報が有する好感度「高」に対応する記述「show_char($オブジェクト識別子,ID=2)」を得る。次に、シナリオ生成部207は、「show_char($オブジェクト識別子,ID=2)」の変数「$オブジェクト識別子」に「1」を代入し、「show_char(1,2)」を得る。次に、シナリオ生成部207は、オブジェクト識別子「1」に対応し、「ID=2」のデータ(ID=2のレコードのデータ)を図14から取得する。このデータは、図14の「ID=2」のレコードの画像と、音声データ「もう、やだー」である。また、シナリオ生成部207は、画像に対応するドライバ識別子「キャラクタ」と、音声に対応するドライバ識別子「音声再生」とを取得する。そして、シナリオ生成部207は、シナリオ「(キャラクタ,「ID=2」のレコードの画像)、(音声再生,「ID=2」のレコードの音声)」を構成する。なお、show_charは、キャラクタを端末装置で出力するコマンドであり、画像に対応するドライバ識別子が「キャラクタ」であり、音声に対応するドライバ識別子が「音声再生」であることを示す情報を、シナリオ生成部207は、保持している、とする。
次に、送信部208は、構成されたシナリオを端末装置1に送信する。また、次に、履歴蓄積部209は、受信された端末要求の全部または一部を履歴格納部204に蓄積する。ここでは、履歴蓄積部209は、端末要求の一部と考えられる「(1,1,タッチ)」を履歴格納部204に蓄積する。
次に、端末装置1の端末受信部107は、サーバ装置2からシナリオ「(キャラクタ,「ID=2」のレコードの画像)、(音声再生,「ID=2」のレコードの音声)」を受信する。
次に、端末パーサ部108は、受信されたシナリオを解釈し、ドライバ識別子「キャラクタ」と「ID=2」のレコードの画像、およびドライバ識別子「音声再生」と音声「もう、やだー」を取得する。なお、端末パーサ部108は、各ドライバ識別子に対応するドライバ呼出関数を保持している。
次に、端末機能呼出部109は、ドライバ呼出関数を用いて、ドライバ識別子「キャラクタ」に対応するドライバに対して、「ID=2」のレコードの画像を与え、当該ドライバを起動する。また、端末機能呼出部109は、同様に、ドライバ識別子「音声再生」に対応するドライバに対して、音声「もう、やだー」を与え、当該ドライバを起動する。その結果、図13のキャラクタ表示が図15のように変わり、音声「もう、やだー」が出力される。なお、図15のキャラクタは、胸を触られているが、好感度が「高」なので、笑っている画像である。
次に、上記と同様に、端末装置1のユーザが、図13の画面上の「キャラクタID=1」のキャラクタの胸をタッチした、とする。
すると、上記と同様に、端末要求構成部105は、送信する端末要求「touch(1,1),101,(Xd,Yd),2012/10/28 11:38:48」を構成した、とする。
次に、端末送信部106は、構成された端末要求を、サーバ装置2に送信する。
次に、サーバ装置2の受信部205は、端末装置1から端末要求を受信する。そして、端末要求処理部206は、受信部205が受信した端末要求を、上記と同様に解釈する。そして、「touch(1,1)」は3回目であるので、端末要求処理部206は、図11の履歴管理表の好感度「高」から「中」に変更する。
次に、シナリオ生成部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から取得する。このデータは、図14の「ID=3」のレコードの画像と、音声データ「やらしいわね」である。また、シナリオ生成部207は、画像に対応するドライバ識別子「キャラクタ」と、音声に対応するドライバ識別子「音声再生」とを取得する。そして、シナリオ生成部207は、シナリオ「(キャラクタ,「ID=3」のレコードの画像)、(音声再生,「ID=3」のレコードの音声)」を構成する。
次に、送信部208は、構成されたシナリオを端末装置1に送信する。また、次に、履歴蓄積部209は、受信された端末要求の全部または一部を履歴格納部204に蓄積する。ここでは、履歴蓄積部209は、端末要求の一部と考えられる「(1,1,タッチ)」を履歴格納部204に蓄積する。
次に、端末装置1の端末受信部107は、サーバ装置2からシナリオ「(キャラクタ,「ID=3」のレコードの画像)、(音声再生,「ID=3」のレコードの音声)」を受信する。
次に、端末パーサ部108は、受信されたシナリオを解釈し、ドライバ識別子「キャラクタ」と「ID=3」のレコードの画像、およびドライバ識別子「音声再生」と音声「やらしいわね」を取得する。
次に、端末機能呼出部109は、ドライバ識別子「キャラクタ」に対応するドライバに対して、「ID=3」のレコードの画像を与え、当該ドライバを起動する。また、端末機能呼出部109は、ドライバ識別子「音声再生」に対応するドライバに対して、音声「やらしいわね」を与え、当該ドライバを起動する。その結果、図15のキャラクタ表示が図16のように変わり、音声「やらしいわね」が出力される。なお、図16のキャラクタは、胸を触られているが、好感度が「中」なので、胸を隠している画像である。
以上、本具体例によれば、端末装置1とサーバ装置2とが通信しながら、端末装置1での処理が続けられる情報システムにおいて、端末装置1のユーザの操作の履歴に基づいて、端末装置1において異なる動作を実現できる。
(具体例3)
具体例3は、端末装置1から送信された端末要求をサーバ装置2で解釈し、端末要求を送信した端末装置1以外の端末装置のドライバをサーバ装置2から送信するシナリオにより動作させる例である。さらに具体的には、具体例3は、一の端末装置におけるユーザ操作に基づいて、他の端末装置を操作できる動作の例である。
まず、端末装置識別子「101」で識別される端末装置1のユーザが、自分の端末装置1に向かって、「おばあちゃんを連れてきて」を音声で指示した、とする。
次に、端末装置1の端末受付部104は、音声「おばあちゃんを連れてきて」を受け付ける。次に、端末要求構成部105は、端末受付部104が受け付けていた音声が途切れたことを検知し、端末受付部104が受け付けた指示等を用いて、端末要求を構成すると判断する。
次に、端末要求構成部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,"おばあちゃんを連れてきて"」を構成する。
次に、端末送信部106は、構成された端末要求を、サーバ装置2に送信する。
次に、サーバ装置2の受信部205は、端末装置1から端末要求「101,(Xe,Ye),2012/10/28 13:59:53,"おばあちゃんを連れてきて"」を受信する。
次に、端末要求処理部206、シナリオ生成部207は、受信部205が受信した端末要求を、以下のように解釈する。次に、端末要求処理部206は、受信された端末要求から指示内容情報「おばあちゃんを連れてきて」を取得する。
次に、シナリオ生成部207は、指示内容情報「おばあちゃんを連れてきて」を用いて、図8の対応情報管理表を検索する。そして、シナリオ生成部207は、指示内容情報が、対応情報管理表の「ID=5」の端末要求「$人.*"連れてきて"」にマッチする、と判断する。そして、シナリオ生成部207は、対応情報管理表の「ID=5」のシナリオ元情報を取得する。
次に、シナリオ生成部207は、端末要求「$人.*"連れてきて"」の中に、変数が存在することを検知し、サーバ装置2が行うべき処理が存在すると判断する。なお、このサーバ装置2が行うべき第一の処理は、変数「$人」を取得する処理である。
次に、シナリオ生成部207は、指示内容情報「おばあちゃんを連れてきて」と端末要求「$人.*"連れてきて"」を用いて、変数「$人」に対応する「おばあちゃん」を、指示内容情報から取得する。なお、ここで、「おばあちゃん」を取得する方法は問わない。例えば、シナリオ生成部207は、「おばあちゃんを連れてきて」を形態素解析し、単語「おばあちゃん」を取得し、変数「$人」に対応すると判断する。
次に、シナリオ生成部207は、対応情報管理表の「ID=5」のシナリオ元情報を解釈する。つまり、シナリオ生成部207は、シナリオ元情報の「terminal=search($端末識別子,$人)」の変数「$端末識別子」「人」に、「101」「おばあちゃん」を代入する。そして、シナリオ生成部207は、「terminal=search(101,おばあちゃん)」を実行する。つまり、シナリオ生成部207は、図12の関連ユーザ管理表の「端末識別子1=101」かつ「関係=おばあちゃん」に合致するレコードから、端末識別子2「103」を取得する。つまり、「terminal=search(101,おばあちゃん)」の「terminal」が「103」である、として取得された。
次に、シナリオ生成部207は、シナリオ元情報を解釈し、「terminal!=NULL」に合致すると判断する。そして、シナリオ生成部207は、図8の「ID=5」のレコードから、「terminal!=NULL」に対応するシナリオ元情報を取得する。このシナリオ元情報は、「put($位置情報,terminal);start_up(navi());set_destination($位置情報);route_search($現在位置,$目的地);」である。
次に、シナリオ生成部207は、「put($位置情報,terminal)」に「位置情報=(Xe,Ye)」「terminal=103」を代入し、「put((Xe,Ye),103)」を構成する。
次に、送信部208は、端末識別子「101」とおばあちゃんの端末装置の端末識別子「103」とが、グループ情報格納部203でグループとして管理されているか否かをチェックする。ここで、図10のグループ情報管理表によれば、「101」と「103」とはグループとして管理されている。従って、送信部208は、おばあちゃんの端末装置1に、「put((Xe,Ye),103)」等のコマンドを送信しても良い、と判断する。そして、送信部208は、「103」の端末装置1に、「put((Xe,Ye),103)」を送信する。「put((Xe,Ye),103)」は、端末装置1の位置情報(Xe,Ye)を通知するコマンドである。
そして、おばあちゃんの端末装置1は、端末装置1の位置情報(Xe,Ye)を受信し、一時蓄積する。なお、まず、おばあちゃんの端末装置1に、案内を行う処理を実施しても良いか否かを問い合わせる情報を出力し、おばあちゃんの端末装置1から「許可」を示す情報を受信した場合にも、以下に説明する案内を行う処理を進めることは好適である。
次に、送信部208は、コマンド「start_up(navi)();」を、「103」の端末装置1に送信する。
次に、おばあちゃんの端末装置1は、コマンド「start_up(navi());」を受信し、当該コマンドに従い、navi()を起動する。つまり、おばあちゃんの端末装置1では、ナビゲーションシステム(端末機能部の一つ)が起動される。なお、おばあちゃんの端末装置1は、シナリオ「start_up(navi());」はナビゲーションシステムを起動することを示す情報が格納されている、とする。
次に、送信部208は、コマンド「set_destination($位置情報);」を、「103」の端末装置に送信する。
次に、おばあちゃんの端末装置1は、コマンド「set_destination($位置情報);」を受信し、当該コマンドに従い、位置情報(Xe,Ye)を目的地として、ナビゲーションシステムに設定する。なお、おばあちゃんの端末装置1は、シナリオ「set_destination($位置情報);」は、ナビゲーションシステムの目的地に、「$位置情報」を設定することを示す情報が格納されている、とする。
次に、送信部208は、コマンド「route_search($現在位置,$目的地);」を、「103」の端末装置1に送信する。
次に、おばあちゃんの端末装置1は、コマンド「route_search($現在位置,$目的地);」の変数「$現在位置」におばあちゃんの端末装置の現在位置を代入する。また、おばあちゃんの端末装置1は、変数「$目的地」に位置情報(Xe,Ye)を代入する。なお、おばあちゃんの端末装置1はGPS受信機等の位置情報を取得する機能を有し、当該機能を用いて、「$現在位置」を取得できる、とする。
そして、おばあちゃんの端末装置1は、コマンド「route_search((Xf,Yf),(Xe,Ye));」を実行し、ナビゲーションのための経路探索を行う。そして、経路案内がおばあちゃんの端末装置1で行われる、とする。なお、経路案内における目的地は、「おばあちゃんを連れてきて」と音声入力したユーザが居る位置である。なお、おばあちゃんの端末装置1は、シナリオ「route_search((Xf,Yf),(Xe,Ye));」は、ナビゲーションシステムを用いて、2つの地点間の経路案内を行うことを示す情報が格納されている、とする。
本具体例によれば、一の端末装置1におけるユーザ操作に基づいて、他の端末装置1を操作できる。また、本具体例によれば、一の端末装置におけるユーザ操作に基づいて、グループ管理された他の端末装置1のみ操作ができる。
(具体例4)
具体例4は、オブジェクトが端末間を移動できる情報システムである。さらに具体的には、端末装置1のユーザが、端末装置1に存在しているキャラクタを、別の端末装置(ここでは、街角に設置されている端末装置(端末「T」))に移動させる場合について説明する。なお、端末装置1のユーザは、ユーザ識別子「A」で識別されるユーザである、とする。
ユーザ「A」が、自身が所有する端末装置1を家に置いてきた。そして、当該ユーザ「A」が街に出かけ、端末「T」の前に居る、とする。
また、現在、当該ユーザの端末装置1(端末識別子「101」)に、キャラクタ識別子「1」のキャラクタが存在し、かかること(ユーザ識別子:A,端末識別子:101,キャラクタ識別子:1)が、サーバ装置2のシナリオ生成部207が保持している、とする。
かかる状況において、ユーザ「A」は、端末「T」にユーザ識別子「A」と、音声「ここに移動して」とを入力した、とする。
次に、端末「T」の端末受付部104は、ユーザ識別子「A」および音声「ここに移動して」を受け付ける。次に、端末要求構成部105は、受け付けたデータを用いて、端末要求を構成すると判断する。
次に、端末「T」の端末要求構成部105は、ユーザ識別子「A」、音声「ここに移動して」、端末「T」の端末識別子「501」を用いて、端末要求(501,A,"ここに移動して")を構成する。なお、端末要求構成部105は、音声認識機能を有し、音声「ここに移動して」を文字列「ここに移動して」に変換した、とする。なお、端末「T」は、端末識別子「501」を予め保持している、とする。
次に、端末「T」の端末送信部106は、構成された端末要求(501,A,"ここに移動して")を、サーバ装置2に送信する。
次に、サーバ装置2の受信部205は、端末装置1から端末要求(501,A,"ここに移動して")を受信する。
次に、端末要求処理部206は、受信部205が受信した端末要求を解釈する。そして、端末要求処理部206は、端末要求の解釈結果を用いて、サーバ装置2が行うべき処理が存在すると判断する。つまり、端末要求処理部206は、"ここに移動して"を用いて、図8の表の「ID=4」のレコードに合致する、と判断する。そして、端末要求処理部206は、「ID=4」のレコードのシナリオ元情報「ch=get_char($ユーザ識別子,$キャラクタ); delete($ユーザ識別子,$キャラクタ); put_char($端末識別子,ch)」を得る。そして、得たシナリオ元情報の中に変数を含むので、端末要求処理部206は、サーバ装置2が行うべき処理が存在すると判断する。
次に、端末要求処理部206は、「$ユーザ識別子」に対応する「A」を端末要求から取得する。また、端末要求処理部206は、「$キャラクタ」に対応する「ID=1」のキャラクタの情報を取得する。(ユーザ識別子:A,端末識別子:101,キャラクタ識別子:1)から、端末要求処理部206は、ユーザ識別子「A」に対応するキャラクタ識別子は「1」であると取得できる。また、端末要求処理部206は、「$端末識別子」に対応する「501」を端末要求から取得する。
次に、シナリオ生成部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」を取得する。なお、キャラクタの情報は、キャラクタの画像を含む。
そして、送信部208は、端末識別子「101」で識別される端末装置1に、「delete(A,1);」を送信する。そして、端末識別子「101」で識別される端末装置1の端末受信部107は、シナリオ「delete(A,1);」を受信し、端末パーサ部108は当該シナリオを解釈する。そして、端末機能呼出部109は、ディスプレイから「ID=1」のキャラクタを削除する。
次に、シナリオ生成部207は、「put_char($端末識別子,ch)」の変数に値を代入し、「put_char(501,ch)」を得る。なお、変数「ch」には、キャラクタの情報が代入されている、とする。
次に、送信部208は、「put_char(501,ch)」を端末識別子「501」で識別される端末「T」に送信する。
次に、端末「T」の端末受信部107は「put_char(501,ch)」を受信する。そして、端末パーサ部108は、「put_char(501,ch)」を解釈する。そして、端末「T」の端末機能呼出部109は、キャラクタのドライバに変数「ch」のデータ(キャラクタのデータ)を渡し、キャラクタのドライバを起動させる。そして、端末「T」のディスプレイには、キャラクタが表示される。
以上、本具体例によれば、端末間のオブジェクトが移動できる。
以上、本実施の形態によれば、ドライバにより駆動される1以上のハードウェアを具備し、かつ情報処理能力が十分でない端末装置において、1以上のハードウェアを有効に利用しつつ、複雑な情報処理が行える。
なお、本実施の形態において、端末装置1から送信された端末要求を、サーバ装置2が解釈して、シナリオを端末装置1に返す、という処理を行っている。ただし、サーバ装置2は、端末装置1から端末要求を受信しない場合にでも、予め決められた条件を満たす場合、端末装置1にシナリオを送信しても良い。予め決められた条件とは、例えば、予め決められた時刻になったこと、サーバ装置2の状態が予め決められた条件を満たすこと等である。サーバ装置2の状態が予め決められた条件を満たすこととは、例えば、CPU負荷が閾値以下であること、サーバ装置2が起動していること等である。
また、本実施の形態において、例えば、サーバ装置2が、ダウンした場合、サーバ装置2がダウンから復帰するまで、サーバ装置2からの復帰した旨の情報の受信まで端末装置1は待機状態となり、端末装置1が本来持つ機能が動作する。また、かかる場合、通常、端末装置1は現在の状態を保持(退避)している。なお、端末装置1が本来持つ機能とは、例えば、OSがユーザからの指示等を受け付ける状態である。また、サーバ装置2から復帰した旨の情報を受信した場合、端末装置1は、退避した状態を呼び出し、サーバ装置2とのやりとりを再開する。
また、端末装置1で処理を行っている場合、通常、サーバ装置2と常時通信を行っている。そのため、サーバ装置2が、例えば、ダウンした場合、端末装置1の処理は停止しても良い。
また、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD−ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における端末装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記憶媒体に、前記1以上の端末機能部のドライバを識別する1以上のドライバ識別子を格納しており、コンピュータを、ユーザからの1以上の指示を受け付ける端末受付部と、前記1以上の指示に対応する要求である端末要求を構成する端末要求構成部と、前記端末要求を前記サーバ装置に送信する端末送信部と、前記端末要求の送信に対応して、前記サーバ装置からコマンドとデータとを有するシナリオを受信する端末受信部と、前記シナリオを解釈し、前記1以上のドライバ識別子、および当該1以上のドライバ識別子で識別される1以上の機能部に渡すデータであり、前記シナリオが有するデータを取得する端末パーサ部と、前記端末パーサ部が取得した前記1以上のドライバ識別子で識別される1以上の端末機能部に、前記端末パーサ部が取得したデータを渡し、前記1以上の端末機能部を呼び出す端末機能呼出部として機能させるためのプログラムである。
また、上記プログラムにおいて、1以上のオブジェクトを格納し得る端末オブジェクト格納部と、前記1以上のオブジェクトを出力する端末オブジェクト出力部とをさらに具備し、前記シナリオは、オブジェクトの動作を示すコマンドである動作コマンドを有し、前記端末パーサ部は、前記シナリオを解釈し、当該シナリオから動作コマンドを取得し、前記端末オブジェクト出力部は、前記動作コマンドに従って、当該動作コマンドに対応するオブジェクトを動作させることは好適である。
また、本実施の形態におけるサーバ装置2を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記憶媒体に、端末要求を構成する情報とシナリオを構成する元になる情報であるシナリオ元情報との対応を示す1以上の対応情報を格納し得る対応情報格納部と、コンピュータを、端末装置から端末要求を受信する受信部と、前記受信部が受信した端末要求を解釈し、当該端末要求に対応するシナリオ元情報を、前記記憶媒体から取得し、かつ、前記受信部が受信した端末要求に対応する処理を行う端末要求処理部と、前記端末要求処理部が取得したシナリオ元情報と、前記端末要求処理部が処理を行って得た処理結果とを用いて、シナリオを生成するシナリオ生成部と、前記シナリオ生成部が生成したシナリオを端末装置に送信する送信部として機能させるためのプログラムである。
また、上記プログラムにおいて、端末要求の一部または全部である要求履歴を格納し得る履歴格納部と、前記受信部が受信した端末要求の一部または全部である要求履歴を前記履歴格納部に蓄積する履歴蓄積部とをさらに具備し、前記シナリオ生成部は、前記受信部が受信した端末要求、および前記履歴格納部に格納されている要求履歴を用いてシナリオを生成するプログラムであることは好適である。
また、上記プログラムにおいて、前記端末装置が具備している端末機能部のドライバを識別する1以上のドライバ識別子を格納し得るサーバドライバ管理部をさらに具備し、前記シナリオ生成部は、前記サーバドライバ管理部に格納されている1以上のドライバ識別子に応じて、生成するシナリオが異なるものとして、コンピュータを機能させることは好適である。
また、上記プログラムにおいて、前記要求履歴を統計処理し、統計処理結果を取得する統計処理結果取得部と、前記統計処理結果を出力する統計処理結果出力部とをさらに具備するものとして、コンピュータを機能させることは好適である。
また、上記プログラムにおいて、前記シナリオ生成部が生成するシナリオは、前記端末装置以外の端末装置である他端末装置に対するコマンドを含み、前記送信部は、前記他端末装置に、前記コマンドを送信するものとして、コンピュータを機能させることは好適である。
また、上記プログラムにおいて、2以上の端末装置のグループを特定する情報であり、2以上の各端末装置を識別する2以上の端末装置識別子を有するグループ情報を格納し得るグループ情報格納部をさらに具備し、前記送信部は、前記グループ情報が有する2以上のいずれかの端末装置識別子にも対応しない端末装置にはコマンドを送信しないものとして、コンピュータを機能させることは好適である。
また、図17は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態の情報システムを実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図17は、このコンピュータシステム300の概観図であり、図18は、システム300のブロック図である。
図17において、コンピュータシステム300は、CD−ROMドライブを含むコンピュータ301と、キーボード302と、マウス303と、モニタ304と、マイク305と、スピーカー306とを含む。
図18において、コンピュータ301は、CD−ROMドライブ3012に加えて、MPU3013と、バス3014と、ROM3015と、RAM3016と、ハードディスク3017とを含む。なお、バス3014は、MPU3013やCD−ROMドライブ3012に接続されている。また、ROM3015には、ブートアッププログラム等のプログラムが記憶されている。また、RAM3016は、MPU3013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのものである。また、ハードディスク3017は、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのものである。ここでは、図示しないが、コンピュータ301は、さらに、LANへの接続を提供するネットワークカードを含んでも良い。
コンピュータシステム300に、上述した実施の形態の情報システムの機能を実行させるプログラムは、CD−ROM3101に記憶されて、CD−ROMドライブ3012に挿入され、さらにハードディスク3017に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ301に送信され、ハードディスク3017に記憶されても良い。プログラムは実行の際にRAM3016にロードされる。プログラムは、CD−ROM3101またはネットワークから直接、ロードされても良い。
プログラムは、コンピュータ301に、上述した実施の形態の情報システムの機能を実行させるオペレーティングシステム、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム300がどのように動作するかは周知であり、詳細な説明は省略する。
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、上記各実施の形態において、一の装置に存在する2以上の通信手段(端末情報送信部、端末情報受信部など)は、物理的に一の媒体で実現されても良いことは言うまでもない。
また、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。