以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、運動を支援する運動レッスン支援システムに本発明を適用した場合の実施形態である。
[1.運動レッスン支援システム1の構成]
始めに、図1を参照して、本実施形態の運動レッスン支援システム1の構成について説明する。図1は、本実施形態の運動レッスン支援システム1の概要構成例を示す図である。図1に示すように、運動レッスン支援システム1は、配信サーバ2と1つ以上の出力端末5と1つ以上のユーザ端末6とを含んで構成されている。配信サーバ2と出力端末5とは、ネットワーク10を介して接続可能になっている。ネットワーク10は、例えば、インターネットを含む。配信サーバ2には、データベース3が接続されている。データベース3には、運動に関する情報や楽曲に関する情報が登録されている。配信サーバ2は、データベース3に登録されている情報等を、定期的に又は出力端末5からの要求に応じて出力端末5に配信する。配信サーバ2は、本発明の情報処理装置の一例である。
出力端末5は、例えば、施設4に設置される端末装置である。出力端末5は、施設4の利用者41により利用される。施設4は、例えば、スポーツ施設であってもよい。施設4においては、複数の利用者41が運動レッスンを受ける。運動レッスンは、複数の運動から構成されるレッスンである。
出力端末5は、モニタ57と接続可能である。モニタ57は、複数のスピーカ64とディスプレイ67とを備える表示装置であってもよい。この場合、出力端末5は、ディスプレイ67と接続可能である。また、出力端末5は、スピーカ64と接続可能である。出力端末5がモニタ57へ音声信号を出力することにより、スピーカ64により楽曲等が出力される。出力端末5がモニタ57へ映像信号を出力することにより、ディスプレイ67に運動映像等が表示される。運動映像は、運動動作を行うフィギュア83を映し出した動画である。フィギュア83は、例えば、人、動物、仮想上の生き物、ロボット等のかたちをした仮想物である。フィギュア83は、三次元仮想空間に配置される。出力端末5は、スピーカ64から出力される楽曲と、ディスプレイ67に表示されるフィギュア83の動きとが同期するように、信号を出力する。楽曲と運動映像とを出力することは、運動コンテンツを出力することの一例である。利用者41は、スピーカ64により出力される楽曲を聴きながら、ディスプレイ67に表示されるフィギュア83を見て、スタジオ運動を行うことができる。操作者42は、リモコン66等を用いて出力端末5を操作することができる。利用者41と操作者42とは同一人物であってもよい。施設4がスポーツ施設である場合、操作者42は、例えば、スポーツ施設の職員であってもよい。スポーツ施設の職員は、例えば、インストラクターであってもよい。
ユーザ端末6は、例えば、利用者41が所有する端末装置である。ユーザ端末6は、例えば、利用者41が運動レッスンを検索したり、検索した運動レッスンを予約したりするために用いられる。ユーザ端末6は、例えば、パーソナルコンピュータ、タブレット型コンピュータ、スマートフォン、携帯電話機等であってもよい。
[2.利用者41による運動レッスンの検索]
運動レッスン支援システム1において、利用者41は、運動レッスンを検索することができる。具体的に、利用者41は、ユーザ端末6を操作して、検索条件を指定する。ユーザ端末6は、指定された検索条件を含む検索要求を配信サーバ2へ送信する。配信サーバ2は、指定された検索条件を満たす運動レッスンを検索する。指定可能な検索条件の種類として、例えば、運動レッスンの目的、運動レッスンが実施される曜日、運動レッスンが開始される時間帯、運動レッスンのレッスン種別、運動レッスンで利用者41を指導するインストラクター等がある。
運動レッスンを検索するため、配信サーバ2のデータベース3には、検索条件一覧テーブル、目的テーブル、曜日テーブル、時間帯テーブル、レッスン種別テーブル、インストラクターテーブル、レッスン一覧テーブル等の情報が格納されている。
図2(A)は、検索条件一覧テーブルの構成例を示す図である。検索条件一覧テーブルは、検索条件の種類の一覧を示すテーブルである。具体的に、検索条件一覧テーブルには、検索条件ID、検索条件名、及び、検索条件テーブルのテーブル名が対応付けて格納される。検索条件IDは、検索条件の種類を識別可能な識別情報である。例えば、0は目的であり、1は曜日であり、2は時間帯であり、3はレッスン種別であり、4はインストラクターである。検索条件テーブルは、検索条件IDに対応する検索条件の種類において、指定可能な条件を示す条件値が格納されるテーブルである。例えば、検索条件IDと条件値との組合せが検索条件に相当する。検索条件テーブルとして、目的テーブル、曜日テーブル、時間帯テーブル、レッスン種別テーブル、インストラクターテーブルがある。
図2(B)は、目的テーブルの構成例を示す図である。目的テーブルには、検索条件として指定可能な目的を識別可能な条件値として、目的IDが格納される。例えば、目的テーブルには、目的IDとして0〜4等が格納される。例えば、0は指定なしであり、1は健康維持であり、2はダイエットであり、3は筋力アップであり、4は美容である。指定なしは、検索条件に目的を指定しないことを示す。
図2(C)は、曜日テーブルの構成例を示す図である。曜日テーブルには、検索条件として指定可能な曜日を識別可能な条件値として、曜日IDが格納される。例えば、曜日テーブルには、曜日IDとして0〜7が格納される。例えば、0は指定なしであり、1〜7はそれぞれ月曜日〜日曜日である。指定なしは、検索条件に曜日を指定しないことを示す。
図2(D)は、時間帯テーブルの構成例を示す図である。時間帯テーブルには、検索条件として指定可能な時間帯が格納されるとともに、時間帯を識別可能な条件値として、時間帯IDが格納される。例えば、時間帯テーブルには、時間帯IDとして0〜4等が格納される。例えば、0は指定なしであり、1は9時以上12未満であり、2は12時以上15未満であり、3は15時以上18未満であり、4は18時以上21未満である。指定なしは、検索条件に時間帯を指定しないことを示す。
図2(E)は、レッスン種別テーブルの構成例を示す図である。レッスン種別テーブルには、検索条件として指定可能なレッスン種別を識別可能な条件値として、レッスン種別IDが格納される。例えば、レッスン種別テーブルには、レッスン種別IDとして0〜4等が格納される。例えば、0は指定なしであり、1はヨガであり、2はバーベルを用いた運動であり、3はストレッチであり、4はコアリズムである。指定なしは、検索条件にレッスン種別を指定しないことを示す。
図2(F)は、インストラクターテーブルの構成例を示す図である。インストラクターテーブルには、検索条件として指定可能なインストラクターを識別可能な条件値として、インストラクターIDが格納される。例えば、インストラクターテーブルには、インストラクターIDとして0〜4等が格納される。例えば、0は指定なしであり、1はA先生であり、2はB先生であり、3はC先生であり、4はD先生である。指定なしは、検索条件にインストラクターを指定しないことを示す。
図2(G)は、レッスン一覧テーブルの構成例を示す図である。レッスン一覧テーブルは、運動レッスンに関する情報を格納するレコードが登録されるテーブルである。図2(G)に示すように、レッスン一覧テーブルに登録されるレコードには、レッスンID、目的ID、曜日ID、開始時間、レッスン種別ID、インストラクターID、実施日、及び定員が対応付けて格納される。レッスンIDは、運動レッスンを識別可能な識別情報である。レッスンIDは、本発明のレッスン情報の一例である。目的IDは、運動レッスンの目的を示す。曜日IDは、運動レッスンが実施される曜日を示す。開始時間は、運動レッスンが開始される時刻を示す。レッスン種別IDは、運動レッスンのレッスン種別を示す。インストラクターIDは、運動レッスンで利用者41を指導するインストラクターを示す。実施日は、運動レッスンが実施される日付である。定員は、運動レッスンに参加可能な人数である。
図3(A)は、検索画面の表示例を示す図である。検索画面は、運動レッスンを検索するための画面である。運動レッスンを検索する場合、ユーザ端末6は検索画面をディスプレイ67に表示する。図3(A)に示すように、検索画面には、条件指定リスト110、120、130、140、150、検索ボタン160等が表示される。条件指定リスト110〜150は、検索条件を指定するためのドロップダウンリストである。条件指定リスト110は目的に対応し、条件指定リスト120は曜日に対応し、条件指定リスト130は時間帯に対応し、条件指定リスト140はレッスン種別に対応し、条件指定リスト150はインストラクターに対応する。利用者41は、目的、曜日、時間帯、レッスン種別、及びインストラクターのうち1以上の検索条件を指定することができる。利用者41が検索ボタン160を選択すると、ユーザ端末6は、検索要求を配信サーバ2に送信する。検索要求は、条件指定リスト110〜150に対応した検索条件の情報を含む。具体的に、検索要求は、会員IDを含む。会員IDは、利用者41を識別可能な識別情報である。会員IDは、本発明のユーザ識別情報の一例である。検索要求に含まれる会員IDは、検索要求を送信したユーザ端末6を利用する利用者41を示す。検索要求に含まれる会員IDが示す利用者41を検索利用者という。また、検索要求は、検索条件の種類ごとに、検索条件IDと条件値の組合せを含む。検索要求に含まれる検索条件IDと条件値の組合せは、本発明の第2条件情報の一例である。図3(A)の例では、曜日の検索条件として月曜日が指定されている。また、レッスン種別の検索条件としてストレッチが指定されている。そのため、検索要求は、検索条件IDとしての1と、条件値としての1との組合せを含む。また、検索要求は、検索条件IDとしての3と、条件値としての3との組合せを更に含む。その他の検索条件は指定されていない。そのため、検索要求は、検索条件IDとしての0と条件値としての0の組合せ、検索条件IDとしての2と条件値としての0の組合せ、及び検索条件IDとしての4と条件値としての0の組合せを更に含む。
配信サーバ2は、検索要求に基づいて、検索条件を満たす運動レッスンのレッスンIDをレッスン一覧テーブルから検索する。具体的に、配信サーバ2は、検索要求に含まれる目的IDと一致する目的IDと、検索要求に含まれる曜日IDと一致する曜日IDと、検索要求に含まれる時間帯IDが示す時間帯内にある開始時間と、検索要求に含まれるレッスン種別IDと一致するレッスン種別IDと、検索要求に含まれるインストラクターIDと一致するインストラクターIDとの全てを格納するレコードを検索する。そして、配信サーバ2は、検索されたレコードからレッスンIDを取得する。ただし、配信サーバ2は、検索要求に含まれる条件値が0である検索条件については、レッスンIDの検索に用いない。図3(A)の例の場合、配信サーバ2は、曜日IDとして1を格納し、且つ、レッスン種別IDとして3を格納するレコードを検索する。
配信サーバ2は、検索されたレッスンIDを含む検索結果リストをユーザ端末6へ送信する。ユーザ端末6は、検索結果リストに基づいて、検索結果170を図3(A)に示すように、検索画面に表示する。検索結果170は、検索された運動レッスンの一覧を示す。検索結果170において、検索された運動レッスンごとに詳細ボタン171が表示される。利用者41が何れかの詳細ボタン171を選択すると、ユーザ端末6は詳細要求を配信サーバ2へ送信する。詳細要求は、検索利用者の会員ID及び選択された詳細ボタン171に対応する運動レッスンのレッスンIDを含む。詳細要求に含まれるレッスンIDが示す運動レッスンを、閲覧レッスンという。配信サーバ2は、レッスン一覧テーブルから、詳細要求に含まれるレッスンIDを格納するレコードを取得する。そして、配信サーバ2は、取得したレコードをユーザ端末6へ送信する。ユーザ端末6は、受信したレコードに基づいて詳細画面をディスプレイ67に表示する。図3(B)は、詳細画面の表示例を示す図である。詳細画面には、詳細情報210、予約ボタン211等が表示される。詳細情報210は、選択された詳細ボタン171に対応する運動レッスンの詳細な情報である。詳細情報210として、例えばレッスン名、目的、曜日、開始時間、レッスン種別、インストラクター、実施日、定員等が表示される。予約ボタン211は、詳細情報210に対応する運動レッスンを予約するためのボタンである。
[3.運動レッスンの推薦]
運動レッスンを検索するとき、これまでの検索の経緯を利用して利用者41に合う運動レッスンを検索したいという要望がある。そこで、配信サーバ2は、利用者41の検索の傾向に合う運動レッスンを推薦するための処理を実行する。これまでの検索の経緯を利用するため、データベース3には、履歴テーブルが格納されている。図2(H)は、履歴テーブルの構成例を示す図である。履歴テーブルは、運動レッスンの検索に関する履歴の情報を格納するレコードが登録されるテーブルである。例えば、ユーザ端末6から詳細要求を受信するごとに、配信サーバ2は履歴テーブルにレコードを登録してもよい。図2(H)に示すように、履歴テーブルに登録されるレコードには、会員ID、レッスンID、目的ID、曜日ID、時間帯ID、レッスン種別ID、インストラクターID、閲覧日時、予約有無が対応付けて格納される。履歴テーブルに格納される目的ID、曜日ID、時間帯ID、レッスン種別ID、インストラクターIDは、本発明の第1条件情報の例である。
会員ID及びレッスンIDは、詳細要求に含まれていた会員ID及びレッスンIDである。目的ID、曜日ID、時間帯ID、レッスン種別ID及びインストラクターIDは、配信サーバ2が先に受信した検索要求に含まれていた条件値である。閲覧日時は、検索利用者が詳細情報210を閲覧した日時である。具体的に、閲覧日時は、配信サーバ2が詳細要求を受信した日時である。予約有無は、検索利用者が閲覧レッスンを予約したか否かを示す。詳細要求を受信したとき、配信サーバ2は、予約有無を「無し」に設定する。詳細画面において検索利用者が予約ボタン211を選択したとき、ユーザ端末6は、予約要求を配信サーバ2へ送信する。予約要求は、検索利用者の会員ID及び閲覧レッスンのレッスンIDを含む。配信サーバ2は、予約要求に含まれる会員ID及びレッスンIDに対応するレコードに格納されている予約有無を「有り」に変更する。
配信サーバ2は、履歴テーブルにおいて、閲覧レッスンのレッスンIDに対応するレコードに格納されている条件値の中で、検索条件としての使用頻度が所定以上である条件値、及びその条件値に対応する検索条件IDを、閲覧レッスンの優先検索条件として決定する。閲覧レッスンの優先検索条件は、本発明の第1特定条件情報の一例である。また、配信サーバ2は、履歴テーブルにおいて、検索利用者の会員IDに対応するレコードに格納されている条件値の中で、検索条件としての使用頻度が所定以上である条件値、及びその条件値に対応する検索条件IDを、検索利用者の優先検索条件として決定する。検索利用者の優先検索条件は、本発明の第2特定条件情報の一例である。そして、配信サーバ2は、閲覧レッスンの優先検索条件と検索利用者の優先検索条件との何れをも満たす運動レッスンのレッスンIDを、検索利用者に推薦するレッスンIDとして決定する。閲覧レッスンの優先検索条件は、これまでに運動レッスンが検索されたときに、複数の利用者41が重視している検索条件を示す。検索利用者の優先検索条件は、検索利用者がこれまで運動レッスンを検索するときに、検索利用者が重視している検索条件を示す。そのため、検索利用者が重視してきた検索条件及び閲覧レッスンが検索されたときに重視された検索条件を満たす運動レッスンが、推薦される運動レッスンに決定される。そのため、検索利用者の検索傾向に合う検索条件と閲覧レッスンの検索傾向に合う検索条件とを満たす運動レッスンを推薦することができる。ここで、閲覧レッスンの優先検索条件と検索利用者の優先検索条件とは一致してもよいし、異なっていてもよい。
閲覧レッスンの優先検索条件の具体的な決定方法の例として、配信サーバ2は、履歴テーブルから、閲覧レッスンのレッスンIDを格納するレコードのうち、例えば予約有無が「有り」であるレコードを検索する。なお、配信サーバ2は、予約有無に関係なく、閲覧レッスンのレッスンIDを格納するレコードを検索してもよい。そして、検索条件の種類及び条件値の組合せごとに、検索されたレコードのうち、その条件値と一致する条件値が格納されたレコードの数を、使用頻度として決定する。次いで、配信サーバ2は、検索条件の種類ごとに、使用頻度の合計を計算する。そして、配信サーバ2は、使用頻度が高い順に所定数の検索条件の種類を、閲覧レッスンの優先検索条件の種類として決定する。また、閲覧レッスンの優先検索条件の種類として決定された検索条件の種類に対応する条件値のうち、使用頻度が最も高い条件値を、閲覧レッスンの優先検索条件の条件値として決定する。検索利用者の優先検索条件を決定する場合、配信サーバ2は、履歴テーブルから、検索利用者の会員IDを格納するレコードのうち予約有無が「有り」であるレコードを検索する。その後は、閲覧レッスンの優先検索条件の決定方法と同様である。
配信サーバ2は、閲覧レッスンの優先検索条件と検索利用者の優先検索条件との間で共通する優先検索条件を特定してもよい。共通する優先検索条件は、本発明の第3特定条件情報の一例である。例えば、配信サーバ2は、閲覧レッスンの優先検索条件のうち、検索利用者の優先検索条件と一致する優先検索条件を、共通する優先検索条件として特定してもよい。そして、配信サーバ2は、特定した共通の検索条件を満たす運動レッスンを、推薦する運動レッスンに決定してもよい。これにより、検索利用者の検索傾向に合う検索条件と、閲覧レッスンの検索傾向に合う検索条件とで共通する検索条件を満たす運動レッスンを推薦することができる。
配信サーバ2は、複数の運動レッスンのそれぞれについて、履歴テーブルにおいて、レッスンIDに対応するレコードに格納されている条件値の中で、検索条件としての使用頻度が所定以上である条件値、及びその条件値に対応する検索条件IDを、優先検索条件として決定してもよい。各運動レッスンの優先検索条件は、本発明の第4特定条件情報の一例である。各運動レッスンの優先検索条件の決定方法は、閲覧レッスンの優先検索条件の具体的な決定方法と同様である。そして、配信サーバ2は、検索利用者の優先検索条件と閲覧レッスンの優先検索条件とのうち少なくとも何れかと一致する優先検索条件に対応する運動レッスンを、推薦する運動レッスンとして決定してもよい。これにより、検索利用者の検索傾向又は閲覧レッスンの検索傾向に合致する検索傾向がある運動レッスンを推薦することができる。
また、閲覧レッスンが満たす検索条件の中から、検索利用者41が所望の検索条件を選択可能であってもよい。この検索条件を絞り込み条件という。絞り込み条件は、本発明の第5特定条件情報の一例である。配信サーバ2は、検索利用者の優先検索条件、閲覧レッスンの優先検索条件及び絞り込み条件の何れも満たす運動レッスンを、推薦する運動レッスンとして決定してもよい。これにより、閲覧レッスンが満たす検索条件のうち検索利用者が望む検索条件を満たす運動レッスンを推薦することができる。
図3(B)に示すように、ユーザ端末6は、詳細画面内に、タブ220、230、240、250及び260を表示する。タブ220は、閲覧レッスンの実施日に近い実施日を、絞り込み条件として選択するためのタブである。タブ230は、閲覧レッスンのレッスン種別を絞り込み条件として選択するためのタブである。タブ240は、閲覧レッスンで指導するインストラクターを絞り込み条件として選択するためのタブである。タブ250は、閲覧レッスンが実施される曜日を絞り込み条件として選択するためのタブである。タブ260は、閲覧レッスンが開始する時間帯と同一の時間帯を絞り込み条件として選択するためのタブである。利用者41が何れかのタブを選択すると、配信サーバ2は、検索利用者の優先検索条件、及び閲覧レッスンの優先検索条件を満たす運動レッスンのレッスンIDのうち、選択されたタブに対応する絞り込み条件を満たす運動レッスンのレッスンIDを決定する。そして、配信サーバ2は、決定したレッスンIDを含む推薦リストをユーザ端末6へ送信する。ユーザ端末6は、推薦リストに基づいて、詳細画面に推薦レッスン一覧270を図3(B)に示すように表示する。図3(B)は、タブ230が選択された場合の推薦レッスン一覧270の表示例である。推薦レッスン一覧270は、推薦される運動レッスンの一覧を示す。推薦レッスン一覧270において、運動レッスンごとに詳細ボタン271が表示される。利用者41が何れかの詳細ボタン271を選択すると、ユーザ端末6は、選択された詳細ボタン271に対応する運動レッスンの詳細情報210及び予約ボタン211を詳細画面に表示する。
[4.各装置の構成]
次に、図1を参照して、運動レッスン支援システムに含まれる各装置の構成について説明する。
[4−1.配信サーバ2の構成]
図1に示すように、配信サーバ2は、CPU21、ROM22、RAM23、バス24、I/Oインタフェイス25、表示制御部26、ディスクドライブ28、ネットワーク通信部30及びHDD(ハードディスクドライブ)37を備える。CPU21は、バス24を介して、ROM22、RAM23、バス24及びI/Oインタフェイス25に接続されている。CPU21は、時計機能及びタイマー機能を有する。CPU21は、ROM22やHDD37に記憶されたプログラムを実行することにより、配信サーバ2の各部を制御する。I/Oインタフェイス25には、データベース3、表示制御部26、ディスクドライブ28、ネットワーク通信部30、キーボード31、マウス32及びHDD37が接続されている。CPU21は、I/Oインタフェイス25を介してデータベース3にアクセスする。表示制御部26は、CPU21の制御に基づいて映像信号をモニタ27に出力する。ディスクドライブ28は、記録媒体29に対するデータの書き込み及び読み出しを行う。ネットワーク通信部30は、配信サーバ2がネットワーク10に接続するための制御を行う。HDD37には、OSや各種制御プログラム等が記憶されている。
データベース3は、本発明における記憶手段の一例である。データベース3には、モーションデータ、楽曲データ、レッスン一覧テーブル、履歴テーブル、目的テーブル、曜日テーブル、時間帯テーブル、レッスン種別テーブル、インストラクターテーブル、検索条件一覧テーブル等のデータが登録されている。
モーションデータは、三次元仮想空間におけるフィギュア83の運動動作を定義するデータである。モーションデータは、ディスプレイ67にフィギュア83の運動動作を表示させるためのデータである。モーションデータは、運動動作の進行に応じたフィギュア83の身体の各部の座標を含む。モーションデータは、モーション情報と対応付けて登録される。モーション情報は、運動動作を示す識別情報である。楽曲データは、スピーカ64により楽曲を出力するための演奏データである。楽曲データは、例えば、MIDI(Musical Instrument Digital Interface)形式のデータであってもよい。
HDD37には、OS、検索プログラム等の各種プログラム等が記憶されている。検索プログラムは、運動レッスンを検索するためのプログラムである。検索プログラムは、コンピュータとしてのCPU21に、検索ステップと、取得ステップと、第1決定ステップと、第2決定ステップと、第3決定ステップとを少なくとも実行させる。各種プログラムは、例えば、所定のサーバ装置からネットワーク10を介してダウンロードされるようにしてもよい。また、各種プログラムは、記録媒体29に記録されてディスクドライブ28を介して読み込まれるようにしてもよい。
[4−2.出力端末5の構成]
図1に示すように、出力端末5は、CPU51、ROM52、RAM53、バス54、I/Oインタフェイス55、表示制御部56、ディスクドライブ58、ネットワーク通信部60、音声出力部63、信号受信部65及びHDD7を備える。CPU51は、バス54を介して、ROM52、RAM53、バス54及びI/Oインタフェイス55に接続されている。CPU51は、ROM52やHDD7に記憶されたプログラムを実行することにより、出力端末5の各部を制御する。I/Oインタフェイス55には、HDD7、表示制御部56、音声出力部63、ディスクドライブ58、ネットワーク通信部60、キーボード61、マウス62及び信号受信部65が接続されている。表示制御部56は、CPU51の制御に基づいて映像信号をモニタ57に出力する。音声出力部63は、CPU51の制御に基づいて音声信号をモニタ57に出力する。ディスクドライブ58は、記録媒体59に対するデータの書き込み及び読み出しを行う。信号受信部65は、リモコン66から出力される信号を受信する。リモコン66は、操作者42が出力端末5を操作するためのものである。
HDD7には、配信サーバ2から配信されたモーションデータ、楽曲データ、レッスン一覧テーブル、履歴テーブル、目的テーブル、曜日テーブル、時間帯テーブル、レッスン種別テーブル、インストラクターテーブル、検索条件一覧テーブル等が記憶される。
HDD7には、更に、OS、運動支援プログラム、3Dエンジン、ミュージックシーケンサ等の各種プログラム等が記憶されている。運動支援プログラムは、利用者41の運動を支援するためのプログラムである。3Dエンジンは、モーションデータに基づいて、三次元仮想空間で運動動作するフィギュア83を二次元平面に投影した画像を生成するためのプログラムである。画像を生成する処理は、射影変換、クリッピング、隠面消去、シェーディング、テクスチャマッピング等を含む。CPU51は、3Dエンジンを実行して、静止画像を順次生成する。CPU51は、順次生成した複数の静止画像から動画データを生成する。CPU51が動画データに含まれる静止画像を表示制御部56へ順次出力することで、ディスプレイ67には、運動映像が表示される。
ミュージックシーケンサは、楽曲データを再生するためのプログラムである。CPU51は、ミュージックシーケンサを実行することにより、楽曲データに対応する音声信号を生成する。また、CPU51は、ミュージックシーケンサを実行することにより、各種のメッセージ(イベント)を発生させる。メッセージとして、例えば、テンポに応じて所定時間間隔で発生するメッセージがある。このメッセージは、MIDIクロックや同期メッセージと呼ばれる。
各種プログラムは、例えば、配信サーバ2等のサーバからネットワーク10を介してダウンロードされるようにしてもよい。また、各種プログラムは、記録媒体59に記録されてディスクドライブ58を介して読み込まれるようにしてもよい。なお、3Dエンジンやミュージックシーケンサは、プログラムではなく、専用のハードウェアであってもよい。そして、出力端末5は、ハードウェアとしての3Dエンジンやミュージックシーケンサを備えてもよい。
CPU51は、設定されたテンポに従って、楽曲データに対応する音声信号を音声出力部63へ出力させるとともに、生成した画像に対応する映像信号を表示制御部56から出力させる。CPU51は、同期メッセージに基づいて、楽曲の音声信号の出力タイミングと運動映像の映像信号の出力タイミングとを同期させる。これにより、スピーカ64から出力される楽曲に同期して運動動作を行うフィギュア83がディスプレイ67に表示される。
[5.運動レッスン支援システム1の動作]
次に、図4乃至図7を参照して、運動レッスン支援システム1の動作を説明する。図4は、配信サーバ2のCPU21の処理例を示すフローチャートである。例えば、検索利用者の操作に基づいてユーザ端末6が配信サーバ2にアクセスしたとき、CPU21は、図4に示す処理を開始する。図4に示すように、CPU21は、ログイン認証を実行する(ステップS1)。具体的に、検索利用者は、会員ID及びパスワードを入力し、ユーザ端末6は、入力された会員ID及びパスワードを配信サーバ2へ送信する。配信サーバ2は、受信した会員ID及びパスワードに基づいて検索利用者の認証を行う。検索利用者の認証方法は公知であるので、詳細な説明は省略する。認証が成功すると、CPU21は、認証が成功したことを示す応答をユーザ端末6へ送信する。応答を受信したユーザ端末6は、検索画面を表示する。
検索画面において、検索利用者が条件選択リスト110〜160を操作して、検索条件を設定し、検索ボタン160を選択する。すると、ユーザ端末6は、検索要求を配信サーバ2へ送信し、CPU21は、検索要求を受信する(ステップS2)。CPU21は、検索要求から、検索条件としての目的ID、曜日ID、時間帯ID、レッスン種別ID及びインストラクターIDを取得する。次いで、CPU21は、検索条件を満たす運動レッスンのレッスンIDをレッスン一覧テーブルから検索する(ステップS3)。検索方法は既に説明しているので、ここでの詳細な説明は省略する。次いで、CPU21は、検索されたレッスンIDを含む検索結果リストをユーザ端末6へ送信する(ステップS4)。ユーザ端末6は、検索結果リストに基づいて、検索画面に検索結果170を表示する。
検索利用者は、検索結果170から、何れかの詳細ボタン171を選択する。すると、ユーザ端末6は詳細要求を配信サーバ2に送信し、CPU21は、ユーザ端末6から送信された詳細要求を受信する(ステップS5)。次いで、CPU21は、履歴テーブルにレコードの登録を行う(ステップS6)。具体的に、CPU21は、詳細要求から検索利用者の会員ID及び閲覧レッスンのレッスンIDを取得する。次いで、CPU21は、取得した会員ID及びレッスンIDを格納するレコードを生成する。また、CPU21は、ステップS2で取得した目的ID、曜日ID、時間帯ID、レッスン種別ID及びインストラクターIDを、生成したレコードに格納する。次いで、CPU21は、生成したレコードを履歴テーブルに登録する。
次いで、CPU21は、レッスン優先検索条件決定処理を実行する(ステップS7)。レッスン優先検索条件決定処理において、CPU21は、各運動レッスンについて、優先検索条件を決定する。次いで、CPU21は、利用者優先検索条件決定処理を実行する(ステップS8)。利用者優先検索条件決定処理において、CPU21は、検索利用者の優先検索条件を決定する。次いで、CPU21は、推薦レッスン抽出処理を実行する(ステップS9)。推薦レッスン抽出処理において、CPU21は、閲覧レッスンの優先検索条件と検索利用者の優先検索条件とを満たす運動レッスンのレッスンIDを決定する。レッスン優先検索条件決定処理、利用者優先検索条件決定処理、及び推薦レッスン抽出処理の詳細については後述する。
次いで、CPU21は、詳細要求に含まれる閲覧レッスンのレッスンIDに対応するレコードをレッスン一覧テーブルから取得する。そして、CPU21は取得したレコードをユーザ端末6へ送信する(ステップS10)。ユーザ端末6は、詳細画面を表示すると共に、受信したレコードに基づいて詳細情報210を表示する。詳細画面において、検索利用者は、タブ220〜260のうちの何れかを選択する。すると、ユーザ端末6は、推薦要求を配信サーバ2に送信する。推薦要求は、絞り込み条件IDを含む。絞り込み条件IDは、選択されたタブに対応する絞り込み条件を識別可能な識別情報である。CPU21は、推薦要求を受信する(ステップS11)。次いで、CPU21は、推薦処理を実行する(ステップS12)。推薦処理において、CPU21は、推薦レッスン抽出処理で決定されたレッスンIDのうち、絞り込み条件を満たす運動レッスンのレッスンIDを決定する。そして、CPU21は、絞り込み条件を満たす運動レッスンをユーザ端末6により表示させる。推薦処理の詳細は後述する。CPU21は、ステップS12を終えると、図4に示す処理を終了させる。
図5(A)は、配信サーバ2のCPU21のレッスン優先検索条件決定処理の処理例を示すフローチャートである。図5(A)に示すように、CPU21は、運動レッスンの順番iを0に設定する(ステップS21)。そして、CPU21は、レッスン一覧テーブルにおいてi番目に格納されているレコードから、レッスンIDを取得する。次いで、CPU21は、検索条件IDの順番jを0に設定する(ステップS22)。次いで、CPU21は、j番目の検索条件テーブルを特定する(ステップS23)。具体的に、CPU21は、検索条件一覧テーブルから、j番目に格納されているテーブル名を取得する。そして、CPU21は、取得したテーブル名に基づいて、目的テーブル、曜日テーブル、時間帯テーブル、レッスン種別テーブル又はインストラクターテーブルを特定する。
次いで、CPU21は、条件値の順番cを1に設定する(ステップS24)。そして、CPU21は、特定した検索条件テーブルから、c番目に格納されている条件値を取得する。次いで、CPU21は、使用頻度を決定する(ステップS25)。具体的に、CPU21は、履歴テーブルから予約有無が「有り」であるレコードを検索する。次いで、CPU21は、検索されたレコードのうち、i番目のレッスンIDを格納し、且つ、j番目の検索条件IDに対応する条件値としてc番目の条件値を格納するレコードを検索する。そして、CPU21は、検索されたレコードの数を使用頻度として決定する。
次いで、CPU21は、順番cに1を加算する(ステップS26)。次いで、CPU21は、順番cが、特定した検索条件テーブルに格納されている条件値の総数未満であるか否かを判定する(ステップS27)。このとき、CPU21は、順番cが条件値の総数未満であると判定した場合には(ステップS27:YES)、ステップS25に進む。一方、CPU21は、順番cが条件値の総数未満ではないと判定した場合には(ステップS27:NO)、ステップS28に進む。ステップS28において、CPU21は、順番jに1を加算する。次いで、CPU21は、順番jが、検索条件一覧テーブルに格納されている検索条件IDの総数未満であるか否かを判定する(ステップS29)。このとき、CPU21は、順番jが検索条件IDの総数未満であると判定した場合には(ステップS29:YES)、ステップS23に進む。一方、CPU21は、順番jが検索条件IDの総数未満ではないと判定した場合には(ステップS29:NO)、ステップS30に進む。
ステップS30において、CPU21は、i番目のレッスンIDの優先検索条件レコードを生成する。優先検索条件レコードには、優先検索条件を示す検索条件ID及び条件値の組合せが格納される。具体的に、CPU21は、検索条件IDごとに、対応する全ての条件値の使用頻度を足し合わせて、使用頻度の合計値を計算する。次いで、CPU21は、使用頻度の合計値が多い順に、各検索条件IDの優先順位を決定する。次いで、CPU21は、例えば優先順位が3位以上である検索条件IDを特定する。次いで、CPU21は、特定した検索条件IDに対応する条件値のうち、使用頻度が最も高い条件値を特定する。次いで、CPU21は、i番目のレッスンIDを格納する優先検索条件レコードを生成する。次いで、CPU21は、優先順位が1位から3位までの検索条件IDについて、特定した検索条件ID及び条件値を、優先順位に対応付けて優先検索条件レコードに格納する。なお、CPU21は、例えば、優先順位が1位である検索条件IDのみを特定してもよいし、優先順位が2位以上である検索条件IDを特定してもよい。
次いで、CPU21は、順番iに1を加算する(ステップS31)。次いで、CPU21は、順番iが、レッスン一覧テーブルに格納されているレッスンIDの総数未満であるか否かを判定する(ステップS32)。このとき、CPU21は、順番iがレッスンIDの総数未満であると判定した場合には(ステップS32:YES)、ステップS22に進む。一方、CPU21は、順番iがレッスンIDの総数未満ではないと判定した場合には(ステップS32:NO)、レッスン優先検索条件決定処理を終了させる。
図5(B)は、配信サーバ2のCPU21の利用者優先検索条件決定処理の処理例を示すフローチャートである。図5(B)に示すように、CPU21は、検索条件IDの順番jを0に設定する(ステップS41)。次いで、CPU21は、j番目の検索条件テーブルを特定する(ステップS42)。この処理は、レッスン優先検索条件決定処理のステップS23と同様である。次いで、CPU21は、条件値の順番cを1に設定する(ステップS43)。そして、CPU21は、特定した検索条件テーブルから、c番目に格納されている条件値を取得する。次いで、CPU21は、使用頻度を決定する(ステップS44)。具体的に、CPU21は、履歴テーブルから予約有無が「有り」であるレコードを検索する。次いで、CPU21は、検索されたレコードのうち、検索利用者の会員IDを格納し、且つ、j番目の検索条件IDに対応する条件値としてc番目の条件値を格納するレコードを検索する。そして、CPU21は、検索されたレコードの数を使用頻度として決定する。
次いで、CPU21は、順番cに1を加算する(ステップS45)。次いで、CPU21は、順番cが、特定した検索条件テーブルに格納されている条件値の総数未満であるか否かを判定する(ステップS46)。このとき、CPU21は、順番cが条件値の総数未満であると判定した場合には(ステップS46:YES)、ステップS44に進む。一方、CPU21は、順番cが条件値の総数未満ではないと判定した場合には(ステップS46:NO)、ステップS47に進む。ステップS47において、CPU21は、順番jに1を加算する。次いで、CPU21は、順番jが、検索条件一覧テーブルに格納されている検索条件IDの総数未満であるか否かを判定する(ステップS48)。このとき、CPU21は、順番jが検索条件IDの総数未満であると判定した場合には(ステップS48:YES)、ステップS42に進む。一方、CPU21は、順番jが検索条件IDの総数未満ではないと判定した場合には(ステップS48:NO)、ステップS49に進む。
ステップS49において、CPU21は、検索利用者の優先検索条件レコードを生成する。検索利用者の優先検索条件レコードには、検索利用者の優先検索条件を示す検索条件ID及び条件値の組合せが格納される。検索利用者の優先検索条件レコードの生成方法は、優先検索条件レコードの生成方法と基本的に同様である。ただし、検索利用者の優先検索条件レコードには、レッスンIDではなく、検索利用者の会員IDが格納される。CPU21は、ステップS49を終えると、利用者優先検索条件決定処理を終了させる。
図6は、配信サーバ2のCPU21の推薦レッスン抽出処理の処理例を示すフローチャートである。図6に示すように、CPU21は、レッスン優先検索条件決定処理で生成された優先検索条件レコードのうち、閲覧レッスンのレッスンIDに対応する優先検索条件レコードを取得する(ステップS61)。
次いで、CPU21は、閲覧レッスンの優先検索条件レコードから優先順位が1位である検索条件ID及び条件値の組合せを取得する。次いで、CPU21は、取得した検索条件ID及び条件値の組合せと一致する組合せを格納する優先検索条件レコードを、レッスン優先検索条件決定処理で生成された優先検索条件レコードの中から抽出する(ステップS62)。閲覧レッスンの検索条件ID及び条件値の組合せと一致する組合せを格納する優先検索条件レコードであれば、その組合せの優先順位は1〜3位の何れであってもよい。次いで、CPU21は、ステップS62で抽出された優先検索条件レコードの数が50以上であるか否かを判定する(ステップS63)。このとき、CPU21は、優先検索条件レコードの数が50以上ではないと判定した場合には(ステップS63:NO)、ステップS67に進む。一方、CPU21は、優先検索条件レコードの数が50以上であると判定した場合には(ステップS63:YES)、ステップS64に進む。
ステップS64において、CPU21は、閲覧レッスンの優先検索条件レコードから優先順位が2位である検索条件ID及び条件値の組合せを取得する。次いで、CPU21は、ステップS62で抽出された優先検索条件レコードの中から、取得した検索条件ID及び条件値の組合せと一致する組合せを格納する優先検索条件レコードを抽出する。次いで、CPU21は、ステップS64で抽出された優先検索条件レコードの数が50以上であるか否かを判定する(ステップS65)。このとき、CPU21は、優先検索条件レコードの数が50以上ではないと判定した場合には(ステップS65:NO)、ステップS67に進む。一方、CPU21は、優先検索条件レコードの数が50以上であると判定した場合には(ステップS65:YES)、ステップS66に進む。
ステップS66において、CPU21は、閲覧レッスンの優先検索条件レコードから優先順位が3位である検索条件ID及び条件値の組合せを取得する。次いで、CPU21は、ステップS64で抽出された優先検索条件レコードの中から、取得した検索条件ID及び条件値の組合せと一致する組合せを格納する優先検索条件レコードを抽出する。次いで、CPU21は、ステップS67に進む。
ステップS67において、CPU21は、検索利用者の優先検索条件レコードから優先順位が1位である検索条件ID及び条件値の組合せを取得する。次いで、CPU21は、ステップS62、S64又はS66で抽出された優先検索条件レコードの中から、取得した検索条件ID及び条件値の組合せと一致する組合せを格納する優先検索条件レコードを抽出する。次いで、CPU21は、ステップS67で抽出された優先検索条件レコードの数が10以上であるか否かを判定する(ステップS68)。このとき、CPU21は、優先検索条件レコードの数が10以上ではないと判定した場合には(ステップS68:NO)、ステップS72に進む。一方、CPU21は、優先検索条件レコードの数が10以上であると判定した場合には(ステップS68:YES)、ステップS69に進む。
ステップS69において、CPU21は、検索利用者の優先検索条件レコードから優先順位が2位である検索条件ID及び条件値の組合せを取得する。次いで、CPU21は、ステップS67で抽出された優先検索条件レコードの中から、取得した検索条件ID及び条件値の組合せと一致する組合せを格納する優先検索条件レコードを抽出する。次いで、CPU21は、ステップS69で抽出された優先検索条件レコードの数が10以上であるか否かを判定する(ステップS70)。このとき、CPU21は、優先検索条件レコードの数が10以上ではないと判定した場合には(ステップS70:NO)、ステップS72に進む。一方、CPU21は、優先検索条件レコードの数が10以上であると判定した場合には(ステップS70:YES)、ステップS71に進む。
ステップS71において、CPU21は、検索利用者の優先検索条件レコードから優先順位が3位である検索条件ID及び条件値の組合せを取得する。次いで、CPU21は、ステップS69で抽出された優先検索条件レコードの中から、取得した検索条件ID及び条件値の組合せと一致する組合せを格納する優先検索条件レコードを抽出する。次いで、CPU21は、ステップS72に進む。
ステップS72において、CPU21は、ステップS67、S69又はS71で抽出された各優先検索条件レコードから、レッスンIDを取得する。次いで、CPU21は、取得したレッスンIDを含む推薦候補リストを生成する。CPU21は、ステップS72の処理を終えると、推薦レッスン抽出処理を終了させる。
図7は、配信サーバ2のCPU21の推薦処理の処理例を示すフローチャートである。図7に示すように、CPU21は、レッスン一覧テーブルから、閲覧レッスンのレッスンIDに対応するレコードを取得する(ステップS81)。次いで、CPU21は、推薦レッスン抽出処理で生成された推薦候補リストから各レッスンIDを取得する。そして、CPU21は、レッスン一覧テーブルから、取得したレッスンIDに対応するレコードを取得する(ステップS82)。
次いで、CPU21は、推薦要求から絞り込み条件IDを取得する。次いで、CPU21は、絞り込み条件IDに基づいて、絞り込み条件が、閲覧レッスンの実施日と近い実施日であるかを判定する(ステップS83)。このとき、CPU21は、絞り込み条件が、閲覧レッスンの実施日と近い実施日ではないと判定した場合には(ステップS83:NO)、ステップS90に進む。一方、CPU21は、絞り込み条件が、閲覧レッスンの実施日と近い実施日であると判定した場合には(ステップS83:YES)、ステップS84に進む。
ステップS84において、CPU21は、日数iを1に設定する。次いで、CPU21は、閲覧レッスンの実施日のi日前からi日後までの間に実施日がある運動レッスンのレッスンIDを検索する(ステップS85)。具体的に、ステップS81で取得したレコードから実施日を取得する。次いで、CPU21は、実施日からiを減算して、実施日範囲の開始日を計算し、実施日からiを加算して、実施日範囲の終了日を計算する。次いで、CPU21は、ステップS82で取得したレコードの中から、実施日範囲の開始日以降であり、且つ、実施日範囲の終了日以前である実施日を格納するレコードを検索する。次いで、CPU21は、検索されたレコードの数が0であるか否かを判定する(ステップS86)。このとき、CPU21は、検索されたレコードの数が0ではないと判定した場合には(ステップS86:NO)、ステップS97に進む。一方、CPU21は、検索されたレコードの数が0であると判定した場合には(ステップS86:YES)、ステップS87に進む。
ステップS87において、CPU21は、日数iに1を加算する。次いで、CPU21は、日数iが4未満であるか否かを判定する(ステップS88)。このとき、CPU21は、日数iが4未満であると判定した場合には(ステップS88:YES)、ステップS85に進む。一方、CPU21は、日数iが4未満ではないと判定した場合には(ステップS88:NO)、ステップSステップS89に進む。ステップS89において、CPU21は、推薦する運動レッスンが存在しないことを示すメッセージをユーザ端末6へ送信する。ユーザ端末6は、受信したメッセージを詳細画面に表示する。CPU21は、ステップS89を終えると、推薦処理を終了させる。
ステップS90において、CPU21は、絞り込み条件IDに基づいて、絞り込み条件がレッスン種別であるか否かを判定する。このとき、CPU21は、絞り込み条件がレッスン種別ではないと判定した場合には(ステップS90:NO)、ステップS92に進む。一方、CPU21は、絞り込み条件がレッスン種別であると判定した場合には(ステップS90:YES)、ステップS91に進む。ステップS91において、CPU21は、ステップS81で取得したレコードからレッスン種別IDを取得する。次いで、CPU21は、ステップS82で取得したレコードの中から、取得したレッスン種別IDと一致するレッスン種別IDを格納するレコードを検索する。次いで、CPU21は、ステップS97に進む。
ステップS92において、CPU21は、絞り込み条件IDに基づいて、絞り込み条件がインストラクターであるか否かを判定する。このとき、CPU21は、絞り込み条件がインストラクターではないと判定した場合には(ステップS92:NO)、ステップS94に進む。一方、CPU21は、絞り込み条件がインストラクターであると判定した場合には(ステップS92:YES)、ステップS93に進む。ステップS93において、CPU21は、ステップS81で取得したレコードからインストラクターIDを取得する。次いで、ステップS82で取得したレコードの中から、取得したインストラクターIDと一致するインストラクターIDを格納するレコードを検索する。次いで、CPU21は、ステップS97に進む。
ステップS94において、CPU21は、絞り込み条件IDに基づいて、絞り込み条件が曜日であるか否かを判定する。このとき、CPU21は、絞り込み条件が曜日ではないと判定した場合には(ステップS94:NO)、ステップS96に進む。一方、CPU21は、絞り込み条件が曜日であると判定した場合には(ステップS94:YES)、ステップS95に進む。ステップS95において、CPU21は、ステップS81で取得したレコードから曜日IDを取得する。次いで、CPU21は、ステップS82で取得したレコードの中から、取得した曜日IDと一致する曜日IDを格納するレコードを検索する。次いで、CPU21は、ステップS97に進む。
ステップS96において、CPU21は、ステップS81で取得したレコードから開始時間を取得する。次いで、CPU21は、時間帯テーブルから、取得した開始時間を含む時間帯を取得する。次いで、CPU21は、ステップS82で取得したレコードの中から、取得した時間帯内にある開始時間を格納するレコードを検索する。次いで、CPU21は、ステップS97に進む。
ステップS97において、CPU21は、推薦リストをユーザ端末6へ送信する。具体的に、CPU21は、ステップS85、S91、S93、S95又はS96で検索されたレコードから、レッスンIDを取得する。次いで、CPU21は、取得したレッスンIDを含む推薦リストを生成する。次いで、CPU21は、生成した推薦リストを送信する。ユーザ端末6は、推薦リストに基づいて、推薦レッスン一覧270を表示する。CPU21は、ステップS97を終えると、推薦処理を終了させる。
以上説明したように、本実施形態によれば、CPU21が、閲覧レッスンの優先検索条件を決定し、検索利用者の優先検索条件を決定する。そして、CPU21が、閲覧レッスンの優先検索条件と検索利用者の優先検索条件とを満たす運動レッスンのレッスンIDを、推薦する運動レッスンのレッスンIDに決定する。そのため、検索41の検索傾向に合う検索条件と検索された運動レッスンの検索傾向に合う検索条件とを満たす運動レッスンを推薦することができる。
なお、上記実施形態においては、本発明の情報処理装置が配信サーバ2に適用されていた。しかしながら、本発明の情報処理装置が出力端末5に適用されてもよい。そして、出力端末5が、検索利用者に推薦する運動レッスンを決定してもよい。また、本発明の情報処理装置が出力端末5及び配信サーバ2に適用されてもよい。そして、出力端末5及び配信サーバ2は協働して処理を行ってもよい。