(57)【要約】  サーバ装置（１０１）は、ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成部（２０１）と、ユーザが実行しようとするタスクを複数保持し、コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、選択したタスクの実行を制御するタスク管理部（２０２）と、選択したタスクの実行に用いる機器（１０２，１０３）が実行するサービスを確認し、タスク管理部（２０２）が選択したタスクの実行に対応するサービスを機器（１０２，１０３）に通知し、実行させるサービス管理部（２０３）と、を備える。タスク管理部（２０２）は、タスクの選択ルールとして、タスクの優先度、およびタスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択する。
2012131962.tif 000002
【特許請求の範囲】
【請求項１】
ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成部と、
ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理部と、
前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理部が選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理部と、を備え、
前記タスク管理部は、
前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択することを特徴とするタスク実行制御装置。
【請求項２】
前記タスク管理部は、
前記コンテキスト情報と、前記タスクの選択ルールを参照し、複数の前記タスクについて、実行のスケジューリング、および割り込み制御をおこなうタスクスケジューラを有することを特徴とする請求項１に記載のタスク実行制御装置。
【請求項３】
前記タスク管理部は、
前記タスクの実行にあわせて所定のタイミングで前記コンテキスト情報を受信するための制御命令を保持するコンテキスト取得制御情報保存部と、
ユーザが実行すべき複数のタスクを保持する登録タスク保存部と、
前記タスクの選択ルールを保持するタスク選択ルール保存部と、
前記コンテキスト情報と、前記タスクの選択ルールに基づき、前記登録タスク保存部に保持された複数のタスクのうち、最優先で実行すべきタスクを選択するタスク選択部と、
を備えたことを特徴とする請求項１に記載のタスク実行制御装置。
【請求項４】
前記サービス管理部は、
前記機器が実行するサービスを一時的に保持しておく利用可能サービスキャッシュと、
前記機器が現在利用可能なサービスを確認する利用可能サービス確認部と、
前記タスクと前記サービスとの対応関係を保持するタスク・サービス対応関係保存部と、
前記タスク・サービス対応関係保存部に保持された前記サービスのうち、前記利用可能サービス確認部により現在利用可能なサービスについて、前記タスク管理部が選択した前記タスクを前記機器により実行可能かを確認するタスク・サービス確認部と、
を備えたことを特徴とする請求項１に記載のタスク実行制御装置。
【請求項５】
前記サービス管理部は、
前記タスクを実行するために前記機器を制御するソフトウェアであるタスクコントローラを保持するタスクコントローラ保存部と、
前記タスク管理部が選択した前記タスクに対応する実行用のタスクコントローラを前記機器に送信するタスクコントローラ管理部と、
を備えたことを特徴とする請求項１に記載のタスク実行制御装置。
【請求項６】
前記サービス管理部は、
前記機器が前記機器の周辺に存在する他の機器が実行可能なサービスを発見した際の通知に基づき、当該サービスの情報を前記利用可能サービスキャッシュに保持することを特徴とする請求項４に記載のタスク実行制御装置。
【請求項７】
前記サービス管理部は、
前記機器と、当該機器が実行可能なサービスの定義を保持し、前記機器により発見した他の機器が実行可能なサービスを参照可能とするデバイス・サービス定義情報保存部を有することを特徴とする請求項４に記載のタスク実行制御装置。
【請求項８】
前記機器に搭載された計測用のセンサ、および前記サービスの情報を集約し、前記コンテキスト生成部における前記コンテキスト情報に用いる情報として通知するセンサ・端末情報集約部を備えたことを特徴とする請求項１に記載のタスク実行制御装置。
【請求項９】
前記タスクスケジューラは、
タスクの実行条件が満たされたが、当該タスクの実行に対応するサービスが発見できないために未実行となったタスクに関して、周期的に優先度の高いものから順に、前記コンテキスト生成部に対するタスクの実行条件が満たされている確認要求と、前記サービス管理部に対する、タスクの実行可否判定を要求して、最も優先度の高いタスクからの実行を待つことを特徴とする請求項２に記載のタスク実行制御装置。
【請求項１０】
前記タスクスケジューラは、
前記コンテキスト生成部の前記コンテキスト情報と、現在タスクの実行条件の確認に基づき、実行条件が満たされていない前記タスクが存在した場合には、前記コンテキスト生成部に対して当該タスクの実行条件を再設定し、当該タスクを再度実行可能な状態にすることを特徴とする請求項２に記載のタスク実行制御装置。
【請求項１１】
前記タスクスケジューラは、
前記機器から当該端末の停止要求を受信すると、当該端末へのタスクの起動／中断／再開制御を停止することを特徴とする請求項２に記載のタスク実行制御装置。
【請求項１２】
サーバ装置と、機器とを備えたタスク実行制御システムにおいて、
前記サーバ装置は、
ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成部と、
ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理部と、
前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理部が選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理部と、を備え、
前記タスク管理部は、前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択し、
前記機器は、
自機器および周辺に存在する他の機器のサービスを発見して、当該サービス情報を前記サーバ装置に通知し、当該サーバ装置からの命令もしくはプログラムにしたがって前記機器による前記サービスの制御をおこなう周辺機器連携部を備えたことを特徴とするタスク実行制御システム。
【請求項１３】
前記機器は、
前記サーバ装置と情報をやりとりする端末と、
前記端末を介して前記サービスを実行する周辺機器と、を備え、
前記周辺機器は、
存在と機器情報を前記端末に通知する応答・広告部と、
前記端末からの制御情報にしたがい、前記サービスを実行する被制御部とを有し、
前記コンテキスト情報に基づき、前記サービスに対応する前記周辺機器を用いることを特徴とする請求項１２に記載のタスク実行制御システム。
【請求項１４】
ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成工程と、
ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理工程と、
前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理工程により選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理工程と、を含み、
前記タスク管理工程は、
前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択することを特徴とするタスク実行制御方法。
【請求項１５】
前記タスク管理工程は、
前記コンテキスト情報と、前記タスクの選択ルールを参照し、複数の前記タスクについて、実行のスケジューリング、および割り込み制御をおこなうことを特徴とする請求項１４に記載のタスク実行制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザの状況に応じてタスクを実行するタスク実行制御装置、タスク実行制御システムおよびタスク実行制御方法に関する。
【背景技術】
【０００２】
センシングデバイス技術の発達により、ユーザの位置やユーザの周辺の環境情報などが容易に計測できるようになってきている。これらの計測データから、さまざまなコンテキストを取得することができ、このコンテキストを用いることにより、ユーザに対するタスクの実行を支援することができるようになってきている。このコンテキストとは、人やものの状況を示す情報であり、たとえば、ユーザＡのコンテキストとしては、現在位置のオフィス名、時刻等の情報である。また、タスクとは、ユーザ、ユーザの端末、もしくはユーザの周辺の機器がおこなうべき作業であり、たとえば、ユーザが部屋に入ったときに「部屋の照明をつける」、ユーザが印刷をおこなうとき、ユーザの「文章を近くのプリンタで印刷する」などがタスクである。【０００３】
コンテキストを用いたタスク実行支援に関連する従来技術としては、コンテンツ配信ネットワークに関して、ユーザのコンテキスト情報（ユーザの位置情報やネットワーク使用状況、作業状況）に基づいて、ユーザのアクセスポイント近傍のストレージに、ユーザの希望するコンテンツを移動し、負荷分散を実施するものがある（たとえば、下記特許文献１参照。）。また、ユーザのコンテキスト情報（通話相手の状態）を端末に表示するプレゼンスサービスにおいて、自身のコンテキストに応じて適切なプレゼンス情報提供アプリケーションを実行するものがある（たとえば、下記特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３４８４９５号公報
【特許文献２】特開２００８−２８２０６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、タスクを実行するための周辺機器が提供するサービスの確認をおこなうことができず、周辺機器が提供するサービスによって適切なタスクを選択することができない。上記のサービスとは、周辺機器が提供する粒度の小さい機能であり、たとえば、ＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）におけるサービスであり、具体的には、プリンタがおこなう印刷サービス等がある。【０００６】
また、従来技術は、単一のタスク実行のみを考慮したシステムであるため、複数のタスクがある場合に、ユーザのコンテキストを考慮した順でタスクを選択実行することができず、ユーザが所望するサービスを効率的に実行することができなかった。ユーザが所望するサービスは、複数のタスクの組み合わせのサービスであったり、ユーザが移動しながら移動先毎に異なるサービスを受けることなどが想定できるが、これを支援することができなかった。【０００７】
開示のタスク実行制御装置、タスク実行制御システムおよびタスク実行制御方法は、上述した問題点を解消するものであり、ユーザの状況に応じてユーザが所望するタスクを効率的に実行できることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、開示技術は、ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成部と、ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理部と、前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理部が選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理部と、を含み、前記タスク管理部は、前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択する。
【発明の効果】
【０００９】
開示のタスク実行制御装置、タスク実行制御システムおよびタスク実行制御方法によれば、ユーザの状況に応じてユーザが所望するタスクを効率的に実行できるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態にかかるタスク実行制御システムの概要構成を示す図である。
【図２】図２は、実施の形態１にかかるタスク実行制御システムの詳細構成を示す図である。
【図３】図３は、情報収集機能を説明するブロック図である。
【図４】図４は、コンテキスト生成部の処理を説明する図である。
【図５】図５は、コンテキスト生成部の処理を示すフローチャートである。
【図６】図６は、タスク管理部の処理を説明する図である。
【図７】図７は、タスク管理部の処理を示すフローチャートである。
【図８】図８は、サービス管理部の処理を説明する図である。
【図９】図９は、サービス管理部の処理を示すフローチャートである。
【図１０】図１０は、周辺機器連携部の処理を説明する図である。
【図１１】図１１は、周辺機器連携部のサービス検索処理を示すフローチャートである。
【図１２】図１２は、周辺機器連携部のタスクコントローラに関する処理を示すフローチャートである。
【図１３】図１３は、周辺機器の処理を説明する図である。
【図１４−１】図１４−１は、タスクの具体例を示す図表である。
【図１４−２】図１４−２は、タスクの依存関係を説明する図である。
【図１５】図１５は、端末あるいは周辺機器から収集したデータの一例を示す図表である。
【図１６】図１６は、生成されるコンテキスト情報の例を示す図表である。
【図１７】図１７は、コンテキスト取得制御情報の例を示す図表である。
【図１８】図１８は、タスク選択ルールの例を示す図表である。
【図１９】図１９は、タスク・サービス対応関係の例を示す図表である。
【図２０】図２０は、デバイス・サービス定義情報の例を示す図表である。
【図２１−１】図２１−１は、タスク選択ルールの例を示す図表である。
【図２１−２】図２１−２は、タスクの依存関係を説明する図である。
【図２２】図２２は、タスク・サービス対応関係の例を示す図表である。
【図２３】図２３は、コンテキスト取得制御情報の例を示す図表である。
【図２４】図２４は、登録タスクの追加情報の例を示す図表である。
【図２５】図２５は、タスクの実行手順を示すシーケンス図である。
【図２６】図２６は、実施の形態２にかかるタスク実行制御システムの構成を示す図である。
【図２７】図２７は、タスク管理部の処理を示すフローチャートである。
【図２８】図２８は、タスク管理部におけるタスク終了時、および端末停止時の処理を示すフローチャートである。
【図２９−１】図２９−１は、タスク管理部における実行待機のタスクのサービス確認の処理を示すフローチャートである（その１）。
【図２９−２】図２９−２は、タスク管理部における実行待機のタスクのサービス確認の処理を示すフローチャートである（その２）。
【図３０】図３０は、端末がおこなう処理を示すフローチャートである。
【図３１−１】図３１−１は、タスク実行の処理手順を示すシーケンス図である（その１）。
【図３１−２】図３１−２は、タスク実行の処理手順を示すシーケンス図である（その２）。
【図３１−３】図３１−３は、タスク実行の処理手順を示すシーケンス図である（その３）。
【図３１−４】図３１−４は、タスク実行の処理手順を示すシーケンス図である（その４）。
【図３２】図３２は、コンテキスト情報の例を示す図表である。
【図３３】図３３は、タスク管理情報の例を示す図表である。
【図３４】図３４は、タスク管理情報の例を示す図表である。
【図３５】図３５は、タスクコントローラ管理情報の例を示す図表である。
【図３６】図３６は、タスク・サービス対応情報の例を示す図表である。
【図３７】図３７は、タスクスケジューラが管理するタスク実行管理情報を示す図表である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。
【００１２】
開示の技術は、ユーザのタスク実行を制御する。たとえば、タスク実行制御を統括するタスク実行制御装置は、以下の制御処理をおこなう。
１．ユーザのコンテキストを生成する。
２．タスク管理機能は、ユーザのコンテキストに基づき、実行すべきタスクを選択する。各タスクには、選択ルール（優先度やタスクフローを示すタスク間同士の実行に関する依存関係）を設定しておく。
３．サービス管理機能は、最終的な出力デバイス（端末や周辺機器等）が有する利用可能サービス情報に基づき、タスクの実行可否を判断する。
４．周辺機器制御機能により、端末で実行するアプリケーションや、周辺機器を制御し、周辺機器でタスクを実行し、ユーザのコンテキストに対応したサービスを提供する。
【００１３】
（タスク実行制御システムの全体構成図）
図１は、実施の形態にかかるタスク実行制御システムの概要構成を示す図である。タスク実行制御システム１００は、サーバ装置１０１と、複数の端末１０２と、複数の周辺機器（被制御機器）１０３と、を含む。これらサーバ装置１０１と、端末１０２と、周辺機器１０３とは、互いに情報通信ネットワーク１０４によって接続され、各種情報の交換をおこなう。情報通信ネットワークは有線ネットワークでも無線ネットワークでもよい。
【００１４】
サーバ装置１０１は、複数の端末１０２、および複数の周辺機器１０３と通信が可能なコンピュータであり、コンテキスト生成、タスク管理、サービス管理等の機能を有する。サーバ装置１０１内の各機能は、ＲＯＭ、ＲＡＭ等に格納されたソフトウェアをＣＰＵにより実行することにより実現できる。これに限らず、ハードウェアにより実現することもできる。
【００１５】
端末１０２は、ユーザが所有する、情報通信部とコンピュータ処理部と、を含む装置であり、たとえば、パーソナル・コンピュータやノートパーソナル・コンピュータなどのＰＣ、携帯電話、ＰＤＡ、スマートフォンなどからなる。端末１０２には、位置を計測するＧＰＳや加速度を検出する加速度センサなどの端末内蔵センサ１１２を備えてもよく、端末内蔵センサ１１２が計測した情報を集約し、サーバ装置１０１へ送ることにより、サーバ装置１０１におけるコンテキスト生成の情報として用いることができる。１つの端末１０２は、情報通信ネットワーク１０４を通じて複数の周辺機器１０３と通信をおこなうことが可能である。端末１０２内の各機能は、ＲＯＭ、ＲＡＭ等に格納されたソフトウェアをＣＰＵにより実行することにより実現できる。これに限らず、ハードウェアにより実現することもできる。
【００１６】
周辺機器１０３は、情報通信部と、情報通信ネットワーク１０４からの情報により周辺機器１０３が有する各種機能を動作させることが可能な被制御部１１３を具備し、たとえば、コンピュータやプリンタ、プロジェクタ、テレビ、照明などからなる。周辺機器１０３についても、ＧＰＳや加速度センサなどの機器内蔵センサ１１４を具備していてもよい。機器内蔵センサ１１４が計測した情報を集約してサーバ装置１０１へ送ることにより、サーバ装置１０１におけるコンテキスト生成の情報として用いることができる。また、ユーザが所有する端末１０２についても、周辺機器１０３として用いることができる。
【００１７】
（実施の形態１）
図２は、実施の形態１にかかるタスク実行制御システムの詳細構成を示す図である。以下、タスク実行制御システム１００のサーバ装置１０１と、端末１０２と、周辺機器１０３の内部機能について説明する。
【００１８】
（サーバ装置）
サーバ装置１０１は、コンテキスト生成部２０１と、タスク管理部２０２と、サービス管理部２０３と、センサ・端末情報集約部２０４と、を含む。
【００１９】
コンテキスト生成部２０１は、ユーザやその周囲の状況（コンテキスト）を判断し、ユーザやその周囲の状況の情報（コンテキスト）を生成する。コンテキストは、たとえば、場所や時間、ユーザの行為、身体の状態、能力、ユーザの周辺の環境などである。また、スケジュールや実施すべき仕事の情報など、ユーザが従事する業務に関連する情報なども含まれる。生成したコンテキスト情報は、タスク管理部２０２に出力される。
【００２０】
タスク管理部２０２は、タスク情報を保持し、ユーザのコンテキストや周辺機器１０３の情報にしたがってタスク実行を制御する。タスク管理部２０２は、コンテキスト取得制御情報保存部２１１と、登録タスク保存部２１２と、タスク選択ルール保存部２１３と、タスク選択部２１４と、を含む。
【００２１】
コンテキスト取得制御情報保存部２１１は、コンテキストの粒度やコンテキストの取得タイミングをコンテキスト取得制御情報としてコンテキスト生成部２０１に通知する。登録タスク保存部２１２は、ユーザが登録するタスクの一覧を格納する。タスク選択ルール保存部２１３は、タスクの優先順位や業務フローに基づいて、どのような順番でタスクを実行するかを設定する。タスク選択部２１４は、コンテキスト生成部２０１から通知されたコンテキスト情報を元に、登録タスク保存部２１２からタスク選択ルールに基づいて実行タスクを選択し、タスクスケジューラ２１４ａによってタスク実行のスケジューリングをおこなう。
【００２２】
タスク選択ルールは、タスク毎にタスクＩＤを付して、各タスク毎に、コンテキスト条件と、各タスクの優先度（優先順位）と、各タスクが有する他のタスクに対する依存状態を示す依存タスク情報（依存タスクＩＤ）等を関連付けたテーブル形式とされている。タスクＩＤは、個々のタスクを識別するためのＩＤである。コンテキスト条件は、コンテキスト生成部２０１からの情報と照合する条件であり、条件に一致しているときに、該当するタスクを実行する。優先度は、実行可能なタスクが複数存在する場合に、優先度が高いタスクから順に実行するために設定される。依存タスクＩＤは、このタスクを実行する際に、終了していなければならない他のタスクのＩＤである。
【００２３】
サービス管理部２０３は、周辺機器１０３の利用可能なサービスを確認してタスク管理部２０２に通知し、タスク管理部２０２が選択したタスクを実行するために、必要なサービスを利用するための命令、もしくはプログラムを端末１０２に通知する。サービス管理部２０３は、タスク・サービス対応関係保存部２２１、利用可能サービスキャッシュ２２２、利用可能サービス確認部２２３、タスク・サービス確認部２２４、タスクコントローラ保存部２２５、タスクコントローラ管理部２２６、デバイス・サービス定義情報保存部２２７と、を含む。
【００２４】
タスク・サービス対応関係保存部２２１は、各タスクを実行するために必要なサービスの対応関係情報を格納する。テーブル参照により、タスクとサービスとの関連付けを得ることができる。利用可能サービスキャッシュ２２２は、端末１０２から通知された、端末１０２周辺の周辺機器１０３において利用可能なサービスを一時的に格納する。利用可能サービス確認部２２３は、タスクを実行するためのサービスが存在するかを利用可能サービスキャッシュ２２２を参照して確認し、該当サービスが存在しなければ端末１０２へ検索要求をおこなう。
【００２５】
タスク・サービス確認部２２４は、タスク管理部２０２から通知されたタスクが実行可能であるかを確認するため、タスク・サービス対応関係保存部２２１からタスクに対応するサービス情報を取得し、利用可能サービス確認部２２３から得られたサービス情報と照合する。タスクコントローラ保存部２２５は、タスクを実行するためのタスクコントローラを格納する。このタスクコントローラは、タスクを実行するためのサービスを制御するソフトウェアである。１つのタスクコントローラは、複数のサービスを制御することもできる。
【００２６】
タスクコントローラ管理部２２６は、タスクが実行可能であれば、タスクコントローラ保存部２２５から対応するタスクコントローラを取得し、端末１０２へ送信する。デバイス・サービス定義情報保存部２２７は、周辺機器１０３のデバイス・サービス定義を格納し、端末１０２に通知する。ここで、デバイス・サービス定義とは、周辺機器１０３がどのような種類のもので、周辺機器１０３の被制御部１１３がどのようなサービスを提供可能か記述したデータ、もしくはサービスを記録したファイルであり、たとえば、ＵＰｎＰにおけるデバイス定義、サービス定義を記述したＸＭＬファイルからなる。
【００２７】
センサ・端末情報集約部２０４は、端末１０２もしくは周辺機器１０３から通知されたセンサ情報、あるいは利用可能サービス確認部２２３から通知された周辺機器１０３の利用可能サービスの情報に基づきデータ集約をおこない、コンテキスト生成のための情報としてコンテキスト生成部２０１へ通知する。
【００２８】
（端末）
端末１０２は、端末内蔵センサ１１２と、周辺機器連携部２３１と、センサ・端末情報集約部２３２と、を含む。周辺機器連携部２３１は、端末１０２の周辺に存在する周辺機器１０３のサービスを発見してサーバ装置１０１に通知し、サーバ装置１０１からの命令、もしくはプログラムにしたがって周辺機器１０３の制御をおこなう。周辺機器連携部２３１は、サービス発見・通知部２３３と、タスクコントローラ実行部２３４と、を含む。
【００２９】
サービス発見・通知部２３３は、端末１０２の周辺の周辺機器１０３のサービスを発見し、サーバ装置１０１へ通知する。サービスの発見は、たとえば、ＵＰｎＰにおけるＭ−ＳＥＡＲＣＨを用いる。タスクコントローラ実行部２３４は、サーバ装置１０１から通知されたタスクコントローラをダウンロードし、周辺機器１０３の制御、およびアプリケーション２３５の実行を統括する。センサ・端末情報集約部２３２は、端末１０２の周辺の周辺機器１０３の機器内蔵センサ１１４のセンサ情報からデータを収集して集約をおこない、サーバ装置１０１へ通知する。
【００３０】
（周辺機器）
周辺機器１０３は、被制御部１１３と、機器内蔵センサ１１４と、応答・広告部２４１と、を含む。応答・広告部２４１は、周辺機器１０３の周辺の端末１０２からの機器検索メッセージに対して応答をおこない、定期的に自身の存在や機器情報を端末１０２に広告する。被制御部１１３は、端末１０２からの制御命令にしたがい、周辺機器１０３が有する機能を制御する。
【００３１】
（サーバ装置の処理内容）
（センサ・端末情報集約部の処理について）
つぎに、上記構成における情報収集処理について説明する。図３は、情報収集機能を説明するブロック図である。図３を用いて、サーバ装置１０１および端末１０２に設けられるセンサ・端末情報集約部２０４，２３２におけるセンサ情報収集の処理を説明する。
【００３２】
端末１０２のセンサ・端末情報集約部２３２により集約されたセンサ情報は、サーバ装置１０１のセンサ・端末情報集約部２０４に収集され、端末１０２内のセンサ・端末情報集約部２３２と同様の処理をおこなう。端末１０２で集約されたセンサ情報は、サーバ装置１０１内のセンサ・端末情報集約部２０４に直接通知せず、別の端末１０２内のセンサ・端末情報集約部２３２によりセンサ情報を集約してからサーバ装置１０１へ集約した情報を送信することも可能である。また、周辺機器１０３内の機器内蔵センサ１１４で計測されたデータは、端末１０２のセンサ・端末情報集約部２３２に通知せず、直接、サーバ装置１０１内のセンサ・端末情報集約部２０４に通知することもできる。
【００３３】
端末１０２のセンサ・端末情報集約部２３２は、サーバ装置１０１へのセンサ情報転送にかかるトラフィック量の削減、および、データ処理量の削減のために、計測データを集約することができる。データの集約例は、たとえば、センサ・端末情報集約部２３２は、時刻１０：００：００に計測したデータと、時刻１０：００：０５に計測したデータの平均値をとる。そして、センサ・端末情報集約部２３２は、１０：００：００と１０：００：０５のデータを、算出した値により新たに１０：００：００のデータに置き換える。これにより、２つのデータを１つのデータとして集約し、データサイズを小さくし、サーバ装置１０１に転送する。
【００３４】
（コンテキスト生成部の処理について）
図４は、コンテキスト生成部の処理を説明する図である。サーバ装置１０１のコンテキスト生成部２０１におけるコンテキストの生成と、タスク管理部２０２へのコンテキスト情報通知について説明する。コンテキスト生成部２０１は、センサ・端末情報集約部２０４からセンサ情報と、周辺機器１０３の情報を取得する。また、コンテキスト取得制御情報保存部２１１からコンテキスト取得制御情報を取得する。そして、これらセンサ情報と、周辺機器１０３の情報と、コンテキスト取得制御情報とに基づき、コンテキストを生成し、タスク選択部２１４に送る。
【００３５】
図５は、コンテキスト生成部の処理を示すフローチャートである。コンテキスト生成部２０１は、はじめに、センサ・端末情報集約部２０４からセンサ情報や周辺機器１０３の情報を取得する（ステップＳ５０１）。つぎに、取得した情報を元に、コンテキストの生成をおこなう（ステップＳ５０２）。つぎに、タスク管理部２０２よりコンテキスト取得制御情報を受信済みであるか判断し（ステップＳ５０３）、受信済みであれば（ステップＳ５０３：Ｙｅｓ）、現在、コンテキスト制御情報のコンテキスト取得タイミングであるかを判断する（ステップＳ５０４）。コンテキスト取得タイミングであれば（ステップＳ５０４：Ｙｅｓ）、コンテキストをコンテキスト取得制御情報に基づき加工（抽象化もしくは具体化）し（ステップＳ５０５）、タスク管理部２０２へコンテキスト情報を通知する（ステップＳ５０６）。
【００３６】
一方、現在、タスク管理部２０２のコンテキスト取得タイミングでなければ（ステップＳ５０４：Ｎｏ）、処理を終了し、次回のコンテキスト取得タイミング時に再度ステップＳ５０１以降の処理を実行する。
【００３７】
また、ステップＳ５０３の判断の結果、タスク管理部２０２よりコンテキスト取得制御情報を受信済みでなければ（ステップＳ５０３：Ｎｏ）、タスク管理部２０２よりコンテキスト取得制御情報を受信する（ステップＳ５０７）。そして、ステップＳ５０４以降の処理を実行する。
【００３８】
（タスク管理部の処理について）
図６は、タスク管理部の処理を説明する図である。タスク管理部２０２がおこなうタスクの選択と、サービス管理部２０３へのタスク情報の通知の処理について説明する。タスク選択部２１４は、コンテキスト情報と、タスク選択ルール保存部２１３に保存されたタスク選択ルール（優先度や依存タスクＩＤ等の情報を含む）に基づき、登録タスク保存部２１２より実行するタスクを選択する。そして、タスク選択部２１４は、タスク管理部２０２（タスク・サービス確認部２２４）の情報により実行可能なタスクが１つ以上存在する場合、選択したタスクのうち、最も優先順位が高いタスクの情報をサービス管理部２０３へ送信する。
【００３９】
サーバ装置１０１（タスク管理部２０２）には、管理者端末１０２ａが接続され、コンテキスト取得制御情報をコンテキスト取得制御情報保存部２１１に保存する。また、タスク情報を登録タスク保存部２１２に保存する。また、タスクの優先度（優先順位）や、依存タスク（依存タスクＩＤ）の情報をタスク選択ルール保存部２１３に保存する。
【００４０】
図７は、タスク管理部の処理を示すフローチャートである。タスク管理部２０２のタスク選択部２１４が実行する処理について説明する。はじめに、タスク選択部２１４は、コンテキスト情報をコンテキスト生成部２０１から取得するまで待機し（ステップＳ７０１）、コンテキスト情報をコンテキスト生成部２０１から取得する（ステップＳ７０２）。
【００４１】
つぎに、タスク選択部２１４は、タスク選択ルールのテーブルに、受信したコンテキスト情報と一致するデータが存在するか判断する（ステップＳ７０３）。タスク選択部２１４は、一致するデータが存在すれば（ステップＳ７０３：Ｙｅｓ）、この一致するデータのうち、依存タスクＩＤのタスクが終了しているものが存在するか判断する（ステップＳ７０４）。
【００４２】
そして、タスク選択部２１４は、依存タスクＩＤのタスクが終了しているものが存在すれば（ステップＳ７０４：Ｙｅｓ）、依存タスクＩＤのタスクが終了しているタスクを選択し、そのうち、最も優先順位が高いタスクの情報をサービス管理部２０３へ送信する（ステップＳ７０５）。一方、タスク選択部２１４は、ステップＳ７０３において、受信したコンテキスト情報と一致するデータが存在しない場合（ステップＳ７０３：Ｎｏ）、およびステップＳ７０４において、依存タスクＩＤのタスクが終了しているものが存在しない場合（ステップＳ７０４：Ｎｏ）には、今回のタスク選択の処理を終了する。
【００４３】
タスク選択部２１４は、ステップＳ７０５の処理後、サービス管理部２０３よりタスク実行不可メッセージを受信したか判断する（ステップＳ７０６）。タスク実行不可メッセージを受信した場合には（ステップＳ７０６：Ｙｅｓ）、タスク選択部２１４は、登録タスク保存部２１２のタスク情報のうち実行不可タスクを除いたものの中から、コンテキスト情報とタスク選択ルールに基づき、実行するタスクを再度選択し（ステップＳ７０７）、ステップＳ７０３に戻る。一方、サービス管理部２０３よりタスク実行不可メッセージを受信しなかった場合は（ステップＳ７０６：Ｎｏ）、今回のタスク選択の処理を終了する。
【００４４】
（サービス管理部について）
図８は、サービス管理部の処理を説明する図である。サービス管理部２０３におけるサービスの確認と、タスクコントローラの送信の処理について説明する。タスク・サービス確認部２２４は、タスク管理部２０２（タスク選択部２１４）から通知されたタスクの情報を得る。また、タスク・サービス対応関係保存部２２１からタスクに対応するサービス情報を取得し、利用可能サービス確認部２２３からサービス情報を得る。これらの情報により、タスク・サービス確認部２２４は、通知されたタスクが実行可能であるかサービス情報と照合する。
【００４５】
タスクコントローラ管理部２２６では、タスク・サービス確認部２２４から実行可能なタスク情報（実行タスク情報）を得て、タスクコントローラ保存部２２５から対応するタスクコントローラを取得し、端末１０２へ送信する。デバイス・サービス定義情報保存部２２７では、周辺機器１０３のデバイス・サービス定義を格納しており、端末１０２により、端末１０２が発見した周辺機器１０３のサービスをデバイス・サービス定義情報保存部２２７を参照して通知を得る。利用可能サービスキャッシュ２２２は、端末１０２からの機器サービス情報を格納し、利用可能サービス確認部２２３により利用サービスの確認時に参照される。利用可能サービスキャッシュ２２２に格納された機器サービス情報は、一定時間後に削除される。
【００４６】
サーバ装置１０１（サービス管理部２０３）には、管理者端末１０２ａが接続され、タスクと、サービスの関連付けの情報をタスク・サービス対応関係保存部２２１に保存する。また、タスクコントローラをタスクコントローラ保存部２２５に保存する。また、デバイス・サービス定義をデバイス・サービス定義情報保存部２２７に保存する。
【００４７】
図９は、サービス管理部の処理を示すフローチャートである。サービス管理部２０３が実行する処理について説明する。はじめに、タスク・サービス確認部２２４は、タスク情報をタスク管理部２０２から取得するまで待機し（ステップＳ９０１）、タスク情報をタスク管理部２０２から取得する（ステップＳ９０２）。つぎに、タスク・サービス確認部２２４は、タスク・サービス対応関係保存部２２１より、このタスクを実行するためのサービスを取得する（ステップＳ９０３）。
【００４８】
つぎに、タスク・サービス確認部２２４は、利用可能サービス確認部２２３を介して、利用可能サービスキャッシュ２２２に、このサービス情報が存在するか確認する（ステップＳ９０４）。サービス情報が存在する場合には（ステップＳ９０４：Ｙｅｓ）、タスクコントローラ管理部２２６は、タスクコントローラ保存部２２５よりこのタスクを実行するためのタスクコントローラを取得し（ステップＳ９０５）、このタスクコントローラを端末１０２へ送信し（ステップＳ９０６）、１つのタスクの処理を終了する。
【００４９】
ステップＳ９０４において、利用可能サービスキャッシュに、サービス情報が存在しない場合には（ステップＳ９０４：Ｎｏ）、端末１０２に対して利用可能サービス確認部２２３が周辺機器１０３のサービス検索要求を一定回数以上おこなったかを確認し（ステップＳ９０７）、一定回数以上おこなった場合には（ステップＳ９０７：Ｙｅｓ）、タスク・サービス確認部２２４は、タスク実行不可メッセージをタスク管理部２０２へ通知し（ステップＳ９０８）、１回の処理を終了する。
【００５０】
一方、ステップＳ９０７において、利用可能サービス確認部２２３が端末１０２に対して周辺機器１０３のサービス検索要求を一定回数以上行っていない場合には（ステップＳ９０７：Ｎｏ）、利用可能サービス確認部２２３は、端末１０２へ周辺機器１０３のサービス検索要求を通知し（ステップＳ９０９）、一定期間後に利用可能サービスキャッシュ２２２をチェックする（ステップＳ９１０）。この後、ステップＳ９０４に戻る。
【００５１】
（端末の処理内容）
（周辺機器連携部の処理について）
図１０は、周辺機器連携部の処理を説明する図である。端末１０２の周辺機器連携部２３１がおこなうサービス検索、および、タスクコントローラによる機器の制御について説明する。サービス・発見通知部２３３は、サーバ装置１０１のサービス管理部２０３（利用可能サービス確認部２２３）からの周辺機器１０３のサービス検索要求に対応し、周辺機器１０３の検索をおこなう。そして、周辺機器１０３からの応答により、デバイス・サービス定義情報保存部２２７からこの周辺機器１０３のサービスを取得し、サービス管理部２０３の利用可能サービスキャッシュ２２２と、センサ・端末情報集約部２３２にこの周辺機器１０３のサービスを通知する。
【００５２】
タスクコントローラ実行部２３４は、サーバ装置１０１のサービス管理部２０３（タスクコントローラ管理部２２６）から受信したタスクコントローラにしたがって、アプリケーション２３５および周辺機器１０３を制御する。
【００５３】
図１１は、周辺機器連携部のサービス検索処理を示すフローチャートである。周辺機器連携部２３１のサービス発見・通知部２３３がおこなうサービス検索処理について説明する。サービス発見・通知部２３３は、サーバ装置１０１のサービス管理部２０３（利用可能サービス確認部２２３）から周辺機器１０３のサービス検索要求を受信するまで待機し（ステップＳ１１０１）、サービス管理部２０３から周辺機器１０３のサービス検索要求を受信すると（ステップＳ１１０２）、サービス発見・通知部２３３は、周辺機器１０３の検索をおこなう（ステップＳ１１０３）。
【００５４】
つぎに、サービス発見・通知部２３３は、周辺機器１０３からの検索の応答を受信すると（ステップＳ１１０４）、周辺機器１０３からの検索の応答にしたがい、デバイス・サービス定義情報保存部２２７よりこの周辺機器１０３のサービスを取得する（ステップＳ１１０５）。そして、サービス発見・通知部２３３は、サービス管理部２０３の利用可能サービスキャッシュ２２２にこのサービスを通知し（ステップＳ１１０６）、また、センサ・端末情報集約部２３２にこのサービスを通知し（ステップＳ１１０７）、１回の処理を終了する。
【００５５】
図１２は、周辺機器連携部のタスクコントローラに関する処理を示すフローチャートである。周辺機器連携部２３１のタスクコントローラ実行部２３４がおこなうタスクコントローラの受信から実行にかかる処理を説明する。はじめに、タスクコントローラ実行部２３４は、サーバ装置１０１のサービス管理部２０３（タスクコントローラ管理部２２６）からタスクコントローラを受信するまで待機し（ステップＳ１２０１）、サービス管理部２０３からタスクコントローラを受信すると（ステップＳ１２０２）、受信したタスクコントローラにしたがい、アプリケーション２３５および周辺機器１０３を制御し（ステップＳ１２０３）、１回の処理を終了する。
【００５６】
（周辺機器の処理内容）
図１３は、周辺機器の処理を説明する図である。応答・広告部２４１は、端末１０２の周辺機器連携部２３１（サービス発見・通知部２３３）からの機器検索メッセージがあると、周辺機器１０３の存在や機器情報を応答する。被制御部１１３は、端末１０２の周辺機器連携部２３１（タスクコントローラ実行部２３４）からの制御命令にしたがい、周辺機器１０３が有する機能を実行制御する。機器内蔵センサ１１４は、センサ計測情報を端末１０２のセンサ・端末情報集約部２３２またはサーバ装置１０１のセンサ・端末情報集約部２０４に送る。
【００５７】
（タスク実行の具体的処理例）
（１．周辺機器との連携をおこなう例）
つぎに、タスク実行の具体的処理例について説明する。はじめに、周辺機器１０３によるタスクとして調理支援をおこなう例について説明する。
【００５８】
タスクは、料理の過程における個々の材料を準備・調理する作業であり、事前に登録した依存関係にしたがって自動的に調理をおこなう。そして、各周辺機器１０３（調理機器）は、端末１０２から操作可能である。調理機器には、機器内蔵センサ１１４として、温度センサやタイマが搭載されている。
【００５９】
図１４−１は、タスクの具体例を示す図表である。登録タスク保存部２１２に保存されるハンバーグ調理にかかるタスクの情報１４００を示す。タスクの情報１４００は、タスクＩＤと、ユーザと、タスクからなる。タスクＩＤとしてＴ１〜Ｔ６が設定され、タスクＩＤがＴ１のタスクは「材料用意」であり、ユーザは「Ａさん」であり、以下順に調理のタスクであり、タスクＩＤがＴ６のタスクは「材料を焼く」であり、ユーザは「Ａさん」である。タスクＴ１〜Ｔ６は、周辺機器１０３である調理機器を端末１０２経由で制御する。また、タスクＴ１では端末１０２の図示しない表示部に、「材料用意」を指示する情報を表示しユーザに伝える。
【００６０】
図１４−２は、タスクの依存関係を説明する図である。調理開始は、タスクＴ１から実行し、タスクＴ２とタスクＴ４は、依存関係が分岐しており同時に実行できるが、タスクＴ１の終了後に実行される依存関係にある。また、タスクＴ３は、タスクＴ２の実行後に実行される依存関係にある。また、タスクＴ５は、タスクＴ３と、タスクＴ４の終了後に実行される依存関係にある。タスクＴ６は、タスクＴ５の実行後に実行される依存関係にある。
【００６１】
すなわち、タスクＴ３の「玉葱炒め」と、タスクＴ４の「肉をひいてミンチに」という２つのタスクを終了していないと、タスクＴ５の「材料をまぜて成形」というタスクは調理上、実行できない。このようなタスク依存関係は、後述するタスク選択ルールとしてタスク選択ルール保存部２１３に保存される。なお、図中のＰ１，Ｐ２は優先度である。
【００６２】
図１５は、端末あるいは周辺機器から収集したデータの一例を示す図表である。端末１０２の端末内蔵センサ１１２、もしくは周辺機器１０３の機器内蔵センサ１１４から通知される計測データの例を示す。図１５に例示した計測データ１５００は、周辺機器１０３としての調理器具（コンロ、鍋、フライパンなど）の温度センサを機器内蔵センサ１１４として用いる。端末１０２のセンサ・端末情報集約部２３２は、温度センサの値を計測し、コンテキスト情報生成に使用する。
【００６３】
図１５に示す例では、時刻「１０：００：００」にセンサＩＤ１のセンサの温度が「２００．４℃」であり、この後、時刻「１０：００：０１」にセンサＩＤ１のセンサの温度が「２００．６℃」であることを示している。
【００６４】
図１６は、生成されるコンテキスト情報の例を示す図表である。図１６のコンテキスト情報１６００では、調理器具が高温か低温かという情報をコンテキストとして使用する。このコンテキスト情報１６００は、具体的には、コンテキスト生成部２０１は、ユーザのＡさんについて、設定した時刻「１０：００：１５」における場所として厨房にいることを検出し、これらを対応付けたコンテキスト情報を生成する。さらに詳細な場所として、コンロ１の温度が１８０℃以上、コンロ２の温度が２００℃以上であることを検出している。図示のようにコンテキスト生成部２０１は、複数のユーザのコンテキスト情報を生成する。
【００６５】
図１７は、コンテキスト取得制御情報の例を示す図表である。コンテキスト取得制御情報１７００は、コンテキスト取得制御情報保存部２１１に保存され、コンテキストの粒度やコンテキストの取得タイミング等からなる。このコンテキスト取得制御情報１７００の例を説明すると、ユーザのＡさんについて、取得コンテキストが「温度」であり、取得タイミングが「条件一致時」、条件が「コンロ１の温度が１８０℃以上」である。コンテキスト生成部２０１は、調理器具が上記の温度に達したら、タスク管理部２０２に対し、コンテキストとして温度情報を通知する。
【００６６】
図１８は、タスク選択ルールの例を示す図表である。タスク選択ルール保存部２１３に保存されるタスク選択ルール１８００について説明する。タスク選択ルール１８００は、上述した登録タスクについてのコンテキスト条件と、優先度と、依存タスクＩＤとからなる。たとえば、タスクＴ２のコンテキスト条件は「Ｔ１終了」、優先度は「Ｐ２」、依存タスクＩＤは「Ｔ１」である。優先度はＰ１＜Ｐ２である。
【００６７】
図１９は、タスク・サービス対応関係の例を示す図表である。タスク・サービス対応関係保存部２２１に保存されるタスク・サービス対応関係情報１９００について説明する。タスク・サービス対応関係情報１９００は、各タスクを実行するために必要な周辺機器１０３（調理機器）のサービスを対応付けたものである。たとえば、タスクＴ２のサービスは「野菜カッターサービス」であり、登録タスク（図１４−１参照）のタスクＴ２「玉葱みじん切り」に対応するサービスである。
【００６８】
図２０は、デバイス・サービス定義情報の例を示す図表である。デバイス・サービス定義情報保存部２２７に保存されるデバイス・サービス定義情報２０００について説明する。デバイス・サービス定義情報２０００は、周辺機器１０３である調理機器が提供するサービスを対応付けたものである。たとえば、デバイス（被制御部１１３）として「野菜カッター」のサービスは「野菜カッターサービス」である。
【００６９】
つぎに、上述した各設定内容に基づく、タスク（調理）の実行手順について説明する。はじめに、タスク管理部２０２は、タスク選択ルール１８００により、コンテキスト条件ＮＵＬＬのタスクＴ１（材料用意）を選択し、実行する。この際、タスクＴ１に対応するサービスはＮＵＬＬであるが、ユーザの端末１０２にどの材料が必要かのメッセージを表示する。
【００７０】
そして、サービス管理部２０３は、端末１０２を介して周辺機器１０３が実行したタスクＴ１が終了したことをタスク管理部２０２に通知する。これにより、タスク管理部２０２は、タスクＴ１の終了がコンテキスト条件であり、かつ、優先度が高いＴ２（玉葱みじん切り）を選択し、実行する。タスクＴ２の実行においては、周辺機器１０３の「野菜カッター」が提供するサービス「野菜カッターサービス」を利用する。
【００７１】
この後、サービス管理部２０３がタスクＴ２が終了したことをタスク管理部２０２に通知すると、タスク管理部２０２は、コンテキスト条件「Ｔ２「終了」＆＆コンロ１．温度≧１８０℃」が成立している場合、優先度Ｐ２のタスクＴ３（玉葱炒め）を選択し、実行する。コンテキスト条件が成立していなければ、先にタスクＴ４「肉をひいてミンチに」を実行することが可能である。タスクＴ３の実行においては、周辺機器１０３「コンロ１」が提供する「機器温度調整サービス」および「タイマサービス」を利用する。
【００７２】
この後、タスク管理部２０２は、まだタスクＴ４（肉をひいてミンチに）が実行されていなければ、タスクＴ４を実行する。タスクＴ４の実行においては、周辺機器１０３の「ミンチ機」が提供する「精肉ミンチ機サービス」を利用する。
【００７３】
そして、サービス管理部２０３は、タスクＴ３およびＴ４が終了し、タスク管理部２０２に終了通知すると、タスク管理部２０２は、タスクＴ３とタスクＴ４の終了がコンテキスト条件であるタスクＴ５「材料を混ぜて成形」を実行する。タスクＴ５の実行においては、周辺機器１０３「ミキサー」が提供する「材料ミキサーサービス」を利用する。
【００７４】
この後、サービス管理部２０３は、タスクＴ５が終了したことをタスク管理部２０２に通知すると、タスク管理部２０２は、タスクＴ５の終了がコンテキスト条件であるタスクＴ６「材料を焼く」を選択し、実行する。タスクＴ６の実行においては、周辺機器１０３の「コンロ２」が提供する「機器温度調整サービス」および「タイマサービス」を利用する。
【００７５】
以上説明したように、周辺機器が有する調理にかかる複数の機能について、複数のタスクの実行順序を管理し、実行することにより、料理を手際よく効率的におこなうことができるようになる。また、タスク同士の依存関係とタスクに付した優先度により、調理の手順を間違うことなく、そのときに必要な調理操作を適切に実行できるようになる。
【００７６】
（２．周辺機器との連携をおこなわない例）
つぎに、周辺機器１０３を用いずに、作業者が端末１０２だけを用いて車の修理作業の支援をおこなう例について説明する。また、この例では、場所を問わないため、場所にかかるコンテキストを使用しない。そして、修理手順は、端末１０２の表示部のＷｅｂブラウザで表示される。
【００７７】
以下に説明する修理作業は複数の修理工程で構成され、各修理工程がタスクに対応する。作業者は、修理の遂行にあわせて順次表示される修理手順にしたがって修理作業をおこなっていく。たとえば、「場所Ａと、場所Ｂのネジを外して、パーツＣを取り外す」等である。また、この例では、タスクの依存関係は、各タスクが直列に配置され、分岐はない。
【００７８】
概要を説明すると、１．はじめにサーバ装置１０１が端末１０２に対し、作業手順を説明するコンテンツのＵＲＬを送信する。２．ＵＲＬを受け取った端末１０２は、ブラウザを起動すると共にブラウザにＵＲＬを通知する。３．端末１０２は、ブラウザが指定されたＵＲＬにアクセスし、作業手順を説明するコンテンツを表示する。４．作業者は、表示されたコンテンツにしたがって修理作業をおこなう。５．作業者は、１つの修理工程が完了すると、端末１０２のブラウザ上の「作業終了」ボタンを操作する。６．サーバ装置１０１は、端末１０２から作業終了の通知を受けて、つぎの修理工程を説明するコンテンツのＵＲＬを端末１０２に通知する。以降、一連の修理作業がすべて終了するまで、サーバ装置１０１は、端末１０２に対し、上記４．〜６．の処理を繰り返す。
【００７９】
つぎに、タスク依存関係について説明する。この車の修理作業であり、以下の前提を有するとする。修理作業は作業者Ａによって実行され、修理作業の開始時刻は１３：３０とする。修理作業は、各タスクＴ１，Ｔ２，Ｔ３の３つの修理工程（タスク）で実現され、これらのタスクは順番に実行されなければならない。オイル交換を例にとると、各タスクは、タスクＴ１「古いオイルの除去」、タスクＴ２「エンジン内部の洗浄」、タスクＴ３「新しいオイルの投入」となる。
【００８０】
図２１−１は、タスク選択ルールの例を示す図表である。タスク選択ルール保存部２１３に保存されるタスク選択ルール２１００は、たとえば、作業者Ａについて、タスクＴ２のコンテキスト条件は「Ｔ１終了」、優先度は「５」、依存タスクＩＤは「Ｔ１」である。優先度は値が高いほど優先度が高い。なお、図示の例では、優先度は同じとした。
【００８１】
図２１−２は、タスクの依存関係を説明する図である。修理開始は、タスクＴ１から実行し、タスクＴ１が終了後にタスクＴ２が実行される依存関係にある。また、タスクＴ３は、タスクＴ２の実行後に実行される依存関係にある。
【００８２】
図２２は、タスク・サービス対応関係の例を示す図表である。タスク・サービス対応関係保存部２２１に保存されるタスク・サービス対応関係情報２２００は、図示のように、この例では、タスクの実行にあたって周辺機器１０３が提供するサービスを利用しないため、タスク・サービス対応関係情報２２００にサービス情報は登録されない（ＮＵＬＬが登録される）。これに限らず、周辺機器１０３のサービスを利用しない場合には、タスク・サービス対応関係情報２２００に、タスクＴ１〜Ｔ３のタスクＩＤを登録しない設定としてもよい。タスク・サービス確認部２２４は、タスク・サービス対応関係情報２２００にタスクＩＤが未登録の場合は、周辺機器１０３利用サービスなし、と判断する。
【００８３】
図２３は、コンテキスト取得制御情報の例を示す図表である。コンテキスト取得制御情報２３００は、コンテキスト取得制御情報保存部２１１に保存され、コンテキストの粒度やコンテキストの取得タイミング等からなる。このコンテキスト取得制御情報２３００の例を説明すると、ユーザの作業者Ａについて、取得コンテキストが「時間」であり、取得タイミングが「条件一致時」、条件が「時刻１３：３０」である。コンテキスト生成部２０１は、時間が上記の時刻に達したら、タスク管理部２０２に対し、コンテキストとして時間情報を通知する。
【００８４】
図２４は、登録タスクの追加情報の例を示す図表である。この図２４を用いて、タスク追加情報について説明する。この例では、サーバ装置１０１が端末１０２に対してタスクの起動を要求する際、車の修理作業を説明するコンテンツのＵＲＬを端末１０２に通知する。登録タスク保存部２１２には、図２４に示すタスクの情報２４００として、タスクＩＤと、タスク毎の関連情報としてＵＲＬを格納する。
【００８５】
端末１０２に通知する追加情報（ＵＲＬ）については、以下のように管理する構成にできる。
１．コンテキスト生成部２０１で管理する。この場合、タスク管理部２０２は、コンテキスト生成部２０１から受信したタスク関連情報をそのまま端末１０２に送る。
２．コンテキスト生成部２０１からタスク起動要求を受信するアプリケーション２３５を定義し、このアプリケーション２３５が追加情報（ＵＲＬ）を管理する。この場合、アプリケーション２３５は、タスク関連情報を伴ったタスク起動要求をタスク管理部２０２に送信する。タスク管理部２０２は、アプリケーション２３５から受信したタスク関連情報をそのまま端末１０２に送る。
【００８６】
つぎに、上述した各設定内容に基づく、タスク（車の修理作業）の実行手順について説明する。はじめに、１．タスク管理部２０２は、タスクＴｘの起動が必要であることを認識すると、端末１０２に対してタスク起動要求メッセージを送信する。タスク起動要求メッセージには、起動すべきアプリケーション２３５として、一般的なＷｅｂブラウザ（端末１０２にあらかじめインストールしておく）と、ＷｅｂブラウザがアクセスすべきＵＲＬを含む。
２．つぎに、端末１０２は、タスク起動要求メッセージを受信すると、Ｗｅｂブラウザを起動すると共に、Ｗｅｂブラウザにサーバ装置１０１から通知されたＵＲＬを渡し、このＵＲＬにアクセスする。
【００８７】
３．上記手順２．の結果、ＵＲＬに対応するコンテンツを端末１０２の表示部に表示する。このコンテンツは、修理対象の車種に応じて、各タスクＴ１〜Ｔ３を実行するために必要な情報である。たとえば、修理対象車種のオイル交換手順（最初に箇所ＡのボルトＢを外す、等）を示すコンテンツを表示する。
４．作業者は、端末１０２に表示されたコンテンツを閲覧しながらタスクに対応した修理作業をおこない、１つのタスク（修理工程）を完了したとき、端末１０２の表示部に表示される「作業終了」ボタンを操作する。
【００８８】
５．ボタンの操作により、端末１０２は、タスクＴｘが終了した旨の通知をタスク管理部２０２に通知する。
６．タスク管理部２０２は、タスクＴｘが終了した旨をコンテキスト生成部２０１に通知する。これにより、コンテキスト生成部２０１は、作業者のコンテキストを更新する。これにより、作業者の状態が「タスクＴｘ終了」状態に遷移する。
７．コンテキストの更新に応じて、サーバ装置１０１は、タスク選択部２１４により新たなタスクの起動制御を開始する。以降、上記１．に戻り、つぎのタスクにかかる処理を実行する。
【００８９】
図２５は、タスクの実行手順を示すシーケンス図である。図２５に示したコンテンツ保持部２５００は、コンテキスト生成部２０１の一部に設け、ＵＲＬのコンテンツを保持する例とした。はじめに、サーバ装置１０１のコンテキスト生成部２０１が時刻「１３：３０」を検知し（ステップＳ２５０１）、タスク管理部２０２にコンテキスト情報通知する（ステップＳ２５０２）。このコンテキスト情報通知には、ユーザＩＤが作業者Ａであり、時刻が１３：３０であることを含む。つぎに、タスク管理部２０２は、コンテキスト情報通知を受けて、作業者Ａの端末１０２に対し、タスク起動要求をおこなう（ステップＳ２５０３）。このタスク起動要求は、アプリケーション２３５がブラウザ、ＵＲＬが図２４に示したタスクＴ１のＵＲＬ（ｈｔｔｐ：／／ｃａｒＡ＿ｏｉｌ１．ｈｔｍｌ）である。
【００９０】
端末１０２では、タスクコントローラ実行部２３４がタスク起動要求を受け、アプリケーション２３５であるブラウザに起動要求する（ステップＳ２５０４）。この起動要求には、タスクＴ１のＵＲＬ（ｈｔｔｐ：／／ｃａｒＡ＿ｏｉｌ１．ｈｔｍｌ）を含む。
【００９１】
端末１０２は、起動要求に基づき、サーバ装置１０１のコンテンツ保持部２５００に対し、コンテンツ表示のためのＨＴＴＰ要求をおこなう（ステップＳ２５０５）。ＨＴＴＰ要求は上記ＵＲＬアドレスを含み、コンテンツ保持部２５００は、ＨＴＴＰ応答を端末１０２のブラウザ２３５に返す（ステップＳ２５０６）。これにより、端末１０２では表示部上にＷｅｂ画面でタスクＴ１の修理工程の画面が表示され、タスクＴ１による１つの修理工程を表示部の表示画面を見ながら容易におこなえるようになる。
【００９２】
この後、作業者ＡがタスクＴ１の修理工程を完了したとき、端末１０２の表示部に表示される「作業終了」ボタンを操作すると（ステップＳ２５０７）、ブラウザ２３５は、タスク終了通知をサーバ装置１０１のタスク管理部２０２に送信する（ステップＳ２５０８）。このタスク終了通知には、ユーザＩＤが作業者Ａであり、コンテキストがタスクＴ１終了を含む。
【００９３】
タスク管理部２０２は、タスク終了通知を受けると、タスクＴ１の終了後に実行される依存関係にあるタスクＴ２を次に実行すべきタスクとして選択し、作業者Ａの端末１０２に対し、タスク起動要求をおこなう（ステップＳ２５０９）。以降、タスクＴ３についても上記同様の処理をおこなう。
【００９４】
以上説明した具体例によれば、周辺機器を用いたタスク実行に限らず、端末そのものを用いてタスク実行することもできるようになる。また、上述した車の修理について、複数のタスクの実行順序を管理し、実行することにより、修理を工程毎に手際よく効率的におこなうことができるようになる。また、端末の表示部の画面上には各修理工程毎に必要な情報を実際の画面を用いて表示することができるから、修理する際の場所や部品を間違うことがなく、各画面を切り替えていくだけで修理作業を終了させることができるようになる。
【００９５】
以上説明した実施の形態１によれば、ユーザやその周辺環境のコンテキストと、周辺機器が提供するサービスとに基づいて、優先順位やタスク間の依存関係を考慮して複数のタスクを順次実行することができる。これにより、ユーザの作業ミスや、作業効率の低下を抑えることができるようになる。また、コンテキスト処理と、タスク処理の切り分けを明確に区分しているため、コンテキスト処理のアルゴリズムの変更を容易におこなうことができ、タスク処理に影響を与えず、システムの開発を容易におこなうことができるようになる。
【００９６】
（実施の形態２）
実施の形態２は、新たなタスクの割り込みと、実行中のタスクの中断の処理をおこなう構成である。タスクの割り込みは、たとえば、あるユーザが定型的な仕事を実行していたときに、急に新たな仕事を処理しなければならないときなどに生じる。この実施の形態では、ユーザ単位で割り込み、および中断の処理をおこなう。
【００９７】
図２６は、実施の形態２にかかるタスク実行制御システムの構成を示す図である。図２６は、主に実施の形態１と異なる構成を抽出して記載してあり、他の構成は、実施の形態１（図２）とほぼ同様であるが、以下の点で異なる。コンテキスト生成部２０１には各タスクを起動するために満たされるべきコンテキスト条件が登録される。コンテキスト生成部２０１は、当該コンテキスト条件に基づいて起動可能なタスクの有無を判定し、起動可能なタスクが存在する場合には、当該タスクに関する情報がタスク選択部２１４に通知される。また、端末において、周辺機器１０３や端末画面の制御等、各タスクで行うべきすべての処理はアプリケーション２３５によって行われ、以後当該アプリケーションをタスクコントローラと呼ぶ。また、タスクコントローラ実行部２３４は、当該タスクコントローラの起動／中断／再開といったタスクコントローラに共通的な制御を行うものとして位置づけている。以下、実施の形態１と異なる構成について説明する。
【００９８】
（サーバ装置の構成）
タスク管理部２０２のタスク選択部２１４は、端末１０２のタスクコントローラ実行部２３４に対し、タスクの実行開始／中断／再開要求をおこない、タスクの実行開始／中断／再開応答を受ける。このタスク選択部２１４に設けられるタスクスケジューラ２１４ａは、ユーザ毎に、コンテキスト生成部２０１からコンテキスト情報を受けて実行待ち状態にある１つ以上のタスク、および実行中のタスクに関する情報（タスクキュー）を管理する。
【００９９】
タスクスケジューラ２１４ａは、実行中状態のタスクのＩＤと優先度（０個または１個のタスクの情報を管理）を実行中タスク２６０１として管理し、実行待ち状態にあるタスクのＩＤと優先度（０個以上のタスクの情報を管理）をタスクキュー２６０２を用いて管理する。タスクスケジューラ２１４ａは、タスクＩＤと、タスクの優先度のリストに基づき端末１０２で実行可能なタスクを管理する。
【０１００】
登録タスク保存部２１２には、ユーザＩＤ２６１１と、タスクＩＤ２６１２と、タスク起動条件２６１３と、優先度２６１４と、実行状態２６１５の各情報がテーブル形式で保存されている。ユーザＩＤ２６１１は、タスクを実行すべきユーザのＩＤであり、実行すべきユーザを指定しない場合は、その旨を示すＩＤ（たとえば０）が保持される。タスクＩＤ２６１２は、タスクの識別子（ＩＤ）である。タスク起動条件２６１３は、タスクを起動するための条件である。優先度２６１４は、タスクの優先度である。実行状態２６１５は、タスクの実行状態（未実行、完了済み）を示している。
【０１０１】
（端末の構成）
端末１０２のタスクコントローラ実行部２３４は、サーバ装置１０１のタスクスケジューラ２１４ａの指示により、タスクコントローラの起動、中断、再開を制御する。また、タスクコントローラ実行部２３４は、タスクコントローラのインストール、アンインストールの制御もおこなう。
【０１０２】
（タスク実行時の処理について）
図２７は、タスク管理部の処理を示すフローチャートである。以下は、タスクスケジューラ２１４ａがコンテキスト生成部２０１からの通知によってタスクを実行する場合の処理例を説明する。はじめに、タスクスケジューラ２１４ａは、タスク起動条件が満足された旨の通知をコンテキスト生成部２０１から受信する（ステップＳ２７０１）。つぎに、タスクスケジューラ２１４ａは、端末１０２が停止状態にあるか否かを判定する（ステップＳ２７０２）。停止中の場合は（ステップＳ２７０２：Ｙｅｓ）、ステップＳ２７０６に移行し、停止中でない場合は（ステップＳ２７０２：Ｎｏ）、ステップＳ２７０３に移行する。この判定は、端末停止フラグがセットされている場合は端末１０２が停止状態にあり、そうでない場合は停止状態にないと判定される。
【０１０３】
ステップＳ２７０３では、タスクスケジューラ２１４ａは、登録タスク保存部２１２から実行可能なタスクを選択する。つぎに、タスクスケジューラ２１４ａは、端末１０２で現在実行中のタスクがあるか否かを判定する（ステップＳ２７０４）。実行中のタスクがある場合は（ステップＳ２７０４：Ｙｅｓ）、ステップＳ２７０５に移行し、実行中のタスクがない場合は（ステップＳ２７０４：Ｎｏ）、ステップＳ２７０８に移行する。
【０１０４】
ステップＳ２７０５では、ステップＳ２７０３で選択された実行可能なタスクのうち、端末１０２で現在実行中のタスクよりも優先度の高いタスクがあるか否かを判定する。優先度の高いタスクがある場合は（ステップＳ２７０５：Ｙｅｓ）、ステップＳ２７０７に移行し、優先度の高いタスクがない場合は（ステップＳ２７０５：Ｎｏ）、ステップＳ２７０６に移行する。
【０１０５】
ステップＳ２７０６では、ステップＳ２７０３で選択された実行可能なタスクのすべてをタスクキュー２６０２にアタッチして、上記の処理を終了する。タスクキュー２６０２は、コンテキスト生成部２０１において、タスク起動条件が満足されたと判定されたタスクのうち、端末１０２で実行されていないタスク（中断状態にあるタスクを含む）を管理するものである。
【０１０６】
ステップＳ２７０７では、ステップＳ２７０３で選択された実行可能なタスクのうち、優先度が端末１０２で現在実行中のタスクと等しい、またはそれ以下のタスクをタスクキュー２６０２にアタッチする。ここで、タスクキュー２６０２にアタッチされなかった、優先度の高いタスクを実行候補タスクとする。
【０１０７】
ステップＳ２７０８では、実行可否判定をおこなっていない実行候補タスクのうち、最も優先度の高いタスクの実行可否判定をサービス管理部２０３に要求する。タスク実行の際に、周辺機器１０３のサービスを使用しない場合は、タスクが即時実行される。ステップＳ２７０９では、ステップＳ２７０８の応答としてサービス管理部２０３から受信した判定結果、タスクが実行可能である場合は（ステップＳ２７０９：タスク実行可能）、ステップＳ２７１２に移行し、タスクが実行不可である場合は（ステップＳ２７０９：タスク実行不可）、ステップＳ２７１０に移行する。
【０１０８】
ステップＳ２７１０では、サービス実行可否判定の結果、実行不可となったタスクをタスクキュー２６０２にアタッチする。ステップＳ２７１１では、サービス実行可否判定をおこなっていない実行候補タスクがあるか否かを判定し、実行候補タスクがある場合は（ステップＳ２７１１：Ｙｅｓ）、ステップＳ２７０８に移行し、実行候補タスクがない場合は（ステップＳ２７１１：Ｎｏ）、上記の処理を終了する。
【０１０９】
ステップＳ２７１２では、端末１０２で現在実行中のタスクがあるか否かを判定する。実行中のタスクがある場合は（ステップＳ２７１２：Ｙｅｓ）、ステップＳ２７１３に移行し、実行中のタスクがなければ（ステップＳ２７１２：Ｎｏ）、ステップＳ２７１６に移行する。ステップＳ２７１３では、現在実行中のタスクの中断要求を端末１０２に送信する。ステップＳ２７１４では、現在実行中のタスクの中断完了通知を端末１０２から受信する。ステップＳ２７１５では、中断が完了したタスクについて、登録タスク保存部２１２内に登録されている状態を「中断中」に更新する。また、このタスクをタスクキュー２６０２にアタッチする。
【０１１０】
ステップＳ２７１６では、ステップＳ２７０９で実行可能と判定されたタスクの実行開始要求を端末１０２に送信する。ステップＳ２７１７では、このタスクの実行開始応答を端末１０２から受信する。ステップＳ２７１８では、実行が開始されたタスクについて、登録タスク保存部２１２内に登録されている状態を「実行中」に更新する。また、このタスクを実行中タスクとして管理する。ステップＳ２７１９では、サービス実行可否判定をおこなっていない、残りすべての実行候補タスクをタスクキュー２６０２にアタッチして、上記の処理を終了する。
【０１１１】
（タスク終了時、および端末停止時の処理について）
図２８は、タスク管理部におけるタスク終了時、および端末停止時の処理を示すフローチャートである。端末１０２で実行中のタスクが終了した場合、および端末１０２が停止した場合の処理について説明する。端末１０２が停止した状態とは、ユーザが何らかの状況下で端末１０２を操作することでサーバ装置１０１からのタスク制御を受け付けない状態を意味する。
【０１１２】
端末１０２のタスク終了時には、タスクスケジューラ２１４ａは、端末１０２で実行していたタスクが完了し、タスク実行完了通知を端末１０２から受信する（ステップＳ２８０１）。つぎに、タスクスケジューラ２１４ａは、タスク実行完了応答を端末１０２に送信する（ステップＳ２８０２）。つぎに、実行が完了したタスクについて、登録タスク保存部２１２内に登録されている状態を「完了」に更新する（ステップＳ２８０３）。そして、実行中タスクとして管理されていたこのタスク情報をクリアする（ステップＳ２８０４）。この後、つぎに実行するタスクを決定するための処理（ステップＳ２８０５）に移行する。
【０１１３】
端末１０２の停止時には、ユーザが端末１０２の停止操作をおこなうと、タスクスケジューラ２１４ａは、端末１０２から端末停止通知を受信する（ステップＳ２８０６）。これにより、タスクスケジューラ２１４ａは、端末１０２の端末停止フラグをセットする（ステップＳ２８０７）。そして、端末停止応答を端末１０２に送信する（ステップＳ２８０８）。つぎに、タスクスケジューラ２１４ａは、端末再開通知を端末１０２から受信したか否かを判定する（ステップＳ２８０９）。受信した場合は（ステップＳ２８０９：Ｙｅｓ）、端末１０２の端末停止フラグをリセットし（ステップＳ２８１０）、ステップＳ２８０５に移行する。端末再開通知フラグを受信していない場合は（ステップＳ２８０９：Ｎｏ）、新たにタスクの起動条件が満たされたタスクを、タスクキュー２６０２にアタッチし（ステップＳ２８１１）、ステップＳ２８０９に戻る。
【０１１４】
（実行待機のタスクのサービス確認の処理について）
図２９−１、および図２９−２は、タスク管理部における実行待機のタスクのサービス確認の処理を示すフローチャートである。タスクキュー２６０２内で待機しているタスクの実行に必要なサービスの有無を周期的に確認する処理について説明する。図２９に示す処理の一部は、端末１０２で実行中のタスクが終了した場合にも同様に実行される。
【０１１５】
はじめに、タスクスケジューラ２１４ａは、端末１０２が停止状態にあるか否かを判定する（ステップＳ２９０１）。停止状態である場合は（ステップＳ２９０１：Ｙｅｓ）、ステップＳ２９０４に移行し、停止状態でない場合は（ステップＳ２９０１：Ｎｏ）、端末１０２で現在実行中のタスクがあるか否かを判定する（ステップＳ２９０２）。実行中のタスクがある場合は（ステップＳ２９０２：Ｙｅｓ）、ステップＳ２９０３に移行し、実行中のタスクがない場合は（ステップＳ２９０２：Ｎｏ）、ステップＳ２９０５に移行する。
【０１１６】
ステップＳ２９０３では、タスクスケジューラ２１４ａは、タスクキュー２６０２内のタスクのうち、端末１０２で現在実行中のタスクよりも優先度の高いタスクがあるか否かを判定する。優先度の高いタスクがある場合は（ステップＳ２９０３：Ｙｅｓ）、ステップＳ２９０６に移行し、優先度の高いタスクがない場合は（ステップＳ２９０３：Ｎｏ）、タスクスケジューラ２１４ａは、一定周期時間だけ待機して（ステップＳ２９０４）、終了する（その後、ステップＳ２９０１から処理が再開される）。一定周期は、タスクキュー２６０２内に存在するタスクの優先度に応じて動的に変えてもよい。たとえば、優先度が高いタスクほど、周期を短くするなど。また、周期をタスク毎に変えるようにしてもよい。
【０１１７】
ステップＳ２９０５では、タスクスケジューラ２１４ａは、タスクキュー２６０２内のすべてのタスクを実行候補タスクとし、ステップＳ２９０７に移行する。ステップＳ２９０６では、タスクスケジューラ２１４ａは、端末１０２で現在実行中のタスクよりも優先度の高いタスク（の集合）を実行候補タスクとし、ステップＳ２９０７に移行する。
【０１１８】
ステップＳ２９０７では、タスクスケジューラ２１４ａは、実行可否判定をおこなっていない実行候補タスクのうち、最も優先度の高いタスクの実行条件が満足されているか否かをコンテキスト生成部２０１に確認する。すなわち、候補タスクについて現コンテキストで実行（再開）可能であるかを確認する。つぎに、タスクスケジューラ２１４ａは、ステップＳ２９０７の確認の結果に基づいて、このタスクの実行が可能か判断する（ステップＳ２９０８）。タスクの実行が不可能な場合は（ステップＳ２９０８：Ｎｏ）、ステップＳ２９０９に移行し、タスクの実行が可能な場合は（ステップＳ２９０８：Ｙｅｓ）、ステップＳ２９１０に移行する。
【０１１９】
ステップＳ２９０９では、タスクスケジューラ２１４ａは、コンテキストが変わったことにより、タスクの起動条件が満足されていないタスクについては、再度コンテキスト生成部２０１にタスク起動条件を再設定する。また、当該タスクをタスクキュー２６０２からデタッチし、ステップＳ２９１９に移行する。
【０１２０】
ステップＳ２９１０では、タスクスケジューラ２１４ａは、タスクの実行可否判定をサービス管理部２０３に要求し、この応答としてサービス管理部２０３から受信した判定の結果、タスクが実行可能である場合は（ステップＳ２９１１：実行可能）、ステップＳ２９１２に移行し、タスクが実行不可である場合は（ステップＳ２９１１：実行不可）、ステップＳ２９１９に移行する。
【０１２１】
ステップＳ２９１２では、タスクスケジューラ２１４ａは、端末１０２で現在実行中のタスクがあるか否かを判定する。実行中のタスクがある場合は（ステップＳ２９１２：Ｙｅｓ）、ステップＳ２９１３に移行し、実行中のタスクがない場合は（ステップＳ２９１２：Ｎｏ）、ステップＳ２９１６に移行する。
【０１２２】
ステップＳ２９１３では、タスクスケジューラ２１４ａは、現在実行中のタスクの中断要求を端末１０２に送信する。つぎに、タスクスケジューラ２１４ａは、現在実行中のタスクの中断完了通知を端末１０２から受信する（ステップＳ２９１４）。この後、中断が完了したタスクについて、登録タスク保存部２１２内に登録されている状態を「中断中」に更新する。また、当該タスクをタスクキュー２６０２にアタッチする（ステップＳ２９１５）。そして、ステップＳ２９１１で実行可能と判定されたタスクの実行開始要求を端末１０２に送信する（ステップＳ２９１６）。なお、実行可能と判定されたタスクの状態が「中断中」である場合には、端末１０２にタスクの再開要求を送信する。
【０１２３】
この後、タスクスケジューラ２１４ａは、このタスクの実行開始応答を端末１０２から受信する（ステップＳ２９１７）。なお、ステップＳ２９１６でタスクの再開要求を送信した場合には、タスクの再開応答を受信する。そして、タスクスケジューラ２１４ａは、実行が開始されたタスクについて、登録タスク保存部２１２内に登録されている状態を「実行中」に更新する。また、このタスクを実行中タスクとして管理し（ステップＳ２９１８）、ステップＳ２９０４に移行する。
【０１２４】
ステップＳ２９１９では、タスクスケジューラ２１４ａは、実行可否判定をおこなったタスクを、判定済みとする。この後、実行可否判定をおこなっていない実行候補タスクがあるか否かを判定する（ステップＳ２９２０）。実行可否判定をおこなっていない実行候補タスクがある場合は（ステップＳ２９２０：Ｙｅｓ）、ステップＳ２９０７に移行し、実行可否判定をおこなっていない実行候補タスクがない場合は（ステップＳ２９２０：Ｎｏ）、ステップＳ２９０４に移行する。
【０１２５】
（端末の処理について）
図３０は、端末がおこなう処理を示すフローチャートである。端末１０２のタスクコントローラ実行部２３４が実行する処理について説明する。下記のステップＳ３００１，ステップＳ３００５，ステップＳ３００８，ステップＳ３０１１，ステップＳ３０１４，ステップＳ３０１６は、いずれか１つが要求あるいは通知を受けると処理を開始する。
【０１２６】
ステップＳ３００１において、タスクコントローラ実行部２３４がタスク実行開始要求をサーバ装置１０１のタスク管理部２０２から受信すると（ステップＳ３００１）、タスクコントローラをサービス管理部２０３からダウンロードし、インストールする（ステップＳ３００２）。ただし、タスク実行に必要なタスクコントローラが端末１０２に予めインストールされている場合は、本ステップを省略する。そして、タスクコントローラ実行部２３４は、タスクコントローラを起動させ（ステップＳ３００３）、タスク実行開始応答をタスク管理部２０２に通知し（ステップＳ３００４）、処理を終了する。
【０１２７】
ステップＳ３００５において、タスクコントローラ実行部２３４がタスク完了通知をタスクコントローラから受信すると（ステップＳ３００５）、タスク完了通知をタスク管理部２０２に通知し（ステップＳ３００６）、つぎに、タスクコントローラをアンインストールし（ステップＳ３００８）、終了する。なお、タスクコントローラのアンインストールは、端末１０２の記憶装置の記憶容量に一定量以上の余裕がある場合には省略されても良い。
【０１２８】
ステップＳ３００８において、タスクコントローラ実行部２３４がタスク中断要求をタスク管理部２０２から受信すると、タスクコントローラを中断し（ステップＳ３００９）、タスク中断完了応答をタスク管理部２０２に通知し（ステップＳ３０１０）、終了する。
【０１２９】
ステップＳ３０１１において、タスクコントローラ実行部２３４がタスク再開要求をタスク管理部２０２から受信すると、中断中のタスクコントローラを再開させ（ステップＳ３０１２）、タスク再開完了応答をタスク管理部２０２に通知し（ステップＳ３０１３）、処理を終了する。
【０１３０】
ステップＳ３０１４では、タスクコントローラ実行部２３４が端末停止要求をタスクコントローラから受信する。ユーザからの端末停止の指示は、タスクコントローラを介さず、直接タスクコントローラ実行部２３４に対して指示されてもよい。この後、タスクコントローラ実行部２３４は、端末停止通知をタスク管理部２０２に通知し（ステップＳ３０１５）、処理を終了する。
【０１３１】
ステップＳ３０１６では、タスクコントローラ実行部２３４が端末再開要求をタスクコントローラから受信する。ユーザからの端末再開の指示は、タスクコントローラを介さず、直接タスクコントローラ実行部２３４に対して指示されてもよい。この後、タスクコントローラ実行部２３４は、端末再開通知をタスク管理部２０２に通知し（ステップＳ３０１７）、処理を終了する。
【０１３２】
なお、タスク実行中に周辺機器１０３の電源切断や移動により、タスク実行に必要なサービスが利用できなくなるといった例外が発生した場合には、タスクコントローラが当該例外の発生を検出し、その旨をタスクコントローラ実行部２３４に通知する。当該通知を受けたタスクコントローラ実行部２３４は、その旨をタスク管理部２０２に通知する。この後、タスク管理部２０２は当該タスクの中断処理に続いて、他に実行可能なタスクの存在を確認し、実行可能なタスクがある場合は、端末１０２に対してタスクの実行を要求する。この例外時の処理は、タスク管理部２０２については図２７、タスクコントローラ実行部２３４については図３０と類似であるため、詳細な説明は省略する。
【０１３３】
（タスク実行の具体的処理例）
図３１−１〜図３１−４は、タスク実行の処理手順を示すシーケンス図である。この図を用いて、タスク実行の具体的処理例について説明する。以下の例は、巡回警備業務を支援する例である。図に示した各部の構成について、コンテキスト管理サーバ３１０１は、コンテキスト生成部２０１を含むサーバとする。タスク管理サーバ３１０２は、タスク管理部２０２、サービス管理部２０３を含むサーバとする。
【０１３４】
そして、ユーザＡは、端末１０２を携帯し巡回する。この端末１０２には、端末内蔵センサ１１２として位置センサを具備している。位置センサによる位置取得の方法は、ＧＰＳや、端末１０２に付与されたＲＦＩＤリーダが特定の場所に設置されたＲＦＩＤタグを読み取る等、種々の方法により取得可能である。また各コントローラ３１１１〜３１１３は、タスク管理サーバ３１０２からダウンロードしたタスクコントローラに相当する。
【０１３５】
はじめに、巡回警備前の設定処理について説明する。
（ステップＳ３１０１）あらかじめ管理者は、管理者端末１０２ａを用いて、２２：００に管理センタにいるユーザＡがおこなうべき、倉庫巡回タスクをタスク管理サーバ３１０２に登録する。
（ステップＳ３１０２）管理者は、ステップＳ３１０１と同様のタスクをコンテキスト管理サーバ３１０１に登録する。
（ステップＳ３１０３）管理者は、２２：００以降に倉庫ＡにいるユーザＡがおこなうべき、倉庫Ａの巡回タスクを登録する。
（ステップＳ３１０４）管理者は、ステップＳ３１０３と同様のタスクをコンテキスト管理サーバ３１０１に登録する。
（ステップＳ３１０５）管理者は、異常センサ１の状態がＯＮになったときに実行すべき異常確認タスクを登録する。
（ステップＳ３１０６）管理者は、ステップＳ３１０５と同様のタスクをコンテキスト管理サーバ３１０１に登録する。
【０１３６】
以降、ユーザＡの巡回警備時の処理について説明する。
（ステップＳ３１０７）ユーザＡが持つ携帯端末１０２の位置センサ１１２が、ユーザＡの位置が管理センタであることをコンテキスト管理サーバ３１０１に通知する。
（ステップＳ３１０８）コンテキスト管理サーバ３１０１は、ユーザＡが管理センタにいて、かつ時刻が２２：００であることを認識すると、ステップＳ３１０２で登録された倉庫巡回タスクの起動条件が満足されたことをタスク管理サーバ３１０２に通知する。
（ステップＳ３１０９）タスク管理サーバ３１０２は、ステップＳ３１０１で登録された倉庫巡回タスクの起動要求を端末１０２のタスクコントローラ実行部２３４に通知する。
（ステップＳ３１１０）タスクコントローラ実行部２３４は、指定されたＵＲＬにアクセスし、倉庫巡回コントローラ３１１１のダウンロードを要求する。
【０１３７】
（ステップＳ３１１１）タスク管理サーバ３１０２は、タスクコントローラ実行部２３４に、ダウンロード応答し、倉庫巡回コントローラ３１１１がダウンロードされ、端末１０２にインストールされる。
（ステップＳ３１１２）タスクコントローラ実行部２３４は、ダウンロードされた倉庫巡回コントローラ３１１１を起動する。
（ステップＳ３１１３）起動された倉庫巡回コントローラ３１１１は、タスクコントローラ実行部２３４に対して起動完了を通知する。
（ステップＳ３１１４）タスクコントローラ実行部２３４は、タスク１の起動が完了したことをタスク管理サーバ３１０２に通知する。
（ステップＳ３１１５）タスク管理サーバ３１０２は、タスク１が起動されたことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「タスク１実行中」に更新する。
【０１３８】
（ステップＳ３１１６）倉庫巡回コントローラ３１１１は、巡回先の情報として倉庫Ａを画面に表示する。ユーザは、画面を確認し、「ＯＫ」ボタンを操作する。
（ステップＳ３１１７）「ＯＫ」ボタンが操作された倉庫巡回コントローラ３１１１は、タスクコントローラ実行部２３４に対してタスクの完了を通知し、自らを終了する。
（ステップＳ３１１８）タスクコントローラ実行部２３４は、タスク管理サーバ３１０２に対してタスク１の完了を通知する。
（ステップＳ３１１９）タスク管理サーバ３１０２は、タスク１が完了したことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「ｉｄｌｅ」に更新する。
【０１３９】
（ステップＳ３１２０）ユーザＡが巡回先である倉庫Ａに到着すると、端末１０２の位置センサ１１２が検出し、コンテキスト管理サーバ３１０１にその旨通知する。
（ステップＳ３１２１）コンテキスト管理サーバ３１０１は、２２：００以降にユーザＡが倉庫Ａにいることを認識すると、ステップＳ３１０４で登録された倉庫Ａ巡回タスクの起動条件が満足されたことをタスク管理サーバ３１０２に通知する。
（ステップＳ３１２２）タスク管理サーバ３１０２は、倉庫Ａ巡回タスクの実行に必要なデバイスおよびサービスが存在することを認識すると、それらの検索を要求する。
（ステップＳ３１２３）ユーザＡの端末１０２のサービス発見・通知部２３３は、デバイスとサービスの検索をおこなう。たとえば、ＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）を用いるのであれば、Ｍ−ＳＥＡＲＣＨメッセージを周辺にマルチキャストする。
【０１４０】
（ステップＳ３１２４）倉庫Ａの照明デバイス１１３が、検索メッセージを受信すると、自らが指定されたデバイスであり、なおかつ自身が照明制御サービスを提供可能であるため、検索応答を通知する。ここでは照明デバイス１１３は、自らのデバイス・サービス情報を直接応答しているが、代わりに自らのデバイス・サービス情報が記載されたファイルのＵＲＬを応答し、ユーザＡの端末１０２が当該ＵＲＬに基づいてデバイス・サービス定義情報保存部２２７からファイルを入手することで、デバイス・サービス情報が取得されるようにしても良い。
（ステップＳ３１２５）サービス発見・通知部２３３は、サービス検索結果をタスク管理サーバ３１０２に通知する。
（ステップＳ３１２６）タスク管理サーバ３１０２は、倉庫Ａ巡回タスクに必要なデバイスおよびサービスがユーザＡの周辺に存在することを確認すると、タスクの起動要求を端末１０２のタスクコントローラ実行部２３４に通知する。
（ステップＳ３１２７）タスクコントローラ実行部２３４は、指定されたＵＲＬにアクセスし、倉庫Ａ巡回コントローラ３１１２のダウンロードを要求する。
（ステップＳ３１２８）タスクコントローラ実行部２３４に、倉庫Ａ巡回コントローラ３１１２がダウンロードされ、端末１０２にインストールされる。
【０１４１】
（ステップＳ３１２９）タスクコントローラ実行部２３４は、ダウンロードされた倉庫Ａ巡回コントローラ３１１２を起動する。
（ステップＳ３１３０）起動された倉庫Ａ巡回コントローラ３１１２は、タスクコントローラ実行部２３４に対して起動完了を通知する。
（ステップＳ３１３１）タスクコントローラ実行部２３４は、タスク２の起動が完了したことをタスク管理サーバ３１０２に通知する。
（ステップＳ３１３２）タスク管理サーバ３１０２は、タスク２が起動されたことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「タスク２実行中」に更新する。
【０１４２】
（ステップＳ３１３３）倉庫Ａ巡回コントローラ３１１２は、倉庫Ａの照明ＯＮボタン、照明ＯＦＦボタン、異常ありボタン、異常なしボタンを画面に表示する。ユーザは照明ＯＮボタンを操作する。
（ステップＳ３１３４）倉庫Ａ巡回コントローラ３１１２は、ステップＳ３１２２で検索された倉庫Ａの照明デバイスの照明制御サービスをパラメータＯＮで実行する旨、照明デバイスに要求する。
（ステップＳ３１３５）倉庫Ａの照明デバイス１１３は、ステップＳ３１３１で要求されたサービスを実行する（すなわち、照明をＯＮする）と、その応答を返す。ユーザＡは、倉庫Ａの巡回を開始する。
【０１４３】
（ステップＳ３１３６）建屋Ｂに設置されている異常センサ１（１１４）が何らかの異常を検知すると、その旨をコンテキスト管理サーバ３１０１に通知する。
（ステップＳ３１３７）コンテキスト管理サーバ３１０１は、異常センサ１（１１４）で異常が検出されたことを認識すると、ステップＳ３１０６で登録された異常確認タスク（優先度＝高）の起動条件が満足されたことをタスク管理サーバ３１０２に通知する。
【０１４４】
（ステップＳ３１３８）タスク管理サーバ３１０２は、タスク管理情報を参照し、タスクは誰が実行してもよいことを認識すると、このタスクの実行者として、ユーザＡを選択する。ユーザ選択方法については、たとえば、巡回作業中のユーザとその現在位置のリストを保持し、建屋Ｂの異常センサ１（１１４）に最も近い巡回中のユーザを選択する、または管理センタに待機しているユーザを選択する、といったものが考えられる。これらのユーザ選択は、例えば別のサーバで動作するアプリケーションによって行うようにされても良い。この場合、タスク起動条件満足通知を受けたタスク管理サーバ３１０２が当該アプリケーションに通知を行い、当該アプリケーションがコンテキスト管理サーバ３１０１から得たユーザのコンテキスト情報等に基づいてユーザを選択すると、そのユーザをタスク管理サーバ３１０２に応答する。タスク管理サーバ３１０２は、ユーザＡを選択した後、ユーザＡの端末１０２上で倉庫Ａ巡回タスク（優先度＝中）が実行中であり、異常確認タスクの起動に先立って倉庫Ａ巡回タスクの中断が必要であることを認識すると、ユーザＡの端末１０２のタスクコントローラ実行部２３４に当該タスクの中断を要求する。
【０１４５】
（ステップＳ３１３９）タスクコントローラ実行部２３４は、倉庫Ａ巡回コントローラ３１１２の中断を要求する。
（ステップＳ３１４０）倉庫Ａ巡回コントローラ３１１２は中断要求の応答を返す。
（ステップＳ３１４１）タスクコントローラ実行部２３４は、タスク管理サーバ３１０２に倉庫Ａ巡回タスクを中断したことを通知する。
（ステップＳ３１４２）タスク管理サーバ３１０２は、異常確認タスクの起動要求をユーザＡの端末１０２のタスクコントローラ実行部２３４に通知する。
（ステップＳ３１４３）タスクコントローラ実行部２３４は、指定されたＵＲＬにアクセスし、異常確認コントローラのダウンロードを要求する。
（ステップＳ３１４４）タスクコントローラ実行部２３４に、異常確認コントローラ３１１３がダウンロードされ、端末１０２にインストールされる。
【０１４６】
（ステップＳ３１４５）タスクコントローラ実行部２３４は、ダウンロードされた異常確認コントローラ３１１３を起動する。
（ステップＳ３１４６）起動された異常確認コントローラ３１１３は、タスクコントローラ実行部２３４に対して起動完了を通知する。
（ステップＳ３１４７）タスクコントローラ実行部２３４は、タスクの起動が完了したことをタスク管理サーバ３１０２に通知する。
【０１４７】
（ステップＳ３１４８）タスク管理サーバ３１０２は、タスク３が起動されたことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「タスク３実行中」に更新する。
（ステップＳ３１４９）起動された異常確認コントローラ３１１３は、ユーザＡの端末１０２の画面に「異常センサ１（１１４）で異常が検知されました。直ちに異常の有無を確認して下さい」というメッセージ、「異常あり」ボタン、および「異常なし」ボタンを表示する。当該画面を確認したユーザＡは、建屋Ｂの異常センサ１（１１４）が設置された場所に急行し、異常のないことを確認し「異常なし」ボタンを操作する（建屋Ｂに移動すると端末１０２によって位置登録がおこなわれるが、図では省略）。
【０１４８】
（ステップＳ３１５０）「異常なし」ボタンを操作された異常確認コントローラ３１１３は、タスクコントローラ実行部２３４に対してタスクの完了を通知し、自らを終了する。
（ステップＳ３１５１）タスクコントローラ実行部２３４は、タスク管理サーバ３１０２に対してタスクの完了を通知する。
（ステップＳ３１５２）タスク管理サーバ３１０２は、タスク３が完了したことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「ｉｄｌｅ」に更新する。または、ステップＳ３１４８でタスク３の実行が開始される前の状態「タスク２実行中」を記憶しておき、当該状態に復帰させてもよい（ここでユーザＡの状態を「ｉｄｌｅ」に設定しても、後続のステップＳ３１５７で「タスク２実行中」状態に復帰するため問題はない）。
【０１４９】
（ステップＳ３１５３）タスク管理サーバ３１０２は、異常確認タスク（優先度＝高）が完了したことを認識すると、そのつぎに優先度の高いタスクである、中断中の倉庫Ａ巡回タスクの再開を要求する。
（ステップＳ３１５４）タスクコントローラ実行部２３４は、中断中の倉庫Ａ巡回コントローラ３１１２の実行を再開する。
（ステップＳ３１５５）再開された倉庫Ａ巡回コントローラ３１１２は、タスクコントローラ実行部２３４に対して再開の完了を通知する。
（ステップＳ３１５６）タスクコントローラ実行部２３４は、タスク２の再開が完了したことをタスク管理サーバ３１０２に通知する。
【０１５０】
（ステップＳ３１５７）タスク管理サーバ３１０２は、タスク２が再開されたことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「タスク２実行中」に更新する。
（ステップＳ３１５８）倉庫Ａ巡回コントローラ３１１２が再開され、コントローラの画面が表示されると、ユーザＡは、倉庫Ａに戻り、巡回を再開する。このように、端末１０２に倉庫Ａ巡回コントローラ３１１２の画面が表示されるため、ユーザＡは中断されていた倉庫Ａの巡回作業を忘れることなく、再開することが可能となる。巡回が異常なく終了すると、「照明ＯＦＦ」ボタンを操作する（倉庫Ａに戻ると端末１０２によって位置登録がおこなわれるが、図では省略）。
【０１５１】
（ステップＳ３１５９）倉庫Ａ巡回コントローラ３１１２は、ステップＳ３１２２で検索された倉庫Ａの照明デバイス１１３の照明制御サービスをパラメータＯＦＦで実行する旨、照明デバイスに要求する。
（ステップＳ３１６０）倉庫Ａの照明デバイス１１３は、ステップＳ３１５３で要求されたサービスを実行する（すなわち、照明をＯＦＦする）と、その応答を返す。
（ステップＳ３１６１）ユーザＡは、倉庫Ａ巡回コントローラ３１１２の「異常なし」ボタンを操作して、倉庫Ａの巡回を終了する。
【０１５２】
（ステップＳ３１６２）「異常なし」ボタンを操作された倉庫Ａ巡回コントローラ３１１２は、タスクコントローラ実行部２３４に対してタスクの完了を通知し、自らを終了する。
（ステップＳ３１６３）タスクコントローラ実行部２３４は、タスク管理サーバ３１０２に対してタスクの完了を通知する。
（ステップＳ３１６４）タスク管理サーバ３１０２は、タスク２が完了したことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「ｉｄｌｅ」に更新する。
【０１５３】
以上説明したタスク定義は一例であり、このようなタスクの分割方法に限定されない。たとえば、本例では、倉庫巡回を開始すること自体をタスクとして定義し、実際の作業である倉庫Ａの巡回タスクと分割しているが、両者を一体化して定義してもよい。このとき、巡回タスクの下位に倉庫Ａ巡回、倉庫Ｂ巡回といったサブ・タスクを定義し、これら各サブ・タスクに対応するタスクコントローラを定義し、「倉庫Ａ巡回開始」ボタンを操作すると、対応するサブ・タスクの実行に必要なコントローラが起動される。
【０１５４】
また、各タスクコントローラは起動される度にダウンロードするようにしているが、たとえば緊急度の高いタスクのためのコントローラ（たとえば、異常確認コントローラ３１１３）については、あらかじめ端末１０２にインストールしておいてもよい。さらに、上記例では、タスクの実行が完了しても、対応するタスクコントローラはインストール状態のままにしているが、端末１０２のメモリ容量に制限がある場合は、タスク完了後にタスクコントローラをアンインストールして、占有していたメモリを解放してもよい。
【０１５５】
（各種管理データ例）
上述した巡回警備に用いる管理データ例について説明する。図３２は、コンテキスト情報の例を示す図表である。コンテキスト管理サーバ３１０１が管理するコンテキスト情報３２００により、各ユーザやデバイスの状態を管理する。このコンテキスト情報３２００は、時刻３２０１、ユーザ・コンテキスト３２０２、デバイス・コンテキスト３２０３の各情報を含む。時刻３２０１は、システムで共通して使用される現在時刻情報であり、ユーザ・コンテキスト３２０２は、ユーザ毎の状態情報として、ユーザの場所とタスクの実行状態を管理する。デバイス・コンテキスト３２０３は、デバイス毎の状態情報として、デバイスの設置場所（建屋Ｂ）とデバイスの状態（ここでは異常センサ１（１１４）のＯＮ／ＯＦＦ状態）を管理する。
【０１５６】
図３３は、タスク管理情報の例を示す図表である。コンテキスト管理サーバ３１０１はタスク管理情報３３００を用いてタスクを管理する。タスク管理情報３３００は、各ユーザが実行すべきタスクの起動条件を管理するためのものであり、ＵＩＤ、時刻、場所、その他、ＴＩＤの各情報を含む。ＵＩＤはタスクを実行すべきユーザのＩＤの情報であり、時刻はタスクを実行すべき時間条件の情報であり、場所はタスクを実行すべき場所条件の情報であり、その他は、タスクを実行すべき上記以外の条件の情報であり、ＴＩＤは、上記の条件が成立したときに実行されるべきタスクのＩＤの情報である。
【０１５７】
コンテキスト管理サーバ３１０１は、ユーザやデバイスの状態が変化すると、対応するタスク管理情報３３００を検索し、実行すべきタスクの有無を判定する。この判定処理を高速におこなうために、追加のデータが管理されてもよい。たとえば、コンテキスト管理データとして、個々のユーザに実行すべき（未実行の）タスクが存在するか否かのフラグ情報を管理することで、タスクが存在しないユーザに関しては、コンテキストが変化しても実行すべきタスクの有無の判定処理をおこなわないようにする等が考えられる。
【０１５８】
図３４は、タスク管理情報の例を示す図表である。タスク管理サーバ３１０２のタスク管理部２０２はタスク管理情報３４００を用いてタスクを管理する。タスク管理情報３４００は、タスク管理情報：各ユーザが実行すべきタスクに関する情報を管理するものであり、ＵＩＤ、ＴＩＤ、時刻、場所、優先度、状態の各情報を含む。ＵＩＤはタスクを実行すべきユーザのＩＤの情報であり、ＴＩＤは実行すべきタスクのＩＤの情報であり、時刻はタスクを実行すべき時間の情報であり、場所はタスクを実行すべき場所の情報であり、優先度はタスクの優先度であり、状態はタスクの実行状態（未実行／実行中／完了）である。
【０１５９】
図３４において、ＵＩＤ＝＃の項目は、タスク３が特定のユーザが実行すべきものとして定義されていないことを示している。このようなタスクについては、タスクを実行すべきユーザは状況に応じて動的に決定される。
【０１６０】
図３５は、タスクコントローラ管理情報の例を示す図表である。タスクコントローラ管理情報３５００は、タスクの実行に必要なタスクコントローラに関する情報であり、タスク管理サーバ３１０２のサービス管理部２０３が管理する。タスクコントローラ管理情報３５００は、ＴＩＤと、コントローラＵＲＬの情報を含む。ＴＩＤはタスクＩＤの情報であり、コントローラＵＲＬはタスクの実行に必要なコントローラが格納されているＵＲＬの情報である。
【０１６１】
図３６は、タスク・サービス対応情報の例を示す図表である。タスク・サービス対応情報３６００は、各タスクの実行に必要なデバイスおよびサービスに関する情報であり、タスク管理サーバ３１０２のサービス管理部２０３が管理する。タスク・サービス対応情報３６００は、ＴＩＤ、デバイス、サービスの各情報を含む。ＴＩＤはタスクＩＤであり、デバイスはデバイス名であり、サービスはサービス名の情報である。図に記載のＮＡ（Ｎｏｔ  Ａｐｐｌｉｃａｂｌｅ）は、タスクの実行にデバイスおよびサービスが不要であることを示している。
【０１６２】
図３７は、タスクスケジューラが管理するタスク実行管理情報を示す図表である。タスクスケジューラ２１４ａは、ユーザ毎のタスクの実行制御に関する情報をタスク実行管理情報３７００として管理する。実行管理情報３７００は、ユーザＡに関する実行中タスク２６０１と、タスクキュー２６０２のそれぞれについて、ＴＩＤと、優先度を管理する。実行中タスク２６０１については、実行中のタスクに関する情報を管理し、ＴＩＤはタスクのＩＤの情報、優先度はタスクの優先度の情報である。タスクキュー２６０２については、実行待ち状態のタスクに関する情報を管理し、ＴＩＤはタスクのＩＤの情報、優先度はタスクの優先度の情報である。図３７に示す例では、タスクキュー２６０２に登録されているタスクは０または１つとなっているが、タスクの割り込みが複数回にわたっておこなわれるような場合には、２個以上のタスクが登録されることもある。
【０１６３】
つぎに、このタスク実行管理情報３７００の変化について、上述した図３１−１〜図３１−４に示したシーケンスの手順に沿って説明する。
・ステップＳ３１１１〜ステップＳ３１１７：実行中および実行待ち状態のタスクはない（図示略）
（１）ステップＳ３１１４：タスク１の起動が完了したため、タスク１に関する情報が、実行中タスク２６０１として保持される。実行待ち状態のタスクはないため、タスクキュー２６０２には情報は保持されていない（ＮＡと記載）。
【０１６４】
・ステップＳ３１１８：タスク１が完了すると、タスク１に関する情報が実行中タスク２６０１の情報から削除される。これにより、実行中および実行待ち状態のタスクはなくなる（図示略）。
（２）ステップＳ３１３１：タスク２の起動が完了したため、タスク２に関する情報が、実行中タスク２６０１の情報として保持される。実行待ち状態のタスクはないため、タスクキュー２６０２には情報は保持されていない。
【０１６５】
（３）ステップＳ３１４１〜ステップＳ３１４７：優先度＝高のタスク３の実行が要求されると、実行中のタスク２（優先度＝中）の中断処理がおこなわれ、ステップＳ３１４１で中断処理が完了すると、タスク２に関する情報がタスクキュー２６０２に登録される。続いて、ステップＳ３１４７でタスク３の起動が完了すると、タスク３に関する情報が実行中タスク２６０１の情報として保持される。
【０１６６】
（４）ステップＳ３１５６：ステップＳ３１５１でタスク３が完了すると、タスク３の情報が実行中タスク２６０１の情報から削除され（図には未記載）、引き続いてステップＳ３１５６でタスク２の実行が再開されると、タスク２に関する情報が実行中タスク２６０１の情報として保持される。
・ステップＳ３１６３：タスク２の実行が完了すると、タスク２に関する情報が実行中タスク２６０１の情報から削除される。これにより、実行中および実行待ち状態のタスクはなくなる（図示略）。
【０１６７】
このほか、図３７には記載していないが、端末１０２が停止中であるか否かを示すフラグを端末１０２毎に設ける。そして、端末１０２から端末１０２の停止が要求されたときは当該フラグをセットし、フラグがセットされている間は、端末１０２に対するタスク制御を停止する。この間、タスクの起動条件が満足された旨の通知が発生した場合は、タスク優先度に関わらず当該タスクに関する情報はタスクキュー２６０２に登録される。
【０１６８】
以上説明した実施の形態２によれば、実施の形態１同様に、ユーザやその周辺環境のコンテキストと、周辺機器が提供するサービスとに基づいて、優先順位やタスク間の依存関係を考慮して複数のタスクを順次実行することができる。実施の形態２では、これに加えて、タスクの実行中に他のタスクの割り込みがあったときにタスクの優先度に基づいてタスクの実行の中断および再開を制御できるようになる。これにより、複数のタスクを効率的に処理できるようになる。また、実施の形態２によれば、ユーザの移動に対応したタスク制御を実行するため、ユーザが移動しながら移動先毎に必要なサービスを受けることができるようになる。
【０１６９】
なお、本実施の形態で説明したタスク実行制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【符号の説明】
【０１７０】
１００  タスク実行制御システム
１０１  サーバ装置
１０２  端末
１０２ａ  管理者端末
１０３  周辺機器
１０４  情報通信ネットワーク
１１２  端末内蔵センサ
１１３  被制御部
１１４  機器内蔵センサ
２０１  コンテキスト生成部
２０２  タスク管理部
２０３  サービス管理部
２０４，２３２  センサ・端末情報集約部
２１１  コンテキスト取得制御情報保存部
２１２  登録タスク保存部
２１３  タスク選択ルール保存部
２１４  タスク選択部
２１４ａ  タスクスケジューラ
２２１  タスク・サービス対応関係保存部
２２２  利用可能サービスキャッシュ
２２３  利用可能サービス確認部
２２４  タスク・サービス確認部
２２５  タスクコントローラ保存部
２２６  タスクコントローラ管理部
２２７  デバイス・サービス定義情報保存部
２３１  周辺機器連携部
２３３  サービス発見・通知部
２３４  タスクコントローラ実行部
２３５  アプリケーション
２４１  応答・広告部
２６０１  実行中タスク
２６０２  タスクキュー
３１０１  コンテキスト管理サーバ
３１０２  タスク管理サーバ
【図１】
2012131962.tif 000003
【図２】
2012131962.tif 000004
【図３】
2012131962.tif 000005
【図４】
2012131962.tif 000006
【図５】
2012131962.tif 000007
【図６】
2012131962.tif 000008
【図７】
2012131962.tif 000009
【図８】
2012131962.tif 000010
【図９】
2012131962.tif 000011
【図１０】
2012131962.tif 000012
【図１１】
2012131962.tif 000013
【図１２】
2012131962.tif 000014
【図１３】
2012131962.tif 000015
【図１４−１】
2012131962.tif 000016
【図１４−２】
2012131962.tif 000017
【図１５】
2012131962.tif 000018
【図１６】
2012131962.tif 000019
【図１７】
2012131962.tif 000020
【図１８】
2012131962.tif 000021
【図１９】
2012131962.tif 000022
【図２０】
2012131962.tif 000023
【図２１−１】
2012131962.tif 000024
【図２１−２】
2012131962.tif 000025
【図２２】
2012131962.tif 000026
【図２３】
2012131962.tif 000027
【図２４】
2012131962.tif 000028
【図２５】
2012131962.tif 000029
【図２６】
2012131962.tif 000030
【図２７】
2012131962.tif 000031
【図２８】
2012131962.tif 000032
【図２９−１】
2012131962.tif 000033
【図２９−２】
2012131962.tif 000034
【図３０】
2012131962.tif 000035
【図３１−１】
2012131962.tif 000036
【図３１−２】
2012131962.tif 000037
【図３１−３】
2012131962.tif 000038
【図３１−４】
2012131962.tif 000039
【図３２】
2012131962.tif 000040
【図３３】
2012131962.tif 000041
【図３４】
2012131962.tif 000042
【図３５】
2012131962.tif 000043
【図３６】
2012131962.tif 000044
【図３７】
2012131962.tif 000045
【手続補正書】
【提出日】平成25年9月27日(2013.9.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成部と、
ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理部と、
前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理部が選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理部と、を備え、
前記タスク管理部は、
前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択することを特徴とするタスク実行制御装置。
【請求項２】
前記タスク管理部は、
前記コンテキスト情報と、前記タスクの選択ルールを参照し、複数の前記タスクについて、実行のスケジューリング、および割り込み制御をおこなうタスクスケジューラを有することを特徴とする請求項１に記載のタスク実行制御装置。
【請求項３】
前記タスク管理部は、
前記タスクの実行にあわせて所定のタイミングで前記コンテキスト情報を受信するための制御命令を保持するコンテキスト取得制御情報保存部と、
ユーザが実行すべき複数のタスクを保持する登録タスク保存部と、
前記タスクの選択ルールを保持するタスク選択ルール保存部と、
前記コンテキスト情報と、前記タスクの選択ルールに基づき、前記登録タスク保存部に保持された複数のタスクのうち、最優先で実行すべきタスクを選択するタスク選択部と、
を備えたことを特徴とする請求項１に記載のタスク実行制御装置。
【請求項４】
前記サービス管理部は、
前記機器が実行するサービスを一時的に保持しておく利用可能サービスキャッシュと、
前記機器が現在利用可能なサービスを確認する利用可能サービス確認部と、
前記タスクと前記サービスとの対応関係を保持するタスク・サービス対応関係保存部と、
前記タスク・サービス対応関係保存部に保持された前記サービスのうち、前記利用可能サービス確認部により現在利用可能なサービスについて、前記タスク管理部が選択した前記タスクを前記機器により実行可能かを確認するタスク・サービス確認部と、
を備えたことを特徴とする請求項１に記載のタスク実行制御装置。
【請求項５】
前記サービス管理部は、
前記タスクを実行するために前記機器を制御するソフトウェアであるタスクコントローラを保持するタスクコントローラ保存部と、
前記タスク管理部が選択した前記タスクに対応する実行用のタスクコントローラを前記機器に送信するタスクコントローラ管理部と、
を備えたことを特徴とする請求項１に記載のタスク実行制御装置。
【請求項６】
前記サービス管理部は、
前記機器が前記機器の周辺に存在する他の機器が実行可能なサービスを発見した際の通知に基づき、当該サービスの情報を前記利用可能サービスキャッシュに保持することを特徴とする請求項４に記載のタスク実行制御装置。
【請求項７】
前記サービス管理部は、
前記機器と、当該機器が実行可能なサービスの定義を保持し、前記機器により発見した他の機器が実行可能なサービスを参照可能とするデバイス・サービス定義情報保存部を有することを特徴とする請求項４に記載のタスク実行制御装置。
【請求項８】
前記機器に搭載された計測用のセンサ、および前記サービスの情報を集約し、前記コンテキスト生成部における前記コンテキスト情報に用いる情報として通知するセンサ・端末情報集約部を備えたことを特徴とする請求項１に記載のタスク実行制御装置。
【請求項９】
前記タスクスケジューラは、
タスクの実行条件が満たされたが、当該タスクの実行に対応するサービスが発見できないために未実行となったタスクに関して、周期的に優先度の高いものから順に、前記コンテキスト生成部に対するタスクの実行条件が満たされている確認要求と、前記サービス管理部に対する、タスクの実行可否判定を要求して、最も優先度の高いタスクからの実行を待つことを特徴とする請求項２に記載のタスク実行制御装置。
【請求項１０】
サーバ装置と、機器とを備えたタスク実行制御システムにおいて、
前記サーバ装置は、
ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成部と、
ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理部と、
前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理部が選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理部と、を備え、
前記タスク管理部は、前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択し、
前記機器は、
自機器および周辺に存在する他の機器のサービスを発見して、当該サービスの情報を前記サーバ装置に通知し、当該サーバ装置からの命令もしくはプログラムにしたがって前記機器による前記サービスの制御をおこなう周辺機器連携部を備えたことを特徴とするタスク実行制御システム。
【請求項１１】
前記機器は、
前記サーバ装置と情報をやりとりする端末と、
前記端末を介して前記サービスを実行する周辺機器と、を備え、
前記周辺機器は、
存在と機器情報を前記端末に通知する応答・広告部と、
前記端末からの制御情報にしたがい、前記サービスを実行する被制御部とを有し、
前記コンテキスト情報に基づき、前記サービスに対応する前記周辺機器を用いることを特徴とする請求項１０に記載のタスク実行制御システム。
【請求項１２】
ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成工程と、
ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理工程と、
前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理工程により選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理工程と、を含み、
前記タスク管理工程は、
前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択することを特徴とするタスク実行制御方法。
【請求項１３】
前記タスク管理工程は、
前記コンテキスト情報と、前記タスクの選択ルールを参照し、複数の前記タスクについて、実行のスケジューリング、および割り込み制御をおこなうことを特徴とする請求項１２に記載のタスク実行制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザの状況に応じてタスクを実行するタスク実行制御装置、タスク実行制御システムおよびタスク実行制御方法に関する。
【背景技術】
【０００２】
センシングデバイス技術の発達により、ユーザの位置やユーザの周辺の環境情報などが容易に計測できるようになってきている。これらの計測データから、さまざまなコンテキストを取得することができ、このコンテキストを用いることにより、ユーザに対するタスクの実行を支援することができるようになってきている。このコンテキストとは、人やものの状況を示す情報であり、たとえば、ユーザＡのコンテキストとしては、現在位置のオフィス名、時刻等の情報である。また、タスクとは、ユーザ、ユーザの端末、もしくはユーザの周辺の機器がおこなうべき作業であり、たとえば、ユーザが部屋に入ったときに「部屋の照明をつける」、ユーザが印刷をおこなうとき、ユーザの「文章を近くのプリンタで印刷する」などがタスクである。
【０００３】
コンテキストを用いたタスク実行支援に関連する従来技術としては、コンテンツ配信ネットワークに関して、ユーザのコンテキスト情報（ユーザの位置情報やネットワーク使用状況、作業状況）に基づいて、ユーザのアクセスポイント近傍のストレージに、ユーザの希望するコンテンツを移動し、負荷分散を実施するものがある（たとえば、下記特許文献１参照。）。また、ユーザのコンテキスト情報（通話相手の状態）を端末に表示するプレゼンスサービスにおいて、自身のコンテキストに応じて適切なプレゼンス情報提供アプリケーションを実行するものがある（たとえば、下記特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３４８４９５号公報
【特許文献２】特開２００８−２８２０６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、タスクを実行するための周辺機器が提供するサービスの確認をおこなうことができず、周辺機器が提供するサービスによって適切なタスクを選択することができない。上記のサービスとは、周辺機器が提供する粒度の小さい機能であり、たとえば、ＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）におけるサービスであり、具体的には、プリンタがおこなう印刷サービス等がある。
【０００６】
また、従来技術は、単一のタスク実行のみを考慮したシステムであるため、複数のタスクがある場合に、ユーザのコンテキストを考慮した順でタスクを選択実行することができず、ユーザが所望するサービスを効率的に実行することができなかった。ユーザが所望するサービスは、複数のタスクの組み合わせのサービスであったり、ユーザが移動しながら移動先毎に異なるサービスを受けることなどが想定できるが、これを支援することができなかった。
【０００７】
開示のタスク実行制御装置、タスク実行制御システムおよびタスク実行制御方法は、上述した問題点を解消するものであり、ユーザの状況に応じてユーザが所望するタスクを効率的に実行できることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、開示技術は、ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成部と、ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理部と、前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理部が選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理部と、を含み、前記タスク管理部は、前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択する。
【発明の効果】
【０００９】
開示のタスク実行制御装置、タスク実行制御システムおよびタスク実行制御方法によれば、ユーザの状況に応じてユーザが所望するタスクを効率的に実行できるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態にかかるタスク実行制御システムの概要構成を示す図である。
【図２】図２は、実施の形態１にかかるタスク実行制御システムの詳細構成を示す図である。
【図３】図３は、情報収集機能を説明するブロック図である。
【図４】図４は、コンテキスト生成部の処理を説明する図である。
【図５】図５は、コンテキスト生成部の処理を示すフローチャートである。
【図６】図６は、タスク管理部の処理を説明する図である。
【図７】図７は、タスク管理部の処理を示すフローチャートである。
【図８】図８は、サービス管理部の処理を説明する図である。
【図９】図９は、サービス管理部の処理を示すフローチャートである。
【図１０】図１０は、周辺機器連携部の処理を説明する図である。
【図１１】図１１は、周辺機器連携部のサービス検索処理を示すフローチャートである。
【図１２】図１２は、周辺機器連携部のタスクコントローラに関する処理を示すフローチャートである。
【図１３】図１３は、周辺機器の処理を説明する図である。
【図１４−１】図１４−１は、タスクの具体例を示す図表である。
【図１４−２】図１４−２は、タスクの依存関係を説明する図である。
【図１５】図１５は、端末あるいは周辺機器から収集したデータの一例を示す図表である。
【図１６】図１６は、生成されるコンテキスト情報の例を示す図表である。
【図１７】図１７は、コンテキスト取得制御情報の例を示す図表である。
【図１８】図１８は、タスク選択ルールの例を示す図表である。
【図１９】図１９は、タスク・サービス対応関係の例を示す図表である。
【図２０】図２０は、デバイス・サービス定義情報の例を示す図表である。
【図２１−１】図２１−１は、タスク選択ルールの例を示す図表である。
【図２１−２】図２１−２は、タスクの依存関係を説明する図である。
【図２２】図２２は、タスク・サービス対応関係の例を示す図表である。
【図２３】図２３は、コンテキスト取得制御情報の例を示す図表である。
【図２４】図２４は、登録タスクの追加情報の例を示す図表である。
【図２５】図２５は、タスクの実行手順を示すシーケンス図である。
【図２６】図２６は、実施の形態２にかかるタスク実行制御システムの構成を示す図である。
【図２７】図２７は、タスク管理部の処理を示すフローチャートである。
【図２８】図２８は、タスク管理部におけるタスク終了時、および端末停止時の処理を示すフローチャートである。
【図２９−１】図２９−１は、タスク管理部における実行待機のタスクのサービス確認の処理を示すフローチャートである（その１）。
【図２９−２】図２９−２は、タスク管理部における実行待機のタスクのサービス確認の処理を示すフローチャートである（その２）。
【図３０】図３０は、端末がおこなう処理を示すフローチャートである。
【図３１−１】図３１−１は、タスク実行の処理手順を示すシーケンス図である（その１）。
【図３１−２】図３１−２は、タスク実行の処理手順を示すシーケンス図である（その２）。
【図３１−３】図３１−３は、タスク実行の処理手順を示すシーケンス図である（その３）。
【図３１−４】図３１−４は、タスク実行の処理手順を示すシーケンス図である（その４）。
【図３２】図３２は、コンテキスト情報の例を示す図表である。
【図３３】図３３は、タスク管理情報の例を示す図表である。
【図３４】図３４は、タスク管理情報の例を示す図表である。
【図３５】図３５は、タスクコントローラ管理情報の例を示す図表である。
【図３６】図３６は、タスク・サービス対応情報の例を示す図表である。
【図３７】図３７は、タスクスケジューラが管理するタスク実行管理情報を示す図表である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。
【００１２】
開示の技術は、ユーザのタスク実行を制御する。たとえば、タスク実行制御を統括するタスク実行制御装置は、以下の制御処理をおこなう。
１．ユーザのコンテキストを生成する。
２．タスク管理機能は、ユーザのコンテキストに基づき、実行すべきタスクを選択する。各タスクには、選択ルール（優先度やタスクフローを示すタスク間同士の実行に関する依存関係）を設定しておく。
３．サービス管理機能は、最終的な出力デバイス（端末や周辺機器等）が有する利用可能サービス情報に基づき、タスクの実行可否を判断する。
４．周辺機器制御機能により、端末で実行するアプリケーションや、周辺機器を制御し、周辺機器でタスクを実行し、ユーザのコンテキストに対応したサービスを提供する。
【００１３】
（タスク実行制御システムの全体構成図）
図１は、実施の形態にかかるタスク実行制御システムの概要構成を示す図である。タスク実行制御システム１００は、サーバ装置１０１と、複数の端末１０２と、複数の周辺機器（被制御機器）１０３と、を含む。これらサーバ装置１０１と、端末１０２と、周辺機器１０３とは、互いに情報通信ネットワーク１０４によって接続され、各種情報の交換をおこなう。情報通信ネットワークは有線ネットワークでも無線ネットワークでもよい。
【００１４】
サーバ装置１０１は、複数の端末１０２、および複数の周辺機器１０３と通信が可能なコンピュータであり、コンテキスト生成、タスク管理、サービス管理等の機能を有する。サーバ装置１０１内の各機能は、ＲＯＭ、ＲＡＭ等に格納されたソフトウェアをＣＰＵにより実行することにより実現できる。これに限らず、ハードウェアにより実現することもできる。
【００１５】
端末１０２は、ユーザが所有する、情報通信部とコンピュータ処理部と、を含む装置であり、たとえば、パーソナル・コンピュータやノートパーソナル・コンピュータなどのＰＣ、携帯電話、ＰＤＡ、スマートフォンなどからなる。端末１０２には、位置を計測するＧＰＳや加速度を検出する加速度センサなどの端末内蔵センサ１１２を備えてもよく、端末内蔵センサ１１２が計測した情報を集約し、サーバ装置１０１へ送ることにより、サーバ装置１０１におけるコンテキスト生成の情報として用いることができる。１つの端末１０２は、情報通信ネットワーク１０４を通じて複数の周辺機器１０３と通信をおこなうことが可能である。端末１０２内の各機能は、ＲＯＭ、ＲＡＭ等に格納されたソフトウェアをＣＰＵにより実行することにより実現できる。これに限らず、ハードウェアにより実現することもできる。
【００１６】
周辺機器１０３は、情報通信部と、情報通信ネットワーク１０４からの情報により周辺機器１０３が有する各種機能を動作させることが可能な被制御部１１３を具備し、たとえば、コンピュータやプリンタ、プロジェクタ、テレビ、照明などからなる。周辺機器１０３についても、ＧＰＳや加速度センサなどの機器内蔵センサ１１４を具備していてもよい。機器内蔵センサ１１４が計測した情報を集約してサーバ装置１０１へ送ることにより、サーバ装置１０１におけるコンテキスト生成の情報として用いることができる。また、ユーザが所有する端末１０２についても、周辺機器１０３として用いることができる。
【００１７】
（実施の形態１）
図２は、実施の形態１にかかるタスク実行制御システムの詳細構成を示す図である。以下、タスク実行制御システム１００のサーバ装置１０１と、端末１０２と、周辺機器１０３の内部機能について説明する。
【００１８】
（サーバ装置）
サーバ装置１０１は、コンテキスト生成部２０１と、タスク管理部２０２と、サービス管理部２０３と、センサ・端末情報集約部２０４と、を含む。
【００１９】
コンテキスト生成部２０１は、ユーザやその周囲の状況（コンテキスト）を判断し、ユーザやその周囲の状況の情報（コンテキスト）を生成する。コンテキストは、たとえば、場所や時間、ユーザの行為、身体の状態、能力、ユーザの周辺の環境などである。また、スケジュールや実施すべき仕事の情報など、ユーザが従事する業務に関連する情報なども含まれる。生成したコンテキスト情報は、タスク管理部２０２に出力される。
【００２０】
タスク管理部２０２は、タスク情報を保持し、ユーザのコンテキストや周辺機器１０３の情報にしたがってタスク実行を制御する。タスク管理部２０２は、コンテキスト取得制御情報保存部２１１と、登録タスク保存部２１２と、タスク選択ルール保存部２１３と、タスク選択部２１４と、を含む。
【００２１】
コンテキスト取得制御情報保存部２１１は、コンテキストの粒度やコンテキストの取得タイミングをコンテキスト取得制御情報としてコンテキスト生成部２０１に通知する。登録タスク保存部２１２は、ユーザが登録するタスクの一覧を格納する。タスク選択ルール保存部２１３は、タスクの優先順位や業務フローに基づいて、どのような順番でタスクを実行するかを設定する。タスク選択部２１４は、コンテキスト生成部２０１から通知されたコンテキスト情報を元に、登録タスク保存部２１２からタスク選択ルールに基づいて実行タスクを選択し、タスクスケジューラ２１４ａによってタスク実行のスケジューリングをおこなう。
【００２２】
タスク選択ルールは、タスク毎にタスクＩＤを付して、各タスク毎に、コンテキスト条件と、各タスクの優先度（優先順位）と、各タスクが有する他のタスクに対する依存状態を示す依存タスク情報（依存タスクＩＤ）等を関連付けたテーブル形式とされている。タスクＩＤは、個々のタスクを識別するためのＩＤである。コンテキスト条件は、コンテキスト生成部２０１からの情報と照合する条件であり、条件に一致しているときに、該当するタスクを実行する。優先度は、実行可能なタスクが複数存在する場合に、優先度が高いタスクから順に実行するために設定される。依存タスクＩＤは、このタスクを実行する際に、終了していなければならない他のタスクのＩＤである。
【００２３】
サービス管理部２０３は、周辺機器１０３の利用可能なサービスを確認してタスク管理部２０２に通知し、タスク管理部２０２が選択したタスクを実行するために、必要なサービスを利用するための命令、もしくはプログラムを端末１０２に通知する。サービス管理部２０３は、タスク・サービス対応関係保存部２２１、利用可能サービスキャッシュ２２２、利用可能サービス確認部２２３、タスク・サービス確認部２２４、タスクコントローラ保存部２２５、タスクコントローラ管理部２２６、デバイス・サービス定義情報保存部２２７と、を含む。
【００２４】
タスク・サービス対応関係保存部２２１は、各タスクを実行するために必要なサービスの対応関係情報を格納する。テーブル参照により、タスクとサービスとの関連付けを得ることができる。利用可能サービスキャッシュ２２２は、端末１０２から通知された、端末１０２周辺の周辺機器１０３において利用可能なサービスを一時的に格納する。利用可能サービス確認部２２３は、タスクを実行するためのサービスが存在するかを利用可能サービスキャッシュ２２２を参照して確認し、該当サービスが存在しなければ端末１０２へ検索要求をおこなう。
【００２５】
タスク・サービス確認部２２４は、タスク管理部２０２から通知されたタスクが実行可能であるかを確認するため、タスク・サービス対応関係保存部２２１からタスクに対応するサービス情報を取得し、利用可能サービス確認部２２３から得られたサービス情報と照合する。タスクコントローラ保存部２２５は、タスクを実行するためのタスクコントローラを格納する。このタスクコントローラは、タスクを実行するためのサービスを制御するソフトウェアである。１つのタスクコントローラは、複数のサービスを制御することもできる。
【００２６】
タスクコントローラ管理部２２６は、タスクが実行可能であれば、タスクコントローラ保存部２２５から対応するタスクコントローラを取得し、端末１０２へ送信する。デバイス・サービス定義情報保存部２２７は、周辺機器１０３のデバイス・サービス定義を格納し、端末１０２に通知する。ここで、デバイス・サービス定義とは、周辺機器１０３がどのような種類のもので、周辺機器１０３の被制御部１１３がどのようなサービスを提供可能か記述したデータ、もしくはサービスを記録したファイルであり、たとえば、ＵＰｎＰにおけるデバイス定義、サービス定義を記述したＸＭＬファイルからなる。
【００２７】
センサ・端末情報集約部２０４は、端末１０２もしくは周辺機器１０３から通知されたセンサ情報、あるいは利用可能サービス確認部２２３から通知された周辺機器１０３の利用可能サービスの情報に基づきデータ集約をおこない、コンテキスト生成のための情報としてコンテキスト生成部２０１へ通知する。
【００２８】
（端末）
端末１０２は、端末内蔵センサ１１２と、周辺機器連携部２３１と、センサ・端末情報集約部２３２と、を含む。周辺機器連携部２３１は、端末１０２の周辺に存在する周辺機器１０３のサービスを発見してサーバ装置１０１に通知し、サーバ装置１０１からの命令、もしくはプログラムにしたがって周辺機器１０３の制御をおこなう。周辺機器連携部２３１は、サービス発見・通知部２３３と、タスクコントローラ実行部２３４と、を含む。
【００２９】
サービス発見・通知部２３３は、端末１０２の周辺の周辺機器１０３のサービスを発見し、サーバ装置１０１へ通知する。サービスの発見は、たとえば、ＵＰｎＰにおけるＭ−ＳＥＡＲＣＨを用いる。タスクコントローラ実行部２３４は、サーバ装置１０１から通知されたタスクコントローラをダウンロードし、周辺機器１０３の制御、およびアプリケーション２３５の実行を統括する。センサ・端末情報集約部２３２は、端末１０２の周辺の周辺機器１０３の機器内蔵センサ１１４のセンサ情報からデータを収集して集約をおこない、サーバ装置１０１へ通知する。
【００３０】
（周辺機器）
周辺機器１０３は、被制御部１１３と、機器内蔵センサ１１４と、応答・広告部２４１と、を含む。応答・広告部２４１は、周辺機器１０３の周辺の端末１０２からの機器検索メッセージに対して応答をおこない、定期的に自身の存在や機器情報を端末１０２に広告する。被制御部１１３は、端末１０２からの制御命令にしたがい、周辺機器１０３が有する機能を制御する。
【００３１】
（サーバ装置の処理内容）
（センサ・端末情報集約部の処理について）
つぎに、上記構成における情報収集処理について説明する。図３は、情報収集機能を説明するブロック図である。図３を用いて、サーバ装置１０１および端末１０２に設けられるセンサ・端末情報集約部２０４，２３２におけるセンサ情報収集の処理を説明する。
【００３２】
端末１０２のセンサ・端末情報集約部２３２により集約されたセンサ情報は、サーバ装置１０１のセンサ・端末情報集約部２０４に収集され、端末１０２内のセンサ・端末情報集約部２３２と同様の処理をおこなう。端末１０２で集約されたセンサ情報は、サーバ装置１０１内のセンサ・端末情報集約部２０４に直接通知せず、別の端末１０２内のセンサ・端末情報集約部２３２によりセンサ情報を集約してからサーバ装置１０１へ集約した情報を送信することも可能である。また、周辺機器１０３内の機器内蔵センサ１１４で計測されたデータは、端末１０２のセンサ・端末情報集約部２３２に通知せず、直接、サーバ装置１０１内のセンサ・端末情報集約部２０４に通知することもできる。
【００３３】
端末１０２のセンサ・端末情報集約部２３２は、サーバ装置１０１へのセンサ情報転送にかかるトラフィック量の削減、および、データ処理量の削減のために、計測データを集約することができる。データの集約例は、たとえば、センサ・端末情報集約部２３２は、時刻１０：００：００に計測したデータと、時刻１０：００：０５に計測したデータの平均値をとる。そして、センサ・端末情報集約部２３２は、１０：００：００と１０：００：０５のデータを、算出した値により新たに１０：００：００のデータに置き換える。これにより、２つのデータを１つのデータとして集約し、データサイズを小さくし、サーバ装置１０１に転送する。
【００３４】
（コンテキスト生成部の処理について）
図４は、コンテキスト生成部の処理を説明する図である。サーバ装置１０１のコンテキスト生成部２０１におけるコンテキストの生成と、タスク管理部２０２へのコンテキスト情報通知について説明する。コンテキスト生成部２０１は、センサ・端末情報集約部２０４からセンサ情報と、周辺機器１０３の情報を取得する。また、コンテキスト取得制御情報保存部２１１からコンテキスト取得制御情報を取得する。そして、これらセンサ情報と、周辺機器１０３の情報と、コンテキスト取得制御情報とに基づき、コンテキストを生成し、タスク選択部２１４に送る。
【００３５】
図５は、コンテキスト生成部の処理を示すフローチャートである。コンテキスト生成部２０１は、はじめに、センサ・端末情報集約部２０４からセンサ情報や周辺機器１０３の情報を取得する（ステップＳ５０１）。つぎに、取得した情報を元に、コンテキストの生成をおこなう（ステップＳ５０２）。つぎに、タスク管理部２０２よりコンテキスト取得制御情報を受信済みであるか判断し（ステップＳ５０３）、受信済みであれば（ステップＳ５０３：Ｙｅｓ）、現在、コンテキスト制御情報のコンテキスト取得タイミングであるかを判断する（ステップＳ５０４）。コンテキスト取得タイミングであれば（ステップＳ５０４：Ｙｅｓ）、コンテキストをコンテキスト取得制御情報に基づき加工（抽象化もしくは具体化）し（ステップＳ５０５）、タスク管理部２０２へコンテキスト情報を通知する（ステップＳ５０６）。
【００３６】
一方、現在、タスク管理部２０２のコンテキスト取得タイミングでなければ（ステップＳ５０４：Ｎｏ）、処理を終了し、次回のコンテキスト取得タイミング時に再度ステップＳ５０１以降の処理を実行する。
【００３７】
また、ステップＳ５０３の判断の結果、タスク管理部２０２よりコンテキスト取得制御情報を受信済みでなければ（ステップＳ５０３：Ｎｏ）、タスク管理部２０２よりコンテキスト取得制御情報を受信する（ステップＳ５０７）。そして、ステップＳ５０４以降の処理を実行する。
【００３８】
（タスク管理部の処理について）
図６は、タスク管理部の処理を説明する図である。タスク管理部２０２がおこなうタスクの選択と、サービス管理部２０３へのタスク情報の通知の処理について説明する。タスク選択部２１４は、コンテキスト情報と、タスク選択ルール保存部２１３に保存されたタスク選択ルール（優先度や依存タスクＩＤ等の情報を含む）に基づき、登録タスク保存部２１２より実行するタスクを選択する。そして、タスク選択部２１４は、タスク管理部２０２（タスク・サービス確認部２２４）の情報により実行可能なタスクが１つ以上存在する場合、選択したタスクのうち、最も優先順位が高いタスクの情報をサービス管理部２０３へ送信する。
【００３９】
サーバ装置１０１（タスク管理部２０２）には、管理者端末１０２ａが接続され、コンテキスト取得制御情報をコンテキスト取得制御情報保存部２１１に保存する。また、タスク情報を登録タスク保存部２１２に保存する。また、タスクの優先度（優先順位）や、依存タスク（依存タスクＩＤ）の情報をタスク選択ルール保存部２１３に保存する。
【００４０】
図７は、タスク管理部の処理を示すフローチャートである。タスク管理部２０２のタスク選択部２１４が実行する処理について説明する。はじめに、タスク選択部２１４は、コンテキスト情報をコンテキスト生成部２０１から取得するまで待機し（ステップＳ７０１）、コンテキスト情報をコンテキスト生成部２０１から取得する（ステップＳ７０２）。
【００４１】
つぎに、タスク選択部２１４は、タスク選択ルールのテーブルに、受信したコンテキスト情報と一致するデータが存在するか判断する（ステップＳ７０３）。タスク選択部２１４は、一致するデータが存在すれば（ステップＳ７０３：Ｙｅｓ）、この一致するデータのうち、依存タスクＩＤのタスクが終了しているものが存在するか判断する（ステップＳ７０４）。
【００４２】
そして、タスク選択部２１４は、依存タスクＩＤのタスクが終了しているものが存在すれば（ステップＳ７０４：Ｙｅｓ）、依存タスクＩＤのタスクが終了しているタスクを選択し、そのうち、最も優先順位が高いタスクの情報をサービス管理部２０３へ送信する（ステップＳ７０５）。一方、タスク選択部２１４は、ステップＳ７０３において、受信したコンテキスト情報と一致するデータが存在しない場合（ステップＳ７０３：Ｎｏ）、およびステップＳ７０４において、依存タスクＩＤのタスクが終了しているものが存在しない場合（ステップＳ７０４：Ｎｏ）には、今回のタスク選択の処理を終了する。
【００４３】
タスク選択部２１４は、ステップＳ７０５の処理後、サービス管理部２０３よりタスク実行不可メッセージを受信したか判断する（ステップＳ７０６）。タスク実行不可メッセージを受信した場合には（ステップＳ７０６：Ｙｅｓ）、タスク選択部２１４は、登録タスク保存部２１２のタスク情報のうち実行不可タスクを除いたものの中から、コンテキスト情報とタスク選択ルールに基づき、実行するタスクを再度選択し（ステップＳ７０７）、ステップＳ７０３に戻る。一方、サービス管理部２０３よりタスク実行不可メッセージを受信しなかった場合は（ステップＳ７０６：Ｎｏ）、今回のタスク選択の処理を終了する。
【００４４】
（サービス管理部について）
図８は、サービス管理部の処理を説明する図である。サービス管理部２０３におけるサービスの確認と、タスクコントローラの送信の処理について説明する。タスク・サービス確認部２２４は、タスク管理部２０２（タスク選択部２１４）から通知されたタスクの情報を得る。また、タスク・サービス対応関係保存部２２１からタスクに対応するサービス情報を取得し、利用可能サービス確認部２２３からサービス情報を得る。これらの情報により、タスク・サービス確認部２２４は、通知されたタスクが実行可能であるかサービス情報と照合する。
【００４５】
タスクコントローラ管理部２２６では、タスク・サービス確認部２２４から実行可能なタスク情報（実行タスク情報）を得て、タスクコントローラ保存部２２５から対応するタスクコントローラを取得し、端末１０２へ送信する。デバイス・サービス定義情報保存部２２７では、周辺機器１０３のデバイス・サービス定義を格納しており、端末１０２により、端末１０２が発見した周辺機器１０３のサービスをデバイス・サービス定義情報保存部２２７を参照して通知を得る。利用可能サービスキャッシュ２２２は、端末１０２からの機器サービス情報を格納し、利用可能サービス確認部２２３により利用サービスの確認時に参照される。利用可能サービスキャッシュ２２２に格納された機器サービス情報は、一定時間後に削除される。
【００４６】
サーバ装置１０１（サービス管理部２０３）には、管理者端末１０２ａが接続され、タスクと、サービスの関連付けの情報をタスク・サービス対応関係保存部２２１に保存する。また、タスクコントローラをタスクコントローラ保存部２２５に保存する。また、デバイス・サービス定義をデバイス・サービス定義情報保存部２２７に保存する。
【００４７】
図９は、サービス管理部の処理を示すフローチャートである。サービス管理部２０３が実行する処理について説明する。はじめに、タスク・サービス確認部２２４は、タスク情報をタスク管理部２０２から取得するまで待機し（ステップＳ９０１）、タスク情報をタスク管理部２０２から取得する（ステップＳ９０２）。つぎに、タスク・サービス確認部２２４は、タスク・サービス対応関係保存部２２１より、このタスクを実行するためのサービスを取得する（ステップＳ９０３）。
【００４８】
つぎに、タスク・サービス確認部２２４は、利用可能サービス確認部２２３を介して、利用可能サービスキャッシュ２２２に、このサービス情報が存在するか確認する（ステップＳ９０４）。サービス情報が存在する場合には（ステップＳ９０４：Ｙｅｓ）、タスクコントローラ管理部２２６は、タスクコントローラ保存部２２５よりこのタスクを実行するためのタスクコントローラを取得し（ステップＳ９０５）、このタスクコントローラを端末１０２へ送信し（ステップＳ９０６）、１つのタスクの処理を終了する。
【００４９】
ステップＳ９０４において、利用可能サービスキャッシュに、サービス情報が存在しない場合には（ステップＳ９０４：Ｎｏ）、端末１０２に対して利用可能サービス確認部２２３が周辺機器１０３のサービス検索要求を一定回数以上おこなったかを確認し（ステップＳ９０７）、一定回数以上おこなった場合には（ステップＳ９０７：Ｙｅｓ）、タスク・サービス確認部２２４は、タスク実行不可メッセージをタスク管理部２０２へ通知し（ステップＳ９０８）、１回の処理を終了する。
【００５０】
一方、ステップＳ９０７において、利用可能サービス確認部２２３が端末１０２に対して周辺機器１０３のサービス検索要求を一定回数以上行っていない場合には（ステップＳ９０７：Ｎｏ）、利用可能サービス確認部２２３は、端末１０２へ周辺機器１０３のサービス検索要求を通知し（ステップＳ９０９）、一定期間後に利用可能サービスキャッシュ２２２をチェックする（ステップＳ９１０）。この後、ステップＳ９０４に戻る。
【００５１】
（端末の処理内容）
（周辺機器連携部の処理について）
図１０は、周辺機器連携部の処理を説明する図である。端末１０２の周辺機器連携部２３１がおこなうサービス検索、および、タスクコントローラによる機器の制御について説明する。サービス・発見通知部２３３は、サーバ装置１０１のサービス管理部２０３（利用可能サービス確認部２２３）からの周辺機器１０３のサービス検索要求に対応し、周辺機器１０３の検索をおこなう。そして、周辺機器１０３からの応答により、デバイス・サービス定義情報保存部２２７からこの周辺機器１０３のサービスを取得し、サービス管理部２０３の利用可能サービスキャッシュ２２２と、センサ・端末情報集約部２３２にこの周辺機器１０３のサービスを通知する。
【００５２】
タスクコントローラ実行部２３４は、サーバ装置１０１のサービス管理部２０３（タスクコントローラ管理部２２６）から受信したタスクコントローラにしたがって、アプリケーション２３５および周辺機器１０３を制御する。
【００５３】
図１１は、周辺機器連携部のサービス検索処理を示すフローチャートである。周辺機器連携部２３１のサービス発見・通知部２３３がおこなうサービス検索処理について説明する。サービス発見・通知部２３３は、サーバ装置１０１のサービス管理部２０３（利用可能サービス確認部２２３）から周辺機器１０３のサービス検索要求を受信するまで待機し（ステップＳ１１０１）、サービス管理部２０３から周辺機器１０３のサービス検索要求を受信すると（ステップＳ１１０２）、サービス発見・通知部２３３は、周辺機器１０３の検索をおこなう（ステップＳ１１０３）。
【００５４】
つぎに、サービス発見・通知部２３３は、周辺機器１０３からの検索の応答を受信すると（ステップＳ１１０４）、周辺機器１０３からの検索の応答にしたがい、デバイス・サービス定義情報保存部２２７よりこの周辺機器１０３のサービスを取得する（ステップＳ１１０５）。そして、サービス発見・通知部２３３は、サービス管理部２０３の利用可能サービスキャッシュ２２２にこのサービスを通知し（ステップＳ１１０６）、また、センサ・端末情報集約部２３２にこのサービスを通知し（ステップＳ１１０７）、１回の処理を終了する。
【００５５】
図１２は、周辺機器連携部のタスクコントローラに関する処理を示すフローチャートである。周辺機器連携部２３１のタスクコントローラ実行部２３４がおこなうタスクコントローラの受信から実行にかかる処理を説明する。はじめに、タスクコントローラ実行部２３４は、サーバ装置１０１のサービス管理部２０３（タスクコントローラ管理部２２６）からタスクコントローラを受信するまで待機し（ステップＳ１２０１）、サービス管理部２０３からタスクコントローラを受信すると（ステップＳ１２０２）、受信したタスクコントローラにしたがい、アプリケーション２３５および周辺機器１０３を制御し（ステップＳ１２０３）、１回の処理を終了する。
【００５６】
（周辺機器の処理内容）
図１３は、周辺機器の処理を説明する図である。応答・広告部２４１は、端末１０２の周辺機器連携部２３１（サービス発見・通知部２３３）からの機器検索メッセージがあると、周辺機器１０３の存在や機器情報を応答する。被制御部１１３は、端末１０２の周辺機器連携部２３１（タスクコントローラ実行部２３４）からの制御命令にしたがい、周辺機器１０３が有する機能を実行制御する。機器内蔵センサ１１４は、センサ計測情報を端末１０２のセンサ・端末情報集約部２３２またはサーバ装置１０１のセンサ・端末情報集約部２０４に送る。
【００５７】
（タスク実行の具体的処理例）
（１．周辺機器との連携をおこなう例）
つぎに、タスク実行の具体的処理例について説明する。はじめに、周辺機器１０３によるタスクとして調理支援をおこなう例について説明する。
【００５８】
タスクは、料理の過程における個々の材料を準備・調理する作業であり、事前に登録した依存関係にしたがって自動的に調理をおこなう。そして、各周辺機器１０３（調理機器）は、端末１０２から操作可能である。調理機器には、機器内蔵センサ１１４として、温度センサやタイマが搭載されている。
【００５９】
図１４−１は、タスクの具体例を示す図表である。登録タスク保存部２１２に保存されるハンバーグ調理にかかるタスクの情報１４００を示す。タスクの情報１４００は、タスクＩＤと、ユーザと、タスクからなる。タスクＩＤとしてＴ１〜Ｔ６が設定され、タスクＩＤがＴ１のタスクは「材料用意」であり、ユーザは「Ａさん」であり、以下順に調理のタスクであり、タスクＩＤがＴ６のタスクは「材料を焼く」であり、ユーザは「Ａさん」である。タスクＴ１〜Ｔ６は、周辺機器１０３である調理機器を端末１０２経由で制御する。また、タスクＴ１では端末１０２の図示しない表示部に、「材料用意」を指示する情報を表示しユーザに伝える。
【００６０】
図１４−２は、タスクの依存関係を説明する図である。調理開始は、タスクＴ１から実行し、タスクＴ２とタスクＴ４は、依存関係が分岐しており同時に実行できるが、タスクＴ１の終了後に実行される依存関係にある。また、タスクＴ３は、タスクＴ２の実行後に実行される依存関係にある。また、タスクＴ５は、タスクＴ３と、タスクＴ４の終了後に実行される依存関係にある。タスクＴ６は、タスクＴ５の実行後に実行される依存関係にある。
【００６１】
すなわち、タスクＴ３の「玉葱炒め」と、タスクＴ４の「肉をひいてミンチに」という２つのタスクを終了していないと、タスクＴ５の「材料をまぜて成形」というタスクは調理上、実行できない。このようなタスク依存関係は、後述するタスク選択ルールとしてタスク選択ルール保存部２１３に保存される。なお、図中のＰ１，Ｐ２は優先度である。
【００６２】
図１５は、端末あるいは周辺機器から収集したデータの一例を示す図表である。端末１０２の端末内蔵センサ１１２、もしくは周辺機器１０３の機器内蔵センサ１１４から通知される計測データの例を示す。図１５に例示した計測データ１５００は、周辺機器１０３としての調理器具（コンロ、鍋、フライパンなど）の温度センサを機器内蔵センサ１１４として用いる。端末１０２のセンサ・端末情報集約部２３２は、温度センサの値を計測し、コンテキスト情報生成に使用する。
【００６３】
図１５に示す例では、時刻「１０：００：００」にセンサＩＤ１のセンサの温度が「２００．４℃」であり、この後、時刻「１０：００：０１」にセンサＩＤ１のセンサの温度が「２００．６℃」であることを示している。
【００６４】
図１６は、生成されるコンテキスト情報の例を示す図表である。図１６のコンテキスト情報１６００では、調理器具が高温か低温かという情報をコンテキストとして使用する。このコンテキスト情報１６００は、具体的には、コンテキスト生成部２０１は、ユーザのＡさんについて、設定した時刻「１０：００：１５」における場所として厨房にいることを検出し、これらを対応付けたコンテキスト情報を生成する。さらに詳細な場所として、コンロ１の温度が１８０℃以上、コンロ２の温度が２００℃以上であることを検出している。図示のようにコンテキスト生成部２０１は、複数のユーザのコンテキスト情報を生成する。
【００６５】
図１７は、コンテキスト取得制御情報の例を示す図表である。コンテキスト取得制御情報１７００は、コンテキスト取得制御情報保存部２１１に保存され、コンテキストの粒度やコンテキストの取得タイミング等からなる。このコンテキスト取得制御情報１７００の例を説明すると、ユーザのＡさんについて、取得コンテキストが「温度」であり、取得タイミングが「条件一致時」、条件が「コンロ１の温度が１８０℃以上」である。コンテキスト生成部２０１は、調理器具が上記の温度に達したら、タスク管理部２０２に対し、コンテキストとして温度情報を通知する。
【００６６】
図１８は、タスク選択ルールの例を示す図表である。タスク選択ルール保存部２１３に保存されるタスク選択ルール１８００について説明する。タスク選択ルール１８００は、上述した登録タスクについてのコンテキスト条件と、優先度と、依存タスクＩＤとからなる。たとえば、タスクＴ２のコンテキスト条件は「Ｔ１終了」、優先度は「Ｐ２」、依存タスクＩＤは「Ｔ１」である。優先度はＰ１＜Ｐ２である。
【００６７】
図１９は、タスク・サービス対応関係の例を示す図表である。タスク・サービス対応関係保存部２２１に保存されるタスク・サービス対応関係情報１９００について説明する。タスク・サービス対応関係情報１９００は、各タスクを実行するために必要な周辺機器１０３（調理機器）のサービスを対応付けたものである。たとえば、タスクＴ２のサービスは「野菜カッターサービス」であり、登録タスク（図１４−１参照）のタスクＴ２「玉葱みじん切り」に対応するサービスである。
【００６８】
図２０は、デバイス・サービス定義情報の例を示す図表である。デバイス・サービス定義情報保存部２２７に保存されるデバイス・サービス定義情報２０００について説明する。デバイス・サービス定義情報２０００は、周辺機器１０３である調理機器が提供するサービスを対応付けたものである。たとえば、デバイス（被制御部１１３）として「野菜カッター」のサービスは「野菜カッターサービス」である。
【００６９】
つぎに、上述した各設定内容に基づく、タスク（調理）の実行手順について説明する。はじめに、タスク管理部２０２は、タスク選択ルール１８００により、コンテキスト条件ＮＵＬＬのタスクＴ１（材料用意）を選択し、実行する。この際、タスクＴ１に対応するサービスはＮＵＬＬであるが、ユーザの端末１０２にどの材料が必要かのメッセージを表示する。
【００７０】
そして、サービス管理部２０３は、端末１０２を介して周辺機器１０３が実行したタスクＴ１が終了したことをタスクコントローラ実行部２３４に通知する。これにより、タスク管理部２０２は、タスクＴ１の終了がコンテキスト条件であり、かつ、優先度が高いＴ２（玉葱みじん切り）を選択し、実行する。タスクＴ２の実行においては、周辺機器１０３の「野菜カッター」が提供するサービス「野菜カッターサービス」を利用する。
【００７１】
この後、サービス管理部２０３がタスクＴ２が終了したことをタスク管理部２０２に通知すると、タスク管理部２０２は、コンテキスト条件「Ｔ２「終了」＆＆コンロ１．温度≧１８０℃」が成立している場合、優先度Ｐ２のタスクＴ３（玉葱炒め）を選択し、実行する。コンテキスト条件が成立していなければ、先にタスクＴ４「肉をひいてミンチに」を実行することが可能である。タスクＴ３の実行においては、タスクコントローラ実行部２３４は、周辺機器１０３「コンロ１」が提供する「機器温度調整サービス」および「タイマサービス」を利用する。
【００７２】
この後、タスク管理部２０２は、まだタスクＴ４（肉をひいてミンチに）が実行されていなければ、タスクＴ４を実行する。タスクＴ４の実行においては、タスクコントローラ実行部２３４は、周辺機器１０３の「ミンチ機」が提供する「精肉ミンチ機サービス」を利用する。
【００７３】
そして、サービス管理部２０３は、タスクＴ３およびＴ４が終了し、タスク管理部２０２に終了通知すると、タスク管理部２０２は、タスクＴ３とタスクＴ４の終了がコンテキスト条件であるタスクＴ５「材料を混ぜて成形」を実行する。タスクＴ５の実行においては、タスクコントローラ実行部２３４は、周辺機器１０３「ミキサー」が提供する「材料ミキサーサービス」を利用する。
【００７４】
この後、サービス管理部２０３は、タスクＴ５が終了したことをタスク管理部２０２に通知すると、タスク管理部２０２は、タスクＴ５の終了がコンテキスト条件であるタスクＴ６「材料を焼く」を選択し、実行する。タスクＴ６の実行においては、タスクコントローラ実行部２３４は、周辺機器１０３の「コンロ２」が提供する「機器温度調整サービス」および「タイマサービス」を利用する。
【００７５】
以上説明したように、周辺機器が有する調理にかかる複数の機能について、複数のタスクの実行順序を管理し、実行することにより、料理を手際よく効率的におこなうことができるようになる。また、タスク同士の依存関係とタスクに付した優先度により、調理の手順を間違うことなく、そのときに必要な調理操作を適切に実行できるようになる。
【００７６】
（２．周辺機器との連携をおこなわない例）
つぎに、周辺機器１０３を用いずに、作業者が端末１０２だけを用いて車の修理作業の支援をおこなう例について説明する。また、この例では、場所を問わないため、場所にかかるコンテキストを使用しない。そして、修理手順は、端末１０２の表示部のＷｅｂブラウザで表示される。
【００７７】
以下に説明する修理作業は複数の修理工程で構成され、各修理工程がタスクに対応する。作業者は、修理の遂行にあわせて順次表示される修理手順にしたがって修理作業をおこなっていく。たとえば、「場所Ａと、場所Ｂのネジを外して、パーツＣを取り外す」等である。また、この例では、タスクの依存関係は、各タスクが直列に配置され、分岐はない。
【００７８】
概要を説明すると、１．はじめにサーバ装置１０１が端末１０２に対し、作業手順を説明するコンテンツのＵＲＬを送信する。２．ＵＲＬを受け取った端末１０２は、ブラウザを起動すると共にブラウザにＵＲＬを通知する。３．端末１０２は、ブラウザが指定されたＵＲＬにアクセスし、作業手順を説明するコンテンツを表示する。４．作業者は、表示されたコンテンツにしたがって修理作業をおこなう。５．作業者は、１つの修理工程が完了すると、端末１０２のブラウザ上の「作業終了」ボタンを操作する。６．サーバ装置１０１は、端末１０２から作業終了の通知を受けて、つぎの修理工程を説明するコンテンツのＵＲＬを端末１０２に通知する。以降、一連の修理作業がすべて終了するまで、サーバ装置１０１は、端末１０２に対し、上記４．〜６．の処理を繰り返す。
【００７９】
つぎに、タスク依存関係について説明する。この車の修理作業であり、以下の前提を有するとする。修理作業は作業者Ａによって実行され、修理作業の開始時刻は１３：３０とする。修理作業は、各タスクＴ１，Ｔ２，Ｔ３の３つの修理工程（タスク）で実現され、これらのタスクは順番に実行されなければならない。オイル交換を例にとると、各タスクは、タスクＴ１「古いオイルの除去」、タスクＴ２「エンジン内部の洗浄」、タスクＴ３「新しいオイルの投入」となる。
【００８０】
図２１−１は、タスク選択ルールの例を示す図表である。タスク選択ルール保存部２１３に保存されるタスク選択ルール２１００は、たとえば、作業者Ａについて、タスクＴ２のコンテキスト条件は「Ｔ１終了」、優先度は「５」、依存タスクＩＤは「Ｔ１」である。優先度は値が高いほど優先度が高い。なお、図示の例では、優先度は同じとした。
【００８１】
図２１−２は、タスクの依存関係を説明する図である。修理開始は、タスクＴ１から実行し、タスクＴ１が終了後にタスクＴ２が実行される依存関係にある。また、タスクＴ３は、タスクＴ２の実行後に実行される依存関係にある。
【００８２】
図２２は、タスク・サービス対応関係の例を示す図表である。タスク・サービス対応関係保存部２２１に保存されるタスク・サービス対応関係情報２２００は、図示のように、この例では、タスクの実行にあたって周辺機器１０３が提供するサービスを利用しないため、タスク・サービス対応関係情報２２００にサービス情報は登録されない（ＮＵＬＬが登録される）。これに限らず、周辺機器１０３のサービスを利用しない場合には、タスク・サービス対応関係情報２２００に、タスクＴ１〜Ｔ３のタスクＩＤを登録しない設定としてもよい。タスク・サービス確認部２２４は、タスク・サービス対応関係情報２２００にタスクＩＤが未登録の場合は、周辺機器１０３利用サービスなし、と判断する。
【００８３】
図２３は、コンテキスト取得制御情報の例を示す図表である。コンテキスト取得制御情報２３００は、コンテキスト取得制御情報保存部２１１に保存され、コンテキストの粒度やコンテキストの取得タイミング等からなる。このコンテキスト取得制御情報２３００の例を説明すると、ユーザの作業者Ａについて、取得コンテキストが「時間」であり、取得タイミングが「条件一致時」、条件が「時刻１３：３０」である。コンテキスト生成部２０１は、時間が上記の時刻に達したら、タスク管理部２０２に対し、コンテキストとして時間情報を通知する。
【００８４】
図２４は、登録タスクの追加情報の例を示す図表である。この図２４を用いて、タスク追加情報について説明する。この例では、サーバ装置１０１が端末１０２に対してタスクの起動を要求する際、車の修理作業を説明するコンテンツのＵＲＬを端末１０２に通知する。登録タスク保存部２１２には、図２４に示すタスクの情報２４００として、タスクＩＤと、タスク毎の関連情報としてＵＲＬを格納する。
【００８５】
端末１０２に通知する追加情報（ＵＲＬ）については、以下のように管理する構成にできる。
１．コンテキスト生成部２０１で管理する。この場合、タスク管理部２０２は、コンテキスト生成部２０１から受信したタスク関連情報をそのまま端末１０２に送る。
２．コンテキスト生成部２０１からタスク起動要求を受信するアプリケーション２３５を定義し、このアプリケーション２３５が追加情報（ＵＲＬ）を管理する。この場合、アプリケーション２３５は、タスク関連情報を伴ったタスク起動要求をタスク管理部２０２に送信する。タスク管理部２０２は、アプリケーション２３５から受信したタスク関連情報をそのまま端末１０２に送る。
【００８６】
つぎに、上述した各設定内容に基づく、タスク（車の修理作業）の実行手順について説明する。はじめに、１．タスク管理部２０２は、タスクＴｘの起動が必要であることを認識すると、端末１０２に対してタスク起動要求メッセージを送信する。タスク起動要求メッセージには、起動すべきアプリケーション２３５として、一般的なＷｅｂブラウザ（端末１０２にあらかじめインストールしておく）と、ＷｅｂブラウザがアクセスすべきＵＲＬを含む。
２．つぎに、端末１０２は、タスク起動要求メッセージを受信すると、Ｗｅｂブラウザを起動すると共に、Ｗｅｂブラウザにサーバ装置１０１から通知されたＵＲＬを渡し、このＵＲＬにアクセスする。
【００８７】
３．上記手順２．の結果、ＵＲＬに対応するコンテンツを端末１０２の表示部に表示する。このコンテンツは、修理対象の車種に応じて、各タスクＴ１〜Ｔ３を実行するために必要な情報である。たとえば、修理対象車種のオイル交換手順（最初に箇所ＡのボルトＢを外す、等）を示すコンテンツを表示する。
４．作業者は、端末１０２に表示されたコンテンツを閲覧しながらタスクに対応した修理作業をおこない、１つのタスク（修理工程）を完了したとき、端末１０２の表示部に表示される「作業終了」ボタンを操作する。
【００８８】
５．ボタンの操作により、端末１０２は、タスクＴｘが終了した旨の通知をタスク管理部２０２に通知する。
６．タスク管理部２０２は、タスクＴｘが終了した旨をコンテキスト生成部２０１に通知する。これにより、コンテキスト生成部２０１は、作業者のコンテキストを更新する。これにより、作業者の状態が「タスクＴｘ終了」状態に遷移する。
７．コンテキストの更新に応じて、サーバ装置１０１は、タスク選択部２１４により新たなタスクの起動制御を開始する。以降、上記１．に戻り、つぎのタスクにかかる処理を実行する。
【００８９】
図２５は、タスクの実行手順を示すシーケンス図である。図２５に示したコンテンツ保持部２５００は、コンテキスト生成部２０１の一部に設け、ＵＲＬのコンテンツを保持する例とした。はじめに、サーバ装置１０１のコンテキスト生成部２０１が時刻「１３：３０」を検知し（ステップＳ２５０１）、タスク管理部２０２にコンテキスト情報通知する（ステップＳ２５０２）。このコンテキスト情報通知には、ユーザＩＤが作業者Ａであり、時刻が１３：３０であることを含む。つぎに、タスク管理部２０２は、コンテキスト情報通知を受けて、作業者Ａの端末１０２に対し、タスク起動要求をおこなう（ステップＳ２５０３）。このタスク起動要求は、アプリケーション２３５がブラウザ、ＵＲＬが図２４に示したタスクＴ１のＵＲＬ（ｈｔｔｐ：／／ｃａｒＡ＿ｏｉｌ１．ｈｔｍｌ）である。
【００９０】
端末１０２では、タスクコントローラ実行部２３４がタスク起動要求を受け、アプリケーション２３５であるブラウザに起動要求する（ステップＳ２５０４）。この起動要求には、タスクＴ１のＵＲＬ（ｈｔｔｐ：／／ｃａｒＡ＿ｏｉｌ１．ｈｔｍｌ）を含む。
【００９１】
端末１０２は、起動要求に基づき、サーバ装置１０１のコンテンツ保持部２５００に対し、コンテンツ表示のためのＨＴＴＰ要求をおこなう（ステップＳ２５０５）。ＨＴＴＰ要求は上記ＵＲＬアドレスを含み、コンテンツ保持部２５００は、ＨＴＴＰ応答を端末１０２のブラウザ２３５に返す（ステップＳ２５０６）。これにより、端末１０２では表示部上にＷｅｂ画面でタスクＴ１の修理工程の画面が表示され、タスクＴ１による１つの修理工程を表示部の表示画面を見ながら容易におこなえるようになる。
【００９２】
この後、作業者ＡがタスクＴ１の修理工程を完了したとき、端末１０２の表示部に表示される「作業終了」ボタンを操作すると（ステップＳ２５０７）、ブラウザ２３５は、タスク終了通知をサーバ装置１０１のタスク管理部２０２に送信する（ステップＳ２５０８）。このタスク終了通知には、ユーザＩＤが作業者Ａであり、コンテキストがタスクＴ１終了を含む。
【００９３】
タスク管理部２０２は、タスク終了通知を受けると、タスクＴ１の終了後に実行される依存関係にあるタスクＴ２を次に実行すべきタスクとして選択し、作業者Ａの端末１０２に対し、タスク起動要求をおこなう（ステップＳ２５０９）。以降、タスクＴ３についても上記同様の処理をおこなう。
【００９４】
以上説明した具体例によれば、周辺機器を用いたタスク実行に限らず、端末そのものを用いてタスク実行することもできるようになる。また、上述した車の修理について、複数のタスクの実行順序を管理し、実行することにより、修理を工程毎に手際よく効率的におこなうことができるようになる。また、端末の表示部の画面上には各修理工程毎に必要な情報を実際の画面を用いて表示することができるから、修理する際の場所や部品を間違うことがなく、各画面を切り替えていくだけで修理作業を終了させることができるようになる。
【００９５】
以上説明した実施の形態１によれば、ユーザやその周辺環境のコンテキストと、周辺機器が提供するサービスとに基づいて、優先順位やタスク間の依存関係を考慮して複数のタスクを順次実行することができる。これにより、ユーザの作業ミスや、作業効率の低下を抑えることができるようになる。また、コンテキスト処理と、タスク処理の切り分けを明確に区分しているため、コンテキスト処理のアルゴリズムの変更を容易におこなうことができ、タスク処理に影響を与えず、システムの開発を容易におこなうことができるようになる。
【００９６】
（実施の形態２）
実施の形態２は、新たなタスクの割り込みと、実行中のタスクの中断の処理をおこなう構成である。タスクの割り込みは、たとえば、あるユーザが定型的な仕事を実行していたときに、急に新たな仕事を処理しなければならないときなどに生じる。この実施の形態では、ユーザ単位で割り込み、および中断の処理をおこなう。
【００９７】
図２６は、実施の形態２にかかるタスク実行制御システムの構成を示す図である。図２６は、主に実施の形態１と異なる構成を抽出して記載してあり、他の構成は、実施の形態１（図２）とほぼ同様であるが、以下の点で異なる。コンテキスト生成部２０１には各タスクを起動するために満たされるべきコンテキスト条件が登録される。コンテキスト生成部２０１は、当該コンテキスト条件に基づいて起動可能なタスクの有無を判定し、起動可能なタスクが存在する場合には、当該タスクに関する情報がタスク選択部２１４に通知される。また、端末において、周辺機器１０３や端末画面の制御等、各タスクで行うべきすべての処理はアプリケーション２３５によって行われ、以後当該アプリケーションをタスクコントローラと呼ぶ。また、タスクコントローラ実行部２３４は、当該タスクコントローラの起動／中断／再開といったタスクコントローラに共通的な制御を行うものとして位置づけている。以下、実施の形態１と異なる構成について説明する。
【００９８】
（サーバ装置の構成）
タスク管理部２０２のタスク選択部２１４は、端末１０２のタスクコントローラ実行部２３４に対し、タスクの実行開始／中断／再開要求をおこない、タスクの実行開始／中断／再開応答を受ける。このタスク選択部２１４に設けられるタスクスケジューラ２１４ａは、ユーザ毎に、コンテキスト生成部２０１からコンテキスト情報を受けて実行待ち状態にある１つ以上のタスク、および実行中のタスクに関する情報（タスクキュー）を管理する。
【００９９】
タスクスケジューラ２１４ａは、実行中状態のタスクのＩＤと優先度（０個または１個のタスクの情報を管理）を実行中タスク２６０１として管理し、実行待ち状態にあるタスクのＩＤと優先度（０個以上のタスクの情報を管理）をタスクキュー２６０２を用いて管理する。タスクスケジューラ２１４ａは、タスクＩＤと、タスクの優先度のリストに基づき端末１０２で実行可能なタスクを管理する。
【０１００】
登録タスク保存部２１２には、ユーザＩＤ２６１１と、タスクＩＤ２６１２と、タスク起動条件２６１３と、優先度２６１４と、実行状態２６１５の各情報がテーブル形式で保存されている。ユーザＩＤ２６１１は、タスクを実行すべきユーザのＩＤであり、実行すべきユーザを指定しない場合は、その旨を示すＩＤ（たとえば０）が保持される。タスクＩＤ２６１２は、タスクの識別子（ＩＤ）である。タスク起動条件２６１３は、タスクを起動するための条件である。優先度２６１４は、タスクの優先度である。実行状態２６１５は、タスクの実行状態（未実行、完了済み）を示している。
【０１０１】
（端末の構成）
端末１０２のタスクコントローラ実行部２３４は、サーバ装置１０１のタスクスケジューラ２１４ａの指示により、タスクコントローラの起動、中断、再開を制御する。また、タスクコントローラ実行部２３４は、タスクコントローラのインストール、アンインストールの制御もおこなう。
【０１０２】
（タスク実行時の処理について）
図２７は、タスク管理部の処理を示すフローチャートである。以下は、タスクスケジューラ２１４ａがコンテキスト生成部２０１からの通知によってタスクを実行する場合の処理例を説明する。はじめに、タスクスケジューラ２１４ａは、タスク起動条件が満足された旨の通知をコンテキスト生成部２０１から受信する（ステップＳ２７０１）。つぎに、タスクスケジューラ２１４ａは、端末１０２が停止状態にあるか否かを判定する（ステップＳ２７０２）。停止中の場合は（ステップＳ２７０２：Ｙｅｓ）、ステップＳ２７０６に移行し、停止中でない場合は（ステップＳ２７０２：Ｎｏ）、ステップＳ２７０３に移行する。この判定は、端末停止フラグがセットされている場合は端末１０２が停止状態にあり、そうでない場合は停止状態にないと判定される。
【０１０３】
ステップＳ２７０３では、タスクスケジューラ２１４ａは、登録タスク保存部２１２から実行可能なタスクを選択する。つぎに、タスクスケジューラ２１４ａは、端末１０２で現在実行中のタスクがあるか否かを判定する（ステップＳ２７０４）。実行中のタスクがある場合は（ステップＳ２７０４：Ｙｅｓ）、ステップＳ２７０５に移行し、実行中のタスクがない場合は（ステップＳ２７０４：Ｎｏ）、ステップＳ２７０８に移行する。
【０１０４】
ステップＳ２７０５では、ステップＳ２７０３で選択された実行可能なタスクのうち、端末１０２で現在実行中のタスクよりも優先度の高いタスクがあるか否かを判定する。優先度の高いタスクがある場合は（ステップＳ２７０５：Ｙｅｓ）、ステップＳ２７０７に移行し、優先度の高いタスクがない場合は（ステップＳ２７０５：Ｎｏ）、ステップＳ２７０６に移行する。
【０１０５】
ステップＳ２７０６では、ステップＳ２７０３で選択された実行可能なタスクのすべてをタスクキュー２６０２にアタッチして、上記の処理を終了する。タスクキュー２６０２は、コンテキスト生成部２０１において、タスク起動条件が満足されたと判定されたタスクのうち、端末１０２で実行されていないタスク（中断状態にあるタスクを含む）を管理するものである。
【０１０６】
ステップＳ２７０７では、ステップＳ２７０３で選択された実行可能なタスクのうち、優先度が端末１０２で現在実行中のタスクと等しい、またはそれ以下のタスクをタスクキュー２６０２にアタッチする。ここで、タスクキュー２６０２にアタッチされなかった、優先度の高いタスクを実行候補タスクとする。
【０１０７】
ステップＳ２７０８では、実行可否判定をおこなっていない実行候補タスクのうち、最も優先度の高いタスクの実行可否判定をサービス管理部２０３に要求する。タスク実行の際に、周辺機器１０３のサービスを使用しない場合は、タスクが即時実行される。ステップＳ２７０９では、ステップＳ２７０８の応答としてサービス管理部２０３から受信した判定結果、タスクが実行可能である場合は（ステップＳ２７０９：タスク実行可能）、ステップＳ２７１２に移行し、タスクが実行不可である場合は（ステップＳ２７０９：タスク実行不可）、ステップＳ２７１０に移行する。
【０１０８】
ステップＳ２７１０では、サービス実行可否判定の結果、実行不可となったタスクをタスクキュー２６０２にアタッチする。ステップＳ２７１１では、サービス実行可否判定をおこなっていない実行候補タスクがあるか否かを判定し、実行候補タスクがある場合は（ステップＳ２７１１：Ｙｅｓ）、ステップＳ２７０８に移行し、実行候補タスクがない場合は（ステップＳ２７１１：Ｎｏ）、上記の処理を終了する。
【０１０９】
ステップＳ２７１２では、端末１０２で現在実行中のタスクがあるか否かを判定する。実行中のタスクがある場合は（ステップＳ２７１２：Ｙｅｓ）、ステップＳ２７１３に移行し、実行中のタスクがなければ（ステップＳ２７１２：Ｎｏ）、ステップＳ２７１６に移行する。ステップＳ２７１３では、現在実行中のタスクの中断要求を端末１０２に送信する。ステップＳ２７１４では、現在実行中のタスクの中断完了通知を端末１０２から受信する。ステップＳ２７１５では、中断が完了したタスクについて、登録タスク保存部２１２内に登録されている状態を「中断中」に更新する。また、このタスクをタスクキュー２６０２にアタッチする。
【０１１０】
ステップＳ２７１６では、ステップＳ２７０９で実行可能と判定されたタスクの実行開始要求を端末１０２に送信する。ステップＳ２７１７では、このタスクの実行開始応答を端末１０２から受信する。ステップＳ２７１８では、実行が開始されたタスクについて、登録タスク保存部２１２内に登録されている状態を「実行中」に更新する。また、このタスクを実行中タスクとして管理する。ステップＳ２７１９では、サービス実行可否判定をおこなっていない、残りすべての実行候補タスクをタスクキュー２６０２にアタッチして、上記の処理を終了する。
【０１１１】
（タスク終了時、および端末停止時の処理について）
図２８は、タスク管理部におけるタスク終了時、および端末停止時の処理を示すフローチャートである。端末１０２で実行中のタスクが終了した場合、および端末１０２が停止した場合の処理について説明する。端末１０２が停止した状態とは、ユーザが何らかの状況下で端末１０２を操作することでサーバ装置１０１からのタスク制御を受け付けない状態を意味する。
【０１１２】
端末１０２のタスク終了時には、タスクスケジューラ２１４ａは、端末１０２で実行していたタスクが完了し、タスク実行完了通知を端末１０２から受信する（ステップＳ２８０１）。つぎに、タスクスケジューラ２１４ａは、タスク実行完了応答を端末１０２に送信する（ステップＳ２８０２）。つぎに、実行が完了したタスクについて、登録タスク保存部２１２内に登録されている状態を「完了」に更新する（ステップＳ２８０３）。そして、実行中タスクとして管理されていたこのタスク情報をクリアする（ステップＳ２８０４）。この後、つぎに実行するタスクを決定するための処理（ステップＳ２８０５）に移行する。
【０１１３】
端末１０２の停止時には、ユーザが端末１０２の停止操作をおこなうと、タスクスケジューラ２１４ａは、端末１０２から端末停止通知を受信する（ステップＳ２８０６）。これにより、タスクスケジューラ２１４ａは、端末１０２の端末停止フラグをセットする（ステップＳ２８０７）。そして、端末停止応答を端末１０２に送信する（ステップＳ２８０８）。つぎに、タスクスケジューラ２１４ａは、端末再開通知を端末１０２から受信したか否かを判定する（ステップＳ２８０９）。受信した場合は（ステップＳ２８０９：Ｙｅｓ）、端末１０２の端末停止フラグをリセットし（ステップＳ２８１０）、ステップＳ２８０５に移行する。端末再開通知フラグを受信していない場合は（ステップＳ２８０９：Ｎｏ）、新たにタスクの起動条件が満たされたタスクを、タスクキュー２６０２にアタッチし（ステップＳ２８１１）、ステップＳ２８０９に戻る。
【０１１４】
（実行待機のタスクのサービス確認の処理について）
図２９−１、および図２９−２は、タスク管理部における実行待機のタスクのサービス確認の処理を示すフローチャートである。タスクキュー２６０２内で待機しているタスクの実行に必要なサービスの有無を周期的に確認する処理について説明する。図２９に示す処理の一部は、端末１０２で実行中のタスクが終了した場合にも同様に実行される。
【０１１５】
はじめに、タスクスケジューラ２１４ａは、端末１０２が停止状態にあるか否かを判定する（ステップＳ２９０１）。停止状態である場合は（ステップＳ２９０１：Ｙｅｓ）、ステップＳ２９０４に移行し、停止状態でない場合は（ステップＳ２９０１：Ｎｏ）、端末１０２で現在実行中のタスクがあるか否かを判定する（ステップＳ２９０２）。実行中のタスクがある場合は（ステップＳ２９０２：Ｙｅｓ）、ステップＳ２９０３に移行し、実行中のタスクがない場合は（ステップＳ２９０２：Ｎｏ）、ステップＳ２９０５に移行する。
【０１１６】
ステップＳ２９０３では、タスクスケジューラ２１４ａは、タスクキュー２６０２内のタスクのうち、端末１０２で現在実行中のタスクよりも優先度の高いタスクがあるか否かを判定する。優先度の高いタスクがある場合は（ステップＳ２９０３：Ｙｅｓ）、ステップＳ２９０６に移行し、優先度の高いタスクがない場合は（ステップＳ２９０３：Ｎｏ）、タスクスケジューラ２１４ａは、一定周期時間だけ待機して（ステップＳ２９０４）、終了する（その後、ステップＳ２９０１から処理が再開される）。一定周期は、タスクキュー２６０２内に存在するタスクの優先度に応じて動的に変えてもよい。たとえば、優先度が高いタスクほど、周期を短くするなど。また、周期をタスク毎に変えるようにしてもよい。
【０１１７】
ステップＳ２９０５では、タスクスケジューラ２１４ａは、タスクキュー２６０２内のすべてのタスクを実行候補タスクとし、ステップＳ２９０７に移行する。ステップＳ２９０６では、タスクスケジューラ２１４ａは、端末１０２で現在実行中のタスクよりも優先度の高いタスク（の集合）を実行候補タスクとし、ステップＳ２９０７に移行する。
【０１１８】
ステップＳ２９０７では、タスクスケジューラ２１４ａは、実行可否判定をおこなっていない実行候補タスクのうち、最も優先度の高いタスクの実行条件が満足されているか否かをコンテキスト生成部２０１に確認する。すなわち、候補タスクについて現コンテキストで実行（再開）可能であるかを確認する。つぎに、タスクスケジューラ２１４ａは、ステップＳ２９０７の確認の結果に基づいて、このタスクの実行が可能か判断する（ステップＳ２９０８）。タスクの実行が不可能な場合は（ステップＳ２９０８：Ｎｏ）、ステップＳ２９０９に移行し、タスクの実行が可能な場合は（ステップＳ２９０８：Ｙｅｓ）、ステップＳ２９１０に移行する。
【０１１９】
ステップＳ２９０９では、タスクスケジューラ２１４ａは、コンテキストが変わったことにより、タスクの起動条件が満足されていないタスクについては、再度コンテキスト生成部２０１にタスク起動条件を再設定する。また、当該タスクをタスクキュー２６０２からデタッチし、ステップＳ２９１９に移行する。
【０１２０】
ステップＳ２９１０では、タスクスケジューラ２１４ａは、タスクの実行可否判定をサービス管理部２０３に要求し、この応答としてサービス管理部２０３から受信した判定の結果、タスクが実行可能である場合は（ステップＳ２９１１：実行可能）、ステップＳ２９１２に移行し、タスクが実行不可である場合は（ステップＳ２９１１：実行不可）、ステップＳ２９１９に移行する。
【０１２１】
ステップＳ２９１２では、タスクスケジューラ２１４ａは、端末１０２で現在実行中のタスクがあるか否かを判定する。実行中のタスクがある場合は（ステップＳ２９１２：Ｙｅｓ）、ステップＳ２９１３に移行し、実行中のタスクがない場合は（ステップＳ２９１２：Ｎｏ）、ステップＳ２９１６に移行する。
【０１２２】
ステップＳ２９１３では、タスクスケジューラ２１４ａは、現在実行中のタスクの中断要求を端末１０２に送信する。つぎに、タスクスケジューラ２１４ａは、現在実行中のタスクの中断完了通知を端末１０２から受信する（ステップＳ２９１４）。この後、中断が完了したタスクについて、登録タスク保存部２１２内に登録されている状態を「中断中」に更新する。また、当該タスクをタスクキュー２６０２にアタッチする（ステップＳ２９１５）。そして、ステップＳ２９１１で実行可能と判定されたタスクの実行開始要求を端末１０２に送信する（ステップＳ２９１６）。なお、実行可能と判定されたタスクの状態が「中断中」である場合には、端末１０２にタスクの再開要求を送信する。
【０１２３】
この後、タスクスケジューラ２１４ａは、このタスクの実行開始応答を端末１０２から受信する（ステップＳ２９１７）。なお、ステップＳ２９１６でタスクの再開要求を送信した場合には、タスクの再開応答を受信する。そして、タスクスケジューラ２１４ａは、実行が開始されたタスクについて、登録タスク保存部２１２内に登録されている状態を「実行中」に更新する。また、このタスクを実行中タスクとして管理し（ステップＳ２９１８）、ステップＳ２９０４に移行する。
【０１２４】
ステップＳ２９１９では、タスクスケジューラ２１４ａは、実行可否判定をおこなったタスクを、判定済みとする。この後、実行可否判定をおこなっていない実行候補タスクがあるか否かを判定する（ステップＳ２９２０）。実行可否判定をおこなっていない実行候補タスクがある場合は（ステップＳ２９２０：Ｙｅｓ）、ステップＳ２９０７に移行し、実行可否判定をおこなっていない実行候補タスクがない場合は（ステップＳ２９２０：Ｎｏ）、ステップＳ２９０４に移行する。
【０１２５】
（端末の処理について）
図３０は、端末がおこなう処理を示すフローチャートである。端末１０２のタスクコントローラ実行部２３４が実行する処理について説明する。下記のステップＳ３００１，ステップＳ３００５，ステップＳ３００８，ステップＳ３０１１，ステップＳ３０１４，ステップＳ３０１６は、いずれか１つが要求あるいは通知を受けると処理を開始する。
【０１２６】
ステップＳ３００１において、タスクコントローラ実行部２３４がタスク実行開始要求をサーバ装置１０１のタスク管理部２０２から受信すると（ステップＳ３００１）、タスクコントローラをサービス管理部２０３からダウンロードし、インストールする（ステップＳ３００２）。ただし、タスク実行に必要なタスクコントローラが端末１０２に予めインストールされている場合は、本ステップを省略する。そして、タスクコントローラ実行部２３４は、タスクコントローラを起動させ（ステップＳ３００３）、タスク実行開始応答をタスク管理部２０２に通知し（ステップＳ３００４）、処理を終了する。
【０１２７】
ステップＳ３００５において、タスクコントローラ実行部２３４がタスク完了通知をタスクコントローラから受信すると（ステップＳ３００５）、タスク完了通知をタスク管理部２０２に通知し（ステップＳ３００６）、つぎに、タスクコントローラをアンインストールし（ステップＳ３００８）、終了する。なお、タスクコントローラのアンインストールは、端末１０２の記憶装置の記憶容量に一定量以上の余裕がある場合には省略されても良い。
【０１２８】
ステップＳ３００８において、タスクコントローラ実行部２３４がタスク中断要求をタスク管理部２０２から受信すると、タスクコントローラを中断し（ステップＳ３００９）、タスク中断完了応答をタスク管理部２０２に通知し（ステップＳ３０１０）、終了する。
【０１２９】
ステップＳ３０１１において、タスクコントローラ実行部２３４がタスク再開要求をタスク管理部２０２から受信すると、中断中のタスクコントローラを再開させ（ステップＳ３０１２）、タスク再開完了応答をタスク管理部２０２に通知し（ステップＳ３０１３）、処理を終了する。
【０１３０】
ステップＳ３０１４では、タスクコントローラ実行部２３４が端末停止要求をタスクコントローラから受信する。ユーザからの端末停止の指示は、タスクコントローラを介さず、直接タスクコントローラ実行部２３４に対して指示されてもよい。この後、タスクコントローラ実行部２３４は、端末停止通知をタスク管理部２０２に通知し（ステップＳ３０１５）、処理を終了する。
【０１３１】
ステップＳ３０１６では、タスクコントローラ実行部２３４が端末再開要求をタスクコントローラから受信する。ユーザからの端末再開の指示は、タスクコントローラを介さず、直接タスクコントローラ実行部２３４に対して指示されてもよい。この後、タスクコントローラ実行部２３４は、端末再開通知をタスク管理部２０２に通知し（ステップＳ３０１７）、処理を終了する。
【０１３２】
なお、タスク実行中に周辺機器１０３の電源切断や移動により、タスク実行に必要なサービスが利用できなくなるといった例外が発生した場合には、タスクコントローラが当該例外の発生を検出し、その旨をタスクコントローラ実行部２３４に通知する。当該通知を受けたタスクコントローラ実行部２３４は、その旨をタスク管理部２０２に通知する。この後、タスク管理部２０２は当該タスクの中断処理に続いて、他に実行可能なタスクの存在を確認し、実行可能なタスクがある場合は、端末１０２に対してタスクの実行を要求する。この例外時の処理は、タスク管理部２０２については図２７、タスクコントローラ実行部２３４については図３０と類似であるため、詳細な説明は省略する。
【０１３３】
（タスク実行の具体的処理例）
図３１−１〜図３１−４は、タスク実行の処理手順を示すシーケンス図である。この図を用いて、タスク実行の具体的処理例について説明する。以下の例は、巡回警備業務を支援する例である。図に示した各部の構成について、コンテキスト管理サーバ３１０１は、コンテキスト生成部２０１を含むサーバとする。タスク管理サーバ３１０２は、タスク管理部２０２、サービス管理部２０３を含むサーバとする。
【０１３４】
そして、ユーザＡは、端末１０２を携帯し巡回する。この端末１０２には、端末内蔵センサ１１２として位置センサを具備している。位置センサによる位置取得の方法は、ＧＰＳや、端末１０２に付与されたＲＦＩＤリーダが特定の場所に設置されたＲＦＩＤタグを読み取る等、種々の方法により取得可能である。また各コントローラ３１１１〜３１１３は、タスク管理サーバ３１０２からダウンロードしたタスクコントローラに相当する。
【０１３５】
はじめに、巡回警備前の設定処理について説明する。
（ステップＳ３１０１）あらかじめ管理者は、管理者端末１０２ａを用いて、２２：００に管理センタにいるユーザＡがおこなうべき、倉庫巡回タスクをタスク管理サーバ３１０２に登録する。
（ステップＳ３１０２）管理者は、ステップＳ３１０１と同様のタスクをコンテキスト管理サーバ３１０１に登録する。
（ステップＳ３１０３）管理者は、２２：００以降に倉庫ＡにいるユーザＡがおこなうべき、倉庫Ａの巡回タスクを登録する。
（ステップＳ３１０４）管理者は、ステップＳ３１０３と同様のタスクをコンテキスト管理サーバ３１０１に登録する。
（ステップＳ３１０５）管理者は、異常センサ１の状態がＯＮになったときに実行すべき異常確認タスクを登録する。
（ステップＳ３１０６）管理者は、ステップＳ３１０５と同様のタスクをコンテキスト管理サーバ３１０１に登録する。
【０１３６】
以降、ユーザＡの巡回警備時の処理について説明する。
（ステップＳ３１０７）ユーザＡが持つ携帯端末１０２の位置センサ１１２が、ユーザＡの位置が管理センタであることをコンテキスト管理サーバ３１０１に通知する。
（ステップＳ３１０８）コンテキスト管理サーバ３１０１は、ユーザＡが管理センタにいて、かつ時刻が２２：００であることを認識すると、ステップＳ３１０２で登録された倉庫巡回タスクの起動条件が満足されたことをタスク管理サーバ３１０２に通知する。
（ステップＳ３１０９）タスク管理サーバ３１０２は、ステップＳ３１０１で登録された倉庫巡回タスクの起動要求を端末１０２のタスクコントローラ実行部２３４に通知する。
（ステップＳ３１１０）タスクコントローラ実行部２３４は、指定されたＵＲＬにアクセスし、倉庫巡回コントローラ３１１１のダウンロードを要求する。
【０１３７】
（ステップＳ３１１１）タスク管理サーバ３１０２は、タスクコントローラ実行部２３４に、ダウンロード応答し、倉庫巡回コントローラ３１１１がダウンロードされ、端末１０２にインストールされる。
（ステップＳ３１１２）タスクコントローラ実行部２３４は、ダウンロードされた倉庫巡回コントローラ３１１１を起動する。
（ステップＳ３１１３）起動された倉庫巡回コントローラ３１１１は、タスクコントローラ実行部２３４に対して起動完了を通知する。
（ステップＳ３１１４）タスクコントローラ実行部２３４は、タスク１の起動が完了したことをタスク管理サーバ３１０２に通知する。
（ステップＳ３１１５）タスク管理サーバ３１０２は、タスク１が起動されたことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「タスク１実行中」に更新する。
【０１３８】
（ステップＳ３１１６）倉庫巡回コントローラ３１１１は、巡回先の情報として倉庫Ａを画面に表示する。ユーザは、画面を確認し、「ＯＫ」ボタンを操作する。
（ステップＳ３１１７）「ＯＫ」ボタンが操作された倉庫巡回コントローラ３１１１は、タスクコントローラ実行部２３４に対してタスクの完了を通知し、自らを終了する。
（ステップＳ３１１８）タスクコントローラ実行部２３４は、タスク管理サーバ３１０２に対してタスク１の完了を通知する。
（ステップＳ３１１９）タスク管理サーバ３１０２は、タスク１が完了したことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「ｉｄｌｅ」に更新する。
【０１３９】
（ステップＳ３１２０）ユーザＡが巡回先である倉庫Ａに到着すると、端末１０２の位置センサ１１２が検出し、コンテキスト管理サーバ３１０１にその旨通知する。
（ステップＳ３１２１）コンテキスト管理サーバ３１０１は、２２：００以降にユーザＡが倉庫Ａにいることを認識すると、ステップＳ３１０４で登録された倉庫Ａ巡回タスクの起動条件が満足されたことをタスク管理サーバ３１０２に通知する。
（ステップＳ３１２２）タスク管理サーバ３１０２は、倉庫Ａ巡回タスクの実行に必要なデバイスおよびサービスが存在することを認識すると、それらの検索を要求する。
（ステップＳ３１２３）ユーザＡの端末１０２のサービス発見・通知部２３３は、デバイスとサービスの検索をおこなう。たとえば、ＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）を用いるのであれば、Ｍ−ＳＥＡＲＣＨメッセージを周辺にマルチキャストする。
【０１４０】
（ステップＳ３１２４）倉庫Ａの照明デバイス１１３が、検索メッセージを受信すると、自らが指定されたデバイスであり、なおかつ自身が照明制御サービスを提供可能であるため、検索応答を通知する。ここでは照明デバイス１１３は、自らのデバイス・サービス情報を直接応答しているが、代わりに自らのデバイス・サービス情報が記載されたファイルのＵＲＬを応答し、ユーザＡの端末１０２が当該ＵＲＬに基づいてデバイス・サービス定義情報保存部２２７からファイルを入手することで、デバイス・サービス情報が取得されるようにしても良い。
（ステップＳ３１２５）サービス発見・通知部２３３は、サービス検索結果をタスク管理サーバ３１０２に通知する。
（ステップＳ３１２６）タスク管理サーバ３１０２は、倉庫Ａ巡回タスクに必要なデバイスおよびサービスがユーザＡの周辺に存在することを確認すると、タスクの起動要求を端末１０２のタスクコントローラ実行部２３４に通知する。
（ステップＳ３１２７）タスクコントローラ実行部２３４は、指定されたＵＲＬにアクセスし、倉庫Ａ巡回コントローラ３１１２のダウンロードを要求する。
（ステップＳ３１２８）タスクコントローラ実行部２３４に、倉庫Ａ巡回コントローラ３１１２がダウンロードされ、端末１０２にインストールされる。
【０１４１】
（ステップＳ３１２９）タスクコントローラ実行部２３４は、ダウンロードされた倉庫Ａ巡回コントローラ３１１２を起動する。
（ステップＳ３１３０）起動された倉庫Ａ巡回コントローラ３１１２は、タスクコントローラ実行部２３４に対して起動完了を通知する。
（ステップＳ３１３１）タスクコントローラ実行部２３４は、タスク２の起動が完了したことをタスク管理サーバ３１０２に通知する。
（ステップＳ３１３２）タスク管理サーバ３１０２は、タスク２が起動されたことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「タスク２実行中」に更新する。
【０１４２】
（ステップＳ３１３３）倉庫Ａ巡回コントローラ３１１２は、倉庫Ａの照明ＯＮボタン、照明ＯＦＦボタン、異常ありボタン、異常なしボタンを画面に表示する。ユーザは照明ＯＮボタンを操作する。
（ステップＳ３１３４）倉庫Ａ巡回コントローラ３１１２は、ステップＳ３１２２で検索された倉庫Ａの照明デバイスの照明制御サービスをパラメータＯＮで実行する旨、照明デバイスに要求する。
（ステップＳ３１３５）倉庫Ａの照明デバイス１１３は、ステップＳ３１３１で要求されたサービスを実行する（すなわち、照明をＯＮする）と、その応答を返す。ユーザＡは、倉庫Ａの巡回を開始する。
【０１４３】
（ステップＳ３１３６）建屋Ｂに設置されている異常センサ１（１１４）が何らかの異常を検知すると、その旨をコンテキスト管理サーバ３１０１に通知する。
（ステップＳ３１３７）コンテキスト管理サーバ３１０１は、異常センサ１（１１４）で異常が検出されたことを認識すると、ステップＳ３１０６で登録された異常確認タスク（優先度＝高）の起動条件が満足されたことをタスク管理サーバ３１０２に通知する。
【０１４４】
（ステップＳ３１３８）タスク管理サーバ３１０２は、タスク管理情報を参照し、タスクは誰が実行してもよいことを認識すると、このタスクの実行者として、ユーザＡを選択する。ユーザ選択方法については、たとえば、巡回作業中のユーザとその現在位置のリストを保持し、建屋Ｂの異常センサ１（１１４）に最も近い巡回中のユーザを選択する、または管理センタに待機しているユーザを選択する、といったものが考えられる。これらのユーザ選択は、例えば別のサーバで動作するアプリケーションによって行うようにされても良い。この場合、タスク起動条件満足通知を受けたタスク管理サーバ３１０２が当該アプリケーションに通知を行い、当該アプリケーションがコンテキスト管理サーバ３１０１から得たユーザのコンテキスト情報等に基づいてユーザを選択すると、そのユーザをタスク管理サーバ３１０２に応答する。タスク管理サーバ３１０２は、ユーザＡを選択した後、ユーザＡの端末１０２上で倉庫Ａ巡回タスク（優先度＝中）が実行中であり、異常確認タスクの起動に先立って倉庫Ａ巡回タスクの中断が必要であることを認識すると、ユーザＡの端末１０２のタスクコントローラ実行部２３４に当該タスクの中断を要求する。
【０１４５】
（ステップＳ３１３９）タスクコントローラ実行部２３４は、倉庫Ａ巡回コントローラ３１１２の中断を要求する。
（ステップＳ３１４０）倉庫Ａ巡回コントローラ３１１２は中断要求の応答を返す。
（ステップＳ３１４１）タスクコントローラ実行部２３４は、タスク管理サーバ３１０２に倉庫Ａ巡回タスクを中断したことを通知する。
（ステップＳ３１４２）タスク管理サーバ３１０２は、異常確認タスクの起動要求をユーザＡの端末１０２のタスクコントローラ実行部２３４に通知する。
（ステップＳ３１４３）タスクコントローラ実行部２３４は、指定されたＵＲＬにアクセスし、異常確認コントローラのダウンロードを要求する。
（ステップＳ３１４４）タスクコントローラ実行部２３４に、異常確認コントローラ３１１３がダウンロードされ、端末１０２にインストールされる。
【０１４６】
（ステップＳ３１４５）タスクコントローラ実行部２３４は、ダウンロードされた異常確認コントローラ３１１３を起動する。
（ステップＳ３１４６）起動された異常確認コントローラ３１１３は、タスクコントローラ実行部２３４に対して起動完了を通知する。
（ステップＳ３１４７）タスクコントローラ実行部２３４は、タスクの起動が完了したことをタスク管理サーバ３１０２に通知する。
【０１４７】
（ステップＳ３１４８）タスク管理サーバ３１０２は、タスク３が起動されたことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「タスク３実行中」に更新する。
（ステップＳ３１４９）起動された異常確認コントローラ３１１３は、ユーザＡの端末１０２の画面に「異常センサ１（１１４）で異常が検知されました。直ちに異常の有無を確認して下さい」というメッセージ、「異常あり」ボタン、および「異常なし」ボタンを表示する。当該画面を確認したユーザＡは、建屋Ｂの異常センサ１（１１４）が設置された場所に急行し、異常のないことを確認し「異常なし」ボタンを操作する（建屋Ｂに移動すると端末１０２によって位置登録がおこなわれるが、図では省略）。
【０１４８】
（ステップＳ３１５０）「異常なし」ボタンを操作された異常確認コントローラ３１１３は、タスクコントローラ実行部２３４に対してタスクの完了を通知し、自らを終了する。
（ステップＳ３１５１）タスクコントローラ実行部２３４は、タスク管理サーバ３１０２に対してタスクの完了を通知する。
（ステップＳ３１５２）タスク管理サーバ３１０２は、タスク３が完了したことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「ｉｄｌｅ」に更新する。または、ステップＳ３１４８でタスク３の実行が開始される前の状態「タスク２実行中」を記憶しておき、当該状態に復帰させてもよい（ここでユーザＡの状態を「ｉｄｌｅ」に設定しても、後続のステップＳ３１５７で「タスク２実行中」状態に復帰するため問題はない）。
【０１４９】
（ステップＳ３１５３）タスク管理サーバ３１０２は、異常確認タスク（優先度＝高）が完了したことを認識すると、そのつぎに優先度の高いタスクである、中断中の倉庫Ａ巡回タスクの再開を要求する。
（ステップＳ３１５４）タスクコントローラ実行部２３４は、中断中の倉庫Ａ巡回コントローラ３１１２の実行を再開する。
（ステップＳ３１５５）再開された倉庫Ａ巡回コントローラ３１１２は、タスクコントローラ実行部２３４に対して再開の完了を通知する。
（ステップＳ３１５６）タスクコントローラ実行部２３４は、タスク２の再開が完了したことをタスク管理サーバ３１０２に通知する。
【０１５０】
（ステップＳ３１５７）タスク管理サーバ３１０２は、タスク２が再開されたことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「タスク２実行中」に更新する。
（ステップＳ３１５８）倉庫Ａ巡回コントローラ３１１２が再開され、コントローラの画面が表示されると、ユーザＡは、倉庫Ａに戻り、巡回を再開する。このように、端末１０２に倉庫Ａ巡回コントローラ３１１２の画面が表示されるため、ユーザＡは中断されていた倉庫Ａの巡回作業を忘れることなく、再開することが可能となる。巡回が異常なく終了すると、「照明ＯＦＦ」ボタンを操作する（倉庫Ａに戻ると端末１０２によって位置登録がおこなわれるが、図では省略）。
【０１５１】
（ステップＳ３１５９）倉庫Ａ巡回コントローラ３１１２は、ステップＳ３１２２で検索された倉庫Ａの照明デバイス１１３の照明制御サービスをパラメータＯＦＦで実行する旨、照明デバイスに要求する。
（ステップＳ３１６０）倉庫Ａの照明デバイス１１３は、ステップＳ３１５３で要求されたサービスを実行する（すなわち、照明をＯＦＦする）と、その応答を返す。
（ステップＳ３１６１）ユーザＡは、倉庫Ａ巡回コントローラ３１１２の「異常なし」ボタンを操作して、倉庫Ａの巡回を終了する。
【０１５２】
（ステップＳ３１６２）「異常なし」ボタンを操作された倉庫Ａ巡回コントローラ３１１２は、タスクコントローラ実行部２３４に対してタスクの完了を通知し、自らを終了する。
（ステップＳ３１６３）タスクコントローラ実行部２３４は、タスク管理サーバ３１０２に対してタスクの完了を通知する。
（ステップＳ３１６４）タスク管理サーバ３１０２は、タスク２が完了したことをコンテキスト管理サーバ３１０１に通知する。コンテキスト管理サーバ３１０１は、ユーザＡの状態を「ｉｄｌｅ」に更新する。
【０１５３】
以上説明したタスク定義は一例であり、このようなタスクの分割方法に限定されない。たとえば、本例では、倉庫巡回を開始すること自体をタスクとして定義し、実際の作業である倉庫Ａの巡回タスクと分割しているが、両者を一体化して定義してもよい。このとき、巡回タスクの下位に倉庫Ａ巡回、倉庫Ｂ巡回といったサブ・タスクを定義し、これら各サブ・タスクに対応するタスクコントローラを定義し、「倉庫Ａ巡回開始」ボタンを操作すると、対応するサブ・タスクの実行に必要なコントローラが起動される。
【０１５４】
また、各タスクコントローラは起動される度にダウンロードするようにしているが、たとえば緊急度の高いタスクのためのコントローラ（たとえば、異常確認コントローラ３１１３）については、あらかじめ端末１０２にインストールしておいてもよい。さらに、上記例では、タスクの実行が完了しても、対応するタスクコントローラはインストール状態のままにしているが、端末１０２のメモリ容量に制限がある場合は、タスク完了後にタスクコントローラをアンインストールして、占有していたメモリを解放してもよい。
【０１５５】
（各種管理データ例）
上述した巡回警備に用いる管理データ例について説明する。図３２は、コンテキスト情報の例を示す図表である。コンテキスト管理サーバ３１０１が管理するコンテキスト情報３２００により、各ユーザやデバイスの状態を管理する。このコンテキスト情報３２００は、時刻３２０１、ユーザ・コンテキスト３２０２、デバイス・コンテキスト３２０３の各情報を含む。時刻３２０１は、システムで共通して使用される現在時刻情報であり、ユーザ・コンテキスト３２０２は、ユーザ毎の状態情報として、ユーザの場所とタスクの実行状態を管理する。デバイス・コンテキスト３２０３は、デバイス毎の状態情報として、デバイスの設置場所（建屋Ｂ）とデバイスの状態（ここでは異常センサ１（１１４）のＯＮ／ＯＦＦ状態）を管理する。
【０１５６】
図３３は、タスク管理情報の例を示す図表である。コンテキスト管理サーバ３１０１はタスク管理情報３３００を用いてタスクを管理する。タスク管理情報３３００は、各ユーザが実行すべきタスクの起動条件を管理するためのものであり、ＵＩＤ、時刻、場所、その他、ＴＩＤの各情報を含む。ＵＩＤはタスクを実行すべきユーザのＩＤの情報であり、時刻はタスクを実行すべき時間条件の情報であり、場所はタスクを実行すべき場所条件の情報であり、その他は、タスクを実行すべき上記以外の条件の情報であり、ＴＩＤは、上記の条件が成立したときに実行されるべきタスクのＩＤの情報である。
【０１５７】
コンテキスト管理サーバ３１０１は、ユーザやデバイスの状態が変化すると、対応するタスク管理情報３３００を検索し、実行すべきタスクの有無を判定する。この判定処理を高速におこなうために、追加のデータが管理されてもよい。たとえば、コンテキスト管理データとして、個々のユーザに実行すべき（未実行の）タスクが存在するか否かのフラグ情報を管理することで、タスクが存在しないユーザに関しては、コンテキストが変化しても実行すべきタスクの有無の判定処理をおこなわないようにする等が考えられる。
【０１５８】
図３４は、タスク管理情報の例を示す図表である。タスク管理サーバ３１０２のタスク管理部２０２はタスク管理情報３４００を用いてタスクを管理する。タスク管理情報３４００は、タスク管理情報：各ユーザが実行すべきタスクに関する情報を管理するものであり、ＵＩＤ、ＴＩＤ、時刻、場所、優先度、状態の各情報を含む。ＵＩＤはタスクを実行すべきユーザのＩＤの情報であり、ＴＩＤは実行すべきタスクのＩＤの情報であり、時刻はタスクを実行すべき時間の情報であり、場所はタスクを実行すべき場所の情報であり、優先度はタスクの優先度であり、状態はタスクの実行状態（未実行／実行中／完了）である。
【０１５９】
図３４において、ＵＩＤ＝＃の項目は、タスク３が特定のユーザが実行すべきものとして定義されていないことを示している。このようなタスクについては、タスクを実行すべきユーザは状況に応じて動的に決定される。
【０１６０】
図３５は、タスクコントローラ管理情報の例を示す図表である。タスクコントローラ管理情報３５００は、タスクの実行に必要なタスクコントローラに関する情報であり、タスク管理サーバ３１０２のサービス管理部２０３が管理する。タスクコントローラ管理情報３５００は、ＴＩＤと、コントローラＵＲＬの情報を含む。ＴＩＤはタスクＩＤの情報であり、コントローラＵＲＬはタスクの実行に必要なコントローラが格納されているＵＲＬの情報である。
【０１６１】
図３６は、タスク・サービス対応情報の例を示す図表である。タスク・サービス対応情報３６００は、各タスクの実行に必要なデバイスおよびサービスに関する情報であり、タスク管理サーバ３１０２のサービス管理部２０３が管理する。タスク・サービス対応情報３６００は、ＴＩＤ、デバイス、サービスの各情報を含む。ＴＩＤはタスクＩＤであり、デバイスはデバイス名であり、サービスはサービス名の情報である。図に記載のＮＡ（Ｎｏｔ  Ａｐｐｌｉｃａｂｌｅ）は、タスクの実行にデバイスおよびサービスが不要であることを示している。
【０１６２】
図３７は、タスクスケジューラが管理するタスク実行管理情報を示す図表である。タスクスケジューラ２１４ａは、ユーザ毎のタスクの実行制御に関する情報をタスク実行管理情報３７００として管理する。実行管理情報３７００は、ユーザＡに関する実行中タスク２６０１と、タスクキュー２６０２のそれぞれについて、ＴＩＤと、優先度を管理する。実行中タスク２６０１については、実行中のタスクに関する情報を管理し、ＴＩＤはタスクのＩＤの情報、優先度はタスクの優先度の情報である。タスクキュー２６０２については、実行待ち状態のタスクに関する情報を管理し、ＴＩＤはタスクのＩＤの情報、優先度はタスクの優先度の情報である。図３７に示す例では、タスクキュー２６０２に登録されているタスクは０または１つとなっているが、タスクの割り込みが複数回にわたっておこなわれるような場合には、２個以上のタスクが登録されることもある。
【０１６３】
つぎに、このタスク実行管理情報３７００の変化について、上述した図３１−１〜図３１−４に示したシーケンスの手順に沿って説明する。
・ステップＳ３１１１〜ステップＳ３１１７：実行中および実行待ち状態のタスクはない（図示略）
（１）ステップＳ３１１４：タスク１の起動が完了したため、タスク１に関する情報が、実行中タスク２６０１として保持される。実行待ち状態のタスクはないため、タスクキュー２６０２には情報は保持されていない（ＮＡと記載）。
【０１６４】
・ステップＳ３１１８：タスク１が完了すると、タスク１に関する情報が実行中タスク２６０１の情報から削除される。これにより、実行中および実行待ち状態のタスクはなくなる（図示略）。
（２）ステップＳ３１３１：タスク２の起動が完了したため、タスク２に関する情報が、実行中タスク２６０１の情報として保持される。実行待ち状態のタスクはないため、タスクキュー２６０２には情報は保持されていない。
【０１６５】
（３）ステップＳ３１４１〜ステップＳ３１４７：優先度＝高のタスク３の実行が要求されると、実行中のタスク２（優先度＝中）の中断処理がおこなわれ、ステップＳ３１４１で中断処理が完了すると、タスク２に関する情報がタスクキュー２６０２に登録される。続いて、ステップＳ３１４７でタスク３の起動が完了すると、タスク３に関する情報が実行中タスク２６０１の情報として保持される。
【０１６６】
（４）ステップＳ３１５６：ステップＳ３１５１でタスク３が完了すると、タスク３の情報が実行中タスク２６０１の情報から削除され（図には未記載）、引き続いてステップＳ３１５６でタスク２の実行が再開されると、タスク２に関する情報が実行中タスク２６０１の情報として保持される。
・ステップＳ３１６３：タスク２の実行が完了すると、タスク２に関する情報が実行中タスク２６０１の情報から削除される。これにより、実行中および実行待ち状態のタスクはなくなる（図示略）。
【０１６７】
このほか、図３７には記載していないが、端末１０２が停止中であるか否かを示すフラグを端末１０２毎に設ける。そして、端末１０２から端末１０２の停止が要求されたときは当該フラグをセットし、フラグがセットされている間は、端末１０２に対するタスク制御を停止する。この間、タスクの起動条件が満足された旨の通知が発生した場合は、タスク優先度に関わらず当該タスクに関する情報はタスクキュー２６０２に登録される。
【０１６８】
以上説明した実施の形態２によれば、実施の形態１同様に、ユーザやその周辺環境のコンテキストと、周辺機器が提供するサービスとに基づいて、優先順位やタスク間の依存関係を考慮して複数のタスクを順次実行することができる。実施の形態２では、これに加えて、タスクの実行中に他のタスクの割り込みがあったときにタスクの優先度に基づいてタスクの実行の中断および再開を制御できるようになる。これにより、複数のタスクを効率的に処理できるようになる。また、実施の形態２によれば、ユーザの移動に対応したタスク制御を実行するため、ユーザが移動しながら移動先毎に必要なサービスを受けることができるようになる。
【０１６９】
なお、本実施の形態で説明したタスク実行制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１７０】
上述した本実施の形態に関し、さらに以下の付記を開示する。
【０１７１】
（付記１）ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成部と、
ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理部と、
前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理部が選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理部と、を備え、
前記タスク管理部は、
前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択することを特徴とするタスク実行制御装置。
【０１７２】
（付記２）前記タスク管理部は、
前記コンテキスト情報と、前記タスクの選択ルールを参照し、複数の前記タスクについて、実行のスケジューリング、および割り込み制御をおこなうタスクスケジューラを有することを特徴とする付記１に記載のタスク実行制御装置。
【０１７３】
（付記３）前記タスク管理部は、
前記タスクの実行にあわせて所定のタイミングで前記コンテキスト情報を受信するための制御命令を保持するコンテキスト取得制御情報保存部と、
ユーザが実行すべき複数のタスクを保持する登録タスク保存部と、
前記タスクの選択ルールを保持するタスク選択ルール保存部と、
前記コンテキスト情報と、前記タスクの選択ルールに基づき、前記登録タスク保存部に保持された複数のタスクのうち、最優先で実行すべきタスクを選択するタスク選択部と、
を備えたことを特徴とする付記１に記載のタスク実行制御装置。
【０１７４】
（付記４）前記サービス管理部は、
前記機器が実行するサービスを一時的に保持しておく利用可能サービスキャッシュと、
前記機器が現在利用可能なサービスを確認する利用可能サービス確認部と、
前記タスクと前記サービスとの対応関係を保持するタスク・サービス対応関係保存部と、
前記タスク・サービス対応関係保存部に保持された前記サービスのうち、前記利用可能サービス確認部により現在利用可能なサービスについて、前記タスク管理部が選択した前記タスクを前記機器により実行可能かを確認するタスク・サービス確認部と、
を備えたことを特徴とする付記１に記載のタスク実行制御装置。
【０１７５】
（付記５）前記サービス管理部は、
前記タスクを実行するために前記機器を制御するソフトウェアであるタスクコントローラを保持するタスクコントローラ保存部と、
前記タスク管理部が選択した前記タスクに対応する実行用のタスクコントローラを前記機器に送信するタスクコントローラ管理部と、
を備えたことを特徴とする付記１に記載のタスク実行制御装置。
【０１７６】
（付記６）前記サービス管理部は、
前記機器が前記機器の周辺に存在する他の機器が実行可能なサービスを発見した際の通知に基づき、当該サービスの情報を前記利用可能サービスキャッシュに保持することを特徴とする付記４に記載のタスク実行制御装置。
【０１７７】
（付記７）前記サービス管理部は、
前記機器と、当該機器が実行可能なサービスの定義を保持し、前記機器により発見した他の機器が実行可能なサービスを参照可能とするデバイス・サービス定義情報保存部を有することを特徴とする付記４に記載のタスク実行制御装置。
【０１７８】
（付記８）前記機器に搭載された計測用のセンサ、および前記サービスの情報を集約し、前記コンテキスト生成部における前記コンテキスト情報に用いる情報として通知するセンサ・端末情報集約部を備えたことを特徴とする付記１に記載のタスク実行制御装置。
【０１７９】
（付記９）前記タスクスケジューラは、
タスクの実行条件が満たされたが、当該タスクの実行に対応するサービスが発見できないために未実行となったタスクに関して、周期的に優先度の高いものから順に、前記コンテキスト生成部に対するタスクの実行条件が満たされている確認要求と、前記サービス管理部に対する、タスクの実行可否判定を要求して、最も優先度の高いタスクからの実行を待つことを特徴とする付記２に記載のタスク実行制御装置。
【０１８０】
（付記１０）前記タスクスケジューラは、
前記コンテキスト生成部の前記コンテキスト情報と、現在タスクの実行条件の確認に基づき、実行条件が満たされていない前記タスクが存在した場合には、前記コンテキスト生成部に対して当該タスクの実行条件を再設定し、当該タスクを再度実行可能な状態にすることを特徴とする付記２に記載のタスク実行制御装置。
【０１８１】
（付記１１）前記タスクスケジューラは、
前記機器から当該機器の停止要求を受信すると、当該機器へのタスクの起動／中断／再開制御を停止することを特徴とする付記２に記載のタスク実行制御装置。
【０１８２】
（付記１２）サーバ装置と、機器とを備えたタスク実行制御システムにおいて、
前記サーバ装置は、
ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成部と、
ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理部と、
前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理部が選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理部と、を備え、
前記タスク管理部は、前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択し、
前記機器は、
自機器および周辺に存在する他の機器のサービスを発見して、当該サービスの情報を前記サーバ装置に通知し、当該サーバ装置からの命令もしくはプログラムにしたがって前記機器による前記サービスの制御をおこなう周辺機器連携部を備えたことを特徴とするタスク実行制御システム。
【０１８３】
（付記１３）前記機器は、
前記サーバ装置と情報をやりとりする端末と、
前記端末を介して前記サービスを実行する周辺機器と、を備え、
前記周辺機器は、
存在と機器情報を前記端末に通知する応答・広告部と、
前記端末からの制御情報にしたがい、前記サービスを実行する被制御部とを有し、
前記コンテキスト情報に基づき、前記サービスに対応する前記周辺機器を用いることを特徴とする付記１２に記載のタスク実行制御システム。
【０１８４】
（付記１４）ユーザと、ユーザの周辺状況に関する情報をコンテキスト情報として生成するコンテキスト生成工程と、
ユーザが実行しようとするタスクを複数保持し、前記コンテキスト情報、およびあらかじめ定めたタスクの選択ルールにしたがってタスクを選択し、当該タスクの実行を制御するタスク管理工程と、
前記タスクの実行に用いる機器が実行するサービスを確認し、前記タスク管理工程により選択したタスクの実行に対応するサービスを前記機器に通知し、実行させるサービス管理工程と、を含み、
前記タスク管理工程は、
前記タスクの選択ルールとして、タスクの優先度、および前記タスク同士間であらかじめ設定した実行に関するタスク間の依存関係の情報を用いてタスクを選択することを特徴とするタスク実行制御方法。
【０１８５】
（付記１５）前記タスク管理工程は、
前記コンテキスト情報と、前記タスクの選択ルールを参照し、複数の前記タスクについて、実行のスケジューリング、および割り込み制御をおこなうことを特徴とする付記１４に記載のタスク実行制御方法。
【符号の説明】
【０１８６】
１００  タスク実行制御システム
１０１  サーバ装置
１０２  端末
１０２ａ  管理者端末
１０３  周辺機器
１０４  情報通信ネットワーク
１１２  端末内蔵センサ
１１３  被制御部
１１４  機器内蔵センサ
２０１  コンテキスト生成部
２０２  タスク管理部
２０３  サービス管理部
２０４，２３２  センサ・端末情報集約部
２１１  コンテキスト取得制御情報保存部
２１２  登録タスク保存部
２１３  タスク選択ルール保存部
２１４  タスク選択部
２１４ａ  タスクスケジューラ
２２１  タスク・サービス対応関係保存部
２２２  利用可能サービスキャッシュ
２２３  利用可能サービス確認部
２２４  タスク・サービス確認部
２２５  タスクコントローラ保存部
２２６  タスクコントローラ管理部
２２７  デバイス・サービス定義情報保存部
２３１  周辺機器連携部
２３３  サービス発見・通知部
２３４  タスクコントローラ実行部
２３５  アプリケーション
２４１  応答・広告部
２６０１  実行中タスク
２６０２  タスクキュー
３１０１  コンテキスト管理サーバ
３１０２  タスク管理サーバ
【国際調査報告】
2012131962.tif 000046
2012131962.tif 000047
2012131962.tif 000048
2012131962.tif 000049