(57)【特許請求の範囲】
【請求項１】
少なくとも１つのモバイル・デバイスを含む複数のデバイスの間で計算タスクを共有するための方法であって、
データ・セットに対して計算タスクを実行するためのコストを推定するステップと、
前記推定されたコストがしきい値コストよりも大きい場合には、複数のデバイスから構成されるアドホック・ワイヤレス・ネットワークを形成するステップと、
前記データ・セットのある部分を前記複数のデバイスの個々のデバイスにダウンロードするステップと、
各デバイスにより、前記デバイスにダウンロードされている前記データ・セットの前記部分に対して、計算タスクを実行するステップと、
前記計算タスクの結果を、各デバイスから前記アドホック・ワイヤレス・ネットワークのすべての他のデバイスへ、ワイヤレスに転送するステップと、
を含み、
前記アドホック・ワイヤレス・ネットワークを形成するステップは、デバイス間でメッセージをワイヤレスに交換して、実行される前記計算タスクと、処理される前記データ・セットの識別子と、前記データ・セットのどの部分が各デバイスに割り当てられるべきかを識別するステップを含む、方法。
【請求項２】
前記アドホック・ワイヤレス・ネットワークを形成するステップは、ワイヤレス通信レンジ内で、信頼されているデバイスをサーチするステップを含む、請求項１に記載の方法。
【請求項３】
信頼されているデバイスは、特定のデバイスとの間に予め存在する社会的関係を有するデバイスである、請求項２に記載の方法。
【請求項４】
信頼されているデバイスは、有効な認証トークンを提供するデバイスである、請求項２に記載の方法。
【請求項５】
前記データ・セットの前記部分をダウンロードするステップは、同じ部分を、前記アドホック・ワイヤレス・ネットワークの前記デバイスのうちの少なくとも２つにダウンロードする、請求項１に記載の方法。
【請求項６】
前記データ・セットのある部分をダウンロードするステップは、前記データ・セットの前記部分を遠隔サーバからワイヤレスにダウンロードするステップによって達成される、
請求項１に記載の方法。
【請求項７】
隣接するモバイル・デバイスとローカル・エリア・ワイヤレス接続され、前記データ・セットの前記部分がそこからダウンロードされる遠隔サーバとワイヤレス接続されるように構成されたモバイル・デバイスに記憶されているアプリケーション・プログラムの実行によって、少なくとも部分的に実行される、請求項１に記載の方法。
【請求項８】
前記推定されたコストが前記しきい値コスト以下であると判断される場合には、代わりに、
前記データ・セットのすべての部分を前記複数のデバイスのそれぞれの個々のデバイスにダウンロードするステップと、
前記ダウンロードされたデータ・セットのすべての部分に対して、各デバイスによって、前記計算タスクを実行するステップと
を実行する、請求項１に記載の方法。
【請求項９】
請求項１〜８の何れか１項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項１０】
請求項９記載の前記コンピュータ・プログラムをコンピュータ可読媒体に記録した、コンピュータ可読媒体。
【請求項１１】
モバイル・デバイスであって、コンピュータ・プログラム命令を記憶するコンピュータ可読媒体と、
前記コンピュータ可読媒体と結合されており、前記命令を実行するデータ・プロセッサと、
隣接するモバイル・デバイスとローカル・エリア・ワイヤレス接続され、データ・セットのある部分がそこからダウンロードされる遠隔サーバとワイヤレス接続されるように構成された通信回路と
を備えており、前記データ・プロセッサによる前記コンピュータ・プログラム命令の実行の結果として、
前記データ・セットに対して計算タスクを実行するためのコストを推定する動作と、
前記推定されたコストがしきい値コストよりも大きい場合には、少なくとも１つの他のモバイル・デバイスを用いてアドホック・ワイヤレス・ネットワークを形成する動作と、
前記データ・セットの前記部分を前記モバイル・デバイスにダウンロードする動作であって、前記データ・セットの前記ダウンロードされる部分は、前記少なくとも１つの他のモバイル・デバイスによってダウンロードされる前記データ・セットの部分とは異なる、前記ダウンロードする動作と、
前記モバイル・デバイスにダウンロードされている前記データ・セットの前記部分に対して、計算タスクを実行する動作と、
前記計算タスクの結果を、前記モバイル・デバイスから前記アドホック・ワイヤレス・ネットワークの前記少なくとも１つの他のモバイル・デバイスへ、ワイヤレスに転送する動作と、
前記少なくとも１つの他のモバイル・デバイスにダウンロードされた前記データ・セットの前記部分に対して前記少なくとも１つの他のモバイル・デバイスによって実行された前記計算タスクの結果を、前記少なくとも１つの他のモバイル・デバイスからワイヤレスで受信する動作と、
を含み、
前記アドホック・ワイヤレス・ネットワークを形成する前記動作は、モバイル・デバイス間でメッセージをワイヤレスに交換して、実行される前記計算タスクと、処理される前記データ・セットの識別子と、前記データ・セットのどの部分が各モバイル・デバイスに割り当てられるべきかを識別する動作を含む、モバイル・デバイス。
【請求項１２】
前記アドホック・ワイヤレス・ネットワークを形成する前記動作は、前記モバイル・デバイスのローカル・エリア・ワイヤレス通信レンジ内で、信頼されているモバイル・デバイスをサーチする動作を含み、信頼されているモバイル・デバイスは、前記モバイル・デバイスとの間に予め存在する社会的関係を有するモバイル・デバイスであるか、または、有効な認証トークンを提供するモバイル・デバイスである、請求項１１に記載のモバイル・デバイス。
【請求項１３】
前記推定されたコストが前記しきい値コスト以下であると判断される場合には、前記動作は、前記データ・セットのすべての部分を前記モバイル・デバイスにダウンロードする動作と、前記ダウンロードされたデータ・セットのすべての部分に対して、前記計算タスクを実行する動作とを含む、請求項１１に記載のモバイル・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の例示的な実施形態は、一般的にはモバイル・コンピューティングに関し、さらに詳細には、デバイス相互間での通信が可能な複数のモバイル・デバイスによって実行されるモバイル・コンピューティングに関する。
【背景技術】
【０００２】
スマートフォン、タブレットおよびラップトップ・コンピュータなどのモバイル・デバイスは、チャット、ソーシャル・ネットワークおよび電子メールを通じて仲間および友人との通信が可能であるだけでなく、オンラインの情報に直ちにアクセスすることを伴うほぼ一定のインターネット接続が可能である。モバイル・デバイスは、また、ネイティブなモバイル・アプリケーションの豊富な選択を含め、ユーザが一般的なソフトウェアを動作させることを可能にする。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、これらの遠隔データを取得し任意の計算を実行する固有の能力には、関連するコストが付随する。特に、取得されるデータがかなりのサイズを有している場合または必要とされる計算が長く集約的である場合あるいはその両方である場合には、ユーザの経験を支配し得るパフォーマンスおよびエネルギーのコストが存在する。その結果として、バッテリ電力の過剰な消費に加えて、ユーザにとって長い待機時間が生じ得る。従って解決しようとする課題はモバイル・コンピューティングのためのパフォーマンスおよびエネルギー最適化を提供する方法、装置およびコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【０００４】
本発明の第１の態様では、本発明の実施形態は、少なくとも１つのモバイル・デバイスを含む複数のデバイスの間で計算タスクを共有するための方法を提供する。この方法は、データ・セットに対して計算タスクを実行するためのコストを推定することを含む。推定されたコストがしきい値コストよりも大きい場合には、この方法は、さらに、複数のデバイスから構成されるアドホック・ワイヤレス・ネットワークを形成することと、データ・セットのある部分を複数のデバイスの個々のデバイスにダウンロードすることと、各デバイスにより、データ・セットのそのデバイスにダウンロードされた部分に対して、計算タスクを実行することと、計算タスクの結果を、各デバイスからアドホック・ワイヤレス・ネットワークのすべての他のデバイスへ、ワイヤレスに転送することとを含む。
【０００５】
本発明の別の態様では、本発明の実施形態は、コンピュータ可読媒体であって、データ・プロセッサによって実行されると、データ・セットに対して計算タスクを実行するためのコストを推定する動作と、推定されたコストがしきい値コストよりも大きい場合には、複数のモバイル・デバイスから構成されるアドホック・ワイヤレス・ネットワークを形成する動作と、データ・セットのある部分を複数のモバイル・デバイスの個々のモバイル・デバイスにダウンロードする動作と、各モバイル・デバイスにより、そのモバイル・デバイスにダウンロードされているデータ・セットの部分に対して、計算タスクを実行する動作と、計算タスクの結果を、各モバイル・デバイスからアドホック・ワイヤレス・ネットワークのすべての他のデバイスへ、ワイヤレスに転送する動作とを含む動作の実行を結果的に生じるコンピュータ・プログラム命令を記憶するコンピュータ可読媒体を提供する。
【０００６】
本発明のさらに別の態様では、本発明の実施形態は、モバイル・デバイスであって、コンピュータ・プログラム命令を記憶するコンピュータ可読媒体と、コンピュータ可読媒体と結合されており命令を実行するデータ・プロセッサと、隣接するモバイル・デバイスとローカル・エリア・ワイヤレス接続され、データ・セットのある部分がそこからダウンロードされる遠隔サーバとワイヤレス接続されるように構成された通信回路とを備える、モバイル・デバイスを提供する。データ・プロセッサによるコンピュータ・プログラム命令の実行の結果として、データ・セットに対して計算タスクを実行するためのコストを推定する動作と、推定されたコストがしきい値コストよりも大きい場合には、少なくとも１つの他のモバイル・デバイスを用いてアドホック・ワイヤレス・ネットワークを形成する動作と、データ・セットの部分をモバイル・デバイスにダウンロードする動作であって、データ・セットのダウンロードされる部分は、少なくとも１つの他のモバイル・デバイスによってダウンロードされるデータ・セットの部分とは異なる、動作と、モバイル・デバイスにダウンロードされているデータ・セットの部分に対して、計算タスクを実行する動作と、計算タスクの結果を、モバイル・デバイスからアドホック・ワイヤレス・ネットワークの少なくとも１つの他のモバイル・デバイスへ、ワイヤレスに転送する動作と、少なくとも１つの他のモバイル・デバイスにダウンロードされたデータ・セットの部分に対して少なくとも１つの他のモバイル・デバイスによって実行された計算タスクの結果を、少なくとも１つの他のモバイル・デバイスからワイヤレスで受信する動作とを含む動作の実行が生じる。
【図面の簡単な説明】
【０００７】
【図１】本発明が実装され得るモバイル・デバイスのグループまたはソーシャル・グループの非限定的な例を示す図である。
【図２】本発明の実施形態の動作を示す論理流れ図である。
【図３】複数のモバイル・デバイスと冗長性を達成するために処理されるデータ・セットの重複部分のダウンロードとを示す図である。
【発明を実施するための形態】
【０００８】
導入として、本発明の実施形態に関係があり社会的なコンテキストで生じ得るモバイル・コンピューティングの２つの広く非限定的な例が、以下で説明される。
【０００９】
第１の例では、ある人が、一群の人々に向けて、プレゼンテーションを行うところである。プレゼンテーションのためのスライドはオンラインで入手可能であり、話し手は、聴衆に対して、複数のプレゼンテーション材料の間で行ったり来たりするという、より大きな自由を享受するために、それらのスライドをダウンロードすることを勧める。これらのスライドは、ワイヤレス接続経由でダウンロードするには重いリソースである可能性があり、さらには、聴衆である人々全員が、それらのスライドを、同じソースから同時にダウンロードしようとする可能性もあり得る。このダウンロードのシナリオは、結果的に、これらのスライドをダウンロードするために相当な量の時間を必要とし、時にはダウンロード・プロセスの間に失敗を経験して、ダウンロード・プロセスを最初からやり直すことを強いられる聴衆の多くの人の間に、フラストレーションを生じさせる可能性がある。さらに、ダウンロード時間が、聴衆を構成する人々と関連するモバイル・デバイスのためのバッテリ電力のかなりの量を消費し得る。
【００１０】
第２の例では、人々で構成されるチームの全員が、大規模なイメージ・データベース上で何らかのイメージ処理アプリケーションを動作させること（または、何らかのコード・リポジトリと共に難読化アプリケーションを動作させること、または、文書セットを用いて、データマイニング・アプリケーションを動作させることなど）を求められ得る。このプロセスは、計算論的に、時間の点で、およびエネルギーの点で高価である可能性があり、かなりのエネルギーを消費するのと同時に、完了するのに相当な時間を要する。各人がアプリケーションの自らのローカル・コピーを動作させるから、チーム全体が、相当な長さの時間に及ぶ遅延を被ることになり得るし、チーム全体にわたるバッテリのエネルギー損失が最大化される。
【００１１】
これらの例は、計算負荷を共有することができれば非常に有益であろう多くのモバイル・コンピューティング状況の例証である。
【００１２】
本発明の実施形態は、社会的な設定においてモバイル・コンピューティングを最適化するための方法、装置およびコンピュータ・プログラムを提供する。社会的な設定とは、計算を実行し、少なくとも１つの遠隔サイトとの間だけではなく他のモバイル・デバイスとの間で双方向的通信が可能なモバイル・デバイスをそれぞれが有する２人またはそれより多くの人で構成されるグループであると考えられ得るが、ここで遠隔サイトとは、企業のサーバまたはクラウド・ベースのサーバすなわち処理されるべきデータがそこからダウンロード可能なサーバ、あるいはその両方などである。モバイル・デバイスの双方向的な通信能力を用いることによって、モバイル・デバイス・ノードで構成される一時的なアドホック・ネットワークが、少なくとも、それらのモバイル・デバイスの間で計算の責任を確立し、計算結果を共有するために、確立され得る。
【００１３】
モバイル・デバイスは、何らかの計算能力と、他のモバイル・デバイスおよび１つまたは複数の外部ネットワークとのインターフェース能力とを有する任意のタイプのデバイスであり得る。インターフェース能力は、１つまたは複数のタイプのワイヤレス通信能力に基づくのが好ましいが、全体的にまたは部分的にワイアード接続（たとえば、ケーブル）としても実装され得る。モバイル・デバイスの適切な例は、これらに限定されることはないが、ラップトップ・コンピューティング・デバイス、ノートブック・コンピューティング・デバイス、タブレット・コンピューティング・デバイス、スマートフォン、および、一般的に、同じまたはほぼ同じ能力を有する他のデバイスと（たとえば、無線周波数信号または光信号もしくはその両方を経由して）ワイヤレスで接続する能力を有していることが好ましい任意のタイプのコンピューティング・デバイスを含む。たとえば、アドホック・ネットワークを形成するワイヤレス・デバイスのグループまたは集まりは、１つまたは複数のラップトップ、１つまたは複数のタブレットおよび１つまたは複数のスマートフォンを含み得る。さらに、いくつかの状況では、少なくとも１つのモバイル・デバイスを用いてアドホック・ネットワークを形成するデバイスの１つまたは複数は、真の意味でモバイルではない場合があり得る。単なる一例であるが、あるプロジェクト・チームがプロジェクト・リーダの部屋で会議をしており、チームの構成員それぞれが関連するモバイル・デバイスを有している場合に、チーム・リーダのオフィス・デスクトップＰＣまたはワークステーションは、少なくともローカルなワイヤレス接続能力を有しており、存在しているすべてのデバイスの間に形成されているアドホック・ネットワークにおける１つのノードとしても機能し得る。
【００１４】
図１は、モバイル・デバイス１２のグループまたはソーシャル・グループ１０の非限定的な例を示している。この例では、２つのモバイル・デバイス１２Ａおよび１２Ｂが示されているが、実際には、３つまたはそれよりも多くのモバイル・デバイスが存在し得る。モバイル・デバイス１２Ａおよび１２Ｂは、同じタイプのデバイスであることが可能であるし、または、異なるタイプのデバイスでもかまわない。モバイル・デバイス１２Ａ、１２Ｂは、モバイル・デバイス１２Ａによって示されており、たとえば中央処理装置（ＣＰＵ）またはデータ・プロセッサ２０（たとえば、マイクロプロセッサ）を含む何らかの最小の機能を有すると仮定されるが、ここで、中央処理装置（ＣＰＵ）またはデータ・プロセッサ２０は、１つまたは複数のメモリ２２として具体化され得る１つまたは複数のコンピュータ可読媒体と接続されており、少なくとも１つのタイプのワイヤレス通信回路２４を伴う。一般的に、各モバイル・デバイス１２Ａ、１２Ｂは、ディスプレイ・スクリーン２６などの何らかのタイプのユーザ・インターフェース（ＵＩ）と、キーボードもしくはキーパッドもしくはタッチ感応画面、または、音声入力および認識システムあるいはそれら両方などのユーザ・データ入力２８とを含むと仮定され得る。
【００１５】
メモリ２２は、モバイル・デバイスの中に一体化するのに適する任意のタイプの１つまたは複数のメモリ・デバイスであり得る。メモリ２２は、モバイル・デバイス１２を動作させるのに必要とされるネイティブなソフトウェア２２Ａを記憶しており、また、本発明の実施形態に従って動作するように構成されている少なくとも１つのアプリケーション（ＡＰＰ）プログラムまたはソフトウェア２２Ｂを記憶していると仮定され得る。メモリ２２は、また、たとえばダウンロードされたデータを記憶し、計算の結果を記憶し、一時的な変数とダウンロードされたデータの計算／処理の間に必要とされる関連データとを記憶するための何らかのタイプのデータ・ストレージ２２Ｃを含むと仮定される。
【００１６】
ワイヤレス通信回路２４は、たとえば、Ｂｌｕｅｔｏｏｔｈ（商標）またはＷｉＦｉタイプの技術など、低電力、ショート・レンジ、ローカル・エリアの技術に基づき得る。いくつかの場合には、ワイヤレス通信回路２４は、また、セルラ無線トランシーバならびに関連の回路およびソフトウェアなど、より長いレンジでより広いエリアのワイヤレス技術も含み得る。
【００１７】
モバイル・デバイス１２Ａ、１２Ｂは、ローカルな双方向ワイヤレス・リンク１４Ａを経由するデバイス相互間通信能力と、同じまたは別のワイヤレス・リンク１４Ｂを経由して少なくとも１つのアクセス・ポイント（ＡＰ）３０に接続する能力とを有すると仮定されるが、後者の接続能力は、さらに、１つまたは複数のネットワーク３２を経由して少なくとも１つの遠隔サーバ３４およびデータ・ストレージ３６への接続を提供する。遠隔サーバ３４およびデータ・ストレージ３６は、法人企業など何らかの企業における物理的な例があり得るし、または、仮想化され、コンピューティング・クラウド３８に存在することもあり得る。いくつかの例示的な実施形態では、デバイス相互間のリンク１４ＡはＢｌｕｅｔｏｏｔｈ（商標）リンクであり得、また、リンク１４ＢもローカルなＡＰ３０（たとえば、モバイル・デバイス１２Ａ、１２Ｂと同じ物理空間に配置されているもの）へのＢｌｕｅｔｏｏｔｈ（商標）リンクであり得る。いくつかの他の例示的な実施形態では、デバイス相互間のリンク１４ＡはＢｌｕｅｔｏｏｔｈ（商標）リンクであり得、リンク１４Ｂはセルラ・リンクまたは何らかの他のタイプのワイド・エリアＲＦリンクであり得る。この場合、ＡＰ３０は、セルラまたは他のタイプの基地局であり得る。
【００１８】
本発明の実施形態の例は、どのような特定のタイプのモバイル・デバイスと共に用いられることにも限定されず、図１に示されている実施形態は、本発明の実施形態が実現され得る適切な技術的コンテキストの非限定的な例として提供されているに過ぎない、ということが理解されるべきである。
【００１９】
本発明の１つの態様は、一般的に、および特に企業や他のタイプの大規模な組織において、多くの共通の状況が存在するような実現例であって、そのような場合には、複数の人間が共通の処理タスク（ＩＯに限界があるもしくはＣＰＵに限界がある、または、その両者）を有しているのであるが、パフォーマンス（たとえば、プロセスの動作時間）およびエネルギー消費の両方について、異なる複数のモバイル・デバイス１２の全体にわたって処理タスクワークロードを共有することによって、全体的なプロセスを最適化することができる。
【００２０】
このタイプの取り決めは、共有されているデータおよび計算に関して、異なる複数の個人の間で信頼に関する何らかの観念が存在していることを意味し、さらに、与えられた処理タスクに関して、ある程度の相互的な自己利益を意味し得る。ある場合には、これらの基準は、それらの個人が既に社会的関係を有し、相互に知り合いであり、相互を信頼しているという社会的事情によって満たされ得る。たとえば、ある一定のユーザと関連するデバイス１２は、そのユーザの同僚、友人、関係者などと関連しており「信頼されている」デバイスを表すと仮定され得る他のデバイスを識別する、アドレスもしくは連絡先または他のタイプのリストを含み得る。他の場合には、これらの基準の少なくともいくつかは、それらの個人のモバイル・デバイス１２の間で交換される、またはそうでなければそれらのモバイル・デバイス１２に共通する認証トークンの使用によって満たされ得る。この認証トークンは、これらの個人全員が出席している会議を保護するパスコードなどの、任意のタイプのトークンであり得る。認証トークンを用いることにより、データに対する何らかのタイプの調整がなされた計算タスクを実行する目的でアドホック・ネットワークを形成する前に、これらの個人が、いずれかのタイプのアプリオリな社会的関係を有することの必要性がまったくなくなる。
【００２１】
一般的な形式においては、本発明の実施形態の動作は、図２の論理流れ図によって例示される構造を有する。データ・プロセッサ２０による、モバイル・デバイス１２Ａおよび１２Ｂの他のコンポーネントと協調しての、メモリ２２に記憶されたアプリケーション・プログラム２２Ｂの１つまたは複数の実行により、様々なステップが、少なくとも部分的に実行されると仮定され得る。
【００２２】
ブロック２Ａ：必要とされる計算が識別されていると仮定して、計算を開始すると、計算のコストに関するおおよその推定がなされる。これは、それに限定されることはないが、時間経過に従って統計をトラッキングすることと、類似または関連する過去の計算からのコスト推定を外挿することと、ある一定の計算のための明示的な予め定義されたコスト・モデル（たとえば、ダウンロードされるリソースの１つまたは複数のサイズとＣＰＵを拘束する計算のための最大の入力サイズとに基づく）を用いることとを含む複数の方法により、行うことが可能である。一般的に、考慮されるコストは、時間、ビット当たりのコスト、利用可能な帯域幅、エネルギー消費など、１つまたは複数のパラメータを含み得る。
【００２３】
モバイル・デバイス１２Ａ、１２Ｂのすべてがこのステップを実行することは必ずしも必要なわけではない、ということが注意されるべきである。たとえば、実際には、このステップは、必要とされる計算を識別して可能性のある協力的な分散計算タスクの形成を開始する人に関するモバイル・デバイスなどである、あるモバイル・デバイスによって、実行され得る。便宜上、このモバイル・デバイスは、開始モバイル・デバイス（initiating mobile device）と称することがある。
【００２４】
ブロック２Ｂ：計算の推定されたコストがあるしきい値よりも小さい場合には、プロセスは停止することができて、データのダウンロードと必要とされる計算とが、個々のモバイル・デバイス１２によって、または、開始モバイル・デバイスによって、単純に実行され得る（ブロック２Ｃ）。このしきい値は、固定しきい値または可変しきい値であり得る。たとえば、３０分の会議が予定されている場合に、データのダウンロードと結果的な計算について推定される時間コストが３分よりも短い場合には、モバイル・デバイスのノードの協力グループを形成しない、という決定がなされ得る。この例で、推定された時間コストが３分を超える場合には、モバイル・デバイス１２の協力グループを形成する、という決定がなされ得る。
【００２５】
ブロック２Ｄ：推定されるコストがしきい値よりも大きい場合には、隣接するモバイル・デバイス１２を求めて、すなわち、開始モバイル・デバイスの近傍にある他の計算ノードを求めて、サーチがなされる。他の計算ノードとは、開始モバイル・デバイスと社会的に関係している他のモバイル・デバイス１２であるか、または、モバイル協力への参加の勧誘が送られ得る近傍にある任意の他のモバイル・デバイス１２であり得る。このステップは、従来型のソーシャル・ネットワークによって露出されている任意のアプリケーション・プログラム・インターフェース（ＡＰＩ）を、現在のデバイスのユーザの識別子との関係で活用することによって、達成され得る。このステップは、また、妥当な隣接するモバイル・デバイス１２を見付けるために特別のプロトコルを（ＴＣＰ−ＩＰもしくはＢｌｕｅｔｏｏｔｈ（商標）または他の低レベルのプロトコルの上に）構築することによっても、達成され得る。
【００２６】
このステップは、各モバイル・デバイスによって自律的に実行され得るということ、すなわち、各モバイル・デバイスは、独立にコストを計算し、そのコストをしきい値と比較し、コストがしきい値を超える場合には、隣接するモバイル・デバイス１２のサーチを開始することができる、ということに注意すべきである。
【００２７】
ブロック２Ｂにおける決定の一部として、特定の計算がモバイル・デバイス１２の間で共有され得るまたは分割され得るかどうかをチェックするために、ハンドシェーク・プロトコルを用いることが可能である。モバイル・デバイス１２の間で交換されるメッセージは、たとえば、（ｉ）実行される計算アプリケーションの識別子、（ｉｉ）処理されるデータの一意的な識別子、および（ｉｉｉ）計算において各デバイスが引き受ける点（識別されたデータのどの部分またはチャンクが各モバイル・デバイスに割り当てられるか）を含み得る。どのような理由であっても、特定の計算の共有または分割が不可能であるという決定がなされる場合には、制御は、単純に、ブロック２Ｃに移動し、必要とされる計算が、各モバイル・デバイス１２によって個別的に、または、計算の結果をローカル・リンク１４Ａ経由で認証された近傍のモバイル・デバイス１２と共有する開始モバイル・デバイス１２だけによって、実行され得る。
【００２８】
モバイル・デバイス１２のアドホック・ネットワークを構築するということは、近接するデバイス１２が有効なトークンを提示可能であり、したがって、デバイス１２の協力グループへの参加が受け入れられたと考えられ得ることを保証するために、認証トークンを交換することを含み得ることがわかり得る。特定のデバイスが有効な認証トークンを提示できない場合には、その特定のデバイスは、潜在的な協力デバイス１２のプールから除去され得る。
【００２９】
このステップは、ユーザのデバイスが、デバイス１２の協力グループへの参加のリクエストが受信されたことをＵＩ経由でユーザに知らせ、よって、そのリクエストを手動で受け入れるまたは断る機会をユーザに与えるということを含み得ることがわかり得る。たとえば、あるユーザが、ほとんどバッテリ切れ状態にあることがあり得るが、デバイスが有する残りのバッテリ電力を節約するために、そのリクエストを単に断ることがあり得る。
【００３０】
ブロック２Ｅ：計算を共有するために、１つまたは複数の他のデバイス１２との間で合意に至りつつある場合には、サーバが対処するコンテンツ・ダウンロード分散ネットワークが、そのようにして形成されたアドホック・ネットワークのノードの間に確立される。各デバイスは、データのその識別された部分をダウンロードし、データのその識別された部分に対して識別された計算アプリケーションを実行して、計算の結果を他のデバイス１２に分散する。識別された計算アプリケーションは、そのモバイル・デバイスに既に存在していない場合には、同じようにダウンロードされ得る。このステップが終了すると、デバイス１２の協力グループの各デバイスは、メモリ２２の部分２２Ｃに、データ・セットの全体に対する計算の完全な結果を記憶している。
【００３１】
ステップ２Ｅの計算部分は、アプリケーションに応じて複雑な場合または些細な場合があり得る、ということが指摘される。たとえば、ある可能性があるシナリオでは、モバイル・デバイス１２は、それぞれが、大きなデータ・セットの区分または部分（チャンク）をダウンロードし、各モバイル・デバイス１２によって実行される計算は、ダウンロードされたチャンクに対する統計解析プログラムの実行を含み得る。しかし、別のシナリオでは、上で概説した場合のように、個々のモバイル・デバイス１２は、それぞれが、大きなデータ・セット（たとえば、ｙ枚のプレゼンテーション・スライドの組からの、ｘをｘ＜ｙである何らかの数字であるとして、ｘ枚のプレゼンテーション・スライドなど）のある部分をダウンロードすることがあり、それらは、アドホック・ネットワーク・グループの他のモバイル・デバイス・ノードと共有されることにより、グループの各モバイル・デバイス１２は、モバイル・デバイスのディスプレイ・スクリーン２６を経由して、それぞれのユーザへのプレゼンテーションのために完全なセットのスライドを有することになる。この場合、ダウンロード・フェーズの後で各デバイスによって実行される計算タスクは、単に、そのデバイスが正しい枚数のスライドを正しく受信したことを確認することであり得、計算タスクの結果を分散させることは、アドホック・ネットワークの他の構成要素であるノードの全部に、受信されたスライドの組をワイヤレスに単に転送することであり得る。アドホック・ネットワーク経由でのスライドの転送は、たとえばＢｌｕｅｔｏｏｔｈ（商標）プロトコルなどの効率的なプロトコルの上で達成され得る。
【００３２】
いったんモバイル・コンピューティング・ノードのアドホック・ネットワークが確立されると、どのようなタイプの集中制御もしくは管理ノードまたは機能に対する必要性も存在しないが、その理由は、個々の計算ノードが、自律的に動作して、データをダウンロードし、データを処理し、処理の結果を他のモバイル・コンピューティング・ノードに分散させることができるからである、ということに注意してほしい。このプロセスが終了すると、アドホック・ネットワークは、単純に、取り壊され、なくなる。
【００３３】
本発明の使用の一例は、既に上で概説したように、（たとえば、同じ会議室に座っている）会議における複数の参加者が、大きな文書をダウンロードすることに関する。この状況では、コスト推定（ステップ２Ａ）は、文書サイズを考慮し得る。この例では、（たとえば、スマートフォン、タブレット、ラップトップなどの）異なるモバイル・デバイス１２のそれぞれが、たとえば、何らかの職業的なソーシャル・ネットワーク（企業または法人のソーシャル・ネットワークなど）に関する社会的関係による実施形態において、ダウンロードのコストを共有する近接するデバイス１２のサーチを開始するのであり、これにより、情報漏れなどに関係するセキュリティ上の脅威が存在しないことが、保証される。
【００３４】
あるいは、別の実施形態では、異なるモバイル・デバイス１２の間で、それらのモバイル・デバイス１２のユーザの間で存在し得るいかなる先行する職業的または社会的関係も考慮することなく、認証トークンが交換され得る。有効な認証トークンが提示される限りは、そのトークンを提示しているモバイル・デバイス１２は、データをダウンロードし、そのデータに対して１つまたは複数の動作を実行することを確信されている認証済のモバイル・デバイスであると見なされ得る（ここで、１つまたは複数の動作は、それぞれのダウンロードされた部分を、アドホック・ネットワークの他のモバイル・デバイス１２に分散させることだけからも構成され得る）
【００３５】
従来型のダウンロード・アルゴリズム（たとえば、ウェブ・ブラウザに実装されている）は、大量のデータ・リソースをチャンクとしてダウンロードして、ダウンロードの途中で接続が断絶し、最初から再度始めるのではなくて再開される場合のように、それらのチャンクを後で組み合わせることができる。このアプローチは、異なるデバイス１２の間でのプロトコルの共有を実装するのに用いられ得る。遠隔データの異なるチャンクがローカルに取得された後では、効率的なローカルな転送プロトコル（Ｂｌｕｅｔｏｏｔｈ（商標）など）が、すべてのチャンクを、各共有グループ内のすべてのデバイス１２の間で迅速に分散することができる。結果は、エネルギー・コストも最適化しながらの高速ダウンロード・プロセスである。
【００３６】
モバイル・デバイス１２の一時的なアドホック・ネットワークでは、デバイスのうちの１つがネットワークを去ることがあり得る。たとえば、ユーザが、単に、モバイル・デバイスを、他のモバイル・デバイス１２の通信レンジではない場所まで運ぶことがあり得るし、または、モバイル・デバイス１２のうちの１つが、バッテリ電力を使い切ってしまうことがあり得る。このタイプの状況は、複数の方法で対処が可能である。たとえば、図３を参照して、８つのモバイル・デバイス（ＭＤ＿１〜ＭＤ＿８）がアドホック・ネットワークの中にあるという非限定的な例を考える。この例示的な場合には、たとえば、Ｃｈｕｎｋ＿１がＭＤ＿１およびＭＤ＿２にダウンロードされ、Ｃｈｕｎｋ＿２がＭＤ＿３およびＭＤ＿４にダウンロードされるなど、データ・セットが４つのチャンクに分割されて、４つのチャンクのそれぞれが８つのモバイル・デバイス１２のうちの２つにダウンロードされ、それら２つで操作されるように、データ冗長性を用いることが可能である。この場合、８つのモバイル・デバイス１２のうちの任意の１つが、データ・ダウンロード・フェーズの間、計算フェーズの間、または結果の共有フェーズの間に、アドホック・ネットワークから切断される場合には、対応するデータ・チャンクのための結果データの処理されたセットは、冗長ペアの残りのモバイル・デバイス１２から他方のモバイル・デバイス１２に依然として利用可能となる。
【００３７】
代替的な解決策としては、データ・セットが８つのチャンクに分割され、８つのモバイル・デバイスＭＤ＿１〜ＭＤ＿８のそれぞれが、８つのチャンクの１つをダウンロードすることが考えられ得る。８つのモバイル・デバイス１２のうちの任意の１つが、データ・ダウンロード・フェーズの間、計算フェーズの間、または結果の共有フェーズの間に、切断される場合には、結果の共有フェーズの間に、結果的な１つのデータ・セットが行方不明となる。この場合、残りの７つのモバイル・デバイス１２のすべてが、対応するデータ・チャンクを、サーバ３４からダウンロードし、行方不明になっている結果的なデータ・セットを導くために、必要とされている動作を、そのデータ・チャンクに対して実行することができる。あるいは、残りの７つのモバイル・デバイス１２の１つが、対応するデータ・チャンクを、サーバ３４からダウンロードし（開始モバイル・デバイスなど）、行方不明になっている結果的なデータ・セットを導くために、必要とされている動作を、そのデータ・チャンクに対して実行し、結果的なデータを他の６つのモバイル・デバイス１２に分散させることができる。
【００３８】
冗長性が提供されるときには、アドホック・ネットワークの他のモバイル・デバイスの１つまたは複数から、重複する結果的なデータ・セットを受信するどのモバイル・デバイスも、受信した重複する結果的なデータ・セットを、単純に無視するまたは削除することができる。あるいは、重複する結果的なデータ・セットのうちの１つを削除する前に、それらが整合的であることを保証するために、そのモバイル・デバイスは、重複する結果的なデータ・セットを比較することができる。
【００３９】
当業者であれば理解するように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具体化され得る。したがって、本発明の態様は、全体がハードウェアである実施形態、全体がソフトウェアである実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアの態様およびハードウェアの態様を組み合わせる実施形態という形式を取り得、これらは、本明細書では、すべて一般的に、「回路」、「モジュール」または「システム」と称され得る。さらに、本発明の態様は、コンピュータ可読プログラム・コードが具体化される１つまたは複数のコンピュータ可読媒体において具体化される、コンピュータ・プログラム製品という形式を取り得る。
【００４０】
１つまたは複数のコンピュータ可読媒体の任意の組合せが用いられ得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、たとえば、これらに限定されることはないが、電子的、磁気的、光学的、電磁気的、赤外線、または半導体システム、装置、もしくはデバイスであり得るし、または上記の任意の適切な組合せでもあり得る。コンピュータ可読記憶媒体の、より具体的な例（非包括的なリスト）は、１つまたは複数のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能なプログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、光学記憶デバイス、磁気記憶デバイス、または、上記の任意の適切な組合せを含み得る。この文書のコンテキストでは、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによる使用のための、またはそれらに関係したプログラムを、収容する、または記憶することができる任意の有形な媒体であり得る。
【００４１】
コンピュータ可読信号媒体は、たとえば、ベースバンドにおいて、または搬送波の一部として、コンピュータ可読プログラム・コードが組み入れられている伝搬データ信号を含み得る。そのような伝搬信号は、これらに限定されることはないが、電磁気的、光学的、またはそれらの任意の適切な組合せを含む様々な形式のいずれかを取り得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、もしくはデバイスによる使用のための、またはそれらに関係したプログラムを、通信し、伝搬し、もしくは転送することができる任意のコンピュータ可読媒体であり得る。
【００４２】
コンピュータ可読媒体上で具体化されているプログラム・コードは、これらに限定されることはないが、ワイヤレス、ワイヤ線、光ファイバ・ケーブル、ＲＦなど、または上記の任意の適した組合せを含む任意の適切な媒体を使用して、伝送され得る。
【００４３】
本発明の態様についての動作を実行するためのコンピュータ・プログラム・コードは、１つまたは複数のプログラミング言語の任意の組合せとして書かれ得、プログラム言語には、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語などの従来の手続き型プログラミング言語、または同様のプログラミング言語が含まれる。プログラム・コードは、全体として単一のローカルなコンピュータ上で、一部をローカルなコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、一部をローカルなコンピュータおよび一部を遠隔コンピュータ上で、または、全体として遠隔コンピュータもしくはサーバ上で、実行することができる。後者のシナリオでは、遠隔コンピュータは、ＬＡＮもしくはＷＡＮを含む任意のタイプのネットワークを経由してローカルなコンピュータに接続され得るし、または、この接続は、外部のコンピュータ（たとえば、インターネット・サービス・プロバイダを用いてインターネット経由で）に対して行うことが可能である。
【００４４】
本発明の態様は、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して、説明されている。流れ図またはブロック図あるいはその両方の各ブロックと、流れ図またはブロック図あるいはその両方における複数のブロックの組合せとは、コンピュータ・プログラム命令によって実装され得ることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、流れ図またはブロック図あるいはその両方の１つもしくは複数のブロックにおいて特定されている機能／作用を実装するための手段を作成するように、汎用コンピュータ、特殊用途コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを生成することができる。
【００４５】
また、これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶されている命令が、流れ図またはブロック図あるいはその両方の１つもしくは複数のブロックにおいて特定されている機能／作用を実装する命令を含む製品を生成するように、コンピュータ可読媒体に記憶され、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の態様で機能するように命じることができる。
【００４６】
コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル装置上で実行される命令が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて特定されている機能／作用を実装するためのプロセスを提供するように、コンピュータによって実装されるプロセスを生成するべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置または他のデバイス上で一連の動作ステップを実行させることができる。
【００４７】
図面における流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能性のある実装形態のアーキテクチャ、機能性、および動作を示している。この点において、流れ図またはブロック図の各ブロックは、特定の論理機能を実装するための１つまたは複数の実行可能な命令を含むモジュール、セグメント、またはコードの一部を表し得る。いくつかの代替的な実装形態では、ブロックに記された機能が、図面に記された順序とは異なる順序で生じることがあることにも、また注意すべきである。たとえば、関係する機能に応じて、連続して示されている２つのブロックが、実際には、実質的に同時に実行されることもあり、または、ブロックは時に逆の順序で実行されることもある。ブロック図または流れ図あるいはその両方の各ブロック、およびブロック図または流れ図あるいはその両方の複数のブロックの組合せは、特定の機能もしくは作用を実行する特定用途向けのハードウェア・ベースのシステムによって、または、特定用途向けハードウェアとコンピュータ命令との組合せによって実装されることがあることにも注意すべきである。
【００４８】
本明細書で用いられる用語は、特定の実施形態を説明する目的のみを有し、本発明を限定することは意図されていない。本明細書で用いられている単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈が明確にそうではないことを示していない限り、複数形も含むことが意図されている。「含む」または「含んでいる」あるいはその両方の用語は、本明細書で用いられるときには、言及されている特徴、整数、ステップ、動作、要素、または構成要素、あるいはそれらすべての存在を特定するものであるが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループ、あるいはそれらすべての存在または追加を排除するものでないことが、さらに理解されるであろう。
【００４９】
添付の特許請求の範囲におけるすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、または均等物は、特に特許請求されているものとして、他の特許請求されている要素との組合せにおける機能を実行するための任意の構造、材料、または行為を含むことが意図されている。本発明に関する説明は、例証と説明との目的のためになされてきたが、網羅的であるまたは本発明を開示されている形式に限定することは意図されていない。当業者には、本発明の範囲と精神とから逸脱することなく、多くの修正および改変が明らかとなるであろう。実施形態は、本発明の原理と実際的な適用とを最良に説明するため、そして、当業者が、考慮される特定の使用に適したものとして様々な修正と共に様々な実施形態に関して本発明を理解することを可能にするように、選択され、記載された。
【００５０】
したがって、以上の説明を添付の図面および特許請求の範囲と共に読むことにより、様々な修正および適用が当業者には明らかになるであろう。いくつかの例として、他の同様のまたは均等な数学的表現が、当業者によって用いられ得る。しかし、本発明の教示に関するすべてのそのようなおよび同様の修正は、依然として、本発明の範囲に属するものである。
【図１】
0006385427.tif 000002
【図２】
0006385427.tif 000003
【図３】
0006385427.tif 000004