(57)【特許請求の範囲】
【請求項１】
複数の情報処理装置から構成されるグループにおけるタスク実行方法であって、
タスクの第１担当装置およびその実行終了予測時刻と、前記タスクの第２担当装置およびその実行終了予測時刻とを含むタスク情報を受信する受信ステップと、
受信したタスク情報に基づいて、当該タスク情報に対応するタスクを実行するか否かを判定する判定ステップと、
前記タスクに関するタスク情報を送信する送信ステップと、
を含み、
前記判定ステップでは、（Ａ）第１担当装置としていずれのタスクも実行しておらず、かつ、前記タスク情報に含まれる前記第１担当装置の実行終了予測時刻よりも早くに前記タスクを終了できる場合に、第１担当装置として前記タスクを実行すると判定し、（Ｂ）第１担当装置または第２担当装置としていずれのタスクも実行しておらず、かつ、前記タスク情報に含まれる前記第２担当装置の実行終了予測時刻よりも早くに前記タスクを終了できる場合に、第２担当装置として前記タスクを実行すると判定し、
前記送信ステップでは、（Ａ）第１担当装置として前記タスクを実行する場合は、タスク情報の第１担当装置を自装置に更新し、第２担当装置をそれまでの第１担当装置に更新して、更新されたタスク情報を送信し、（Ｂ）第２担当装置として前記タスクを実行する場合は、タスク情報の第２担当装置を自装置に更新して、更新されたタスク情報を送信する、
タスク実行方法。
【請求項２】
前記判定ステップにおいて前記タスク情報に対応するタスクを実行しないと判定する場合、前記送信ステップでは受信した前記タスク情報の第１担当装置と第２担当装置に関する情報を更新せずに送信する、
請求項１に記載のタスク実行方法。
【請求項３】
前記判定ステップでは、前記タスク情報が自装置で実行しているタスクに関するタスク情報であり、かつ、当該タスク情報に自装置に関する情報が含まれない場合には、当該タスク情報に対応するタスクの実行を中止すると判定する、
請求項１または２に記載のタスク実行方法。
【請求項４】
前記判定ステップでは、前記当該タスク情報が自装置で実行しているタスクに関するタスク情報であり、かつ、当該タスク情報に自装置に関する情報が含まれない場合には、タスク情報に含まれるタスク終了予測時刻のいずれもが、自装置における当該タスクの終了予測時刻よりも早いという条件をさらに満たす場合、前記タスクの実行を中止すると判定し、前記条件を満たさない場合には、前記タスクの実行を継続すると判定し、前記送信ステップにおいて前記タスク情報を更新して送信する、
請求項３に記載のタスク実行方法。
【請求項５】
ユーザ装置からタスクの実行依頼を取得する実行依頼取得ステップをさらに含み、
実行依頼されたタスクを第１担当装置として実行するとともに、第１担当装置が自装置であり、第２担当装置に関する情報が空のタスク情報を送信する、
請求項１から４のいずれか１項に記載のタスク実行方法。
【請求項６】
前記判定ステップでは、前記タスク情報に対応するタスクを、最初から実行する場合と、途中結果を取得して途中から実行する場合の両方について実行終了時刻を推定し、いずれか早いほうを自装置での実行終了予測時刻とする、
請求項１から５のいずれか１項に記載のタスク実行方法。
【請求項７】
前記判定ステップにおいて前記タスク情報に対応するタスクを実行すると判定した場合、かつ、前記タスクの途中結果を取得して途中から実行する方が最初から実行するよりも早い場合は、当該タスクの途中結果を取得して途中から当該タスクを実行する、
請求項６に記載のタスク実行方法。
【請求項８】
タスクを第１担当装置または第２担当装置として実行している情報処理装置の前記グループからの離脱を検知した場合に、当該タスクに対応するタスク情報を更新して送信するステップをさらに含む、
請求項１から７のいずれか１項に記載のタスク実行方法。
【請求項９】
タスクの第１担当装置およびその実行終了予測時刻と、前記タスクの第２担当装置およびその実行終了予測時刻とを含むタスク情報を受信する受信手段と、
受信したタスク情報に基づいて、当該タスク情報に対応するタスクを実行するか否かを判定する判定手段と、
前記タスクに関するタスク情報を送信する送信手段と、
を備え、
前記判定手段は、（Ａ）第１担当装置としていずれのタスクも実行しておらず、かつ、前記タスク情報に含まれる前記第１担当装置の実行終了予測時刻よりも早くに前記タスクを終了できる場合に、第１担当装置として前記タスクを実行すると判定し、（Ｂ）第１担当装置または第２担当装置としていずれのタスクも実行しておらず、かつ、前記タスク情報に含まれる前記第２担当装置の実行終了予測時刻よりも早くに前記タスクを終了できる場合に、第２担当装置として前記タスクを実行すると判定し、
前記送信手段は、（Ａ）第１担当装置として前記タスクを実行する場合は、タスク情報の第１担当装置を自装置に更新し、第２担当装置をそれまでの第１担当装置に更新して、更新されたタスク情報を送信し、（Ｂ）第２担当装置として前記タスクを実行する場合は、タスク情報の第２担当装置を自装置に更新して、更新されたタスク情報を送信する、
情報処理装置。
【請求項１０】
請求項１から８のいずれか１項に記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスクの実行処理に関し、特に、タスクの実行依頼を受け付けたグループが当該タスクを実行する装置を適切に決定するタスク実行処理に関する。
【背景技術】
【０００２】
近年、車両には高機能な計算処理装置、記憶装置、無線通信装置、センサが搭載されている。このような計算リソースを他車両や車両以外の装置に提供することで、車両ネットワークシステムはＩＣＴ基盤（巨大なＣＰＵやストレージ等）として活用できる。
【０００３】
例えば、特許文献１は、データ処理装置と通信可能になった端末装置がデータ処理装置に分散処理要求を送信し、データ処理装置は予測ターンアラウンド時間が要求を満たすかを判定して、要求された分散処理を実行するか否かを決定することを開示する。
【０００４】
また、非特許文献１は、スマートフォン端末の電池消費量削減のためアプリケーションプログラムをインフラにオフロードする。この際に、コネクション状況やエネルギー消費量を考慮して分割粒度を適切に調整することが、非特許文献１では検討されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2005-208834号公報
【非特許文献】
【０００６】
【非特許文献１】Cuervo, Eduardo, et al. "MAUI: making smartphones last longer with code offload." Proceedings of the 8th international conference on Mobile systems, applications, and services. ACM, 2010.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
車両ネットワークシステムが外部装置からタスクの実行依頼を受け付けた場合、車両群の中から最適な車両（計算リソース）を用いて当該タスクを実行することが望まれる。そして、複数の外部装置が同時に車両リソースを利用する環境においては、その時々によってタスク処理に適する車両リソースが変化するため、リアルタイムにタスク実行車両を決定する必要がある。
【０００８】
特許文献１は、タスクの実行依頼を受け付けるか否かの判断については検討されているが、タスクの実行依頼を受け付けた後のタスク処理方法については検討されていない。特に、タスクの依頼先として単一の計算機を前提としているため、タスクの実行依頼を受け付けた後に、複数の計算装置の中からタスク実行に適した計算装置を選択することは考慮されていない。非特許文献１も同様に、複数の計算機の中からタスクを代替する計算機を決定することは考慮していない。
【０００９】
本発明は、複数の情報処理装置から構成されるグループにおいて、タスクを実行する情報処理装置を適切に決定可能なタスク実行方法およびタスク実行システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために、本発明は、グループ内でタスク情報を送信し、当該タス
ク情報に基づいてグループ内の各装置がタスクを実行するか否かを自律的に判断する。また、タスク情報に現在タスクを実行している装置の実行終了予測時刻を格納することで、当該実行終了予測時刻を考慮してタスクを実行するか否かを各装置が判断可能とする。また、本発明では、１つのタスクをグループ内の２つ以上の装置で実行することによって冗長性を確保する。
【００１１】
より具体的には、本発明の一態様は、複数の情報処理装置から構成されるグループにおけるタスク実行方法であって、タスク情報を受信する受信ステップと、受信したタスク情報に基づいて、当該タスク情報に対応するタスクを実行するか否かを判定する判定ステップと、前記タスクに関するタスク情報を送信する送信ステップと、を含む。
【００１２】
本発明では、１つのタスクをグループ内の少なくとも２つの情報処理装置が実行することを想定する。そのため、タスク情報には、タスクの第１担当装置を特定する情報（例えば、識別子）と、第１担当装置によるタスクの実行終了予測時刻と、タスクの第２担当装置を特定する情報と、第２担当装置によるタスクの実行終了予測時刻と、が含まれる。タスク情報には、タスクを特定する情報や、タスクの内容（例えば、ソースコードや中間コードなど）が含まれることも好ましい。
【００１３】
判定ステップでは、自装置が第１担当装置としていずれのタスクも実行しておらず、かつ、前記タスク情報に含まれる前記第１担当装置の実行終了予測時刻よりも早くに前記タスクを終了できる場合に、第１担当装置として前記タスクを実行すると判定する。この場合、送信ステップでは、受信したタスク情報の第１担当装置を自装置に更新し、第２担当装置をそれまでの第１担当装置に更新してから、更新されたタスク情報を送信する。
【００１４】
また、判定ステップにおいて、自装置が第１担当装置または第２担当装置としていずれのタスクも実行しておらず、かつ、前記タスク情報に含まれる前記第２担当装置の実行終了予測時刻よりも早くに前記タスクを終了できる場合に、第２担当装置として前記タスクを実行すると判定する。この場合、送信ステップでは、受信したタスク情報の第２担当装置を自装置に更新して（第１担当装置は更新せず）、更新されたタスク情報を送信する。
【００１５】
また、判定ステップにおいて前記タスク情報に対応するタスクを実行しないと判定する場合、前記送信ステップでは受信した前記タスク情報の第１担当装置と第２担当装置に関する情報を更新せずに送信する。タスク情報におけるその他の情報は更新されても構わない。
【００１６】
このような構成によれば、タスク情報をグループ内で送信することにより、各情報処理装置がタスクを実行すべきかどうかをリアルタイムかつ自律的に判断できる。また、タスク実行に適した装置を探索するために必要な時間浪費を削減することもできる。さらに、１つのタスクを複数の装置で実行するため、冗長性を確保できる。
【００１７】
本発明における判定ステップにおいて、前記タスク情報が自装置で実行しているタスクに関するタスク情報であり、かつ、当該タスク情報に自装置に関する情報が含まれない場合には、当該タスク情報に対応するタスクの実行を中止すると判定する、ことができる。また、判定ステップにおいて、前記タスク情報が、自装置が第１担当装置として実行しているタスクに関するタスク情報であり、かつ、当該タスク情報に自装置に関する情報が第２担当装置として含まれている場合には、自装置においてタスクの実行は継続するが、第２担当装置として実行していると認識し直すことが好ましい。
【００１８】
このような構成によれば、タスク情報の送信により、それまでタスクを実行していた装置でのタスク実行中止や、第１担当装置から第２担当装置への変更が可能となる。
【００１９】
上記のようにタスク情報に自装置に関する情報が含まれていない場合には、さらに、タスク情報に含まれるタスク終了予測時刻のいずれもが、自装置における当該タスクの終了予測時刻よりも早いという条件をさらに満たすかどうかを判定するとよい。当該条件を満たす場合には、前記タスクの実行を中止すると判定し、当該条件を満たさない場合には、前記タスクの実行を継続すると判定し、前記送信ステップにおいて前記タスク情報を更新して送信する、とよい。第１担当装置から第２担当装置に変更する場合も同様である。
【００２０】
タスク情報のみに依存すると、タスクの実行終了時刻が自装置よりも遅い装置がタスクを実行する事態も生じうる。タスクの実行終了予測時刻を再度比較することで、このような事態を防止し、タスクを実行する装置をより適切に決定できる。
【００２１】
また、本発明は、ユーザ装置からタスクの実行依頼を取得する実行依頼取得ステップをさらに含み、実行依頼されたタスクを第１担当装置として実行するとともに、第１担当装置が自装置であり、第２担当装置に関する情報が空のタスク情報を送信する、ことも好ましい。
【００２２】
このようにユーザ装置からタスクの実行依頼を受け付けた装置が即座にタスクを実行することで、時間の浪費を削減できる。
【００２３】
なお、ユーザ装置からタスクの実行依頼を取得した装置が、第１担当装置として他のタスクを実行している場合には、ユーザ装置のタスクを実行せずに第１担当装置および第２担当装置に関する情報が空のタスク情報を送信するとよい。また、ユーザ装置からタスクの実行依頼を取得した装置が、第２担当装置として他のタスクを実行している場合には、ユーザ装置からのタスクを第１担当装置として実行してもよい。あるいは、ユーザ装置からタスクの実行依頼を取得した装置は、他のタスクを実行していないことを条件として、ユーザ装置からのタスクを第１担当装置として実行してもよい。
【００２４】
本発明の判定ステップにおいて、前記タスク情報に対応するタスクを、最初から実行する場合と、途中結果を取得して途中から実行する場合の両方について実行終了時刻を推定し、いずれか早いほうを自装置での実行終了予測時刻とする、ことも好ましい。これは特に、タスク情報に含まれる情報からタスクを最初から実行できるが、途中からタスクを実行するには他の装置との間で通信が必要な場合に有効である。タスクの途中結果を取得して途中から実行する方が最初から実行するよりも早い場合は、当該タスクの途中結果を取得して途中から当該タスクを実行する。
【００２５】
また、本発明において、タスクを第１担当装置または第２担当装置として実行している情報処理装置の前記グループからの離脱を検知した場合に、当該タスクに対応するタスク情報を更新して送信するステップをさらに含むことも好ましい。第１担当装置が離脱した場合には、それまでの第２担当装置を第１担当装置にし、第２担当装置を空としたタスク情報を送信するとよい。第２担当装置が離脱した場合には、第１担当装置は変更せずに、第２担当装置を空としたタスク情報を送信するとよい。このようにすれば、タスクの実行を担当していた情報処理装置が離脱した場合に、残された装置の中から新たな装置がタスクを実行できる。
【００２６】
本発明において、１つのタスクをＮ台（Ｎは２以上の整数）の情報処理装置で実行することができる。この場合、タスクを実行する装置は、第１担当装置から第Ｎ担当装置となる。第１担当装置としてタスクを実行している装置は、他のタスクを実行しない。一方、第ｋ担当装置（ｋは２以上Ｎ以下の整数）としてタスクを実行している装置は、受信したタスク情報の第ｊ担当装置（ｊは１以上ｋ−１以下の整数）よりも早くにタスクの実行を
完了できる場合に、第ｊ担当装置として当該タスクを実行するようにする。
【００２７】
本発明において、上記の情報処理装置は、移動可能であってもよいし、固定されていてもよい。上記の情報処理装置は、例えば、車両などの移動体に搭載された情報処理装置あるいは、車両などの移動体に持ち込まれた情報処理装置とすることができる。
【００２８】
本発明において、タスクとは、情報処理装置（コンピュータ）において実行可能な任意の処理を意味する。したがって、タスクには、数式の演算だけでなく、外部装置からのデータの取得や、外部装置へのデータの出力・送信などの処理も含まれる。
【００２９】
本発明において、タスクの実行依頼は、どのような態様によって実施されてもよい。例えば、実行依頼は、バイナリ、実行可能なスクリプト言語を含むソースコード、中間コード（バイトコードとも呼ばれる）、実行コマンドあるいは関数名、または一般的な作業指示書とすることができ、これにデータ、パラメータ、引数、処理結果などを加えて渡してもよい。
【００３０】
本明細書において、車載端末とは、車両に備え付けられた情報処理装置（コンピュータ）や、車両内部に持ち運ばれた情報処理装置を意味する。情報処理装置は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）などの汎用の演算プロセッサとプログラムを格納した記憶装置の組み合わせ、ＦＰＧＡ（Field-Programmable Gate Array）などのプログラム可能な集積回路（プログラマブルロジックデバイス）、ＡＳＩＣ
（Application Specific Integrated Circuit）などの集積回路、の少なくともいずれか
を含む。
【００３１】
なお、本発明は、上記処理の少なくとも一部を実行するタスク実行方法として捉えることもできる。本発明は、上記処理の少なくとも一部を実行する手段を備えるタスク実行システムあるいは情報処理装置として捉えることができる。また、本発明は、この方法をコンピュータに実行させるためのコンピュータプログラム、あるいはこのコンピュータプログラムを非一時的に記憶したコンピュータ可読記憶媒体として捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【００３２】
本発明によれば、複数の情報処理装置から構成されるグループにおいて、タスクを実行する情報処理装置を適切に決定できる。
【図面の簡単な説明】
【００３３】
【図１】図１は、実施形態に係る計算システムのシステム概要図。
【図２】図２Ａは車載端末の装置構成図、図２Ｂは車載端末の機能ブロック図。
【図３】図３は、実施形態に係る計算システムにおける全体処理を示すフローチャート。
【図４】図４Ａはタスク実行処理のうちユーザ端末からタスク実行依頼受信時の処理を示すフローチャート、図４Ｂはタスク情報の例を示す図。
【図５】図５はタスク実行処理のうちタスク情報受信時の処理を示すフローチャート。
【図６】図６はタスク実行処理のうちタスク情報受信時の処理を示すフローチャート。
【図７】図７は本実施形態に係るタスク実行車両決定処理の動作例を示す図。
【発明を実施するための形態】
【００３４】
以下では説明の簡略化のために、車載端末と車両とを区別せずに相互に交換可能な意味
として用いる。例えば、車両に搭載された車載端末が処理を行うことを、車両が処理を行うと表現することがある。あるいは、車両の位置や移動経路のことを、車載端末の位置や移動経路と表現することもある。また、車両と当該車両に搭載された車載端末に対して、同一の参照符号を用いることもある。
【００３５】
＜概要＞
図１は、本実施形態に係る計算システムのシステム概要を説明する図である。本実施形態に係る計算システムは、ユーザが利用するユーザ端末２００および車両に搭載された複数の車載端末１００から構成され、ユーザ端末２００が車載端末１００に対して計算タスクの実行を委託する。
【００３６】
本実施形態では、複数の車載端末１００が車群１０を形成し、ユーザ端末２００からは車群１０が１つの計算リソースとして把握できるようにする。例えば、ユーザ端末２００が車群１０内のある車両にタスクを実行依頼した後の車群１０内での計算タスクの移送には、ユーザ端末２００が関与する必要がないように構成する。ユーザ端末から委託された計算タスクは、車群１０内の２つの車載端末１００によって実行され、いずれかの車載端末１００からユーザ端末に計算結果が送信される。
【００３７】
ユーザ端末２００からタスクの実行依頼を受けた車群１０は、車群１０内の適切な車載端末１００において当該タスクを実行する。本実施形態では、迅速にタスク実行車両を決定でき、かつ、車両の車群からの離脱にも対応できるように、タスク実行車両を決定する。以下では主に、車群１０がユーザ端末２００からタスクの実行依頼を受け付けてから、車群１０内で当該タスクを実行する処理について説明する。
【００３８】
＜構成＞
図２Ａは、本実施形態における車載端末１００の装置構成を示す図である。車載端末１００は、演算装置１０１、記憶装置１０２、ＧＰＳ装置１０３、入出力装置１０４、無線通信装置１０５、複数のセンサ１０６を含む。
【００３９】
演算装置１０１は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）などのプロセッサを含み、記憶装置１０２に格納されたプログラムを実行することで所定の機能を提供する。記憶装置１０２は、ＲＡＭ（Random Access Memory）などの主記憶装置や半導体メモリ・磁気ディスク・光ディスク・光磁気ディスクなどの補助記憶装置を含む。ＧＰＳ装置１０３は、不図示のＧＰＳ受信機からＧＰＳ衛星信号を受信し、車両１００の位置情報を取得する。入出力装置１０４は、キーボードや種々のポインティングデバイス（マウス、タッチパッド、タッチパネル、ペンタブレット等）やマイクなどの入力装置、ディスプレイ装置（液晶ディスプレイ・ＣＲＴディスプレイ・プロジェクタ等）や音声出力装置などの出力装置を含む。無線通信装置１０５、他の車両１００およびユーザ端末２００との間で通信可能な無線通信装置である。無線通信の通信方式は、任意であってよい。また、車両間での通信とユーザ端末との通信は、同一方式であってもよいし、それぞれ異なる方式であってもよい。センサ１０６は、車両１００の内部および外部に関する情報を取得するためのセンサであり、例えば、車外カメラ（可視光カメラや赤外カメラ、ステレオカメラも含む）、測距レーダー（ミリ波レーダー、超音波レーダー）、車速センサ、加速度センサなどが含まれる。
【００４０】
図２Ｂは、車載端末１００の機能構成を示す機能ブロック図である。車両１００の演算装置１０１が記憶装置１０２に格納されているプログラムを実行することで、以下の機能が実現される。すなわち、車載端末１００は、タスク実行依頼受信部１１、タスク情報受信部１２、判定部１３、タスク実行部１４、実行結果送信部１５、更新部１６、タスク情報記憶部１７、タスク情報送信部１８等の機能を提供する。これら各機能の詳細について
、後ほど処理内容を説明する際にあわせて説明する。
【００４１】
＜処理内容＞
［全体処理］
図３は、本実施形態に係る計算システムが実行する全体処理の概要を示すフローチャートである。このフローチャートでは、ユーザ端末２００と車両システムが実行する処理を記載している。車両システムが実行すると示されている処理は、車両システム内の少なくとも一部の車両１００が独自に行う処理、車両システム内の複数の車両１００が協調して行う処理が含まれる。
【００４２】
まず、ユーザ端末２００が車両システムに対してタスク実行依頼を送信し、車両システムがこのタスク実行依頼を受信する（Ｓ３０１，Ｓ３０２）。ステップＳ３０２では、ユーザ端末２００と通信可能な車両１００のタスク実行依頼受信部１１が、ユーザ端末２００からのタスク実行依頼を受信する。ユーザ端末２００が車群１０に対してタスク実行を依頼するか否か、あるいは車群１０がユーザ端末２００からのタスク実行依頼を受け付けるか否かは、適宜の方法により決定すればよい。例えば、車群１０がユーザ端末２００と通信可能な間に、車群１０がタスクを実行できる場合にユーザ端末２００から車群１０へのタスクの実行依頼が行われるように構成することができる。
【００４３】
ステップＳ３０３において、車群１０内で実行依頼されたタスクが実行される。具体的な手順は、図４以降を参照して以下で詳しく説明する。
【００４４】
ステップＳ３０４では、車群１０からユーザ端末２００に対してタスクの実行結果が送信される。具体的には、ユーザ端末２００と直接通信可能な車両１００が実行結果送信部１５によって決定され、当該車両１００を介して実行結果がユーザ端末２００に送信される。ステップＳ３０５では、ユーザ端末２００が車両システムからこの実行結果を受信する。なお、実行結果は必ずしもタスクが最後まで実行された結果である必要はなく、途中結果であっても構わない。
【００４５】
［タスク実行依頼受信時処理］
ステップＳ３０３の車群１０内でのタスク実行処理のうち、ユーザ端末２００からタスク実行依頼を受け付けた車両１００による処理を、図４Ａを参照して説明する。ここでは、ユーザ端末２００からタスクを受け付けた車両１００、すなわち図４Ａの処理を実行する車両のことを、車両Ｐと称する。
【００４６】
ステップＳ４０１において、タスク実行依頼受信部１１がユーザ端末２００からタスク実行依頼を受け付ける。タスク実行依頼には、ユーザ端末２００のＩＤ（識別子）や、タスクの内容が含まれる。タスクの内容は、例えば、ソースコード、中間コード、バイナリによって表すことができる。
【００４７】
ステップＳ４０２において、判定部１３は、現在車両Ｐが他のタスクを主担当装置として実行しているか否かを判定する。
【００４８】
車両Ｐが他のタスクを実行していない場合（Ｓ４０２−ＮＯ）には、ステップＳ４０３において、タスク実行部１４が当該タスクを主担当装置として実行を開始する。なお、主担当装置と補助担当装置は後述するように役割が異なるだけであり、タスクの実行方法自体は同様である。そして、ステップＳ４０４において、更新部１６がタスク情報を生成して、タスク情報記憶部１７に記憶する。
【００４９】
図４Ｂを参照して、タスク情報について説明する。タスク情報４１０には、タスクＩＤ
４１１、コンテンツ情報４１２、主担当車両情報４１４、補助担当車両情報４１７が含まれる。タスクＩＤ４１１は、タスクを一意に特定するための識別子である。コンテンツ情報４１２には、タスクを実行するための情報が含まれる。本実施形態では、タスクのソースコードや中間コードなどがコンテンツ情報４１２として含まれる。主担当車両情報４１４は、車両情報（Ｖｍ）４１５および終了時刻情報（Ｔｍ）４１６を含む。車両情報４１５は、主担当車両を特定するための識別子であり、終了時刻情報４１６は主担当車両がこのタスクの実行を終了すると予想される時刻である。補助担当車両情報４１７は、同様に、車両情報（Ｖｓ）４１８および終了時刻情報（Ｔｓ）４１９を含む。なお、終了時刻情報は、絶対時刻で表されてもよいし、基準時刻からの相対時刻で表されてもよい。
【００５０】
ステップＳ４０４のタスク情報生成処理においては、車両Ｐがタスクを主担当車両として実行するので、主担当車両情報４１４の車両情報（Ｖｍ）４１５に車両Ｐの識別子が格納される。また、終了時刻情報（Ｔｍ）４１６に、タスクの終了予測時刻が格納される。タスクの終了時刻は、例えば、静的分析により最悪実行時間（ＷＣＥＴ：Worst Case Execution Time）を推定することにより得られる。補助担当車両情報４１７は空欄のままと
する。
【００５１】
一方、車両Ｐが他のタスクを実行している場合（Ｓ４０２−ＹＥＳ）には、タスクの実行はせずに、ステップＳ４０５において更新部１６がタスク情報を生成しタスク情報記憶部１７に記憶する。この場合、タスク情報の主担当車両情報４１４および補助担当車両情報４１７は空欄のままとする。
【００５２】
ステップＳ４０６では、タスク情報送信部１８が、ステップＳ４０４またはＳ４０５において生成したタスク情報を、周囲の車両に対して送信する。
【００５３】
なお、車両Ｐが他のいずれのタスクも実行していない場合にユーザ端末から実行依頼を受けたタスクを実行するものとして説明したが、車両Ｐが他のタスクを主担当車両として実行していない場合に、実行依頼を受けたタスクを実行するようにしてもよい。すなわち、車両Ｐが他のタスクを補助実行車両として実行している場合は、当該タスクの実行を中断して、ユーザ端末から依頼されたタスクを主担当装置として実行してもよい。この場合、車両Ｐは、ユーザ端末から依頼されたタスクに関するタスク情報だけでなく、実行を中断したタスクに関してもタスク情報を送信する。
【００５４】
［タスク情報受信時処理］
ステップＳ３０３の車群１０内でのタスク実行処理のうち、他の車両からタスク情報を受信した車両１００による処理を、図５、図６を参照して説明する。ここでは、他の車両からタスク情報を受信した車両１００、すなわち図５、図６の処理を実行する車両のことを、車両Ｐと称する。
【００５５】
ステップＳ５０１において、タスク情報受信部１２がタスク情報を受信する。ここでは受信したタスク情報がタスクＡに関するものとして説明する。ステップＳ５０２において、判定部１３は、車両ＰがタスクＡを実行中であるか否かを判定する。車両ＰがタスクＡを実行していない場合（Ｓ５０２−ＮＯ）は、ステップＳ５０３に進む。
【００５６】
ステップＳ５０３において、判定部１３は、現在車両ＰがタスクＡ以外のタスクを主担当車両として実行しているか否かを判定する。車両Ｐが他のタスクを主担当車両として実行している場合（Ｓ５０３−ＹＥＳ）には、何もせずにステップＳ５１２に進む。一方、車両Ｐが他のタスクを主担当車両として実行していない場合（Ｓ５０３−ＮＯ）にはステップＳ５０４に進む。
【００５７】
ステップＳ５０４では、判定部１３が、車両ＰでタスクＡを実行した場合のタスク実行終了時刻Ｔｘを推定する。タスクの実行方法として２通りの方法が考えられる。１つ目の方法は、タスク情報に含まれる情報のみに基づいてタスクＡを実行する方法である。２つ目の方法は、タスクＡを現在実行している車両から計算の途中結果を取得して、途中からタスクＡを実行する手法である。２つ目の方法は、計算時間自体は短くなるが、通信に時間を要する。本実施形態では、判定部１３は、これら２つの方法についての実行終了時刻を推定し、より早く終了する方法を実行終了時刻Ｔｘとする。
【００５８】
ステップＳ５０５において、判定部１３は、車両Ｐのタスク終了時刻Ｔｘと、タスク情報に含まれる主担当車両のタスク終了時刻Ｔｍとを比較する。車両Ｐの方がタスクＡを早く終了できる、すなわち、Ｔｘ＜Ｔｍの場合（Ｓ５０５−ＹＥＳ）には、ステップＳ５０６に進み、タスク実行部１４がタスクＡを主担当車両として実行開始する。タスクの実行方法は、上記２つのうち、より早く終了する方法を採用する。ステップＳ５０７において、更新部１６は、ステップＳ５０１で受信したタスク情報の内容を更新する。具体的には、主担当車両の車両情報Ｖｍ（４１５）と終了時刻情報Ｔｍ（４１６）を、車両Ｐの識別子および終了時刻に変更し、補助担当車両の車両情報Ｖｓ（４１８）と終了時刻情報Ｔｓ（４１９）をそれまでの主担当車両の識別子および終了時刻に変更する。
【００５９】
なお、ステップＳ５０６において、それまで補助担当車両として他のタスクＢを実行していた場合には、車両ＰはタスクＢの実行を中断してタスクＡの実行を開始する。この際、周囲の車両に対して車両ＰにおけるタスクＢの実行中断を知らせるために、車両ＰはタスクＢのタスク情報を更新して周囲の車両に送信する。具体的には、車両Ｐは、タスクＢのタスク情報から補助担当車両に関する情報を削除し、補助担当車両情報が空のタスク情報を送信する。
【００６０】
ステップＳ５０５の判定において、車両ＰのタスクＡの終了時刻が現在のタスクＡの主担当車両の終了時刻よりも遅い場合（Ｓ５０５−ＮＯ）には、ステップＳ５０８に進み、判定部１３が、車両Ｐが補助担当車両としてタスクＡ以外のタスクを実行しているか否かを判定する。車両Ｐが他のタスクを補助担当車両として実行している場合（Ｓ５０８−ＹＥＳ）には、何もせずにステップＳ５１２に進む。一方、車両Ｐが他のタスクを補助担当車両としても実行していない場合（Ｓ５０８−ＮＯ）にはステップＳ５０９に進む。
【００６１】
ステップＳ５０９において、判定部１３は、車両Ｐのタスク終了時刻Ｔｘと、タスク情報に含まれる補助担当車両のタスク終了時刻Ｔｓとを比較する。車両Ｐの方がタスクＡを早く終了できる、すなわち、Ｔｘ＜Ｔｓの場合（Ｓ５０９−ＹＥＳ）には、ステップＳ１０６に進み、タスク実行部１４がタスクＡを補助担当車両として実行開始する。ステップＳ５１１において、更新部１６は、ステップＳ５０１で受信したタスク情報の内容を更新する。具体的には、主担当車両に関する情報はそのままとし、補助担当車両の車両情報Ｖｓ（４１８）と終了時刻情報Ｔｓ（４１９）を、自車両の識別子および終了時刻に変更に変更する。
【００６２】
なお、ステップＳ５０５、Ｓ５０９のタスク実行終了時刻の比較において、タスク情報に主担当車両あるいは補助担当車両の終了時刻Ｔｍ，Ｔｓが格納されていない場合には、車両Ｐのタスク終了時刻Ｔｘの方が早いと判定すればよい。表現を変えれば、主担当車両あるいは補助担当車両が存在しない場合の終了時刻Ｔｍ，Ｔｓは無限大として扱えばよい。
【００６３】
ステップＳ５１２において、タスク情報送信部１８は、タスク情報を送信する。具体的には、タスクＡを主担当車両として実行する場合にはステップＳ５０７において更新したタスク情報が送信され、タスクＡを補助担当車両として実行する場合にはステップＳ５１
１において更新したタスク情報が送信され、タスクＡを実行しない場合にはステップＳ５０１において受信したタスク情報が送信される。
【００６４】
次に、受信したタスク情報に対応するタスクＡを車両Ｐが実行している場合（Ｓ５０２−ＹＥＳ）の処理について、図６を参照して説明する。
【００６５】
ステップＳ６０１において、判定部１３は、タスク情報の主担当車両情報または補助担当車両情報に車両Ｐに関する情報（識別子）が含まれるか判定する。タスク情報に車両Ｐに関する情報が含まれる場合（Ｓ６０１−ＹＥＳ）には、ステップＳ６０２に進みタスクＡの実行を継続する。この際、車両ＰがタスクＡの主担当車両であるか補助担当車両であるかを、タスク情報において車両Ｐが主担当車両と補助担当車両のいずれとして設定されているかによって判断する。
【００６６】
タスク情報に車両Ｐに関する情報が含まれない場合（Ｓ６０１−ＮＯ）には、他の車両が車両Ｐに変わってタスクＡの実行担当車両になったことが分かる。この場合、車両Ｐは即座にタスクＡの実行を終了してもよいが、本実施形態では、ステップＳ６０３において、車両ＰのタスクＡの終了時刻Ｔｘと、タスク情報に含まれる補助担当車両の終了時刻Ｔｓとを比較する。タスク情報に含まれる補助担当車両の終了時刻Ｔｓの方が早い場合（Ｓ６０３−ＹＥＳ）、タスク情報に指定されている車両がタスクＡを実行するのが適切といえるので、車両ＰはタスクＡの実行を終了する（Ｓ６０４）。一方、車両Ｐのタスク終了時刻Ｔｘの方が早い場合（Ｓ６０３−ＮＯ）は、車両ＰがタスクＡの実行を継続することが適切といえる。そこで、この場合はタスクＡの実行を終了せずに、タスク情報を更新して周囲の車両に向けて送信する（Ｓ６０５）。なお、車両Ｐのタスク終了時刻が、タスク情報における主担当車両のタスク終了時刻Ｔｍよりも早ければ車両ＰはタスクＡの主担当車両となり、主担当車両のタスク終了時刻Ｔｍよりも遅ければ車両ＰはタスクＡの補助担当車両となる。
【００６７】
＜動作例＞
図７を参照して、本実施形態におけるタスク実行処理の動作例を説明する。図７Ａは、６台の車両Ｎ１〜Ｎ６から構成される車群が、ユーザ端末ＵＴからタスクＡの実行依頼を受け付けたときの状況を説明する図である。ここでは、車両Ｎ１がユーザ端末ＵＴからタスクＡの実行依頼を受け付けている。また、この時点で、車両Ｎ２はタスクＢを主担当車両として実行しており、車両Ｎ４はタスクＣを補助担当車両として実行しているものとする。その他の車両はタスクを実行していない。
【００６８】
図７Ｂに示すように、まず車両Ｎ１はタスクＡを主担当車両として実行し（Ｓ４０２−ＮＯ，Ｓ４０３）、主担当車両が車両Ｎ１であることを示すタスク情報７０１を送信する。このタスク情報７０１を受信した車両Ｎ２は、他のタスクを主担当車両として実行中であるため、タスクＡを実行せず、タスク情報７０１をそのまま送信する（Ｓ５０３−ＹＥＳ，Ｓ５１２）。車両Ｎ３でのタスクＡの終了時刻ＴＮ３は、現在の主担当車両（車両Ｎ１）の終了時刻Ｔｍ（＝ＴＮ１）よりも遅い。しかし、タスクＡの補助担当車両が存在しないので、車両Ｎ３はタスクＡを補助担当車両として実行する（Ｓ５０５−ＮＯ，Ｓ５０９−ＹＥＳ,Ｓ５１０）。
【００６９】
図７Ｃに示すように、車両Ｎ３は、主担当車両が車両Ｎ１であり補助担当車両が車両Ｎ３である旨のタスクＡのタスク情報７０２を周囲の車両に送信する。なお、図７Ｃではタスク情報７０２が車群の後方のみに伝播するように描いているが、車群の前方にも伝播する。
【００７０】
タスク情報７０２を受信した車両Ｎ４は、タスクＣを補助担当車両として実行中である
。車両Ｎ４のタスクＡの終了時刻ＴＮ４は、タスクＡの主担当車両（車両Ｎ１）の終了時刻Ｔｍよりも遅い。したがって、車両Ｎ４はタスクＣの実行を継続する（Ｓ５０５−ＮＯ，Ｓ５０８−ＹＥＳ）。なお、仮に車両Ｎ４のタスクＡの終了時刻ＴＮ４が補助担当車両Ｎ３の終了時刻Ｔｓ（＝ＴＮ３）よりも早くても、車両Ｎ４はタスクＣの補助担当車両としての実行を継続する。
【００７１】
車両Ｎ５はタスクを実行中ではないが、車両Ｎ５のタスクＡの終了時刻ＴＮ５は、タスクＡの主担当車両（Ｎ１）の終了時刻Ｔｍ（＝ＴＮ１）および補助担当車両（Ｎ３）の終了時刻Ｔｓ（＝ＴＮ３）のいずれよりも遅いため、タスクＡを実行しない（Ｓ５０５−ＮＯ，Ｓ５０９−ＮＯ）。
【００７２】
車両Ｎ６はタスクを実行中でなく、車両Ｎ６のタスクＡの終了時刻ＴＮ６が、タスクＡの主担当車両（Ｎ１）の終了時刻Ｔｍ（＝ＴＮ１）よりも早い。そこで、車両Ｎ６は、タスクＡを主担当車両として実行する（Ｓ５０５−ＹＥＳ，Ｓ５０６）。
【００７３】
図７Ｄに示すように、車両Ｎ６は、タスクＡのタスク情報を更新して、主担当車両が車両Ｎ６であり、補助担当車両が車両Ｎ１である旨のタスク情報７０３を周囲の車両に送信する。
【００７４】
タスク情報７０３を車両Ｎ３が受信すると、自身で実行中のタスクに関するタスク情報に、自車両の情報が含まれていないことから、車両Ｎ３は他の車両が補助担当車両になったことを検知できる。したがって、車両Ｎ３はタスクＡの実行を中断する（Ｓ６０１−ＮＯ，Ｓ６０４）。なお、補助担当車両Ｎ１のタスク終了時刻Ｔｓ（＝ＴＮ１）は、車両Ｎ３のタスク終了時刻ＴＮ３よりも早いものとする。
【００７５】
タスク情報７０３を車両Ｎ１が受信すると、車両Ｎ６がタスクＡの主担当車両になり、車両Ｎ１がタスクＡの補助担当車両になったことを検知できる。車両Ｎ１はタスクＡの実行を継続するが、補助担当車両として実行していると認識する（Ｓ６０１−ＹＥＳ、Ｓ６０２）。
【００７６】
＜本実施形態の有利な効果＞
本実施形態によれば、タスク情報に基づいて、車群内の各車両が自律的にタスクを実行すべきかどうかを判断できる。また、最新のリソース状況を考慮してタスクの終了時刻の比較が可能であり、より早く実行を完了できる車両がタスクを実行できる。また、車群内で複数の車両が１つのタスクを実行しているため、タスク実行車両が車群から離脱する場合でも、タスクの実行結果が失われる事態を避けることができる。
【００７７】
＜その他＞
上記の説明は、本発明を例示的に説明したものであり、本発明を限定するものではない。本発明は、その技術的思想の範囲内で、種々の変形が可能である。
【００７８】
上記の説明では、新しいタスク情報が生成・送信されるタイミングは、車両が新たにタスクの実行を開始する場合のみである。しかしながら、タスク情報を受信するタイミングが、タスクを実行するか否かの判定タイミングであることを考慮すると、タスク情報はより頻繁に車群内で送信されることが好ましい。したがって、タスクの主担当車両（および補助担当車両）が、そのタスクのタスク情報を定期的に送信することが好ましい。
【００７９】
車群からタスク実行車両が離脱する事態が想定される。このような事態に対処するために、タスク実行車両の離脱を検知した車両は、離脱した車両が実行していたタスクに関するタスク情報を更新して周囲に送信することが好ましい。具体的には、主担当車両が離脱
した場合には、それまでの補助担当車両を主担当車両とし、補助担当車両を空（もしくは自車両）としたタスク情報を生成して送信する。また、補助担当車両が離脱した場合には、主担当車両に関する情報は変更せずに、補助担当車両を空（もしくは自車両）としてタスク情報を生成して送信する。あるいは、タスク実行車両の離脱を検知した車両は、自車両が主担当車両または補助担当車両として当該タスクを実行するかを判定してから、その結果に基づくタスク情報を送信するようにしてもよい。
【００８０】
タスク実行車両が離脱する際に、離脱するタスク実行車両がタスク情報を送信してもよい。すなわち、タスク実行車両が車群から離脱する場合に、上述のようなタスク情報（この場合、補助担当車両は空とする）を送信してもよい。車群からの離脱予測は、車群内の他の車両の予測経路と自車両の予測経路に基づいて判定できる。タスク実行車両が車群から離脱する際に、タスク実行の途中結果もタスク情報に含めて送信すれば、当該タスク情報を受信した車両はタスクを途中から実行できるため好ましい。
【００８１】
上記の実施形態の説明では、タスク情報にタスクのソースコード等を含めていたが、タスク情報生成時におけるタスクの途中結果をもタスク情報に含めてもよい。このようにすれば、タスク情報の容量が大きくなるが、他の車両がタスクの途中から即座に実行開始できるという利点がある。また逆に、タスク情報にタスクのソースコード等を含めなくてもよい。この場合、タスクを実行する車両はタスクのソースコード等を他の車両から取得する必要が生じるが、タスク情報の容量を小さくすることができる。
【００８２】
上記の実施形態では、タスクを実行する情報処理装置が車載端末である場合を例に説明しているが、タスクを実行する情報処理装置は任意の情報処理装置であって構わない。上記の実施形態の手法は、車載端末に限られず任意の情報処理装置から構成されるシステムに適用可能であり、情報処理装置が移動してもよいし移動しなくてもよい。
【００８３】
上記の実施形態では、１つのタスクを主担当装置と補助担当装置の２台の装置が実行するものとして説明したが、１つのタスクを３台以上の装置が実行するようにしてもよい。タスクを実行する情報処理装置の台数をＮ台（Ｎは２以上の整数）とし、タスクを実行する装置を第１担当装置から第Ｎ担当装置とする。第１担当装置としてタスクを実行している装置は、タスク情報を受信しても他のタスクを実行しない。一方、第ｋ担当装置（ｋは２以上Ｎ以下の整数）としてタスクを実行している装置は、受信したタスク情報の第ｊ担当装置（ｊは１以上ｋ−１以下の整数）よりも早くにタスクの実行を完了できる場合に、第ｊ担当装置として当該タスクを実行するようにすればよい。
【符号の説明】
【００８４】
１００：車両（車載車載端末）
１１：タスク実行依頼受信部  １２：タスク情報受信部  １３：判定部
１４：タスク実行部          １５：実行結果送信部    １６：更新部
１７：タスク情報記憶部      １８：タスク情報送信部
【図１】
0006504062.tif 000002
【図２】
0006504062.tif 000003
【図３】
0006504062.tif 000004
【図４】
0006504062.tif 000005
【図５】
0006504062.tif 000006
【図６】
0006504062.tif 000007
【図７】
0006504062.tif 000008