(58)【調査した分野】(Int.Cl.,DB名)
前記コンセンサスノードに対応する前記メッセージ処理デバイスによって送信される第2のブロードキャストメッセージを受信するステップであって、前記第2のブロードキャストメッセージは、前記別のコンセンサスノードに対応する前記メッセージ処理デバイスによってブロードキャストされる、ステップを更に含む、請求項1に記載の方法。
【発明を実施するための形態】
【0015】
本出願の実施形態は、メッセージをブロードキャストするための方法およびデバイスを提供する。
【0016】
当業者に本出願における技術的解決策をより良好に理解してもらうために、以下において、本出願の実施形態における添付の図面を参照して、本出願の実施形態における技術的解決策を明確にかつ包括的に説明する。明らかに、説明される実施形態は、本出願の実施形態のうちのいくつかに過ぎず、全てではない。本出願の実施形態に基づいて当業者によって創造的取り組みなしで得られる全ての他の実施形態は、本出願の保護範囲内にある。
【0017】
本出願の実施形態において提供される技術的解決策は、添付の図面を参照して以下に詳細に説明される。
【0018】
図1は、本出願の実施形態による、メッセージをブロードキャストするための方法を示すフローチャートである。メッセージをブロードキャストするための方法は、以下のステップを含む。
【0019】
S101.コンセンサスノードが、第1のブロードキャストメッセージを得る。
【0020】
本出願のこの実施形態において、コンセンサスノードは、ブロックチェーンネットワークにおけるサービスに対するコンセンサス検証に参加するブロックチェーンノードである。典型的なブロックチェーンネットワークにおいて、全てのブロックチェーンノードは、コンセンサスノードとしてコンセンサス検証に参加することができる。しかしながら、特殊なブロックチェーンネットワーク(例えば、コンソーシアムチェーンサブネットワークおよびパブリックチェーンサブネットワークを含むブロックチェーンネットワーク)では、全てのブロックチェーンノードがコンセンサスノードとしてコンセンサス検証に参加することができるわけではない。
【0021】
サービスハンドリングフェーズ、コンセンサス検証フェーズおよび他のフェーズにおいて、コンセンサスノードが互いにメッセージをブロードキャストまたは送信する必要があることが本出願の実施形態の適用シナリオである。
【0022】
サービスハンドリングフェーズは、特定のコンセンサスノードがサービスメッセージを受信し、このサービスメッセージを他のコンセンサスノードにブロードキャストし、全てのコンセンサスノードがサービスメッセージを受信するようにすることを意味する。これにより、サービスメッセージに対する後続のコンセンサス検証が容易になる。コンセンサス検証フェーズは、全てのコンセンサスノードが特定のコンセンサスアルゴリズムに準拠して、検証結果に対するコンセンサスに達するフェーズである。コンセンサス検証フェーズでは、全てのコンセンサスノードが互いに検証メッセージを送信してコンセンサスに達する必要がある。
【0023】
本出願のこの実施形態において、第1のブロードキャストメッセージはサービスメッセージ、検証メッセージ、または特定のコンセンサスノードによって別のコンセンサスノードにブロードキャストまたは送信されるメッセージとすることができる。
【0024】
本方法は任意のコンセンサスノードによって実行可能であることに留意することが有意義である。サービス処理フェーズにおいて、コンセンサスノードは、クライアントまたは非コンセンサスノードによって送信されたサービスメッセージを受信し、このサービスメッセージを、得られた第1のブロードキャストメッセージとして用いることができる。コンセンサス検証フェーズにおいて、コンセンサスノードは、サービスメッセージを検証した後に検証メッセージを生成し、この検証メッセージを、得られた第1のブロードキャストメッセージとして用いることができる。
【0025】
S102.コンセンサスノードは、コンセンサスノードに対応するメッセージ処理デバイスのための第1のスレッドを作成し、第1のスレッドを用いることによって、第1のブロードキャストメッセージをメッセージ処理デバイスに送信する。
【0026】
S103.コンセンサスノードは第1のスレッドをキャンセルする。
【0027】
本出願のこの実施形態において、コンセンサスノードは、第1のブロードキャストメッセージを、このコンセンサスノードに対応するメッセージ処理デバイスに送信し、第1のブロードキャストメッセージをブロードキャストまたは送信するタスクを、処理のためにこのコンセンサスノードに対応するメッセージ処理デバイスに完全にハンドオーバーすることができ、それによって、メッセージ処理デバイスが、別のコンセンサスノードのメッセージ処理デバイスが第1のブロードキャストメッセージの受信に成功することを確実にする。したがって、コンセンサスノードは、全ての他のコンセンサスノードが第1のブロードキャストメッセージを受信することを確実にするためにコンピューティングリソースを可能な限り多く消費する必要がない。
【0028】
図2は、メッセージをブロードキャストするための既存の方法を、本出願において提供されるメッセージをブロードキャストするための方法と比較する例を示す概略図である。
図2に示すように、コンセンサスノードに対応するメッセージ処理デバイスは、コンセンサスノードから独立したコンピューティングデバイスである。コンセンサスノード間のメッセージ交換は、コンセンサスノードに対応するメッセージ処理デバイスによってそれぞれ実行される。
【0029】
すなわち、コンセンサスノードは、このコンセンサスノードに対応するメッセージ処理デバイスのための第1のスレッドを作成することしか必要でなく、第1のスレッドを用いることによってコンセンサスノードに対応するメッセージ処理デバイスに第1のブロードキャストメッセージを送信した後、第1のスレッドを継続して維持するためにコンピューティングリソースを消費することなく、第1のスレッドをキャンセルすることができる。
【0030】
第1のスレッドは、コンセンサスノードに対応するメッセージ処理デバイスのためにコンセンサスノードによって作成されるスレッドであり、以下に説明される第2のスレッドは、メッセージ処理デバイスによって、別のコンセンサスノードに対応するメッセージ処理デバイスのために作成されるスレッドである。
【0031】
実際に、コンセンサスノードは、非同期呼技術を用いて、コンセンサスノードに対応するメッセージ処理デバイスに第1のブロードキャストメッセージを送信するのに用いられる第1のスレッドを作成する。第1のスレッドを用いることによって第1のブロードキャストメッセージを送信した後、コンセンサスノードは、メッセージ処理デバイスが第1のブロードキャストメッセージを受信するか否かを配慮することなく第1のスレッドを直接キャンセルすることができる。
【0032】
コンセンサスノードおよびこのコンセンサスノードに対応するメッセージ処理デバイスは、通例、異種ネットワーク内で分散していないことに留意することが有意義である。すなわち、コンセンサスノードと、このコンセンサスノードに対応するメッセージ処理デバイスとの間の情報交換は安定している。したがって、メッセージ処理デバイスは、通例、このメッセージ処理デバイスに対応するコンセンサスノードによって送信されるメッセージを1回で受信することに成功することができる。
【0033】
更に、第1のブロードキャストメッセージが、第1のブロードキャストメッセージをコンセンサスノードから対応するメッセージデバイスに送信するプロセスにおいて失われないことを完全に確実にするために、地域専用線を用いて、コンセンサスノードを、このコンセンサスノードに対応するメッセージ処理デバイスに接続し、コンセンサスノードと、このコンセンサスノードに対応するメッセージ処理デバイスとの間に存在し得るネットワーク妨害を可能な限り回避することができる。
【0034】
コンセンサスノードに対応するメッセージ処理デバイスに、メッセージをブロードキャストするように命令することに加えて、コンセンサスノードは、このコンセンサスノードに対応するメッセージ処理デバイスを用いることによって、別のコンセンサスノードによってブロードキャストされるメッセージを更に受信することができる。
【0035】
特に、コンセンサスノードは、このコンセンサスノードに対応するメッセージ処理デバイスによって送信される第2のブロードキャストメッセージを受信することができる。第2のブロードキャストメッセージは、別のコンセンサスノードに対応するメッセージ処理デバイスによってブロードキャストされる。メッセージ処理デバイスは、別のコンセンサスノードに対応するメッセージ処理デバイスによってブロードキャストされる第2のブロードキャストメッセージを受信し、次に、第2のブロードキャストメッセージをコンセンサスノードに送信することができる。
【0036】
第1のブロードキャストメッセージおよび第2のブロードキャストメッセージの双方が、コンセンサスノードによってブロードキャストされるブロードキャストメッセージであり、第1のブロードキャストメッセージおよび第2のブロードキャストメッセージの双方が、サービスメッセージ、検証メッセージ等であり得ることに留意することが有意義である。
【0037】
S104.メッセージ処理デバイスは、他の各コンセンサスノードに対応するメッセージ処理デバイスのための第2のスレッドを作成し、第2のスレッドを用いることによって、第1のブロードキャストメッセージを、別のコンセンサスノードに対応するメッセージ処理デバイスに送信する。
【0038】
S105.メッセージ処理デバイスが、別のコンセンサスノードに対応するメッセージ処理デバイスが第1のブロードキャストメッセージを受信するとの判断に応じて、第2のスレッドをキャンセルする。
【0039】
既存の技術において、コンセンサスノードは、メッセージのブロードキャストを担当する。コンセンサスノードは、このコンセンサスノードのコンピューティングリソースを占有するスレッドを作成し、このスレッドを用いて、このコンセンサスノードによってブロードキャストされたメッセージを全ての他のコンセンサスノードが受信することを可能な限り確実にする。
【0040】
本出願のこの実施形態では、コンセンサスノードは、このコンセンサスノードに対応するメッセージ処理デバイスに第1のブロードキャストメッセージを送信することしか必要でない。コンセンサスノードと独立したコンピューティングデバイスとして、メッセージ処理デバイスは、メッセージのブロードキャストを独立して担当することができる。したがって、コンセンサスノードは解放され、それによって、コンセンサスノードは、限られたコンピューティングリソースを、コンセンサス検証機能をより効率的に行うことに集中させることができる。
【0041】
本出願のこの実施形態では、メッセージ処理デバイスは、他の各コンセンサスノードに対応するメッセージ処理デバイスのための第2のスレッドを作成し、メッセージ処理デバイスのコンピューティングリソースを消費するこの第2のスレッドを用いて、他の各コンセンサスノードに対応するメッセージ処理デバイスが第1のブロードキャストメッセージの受信に成功することの確認を待機する。
【0042】
特に、メッセージ処理デバイスは、他の各コンセンサスノードに対応するメッセージ処理デバイスのために作成された第2のスレッドを用いることによって、他の各コンセンサスノードに対応するメッセージ処理デバイスに第1のブロードキャストメッセージを送信し、受信した応答信号の数をカウントし、ここで、応答信号は、別のコンセンサスノードに対応するメッセージ処理デバイスによって、第1のブロードキャストメッセージの受信後に返され、受信した応答信号のカウント数が特定値以上になるまで、カウント数が特定値よりも小さいとの判断に応答して、各第2のスレッドを用いることによって第1のブロードキャストメッセージを再送する。ここで、特定値は、0よりも大きい整数である。特定値は構成可能である。より高い特定値は、より多くのコンセンサスノードが第1のブロードキャストメッセージを受信すること、したがってコンセンサスノードがより高い成功率でメッセージをブロードキャストすることを確実にすることができる。特定値は、本出願では具体的に限定されない。
【0043】
更に、カウント数が特定値未満である場合、メッセージ処理デバイスは、前回カウントされた受信応答信号の総数が特定値以上になるまで、応答信号を返さないメッセージ処理デバイスに対応する第2のスレッドを用いて、応答信号を返さないメッセージ処理デバイスへの第1のブロードキャストメッセージの送信を継続することができる。代替的に、メッセージ処理デバイスは、次回カウントされる受信応答信号の数が特定値以上になるまで、全ての第2のスレッドを用いることによって全ての他のメッセージ処理デバイスに第1のブロードキャストメッセージを再び送信してもよい。
【0044】
更に、メッセージ処理デバイスが第2のスレッドを用いることによって指定の回数にわたって別の特定のメッセージ処理デバイスに第1のブロードキャストメッセージを送信した後、メッセージ処理デバイスが、第2のスレッドを用いることによって、別のメッセージ処理デバイスによって返された応答信号を依然として受信しない場合、メッセージ処理デバイスは、別のメッセージ処理デバイスへの第1のブロードキャストメッセージの送信を停止することができる。指定された期間の後、メッセージ処理デバイスは、別のメッセージ処理デバイスへの第1のブロードキャストメッセージの送信を継続する。
【0045】
例えば、メッセージ処理デバイスは、まず、第1のブロードキャストメッセージを他のメッセージ処理デバイスにブロードキャストすることができ、次に、応答信号を返さない別のメッセージ処理デバイス(すなわち、第1のブロードキャストメッセージの受信に失敗したメッセージ処理デバイス)を特定し、次に、第1のブロードキャストメッセージの受信に失敗したメッセージ処理デバイスに第1のブロードキャストメッセージを再送することができる。これらの動作は繰り返される。メッセージ処理デバイスは、第1のブロードキャストメッセージを同じ別のメッセージ処理デバイスに3回繰り返し送信した後、解決されるべき一時的送信問題があることを示す(この問題は、第1のブロードキャストメッセージの受信に失敗したメッセージ処理デバイスの故障に起因して、または大きなネットワーク障害に起因して生じ得る)。したがって、メッセージ処理デバイスは、まず、別のメッセージ処理デバイスへの第1のブロードキャストメッセージの送信を停止し、次に、(送信問題が解決された場合がある)長い時間待機した後、別のメッセージ処理デバイスへの第1のブロードキャストメッセージの送信を継続する。
【0046】
本出願のこの実施形態では、メッセージ処理デバイスは、他の各コンセンサスノードに対応するメッセージ処理デバイスが第1のブロードキャストメッセージを受信することを確実にした後にのみ第2のスレッドをキャンセルする。メッセージ処理デバイスが、他の各コンセンサスノードに対応するメッセージ処理デバイスが第1のブロードキャストメッセージを受信することを確実にするために、遅延送達および補償送達(メッセージを受信するのに失敗した対象が、メッセージの補償を能動的に要求する)等の様々なメッセージ送達ポリシを使用可能であることに留意することが有意義である。メッセージ処理デバイスによって用いられるメッセージ送達ポリシは、本出願では具体的に限定されない。
【0047】
上記の説明から、メッセージ処理デバイスは、実際に、他の各コンセンサスノードに対応するメッセージ処理デバイスのために、他の各コンセンサスノードに対応するメッセージ処理デバイスに第1のブロードキャストメッセージを送信するのに用いられる1つの第2のスレッドを作成するための同期呼技術を用いることがわかる。第2のスレッドを用いることによって第1のブロードキャストメッセージを送信した後、メッセージ処理デバイスは、依然として、第2のスレッドを用いて、他の各コンセンサスノードに対応するメッセージ処理デバイスが第1のブロードキャストメッセージを受信することの確認を待機する。他の各コンセンサスノードに対応するメッセージ処理デバイスが第1のブロードキャストメッセージを受信するのに失敗した場合、メッセージ処理デバイスは、第2のスレッドを用いることによって、他の各コンセンサスノードに対応するメッセージ処理デバイスに第1のブロードキャストメッセージを再送する。第2のスレッドは、他の各コンセンサスノードに対応するメッセージ処理デバイスが、第1のブロードキャストメッセージを確実に受信するまで、または送信停止条件がトリガされるまでの場合にだけ、キャンセルされる。
【0048】
S106.別のコンセンサスノードに対応するメッセージ処理デバイスは、対応する別のコンセンサスノードに第1のブロードキャストメッセージを送信する。
【0049】
上記で説明したように、別のコンセンサスノードは、別のコンセンサスノードに対応するメッセージ処理デバイスを用いることによって、別のコンセンサスノードによってブロードキャストされたメッセージを受信することができる。
【0050】
図1に示すメッセージをブロードキャストするための方法によれば、1つのメッセージ処理デバイスが各コンセンサスノードに配分され、コンセンサスノード間でメッセージをブロードキャストする機能が、実施のためにメッセージ処理デバイスにハンドオーバーされる。特定のコンセンサスノードについて、コンセンサスノードに対応するメッセージ処理デバイスは、他の各コンセンサスノードに対応するメッセージ処理デバイスが、別のコンセンサスノードに対応するメッセージ処理デバイスがブロードキャストを受信するまでメッセージブロードキャスティングタスクを実行するためのスレッドを作成することができる。したがって、メッセージブロードキャスティングタスクを実行するためのスレッドは、コンセンサスノードのリソースを消費することなく、メッセージ処理デバイスのコンピューティングリソースのみを消費する。したがって、コンセンサスノードに対し負担が生じず、それによって、コンセンサスノードは、サービスに対するコンセンサス検証をより効率的に行うことができる。
【0051】
図1に示すメッセージをブロードキャストするための方法に基づいて、本出願の実施形態は、これに対応して、メッセージをブロードキャストするためのデバイスを更に提供する。
図3に示すように、メッセージをブロードキャストするためのデバイスは、第1のブロードキャストメッセージを得るように構成された取得モジュール301と、このデバイスに対応するメッセージ処理デバイスのための第1のスレッドを作成し、第1のスレッドを用いることによって、第1のブロードキャストメッセージをメッセージ処理デバイスに送信するように構成された送信モジュール302であって、それによって、メッセージ処理デバイスは、別のコンセンサスノードに対応するメッセージ処理デバイスに第1のブロードキャストメッセージを送信する、送信モジュール302と、第1のスレッドをキャンセルするように構成されたキャンセルモジュール303とを備える。
【0052】
デバイスは、地域専用線を用いることによってメッセージ処理デバイスに接続される。
【0053】
デバイスは、デバイスに対応するメッセージ処理デバイスによって送信される第2のブロードキャストメッセージを受信するように構成された受信モジュール304を更に含み、ここで、第2のブロードキャストメッセージは、別のコンセンサスノードに対応するメッセージ処理デバイスによってブロードキャストされる。
【0054】
図1に示すメッセージをブロードキャストするための方法に基づいて、本出願の実施形態は、これに対応して、メッセージをブロードキャストするための別のデバイスを更に提供する。
図4に示すように、メッセージをブロードキャストするためのデバイスは、デバイスに対応するコンセンサスノードによって送信される第1のブロードキャストメッセージを受信するように構成された第1の受信モジュール401と、他の各コンセンサスノードに対応するメッセージ処理デバイスのための第2のスレッドを作成し、第2のスレッドを用いることによって、第1のブロードキャストメッセージを別のコンセンサスノードに対応するメッセージ処理デバイスに送信するように構成された送信モジュール402と、別のコンセンサスノードに対応するメッセージ処理デバイスが第1のブロードキャストメッセージを受信するとの判断に応答して、第2のスレッドをキャンセルするように構成されたキャンセルモジュール403とを備える。
【0055】
キャンセルモジュール403は、各第2のスレッドを用いることによって、受信した応答信号の数をカウントし、ここで、応答信号は、別のコンセンサスノードに対応するメッセージ処理デバイスによって、第1のブロードキャストメッセージの受信後に返され、受信した応答信号のカウント数が特定値以上になるまで、カウント数が特定値よりも小さいとの判断に応答して、各第2のスレッドを用いることによって第1のブロードキャストメッセージを再送するように構成され、ここで、特定値は、0よりも大きい整数である。
【0056】
デバイスは、別のコンセンサスノードに対応するメッセージ処理デバイスによってブロードキャストされる第2のブロードキャストメッセージを受信し、第2のブロードキャストメッセージをコンセンサスノードに送信するように構成された第2の受信モジュール404を更に備える。
【0057】
1990年代には、技術における改良が、ハードウェアにおける改良(例えば、ダイオード、トランジスタまたはスイッチ等の回路構造における改良)であるか、またはソフトウェアにおける改良(メソッドプロシージャにおける改良)であるかは、明らかに区別可能である。しかしながら、技術の発展にともない、現在における多くのメソッドプロシージャの改良は、ハードウェア回路構造における直接改良とみなされることができる。ほぼ全ての設計者は、ハードウェア回路内に改良されたメソッドプロシージャのプログラミングを行い、対応するハードウェア回路構造を得る。したがって、メソッドプロシージャは、ハードウェアエンティティモジュールを用いることによって改良することができる。例えば、プログラマブルロジックデバイス(PLD)(例えば、フィールドプログラマブルゲートアレイ(FPGA))は、そのような集積回路であり、PLDの論理関数は、ユーザによってデバイスプログラミングを通じて決定される。設計者は、チップ製造業者に特定用途向け集積回路チップを設計し、製造するように依頼する必要なく、デジタルシステムをPLDに「集積する」ようにプログラミングを行う。更に、現在、このタイプのプログラミングは、集積回路チップを手動で製造する代わりに、多くの場合、「ロジックコンパイラ」ソフトウェアを使用することにより実施される。「ロジックコンパイラ」ソフトウェアは、プログラムを開発し、書き込むために使用されるソフトウェアコンパイラに類似している。元のコードは、コンパイルされる前に、特定のプログラミング言語で書き込まれる必要がある。言語は、ハードウェア記述言語(HDL)と称される。アドバンストブール演算式言語(ABEL)、Alteraハードウェア記述言語(AHDL)、Confluence、Cornell Universityプログラミング言語(CUPL)、HDCal、Javaハードウェア記述言語(JHDL)、Lava、Lola、MvHDL、PALASM、およびRubyハードウェア記述言語(RHDL)等の、多くのHDLがある。超高速集積回路ハードウェア記述言語(VHDL)およびVerilogは、現在最も一般的に使用されている。また当業者は、上記のいくつかのハードウェア記述言語を使用することによって、メソッドプロシージャが論理的にプログラミングされ、集積回路内にプログラミングされるならば、ロジックメソッドプロシージャを実装するハードウェア回路が容易に得られることを理解するべきである。
【0058】
コントローラは、任意の適切な方式において実装されることができる。例えば、コントローラは、マイクロプロセッサ、プロセッサ、マイクロプロセッサもしくはプロセッサにより実行可能なコンピュータ可読プログラムコード(ソフトウェアまたはファームウェア等)を格納するコンピュータ可読媒体、論理ゲート、スイッチ、特定用途向け集積回路(ASIC)、プログラマブルロジックコントローラ、または埋め込み型マイクロプロセッサの形態をとることができる。コントローラの例は、限定ではないが、次のマイクロプロセッサ、すなわち、ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20、およびSilicone Labs C8051F320を含む。代替的に、メモリコントローラは、メモリの制御ロジックの一部として実装されてもよい。また、当業者は、コンピュータ可読プログラムコードを用いることによってコントローラを実施することに加えて、方法ステップを、コントローラが論理ゲート、スイッチ、特定用途向け集積回路、プログラマブルロジックコントローラ、または埋め込み型マイクロコントローラの形態で同じ機能を実施することを可能にするように論理的にプログラムすることができることもわかる。したがって、コントローラは、ハードウェアコンポーネントとみなされることができ、コントローラに含まれ、様々な機能を実施するように構成されたデバイスは、ハードウェアコンポーネント内の構造とみなされることもできる。代替的に、様々な機能を実施するように構成されたデバイスは、方法を実装するためのソフトウェアモジュール、およびハードウェアコンポーネント内の構造の両方とみなされてもよい。
【0059】
上記の実施形態において示されるシステム、デバイス、モジュールまたはユニットは、コンピュータチップもしくはエンティティを用いることによって、または特定の機能を有する製品を使用することによって特に実装することができる。典型的な実施デバイスはコンピュータである。特に、コンピュータは、例えば、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラフォン、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メールデバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスのうちの任意のものの組合せとすることができる。
【0060】
説明を簡単にするために、上記のデバイスは、このデバイスを機能に基づいて様々なユニットに分割することによって説明される。確かに、本出願を実施するときに、ユニットの機能は、1つまたは複数のソフトウェアおよび/またはハードウェアにおいて実施することができる。
【0061】
当業者は、本開示の実施形態を方法、システムまたはコンピュータプログラム製品として提供することができることを理解するべきである。したがって、本開示は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、またはソフトウェアとハードウェアを組み合わせる実施形態の形態を用いることができる。加えて、本開示は、コンピュータ利用可能プログラムコードを含む(限定ではないが、磁気ディスクストレージ、CD-ROM、光メモリ等を含む)1つまたは複数のコンピュータ利用可能ストレージ媒体において実施されるコンピュータプログラム製品の形態を用いることができる。
【0062】
本開示は、本開示の実施形態による方法、デバイス(システム)およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照しながら説明される。コンピュータプログラム命令を用いて、フローチャートの各プロセスおよび/またはブロック図の各ブロックならびにフローチャートのプロセスおよび/またはブロック図のブロックの組合せを実施可能であることに留意することが有意義である。これらのコンピュータプログラム命令を、マシンを生成するために汎用コンピュータ、専用コンピュータ、組み込みプロセッサまたは別のプログラマブルデータ処理デバイスのプロセッサに対して提供することができ、それによって、コンピュータまたは別のプログラマブルデータ処理デバイスのプロセッサによって実行される命令は、フローチャートの1つまたは複数のプロセスおよび/またはブロック図の1つまたは複数のブロックにおける特定の機能を実現するためのデバイスを生成する。
【0063】
代替的に、これらのコンピュータプログラム命令は、特定の方法で作動するようにコンピュータまたは別のプログラマブルデータ処理デバイスに命令することができるコンピュータ可読メモリに格納されてもよく、それによって、コンピュータ可読メモリに格納された命令は、命令デバイスを含むアーチファクトを生成する。命令デバイスは、フローチャートの1つまたは複数のプロセスおよび/またはブロック図の1つまたは複数のブロックの特定の機能を実施する。
【0064】
代替的に、これらのコンピュータプログラム命令は、コンピュータまたは別のプログラマブルデータ処理デバイスにロードされてもよく、それによって、一連の動作およびステップは、コンピュータまたは別のプログラマブルデバイスにおいて実行され、これによって、コンピュータ実施処理が生成される。したがって、コンピュータまたは別のプログラマブルデバイスにおいて実行される命令は、フローチャートの1つまたは複数のプロセスおよび/またはブロック図の1つまたは複数のブロックの特定の機能を実現するためのステップを提供する。
【0065】
典型的な構成において、コンピューティングデバイスは、1つまたは複数のプロセッサ(CPU)と、1つまたは複数の入力/出力インターフェースと、1つまたは複数のネットワークインターフェースと、1つまたは複数のメモリとを備える。
【0066】
メモリは、非持続的メモリ、ランダムアクセスメモリ(RAM)、不揮発性メモリ、および/または、コンピュータ可読媒体における別の形態のメモリ、例えばリードオンリーメモリ(ROM)またはフラッシュメモリ(フラッシュRAM)を含むことができる。メモリは、コンピュータ可読媒体の一例である。
【0067】
コンピュータ可読媒体は、任意の方法または技術を用いることによって情報を記憶することができる持続性、非持続性、可動、および非可動媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータとすることができる。コンピュータストレージ媒体の例は、限定ではないが、パラメータランダムアクセスメモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、別のタイプのランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、電気的に消去可能プログラム可能なリードオンリーメモリ(EEPROM)、フラッシュメモリもしくは別のメモリ技術、コンパクトディスクリードオンリーメモリ(CD-ROM)、デジタル多用途ディスク(DVD)もしくは別の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクメモリもしくは別の磁気ストレージデバイス、またはコンピューティングデバイスによりアクセス可能な情報を格納するために使用することができる任意の他の非伝送媒体を含む。本明細書の定義に基づき、コンピュータ可読媒体は、変調されたデータ信号および搬送波等の一時的なコンピュータ可読媒体(一時的媒体)を含まない。
【0068】
「含む」および「備える」という用語、ならびにそれらの任意の他の変化形は、非排他的包含を含むように意図され、それによって、要素のリストを含むプロセス、方法、システム、製品、またはデバイスが、それらの要素を含むだけでなく、明確に列挙されていない他の要素も含むか、またはそのようなプロセス、方法、製品、もしくはデバイスに固有の要素を更に含むことに更に留意することが有意義である。別途何らかの限定のない場合、「…を含む」が続く要素は、その要素を含むプロセス、方法、製品またはデバイスに更なる同一の要素が存在することを除外するものではない。
【0069】
当業者であれば、本出願の実施形態が方法、システム、またはコンピュータプログラム製品として提供され得ることを理解するべきである。したがって、本出願は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態として、またはソフトウェアおよびハードウェアを組み合わせた実施形態の形態を用いることができる。加えて、本出願は、コンピュータ使用可能プログラムコードを含む1つまたは複数のコンピュータ使用可能ストレージ媒体(磁気ディスクストレージ、CD-ROM、光メモリ等を含むが、これらに限定されるものではない)上で実装されるコンピュータプログラム製品の形態を用いてもよい。
【0070】
本出願は、コンピュータ、例えば、プログラムモジュールにより実行されるコンピュータ実行可能命令との一般的関連で説明することができる。一般に、プログラムモジュールは、特定のタスクを実行するために、または特定の抽象データ型を実装するために、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。代替的に、本出願は、分散コンピューティング環境において実施されてもよい。これらの分散コンピュータ環境において、タスクは、通信ネットワークを介して接続される遠隔処理デバイスにより実行される。分散コンピューティング環境において、プログラムモジュールは、ストレージデバイスを含むローカルおよびリモート双方のコンピュータ記憶媒体内に設置することができる。
【0071】
本明細書における例示的な実施形態は、漸次に説明される。実施形態の同一の、または同様の部分については、実施形態への相互参照を行うことができる。各実施形態は、他の実施形態との差異に焦点を当てている。特に、システムの実施形態は、方法の実施形態に基本的に類似しているため、簡単に説明される。関連部分については、方法の実施形態におけるいくつかの記載を参照することができる。
【0072】
上記の説明は本出願の実施形態に過ぎず、本出願を限定することは意図されていない。当業者であれば、本出願に対し様々な変更および変形を行うことができる。本出願の趣旨および原理から逸脱することなく行われる任意の変更、等価な置き換え、改良等が、本出願における特許請求の範囲の適用範囲内に入る。