(57)【特許請求の範囲】
【請求項１】
クライアント端末とサーバとを備え、該クライアント端末および該サーバのそれぞれが、未処理データを用いたデータ処理を実行する、分散処理システムであって、
前記クライアント端末のオペレーティングシステムおよびウェブブラウザと前記クライアント端末および前記サーバの間の通信速度とを示すクライアント環境情報と、前記クライアント端末での前回のデータ処理の動作結果を示すクライアント成績情報とを含むクライアント情報を該クライアント端末から取得する取得部と、
前記クライアント環境情報を入力パラメータとし且つ前記クライアント成績情報を正解データとする機械学習を実行することで前記クライアント端末の処理能力を推定し、推定された処理能力に基づいて前記クライアント端末と前記サーバとの間の処理割合を決定する決定部であって、前記処理割合が、次の未処理データを用いた次のデータ処理を実行する割合である、該決定部と、
前記決定部により決定された処理割合に基づいて、前記クライアント端末および前記サーバに前記次の未処理データを割り当てる割当部と、
前記クライアント端末における前記次のデータ処理により得られた処理済データと、前記サーバにおける前記次のデータ処理により得られた処理済データとの結合を、前記クライアント端末から出力する出力部と
を備える分散処理システム。
【請求項２】
前記決定部が、サンプル数が閾値に達するまでは前記処理割合をランダムに決定し、前記サンプル数が前記閾値に達した場合には、前記クライアント端末での前記データ処理の成績が上位のサンプル群からなる上位集団を用いて前記処理割合を決定し、ここで、前記サンプルは、前記クライアント成績情報である、
請求項１に記載の分散処理システム。
【請求項３】
前記決定部が、前記処理割合の最適解を獲得したと判定した場合には該最適解を前記処理割合として決定する、
請求項２に記載の分散処理システム。
【請求項４】
前記データ処理がデータ補間である、
請求項１〜３のいずれか一項に記載の分散処理システム。
【請求項５】
前記未処理データが、空間内の環境値を示すデータであり、
前記出力部が、前記処理済データの結合を３次元画像により表示する、
請求項４に記載の分散処理システム。
【請求項６】
クライアント端末とサーバとを備え、該クライアント端末および該サーバのそれぞれが、未処理データを用いたデータ処理を実行する、分散処理システムにより実行される分散処理方法であって、
前記クライアント端末のオペレーティングシステムおよびウェブブラウザと前記クライアント端末および前記サーバの間の通信速度とを示すクライアント環境情報と、前記クライアント端末での前回のデータ処理の動作結果を示すクライアント成績情報とを含むクライアント情報を該クライアント端末から取得する取得ステップと、
前記クライアント環境情報を入力パラメータとし且つ前記クライアント成績情報を正解データとする機械学習を実行することで前記クライアント端末の処理能力を推定し、推定された処理能力に基づいて前記クライアント端末と前記サーバとの間の処理割合を決定する決定ステップであって、前記処理割合が、次の未処理データを用いた次のデータ処理を実行する割合である、該決定ステップと、
前記決定ステップにおいて決定された処理割合に基づいて、前記クライアント端末および前記サーバに前記次の未処理データを割り当てる割当ステップと、
前記クライアント端末における前記次のデータ処理により得られた処理済データと、前記サーバにおける前記次のデータ処理により得られた処理済データとの結合を、前記クライアント端末から出力する出力ステップと
を含む分散処理方法。
【請求項７】
クライアント端末とサーバとを備え、該クライアント端末および該サーバのそれぞれが、未処理データを用いたデータ処理を実行する、分散処理システムにより実行される分散処理方法を、少なくとも２台のコンピュータを備えるコンピュータシステムに実行させる分散処理プログラムであって、
前記分散処理方法が、
前記クライアント端末のオペレーティングシステムおよびウェブブラウザと前記クライアント端末および前記サーバの間の通信速度とを示すクライアント環境情報と、前記クライアント端末での前回のデータ処理の動作結果を示すクライアント成績情報とを含むクライアント情報を該クライアント端末から取得する取得ステップと、
前記クライアント環境情報を入力パラメータとし且つ前記クライアント成績情報を正解データとする機械学習を実行することで前記クライアント端末の処理能力を推定し、推定された処理能力に基づいて前記クライアント端末と前記サーバとの間の処理割合を決定する決定ステップであって、前記処理割合が、次の未処理データを用いた次のデータ処理を実行する割合である、該決定ステップと、
前記決定ステップにおいて決定された処理割合に基づいて、前記クライアント端末および前記サーバに前記次の未処理データを割り当てる割当ステップと、
前記クライアント端末における前記次のデータ処理により得られた処理済データと、前記サーバにおける前記次のデータ処理により得られた処理済データとの結合を、前記クライアント端末から出力する出力ステップと
を含む、
分散処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一側面は、データ処理を実行する分散処理システム、分散処理方法、および分散処理プログラムに関する。
【背景技術】
【０００２】
コンピュータシステム内の処理を複数のコンピュータの間で分散させる手法として、複数のサーバ間で処理を分散させる手法は従来からよく行われている。この分散処理に関して、下記特許文献１には、処理を行う外部プログラムの実行場所を、各コンピュータの現状の稼働状況に応じて動的に設定するネットワーク・コンピューティング・システムが記載されている。このシステムは、第１のコンピュータが有するプログラムを第２のコンピュータに転送して該第２のコンピュータで所定のデータを処理して結果を得る第１の手順で要する時間と、第１のコンピュータに第２のコンピュータから所定のデータを転送して該第１のコンピュータで処理して結果を第２のコンピュータに転送する第２の手順で要する時間とを比較し、短い時間と判別された方の手順でデータの処理を行なう。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−９９５２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載のシステムは最終的にいずれか一つのコンピュータにデータを処理させるものであるが、同様のデータ処理を複数のコンピュータに分散させた方がより効率的である場合がある。複数のサーバ間で処理を分散させる仕組みは一般的であるが、演算の最終結果を出力するクライアント端末とサーバとの間で同様の処理を分散させる仕組みは知られていない。性能の向上したクライアント端末とサーバとの間で同様のデータ処理を分散させることでシステム全体の負荷を効率的に分散させる仕組みが望まれている。
【課題を解決するための手段】
【０００５】
本発明の一側面に係る分散処理システムは、クライアント端末とサーバとを備える分散処理システムであって、クライアント端末の環境または動作結果を示すクライアント情報を該クライアント端末から取得する取得部と、取得部により取得されたクライアント情報を用いる機械学習を実行することでクライアント端末の処理能力を推定し、推定された処理能力に基づいてクライアント端末とサーバとの間の処理割合を決定する決定部であって、処理割合が、未処理データを用いたデータ処理を実行する割合である、該決定部と、決定部により決定された処理割合に基づいて、クライアント端末およびサーバに未処理データを割り当てる割当部と、クライアント端末におけるデータ処理により得られた処理済データと、サーバにおけるデータ処理により得られた処理済データとの結合を、クライアント端末から出力する出力部とを備える。
【０００６】
本発明の一側面に係る分散処理方法は、クライアント端末とサーバとを備える分散処理システムにより実行される分散処理方法であって、クライアント端末の環境または動作結果を示すクライアント情報を該クライアント端末から取得する取得ステップと、取得ステップにおいて取得されたクライアント情報を用いる機械学習を実行することでクライアント端末の処理能力を推定し、推定された処理能力に基づいてクライアント端末とサーバとの間の処理割合を決定する決定ステップであって、処理割合が、未処理データを用いたデータ処理を実行する割合である、該決定ステップと、決定ステップにおいて決定された処理割合に基づいて、クライアント端末およびサーバに未処理データを割り当てる割当ステップと、クライアント端末におけるデータ処理により得られた処理済データと、サーバにおけるデータ処理により得られた処理済データとの結合を、クライアント端末から出力する出力ステップとを含む。
【０００７】
本発明の一側面に係る分散処理プログラムは、クライアント端末とサーバとを備える分散処理システムにより実行される分散処理方法を、少なくとも２台のコンピュータを備えるコンピュータシステムに実行させる分散処理プログラムであって、分散処理方法が、クライアント端末の環境または動作結果を示すクライアント情報を該クライアント端末から取得する取得ステップと、取得ステップにおいて取得されたクライアント情報を用いる機械学習を実行することでクライアント端末の処理能力を推定し、推定された処理能力に基づいてクライアント端末とサーバとの間の処理割合を決定する決定ステップであって、処理割合が、未処理データを用いたデータ処理を実行する割合である、該決定ステップと、決定ステップにおいて決定された処理割合に基づいて、クライアント端末およびサーバに未処理データを割り当てる割当ステップと、クライアント端末におけるデータ処理により得られた処理済データと、サーバにおけるデータ処理により得られた処理済データとの結合を、クライアント端末から出力する出力ステップとを含む。
【０００８】
このような側面においては、クライアント端末の環境または動作結果に基づく機械学習によりクライアント端末の処理能力が推定され、その推定結果に基づいてクライアント端末とサーバとの処理割合が決定される。したがって、クライアント端末の環境または動作結果を考慮して、クライアント端末とサーバとの間で同様のデータ処理を分散させることができる。その結果、システム全体の負荷を効率的に分散させることができる。
【発明の効果】
【０００９】
本発明の一側面によれば、クライアント端末とサーバとの間で同様のデータ処理を分散させることでシステム全体の負荷を効率的に分散させることができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係る分散処理システムの機能構成を示すブロック図である。
【図２】実施形態に係る分散処理システムで用いられるコンピュータのハードウェア構成を示す図である。
【図３】図１に示す決定部での処理を示すフローチャートである。
【図４】補間済データの可視化の例（ａ），（ｂ）を示す図である。
【図５】実施形態に係る分散処理システムの動作を示すシーケンス図である。
【図６】実施形態に係る分散処理システムの動作を示すシーケンス図である。
【図７】実施形態に係る分散処理プログラムの構成を示す図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一又は同等の要素には同一の符号を付し、重複する説明を省略する。
【００１２】
本実施形態では、データ補間の分散処理に本発明を適用する。データ補間は、既知の数値データ列を基にして、そのデータ列の各区間内を埋める数値を求める処理であり、拡張現実感のための空間補間などのような様々な目的で用いられる。この補間処理はコンピュータの実行環境やデータ量などの要因により時間が掛かることがあるので、複数のコンピュータを用いた分散処理によりデータ補間を実行するのが好ましい場合がある。
【００１３】
図１〜４を用いて、実施形態に係る分散処理システム１の機能および構成を説明する。本実施形態における分散処理システム１は、室内または屋外に配された複数のセンサから得られた、環境に関する測定値（本明細書では「環境値」ともいう）を補間することでその空間の全体的な環境を推定し、推定結果をコンピュータグラフィックスにより可視化するコンピュータシステムである。センサは空間内に離散的に配置されるので、分散処理システム１は空間内の環境値を網羅的に表示するためにデータ補間を実行する。分散処理システム１は推定結果をユーザに直感的に分かりやすく示すことで、該ユーザに拡張現実感を提供することができる。環境値の例として温度、湿度、通信機器が受信する電波の強度などが挙げられるが、測定値の種類はこれらに限定されない。これに関連して、センサの種類および具体的な構成も限定されない。なお、空間内の離散的な値を補間する処理は「空間補間」ともいわれるが、本発明は空間補間に限らず他のデータ処理にも適用できる。本実施形態では「データ補間」という用語を用いる。
【００１４】
図１に示すように、分散処理システム１は、少なくともサーバ１０および１以上のクライアント端末２０を備える。この分散処理システム１の特徴は、演算の負荷が大きくなりがちなデータ補間を、複数のサーバ間で分散するのではなく、サーバ１０とクライアント端末２０との間で分散して処理する点にある。分散処理システム１は、環境測定の対象となる空間Ｒに配された複数のセンサＳから得られた測定値を記憶するデータベース３０にアクセスすることができる。データベース３０および複数のセンサＳは分散処理システム１の一部として用意されてもよいし、分散処理システム１と別のシステム内に存在してもよい。
【００１５】
サーバ１０は、インターネットやイントラネットなどの通信回線を通じてデータベース３０および各クライアント端末２０とデータ通信を行うことが可能なコンピュータである。サーバ１０は１台のコンピュータにより構築されてもよいし複数のコンピュータにより構築されてもよい。サーバ１０が複数のコンピュータから成る場合には、サーバ１０の各機能要素がこれらのコンピュータにより分散処理される。もっとも、上記の通り、本実施形態の特徴はクライアントとサーバとの間の分散処理にあり、サーバ１０を構成する複数のコンピュータ間の分散処理にあるわけではない。サーバ１０の役割を担うコンピュータの種類は限定されず、例えば、据置型または携帯型のパーソナルコンピュータ（ＰＣ）を用いてもよいし、ＰＣより高性能なコンピュータを用いてもよいし、ワークステーションを用いてもよい。
【００１６】
クライアント端末２０は、分散処理システム１の最終的な処理結果、すなわち空間の環境の推定結果を表示するコンピュータであり、その推定結果に基づく拡張現実感をユーザに提供するコンピュータであるともいうことができる。本実施形態では、クライアント端末２０はウェブブラウザを備え、そのウェブブラウザ上に推定結果が視覚的に表示されるものとする。ユーザはクライアント端末２０を介して空間の環境の様子を直感的に捉えることができる。クライアント端末２０として用いられるコンピュータの種類は限定されず、例えば、据置型または携帯型のＰＣを用いてもよいし、高機能携帯電話機（スマートフォン）や携帯電話機、携帯情報端末（ＰＤＡ）、タブレットなどの携帯端末を用いてもよいし、ヘッドマウントディスプレイ（ＨＭＤ）などのウェアラブル端末でもよい。一般に、クライアント端末２０の処理能力（クライアント端末２０に搭載されるハードウェア資源（ＣＰＵやメモリなど）の性能）は、サーバ１０のそれよりも低い。
【００１７】
サーバ１０またはクライアント端末２０として用いられる個々のコンピュータ１００の一般的なハードウェア構成を図２に示す。コンピュータ１００は、オペレーティングシステムやアプリケーション・プログラムなどを実行するＣＰＵ（プロセッサ）１０１と、ＲＯＭ及びＲＡＭで構成される主記憶部１０２と、ハードディスクやフラッシュメモリなどで構成される補助記憶部１０３と、ネットワークカードあるいは無線通信モジュールで構成される通信制御部１０４と、キーボードやマウス、タッチパッドなどの入力装置１０５と、ディスプレイやタッチパネルなどの出力装置１０６とを備える。当然ながら、搭載されるハードウェアモジュールはコンピュータ１００の種類により異なる。例えば、据置型のＰＣおよびワークステーションは入力装置および出力装置としてキーボード、マウス、およびモニタを備えることが多いが、スマートフォンおよびタブレットではタッチパネルが入力装置および出力装置として機能することが多い。
【００１８】
後述するサーバ１０およびクライアント端末２０の各機能要素は、ＣＰＵ１０１または主記憶部１０２の上に所定のソフトウェアを読み込ませ、ＣＰＵ１０１の制御の下で通信制御部１０４や入力装置１０５、出力装置１０６などを動作させ、主記憶部１０２または補助記憶部１０３におけるデータの読み出し及び書き込みを行うことで実現される。処理に必要なデータまたはデータベースは主記憶部１０２または補助記憶部１０３内に格納される。
【００１９】
データベース３０は、所定の時間間隔（例えば１０分毎や１時間毎など）毎に複数のセンサＳにより測定された複数の測定値を記憶する装置または機能要素である。例えば、データベース３０は、８時、９時、１０時、…の各時点における複数のセンサＳの測定値を記憶する。データベース３０の実装方法は限定されず、本実施形態のようにサーバ１０とは別の装置であってもよいし、サーバ１０内の補助記憶装置上に設けられてもよい。また、データベース３０は関係データベースでもよいしＣＳＶファイルでもよい。
【００２０】
測定値をデータベース３０に蓄積する方法は限定されない。例えばセンサＳがデータベース３０と直接通信して測定値をデータベース３０に格納してもよいし、別のコンピュータがセンサＳから測定値を収集して、その値をデータベース３０に格納してもよい。データベース３０に格納される測定値は、データ補間の入力値として用いられる未補間データである。未補間データとは、データ補間がまだ施されていない生データ（ｒａｗ  ｄａｔａ）である。
【００２１】
分散処理システム１の特徴はデータベース３０に蓄積されたデータの処理方法にあるので、以下の説明は、処理対象の未補間データがデータベース３０内に既に存在することを前提とする。
【００２２】
次に、サーバ１０の機能構成を説明する。図１に示すように、サーバ１０は機能的構成要素としてページ提供部１１、クライアント情報取得部（取得部）１２、決定部１３、割当部１４、および補間部１５を備える。
【００２３】
ページ提供部１１は、空間内の環境の様子を視覚的に表示するためのウェブページをクライアント端末２０に提供する機能要素である。そのウェブページの要求（以下では「ページ要求」という）をクライアント端末２０から受信すると、ページ提供部１１は指定されたウェブページのスクリプト（以下では「ページデータ」という）をそのクライアント端末２０に送信する。本実施形態では、ウェブページは例えばＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）およびＪａｖａＳｃｒｉｐｔ（商標または登録商標）により記述されるが、ウェブページを記述する言語はこれらに限定されない。
【００２４】
ページデータには、クライアント端末２０の環境または動作結果を示すクライアント情報を取得するためのスクリプトまたはプログラムが埋め込まれる。分散処理システム１はサーバ１０とクライアント端末２０との間でデータ補間を分散処理するが、これを実現するためにはクライアント端末２０の処理能力を把握しなければならず、したがって、クライアント情報を取得する必要が生じる。本明細書における「クライアント端末の環境」とは、クライアント端末での処理効率に影響を与え得る動作環境のことであり、例えば、ハードウェア、ソフトウェア、または通信ネットワークに関する動作環境である。本明細書における「クライアント端末の動作結果」とは、クライアント端末がデータ補間を実行した際に測定される当該クライアント端末の処理能力であり、例えば、データ補間に要した時間（処理時間）やハードウェア資源の消費量などが挙げられる。本明細書では、クライアント情報は、クライアント端末の環境を示すクライアント環境情報と、クライアント端末の動作結果を示すクライアント成績情報とを含む。
【００２５】
本実施形態では、クライアント環境情報は、クライアント端末２０にインストールされているオペレーティングシステム（ＯＳ）およびウェブブラウザと、クライアント端末２０とサーバ１０との間の通信速度とを示すものとする。ただし、クライアント環境情報の内容はこれらに限定されない。
【００２６】
クライアント端末２０のＯＳおよびウェブブラウザの情報は、当該クライアント端末２０で実行されるウェブブラウザ自身から取得することが可能である。具体的には、ユーザエージェント情報を解析することでウェブブラウザを特定でき、ウェブブラウザが動作しているプラットフォームの情報を解析することでＯＳを特定できる。これらの二つの情報からクライアント端末２０を大まかに分類しておおよその性能を判定することができ、例えば、クライアント端末２０がデスクトップＰＣか携帯端末かを判定できる。ＯＳおよびウェブブラウザの情報を取得するためのｃｌｉｅｎｔ＿ｅｎｖｉｒｏｎｍｅｎｔ＿ａｃｑｕｉｒｅ関数の擬似コードを以下に示す。
【００２７】
function client_environment_acquire(){
ユーザエージェント(window.navigator.userAgent)を取得
ユーザエージェントを解析してウェブブラウザを判定し、判定結果を変数に格納
ブラウザのプラットフォーム(window.navigator.platform)を取得
ブラウザのプラットフォームを解析してＯＳを判定し、判定結果を変数に格納
ＯＳおよびウェブブラウザの判定結果を示す配列を返却
}
【００２８】
クライアント端末２０とサーバ１０との間の通信速度は、データの送信時刻および受信時刻の差を通信時間として求め、伝送されたデータのサイズをその通信時間で割ることで得られる。通信速度を求めるために用いられるクライアント側の関数（ｃｌｉｅｎｔ＿ｎｅｔｗｏｒｋ＿ｓｐｅｅｄｃｈｅｃｋ）およびサーバ側の関数（ｓｅｒｖｅｒ＿ｎｅｔｗｏｒｋ＿ｓｐｅｅｄｃｈｅｃｋ）の擬似コードを以下に示す。ｃｌｉｅｎｔ＿ｎｅｔｗｏｒｋ＿ｓｐｅｅｄｃｈｅｃｋ関数はページデータに埋め込まれてクライアント端末２０に提供される。一方、ｓｅｒｖｅｒ＿ｎｅｔｗｏｒｋ＿ｓｐｅｅｄｃｈｅｃｋ関数はページデータには埋め込まれず、サーバ１０で実行される。計測可能な時間の精度はＯＳ毎に異なるので、通信時間を求める前に、クライアント端末２０とサーバ１０との間で計測精度が合わせられる。本実施形態では、分散処理システム１はクライアント端末２０とサーバ１０とが通信を行う度に通信速度を計測するが、通信速度を計測するタイミングはこれに限定されるものではなく、例えば、一定の時間間隔で通信速度を計測してもよい。
【００２９】
function client_network_speedcheck(){
クライアントの現在時刻を変数ct1に格納
サーバの現在時刻をサーバに要求
if （サーバから正常な応答があった）
サーバ時刻とクライアント時刻との計測精度を合わせる
上り速度＝送信データサイズ／（サーバ現在時刻−ct1）
クライアントの現在時刻を再度取得し、その時刻を変数ct2に格納
下り速度＝受信データサイズ／（ct2−サーバ現在時刻）
else
エラーを表示
end if
}
【００３０】
function server_network_speedcheck(){
サーバの現在時刻を計測
計測した時刻のフォーマットをクライアントに合わせる
サーバの現在時刻を返却
}
【００３１】
本実施形態では、クライアント成績情報は、クライアント端末２０に割り当てられた未補間データを入力とするデータ補間の処理時間（クライアント補間時間）と、クライアント端末２０がサーバ１０に環境値のデータを要求してからすべての補間済データが得られるまでの総処理時間とを示すものとする。ただし、クライアント成績情報の内容はこれらに限定されない。
【００３２】
クライアント端末で実行されるデータ補間の処理時間を取得するためのｉｎｔｅｒｐｏｌａｔｅ＿ｂｅｎｃｈｍａｒｋ関数の擬似コードを以下に示す。この関数は、データ補間を実行する前と後とでそれぞれ現在時刻を取得し、それらの時刻の差分を処理時間（クライアント補間時間）として設定する。
【００３３】
function interpolate_benchmark（未補間データ）{
クライアントの現在時刻をtime1に格納
未補間データを入力とするデータ補間を実行
クライアントの現在時刻をtime2に格納
処理時間＝time2−time1
得られた補間済データと演算時間を返却
}
【００３４】
このｉｎｔｅｒｐｏｌａｔｅ＿ｂｅｎｃｈｍａｒｋ関数は、可視化のためのデータ補間だけでなく、その処理のベンチマークテストの役割も持つ。このように実際のデータ補間をベンチマークテストとしても利用することで、可視化のためのデータ補間とは別にベンチマークテストを実行しなくて済む。
【００３５】
クライアント情報取得部１２は、クライアント情報を取得する機能要素である。クライアント情報取得部１２はクライアント環境情報またはクライアント成績情報をクライアント端末２０から受信し、その情報を決定部１３に出力する。
【００３６】
決定部１３は、クライアント端末２０とサーバ１０との間の処理割合を決定する機能要素である。本明細書における「処理割合」とはクライアント端末２０とサーバ１０との間でデータ補間を実行する割合であり、これは、処理される未補間データの割合であるともいえる。データ補間の全体または未補間データの全体を１として、クライアント端末２０およびサーバ１０の処理割合がそれぞれ０．３および０．７であれば、クライアント端末２０が３０％分の未補間データに対するデータ補間を実行し、サーバ１０が残り７０％分の未補間データに対するデータ補間を実行する。決定部１３は決定した処理割合を割当部１４に出力する。
【００３７】
決定部１３は機械学習を実行することでクライアント端末２０の処理能力を推定し、推定された処理能力に基づいて処理割合を決定する。本明細書における「機械学習」とは、既知の値の集合であるトレーニングデータを学習することで未知の値を予測する処理である。
【００３８】
まず、決定部１３は、クライアント環境情報を入力パラメータとし、前回のデータ補間で得られたクライアント成績情報を正解データとする機械学習を実行してクライアント端末２０の処理能力を推定する。そして、決定部１３はその推定結果に基づいて、処理能力に従って予め設定された複数のグループのうち、そのクライアント端末２０がどのグループに属するかを判定する。例えば、処理能力を処理時間で表すとして、処理時間が２０ｍｓ（ミリ秒）未満であるグループＧａと、処理時間が２０ｍｓ以上５０ｍｓ未満であるグループＧｂと、処理時間が５０ｍｓ以上であるグループＧｃとが設定されたとする。この場合において、決定部１３は、機械学習によりクライアント端末２０の処理能力（処理時間）を４０ｍｓと推定した場合には、このクライアント端末２０がグループＧｂに属すると判定する。続いて、決定部１３は、そのグループ毎に用意された図３のフローチャートに従って次回の処理割合を決定する。
【００３９】
その後、決定部１３はその処理割合に従って実行された次のデータ補間で得られたクライアント成績情報を次の正解データとする機械学習を実行することで処理能力を再び推定し、クライアント端末２０が所属するグループを判定する。そして、決定部１３はそのグループに対応する図３のフローチャートに従ってさらに次の処理割合を決定する。このような処理を繰り返すことで、処理割合が次第に最適化されていく。ただし、初回の機械学習ではクライアント成績情報が存在しないので、決定部１３は正解データを用いることなく、クライアント環境情報を入力パラメータとする機械学習を実行する。クライアント環境情報は最初に取得すれば足りるので、２回目以降の機械学習では決定部１３は取得済のクライアント環境情報を再利用してもよい。
【００４０】
図３を参照しながら、ある一つのグループにおいて処理割合を決定する処理を詳細に説明する。処理割合の決定方法は、一グループ内での最適化の進展状況に応じて変わる。大まかにいうと、（ａ）クライアント成績情報をサンプルとして一定量だけ蓄積するまでの間（初期サンプル群が完成するまでの間）、（ｂ）初期サンプル群を得てから、最適解を得たと判定するまでの間、（ｃ）最適解を得たと判定した後の三つの場面で、処理割合の決定方法が異なる（ステップＳ１１）。
【００４１】
最初のｎ個のクライアント成績情報が揃うまでは（すなわち、初期サンプル群が完成するまでは）、決定部１３は処理割合をランダムに決定する（ステップＳ１２）。この処理割合に基づいてクライアント端末２０およびサーバ１０がデータ補間を実行すると、決定部１３はそのデータ補間により得られたクライアント成績情報をサンプルとして保存する（ステップＳ１２）。決定部１３はｎ個のクライアント成績情報を初期サンプル群として得るまでこの一連の処理を繰り返す（ステップＳ１２）。
【００４２】
ｎ個のサンプル（クライアント成績情報）が得られると、決定部１３はグループにおける処理割合の最適解を遺伝的アルゴリズムを用いて探索する。具体的には、決定部１３はクライアント成績情報に基づいてこれらのサンプルを順位付けすることでサンプル群を評価し（ステップＳ１３）、最適解が変化する間は以下の処理を実行する（ステップＳ１４；ＹＥＳ）。すなわち、決定部１３は成績が上位ｈ％の処理割合のサンプルを上位集団として残し、残りのサンプルを破棄する（ステップＳ１５）。ここで、「成績が上位」であるとは、処理時間および総処理時間のうちの少なくとも一方に基づく評価値が上位であることを意味する。例えば、決定部１３は、処理時間または総処理時間が短い順に複数のサンプルを上位集団として選択してもよいし、処理時間および総処理時間に基づいて任意の手法で算出される評価値が高い順に複数のサンプルを上位集団として設定してもよい。
【００４３】
続いて、決定部１３は、遺伝的アルゴリズムの親選択方法のうちのランキング選択を用いて親（二つの処理割合）を選択し（ステップＳ１６）、その親から、より適切な処理割合に近い可能性を持つ新たな処理割合を生成する（ステップＳ１７）。この新たな処理割合に基づいてクライアント端末２０およびサーバ１０がデータ補間を実行すると、決定部１３はそのデータ補間により得られたクライアント成績情報をサンプルとして保存する（ステップＳ１８）。決定部１３はサンプル数が閾値ｎに達するまでステップＳ１６〜Ｓ１８の処理を繰り返す（ステップＳ１９参照）。
【００４４】
ステップＳ１６〜Ｓ１８の処理をさらに詳細に説明する。決定部１３はまず上位集団の各サンプルに、成績に基づく順位ｒに応じて出現確率ｐｆを割り振る。順位ｒが１に近いサンプルほど出現確率ｐｆが大きく設定され、処理割合の生成に用いる要素として高い確率で選択される。決定部１３は出現確率ｐｆを式（１）によって求める。
【数１】
0006486080.tif 000002
【００４５】
次に、決定部１３は得られた出現確率ｐｆに従ってランダムに２つの処理割合を選択する。もし二つの処理割合が同じだった場合には決定部１３は、異なる処理割合が得られるようにその選択処理を再度行う。加えて、処理割合の組合せが過去に選択したことがあるものと同じだった場合にも、決定部１３は選択処理を再度行う。同じ値同士でない新規の組み合わせを選択すると、決定部１３はその組合せの中央値を求めることで新たな処理割合を生成する。この一連の処理では、サンプルの組合せにより、限られた入力値の範囲のみで最適となる局所最適解を最適としてしまう問題が発生し得るので、決定部１３は突然変異確率ｐｍを用いて処理割合をランダムに変動させる。この処理により、最適解を、局所最適解ではなく、全体としての最適解である大域最適解に近づけることが可能になる。
【００４６】
サンプル数が閾値ｎに達すると（ステップＳ１９；ＹＥＳ）、決定部１３は再びサンプル群を評価し（ステップＳ１３）、最適解が変化する間はステップＳ１５〜Ｓ１９の処理を繰り返すことで、最適解を探っていく。決定部１３は、成績の良かった処理割合から新たな処理割合を生成する処理を繰り返すことで最適解を探る。ステップＳ１５〜Ｓ１９をＸ回試行しても最適解が変化しなかった場合には（ステップＳ１４；ＮＯ）、決定部１３は処理割合の最適解を獲得したと判定する（ステップＳ２０）。
【００４７】
最適解を獲得した以降は、決定部１３はそのグループに属するクライアント端末２０に対する処理割合としてその最適解を設定する（ステップＳ２１）。
【００４８】
なお、このような遺伝的アルゴリズムで用いる閾値ｎ、割合ｈ（％）、突然変異確率ｐｍ、および繰返し回数に関する閾値Ｘの決定方法は限定されない。
【００４９】
このように、決定部１３はデータ補間をサーバ１０とクライアント端末２０との間で実行させながら最適な処理割合を探っていく。したがって、クライアント端末２０の要求に応じて決定部１３により決定される処理割合が常に最適なものであるとは限らない。
【００５０】
割当部１４は、処理すべき未補間データをデータベース３０から読み出し、決定部１３により決定された処理割合に基づいてその未補間データをクライアント端末２０とサーバ１０とに割り当てる機能要素である。割当部１４は、クライアント端末２０に割り当てた未補間データをそのクライアント端末２０に送信し、サーバ１０に割り当てた未補間データを補間部１５に出力する。
【００５１】
割当部１４は未補間データの割当比率が処理割合と一致するように未補間データをクライアント端末２０とサーバ１０とに割り当てる。例えば、クライアント端末２０およびサーバ１０の処理割合がそれぞれ０．３および０．７と決定されたのであれば、割当部１４は未補間データの３０％分をクライアント端末２０に割り当て、残りの７０％分をサーバ１０に割り当てる。なお、当然ながら、未補間データを構成する値の個数によっては未補間データの割当比率が処理割合と完全に一致しない場合があり得る。例えば、クライアント端末２０とサーバ１０との間の処理割合が３：７と決まったとしても、未補間データの割当比率が２．８：７．２となることがあり得る。
【００５２】
割当部１４は、クライアント端末２０とサーバ１０とに単純に未補間データを配分してもよい。あるいは、割当部１４は、処理割合に従いつつ、空間Ｒ内の特定の領域に設置されたセンサＳで得られた未補間データをクライアント端末２０に割り当ててもよい。例えば、割当部１４はクライアント端末２０から要求された領域（例えば、ＨＭＤで計測された視線方向または視認領域に基づく領域）に対応する１以上のセンサＳを特定し、そのセンサＳで得られた未補間データをクライアント端末２０に割り当ててもよい。この場合には、クライアント端末２０がその要求された領域でのデータ補間を先に実行して、当該領域の環境値を先に可視化することが可能になる（サーバ１０から得られる補間済データはその後に可視化される）。
【００５３】
補間部１５は、サーバ１０に割り当てられた未補間データに対するデータ補間を実行することで補間済データを生成する機能要素である。データ補間のアルゴリズムは限定されないが、例えば、空間補間アルゴリズムの一つである逆距離加重法を用いてもよい。この処理により、隣接するセンサＳ間における任意の領域での環境（例えば温度、湿度、電波強度）の推定値が得られる。補間部１５は得られた補間済データをクライアント端末２０に送信する。補間済データは、未補間データで示される環境値と、隣接するセンサ間における仮想の測定点における推定環境値との双方を含むデータである。
【００５４】
次に、クライアント端末２０の機能構成を説明する。図１に示すように、クライアント端末２０は機能的構成要素としてページ取得部２１、クライアント情報提供部（取得部）２２、補間部２３、および表示制御部（出力部）２４を備える。
【００５５】
ページ取得部２１は、空間内の環境の様子を視覚的に表示するためのウェブページをサーバ１０から取得する機能要素である。ページ取得部２１はユーザ操作に基づいてまたは自動的にページ要求（空間内の環境の様子を視覚的に表示するためのウェブページの要求）をサーバ１０に送信し、その要求に応じてサーバ１０（ページ提供部１１）から送られてきたページデータを受信する。このページデータがＣＰＵ１０１により実行されることで、ウェブページがウェブブラウザ上に表示されるとともに、未補間データの要求がクライアント端末２０からサーバ１０に送信される。
【００５６】
クライアント情報提供部２２は、クライアント情報（クライアント環境情報およびクライアント成績情報）を取得する機能要素であり、ページデータに埋め込まれたｃｌｉｅｎｔ＿ｅｎｖｉｒｏｎｍｅｎｔ＿ａｃｑｕｉｒｅ関数、ｃｌｉｅｎｔ＿ｎｅｔｗｏｒｋ＿ｓｐｅｅｄｃｈｅｃｋ関数、およびｉｎｔｅｒｐｏｌａｔｅ＿ｂｅｎｃｈｍａｒｋ関数がＣＰＵ１０１により実行されることで実現される。クライアント情報提供部２２はｃｌｉｅｎｔ＿ｅｎｖｉｒｏｎｍｅｎｔ＿ａｃｑｕｉｒｅ関数およびｃｌｉｅｎｔ＿ｎｅｔｗｏｒｋ＿ｓｐｅｅｄｃｈｅｃｋ関数によりＯＳおよびウェブブラウザの情報と通信速度とを取得し、これらの情報をサーバ１０に送信する。また、クライアント情報提供部２２は、ｉｎｔｅｒｐｏｌａｔｅ＿ｂｅｎｃｈｍａｒｋ関数で得られる処理時間と総処理時間とをクライアント成績情報としてサーバ１０に送信する。
【００５７】
補間部２３は、クライアント端末２０に割り当てられた未補間データ（サーバ１０から受信した未補間データ）に対するデータ補間を実行することで補間済データを生成する機能要素であり、ページデータに埋め込まれたｉｎｔｅｒｐｏｌａｔｅ＿ｂｅｎｃｈｍａｒｋ関数がＣＰＵ１０１により実行されることで実現される。サーバ１０の補間部１５と同様に、データ補間のアルゴリズムは限定されず、逆距離加重法などの任意の手法を用いることができる。この処理により、隣接するセンサＳ間における任意の領域での環境（例えば温度、湿度、電波強度）の推定値が得られる。補間部２３は得られた補間済データを表示制御部２４に出力する。
【００５８】
表示制御部２４はクライアント端末２０におけるデータ補間により得られた補間済データと、サーバ１０におけるデータ補間により得られた補間済データとの結合を出力する機能要素である。ここで、「結合」という用語は、一組のデータとして出力される、クライアント端末２０およびサーバ１０で得られた補間済データの集合を意味する。表示制御部２４は、補間部２３から補間済データが入力され且つサーバ１０から補間済データを受信すると、コンピュータグラフィックによりこれらの補間済データをウェブページ上に視覚的に表示する。この処理により補間済データが可視化される。
【００５９】
表示制御部２４により提供される、空間内の環境を示す３次元画像の例を模式的に図４に示す。図４では空間内の環境値の大きさを網掛けの濃さで示しているが、３次元画像はカラー画像（例えば、環境値が高い場所を赤に近い色で示しそれが低い場所を青に近い色で示す画像）であってもよいし、グレースケール画像であってもよい。図４の例（ａ）は空間Ｒ全体の環境を可視化した３次元画像であり、例（ｂ）は、その空間Ｒ内に存在するカメラＣから得られる映像に可視化した環境値を重畳した画面（拡張現実感を提供する画面）である。
【００６０】
次に、図５，６を用いて、分散処理システム１の動作を説明するとともに本実施形態に係る分散処理方法について説明する。
【００６１】
まず、クライアント端末２０のページ取得部２１がページ要求をサーバ１０に送信し（ステップＳ１１１）、サーバ１０のページ提供部１１がその要求に応じてページデータをクライアント端末２０に送信する（ステップＳ１１２）。このページデータは、クライアント情報を取得するためのスクリプトまたはプログラム（例えば、ｃｌｉｅｎｔ＿ｅｎｖｉｒｏｎｍｅｎｔ＿ａｃｑｕｉｒｅ関数、ｃｌｉｅｎｔ＿ｎｅｔｗｏｒｋ＿ｓｐｅｅｄｃｈｅｃｋ関数、およびｉｎｔｅｒｐｏｌａｔｅ＿ｂｅｎｃｈｍａｒｋ関数）を含む。
【００６２】
クライアント端末２０では、ページ取得部２１がそのページデータを受信する。このページデータがＣＰＵ１０１により実行されることでウェブページが画面上に表示される。また、ページデータ内のスクリプトが実行されることで、クライアント情報提供部２２がＯＳおよびウェブブラウザの情報と通信速度とをクライアント環境情報として取得し（ステップＳ１１３、取得ステップ）、そのクライアント環境情報をサーバ１０に送信する（ステップＳ１１４）。また、ページ取得部２１が未補間データをサーバ１０に要求する（データ要求。ステップＳ１１５）。
【００６３】
サーバ１０では、クライアント情報取得部１２がクライアント環境情報を受信する（取得ステップ）。続いて、決定部１３が機械学習などのアルゴリズムを用いて、クライアント端末２０とサーバ１０との間のデータ補間の処理割合を決定する（ステップＳ１１６、決定ステップ）。そして、割当部１４が処理対象の未補間データをデータベース３０から抽出し、処理割合に基づいてその未補間データをクライアント端末２０およびサーバ１０に割り当てる（ステップＳ１１７、割当ステップ）。割当部１４はクライアント端末２０に割り当てた未補間データ（クライアント端末用の未補間データ）をクライアント端末２０に送信する（ステップＳ１１８）。
【００６４】
クライアント端末２０では、補間部２３がその未補間データを受信し、このデータに対するデータ補間を実行する（ステップＳ１１９）。この際に、クライアント情報提供部２２がそのデータ補間の実行により得られるクライアント成績情報を取得する。一方で、サーバ１０では補間部１５が割当部１４から入力された未補間データ（サーバ用の未補間データ）に対するデータ補間を実行し（ステップＳ１２０）、この処理により生成された補間済データをクライアント端末２０に送信する（ステップＳ１２１）。クライアント端末２０では補間部２３がクライアント成績情報をサーバ１０に送信し、クライアント情報取得部１２がその情報を受信する（ステップＳ１２２、取得ステップ）。また、表示制御部２４が補間部２３で生成された補間済データとサーバ１０から受信した補間済データとの結合を可視化する（ステップＳ１２３、出力ステップ）。
【００６５】
本実施形態では、次のデータ補間（次の未補間データを補間する処理）を実行する際には、決定部１３がクライアント環境情報およびクライアント成績情報を入力とする機械学習などのアルゴリズムを用いて、クライアント端末２０とサーバ１０との間のデータ補間の処理割合を決定（再設定）する（ステップＳ１２４、決定ステップ）。クライアント端末２０が次のデータを要求すると（ステップＳ１２５）、割当部１４が次の未補間データをデータベース３０から抽出し、最新の処理割合（再設定された処理割合）に基づいてその未補間データをクライアント端末２０およびサーバ１０に割り当てる（ステップＳ１２６、割当ステップ）。割当部１４はクライアント端末２０に割り当てた未補間データ（クライアント端末用の未補間データ）をクライアント端末２０に送信する（ステップＳ１２７）。
【００６６】
クライアント端末２０では、補間部２３がその未補間データを受信し、このデータに対するデータ補間を実行するとともに（ステップＳ１２８）、クライアント情報提供部２２がそのデータ補間の実行により得られるクライアント成績情報を取得する。一方で、サーバ１０では補間部１５が残りの未補間データ（サーバ用の未補間データ）に対するデータ補間を実行し（ステップＳ１２９）、この処理により生成された補間済データをクライアント端末２０に送信する（ステップＳ１３０）。クライアント端末２０では、補間部２３が次のクライアント成績情報をサーバ１０に送信し、クライアント情報取得部１２がその情報を受信する（ステップＳ１３１、取得ステップ）。また、表示制御部２４が次の補間済データの結合を可視化する（ステップＳ１３２、出力ステップ）。一方、サーバ１０では、決定部１３がクライアント環境情報および新たに得られたクライアント成績情報を入力とする機械学習などのアルゴリズムを用いて、クライアント端末２０とサーバ１０との間のデータ補間の処理割合を決定（再設定）する（ステップＳ１３３、決定ステップ）。
【００６７】
分散処理システム１はこのようにステップＳ１２４〜Ｓ１３２の処理を繰り返すことで、クライアント端末２０とサーバ１０との間の処理割合を動的に調整しながら一連のデータ補間を実行して、処理割合を適正値に近づけていくことができる。その結果、分散処理を効率的に実行することができる。また、データ補間および可視化が繰り返されることで、ユーザは空間Ｒ内の環境の変化（例えば、時間の経過に伴う環境値の変化）を把握することができる。
【００６８】
なお、各ステップの実行順序は図５，６に示したものに限定されない。例えば、時間軸に沿ったステップＳ１１４，Ｓ１１５の処理の実行タイミングが前後してもよいし、ステップＳ１２１，Ｓ１２２（またはステップＳ１３０，１３１）の処理の実行タイミングが前後してもよい。
【００６９】
次に、図７を用いて、分散処理システム１を実現するための分散処理プログラムＰを説明する。分散処理プログラムＰは、コンピュータをサーバ１０として機能させるためのサーバプログラムＰ１と、コンピュータをクライアント端末２０として機能させるためのクライアントプログラムＰ２とを備える。プログラムを記述する言語は任意に定めてよいが、一例として、サーバプログラムＰ１をＣ＋＋で記述し、クライアントプログラムＰ２をＪａｖａＳｃｒｉｐｔ（商標または登録商標）で記述することが考えられる。
【００７０】
サーバプログラムＰ１は、メインモジュールＰ１０、ページ提供モジュールＰ１１、クライアント情報取得モジュールＰ１２、決定モジュールＰ１３、割当モジュールＰ１４、および補間モジュールＰ１５を備える。メインモジュールＰ１０は、サーバ側の機能を統括的に制御する部分である。ページ提供モジュールＰ１１、クライアント情報取得モジュールＰ１２、決定モジュールＰ１３、割当モジュールＰ１４、および補間モジュールＰ１５を実行することにより実現される機能はそれぞれ、上記のページ提供部１１、クライアント情報取得部１２、決定部１３、割当部１４、および補間部１５の機能と同様である。
【００７１】
クライアントプログラムＰ２は、メインモジュールＰ２０、ページ取得モジュールＰ２１、クライアント情報提供モジュールＰ２２、補間モジュールＰ２３、および表示制御モジュールＰ２４を備える。メインモジュールＰ２０は、クライアント側の機能を統括的に制御する部分である。ページ取得モジュールＰ２１、クライアント情報提供モジュールＰ２２、補間モジュールＰ２３、および表示制御モジュールＰ２４を実行することにより実現される機能はそれぞれ、上記のページ取得部２１、クライアント情報提供部２２、補間部２３、および表示制御部２４の機能と同様である。
【００７２】
サーバプログラムＰ１およびクライアントプログラムＰ２はそれぞれ、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ、半導体メモリなどの有形の記録媒体に固定的に記録された上で提供されてもよい。あるいは、これらのプログラムＰ１，Ｐ２は、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【００７３】
以上説明したように、本発明の一側面に係る分散処理システムは、クライアント端末とサーバとを備える分散処理システムであって、クライアント端末の環境または動作結果を示すクライアント情報を該クライアント端末から取得する取得部と、取得部により取得されたクライアント情報を用いる機械学習を実行することでクライアント端末の処理能力を推定し、推定された処理能力に基づいてクライアント端末とサーバとの間の処理割合を決定する決定部であって、処理割合が、未処理データを用いたデータ処理を実行する割合である、該決定部と、決定部により決定された処理割合に基づいて、クライアント端末およびサーバに未処理データを割り当てる割当部と、クライアント端末におけるデータ処理により得られた処理済データと、サーバにおけるデータ処理により得られた処理済データとの結合を、クライアント端末から出力する出力部とを備える。
【００７４】
本発明の一側面に係る分散処理方法は、クライアント端末とサーバとを備える分散処理システムにより実行される分散処理方法であって、クライアント端末の環境または動作結果を示すクライアント情報を該クライアント端末から取得する取得ステップと、取得ステップにおいて取得されたクライアント情報を用いる機械学習を実行することでクライアント端末の処理能力を推定し、推定された処理能力に基づいてクライアント端末とサーバとの間の処理割合を決定する決定ステップであって、処理割合が、未処理データを用いたデータ処理を実行する割合である、該決定ステップと、決定ステップにおいて決定された処理割合に基づいて、クライアント端末およびサーバに未処理データを割り当てる割当ステップと、クライアント端末におけるデータ処理により得られた処理済データと、サーバにおけるデータ処理により得られた処理済データとの結合を、クライアント端末から出力する出力ステップとを含む。
【００７５】
本発明の一側面に係る分散処理プログラムは、クライアント端末とサーバとを備える分散処理システムにより実行される分散処理方法を、少なくとも２台のコンピュータを備えるコンピュータシステムに実行させる分散処理プログラムであって、分散処理方法が、クライアント端末の環境または動作結果を示すクライアント情報を該クライアント端末から取得する取得ステップと、取得ステップにおいて取得されたクライアント情報を用いる機械学習を実行することでクライアント端末の処理能力を推定し、推定された処理能力に基づいてクライアント端末とサーバとの間の処理割合を決定する決定ステップであって、処理割合が、未処理データを用いたデータ処理を実行する割合である、該決定ステップと、決定ステップにおいて決定された処理割合に基づいて、クライアント端末およびサーバに未処理データを割り当てる割当ステップと、クライアント端末におけるデータ処理により得られた処理済データと、サーバにおけるデータ処理により得られた処理済データとの結合を、クライアント端末から出力する出力ステップとを含む。
【００７６】
このような側面においては、クライアント端末の環境または動作結果に基づく機械学習によりクライアント端末の処理能力が推定され、その推定結果に基づいてクライアント端末とサーバとの処理割合が決定される。したがって、クライアント端末の環境または動作結果を考慮して、クライアント端末とサーバとの間で同様のデータ処理を分散させることができる。その結果、システム全体の負荷を効率的に分散させることができる。
【００７７】
クライアントの環境または動作結果を把握できないと、サーバに比べて処理能力が低いクライアント端末に大きな負荷が掛かってシステム全体の処理効率が低下する可能性がある。一方で、各クライアント端末の動作環境および仕様は区々なので、処理割合を一律に決めてしまっては、多種多様なクライアント端末に対して、許容可能な応答時間内で処理結果を提供することが非常に困難である。これに対して、本発明の上記側面では、クライアント端末の環境または動作結果を考慮することで、クライアント端末とサーバとの間で同様のデータ処理を分散させることができる。例えば、一般に演算の負荷が高いデータ補間を、ユーザが許容する時間内にクライアント端末およびサーバの双方で処理することができる。
【００７８】
他の側面に係る分散処理システムでは、クライアント情報が、クライアント端末のオペレーティングシステムおよびウェブブラウザを少なくとも示すクライアント環境情報と、クライアント端末でのデータ処理の動作結果を示すクライアント成績情報とを含み、決定部が、クライアント環境情報を機械学習の入力パラメータとして用い、クライアント成績情報を機械学習の正解データとして用いてもよい。
【００７９】
オペレーティングシステムおよびウェブブラウザの情報を取得することでクライアント端末の大凡の種類または仕様がわかり、ひいてはクライアント端末の処理能力を推定することが可能になる。例えば、クライアント端末がデスクトップマシンか携帯端末かを特定して、処理能力が高いか低いかを大雑把に推定することができる。一方で、クライアント端末でのデータ処理の実際の動作結果が正解データとして与えられる。その結果、機械学習において、クライアント端末の大凡の処理能力と実際の動作結果とを考慮して、そのクライアント端末にとって適切な処理割合を決定することができる。例えば、携帯端末は一般にデスクトップマシンに比べて処理能力が低いので、携帯端末の処理割合はデスクトップマシンの処理割合よりも低くすることが望ましいと考えられる。
【００８０】
他の側面に係る分散処理システムでは、クライアント環境情報が、クライアント端末とサーバとの間の通信速度をさらに示してもよい。
【００８１】
クライアント端末とサーバとの間の通信速度は、クライアント端末にどのくらいの量のデータを渡すべきかを決定する際に参考になる。例えば、データ補間においてはある空間での補間済データが該空間での未補間データの何倍にも膨れ上がることがある。そのため、通信速度が低い場合には、それが高い場合よりもクライアント端末の処理割合を高くして未補間データを多めにクライアント端末に送信することで、演算のコストが必要以上に大きくなるのを防ぎつつデータ通信のコストを抑えることが考えられる。クライアント端末そのものの環境だけでなく通信速度も考慮することで、クライアント端末にとって適切な処理割合を決定することができる。
【００８２】
他の側面に係る分散処理システムでは、決定部が、サンプル数が閾値に達するまでは処理割合をランダムに決定し、サンプル数が閾値に達した場合には、クライアント端末でのデータ処理の成績が上位のサンプル群からなる上位集団を用いて処理割合を決定してもよい。ここで、サンプルは、クライアント端末でのデータ処理の動作結果を示すクライアント成績情報である。
【００８３】
サンプル（クライアント成績情報）がある程度多く集まるまでは処理割合をランダムに決めることで、あたかもベンチマークテストを行うように、様々な処理割合についてそれが妥当な値か否かを検証することができる。そして、ある程度多くのサンプルが集まったときには、クライアント端末でのデータ処理の成績が上位のサンプル群を用いて処理割合が決められるので、クライアント端末にとって適切な処理割合を決定することができる。
【００８４】
他の側面に係る分散処理システムでは、決定部が、処理割合の最適解を獲得したと判定した場合には該最適解を前記処理割合として決定してもよい。
【００８５】
最適解が見つかったのであればその最適解を処理割合として利用し続けるのが効率的である。なぜなら、最適解を探索し続けることに要する処理時間を省略できると共に、クライアント端末とサーバとの間で、最も適切と思われる処理割合でデータ処理を分散させ続けることができるからである。
【００８６】
他の側面に係る分散処理システムでは、データ処理がデータ補間であってもよい。一般にデータ補間は処理負荷が高く、また、補間処理によりデータ量が飛躍的に増える。したがって、サーバに比べて処理能力が低いクライアント端末にその処理をさせる際には、クライアントに送信する未処理データ（未補間データ）の量を調整する必要がある。データ補間に本発明を適用することで、効率的な処理が期待できる。
【００８７】
他の側面に係る分散処理システムでは、未処理データが、空間内の環境値を示すデータであり、出力部が、処理済データの結合を３次元画像により表示してもよい。
【００８８】
この場合には、空間内の環境値を補間して、空間内の環境の様子を分かりやすい態様でユーザに提示することができる。拡張現実感を提供するような高度な画像処理ではそれ相応の演算およびデータ通信が必要であるが、上記の処理によりクライアント端末とサーバとの間でデータ補間を分散させることで、環境値を補間して３次元画像により可視化する一連の処理をほぼリアルタイムで実行することが可能になる。
【００８９】
以上、本発明をその実施形態に基づいて詳細に説明した。しかし、本発明は上記実施形態に限定されるものではない。本発明は、その要旨を逸脱しない範囲で様々な変形が可能である。
【００９０】
クライアント端末の処理能力を推定するための機械学習の具体的なアルゴリズムは限定されない。また、上記実施形態では遺伝的アルゴリズムを用いたが、このアルゴリズムの利用は必須ではない。あるいは、遺伝的アルゴリズムに代えて他のアルゴリズムを用いてもよい。
【００９１】
上記実施形態ではクライアント環境情報としてＯＳおよびブラウザの情報と通信速度とを用いたが、クライアント環境情報はこれらのうちの一部のみであってもよいし、これらとは異なる情報（例えば、ＣＰＵやメモリ、ディスクＩ／Ｏなどのハードウェアに関する情報）を用いてもよい。
【００９２】
上記実施形態ではクライアント成績情報として、クライアント端末２０に割り当てられた未補間データを入力とするデータ補間の処理時間と総処理時間とを用いたが、これら２種類のうちのどちらか一方のみの処理時間をクライアント成績情報として用いてもよい。あるいは、データ補間が実行されている間のＣＰＵ稼働率またはメモリ使用量の統計値（例えば平均値や中央値など）をクライアント成績情報として用いてもよい。
【００９３】
上記実施形態では分散処理システム１はクライアント端末２０からデータ要求を受け付ける度に処理割合を調整したが、処理割合を動的に調整するタイミングはこれに限定されない。例えば、分散処理システムの決定部は一定の時間間隔で（すなわち、定期的に）処理割合を決めてもよいし、ユーザの明示の指示に応答して処理割合を決めてもよい。
【００９４】
上記実施形態では表示制御部２４が補間済データの結合をウェブブラウザ上に３次元画像により可視化したが、補間済データの出力方法は限定されない。例えば、分散処理システムは補間済みデータの結合を２次元画像の態様で表示してもよいし、ウェブブラウザ以外のアプリケーション上に２次元画像または３次元画像の態様で表示してもよい。分散処理システムは補間済みデータの結合の３次元画像をプリンタに出力してもよいし、メモリやデータベースなどの記憶装置に格納してもよい。あるいは、分散処理システムは補間済みデータの結合を通信ネットワーク経由で他のコンピュータシステムに出力してもよい。
【００９５】
上記実施形態では分散処理システム１が空間内の環境値を補間したが、本発明の分散処理システムにより処理される未補間データが示す内容は何ら限定されない。分散処理システムは、画像データまたは音声データの補間などのような任意のデータ補間処理に適用可能である。また、上記実施形態では本発明をデータ補間に適用したが、データ収集や演算などの他の任意のデータ処理に本発明を適用してもよい。
【符号の説明】
【００９６】
１…分散処理システム、１０…サーバ、１１…ページ提供部、１２…クライアント情報取得部、１３…決定部、１４…割当部、１５…補間部、２０…クライアント端末、２１…ページ取得部、２２…クライアント情報提供部、２３…補間部、２４…表示制御部、３０…データベース、Ｐ…分散処理プログラム、Ｐ１…サーバプログラム、Ｐ１０…メインモジュール、Ｐ１１…ページ提供モジュール、Ｐ１２…クライアント情報取得モジュール、Ｐ１３…決定モジュール、Ｐ１４…割当モジュール、Ｐ１５…補間モジュール、Ｐ２…クライアントプログラム、Ｐ２０…メインモジュール、Ｐ２１…ページ取得モジュール、Ｐ２２…クライアント情報提供モジュール、Ｐ２３…補間モジュール、Ｐ２４…表示制御モジュール。
【図１】
0006486080.tif 000003
【図２】
0006486080.tif 000004
【図３】
0006486080.tif 000005
【図４】
0006486080.tif 000006
【図５】
0006486080.tif 000007
【図６】
0006486080.tif 000008
【図７】
0006486080.tif 000009