(57)【要約】【課題】プログラムの実行を不可能にするイベントが発生した場合に他の場所でプログラムを実行できるようにする技術を提供する。【解決手段】プログラム実行装置１は、例えば、プログラムＡ、Ｂ、…と、これらのプログラムを実行するプログラム実行部１１と、プログラムの実行を不可能にするイベントを検知するイベント検知部１２と、イベントが検知されたなら、当該プログラムの実行条件を含む実行可否問い合わせを他のプログラム実行装置に送信し、他のプログラム実行装置からの実行可否を示す実行可否応答に基づいて、当該プログラムを実行できる他のプログラム実行装置を特定する実行先判定部１３と、当該特定された他のプログラム実行装置に対し当該プログラムの実行を依頼する実行依頼部１４と、該プログラム実行装置におけるプログラムの実行環境を示すプログラム実行環境テーブル１５とを備える。【選択図】図２
2015011601.tif 000002
【特許請求の範囲】
【請求項１】
互いに通信可能な２以上のプログラム実行装置を含むプログラム実行システムであって、
前記プログラム実行装置は、
該プログラム実行装置にあるプログラムを実行するプログラム実行部と、
当該プログラムの実行を不可能にするイベントを検知するイベント検知部と、
当該イベントが検知されたなら、当該プログラムの実行条件を含む実行可否問い合わせを他のプログラム実行装置に送信し、当該他のプログラム実行装置からの実行可否を示す実行可否応答に基づいて、当該プログラムを実行できる他のプログラム実行装置を特定する実行先判定部と、
当該特定された他のプログラム実行装置に対し当該プログラムの実行を依頼する実行依頼部と
を備えることを特徴とするプログラム実行システム。
【請求項２】
前記プログラム実行部は、ＷＡＮ経由でサーバと通信するプログラムを実行し、
前記イベント検知部は、ＷＡＮ故障を検知し、
前記実行判定部は、ＷＡＮ経由でサーバと通信できるとの実行条件、ＷＡＮを経由しないでプログラム実行装置と通信できるとの実行条件を含む実行可否問い合わせを送信する
ことを特徴とする請求項１記載のプログラム実行システム。
【請求項３】
前記イベント検知部は、プログラム実行装置でのメモリ不足を検知する
ことを特徴とする請求項１または２記載のプログラム実行システム。
【請求項４】
前記実行判定部は、実行不可能となったプログラムを示す実行条件を含む実行可否問い合わせを送信し、
前記実行依頼部は、当該プログラムが他のプログラム実行装置で実行されたことを示す実行実績を含む実行可否応答があったなら、プログラムの実行の依頼において、当該実行可否応答を送信した他のプログラム実行装置を優先する
ことを特徴とする請求項１ないし３のいずれかに記載のプログラム実行システム。
【請求項５】
前記実行依頼部は、実行可能を示す複数の実行可否応答において、当該実行可否応答を送信した他のプログラム実行装置におけるプログラムの実行環境が開示されているなら、当該実行環境に基づいて、当該他のプログラム実行装置の優先順位を設定し、プログラムの実行の依頼において、当該優先順位の高い他のプログラム実行装置を優先する
ことを特徴とする請求項１ないし４のいずれかに記載のプログラム実行システム。
【請求項６】
互いに通信可能な２以上のプログラム実行装置を含むプログラム実行システムを構成するプログラム実行装置であって、
該プログラム実行装置にあるプログラムを実行するプログラム実行部と、
当該プログラムの実行を不可能にする当該プログラム実行装置でのメモリ不足を検知するイベント検知部と、
当該メモリ不足が検知されたなら、当該プログラムの実行条件を含む実行可否問い合わせを他のプログラム実行装置に送信し、当該他のプログラム実行装置からの実行可否を示す実行可否応答に基づいて、当該プログラムを実行できる他のプログラム実行装置を特定する実行先判定部と、
当該特定された他のプログラム実行装置に対し当該プログラムの実行を依頼する実行依頼部と
を備えることを特徴とするプログラム実行装置。
【請求項７】
互いに通信可能な２以上のプログラム実行装置を含むプログラム実行システムの動作方法であって、
前記プログラム実行装置は、
該プログラム実行装置にあるプログラムを実行するプログラム実行部を備え、
前記動作方法は、
前記プログラム実行装置のイベント検知部が、当該プログラムの実行を不可能にするイベントを検知し、
前記プログラム実行装置の実行先判定部が、当該イベントが検知されたなら、当該プログラムの実行条件を含む実行可否問い合わせを他のプログラム実行装置に送信し、当該他のプログラム実行装置からの実行可否を示す実行可否応答に基づいて、当該プログラムを実行できる他のプログラム実行装置を特定し、
前記プログラム実行装置の実行依頼部が、当該特定された他のプログラム実行装置に対し当該プログラムの実行を依頼する
ことを特徴とするプログラム実行システムの動作方法。
【請求項８】
前記プログラム実行部は、ＷＡＮ経由でサーバと通信するプログラムを実行し、
前記イベント検知部は、ＷＡＮ故障を検知し、
前記実行判定部は、ＷＡＮ経由でサーバと通信できるとの実行条件、ＷＡＮを経由しないでプログラム実行装置と通信できるとの実行条件を含む実行可否問い合わせを送信する
ことを特徴とする請求項７記載のプログラム実行システムの動作方法。
【請求項９】
前記イベント検知部は、プログラム実行装置でのメモリ不足を検知する
ことを特徴とする請求項７または８記載のプログラム実行システムの動作方法。
【請求項１０】
前記実行判定部は、実行不可能となったプログラムを示す実行条件を含む実行可否問い合わせを送信し、
前記実行依頼部は、当該プログラムが他のプログラム実行装置で実行されたことを示す実行実績を含む実行可否応答があったなら、プログラムの実行の依頼において、当該実行可否応答を送信した他のプログラム実行装置を優先する
ことを特徴とする請求項７ないし９のいずれかに記載のプログラム実行システムの動作方法。
【請求項１１】
前記実行依頼部は、実行可能を示す複数の実行可否応答において、当該実行可否応答を送信した他のプログラム実行装置におけるプログラムの実行環境が開示されているなら、当該実行環境に基づいて、当該他のプログラム実行装置の優先順位を設定し、プログラムの実行の依頼において、当該優先順位の高い他のプログラム実行装置を優先する
ことを特徴とする請求項７ないし１０のいずれかに記載のプログラム実行システムの動作方法。
【請求項１２】
請求項６記載のプログラム実行装置としてコンピュータを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの実行を不可能にするイベントが発生した場合に他の場所でプログラムを実行できるようにする技術に関するものである。
【背景技術】
【０００２】
ＯＳＧｉバンドルによるプログラム実行環境は、例えば、Ｊａｖａ（登録商標）言語を実装することで実現される。また、Ｊａｖａで実装されたモジュールをプラグインモジュール化する技術としてＯＳＧｉプラットフォームがある。ＯＳＧｉプラットフォームとは、ＪａｖａプログラムをＰｌｕｇｉｎモジュールとして動的にアプリケーションへ追加できるようにするサービスプラットフォームである。ＯＳＧｉプラットフォーム本体は、常時起動しているスタンドアロンＪａｖａアプリケーションとして実装されている。ＯＳＧｉの配下でプラグインモジュール化されているＪａｖａモジュールは、バンドルと呼ばれる。Ｊａｖａによって実装されたデバイスドライバも、ＯＳＧｉ配下のバンドルとしてプラグインモジュール化することができる。
【０００３】
（従来のサービス）
このようなシステムを利用するサービスの一例としてＨＥＭＳ（Home Energy Management System）がある。これは、宅内のゲートウェイ機器が電気やガスの使用量を収集し、それをサーバへ送信する。サーバはデータ履歴を保管し、ウェブ等で閲覧するというものである。このようなサービスにおいて、あるイベントが発生するとプログラムが実行できなくなり、サービスが継続できなくなる場合がある。このように、プログラムの実行を不可能にするイベントおよびサービスへの影響としては、下記のようなものが想定される。
【０００４】
（１） ＷＡＮ故障により、収集したデータを送信することができない
（２） ＣＰＵ／メモリ等が他のサービスで利用され、不足することによりデータ処理ができない
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２５６２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＯＳＧｉのバンドルは、１つのプログラム実行場所で実行することを前提としたソフトウェア構成となっており、二重化を前提とした構成については実現されていない。
【０００７】
また、プログラム二重化の手法は、特許文献１のように様々提案されているが、サーバシステム全体として提供するものである。したがって、このような手法は実施しにくい。
【０００８】
すなわち、ＯＳＧｉのバンドルについて、また、その他のプログラムについても、プログラムの実行を不可能にするイベントが発生した場合に他の場所でプログラムを実行できるようにする技術が求められる。
【０００９】
本発明は、上記のような課題を解決するためになされたものであり、プログラムの実行を不可能にするイベントが発生した場合に他の場所でプログラムを実行できるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の課題を解決するために、第１の本発明は、互いに通信可能な２以上のプログラム実行装置を含むプログラム実行システムであって、前記プログラム実行装置は、該プログラム実行装置にあるプログラムを実行するプログラム実行部と、当該プログラムの実行を不可能にするイベントを検知するイベント検知部と、当該イベントが検知されたなら、当該プログラムの実行条件を含む実行可否問い合わせを他のプログラム実行装置に送信し、当該他のプログラム実行装置からの実行可否を示す実行可否応答に基づいて、当該プログラムを実行できる他のプログラム実行装置を特定する実行先判定部と、当該特定された他のプログラム実行装置に対し当該プログラムの実行を依頼する実行依頼部とを備えることを特徴とする。
【００１１】
第１の本発明において、例えば、前記プログラム実行部は、ＷＡＮ経由でサーバと通信するプログラムを実行し、前記イベント検知部は、ＷＡＮ故障を検知し、前記実行判定部は、ＷＡＮ経由でサーバと通信できるとの実行条件、ＷＡＮを経由しないでプログラム実行装置と通信できるとの実行条件を含む実行可否問い合わせを送信する。
【００１２】
第１の本発明において、例えば、前記イベント検知部は、プログラム実行装置でのメモリ不足を検知する。
【００１３】
第１の本発明において、例えば、前記実行判定部は、実行不可能となったプログラムを示す実行条件を含む実行可否問い合わせを送信し、前記実行依頼部は、当該プログラムが他のプログラム実行装置で実行されたことを示す実行実績を含む実行可否応答があったなら、プログラムの実行の依頼において、当該実行可否応答を送信した他のプログラム実行装置を優先する。
【００１４】
第１の本発明において、例えば、前記実行依頼部は、実行可能を示す複数の実行可否応答において、当該実行可否応答を送信した他のプログラム実行装置におけるプログラムの実行環境が開示されているなら、当該実行環境に基づいて、当該他のプログラム実行装置の優先順位を設定し、プログラムの実行の依頼において、当該優先順位の高い他のプログラム実行装置を優先する。
【００１５】
第２の本発明は、互いに通信可能な２以上のプログラム実行装置を含むプログラム実行システムを構成するプログラム実行装置であって、該プログラム実行装置にあるプログラムを実行するプログラム実行部と、当該プログラムの実行を不可能にする当該プログラム実行装置でのメモリ不足を検知するイベント検知部と、当該メモリ不足が検知されたなら、当該プログラムの実行条件を含む実行可否問い合わせを他のプログラム実行装置に送信し、当該他のプログラム実行装置からの実行可否を示す実行可否応答に基づいて、当該プログラムを実行できる他のプログラム実行装置を特定する実行先判定部と、当該特定された他のプログラム実行装置に対し当該プログラムの実行を依頼する実行依頼部とを備えることを特徴とする。
【００１６】
第３の本発明は、互いに通信可能な２以上のプログラム実行装置を含むプログラム実行システムの動作方法であって、前記プログラム実行装置は、該プログラム実行装置にあるプログラムを実行するプログラム実行部を備え、前記動作方法は、前記プログラム実行装置のイベント検知部が、当該プログラムの実行を不可能にするイベントを検知し、前記プログラム実行装置の実行先判定部が、当該イベントが検知されたなら、当該プログラムの実行条件を含む実行可否問い合わせを他のプログラム実行装置に送信し、当該他のプログラム実行装置からの実行可否を示す実行可否応答に基づいて、当該プログラムを実行できる他のプログラム実行装置を特定し、前記プログラム実行装置の実行依頼部が、当該特定された他のプログラム実行装置に対し当該プログラムの実行を依頼することを特徴とする。
【００１７】
第３の本発明において、例えば、前記プログラム実行部は、ＷＡＮ経由でサーバと通信するプログラムを実行し、前記イベント検知部は、ＷＡＮ故障を検知し、前記実行判定部は、ＷＡＮ経由でサーバと通信できるとの実行条件、ＷＡＮを経由しないでプログラム実行装置と通信できるとの実行条件を含む実行可否問い合わせを送信することを特徴とする。
【００１８】
第３の本発明において、例えば、前記イベント検知部は、プログラム実行装置でのメモリ不足を検知する。
【００１９】
第３の本発明において、例えば、前記実行判定部は、実行不可能となったプログラムを示す実行条件を含む実行可否問い合わせを送信し、前記実行依頼部は、当該プログラムが他のプログラム実行装置で実行されたことを示す実行実績を含む実行可否応答があったなら、プログラムの実行の依頼において、当該実行可否応答を送信した他のプログラム実行装置を優先する。
【００２０】
第３の本発明において、例えば、前記実行依頼部は、実行可能を示す複数の実行可否応答において、当該実行可否応答を送信した他のプログラム実行装置におけるプログラムの実行環境が開示されているなら、当該実行環境に基づいて、当該他のプログラム実行装置の優先順位を設定し、プログラムの実行の依頼において、当該優先順位の高い他のプログラム実行装置を優先する。
【発明の効果】
【００２１】
本発明によれば、プログラムの実行を不可能にするイベントが発生した場合に他の場所でプログラムを実行できるようにする技術を提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本実施の形態に係るプログラム実行システムの利用形態の例を示す図である。
【図２】各プログラム実行装置の概略構成を示すブロック図である。
【図３】プログラム実行環境テーブル１５の例を示す図である。
【図４】プログラム実行装置における処理の流れを示すフローチャートである。
【図５】実施例１に特有な事項を記載した説明図である。
【図６】実施例２に特有な事項を記載した説明図である。
【図７】実施例３に特有な事項を記載した説明図である。
【図８】実施例４に特有な事項を記載した説明図である。
【発明を実施するための形態】
【００２３】
以下、本発明の実施の形態について図面を参照して説明する。
【００２４】
図１は、本実施の形態に係るプログラム実行システムの利用形態の例を示す図である。
【００２５】
プログラム実行システムは、互いに通信可能な２以上のプログラム実行装置１を含むものである。プログラム実行装置１は、例えばゲートウェイ装置であり、ここでは、各プログラム実行装置を符号１Ａ、１Ｂ、１Ｃ等で区別する。各プログラム実行装置１Ａ、１Ｂ、１Ｃの設置場所は互いに異なっており、例えば、近隣の各家庭に設置される。
【００２６】
例えば、プログラム実行装置１Ａは、その家の使用電力などを計測するメータ２からＷＩＦＩやＬＡＮや、BluetoothなどのＰＡＮ（パーソナルエリアネットワーク）や特定小電力無線などで情報を取得するとともに情報をＷＡＮ（広域網）３を経由してサーバ４に送信するプログラムを実行する。例えば、ＷＡＮ３が故障し、プログラム実行装置１Ａからサーバ４への情報送信ができなくなった場合、プログラム実行装置１Ａは、例えば、ＷＩＦＩなどや特定小電力無線などで隣家のプログラム実行装置１Ｂに接続し、同じプログラムの実行を依頼する。プログラム実行装置１Ｂは、依頼されたプログラムを実行する。つまり、プログラム実行装置１Ｂは、隣家のメータ２からＷＩＦＩなどや特定小電力無線などで情報を取得するとともに情報をＷＡＮ３を経由してサーバ４に送信する。
【００２７】
図２は、各プログラム実行装置の概略構成を示すブロック図である。
【００２８】
プログラム実行装置１は、例えば、プログラムＡ、Ｂ、…と、これらのプログラムを実行するプログラム実行部１１と、プログラムの実行を不可能にするイベントを検知するイベント検知部１２と、イベントが検知されたなら、当該プログラムの実行条件を含む実行可否問い合わせを他のプログラム実行装置に送信し、他のプログラム実行装置からの実行可否を示す実行可否応答に基づいて、当該プログラムを実行できる他のプログラム実行装置を特定する実行先判定部１３と、当該特定された他のプログラム実行装置に対し当該プログラムの実行を依頼する実行依頼部１４と、該プログラム実行装置におけるプログラムの実行環境を示すプログラム実行環境テーブル１５とを備える。
【００２９】
図のプログラム実行装置は、プログラムＡ、Ｂ、…を備えるが、プログラムの数と種類は、プログラム実行装置ごとに異なっていてもよい。
【００３０】
図３は、プログラム実行環境テーブル１５の例を示す図である。
【００３１】
プログラム実行環境テーブル１５は、該プログラム実行環境テーブル１５を備えるプログラム実行装置においてプログラムを実行するための条件毎のレコードを有し、各レコードは、条件の項目とパラメータを有する。
【００３２】
レコード１は、例えば、サーバ４とＷＡＮ３を介して通信することを示す項目と、それが可能か否かを示すパラメータを含む。 
レコード２は、他のプログラム実行装置と接続することを示す項目と、それがＷＡＮ３を介して可能かＬＡＮ（ＷＩＦＩなど）を介して可能かを示すパラメータを含む。
【００３３】
レコード３は、空きメモリという項目と、空きメモリの大きさというパラメータを含む。 
レコード４は、ＣＰＵの空きの割合という項目と、その割合の大きさというパラメータを含む。 
レコード５は、実行実績のあるプログラムという項目と、そのプログラムの名前などであるパラメータを含む。 
レコード６は、初期設定済みのプログラムという項目と、そのプログラムの名前などであるパラメータを含む。 
つまり、レコード５は、プログラムの実行実績である。プログラムの実行実績があれば、プログラムがあり、他のプログラム実行装置からプログラムを受信する必要がないことになる。 
また、レコード６により、初期設定済みであることがわかれば、初期設定の情報を受信する必要がないことになる。 
その判断のためにレコード５、６がある。
【００３４】
図４は、プログラム実行装置における処理の流れを示すフローチャートである。
【００３５】
ここでは、プログラム実行装置１Ａを例に実施例１〜４の動作を説明するが、他のプログラム実行装置の動作も同様である。
【００３６】
（実施例１）
図５は、実施例１に特有な事項を記載した説明図である。
【００３７】
プログラム実行装置１Ａが起動され、プログラム実行部１１は、例えば、図１で説明した、メータ２の情報をＷＡＮ３を経由してサーバ４に送信するプログラムを実行する。実行されたプログラムにより、プログラム実行装置１Ａは、メータ２の情報をＷＡＮ３を経由してサーバ４に送信する。
【００３８】
このようにプログラムが実行されると、イベント検知部１２は、予め設定されたイベント、つまり、プログラムの実行を不可能にするイベントが発生したか否かを判定し（Ｓ１）、発生していないなら（Ｓ１：ＮＯ）、例えば、時間をおいて、再び判定を行う。
【００３９】
ここでイベント検知部１２は、例えば、プログラム実行装置１Ａからサーバ４への情報送信を不可能にするＷＡＮ３の故障が発生したか否かを判定する（Ｓ１）。
【００４０】
実行先判定部１３は、イベントが検知されたなら（Ｓ１：ＹＥＳ）、当該プログラムの実行条件を含む実行可否問い合わせを他のプログラム実行装置に送信し、他のプログラム実行装置から実行可否を示す実行可否応答を受信し、実行可否応答に基づいて、当該プログラムを実行できる他のプログラム実行装置を特定する（Ｓ３）。
【００４１】
ここで実行先判定部１３は、例えば、予め他のプログラム実行装置のアドレスを備えており、各アドレス宛に、例えば、（１）ＷＡＮ３経由でサーバと通信できるとの実行条件、（２）ＷＡＮ３を経由しないでＷＩＦＩなどでプログラム実行装置と通信できるとの実行条件を含む実行可否問い合わせを送信する。または、実行先判定部１３は、実行可否問い合わせをブロードキャストで送信する。
【００４２】
これに対し、他のプログラム実行装置は、プログラム実行環境テーブル１５を参照し、プログラムを実行できると判定したなら、その旨の実行可否応答を返信する。
【００４３】
例えば、上記（１）（２）の実行条件の場合、プログラム実行環境テーブル１５のレコード１、２が参照される。
【００４４】
一方、他のプログラム実行装置は、実行できないと判定したなら、その旨の実行可否応答を返信する。
【００４５】
実行先判定部１３は、実行可否応答を受信し、その中でプログラムを実行できる旨の実行可否応答を選択し、これを送信した他のプログラム実行装置でプログラムが実行できることとする。
【００４６】
例えば、プログラムを実行できる旨の実行可否応答を受信できなかったなら、つまり、プログラムを実行できる他のプログラム実行装置がなければ（Ｓ３：特定不可）、例えば、所定のエラー処理が実行される（Ｓ５）。
【００４７】
一方、プログラムを実行できる他のプログラム実行装置があれば（Ｓ３：特定可）、実行依頼部１４が、当該他のプログラム実行装置に対し当該プログラムの実行を依頼する（Ｓ７）。
【００４８】
ここで実行依頼部１４は、例えば、プログラムを実行できる他のプログラム実行装置が複数ある場合は、その中の１つに実行を依頼する。この際、実行依頼部１４は、例えば、該当のプログラムやプログラム実行時に必要な解析データなどを送信する。また、実行依頼部１４は、途中までの実行結果を送信し、途中からの実行を依頼する。
【００４９】
依頼先のプログラム実行装置では、プログラム実行部１１が、プログラムを実行し、例えば、メータ２の情報をＷＡＮ３を経由してサーバ４に送信する。
【００５０】
なお、プログラムの実行を不可能にするイベントが消滅したなら、つまり、例えば、サーバ４への情報送信を不可能にするＷＡＮ３の故障が解消したなら、プログラム実行装置１Ａは、依頼先の他のプログラム実行装置にプログラム実行終了命令を送信する（Ｓ９）。
【００５１】
これにより、依頼先の他のプログラム実行装置は、依頼したプログラムの実行を終了し、例えば、実行結果をプログラム実行装置１Ａに送信する。
【００５２】
一方、プログラム実行装置１Ａでは、プログラム実行部１１が再びプログラムを実行し（Ｓ１１）、Ｓ１に戻る。例えば、依頼先の他のプログラム実行装置から受信した実行結果が使用される。
【００５３】
以上のように、プログラム実行装置は、プログラム実行装置にあるプログラムを実行するプログラム実行部と、プログラムの実行を不可能にするイベントを検知するイベント検知部と、イベントが検知されたなら、当該プログラムの実行条件を含む実行可否問い合わせを他のプログラム実行装置に送信し、当該他のプログラム実行装置からの実行可否を示す実行可否応答に基づいて、当該プログラムを実行できる他のプログラム実行装置を特定する実行先判定部と、特定された他のプログラム実行装置に対し当該プログラムの実行を依頼する実行依頼部とを備えるので、プログラムの実行を不可能にするイベントが発生した場合に他の場所（他のプログラム実行装置の場所）でプログラムを実行することができる。
【００５４】
また、この構成を設けることで、プログラムへの変更は不要となるので、既存のプログラムを利用することができる。
【００５５】
また、実施例１では、プログラム実行部は、ＷＡＮ経由でサーバと通信するプログラムを実行し、イベント検知部は、ＷＡＮ故障を検知し、実行判定部は、ＷＡＮ経由でサーバと通信できるとの実行条件、ＷＡＮを経由しないでプログラム実行装置と通信できるとの実行条件を含む実行可否問い合わせを送信するので、ＷＡＮ故障の際に、他の場所でプログラムを実行することができる。
【００５６】
（実施例２）
実施例２の説明においては、実施例１との差異を中心に説明する。
【００５７】
図６は、実施例２に特有な事項を記載した説明図である。
【００５８】
プログラムが実行されるまでの動作は、実施例１と同じである。なお、プログラムは、サーバ４に情報を送信するプログラムでなくてもよい。
【００５９】
図４のステップＳ１でイベント検知部１２は、空きメモリの大きさが所定の大きさ未満になったか否か、つまり、メモリ不足が発生したか否かを判定する（Ｓ１）。メモリ不足を検出するのは、これがプログラムの実行を不可能にする可能性があるからである。
【００６０】
図４のステップＳ３で実行先判定部１３は、他のプログラム実行装置宛に、例えば、（１）ＷＡＮ３経由でサーバと通信できるとの実行条件、（２）ＷＡＮ３を経由しないでＷＩＦＩなどでプログラム実行装置と通信できるとの実行条件、（３）プログラム実行に必要な空きメモリは最低で３００ＭＢであるとの実行条件を含む実行可否問い合わせを送信する。（３）には空きメモリの最低量を示したが、これは、例えば、プログラムごとに定め、予め記憶しておけばよい。
【００６１】
これに対し、他のプログラム実行装置は、プログラム実行環境テーブル１５を参照し、プログラムを実行できると判定したなら、その旨の実行可否応答を返信する。
【００６２】
例えば、上記（１）（２）（３）の実行条件の場合、プログラム実行環境テーブル１５のレコード１、２、３が参照される。なお、（１）（２）の実行条件は別の条件でもよく、なくてもよい。
【００６３】
以降の動作は、実施例１と同じである。
【００６４】
以上のように、実施例２では、イベント検知部は、プログラム実行装置でのメモリ不足を検知するので、メモリ不足でプログラムが実行できなくなる前に他の場所でプログラムを実行することができる。
【００６５】
（実施例３）
実施例３の説明においては、実施例１との差異を中心に説明する。
【００６６】
図７は、実施例３に特有な事項を記載した説明図である。
【００６７】
イベント検出までの動作は、実施例１と同じである。なお、プログラムは別のものでもよい。
【００６８】
図４のステップＳ３で実行先判定部１３は、他のプログラム実行装置に対し、例えば、（１）ＷＡＮ３経由でサーバと通信できるとの実行条件、（２）ＷＡＮ３を経由しないでＷＩＦＩなどでプログラム実行装置と通信できるとの実行条件、（４）実行不可能となったプログラムを実行した実績があるとの実行条件、（５）当該プログラムが初期設定済みであるとの実行条件を含む実行可否問い合わせを送信する（図７（ａ））。（４）の条件では、プログラム名などが指定される。
【００６９】
これに対し、他のプログラム実行装置は、プログラム実行環境テーブル１５を参照し、プログラムを実行できると判定したなら、その旨の実行可否応答を返信し、さらに、プログラムの実行実績があるなら、その旨を実行可否応答に付加する。また、初期設定済みなら、その旨を実行可否応答に付加する。
【００７０】
例えば、上記（１）（２）（４）（５）の実行条件の場合、プログラム実行環境テーブル１５のレコード１、２、５、６が参照される。なお、（１）（２）の実行条件は別の条件でもよく、なくてもよい。
【００７１】
実行先判定部１３は、実施例１と同様に、実行可否応答を受信し、その中でプログラムを実行できる旨の実行可否応答を選択し、これを送信した他のプログラム実行装置でプログラムが実行できることとする（Ｓ３）。
【００７２】
実行依頼部１４は、プログラムを実行できる旨の実行可否応答の中に、実行実績を含む実行可否応答があったなら、ステップＳ５において、実行実績を含む実行可否応答を送信した他のプログラム実行装置を優先する。
【００７３】
例えば、図７（ｂ）に示すように、実行依頼部１４は、プログラムを実行できる旨の実行可否応答Ｍ、Ｎがあり、実行可否応答Ｍは実行実績を含み、実行可否応答Ｎは実行実績を含まないなら、実行可否応答Ｍを送信した他のプログラム実行装置にプログラムの実行を依頼する（Ｓ５）。この際、実行依頼部１４は、プログラムを送信しなくてよく、好適である。
【００７４】
また、図７（ｂ）に示すように、実行依頼部１４は、初期設定済みの実行可否応答を送信した他のプログラム実行装置を優先してもよい。
【００７５】
以降の動作は、実施例１と同じである。
【００７６】
以上のように、実施例３では、実行判定部は、実行不可能となったプログラムを示す実行条件を含む実行可否問い合わせを送信し、実行依頼部は、当該プログラムが他のプログラム実行装置で実行されたことを示す実行実績を含む実行可否応答があったなら、プログラムの実行の依頼において、当該実行可否応答を送信した他のプログラム実行装置を優先するので、当該実行可否応答を送信した他のプログラム実行装置へプログラムの実行を依頼する場合は、プログラムの送信を省略することができる。
【００７７】
（実施例４）
実施例４の説明においては、実施例１との差異を中心に説明する。
【００７８】
図８は、実施例４に特有な事項を記載した説明図である。
【００７９】
実行可否問い合わせの送信までの動作は、実施例１と同じである。なお、プログラムは別のものでもよい。また、実行可否問い合わせ内の実行条件は別のものでもよい。
【００８０】
実行可否問い合わせを受信した他のプログラム実行装置は、実行可否応答に対し、プログラム実行環境テーブル１５の情報を含ませ、返信する。
【００８１】
実行先判定部１３は、実施例１と同様に、実行可否応答を受信し、その中でプログラムを実行できる旨の実行可否応答を選択し、これを送信した他のプログラム実行装置でプログラムが実行できることとする（Ｓ３）。
【００８２】
実行依頼部１４は、プログラムを実行できる旨の実行可否応答であり、かつ、プログラム実行環境テーブル１５の情報を含む（つまり実行環境を開示する）実行可否応答が複数あったなら、ステップ５において、実行環境に基づいて、これらの実行可否応答を送信した他のプログラム実行装置の優先順位を設定し、優先順位の高い他のプログラム実行装置を優先する。
【００８３】
例えば、図８に示すように、実行依頼部１４は、プログラムを実行できる旨の実行可否応答Ｘ、Ｙがあり、実行可否応答Ｘは空きメモリが５００ＭＢであることを開示し、実行可否応答Ｙは空きメモリが１００ＭＢであることを開示しているなら、実行可否応答Ｘを送信した他のプログラム実行装置に優先順位「１」を、実行可否応答Ｙを送信した他のプログラム装置に優先順位「２」を設定し、実行可否応答Ｘを送信した他のプログラム実行装置にプログラム実行を依頼する（Ｓ５）。
【００８４】
したがって、例えば、空きメモリが１００ＭＢの他のプログラム実行装置に依頼してしまい、そのプログラム実行装置でそれ以上プログラムが実行できなくなるというような不都合を防止でき、好適である。なお、空きメモリでなく、ＣＰＵの空きの割合などに基づいて判断してもよく、また、実行環境全体で判断してもよい。 
以降の動作は、実施例１と同じである。
【００８５】
以上のように、実施例４では、実行依頼部は、実行可能を示す複数の実行可否応答において、当該実行可否応答を送信した他のプログラム実行装置におけるプログラムの実行環境が開示されているなら、当該実行環境に基づいて、当該他のプログラム実行装置の優先順位を設定し、プログラムの実行の依頼において、当該優先順位の高い他のプログラム実行装置を優先するので、最適な実行環境を有する他のプログラム実行装置でプログラムを実行することができる。
【００８６】
なお、各プログラム実行装置としてコンピュータを機能させるためのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に記録でき、また、インターネットなどの通信網を介して伝送させて、広く流通させることができる。
【符号の説明】
【００８７】
１…プログラム実行装置
２…メータ
３…ＷＡＮ
４…サーバ
１１…プログラム実行部
１２…イベント検知部
１３…実行先判定部
１４…実行依頼部
１５…プログラム実行環境テーブル
【図１】
2015011601.tif 000003
【図２】
2015011601.tif 000004
【図３】
2015011601.tif 000005
【図４】
2015011601.tif 000006
【図５】
2015011601.tif 000007
【図６】
2015011601.tif 000008
【図７】
2015011601.tif 000009
【図８】
2015011601.tif 000010