以下、各図面に示す同一または類似の構成要素、部材、手順または信号には、すべての図面において同様の符号を付し、それによって重複する説明は適宜省略される。また、各図面の説明において重要でない一部部材は省略される。
インターネットを介したデータアクセスには、通常、ユーザが使用するユーザ端末(スマートフォン、タブレット、コンピュータなど)、当該ユーザ端末上で動作するアプリケーション(またはライストリーミングアプリケーションソフトウェアなどのアプリケーションソフトウェア)、および当該ユーザ端末と通信する当該アプリケーションのサーバ(またはアプリケーションサーバ)などが関与する。
ユーザは、クリック、タップ、またはスクロールの動作を伴うことがあるアプリケーションのユーザインターフェースを通じて、データ要求を開始することができる。そして当該要求は、当該ユーザ端末から当該サーバに送信される。その後、当該サーバは当該要求に応じた応答を当該ユーザ端末に送信し、データアクセスが完了する。
当該サーバの状態(負荷状態やその他健全性の状態など)によって、データアクセスが成功するか否かが決まる場合がある。当該サーバに過負荷を生じることなく、当該サーバのリソースを効率的かつ動的に利用できるアクセスメカニズムが望まれる。
図1は、本発明の一部の実施態様に基づくライブストリーミングシステム1の構成を示す概略図である。当該ライブストリーミングシステム1は、ストリーミングのストリーマー(ライバー、アンカー、配信者、ライブストリーマーとも呼ばれる)LVと視聴者(オーディエンスとも呼ばれる)AU(AU1、AU2...)に、リアルタイムで交流または通信するためのライブストリーミングサービスを提供する。図1に示すように、当該ライブストリーミングシステム1は、サーバ10と、ユーザ端末20と、ユーザ端末30(30a、30b...)を含む。一部の実施態様において、当該ストリーマーと視聴者は、集合的にユーザと呼ばれてもよい。当該サーバ10は、ネットワークNWに接続された、1以上の情報処理装置を含むことができる。当該ユーザ端末20、30は、例えば、スマートフォン、タブレット、ノートPC、レコーダー、携帯ゲーム機、ウェアラブル端末などのモバイル端末装置、あるいはデスクトップPCなどの据え置き型装置であってもよい。当該サーバ10、当該ユーザ端末20及び当該ユーザ端末30は、各種有線または無線ネットワークNWを介して相互に通信可能に接続される。
当該ライブストリーミングシステム1には、配信者LV、視聴者AU、及び当該サーバ10を管理する管理者(またはアプリプロバイダー、図示せず)が参加する。当該配信者LVは、自身のユーザ端末20でコンテンツを記録し、当該サーバ10に直接または間接的にアップロードすることにより、リアルタイムで当該コンテンツを配信する者である。当該コンテンツの例としては、当該配信者自身の歌、トーク、パフォーマンス、ゲームプレイ、その他あらゆるコンテンツであってもよい。当該管理者は、当該サーバ10上で当該コンテンツをライブストリーミングするためのプラットフォームを提供するとともに、当該配信者LVと当該視聴者AU間のリアルタイムの交流を仲介または管理する。当該視聴者AUは、自分のユーザ端末30で当該プラットフォームにアクセスし、所望のコンテンツを選択して視聴する。当該視聴者AUは、選択したコンテンツのライブストリーミング中に、当該ユーザ端末30を介してコメントや応援、贈り物の送信などの操作を実行する。当該コンテンツを配信している当該配信者LVは、それらのコメント、応援、または贈り物に対して応答してもよい。当該応答が、映像および(または)音声で当該視聴者AUに送信され、双方向のコミュニケーションが確立される。
「ライブストリーミング」という用語は、当該配信者LVのユーザ端末20で記録したコンテンツを、当該視聴者AUのユーザ端末30で実質的にリアルタイムに再生・視聴することを可能にするデータ伝送モードを指しても、そのような伝送モードにより実現されるライブブロードキャストを指してもよい。当該ライブストリーミングは、HTTPライブストリーミング、CMAF(Common Media Application Format)、WebRTC(Web Real-Time Communications)、RTMP(Real―Time Messaging Protocol)、MPEG DASHなどの既存のライブストリーミング技術を利用して実現されてもよい。ライブストリーミングには、当該配信者LVによるコンテンツの記録と同時に、当該視聴者AUが所定の遅延をもって当該コンテンツを視聴でき伝送モードを含む。当該遅延の長さについては、当該配信者LVと当該視聴者AUの交流が成立可能な程度の遅延であってもよい。なお、当該ライブストリーミングは、当該コンテンツの全記録データを一度当該サーバに格納し、その後ユーザの要求に応じて当該サーバから当該ユーザに提供する、いわゆるオンデマンド配信と区別される。
ここでいう「映像データ」とは、当該ユーザ端末20または30の撮像機能を用いて生成された画像データ(映像データとも呼ばれる)と、当該ユーザ端末20または30の音声入力機能を用いて生成された音声データとを含むデータを指す。当該映像データは、当該ユーザがコンテンツを視聴できるように、当該ユーザ端末20、30で再生される。一部の実施態様において、当該配信者のユーザ端末における映像データの生成と当該視聴者のユーザ端末における映像データの再生との間に、当該映像データに対して圧縮、展開、符号化、復号化、トランスコーディングなど、その形式、サイズ、またはデータの仕様を変更する処理が行われると想定される。しかし、そのような処理の前後で、当該映像データが表す当該コンテンツ(例えば、映像や音声)は実質的に変化しないため、本明細書においては、そのような処理後の当該映像データを、そのような処理前の当該映像データと同一ものと表現している。すなわち、当該配信者のユーザ端末で映像データが生成された後、当該サーバ10を介して当該視聴者のユーザ端末で再生される場合、当該配信者のユーザ端末で生成された当該映像データ、当該サーバ10を通過する当該映像データ、および当該視聴者のユーザ端末で受信して再生される当該映像データは、いずれも同一の映像データである。
図1に示す例において、当該配信者LVは、ライブストリーミングデータを提供する。当該配信者LVのユーザ端末20は、当該配信者LVの映像や音声を記録して当該ストリーミングデータを生成し、生成された当該データは当該ネットワークNWを介して当該サーバ10に送信される。同時に、当該ユーザ端末20は、当該配信者LVの記録された映像VDを当該ユーザ端末20のディスプレイに表示し、当該配信者LVが現在行っているライブストリーミングコンテンツを確認できるようにする。
当該プラットフォームに当該配信者LVのライブストリーミングを視聴することを要求した当該視聴者AU1、AU2のそれぞれのユーザ端末30a、30bは、当該ネットワークNWを介して当該ライブストリーミングに関連する映像データ(以下、「ライブストリーミングの映像データ」と呼ばれてもよい)を受信し、受信した当該映像データを再生して当該映像VD1、VD2をディスプレイに表示し、スピーカーから音声を出力する。当該ユーザ端末30a、30bでそれぞれ表示される映像VD1、VD2は、当該配信者LVの当該ユーザ端末20により撮像された映像VDと実質的に同じであり、当該ユーザ端末30a、30bで出力される音声は、当該配信者LVの当該ユーザ端末20で記録された音声と実質的に同じである。
当該配信者LVの当該ユーザ端末20での映像・音声の記録と、当該視聴者AU1、AU2の当該ユーザ端末30a、30bでの映像データの再生は、実質的に同時に行われる。当該視聴者AU1が、当該配信者LVにより提供される当該コンテンツに関するコメントを当該ユーザ端末30aに入力すると、当該サーバ10は当該コメントを配信者LVの当該ユーザ端末30aにリアルタイムで表示するとともに、当該視聴者AU1とAU2の当該ユーザ端末30aと30bにも当該コメントをそれぞれ表示する。当該配信者LVが当該コメントを読み、当該コメントに対応するトークを展開すると、そのトークの映像と音声が、それぞれ当該視聴者AU1、AU2のユーザ端末30a、30bに表示される。このインタラクティブな動作は、当該配信者LVと当該視聴者AU1間で会話が成立していると認識される。これにより、当該ライブストリーミングシステム1では、一方的なコミュニケーションではなく、双方向のコミュニケーションを可能にするライブストリーミングを実現する。
図2は、本発明の一部の実施態様に基づく、図1のユーザ端末30の機能と構成を示すブロック図である。当該ユーザ端末20は、当該ユーザ端末30と同じまたは類似した機能と構成を有する。図2の各ブロックと以降のブロック図は、ハードウェアがコンピュータのCPUや機械装置などの要素によって実現されてもよく、ソフトウェアがコンピュータプログラムなどによって実現されてもよい。機能ブロックは、これらの要素間の連携動作により実現されてもよい。したがって、これらの機能ブロックは、ハードウェアとソフトウェアの組み合わせによる多様な形態で実現され得ることが、当業者には理解されよう。
当該配信者LV及び当該視聴者AUは、当該ネットワークNWを介してダウンロードサイトからライブストリーミングアプリケーションプログラム(以下、ライブストリーミングアプリケーションという)をダウンロードし、当該ユーザ端末20、30にインストールしてもよい。あるいは、当該ライブストリーミングアプリケーションは、当該ユーザ端末20と30に予めインストールされていてもよい。当該ライブストリーミングアプリケーションが当該ユーザ端末20、30上で実行されると、当該ユーザ端末20、30は、当該ネットワークNWを介して当該サーバ10と通信し、各種機能を実装または実行する。以下、当該ライブストリーミングアプリケーションが実行されるユーザ端末20、30(CPUなどのプロセッサ)によって実装される機能を、当該ユーザ端末20、30の機能として説明する。これらの機能は、実際には、当該ユーザ端末20、30上で当該ライブストリーミングアプリケーションにより実現される。一部の実施態様において、これらの機能は、HTML(HyperText Markup Language)などのプログラミング言語で記述され、当該サーバ10から当該ネットワークNWを介して当該ユーザ端末20、30のウェブブラウザに送信され、当該ウェブブラウザにより実行されるコンピュータプログラムによって実現されてもよい。
当該ユーザ端末30は、配信ユニット100と視聴ユニット200を含む。当該配信ユニット100は、当該ユーザ(またはユーザ側)の映像と音声が記録された映像データを生成し、当該映像データを当該サーバ10に提供する。当該視聴ユニット200は、当該サーバ10から映像データを受信し、当該映像データを再生する。当該ユーザは、ライブストリーミングを行う際に、当該配信ユニット100を起動し、当該ユーザが映像を視聴する際に、当該視聴ユニット200を起動する。当該配信ユニット100が起動される当該ユーザ端末は、当該配信者の端末、すなわち、当該映像データを生成する当該ユーザ端末である。当該視聴ユニット200が起動される当該ユーザ端末は、当該視聴者の端末、即ち、当該映像データが再現され、再生される当該ユーザ端末である。
当該配信ユニット100は、撮像コントロールユニット102と、オーディオコントロールユニット104と、映像送信ユニット106と、配信者側UIコントロールユニット108を含む。当該撮像コントロールユニット102は、カメラ(図2に表示せず)に接続され、当該カメラで実行される撮像を制御する。当該撮像コントロールユニット102は、当該カメラからの画像データを取得する。当該オーディオコントロールユニット104は、マイク(図2に表示せず)に接続され、当該マイクからの音声入力を制御する。当該オーディオコントロールユニット104は、当該マイクから当該オーディオデータを取得する。当該映像送信ユニット106は、当該撮像コントロールユニット102により取得された当該画像データと、当該オーディオコントロールユニット104により取得された当該オーディオデータを含む映像データを、当該ネットワークNWを介して当該サーバ10に送信する。当該映像データは、当該映像送信ユニット106によりリアルタイムに送信される。すなわち、当該撮像コントロールユニット102と当該オーディオコントロールユニット104による当該映像データの生成と、生成された当該映像データの当該映像送信ユニット106による送信とは、実質的に同時に実行される。当該配信者側UIコントロールユニット108は、当該配信者のUI(ユーザインターフェイス)をコントロールする。当該配信者側UIコントロールユニット108は、ディスプレイ(図2に表示せず)に接続されてもよく、当該映像送信ユニット106により送信される当該映像データを再生することにより、当該ディスプレイに映像を表示する。当該配信者側UIコントロールユニット108は、操作オブジェクトや指示許諾オブジェクトを当該ディスプレイに表示し、当該オブジェクトをタップした当該配信者からの入力を受け付けてもよい。
当該視聴ユニット200は、視聴者側UIコントロールユニット202と、重ね合わせ情報生成ユニット204と、入力情報送信ユニット206を含む。当該視聴ユニット200は、当該ネットワークNWを介して当該サーバ10から、当該配信者、当該ユーザ端末30のユーザである視聴者、及び他の視聴者が参加する、ライブストリーミングに関連する映像データを受信する。当該視聴者側UIコントロールユニット202は、当該視聴者のUIを制御する。当該視聴者側UIコントロールユニット202は、ディスプレイとスピーカー(図2に表示せず)に接続され、受信した映像データを再生して、当該ディスプレイに映像を表示し、当該スピーカーから音声を出力する。当該映像が当該ディスプレイに出力され、当該音声が当該スピーカーから出力されている状態を「映像データが再生されている」状態と呼ぶことができる。当該視聴者側UIコントロールユニット202は、タッチパネル、キーボード、ディスプレイ等の入力手段(図2に表示せず)にも接続され、当該入力手段を介してユーザの入力を取得する。当該重ね合わせ情報生成ユニット204は、当該サーバ10からの映像データから生成された画像上に、所定のフレーム画像を重ねる。当該フレーム画像には、当該ユーザからの入力を受け付けるためのさまざまなユーザインターフェイスオブジェクト(以下、単に「オブジェクト」という)、当該視聴者により入力されたコメント、及び(または)当該サーバ10から取得した情報などが含まれる。当該入力情報送信ユニット206は、当該ネットワークNWを介して、当該視聴者側UIコントロールユニット202により取得された当該ユーザ入力を当該サーバ10に送信する。
図3に、本発明の一部の実施態様に基づく、図1の当該サーバ10の機能と構成を示すブロック図を示す。当該サーバ10は、配信情報提供ユニット302と、中継ユニット304と、贈り物処理ユニット306と、支払い処理ユニット308と、ストリームDB310と、ユーザDB312と、贈り物DB314を含む。
当該配信者側の当該ユーザ端末20から当該ネットワークNWを介してライブストリーミングの開始通知または要求を受信すると、当該配信情報提供ユニット302は、このライブストリーミングを識別するためのストリームIDと当該ライブストリーミングを行う配信者の配信者IDをストリームDB310に登録する。
当該配信情報提供ユニット302が、当該ネットワークNWを介して当該視聴者側の当該ユーザ端末30の当該視聴ユニット200からライブストリームに関する情報の提供要求を受信すると、当該配信情報提供ユニット302は、当該ストリームDB310から現在利用可能なライブストリームを取得または確認し、利用可能なライブストリームのリストを作成する。当該配信情報提供ユニット302は、作成したリストを当該ネットワークNW経由で要求元の当該ユーザ端末30に送信する。要求元の当該ユーザ端末30の当該視聴者側UIコントロールユニット202は、受信したリストに基づいてライブストリーム選択画面を生成し、当該ユーザ端末30のディスプレイ上に表示する。
当該ユーザ端末30の当該入力情報送信ユニット206が、当該ライブストリーム選択画面上で当該視聴者の選択結果を受信すると、当該入力情報送信ユニット206は、選択されたライブストリームのストリームIDを含む配信要求を生成し、当該ネットワークNWを介して当該サーバ10に当該要求を送信する。当該配信情報提供ユニット302は、要求元の当該ユーザ端末30に対して、受信した当該配信要求に含まれる当該ストリームIDで指定されるライブストリームの提供を開始する。当該配信情報提供ユニット302は、当該ストリームIDの(または対応する)視聴者IDに、要求元の当該ユーザ端末30の当該視聴者のユーザIDを含めるように当該ストリームDB310を更新する。
当該中継ユニット304は、当該配信情報提供ユニット302により開始された当該ライブストリーミングにおいて、配信者側の当該ユーザ端末20から視聴者側の当該ユーザ端末30に当該映像データを中継する。当該中継ユニット304は、当該ライブストリーミング中または当該映像データの再生中に、当該入力情報送信ユニット206から視聴者によるユーザ入力を表す信号を受信する。当該ユーザ入力を表す信号は、当該ユーザ端末30のディスプレイに表示されたオブジェクトを指定するオブジェクト指定信号であってもよい。当該オブジェクト指定信号は、当該視聴者の視聴者ID、当該視聴者が視聴しているライブストリームの配信者の配信者ID、及び当該オブジェクトを特定するオブジェクトIDを含んでもよい。当該オブジェクトが贈り物であるとき、当該オブジェクトIDは贈り物IDである。同様に、当該中継ユニット304は、当該ユーザ端末20の当該配信ユニット100から、当該映像データの再生中(またはライブストリーミング中)に配信者により行われたユーザ入力を表す信号を受信する。当該信号は、オブジェクト指定信号であってもよい。
また、当該ユーザ入力を表す信号は、視聴者が当該ユーザ端末30に入力したコメントと当該視聴者の視聴者IDを含むコメント入力信号であってもよい。当該コメント入力信号を受信すると、当該中継ユニット304は、当該コメントと信号に含まれる当該視聴者IDを、当該配信者の当該ユーザ端末20と他の視聴者の当該ユーザ端末30に送信する。これらユーザ端末20、30において、当該視聴者側UIコントロールユニット202と、当該重ね合わせ情報生成ユニット204は、同じく受信した当該視聴者IDと関連付けられたディスプレイ上に受信したコメントを表示する。
当該贈り物処理ユニット306は、当該オブジェクト指定信号に含まれる贈り物IDによって特定される贈り物のポイントに基づき、当該配信者のポイントを増加させ、当該ユーザDB312を更新する。具体的には、当該贈り物処理ユニット306は、当該贈り物DB314を参照して、受信した当該オブジェクト指定信号に含まれる当該贈り物IDに対して付与するポイントを特定する。その後、当該贈り物処理ユニット306は、当該ユーザDB312を更新し、当該オブジェクト指定信号に含まれる当該配信者IDの(または当該配信者IDに対応する)ポイントに、特定されたポイントを追加する。
当該支払い処理ユニット308は、当該オブジェクト指定信号の受信に応答して、視聴者からの贈り物の代金の支払いを処理する。具体的には、当該支払い処理ユニット308は、当該贈り物DB314を参照して、当該オブジェクト指定信号に含まれる当該贈り物IDにより特定される当該贈り物の価格ポイントを特定する。その後、当該支払い処理ユニット308は、当該ユーザDB312を更新し、当該オブジェクト指定信号に含まれる当該視聴者IDにより特定される当該視聴者のポイントから、特定された当該価格ポイントを差し引く。
図4は、図3のストリームDB310の例示的データ構造を示す表である。当該ストリームDB310は、現在行われているライブストリームに関する情報を保持する。当該ストリームDB310は、ストリームID、配信者ID、視聴者IDを、相互に関連付けて格納する。当該ストリームIDは、当該ライブストリーミングシステム1により提供されるライブストリーミングプラットフォームにおけるライブストリームを識別するためのIDである。当該配信者IDは、当該ライブストリームを提供する配信者を識別するためのユーザIDである。当該視聴者IDは、当該ライブストリームの視聴者を識別するためのユーザIDである。一部の実施態様による当該ライブストリーミングシステム1により提供されるライブストリーミングプラットフォームにおいて、ユーザがライブストリームを開始すると、当該ユーザは配信者となり、同じユーザが別のユーザによりブロードキャストされるライブストリームを視聴すると、当該ユーザは視聴者にもなる。したがって、配信者と視聴者の区別は固定されておらず、あるとき配信者IDとして登録されたユーザIDが、別のときに視聴者IDとして登録されることもあり得る。
図5は、図3のユーザDB312の例示的データ構造を示す表である。当該ユーザDB312は、ユーザに関する情報を保持する。当該ユーザDB312は、当該ユーザIDと当該ポイントを、相互に関連付けて格納する。当該ユーザIDは、ユーザを識別する。当該ポイントは、対応する当該ユーザが保持するポイントに相当する。当該ポイントは、当該ライブストリーミングプラットフォーム内で流通する電子的な価値である。一部の実施態様において、配信者がライブ配信中に視聴者から贈り物を受け取ると、当該配信者のポイントは当該贈り物に対応する価値だけ増加する。当該ポイントは、例えば、当該配信者が当該ライブストリーミングプラットフォームの管理者から受け取る報酬(金銭など)の量を決定するために使用される。一部の実施態様において、当該配信者が視聴者から贈り物を受け取る際に、当該ポイントに代えて、当該贈り物に対応する金額を付与してもよい。
図6は、図3の贈り物DB314の例示的データ構造を示す表である。当該贈り物DB314は、当該ライブストリーミング中に当該視聴者が利用できる贈り物についての情報を保持する。贈り物は、電子データである。贈り物は、ポイントまたは金銭で購入するか、無償で提供することができてもよい。贈り物は、視聴者が配信者に贈ることができる。配信者に贈り物を贈ることは、贈り物を使う、贈り物を送る、贈り物を投げるなどとも呼ばれる。贈り物の中には、購入と同時に使用できるものと、購入後、購入した視聴者が後から任意のタイミングで使用できるものとがある。視聴者が配信者に贈り物を贈ると、当該贈り物に対応する量のポイントが当該配信者に付与される。贈り物が使用されると、その使用によって当該贈り物に関連するエフェクトが発生してもよい。例えば、ライブストリーミング画面に当該贈り物に対応したエフェクト(視覚的効果や聴覚的効果など)が表示される。
当該贈り物DB314は、贈り物ID、付与ポイント、価格ポイントを、相互に関連付けて格納する。当該贈り物IDは、贈り物を識別するためのものである。当該付与ポイントは、配信者に贈り物が贈られたときに当該配信者に付与されるポイントの量である。当該価格ポイントは、贈り物の使用(購入)に対して支払われるポイントの量である。視聴者は、ライブストリームを視聴しているときに、所望の贈り物の当該価格ポイントを支払うことで、配信者に当該所望の贈り物を贈ることができる。当該価格ポイントの支払いは、適宜の電子決済手段により行うことができる。例えば、視聴者が管理者に当該価格ポイントを支払うことにより、支払いが行われてもよい。あるいは、銀行振り込みやクレジットカードによる支払いが利用されてもよい。当該管理者は、当該付与ポイントと当該価格ポイントとの関係を任意に設定することができる。例えば、付与ポイント=価格ポイントとして設定してもよい。あるいは、当該付与ポイントに1.2などの所定の係数を乗じたポイントを当該価格ポイントとして設定しても、当該付与ポイントに所定の手数料ポイントを加算したポイントを当該価格ポイントとして設定してもよい。
図7に、本発明の一部の実施態様に基づく、サーバ10及びユーザ端末30の機能と構成を示すブロック図を示す。
当該ユーザ端末30は、取得ユニット220と、送信ユニット222と、決定ユニット224と、要求DB250と、ユーザ許容度DB252と、再試行DB254と、を含む。当該サーバ10は、ステータスDB320と、機械学習DB324を含む。一部の実施態様において、当該機械学習DB324は、当該ユーザ端末30内に実装されてもよい。
当該取得ユニット220は、当該ユーザ端末30のユーザからの要求(またはAPI要求)を取得するように構成される。当該要求は、当該ユーザ端末30のユーザインターフェースを介して当該ユーザにより開始されてもよい。当該取得ユニット220は、当該要求に対応するバックエンドサーバ(またはバックエンドサーバのエンドポイント)のステータスデータ(またはステータス予測)を取得するように構成される。当該バックエンドサーバは、当該サーバ10であってもよい。当該ステータスデータは、当該サーバ10の当該ステータスDBから取得されてもよい。
当該送信ユニット222は、当該ステータスデータに基づき(または当該ステータスデータに応答して)、当該要求に対応する当該バックエンドサーバ(または当該エンドポイント)に当該要求を送信するように構成される。例えば、当該送信ユニット222は、当該バックエンドサーバの健全性状態に基づき、当該要求を直ちに送信するか、一定時間後に送信するかを決定してもよい。
当該取得ユニット220は、当該バックエンドサーバから当該要求の応答を取得するように構成される。
当該決定ユニット224は、当該応答にエラーがあるか否かを判断するように構成される。当該応答にエラーがある場合、当該決定ユニット224は、当該ステータスデータに基づき、当該バックエンドサーバに対する当該要求の送信を再試行するための遅延時間を決定する。
一部の実施態様において、当該決定ユニット224は、当該ステータスデータに基づき、当該要求を当該バックエンドサーバに送信する再試行回数の合計数を決定する。
一部の実施態様において、当該遅延時間は、当該ステータスデータと当該再試行の再試行数に基づいて決定される。
一部の実施態様において、当該決定ユニット224は、当該遅延時間が当該バックエンドサーバの(当該ステータスDB320内の)当該ステータスデータの更新期間よりも長いか否かを判断する。「はい」の場合、当該取得ユニット220は、当該バックエンドサーバの更新されたステータスデータを取得し、当該決定ユニット224は、当該更新されたステータスデータに基づき、当該再試行の遅延時間を更新する。
一部の実施態様において、当該取得ユニット220は、当該ユーザのステータスを取得(または検出)し、当該要求のタイプを取得(または検出)する。当該遅延時間は、当該エンドポイントの当該ステータスデータ、当該ユーザの当該ステータス、及び(または)当該要求の当該タイプに応じて決定されてもよい。当該ユーザの当該ステータスは、当該ユーザDB312及び(または)当該要求DB250に格納されていてもよい。当該要求の当該タイプは、当該要求DB250に格納されていてもよい。
一部の実施態様において、当該取得ユニット220は、当該ユーザの許容度データを取得し、当該要求のタイプを取得する。当該遅延時間は、さらに当該ユーザの許容度データと当該要求のタイプに基づいて決定されてもよい。当該許容度データは、当該ユーザ許容度DB252に格納されていてもよい。
一部の実施態様において、当該決定ユニット224は、当該ユーザの当該許容度データに基づき、当該要求のタイプに関して当該ユーザの許容度が低いと判断された場合に、当該遅延時間を短くするように決定する。一部の実施態様において、当該決定ユニット224は、当該ユーザの当該許容度データに基づき、当該要求のタイプに関して当該ユーザの許容度が高いと判断された場合に、当該遅延時間を長くするように決定する。
図8は、要求DB250の例示的データ構造を示す表である。当該要求DB250は、要求ID、要求タイミング、ユーザID、ユーザステータス、要求タイプ、ストリームIDを相互に関連付けて格納する。
当該ユーザステータスは、当該ユーザから当該要求が行われたときの当該ユーザの状態である。例えば、当該要求R1(課金する)は、ユーザU1がストリームS1を視聴する視聴者であるときに、当該ユーザU1によって行われる。当該要求R4(課金する)は、ユーザU1がストリームS3を配信する配信者であるときに、当該ユーザU1によって行われる。当該要求タイプ「課金」は、当該ストリーミングプラットフォームに金銭やポイントを課金する要求であってもよい。当該要求タイプ「贈り物送信」は、当該ストリーミングプラットフォームのチャットルーム(またはストリーム)内で贈り物を送信する要求であってもよい。当該要求タイプ「コメント」は、当該ストリーミングプラットフォームのチャットルーム(またはストリーム)内でコメントを投稿する要求であってもよい。「課金」などの一部の要求タイプは、当該ユーザがストリームを視聴しているとき、またはストリームを配信しているときに、当該ユーザによって実行されてもよい。一部の実施態様において、要求に対する正しい(または成功した)応答は、タスク完了の表示または対応する効果の表示であってもよい。
図9は、ユーザ許容度DB252の例示的データ構造を示す表である。当該ユーザ許容度DB252は、ユーザID、要求タイプ、最大待機時間(または遅延閾値時間)を相互に関連付けて格納する。
当該最大待機時間は、対応する要求タイプを完了するために、当該ユーザが許容できる最大の時間長さである。例えば、ユーザU1は贈り物の送信に6秒より長い待機時間を許容できない。ユーザU1は、「フォロー」要求が完了するまで15秒待つことができる。「フォロー」要求とは、当該配信者のストリームでパフォーマンスを行った配信者をフォローする要求である。当該許容度データは、当該機械学習DB324内の機械学習アルゴリズムによって生成されてもよい。
一部の実施態様において、全体的な応答割り当てのために、各ユーザの当該許容度データが当該サーバ10に送信され、格納されてもよい。例えば、当該サーバ10(または当該サーバ10内の割り当てユニット)は、異なるユーザからの要求に対する応答を返すタイミングを、それぞれの許容度データに基づいて割り当ててもよい。例えば、当該サーバ10の負荷が高い状況下では、許容度の低いユーザU1からの要求R1は、許容度の高いユーザU2からの要求R2よりも早く応答されてもよい。このメカニズムにより、ユーザの全般的な満足度を最適化し、プラットフォーム全体の収益を向上させることができる。
図10は、再試行DB254の例示的データ構造を示す表である。当該再試行DB254は、要求についての再試行データ(または再試行プラン、再試行スケジュール)を格納する。当該再試行DB254は、要求ID、ユーザID、要求の待機時間(または遅延時間)、現在の再試行数(再試行回数の現在の数字)、最大再試行数(再試行回数の合計数)を相互に関連付けて格納する。
当該再試行データは、当該決定ユニット224によって決定される。一部の実施態様において、要求の当該再試行データは、対応するエンドポイントのステータスデータ、当該ユーザのステータス、当該要求のタイプ、及び(または)当該ユーザの許容度データによって決定される。
図11は、ステータスDB320の例示的データ構造を示す表である。当該ステータスDB320は、当該エンドポイント(またはAPIエンドポイント)、対応する要求タイプ、健全性スコア(または健全性ステータス)を相互に関連付けて格納する。
当該健全性スコアは、当該エンドポイントのパラメータに基づいて計算されてもよい。当該計算は、実際の運用やストリーミングプラットフォーム運営者の重点に応じて決定されてもよい。当該計算は、当該機械学習DB324内の機械学習アルゴリズムによって実行されてもよい。当該計算において、正規化が実行されてもよい。当該エンドポイントの当該パラメータのいくつかの例としては、過去のAPI応答時間、過去の応答エラー率、過去のスループット、過去の待機時間、当該エンドポイントをホストするサーバのCPU使用率、当該エンドポイントをホストするサーバのメモリ使用率、当該エンドポイントをホストするサーバによって処理される同時接続数などがある。
図12は、本発明の一部の実施態様に基づく方法を示す例示的なフローチャートである。
工程S1100において、当該取得ユニット220は、例えば、当該ユーザ端末のUIを介して、ユーザU1からの要求を取得する。
工程S1102において、当該取得ユニット220は、当該ステータスDB320から、当該要求に対応する当該エンドポイントの当該ステータスデータを取得する。
工程S1104において、当該送信ユニット222は、当該要求を当該エンドポイントに送信する。当該要求を送信する前に、当該エンドポイントは当該ステータスデータに基づき十分に健全な状態であると(当該決定ユニット224または当該送信ユニット222によって)判断されてもよい。
工程S1106において、当該取得ユニット220は、当該応答を取得する。当該決定ユニット224は、当該応答にエラーがあると判断する。
工程S1108において、当該決定ユニット224は、当該ステータスデータに基づき、当該要求送信の再試行回数の合計数を決定する。
工程S1110において、当該決定ユニット224は、当該ステータスデータ(または更新されたステータスデータ)及び(または)当該再試行の当該再試行数に基づき、各送信再試行(またはこれから行われる送信再試行)の遅延時間を決定(または更新)する。
工程S1112において、当該決定ユニット224は、(工程S1110で決定された)当該遅延時間が、当該ステータスデータのステータス更新期間よりも長いか否かを判断する。「はい」の場合、フローは工程S1114に進む。「いいえ」の場合、フローは工程S1116に進む。一部の実施態様において、工程S1112で、当該決定ユニット224は、前回の当該遅延時間の決定から当該エンドポイントのステータスが更新されたか否かを判断する。
工程S1114において、当該取得ユニット220は、当該エンドポイントの更新された当該ステータスデータを取得する。その後、フローは工程S1110に戻り、当該決定ユニット224は、更新された当該ステータスデータに基づき、各送信再試行(またはこれから行われる送信再試行)の当該遅延時間を更新する。
工程S1116において、当該送信ユニット222は、当該要求送信の再試行を実行する。当該取得ユニット220は、当該応答を取得する。当該決定ユニット224は、当該応答が成功か(エラーで)失敗かを判断する。成功の場合、フローは工程S1120に進み、データアクセスが完了する。「いいえ」の場合、フローは工程S1118に進む。
工程S1118において、再試行回数の数字が、例えば、当該ユーザ端末内のカウンターによって、更新される。その後、フローは工程S1110に戻り、当該決定ユニット224は、当該ステータスデータと更新された当該再試行の再試行数に基づき、各送信再試行(またはこれから行われる送信再試行)の当該遅延時間を更新する。
図13は、本発明の一部の実施態様に基づく方法を示す例示的なフローチャートである。
工程S130において、当該取得ユニット220は、ユーザU1から要求を取得する。
工程S132において、当該取得ユニット220は、当該ステータスDB320から、当該要求に対応する当該エンドポイントの当該ステータスデータを取得する。
工程S134は、S1340、S1342、S1344の3つの工程を含む。
工程S1340において、当該取得ユニット220は、例えば、当該要求DB250から、ユーザU1のユーザステータスデータを取得する。
工程S1342において、当該取得ユニット220は、例えば、当該ユーザ許容度DB252から、ユーザU1のユーザ許容度データを取得する。
工程S1344において、当該取得ユニット220は、当該要求の当該要求タイプを取得または検出する。
工程S136において、当該決定ユニット224は、当該エンドポイントの当該ステータスデータ、当該ユーザステータス、当該ユーザ許容度データ、及び(または)当該要求タイプに基づいて、当該要求送信(初回または再試行)の当該遅延時間を決定する。
図14は、本発明の一部の実施態様に基づくユーザ許容度データ生成の例である。
当該機械学習DB324に入力される特徴量データとしては、各ユーザの要求タイプシーケンス、各ユーザの待機時間シーケンス、各ユーザの退出行動データ(ストリーミングプラットフォームからの退出やストリームチャットからの退出の時間シーケンスなど)、各ユーザからのフィードバックデータ(苦情データなど)などがある。その後、当該機械学習DB324は、異なる要求タイプに関する各ユーザの許容度(または閾値)を示す当該ユーザ許容度データを生成する。当該ユーザ許容度データは、図9に示す例のようなものであってもよい。当該許容度は、当該ユーザにとっての要求許容度データと呼ばれてもよい。
例えば、当該機械学習DB324は、特徴量データの相関分析を実行し、各ユーザについて、どの要求タイプの待機時間が退出行動(及び(または)苦情行動)と最も相関しているかを判断し、関連の閾値を見出してもよい。当該閾値は、当該ユーザがチャットルーム(またはプラットフォーム)を出るまで待つことができる最大待機時間であってもよく、したがって当該遅延時間の最大値として設定することができる。異なるユーザは、異なる要求タイプに関して異なる許容度を有することができる。本発明は、ユーザごとに要求送信の遅延時間を決定するためのカスタマイズされたメカニズムを提供する。
一部の実施態様において、当該決定ユニット222は、当該エンドポイントの当該ステータスデータが、そのエンドポイントにとってより良い状態を示す場合、当該再試行回数の合計数が多くなるように決定する。一部の実施態様において、当該決定ユニット222は、当該エンドポイントの当該ステータスデータが、そのエンドポイントにとってより悪い状態を示す場合、当該再試行回数の合計数が少なくなるように決定する。より良い状態は、当該エンドポイント(またはサーバ)が当該要求を処理するために利用可能な処理能力がより多いことを意味してもよい。より悪い状態は、当該エンドポイントの負担が大きく、再試行回数が多いとクラッシュのリスクが高まり得ることを意味してもよい。
図15に、エンドポイントステータスデータと再試行数に基づく、送信再試行タイミングの決定の例を示す。
本実施態様において、再試行の当該遅延時間は、遅延時間=k(n*n)+yに基づいて決定される。kは、当該エンドポイントの健全性スコア(ステータスデータ)である。nは、API呼び出しの失敗時間である。yは、要求の送信と応答の受信に要する時間である。図15に示す数字は、[健全性スコア=0.8、y=1秒]と仮定して計算される。健全性スコアkは正規化されており、0から1の間である。本実施態様において、スコアが大きいほどエンドポイントの状態が悪いことを示す。状態が悪いと、当該サーバが要求のフローを処理し、バランス化するためにより多くの時間を必要とするため、当該遅延時間は当該健全性スコアとともに増加する。当該遅延時間は、再試行数(再試行回数の数字)が多いほど増加する。これは、再試行失敗の回数が多いほどサーバの状態が悪化し、当該サーバが回復や処理に長い時間を必要とするためである。この増加は直線的な増加よりも急激であり、当該サーバのより効率的な救済を達成することができる。
一部の実施態様において、当該決定ユニット224は、当該要求の潜在的な収益貢献度に基づいて、要求送信または再試行の当該遅延時間を決定する。当該潜在的な収益貢献度は、当該ユーザのステータスや当該要求タイプに関連していてもよい。例えば、ストリームを配信しているユーザからの要求タイプが「課金」である場合と比較して、ストリームを視聴しているユーザからの要求タイプが「課金」である場合、送信(または再試行)の遅延時間を短く(または送信優先度を高く)してもよい。当該ユーザがストリームを視聴しているとき、「課金」操作は、その後プラットフォームへの貢献度がより高い「贈り物」の操作につながる可能性がある。一部の実施態様において、ストリームを視聴しているユーザからの要求タイプが「ポーク」(poking)である場合と比較して、ストリームを配信しているユーザからの要求タイプが「ポーク」である場合、送信(または再試行)の遅延時間を短く(または送信優先度を高く)してもよい。配信者は、ポーク操作を使用して、視聴者にもっと交流するように、あるいはチャットルームでもっと貢献するように注意を喚起することができる。
一部の実施態様において、当該機械学習DB324は、異なる要求タイプ、異なるユーザステータス、およびその結果としての貢献度データに関する履歴データを利用して、それら3つの間の相関関係を判断し、要求送信(または送信再試行)の遅延時間(または優先度)を決定してもよい。
一部の実施態様において、潜在的貢献度の計算は、異なる要求タイプ間の依存関係や関係性に依存してもよい。例えば、視聴者からの贈り物リスト取得要求は、その後の贈り物要求につながる可能性があり、したがって、贈り物リストを取得する要求は、潜在的貢献度が高いとみなされてもよい。例えば、配信者からの視聴者リスト取得要求は、その後のポーク要求につながる可能性があり、それが視聴者の贈り物意欲を高める可能性があるため、当該視聴者リスト取得要求は貢献度が高いとみなされてもよい。一部の実施態様において、当該取得ユニット220は、異なる要求タイプ間の依存関係データを(例えば、当該サーバ10内の要求DBから)取得し、当該決定ユニット224はそれに基づいて、送信(または再送信)の遅延時間(または優先度)を決定する。例えば、貢献度の高い要求ほど、遅延時間を短く(または優先度を高く)することができる。
図16は、本発明の一部の実施態様に基づく例示的な時系列図である。
バックエンド(BE)側のAPIスコアサービス(またはステータスDB)は、BE側のAIシステムに対してポーリング処理を実行し、エンドポイントのスコアを取得する。当該AIシステムは、エンドポイントのスコアを計算及び(または)監視する。クライアント側のUIは、当該クライアント側のAPIサービスにAPI要求を送信する。当該APIサービスは対応するエンドポイントのステータスを当該APIスコアサービスでチェックする。当該ステータスが問題なければ、当該APIサービスは当該BE側の対応するエンドポイントに当該API要求を送信する。当該クライアント側で受信した応答にエラーがあった場合、当該クライアント側のカウンターは再試行回数を1回増加させ、当該クライアント側のタイマーは送信再試行を行うための遅延時間をカウントする。当該遅延時間は、上述した方法に基づき、決定ユニットによって計算されてもよい。当該再試行後、正しいデータが当該クライアント側で受信され、当該UIに提示される。
図17は、本発明の一部の実施態様に基づく例示的な時系列図である。
バックエンド(BE)側のAPIスコアサービス(またはステータスDB)は、BE側のAIシステムに対してポーリング処理を実行し、エンドポイントのスコアを取得する。当該AIシステムは、エンドポイントのスコアを計算及び(または)監視する。クライアント側のUIは、当該クライアント側のAPIサービスにAPI要求を送信する。当該APIサービスは対応するエンドポイントのステータスを当該APIスコアサービスでチェックする。当該応答が、エンドポイントが要求を受信できる状態ではないことを示す。当該クライアントは当該要求を保留する。当該タイマーは遅延時間待ってから、当該要求を当該エンドポイントに送信する。当該遅延時間は、上述した方法に基づき、決定ユニットによって計算されてもよい。当該クライアント側で受信した応答にエラーがあった場合、当該クライアント側のカウンターは再試行回数を1回増加させ、当該タイマーは送信再試行を行うための遅延時間をカウントする。当該遅延時間は、上述した方法に基づき、当該決定ユニットによって計算されてもよい。当該再試行後、正しいデータが当該クライアント側で受信され、当該UIに提示される。
図18は、本発明の一部の実施態様に基づく例示的なデータアクセスフローである。一部の工程は図16と図17の説明と同じである。
当該クライアントは当該APIサービスに対してAPI要求を呼び出す。当該APIサービスは、当該API要求に対応する当該エンドポイントの当該ステータスデータを当該APIスコアサービスで確認する。
工程S180において、当該決定ユニット224は、当該ステータスデータに基づき、当該エンドポイントの状態が良好であるか否かを判断する。「はい」の場合、当該要求が当該エンドポイントに送信される。「いいえ」の場合、フローは工程S182に進む。
工程S182において、当該決定ユニット224は、当該エンドポイントの深刻度の状態に基づき、遅延時間待ってから当該要求を当該エンドポイントに送信するか否かを判断する。当該エンドポイントの状態が深刻ではなく、待つ必要がない場合、当該要求が当該エンドポイントに送信される。状態が深刻な場合、当該エンドポイントに当該要求を送信する前に、タイマーを使用して当該遅延時間がカウントされる。当該遅延時間は、上述した方法に基づき、決定されてもよい。
工程S184において、当該決定ユニット224は、当該エンドポイントからの当該応答が正しいか否かを判断する。当該応答が正しければ、当該正しいデータが当該APIサービスに送信され、当該APIサービスはそのデータをクライアントに送信する。当該応答にエラーが含まれている場合、フローは工程S186に進む。
工程S186において、当該決定ユニット224は、当該API要求の送信に再試行を適用できるか否かを判断する。「はい」の場合、フローは工程S188に進む。「いいえ」の場合、エラーメッセージが当該APIサービスに送信され、当該APIサービスは当該エラーメッセージを当該クライアントに渡す。
工程S188において、当該決定ユニット224は、再試行回数が決定された最大再試行回数(上述の方法に従って決定されてもよいる)を超過したか否かを判断する。「いいえ」の場合、フローは工程S190に進む。「はい」の場合、エラーメッセージが当該APIサービスに送信され、当該APIサービスは当該エラーメッセージを当該クライアントに渡す。
工程S190において、カウンターが当該再試行回数を1増加させ、フローは工程S182に戻り、当該エンドポイントの更新されたステータスデータが、当該要求送信の再試行待機プロセスを決定するために使用される。
図19を参照しながら、当該情報処理装置のハードウェア構成について説明する。図19は、本発明の一部の実施態様に基づく情報処理装置のハードウェア構成例を示すブロック図である。図に示された情報処理装置900は、例えば、一部の実施態様における、当該サーバ10及び(または)当該ユーザ端末20、30を実現することができる。
当該情報処理装置900は、CPU901と、ROM(リードオンリーメモリ)903と、RAM(ランダムアクセスメモリ)905を含む。また、当該情報処理装置900は、ホストバス907、ブリッジ909、外部バス911、インターフェイス913、入力装置915、出力装置917、ストレージ装置919、ドライブ921、接続ポート925、通信装置929を含んでもよい。さらに、当該情報処理装置900は、カメラ(図示せず)などの撮像装置を含む。また、当該情報処理装置900は、当該CPU901に加えて、あるいは当該CPU901の代わりに、DSP(デジタルシグナルプロセッサ)やASIC(特定用途向け集積回路)を含んでもよい。
当該CPU901は、演算処理装置および制御装置として機能し、当該ROM903、当該RAM905、当該ストレージ装置919、または当該リムーバブル記録媒体923に格納された各種プログラムに従って、当該情報処理装置900のすべてまたは一部の動作を制御する。例えば、当該CPU901は、一部の実施態様における当該サーバ10及び当該ユーザ端末20、30に含まれる各機能ユニットの動作全般を制御する。当該ROM903は、当該CPU901が使用するプログラムや演算パラメータなどを格納する。当該RAM905は、当該CPU901の実行時に使用されるプログラムや、実行時に適宜変化するパラメータなどを格納する主記憶装置として機能する。当該CPU901、ROM903、RAM905は、ホストバス907によって相互接続され、当該ホストバス907は、CPUバスなどの内部バスであってもよい。さらに、当該ホストバス907は、ブリッジ909を介してPCI(ペリフェラルコンポーネントインターコネクト/インターフェイス)バスなどの外部バス911に接続される。
当該入力装置915は、マウス、キーボード、タッチパネル、ボタン、スイッチ、レバーなどのユーザが操作する装置、あるいはマイクに代表される音センサ、加速度センサ、傾斜センサ、赤外線センサ、深度センサ、温度センサ、湿度センサなど物理量を電気信号に変換する装置であってもよい。当該入力装置915は、例えば、赤外線等の電波を利用したリモコン装置や、当該情報処理装置900の操作に対応した携帯電話等の外部接続装置927であってもよい。当該入力装置915は、当該ユーザが入力した情報または検出された物理量に基づいて入力信号を生成し、当該CPU901に出力する入力制御回路を含む。当該ユーザは、当該入力装置915を操作することにより、当該情報処理装置900に各種データを入力し、動作を指示する。
当該出力装置917は、取得した情報を視覚的または聴覚的に当該ユーザに通知することができる装置である。当該出力装置917は、例えば、LCD、PDP、OLED等のディスプレイ、スピーカーやヘッドフォン等の音声出力装置、プリンタなどであってもよい。当該出力装置917は、当該情報処理装置900による処理結果を、テキスト、画像などの映像、または音声などのオーディオとして出力する。
当該ストレージ装置919は、データストレージ用装置であり、当該情報処理装置900のストレージユニットの一例として構成される。当該ストレージ装置919は、例えば、ハードディスクドライブ(HDD)などの磁気記憶装置、半導体記憶装置、光記憶装置、または光磁気記憶装置である。このストレージ装置919は、当該CPU901が実行するプログラム、各種データ、外部から取得した各種データなどを格納する。
当該ドライブ921は、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどのリムーバブル記録媒体923のリーダー/ライターであり、当該情報処理装置900に内蔵または外付けされる。当該ドライブ921は、装着されたリムーバブル記録媒体923に記録された情報を読み出し、当該RAM905にそれを出力する。さらに、当該ドライブ921は、装着された当該リムーバブル記録媒体923に記録を書き込む。
当該接続ポート925は、当該情報処理装置900に機器を直接接続するためのポートである。当該接続ポート925は、例えば、USB(ユニバーサルシリアルバス)ポート、IEEE1394ポート、またはSCSI(小型計算機システムインターフェイス)ポートなどであってもよい。さらに、当該接続ポート925は、RS-232Cポート、光オーディオ端子、HDMI(登録商標)(高精細度マルチメディアインターフェイス)ポートなどであってもよい。当該接続ポート925に当該外部接続装置927を接続することにより、当該情報処理装置900と当該外部接続装置927との間で様々なデータのやり取りを行うことができる。
当該通信装置929は、例えば、当該ネットワークNWに接続するための通信装置で形成された通信インターフェイスである。当該通信装置929は、例えば、有線または無線のローカルエリアネットワーク(LAN)、Bluetooth(商標)、または、無線USB(WUSB)用の通信カードであってもよい。さらに、当該通信装置929は、光通信用のルータ、ADSL(非対称デジタル加入者線)用のルータ、または、各種通信用のモデムなどであってもよい。当該通信装置929は、TCP/IPなどの所定のプロトコルを用いて、インターネット上や他の通信装置との間で信号等の送受信を行う。当該通信装置929に接続される当該通信ネットワークNWは、有線または無線で接続されるネットワークであり、例えば、インターネット、家庭内LAN、赤外線通信、電波通信、衛星通信などである。当該通信装置929は、通信装置としての機能を実現する。
当該撮像装置(図示せず)は、CCD(電荷結合デバイス)やCMOS(相補型金属酸化膜半導体)などの撮像素子と、当該撮像素子上の被写体像の結像を制御するためのレンズなど各種部材を用いて現実空間の画像を撮像し、撮像画像を生成する装置である。当該撮像装置は、静止画を撮像しても、動画を撮像してもよい。
以上、本実施態様に係る当該ライブストリーミングシステム1の構成及び動作について説明した。本実施態様は単なる一例であり、各構成要素や各処理の組み合わせについてさまざまな変更が可能であり、それらの変更も本発明の範囲内であることは当業者には理解されるところである。
本発明で説明した処理及び手順は、明示的に説明したものに加えて、ソフトウェア、ハードウェア、またはそれらの任意の組み合わせにより実現することができる。例えば、本明細書で説明した処理および手順は、その処理および手順に対応するロジックを集積回路、揮発性メモリ、不揮発性メモリ、非一時的なコンピュータ可読媒体、磁気ディスクなどの媒体に実装することにより実現することができる。さらに、本明細書に記載された処理および手順は、その処理および手順に対応するコンピュータプログラムとして実現することができ、各種のコンピュータにより実行することができる。
さらに、上記実施態様で説明したシステムまたは方法は、固体記憶装置、光ディスク記憶装置、磁気ディスク記憶装置などの非一時的なコンピュータ可読媒体に格納されたプログラムに統合されてもよい。あるいは、プログラムは、インターネットを介してサーバからダウンロードされ、プロセッサにより実行されるものとしてもよい
以上、本発明の技術的内容及び特徴を説明したが、本発明の属する技術分野において通常の知識を有する者であれば、本発明の教示及び開示から逸脱することなく、なお多くの変形及び修正を行うことができる。したがって、本発明の範囲は、既に開示された実施態様に限定されず、本発明から逸脱しない別の変形や修正を含む、特許請求の範囲に含まれる範囲である。