以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、運動を支援する運動レッスン支援システムに本発明を適用した場合の実施形態である。
[1.運動レッスン支援システム1の構成]
始めに、図1を参照して、本実施形態の運動レッスン支援システム1の構成について説明する。図1は、本実施形態の運動レッスン支援システム1の概要構成例を示す図である。図1に示すように、運動レッスン支援システム1は、配信サーバ2と1つ以上の出力端末5と受付端末6とを含んで構成されている。配信サーバ2と出力端末5とは、ネットワーク10を介して接続可能になっている。ネットワーク10は、例えば、インターネットを含む。配信サーバ2には、データベース3が接続されている。データベース3には、運動に関する情報や楽曲に関する情報が登録されている。配信サーバ2は、データベース3に登録されている情報等を、定期的に又は出力端末5からの要求に応じて出力端末5に配信する。配信サーバ2は、本発明の情報処理装置の一例である。
出力端末5は、例えば、施設4に設置される端末装置である。出力端末5は、例えばパーソナルコンピュータであってもよい。出力端末5は、施設4の利用者41により利用される。施設4は、例えば、スポーツ施設であってもよい。施設4においては、複数の利用者41が運動レッスンを受ける。運動レッスンは、複数の運動から構成されるレッスンである。施設4の中には、運動場所として、1つ以上のスタジオ8とマシンルーム9とがある。スタジオ8には、出力端末5及びモニタ57が設置される。スタジオ8は、モニタ57から出力される運動コンテンツに合わせて利用者41が運動を行うための部屋である。運動コンテンツは、運動を支援するための映像及び音声を含む。マシンルーム9には、複数の運動機器91が設置される。運動機器91は、運動に用いられる器具、器械等である。運動機器91の種類として、例えば、筋力トレーニングマシン、ランニングマシン、バイクマシン、ダンベル等がある。マシンルーム9は、利用者41が運動機器91を用いて運動を行うための部屋である。運動レッスンは、運動機器91を用いて行われる運動と、運動機器91を用いないで行われる運動とを含む場合がある。運動機器を用いて行われる運動を、マシン運動という。マシン運動は、本発明における第1運動の一例である。なお、運動機器91が持ち運び可能である場合、利用者41は、運動機器91をスタジオ8に持ち込んで、スタジオ8でマシン運動を行ってもよい。運動機器を用いないで行われる運動を、スタジオ運動という。スタジオ運動は、スタジオ8で行われる。スタジオ運動は、1又は複数の運動動作により構成される。スタジオ運動は、本発明における第2運動の一例である。スタジオ8は、本発明における運動場所の一例である。なお、スタジオ8の中に、ホットスタジオが含まれていてもよい。また、施設4の中に、水泳などの運動を行うためのプールがあってもよい。
出力端末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を操作することができる。操作者42は、例えば、インストラクターであってもよい。インストラクターは、本発明における補助者の一例である。
受付端末6は、利用者41から運動レッスンへの参加を受け付けるための端末装置である。受付端末6は、例えば、パーソナルコンピュータ、タブレット型コンピュータ等であってもよい。
[2.運動レッスンの参加可能な人数の決定]
例えば、インストラクターは、出力端末5を操作して、実施する運動レッスンの内容を決定する。例えば、インストラクターは、運動レッスンを構成する複数の運動を決定する。また、インストラクターは、例えば、各運動の実行時間を決定する。実行時間は、運動が行われる時間の長さである。インストラクターは、運動レッスンを構成する運動の1つとして、マシン運動を決定したとする。この場合、インストラクターは、例えば、マシン運動に用いる運動機器91の種類を決定する。または、インストラクターは、マシン運動の種類を決定してもよい。この場合、例えば出力端末5が、決定された種類のマシン運動に必要な運動機器91の種類を自動的に決定してもよい。また、インストラクターは、運動レッスンのスケジュールを決定する。例えば、インストラクターは、運動レッスンが行われる日付、時間等を決定する。ここで、運動レッスンに参加可能な利用者41の人数を決定する必要がある。運動レッスンに実際に参加する利用者41を、参加者という。しかしながら、運動レッスンがマシン運動を含む場合、参加可能な利用者41の人数は、施設4に設置されている運動機器91の数によって変化する。そこで、配信サーバ2は、運動機器91を効率的に利用するために、運動機器91の数に基づいて、マシン運動を実行可能な利用者41の人数を決定する。そして、配信サーバ2は、マシン運動を実行可能な利用者41の人数に基づいて、運動レッスンに参加可能な利用者41の人数を決定する。運動機器91の数に基づいて決定されるマシン運動を実行可能な利用者41の人数を、マシン制約定員という。運動レッスンに参加可能な利用者41の人数を、運動レッスンの定員という。なお、本実施形態においては、配信サーバ2が、運動レッスンの定員を決定する。しかしながら、出力端末5が運動レッスンの定員を決定してもよい。また、例えば、配信サーバ2及び配信サーバ2が協働して処理を行うことにより、定員を決定してもよい。
マシン制約定員を決定するための要素として、マシン運動に用いられる運動機器91の種類と、この種類の運動機器91の数とがある。施設4にある運動機器91の数は予め決まっている。この数を、所有数という。施設4にある運動機器91のうち、ある運動レッスンにおいて実際に利用可能な運動機器91の数は、その運動レッスンが行われる日及び時間によって変わる場合がある。その理由は、同一の時間帯に、同一種類の運動機器91を用いる複数の運動レッスンが行われる場合があるからである。運動レッスンを行うためには、必要な数の運動機器91を予約する必要がある。実際に利用可能な運動機器91の数を、確保可能機器数という。配信サーバ2は、運動レッスンを構成するマシン運動で用いられる種類の運動機器91の確保可能機器数を、マシン制約定員に決定する。運動レッスンを構成するマシン運動が複数あるために、運動レッスンの中で複数種類の運動機器91が用いられる場合がある。この場合、配信サーバ2は、各種類の運動機器91の確保可能機器数のうち、最も少ない確保可能機器数を、マシン制約定員に決定する。そして、マシン制約定員を決定した場合、配信サーバ2は、マシン制約定員以下の人数の範囲内で、運動レッスンの定員を決定する。これにより、運動レッスンの定員を適切に決定することができる。
運動レッスンの定員を決定するための要素として、運動機器91の数のほかに、インストラクターの人数がある。その理由は、利用者41が運動を行う際に、インストラクターが利用者41をサポートする必要がある場合があるからである。例えば、スタジオ運動において、インストラクターが参加者一人一人に対して運動動作の指導を行う場合がある。また、例えば、マシン運動において、インストラクターが、参加者一人一人に対して運動機器91の使い方を教える場合がある。また、例えば、インストラクターが、運動機器91用いた運動により身体にかかる負荷を利用者41ごとに調整する必要がある場合がある。このような場合、一人当たりのインストラクターがサポート可能な参加者の人数が限られる場合がある。そこで、運動レッスンにおいて、1人当たりのインストラクターがサポートする参加者の人数が設定される場合がある。この人数を、サポート人数という。サポート人数は、本発明における第2人数情報の一例である。例えば、運動レッスンを構成する運動ごとに、インストラクターは、1人当たりのインストラクターがサポート可能な参加者の人数を見積もる。そして、インストラクターは、例えば、見積もった人数のうち最も少ない人数を、サポート人数に設定する。運動レッスンが如何なる利用者41を対象とするかに応じて、サポート人数が変わる場合がある。例えば、運動の初心者と上級者とでは、サポート人数を変えた方がよい場合がある。運動レッスンを構成する全ての運動において、一人のインストラクターが参加者全員をサポートすることができる場合、サポート人数を設定する必要はない。
施設4に所属するインストラクターのうち、実際に利用者41をサポートすることが可能なインストラクターの人数は、日及び時間によって変わる場合がある。利用者41をサポートすることが可能なインストラクターの人数を、確保可能人数という。配信サーバ2は、運動レッスンが行われる日及び時間における確保可能人数と、その運動レッスンにおけるサポート人数とに基づいて、マシン運動を実行可能な利用者41の人数を決定する。この人数を、インストラクター制約定員という。具体的に、配信サーバ2は、確保可能人数をサポート人数に掛けて、インストラクター制約定員を計算する。マシン制約定員とインストラクター制約定員とを決定した場合、配信サーバ2は、例えば、マシン制約定員とインストラクター制約定員とのうち少ない方の人数以下の人数の範囲内で、運動レッスンの定員を決定する。
運動レッスンの定員を決定するための要素として、更にスタジオ8の収容人数がある。スタジオ8は、別の運動レッスンで利用するために既に予約されている場合がある。予約されていないスタジオ8を、確保可能スタジオという。マシン制約定員と確保可能スタジオとを決定した場合、配信サーバ2は、例えば、マシン制約定員と確保可能スタジオの収容人数のうち少ない方の人数以下の人数の範囲内で、運動レッスンの定員を決定する。
運動機器91、インストラクター及びスタジオ8は、運動レッスンを行うために必要なリソースといえる。配信サーバ2は、確保可能スタジオを特定し、マシン制約定員及びインストラクター制約定員を決定すると、確保可能スタジオの収容人数、マシン制約定員及びインストラクター制約定員に基づいて、運動レッスンの定員を決定する。具体的に、配信サーバ2は、収容人数、マシン制約定員及びインストラクター制約定員のうち、最も少ない人数を、運動レッスンの定員に決定する。
次に、具体例を説明する。図2(A)は、運動レッスンの定員が決定される様子の一例を示す図である。運動レッスンが、スタジオ運動A、マシン運動B、スタジオ運動Cで構成されているとする。マシン運動Bでは、運動機器Xが使用される。また、サポート人数として3が設定されている。運動レッスンが行われる時間において、運動機器Xの確保可能機器数は、20である。そこで、配信サーバ2は、マシン制約定員として、20人を決定する。また、インストラクターの確保可能人数が10人である。そこで、配信サーバ2は、インストラクター制約定員として、30人を決定する。また、スタジオ8として、スタジオJ〜Mがある。スタジオJの収容人数は10人である。スタジオKの収容人数は20人である。スタジオLの収容人数は30人である。スタジオMの収容人数は40人である。スタジオJ〜Mのうち、確保可能スタジオは、スタジオJ、L、Mである。従って、最大の収容人数は、40人である。確保可能スタジオの収容人数、マシン制約定員及びインストラクター制約定員のうち、マシン制約定員が最も少ない。そこで、配信サーバ2は、運動レッスンの定員として、20人を決定する。例えば、確保可能スタジオは、スタジオJのみであったとする。この場合、収容人数が最も少ないため、配信サーバ2は、運動レッスンの定員として10人を決定する。また、例えば、確保可能人数5人であったとする。この場合、インストラクター制約定員は、15人になる。この場合、インストラクター制約定員が最も少ないため、配信サーバ2は、運動レッスンの定員として15人を決定する。
定員を決定すると、配信サーバ2は、運動レッスンを行うために必要なリソースを予約する。具体的に、配信サーバ2は、定員に相当する20台の運動機器Xを予約する。また、20人の利用者41をサポートするため、インストラクターは7人必要である。従って、配信サーバ2は、インストラクターを7人予約する。また、スタジオJ、L、Mのうち、20人を収容可能なスタジオ8は、スタジオL、Mである。配信サーバ2は、スタジオ8を効率よく利用するため、複数のスタジオ8のうち、収容人数が定員以上であって、且つ、収容人数が最も少ないスタジオ8を予約する。この例の場合、配信サーバ2は、収容人数が30人であるスタジオLを予約する。
ところで、運動レッスンが複数の運動で構成されている場合、参加者を2以上のグループに分け、グループごとに異なる順序で複数の運動を並行して実行させることができる。このときに、ある運動機器91を用いるマシン運動を行う時間を、グループごと重ならないようにすることができる場合がある。この場合、参加者全員が同一種類の運動機器91を同時に利用する必要がない。すると、運動レッスンにおいて、確保可能機器数よりも多い人数の参加者が、運動機器91を利用することができる。従って、マシン制約定員を、確保可能機器数よりも多くすることができる。そこで、配信サーバ2は、参加者を複数のグループに分けた場合に、複数のグループ間で同一種類の運動機器91を用いてマシン運動を行う時間が重ならない実行順序があるかを判定する。このような実行順序を、複数グループ並行運動可能実行順序という。そして、配信サーバ2は、複数グループ並行運動可能実行順序がある場合、確保可能機器数とグループ数とに基づいて、マシン制約定員を決定する。具体的に、配信サーバ2は、確保可能機器数にグループ数を掛けて、マシン制約定員を計算する。これにより、マシン制約定員を増加させることができるとともに、運動レッスンの定員を増加させることができる。
なお、配信サーバ2は、運動レッスンへの参加が申し込まれていない段階では、マシン制約定員を増加させない。配信サーバ2は、運動レッスンに参加する利用者41の人数が所定数以上になったときに、マシン制約定員を増加させ、運動レッスンの定員を増加させる。これを、定員の拡張という。その理由は、定員を拡張した場合、拡張後の定員に対応するスタジオ8及びインストラクターを予約する必要があるからである。運動レッスンの参加者が少ない場合、拡張前の定員に対応するスタジオ8及びインストラクターを予約することで、スタジオ8及びインストラクターを効率的に利用することができる。配信サーバ2は、例えば、参加者数が定員に達したときに、定員を拡張してもよい。また、配信サーバ2は、例えば、定員と参加者数との差が所定値以下となったときに、定員を拡張してもよい。
以下に具体例を説明する。図2(B)は、マシン制約定員が決定される様子の一例を示す図である。運動レッスンが、スタジオ運動A、マシン運動B、スタジオ運動C、マシン運動D、スタジオ運動Eで構成されているとする。マシン運動Bでは、運動機器Xが使用される。マシン運動Dでは、運動機器Yが使用される。スタジオ運動A及びCの実行時間はそれぞれ10分である。マシン運動B及びDの実行時間はそれぞれ15分である。スタジオ運動Eの実行時間は5分である。ここで、参加者をグループG1とグループG2とに分けるとする。グループG1の運動の実行順を、スタジオ運動A、マシン運動B、スタジオ運動C、マシン運動D、スタジオ運動Eとする。一方、グループG2の運動の実行順を、スタジオ運動C、マシン運動D、スタジオ運動A、マシン運動B、スタジオ運動Eとする。すると、グループG1とG2との間で、運動機器Xを利用する時間が重ならず、且つ、運動機器Yを利用する時間が重ならない。この場合においては、同じスタジオ8で、スタジオ運動AとCとが並行して行われることになる。この場合、配信サーバ2は、例えば、ディスプレイ67の画面を2つに分割し、スタジオ運動Aの運動映像とスタジオ運動Cの運動映像とを同時に表示させてもよい。
ここで、運動機器Xの確保可能機器数が20であり、運動機器Yの確保可能機器数が15であるとする。この場合、配信サーバ2は、最も少ない確保可能機器数である15に、グループ数である2を掛ける。そして、配信サーバ2は、マシン制約定員として、30人を決定する。なお、本実施形態では、参加者は2つのグループに分けられる。しかしながら、参加者が3つ以上のグループに分けられてもよい。
複数グループ並行運動可能実行順序があるかを判定する方法は種々考えられる。例えば、運動レッスンを構成する複数の運動と各運動の実行時間とが決定された後に、インストラクターが、運動の実行順序をグループごとに設定してもよい。このとき、インストラクターは、グループ間で同一種類の運動機器91を用いてマシン運動を行う時間が重ならないように実行順序を設定する。例えば、出力端末5は、レッスン情報を生成する。レッスン情報は、運動レッスンの内容を定めた情報である。運動レッスンの内容として、例えば、運動レッスンを構成する複数の運動、各運動の実行時間、実行順序等がある。また、レッスン情報は、グループ化可能フラグを含む。グループ化可能フラグは、参加者を複数のグループに分けることが可能であるか否かを示す情報である。インストラクターにより複数のグループについて運動の実行順序が設定された場合、グループ化可能フラグはTRUEに設定される。複数のグループについて運動の実行順序が設定されなかった場合、グループ化可能フラグはFALSEに設定される。配信サーバ2は、グループ化可能フラグがTRUEである場合、複数グループ並行運動可能実行順序があると判定する。なお、レッスン情報の詳細については後述する。
また、配信サーバ2が、実行順序を自動的に決定してもよい。例えば、配信サーバ2は、複数の順序情報を生成する。1つの順序情報が、運動レッスンを構成する複数の運動の実行順序を示す。配信サーバ2は、実行順序が互いに異なる複数の順序情報を生成する。配信サーバ2は、グループ数に相当する数の順序情報を組み合わせる。このときに、配信サーバ2は、組み合わせた順序情報が示す実行順序と、運動レッスンを構成する各運動の実行時間とに基づいて、同一のマシン運動が実行される時間が重なるか否かを判定する。配信サーバ2は、同一のマシン運動が実行される時間が重ならないと判定した場合、複数グループ並行運動可能実行順序があると判定する。配信サーバ2は、如何なる順序情報を組み合わせたとしても、同一のマシン運動が実行される時間が重なる場合、複数グループ並行運動可能実行順序がないと判定する。
なお、配信サーバ2が決定可能な実行順序が制限されていてもよい。例えば、インストラクターは、運動レッスンを構成する複数の運動の中で、決められた順序で実行する必要がある運動を設定してもよい。例えば、インストラクターは、マシン運動として筋力トレーニングを行った後、次にスタジオ運動として有酸素運動を行うように設定する。配信サーバ2は、インストラクターにより設定された運動が決められた順序で実行されるように、実行順序を決定する。また、例えば、配信サーバ2は、運動レッスンを構成する複数の運動をグループ化してもよい。例えば、上半身を鍛える運動のグループと、下半身を鍛える運動のグループとに分けられてもよい。例えば、インストラクターは、運動レッスンを構成する運動を設定するときに、身体のどの部位を鍛える運動であるかを設定してもよい。配信サーバ2は、グループ化された運動が連続して実行されるように、実行順序を決定してもよい。
配信サーバ2は、複数グループ並行運動可能実行順序があると判定した運動レッスンの参加者のグループ分けを行ってもよい。具体的に、配信サーバ2は、参加者の情報に基づいてグループ分けを行う。このとき、配信サーバ2は、1つのグループの人数が、利用する運動機器91の確保可能機器数以下となるように、グループ分けする。例えば、配信サーバ2は、参加者の年齢に基づいて、グループ分けをしてもよい。例えば、15歳未満の参加者と60歳を超える参加者を、グループG1とし、その他の参加者をグループG2としてもよい。また、例えば、配信サーバ2は、性別でグループ分けしてもよい。配信サーバ2は、運動レッスンで行われる運動の負荷を、グループごとに変えてもよい。例えば、運動レッスンを構成する運動の中に、スタジオ運動としてステップ運動があるとする。例えば、グループG1は、身体の動作が小さいステップ運動を行い、グループG2は、身体の動作が大きいステップ運動を行う。配信サーバ2は、運動映像をディスプレイ67に表示させるとき、身体の動作が小さいステップ運動を行うフィギュア83と、身体の動作が大きいステップ運動を行うフィギュア83とを同時に表示させてもよい。
[3.各装置の構成]
次に、図1を参照して、運動レッスン支援システムに含まれる各装置の構成について説明する。
[3−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は、本発明における第1記憶手段、第3記憶手段、第4記憶手段の一例である。データベース3には、施設情報、会員情報、モーションデータ、楽曲データ等のデータが登録されている。施設情報は、施設に関する情報である。施設情報は、施設4ごとに記憶される。施設情報は、運動場所情報、運動機器情報、インストラクター情報、予定表情報を含む。運動場所情報は、施設4が有する運動場所としてのスタジオ8に関する情報である。具体的に、運動場所情報には、場所ID、スタジオの名称、収容人数等が、スタジオ8ごとに登録される。場所IDは、スタジオ8の識別情報である。運動場所情報は、本発明における収容情報の一例である。運動機器情報は、施設4が有する運動機器91に関する情報である。具体的に、運動機器情報には、機器種別、運動機器91の名称、所有数等が、運動機器91の種類ごとに登録される。機器種別は、運動機器91の種類を示す識別情報である。所有数は、施設4が有する運動機器91の数である。インストラクター情報は、施設4に所属するインストラクターに関する情報である。具体的に、インストラクター情報には、インストラクターID、インストラクターの氏名等が、インストラクターごとに登録される。インストラクターIDは、インストラクターの識別情報である。
会員情報は、利用者41に関する情報である。会員情報は、利用者41ごとに登録される。具体的に、会員情報には、会員ID、氏名、年齢、性別等が登録される。会員IDは、利用者41を識別する識別情報である。
予定表情報は、レッスン予定表情報及びリソース予定表情報を含む。レッスン予定表情報は、運動レッスンの予定表を示す情報である。具体的に、レッスン予定表情報には、レッスンID、運動レッスンの名称、実施日、開始時刻、終了時刻、リソース予約状態、場所ID、定員拡張状態、定員、参加者数等が実施予定の運動レッスンごとに対応付けて登録される。レッスンIDは、運動レッスンの識別情報である。実施日は、運動レッスンが行われる日である。開始時刻及び終了時刻は、運動レッスンが行われる時間帯を示す。リソース予約状態は、運動レッスンを行うためのリソースが予約されているか否かを示す。リソース予約状態は、未予約又は予約済が設定される。場所IDは、運動レッスンで利用されるスタジオ8を示す。場所IDは、リソースが予約された場合に設定される。定員拡張状態は、運動レッスンの定員が拡張されているか否かを示す。定員拡張状態は、未拡張又は拡張済が設定される。
リソース予定表情報は、運動場所予定表情報、運動機器予定表情報、インストラクター予定表情報を含む。運動場所予定表情報は、スタジオ8の予約状況を示す。運動場所予定表情報は、スタジオ8ごとに、場所IDと対応付けて登録される。具体的に、運動場所予定表情報には、日付及び予約単位となる時間帯ごとに、予約状態とレッスンIDとの組が登録されている。予約状態は、対応付けられた日付及び時間帯におけるスタジオ8の予約の状態を示す。予約状態は、未予約、仮予約又は予約済の何れかに設定される。レッスンIDは、スタジオ8が仮予約又は予約された運動レッスンを示す。予約単位となる時間帯の長さは、例えば、30分等であってもよい。
運動機器予定表情報は、運動機器91の予約状況を示す。運動機器予定表情報は、運動機器91の種類ごとに、機器種別と対応付けて登録される。具体的に、運動機器予定表情報には、日付及び予約単位となる時間帯ごとに、予約状態とレッスンIDとの組が、機器種別に対応する運動機器91の所有数分登録される。1つの組が、1台の運動機器91に対応する。予約状態は、未予約、仮予約又は予約済の何れかに設定される。所有数分の予約状態のうち、未予約に設定されている予約状態の数が、確保可能機器数に相当する。レッスンIDは、運動機器91が仮予約又は予約された運動レッスンを示す。運動機器予定表情報は、本発明における機器情報の一例である。
インストラクター予定表情報は、インストラクターの予約状況を示す。インストラクター予定表情報は、インストラクターごとに、インストラクターIDと対応付けて登録される。具体的に、インストラクター予定表情報には、日付及び予約単位となる時間帯ごとに、予約状態とレッスンIDとの組が登録される。予約状態は、対応付けられた日付及び時間帯におけるインストラクターの予約の状態を示す。予約状態は、未予約、仮予約又は予約済の何れかに設定される。全てのインストラクターのうち、予約状態が未予約に設定されているインストラクターの数が、確保可能インストラクター数に相当する。レッスンIDは、インストラクターが仮予約又は予約された運動レッスンを示す。インストラクター予定表情報は、本発明における第1人数情報の一例である。
モーションデータは、三次元仮想空間におけるフィギュア83の運動動作を定義するデータである。モーションデータは、ディスプレイ67にフィギュア83の運動動作を表示させるためのデータである。モーションデータは、運動動作の進行に応じたフィギュア83の身体の各部の座標を含む。モーションデータは、モーション情報と対応付けて登録される。モーション情報は、運動動作を示す識別情報である。楽曲データは、スピーカ64により楽曲を出力するための演奏データである。楽曲データは、例えば、MIDI(Musical Instrument Digital Interface)形式のデータであってもよい。
HDD37は、本発明における第2記憶手段の一例である。HDD37には、出力端末5からアップロードされたレッスン情報が記憶される。また、HDD37には、OS、施設管理プログラム等の各種プログラム等が記憶されている。施設管理プログラムは、施設4の運営を支援するためのプログラムである。施設管理プログラムは、コンピュータとしてのCPU21に、第1決定ステップと、第2決定ステップとを少なくとも実行させる。各種プログラムは、例えば、所定のサーバ装置からネットワーク10を介してダウンロードされるようにしてもよい。また、各種プログラムは、記録媒体29に記録されてディスクドライブ28を介して読み込まれるようにしてもよい。
[3−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には、レッスン情報が記憶される。例えば、インストラクターの操作に基づいて、出力端末5がレッスン情報を生成する。レッスン情報は、例えば、レッスンID、運動レッスンの名称、レッスン実行時間、サポートフラグ、サポート人数、運動機器利用フラグ、運動機器リスト、複数の運動ユニット情報、グループ化可能フラグ、グループ数、順序情報等を含む。レッスン実行時間は、運動レッスンが行われる時間の長さである。サポートフラグは、運動レッスンが、インストラクターによるサポートが必要な運動を含むか否かを示す情報である。インストラクターがサポート人数を設定した場合、サポートフラグはTRUEに設定される。インストラクターがサポート人数を設定しなかった場合、サポートフラグはFALSEに設定される。運動機器利用フラグは、運動レッスンで運動機器91が利用されるか否かを示す情報である。運動レッスンがマシン運動を含む場合、運動機器利用フラグはTRUEに設定される。運動レッスンがマシン運動を含まない場合、運動機器利用フラグはFALSEに設定される。運動機器リストは、運動レッスンで利用される運動機器91の機器種別のリストである。運動機器利用フラグがTRUEである場合、運動機器リストが設定される。運動ユニット情報は、運動レッスンを構成する運動に関する情報である。運動ユニット情報は、運動レッスンを構成する運動の数分設定される。運動ユニット情報は、運動ID、運動種別及び実行時間等を含む。運動IDは、運動の識別情報である。運動種別は、運動の種類を示す。運動種別として、マシン運動とスタジオ運動がある。運動種別がマシン運動である場合、運動ユニット情報は、更に機器種別を含む。機器種別は、マシン運動で利用される運動機器91の種類である。運動ユニット情報に設定される機器種別と同一の機器種別が、運動機器リストの中にも設定される。運動種別がスタジオ運動である場合、運動ユニット情報は、更に1つ以上のモーション情報及び楽曲IDを含む。モーション情報は、スタジオ運動を構成する運動動作を示す。楽曲IDは、スタジオ運動を行っているときに出力される楽曲を示す。グループ数は、グループ化可能フラグがTRUEである場合に設定される。本実施形態では、グループ数として2が設定される。順序情報は、運動レッスンを構成する複数の運動のそれぞれ運動IDを含む。順序情報において、複数の運動IDは、複数の運動の実行順i並べられている。グループ化可能フラグがFALSEであるとき、1つの順序情報が設定される。この場合の順序情報は、参加者全員による運動の実行順序を示す。グループ化可能フラグがTRUEであるとき、グループ数分の順序情報が設定される。出力端末5は、レッスン情報を生成すると、例えば、レッスン情報を配信サーバ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に表示される。
[4.運動レッスン支援システム1の動作]
次に、図3乃至図7を参照して、運動レッスン支援システム1の動作を説明する。図3(A)は、配信サーバ2のCPU21の運動レッスン実施準備処理の処理例を示すフローチャートである。例えば、インストラクターは、運動レッスンのスケジュールを設定する。例えば、インストラクターは、出力端末5を操作して、所望の運動レッスンを選択する。また、インストラクターは、運動レッスンの実施日、開始時刻等を設定する。出力端末5は、選択された運動レッスンのレッスンID、実施日、開始時刻等を配信サーバ2へ送信する。CPU21は、レッスンID、実施日、開始時刻等を受信したときに、運動レッスン実施準備処理を開始してもよい。
また、例えば、CPU21は、レッスン予定表情報に基づいて、所定時間後に運動レッスンが開始されるかを定期的に判定する。例えば、CPU21は、1時間後等に運動レッスンが開始されるかを判定してもよい。CPU21は、所定時間後に運動レッスンが開始されると判定したときに、運動レッスン実施準備処理を開始してもよい。
図3(A)に示すように、CPU21は、対象となる運動レッスン及び時間帯を特定する(ステップS1)。例えば、インストラクターが運動レッスンのスケジュールを設定した場合、対象となる運動レッスンは、出力端末5から受信されたレッスンIDが示す運動レッスンである。この場合、CPU21は、受信したレッスンIDに対応するレッスン情報から、運動レッスンの実行時間を取得する。CPU21は、開始時刻と実行時間に基づいて、終了時刻を計算する。CPU21は、レッスン情報のレッスンID、実施日、開始時刻、終了時刻、リソース予約状態、定員拡張状態等を、レッスン予定表情報に登録する。このとき、CPU21は、リソース予約済状態を未予約に設定し、定員拡張状態を未拡張に設定する。例えば、所定時間後に運動レッスンが開始される場合、対象となる運動レッスンは、所定時間後に開始される運動レッスンである。CPU21は、レッスン予定表情報から、開始される運動レッスンのレッスンID、実施日、開始時刻、終了時刻、リソース予約状態等を取得する。
次いで、CPU21は、対象の運動レッスンのリソース予約状態が予約済であるか否かを判定する(ステップS2)。このとき、CPU21は、リソース予約状態が予約済であると判定した場合には(ステップS2:YES)、ステップS5に進む。一方、CPU21は、リソース予約状態が未予約であると判定した場合には(ステップS2:NO)、ステップS3に進む。
ステップS3において、CPU21は、リソース・定員決定処理を実行する。リソース・定員決定処理において、CPU21は、対象の運動レッスンの定員を決定し、リソースを予約する。リソース・定員決定処理の詳細については後述する。次いで、CPU21は、リソース・定員決定処理でリソースを予約することができたか否かを判定する(ステップS4)。このとき、CPU21は、リソースを予約することができたと判定した場合には(ステップS4:YES)、ステップS5に進む。一方、CPU21は、リソースを予約することができなかったと判定した場合には(ステップS4:NO)、ステップS6に進む。
ステップS5において、CPU21は、参加受付処理を実行する。参加受付処理において、CPU21は、対象の運動レッスンへの参加を受け付ける処理を行う。参加受付処理の詳細については省略する。CPU21は、ステップS5の処理を終えると、運動レッスン実施準備処理を終了させる。ステップS6において、CPU21は、対象の運動レッスンが実施することができない旨を示すメッセージを、出力端末5へ送信する。出力端末5は、受信したメッセージを、ディスプレイ67に表示させる。CPU21は、ステップS6の処理を終えると、運動レッスン実施準備処理を終了させる。
図3(B)は、配信サーバ2のCPU21のリソース・定員決定処理の処理例を示すフローチャートである。図3(B)に示すように、CPU21は、運動場所仮予約処理を実行する(ステップS11)。具体的に、CPU21は、運動場所予定表情報から、対象の運動レッスンの開始時刻から終了時刻までの間、予約状態が未予約であるスタジオ8を、確保可能スタジオとして検索する。このとき、確保可能スタジオが存在しない場合、CPU21は、仮予約結果として失敗を設定する。一方、確保可能スタジオが存在する場合、CPU21は、確保可能スタジオの運動場所予定表情報において、運動レッスンの開始時刻から終了時刻までの予約状態及びレッスンIDを、仮予約及び対象の運動レッスンのレッスンIDに変更する。そして、CPU21は、仮予約したスタジオ8の場所IDを、運動場所予定表情報から取得する。この場合、CPU21は、仮予約結果として成功を設定する。
次いで、CPU21は、仮予約結果が成功であるか否かを判定する(ステップS12)。このとき、CPU21は、仮予約結果が成功であると判定した場合には(ステップS12:YES)、ステップS13に進む。一方、CPU21は、仮予約結果が失敗であると判定した場合には(ステップS12:NO)、ステップS18に進む。
ステップS13において、CPU21は、運動機器仮予約処理を実行する。運動機器仮予約処理において、CPU21は、運動機器91を仮予約する。運動機器仮予約処理の詳細については後述する。次いで、CPU21は、運動機器91の仮予約結果が成功であるか否かを判定する(ステップS14)。このとき、CPU21は、仮予約結果が成功であると判定した場合には(ステップS14:YES)、ステップS15に進む。一方、CPU21は、仮予約結果が失敗であると判定した場合には(ステップS14:NO)、ステップS18に進む。
ステップS15において、CPU21は、インストラクター仮予約処理を実行する。インストラクター仮予約処理において、CPU21は、インストラクターを仮予約する。CPU21は、インストラクター仮予約処理の詳細については後述する。次いで、CPU21は、インストラクターの仮予約結果が成功であるか否かを判定する(ステップS16)。このとき、CPU21は、仮予約結果が成功であると判定した場合には(ステップS16:YES)、ステップS17に進む。一方、CPU21は、仮予約結果が失敗であると判定した場合には(ステップS16:NO)、ステップS18に進む。
ステップS17において、CPU21は、定員確定・リソース予約処理を実行する。定員確定・リソース予約処理において、CPU21は、仮予約したリソースに基づいて、対象の運動レッスンの定員を確定する。また、CPU21は、定員に基づいて、リソースを正式に予約する。次いで、CPU21は、ステップS18に進む。ステップS18において、CPU21は、仮予約したリソースを解放する。具体的に、CPU21は、運動場所予定表情報において、対象の運動レッスンのレッスンIDに対応付けて仮予約に設定されている予約状態を、未予約に変更する。また、CPU21は、運動機器予定表情報において、対象の運動レッスンのレッスンIDに対応付けて仮予約に設定されている予約状態を、未予約に変更する。また、CPU21は、インストラクター予定表情報において、対象の運動レッスンのレッスンIDに対応付けて仮予約に設定されている予約状態を、未予約に変更する。CPU21は、ステップS18の処理を終えると、リソース・定員決定処理を終了させる。
図4(A)は、配信サーバ2のCPU21の運動機器仮予約処理の処理例を示すフローチャートである。図4(A)に示すように、CPU21は、対象の運動レッスンのレッスン情報に含まれる運動機器利用フラグに基づいて、対象の運動レッスンにおいて運動機器91が必要であるか否かを判定する(ステップS21)。このとき、CPU21は、運動機器91が必要であると判定した場合には(ステップS21:YES)、ステップS22に進む。一方、CPU21は、運動機器91が必要ではないと判定した場合には(ステップS21:NO)、ステップS27に進む。
ステップS22において、CPU21は、対象の運動レッスンで必要な種類の運動機器91の確保可能機器数を取得する。具体的に、CPU21は、レッスン情報に含まれる運動機器リストから機器種別を取得する。次いで、CPU21は、機器種別に対応する運動機器予定表情報から、対象の運動レッスンの開始時刻から終了時刻までの間、予約状態が未予約である運動機器91を検索する。CPU21は、予約状態が未予約である運動機器91の数を、確保可能機器数としてカウントする。CPU21は、運動機器リストに登録されている機器種別ごとに確保可能機器数をカウントする。
次いで、CPU21は、必要な運動機器91の機器種別の全てについて確保可能機器数が0よりも多いか否かを判定する(ステップS23)。このとき、CPU21は、全ての確保可能機器数が0よりも多いと判定した場合には(ステップS23:YES)、ステップS25に進む。一方、CPU21は、少なくとも1つの確保可能機器数が0であると判定した場合には(ステップS23:NO)、ステップS24に進む。ステップS24において、CPU21は、仮予約結果として失敗を設定する。CPU21は、ステップS24の処理を終えると、運動機器仮予約処理を終了させる。
ステップS25において、CPU21は、全ての確保可能機器数のうち、最も少ない確保可能機器数で、各種類の運動機器91を仮予約する。具体的に、CPU21は、機器種別に対応する運動機器予定表情報において、対象の運動レッスンの開始時刻から終了時刻に含まれる予約状態及びレッスンIDを、仮予約及び対象の運動レッスンのレッスンIDに変更する。CPU21は、この処理を、最も少ない確保可能機器数分行う。次いで、CPU21は、最も少ない確保可能機器数を、マシン制約定員に設定する(ステップS26)。次いで、CPU21は、仮予約結果として成功を設定する(ステップS27)。CPU21は、ステップS27の処理を終えると、運動機器仮予約処理を終了させる。
図4(B)は、配信サーバ2のCPU21のインストラクター仮予約処理の処理例を示すフローチャートである。図4(B)に示すように、CPU21は、対象の運動レッスンのレッスン情報に含まれるサポートフラグフラグに基づいて、対象の運動レッスンにおいて、利用者41をサポートするインストラクターが必要であるか否かを判定する(ステップS31)。このとき、CPU21は、インストラクターが必要であると判定した場合には(ステップS31:YES)、ステップS32に進む。一方、CPU21は、インストラクターが必要ではないと判定した場合には(ステップS31:NO)、ステップS37に進む。
ステップS32において、CPU21は、確保可能人数を取得する。具体的に、CPU21は、インストラクター予定表情報から、対象の運動レッスンの開始時刻から終了時刻までの間、予約状態が未予約であるインストラクターを検索する。CPU21は、予約状態が未予約であるインストラクターの数を、確保可能人数としてカウントする。
次いで、CPU21は、確保可能人数が0よりも多いか否かを判定する(ステップS33)。このとき、CPU21は、確保可能人数が0よりも多いと判定した場合には(ステップS33:YES)、ステップS35に進む。一方、CPU21は、確保可能人数が0であると判定した場合には(ステップS33:NO)、ステップS34に進む。ステップS34において、CPU21は、仮予約結果として失敗を設定する。CPU21は、ステップS34の処理を終えると、インストラクター仮予約処理を終了させる。
ステップS35において、CPU21は、確保可能なインストラクターを全て仮予約する。具体的に、CPU21は、確保可能なインストラクターのインストラクター予定表情報において、対象の運動レッスンの開始時刻から終了時刻までの予約状態及びレッスンIDを、仮予約及び対象の運動レッスンのレッスンIDに変更する。次いで、CPU21は、レッスン情報から、サポート人数を取得する。次いで、CPU21は、確保可能人数にサポート人数を掛けて、インストラクター制約定員を計算する(ステップS36)。次いで、CPU21は、仮予約結果として成功を設定する(ステップS37)。CPU21は、ステップS37の処理を終えると、インストラクター仮予約処理を終了させる。
図5は、配信サーバ2のCPU21の定員確定・リソース予約処理の処理例を示すフローチャートである。図5に示すように、CPU21は、マシン制約定員とインストラクター制約定員のうち、少ない方の定員を、仮定員に決定する(ステップS41)。このとき、対象の運動レッスンにおいてサポートするインストラクターが必要ではない場合、CPU21は、マシン制約定員を仮定員に決定する。対象の運動レッスンにおいて運動機器91が必要ではない場合、CPU21は、インストラクター制約定員を仮定員に決定する。運動機器91及びインストラクターの何れも必要ではない場合、CPU21は、例えば、収容人数が最大のスタジオ8の収容人数を、仮定員に決定する。次いで、CPU21は、仮予約された各スタジオ8の収容人数を、運動場所情報から取得する。次いで、CPU21は、仮予約されたスタジオ8のうち、収容人数が最大のスタジオ8を、予約候補として選択する(ステップS42)。
次いで、CPU21は、予約候補のスタジオ8の収容人数が仮定員以下であるか否かを判定する(ステップS43)。このとき、CPU21は、収容人数が仮定員以下であると判定した場合には(ステップS43:YES)、ステップS44に進む。一方、CPU21は、収容人数が仮定員よりも多いと判定した場合には(ステップS43:NO)、ステップS45に進む。ステップS44において、CPU21は、対象の運動レッスンの定員として、予約候補のスタジオ8の収容人数を設定する。次いで、CPU21は、ステップS49に進む。
ステップS45において、CPU21は、仮予約されたスタジオ8の中で、予約候補のスタジオ8の次に収容人数が多いスタジオ8があるか否かを判定する。このとき、CPU21は、次に収容人数が多いスタジオ8があると判定した場合には(ステップS45:YES)、ステップS46に進む。一方、CPU21は、次に収容人数が多いスタジオ8がないと判定した場合には(ステップS45:NO)、ステップS48に進む。ステップS46において、CPU21は、予約候補のスタジオ8の次に収容人数が多いスタジオ8の収容人数が仮定員よりも少ないか否かを判定する。このとき、CPU21は、収容人数が仮定員よりも少ないと判定した場合には(ステップS46:YES)、ステップS48に進む。一方、CPU21は、収容人数が仮定員以上であると判定した場合には(ステップS46:NO)、ステップS47に進む。ステップS47において、CPU21は、次に収容人数が多いスタジオ8を、予約候補のスタジオ8として選択する。次いで、CPU21は、ステップS43に進む。ステップS48において、CPU21は、対象の運動レッスンの定員として、仮定員を設定する。次いで、CPU21は、ステップS49に進む。
ステップS49において、CPU21は、リソースを正式に予約する。CPU21は、予約候補のスタジオ8を、予約するスタジオ8として決定する。そして、CPU21は、予約するスタジオ8のスタジオ予定表において、対象の運動レッスンの開始時刻から終了時刻まで仮予約に設定されていた予約状態を、予約済に変更する。次いで、CPU21は、仮予約した運動機器91のうち定員数分の運動機器91を予約する。具体的に、CPU21は、仮予約した運動機器91の機器種別に対応する運動機器予定表情報において、対象の運動レッスンの開始時刻から終了時刻まで仮予約に設定されていた予約状態を、予約済に変更する。CPU21は、この処理を、定員数分行う。次いで、CPU21、仮予約したインストラクターのうち定員数分の利用者41をサポートするインストラクターを予約する。具体的に、CPU21は、定員をサポート人数で割ることにより、予約するインストラクターの人数を計算する。次いで、CPU21は、仮予約したインストラクターのインストラクター予定表情報において、対象の運動レッスンの開始時刻から終了時刻まで仮予約に設定されていた予約状態を、予約済に変更する。CPU21は、この処理を、予約するインストラクターの人数分行う。また、CPU21は、対象の運動レッスンのリソース予約状態を、予約済に変更する。CPU21は、ステップS49の処理を終えると、定員確定・リソース予約処理を終了させる。
図6は、配信サーバ2のCPU21の参加受付処理の処理例を示すフローチャートである。図6に示すように、CPU21は、対象の運動レッスンの現在の参加予定数を0に設定する(ステップS51)。次いで、CPU21は、利用者41からの参加入力が行われるまで所定時間待機する(ステップS52)。利用者41は、受付端末6を操作して、参加入力を行う。例えば、利用者41は、利用者41の会員IDを入力する。受付端末6は、入力された会員IDを含む参加リクエストを、配信サーバ2へ送信する。CPU21は、参加リクエストを受信した場合、ステップS53に進む。また、CPU21は、所定時間待機しても参加リクエストを受信しなかった場合にも、ステップS53に進む。ステップS53において、CPU21は、参加入力が行われたか否かを判定する。このとき、CPU21は、参加リクエストを受信した場合には、参加入力が行われたと判定する(ステップS53:YES)。この場合、CPU21は、ステップS54に進む。一方、CPU21は、参加リクエストを受信しなかった場合には、参加入力が行われなかったと判定する(ステップS53:NO)。この場合、CPU21は、ステップS60に進む。
ステップS54において、CPU21は、対象の運動レッスンの定員が現在の参加予定数よりも多いか否かを判定する。このとき、CPU21は、定員が現在の参加予定数よりも多いと判定した場合には(ステップS54:YES)、ステップS58に進む。一方、CPU21は、定員が現在の参加予定数以下である判定した場合には(ステップS54:NO)、ステップS55に進む。ステップS55において、CPU21は、定員拡張処理を実行する。定員拡張処理において、CPU21は、対象の運動レッスンの参加者を複数のグループに分けることが可能である場合には、対象の運動レッスンの定員を拡張する。定員拡張処理の詳細については、後述する。次いで、CPU21は、定員の拡張が成功したか否かを判定する(ステップS56)。このとき、CPU21は、定員の拡張が成功したと判定した場合には(ステップS56:YES)、ステップS58に進む。一方、CPU21は、定員の拡張が失敗したと判定した場合には(ステップS56:NO)、ステップS57に進む。
ステップS57において、CPU21は、参加を受け付けられない旨のメッセージを、受信端末6へ送信する。受信端末6は、受信したメッセージを表示する。次いで、CPU21は、ステップS52に進む。ステップS58において、CPU21は、現在の参加予定人数に1を加算する。次いで、CPU21は、参加を受け付けた旨のメッセージを、受信端末6へ送信する(ステップS59)。受信端末6は、受信したメッセージを表示する。次いで、CPU21は、ステップS52に進む。
ステップS60において、CPU21は、対象の運動レッスンの締め切り時間が経過したか否かを判定する。例えば、締め切り時間は、運動レッスンの開始時刻の10分前等であってもよい。CPU21は、締め切り時間が経過していないと判定した場合には(ステップS60:NO)、ステップS52に進む。一方、CPU21は、締め切り時間が経過したと判定した場合には(ステップS60:YES)、ステップS61に進む。ステップS61において、CPU21は、現在の参加予定人数を、対象の運動レッスンの最終的な参加者数として決定する。CPU21は、ステップS61の処理を終えると、参加受付処理を終了させる。
図7は、配信サーバ2のCPU21の定員拡張処理の処理例を示すフローチャートである。図7に示すように、CPU21は、対象の運動レッスンの定員拡張状態が拡張済であるか否かを判定する(ステップS61)。このとき、CPU21は、定員拡張状態が拡張済であると判定した場合には(ステップS61:YES)、ステップS64に進む。一方、CPU21は、定員拡張状態が未拡張であると判定した場合には(ステップS61:NO)、ステップS62に進む。ステップS62において、CPU21は、対象の運動レッスンのレッスン情報に含まれる運動機器利用フラグに基づいて、対象の運動レッスンにおいて運動機器91が必要であるか否かを判定する。このとき、CPU21は、運動機器91が必要であると判定した場合には(ステップS62:YES)、ステップS63に進む。一方、CPU21は、運動機器91が必要ではないと判定した場合には(ステップS63:NO)、ステップS64に進む。
ステップS63において、CPU21は、対象の運動レッスンにおいて、複数グループ並行運動可能実行順序があるかを判定する。このとき、CPU21は、対象の運動レッスンのレッスン情報に含まれるグループ化可能フラグがTRUEである場合、複数グループ並行運動可能実行順序があると判定する(ステップS63:YES)。この場合、CPU21は、ステップS65に進む。一方、CPU21は、グループ化可能フラグがFALSEである場合、複数グループ並行運動可能実行順序がないと判定する(ステップS63:NO)。この場合、CPU21は、ステップS64に進む。ステップS64において、CPU21は、定員拡張結果として失敗を設定する。CPU21は、ステップS64の処理を終えると、定員拡張処理を終了させる。
なお、ステップS63においては、CPU21は、上述したように実行順序を自動的に決定してもよい。具体的に、配信サーバ2は、レッスン情報に含まれる運動IDに基づいて、運動レッスンを構成する複数の運動を1列に並べる順列の数分、複数の順序情報を生成する。生成された複数の順序情報は、実行順序のパターンが互いに異なる。例えば、運動レッスンを構成する複数の運動の数が3である場合、生成される順序情報の数は6である。配信サーバ2は、レッスン情報から、グループ数を取得する。また、配信サーバ2は、レッスン情報に含まれる運動ユニット情報から、各運動の実行時間を取得する。また、配信サーバ2は、マシン運動の運動ユニット情報から、機器種別を取得する。配信サーバ2は、各運動の実行時間に基づいて、順序情報が示す実行順序で複数の運動を実行した場合のマシン運動の実行開始時刻と実行終了時刻とを計算する。配信サーバ2は、この計算を順序情報ごとに行う。配信サーバ2は、生成した順序情報の中から、グループ数に相当する数の順序情報の組み合わせを選択する。配信サーバ2は、マシン運動の実行開始時刻と実行終了時刻とに基づいて、選択した順序情報間で、同一のマシン運動が実行される時間帯が重なるか否かを判定する。配信サーバ2は、同一のマシン運動が実行される時間帯が重なると判定した場合、生成した順序情報の中から、別の順序情報の組み合わせを選択して、同一のマシン運動が実行される時間帯が重なるか否かを判定する。配信サーバ2は、このような処理を、同一のマシン運動が実行される時間帯が重ならないと判定するまで繰り返す。配信サーバ2は、同一のマシン運動が実行される時間帯が重ならないと判定した場合には、複数グループ並行運動可能実行順序があると判定する。そして、配信サーバ2は、このときの組み合わせに含まれる順序情報を、レッスン情報に格納する。一方、配信サーバ2は、全ての組み合わせにおいて、同一のマシン運動が実行される時間帯が重なると判定した場合には、複数グループ並行運動可能実行順序がないと判定する。
ステップS65において、CPU21は、拡張前の定員として、対象の運動レッスンの現在の定員を設定する。次いで、CPU21は、対象の運動レッスンについて現在予約しているリソースの情報を一時的にRAM53に保存する(ステップS66)。例えば、CPU21は、予約しているスタジオ8の場所IDを、RAM53に記憶させる。また、CPU21は、予約している運動機器91の数を、予約している運動機器91の機器種別ごとに、RAM53に記憶させる。また、CPU21は、予約しているインストラクターのインストラクターIDを、RAM53に記憶させる。次いで、CPU21は、現在予約しているリソースを仮予約可能な状態に変更する(ステップS67)。具体的に、CPU21は、運動場所予定表情報において、対象の運動レッスンのレッスンIDに対応付けて予約済に設定されている予約状態を、未予約に変更する。また、CPU21は、運動機器予定表情報において、対象の運動レッスンのレッスンIDに対応付けて予約済に設定されている予約状態を、未予約に変更する。また、CPU21は、インストラクター予定表情報において、対象の運動レッスンのレッスンIDに対応付けて予約済に設定されている予約状態を、未予約に変更する。
次いで、CPU21は、ソース・定員決定処理のステップS11と同様に、運動場所仮予約処理を実行する(ステップS68)。次いで、CPU21は、マシン制約定員を決定する(ステップS69)。具体的に、CPU21は、RAM53に記憶されている運動機器91の数を取得する。複数の機器種別について運動機器91の数が記憶されている場合、CPU21は、何れか1つの機器種別の運動機器91の数を取得する。次いで、CPU21は、対象の運動レッスンのレッスン情報からグループ数を取得する。次いで、CPU21は、運動機器91の数にグループ数を掛けることにより、マシン制約定員を計算する。
次いで、CPU21は、インストラクター仮予約処理を実行する(ステップS70)。次いで、CPU21は、定員確定・リソース予約処理を実行する(ステップS71)。次いで、CPU21は、定員確定・リソース予約処理で決定された定員が、拡張前の定員よりも多いか否かを判定する(ステップS72)。このとき、CPU21は、リソース予約処理で決定された定員が拡張前の定員以下であると判定した場合には(ステップS72:NO)、ステップS73に進む。一方、CPU21は、リソース予約処理で決定された定員が拡張前の定員よりも多いと判定した場合には(ステップS72:YES)、ステップS77に進む。
ステップS73において、CPU21は、RAM53に保存した情報に基づいて、リソースの予約状態を予約済に戻す。次いで、CPU21は、ソース・定員決定処理のステップのステップS18と同様に、仮予約したリソースを解放する(ステップS74)。次いで、CPU21は、対象の運動レッスンの定員を、拡張前の定員に戻す(ステップS75)。次いで、CPU21は、定員拡張結果として失敗を設定する(ステップS76)。CPU21は、ステップS76の処理を終えると、定員拡張処理を終了させる。
ステップS77において、CPU21は、リソース・定員決定処理のステップのステップS18と同様に、仮予約したリソースを解放する。次いで、CPU21は、定員拡張状態を拡張済に変更する(ステップS78)。次いで、CPU21は、定員拡張結果として成功を設定する(ステップS79)。CPU21は、ステップS79の処理を終えると、定員拡張処理を終了させる。
以上説明したように、本実施形態によれば、CPU21は、データベース3に記憶された運動機器予定表情報が示す確保可能機器数のうち、HDD37に記憶されたレッスン情報に含まれる機器種別が示す種類の運動機器91の確保可能機器数に基づいて、レッスン情報が示すマシン運動を実行可能なユーザの人数を決定する。CPU21は、決定された人数に基づいて、運動レッスンに参加可能なユーザの人数を決定する。そのため、参加可能なユーザの人数を適切に決定することができる。
なお、上記実施形態においては、施設4には、運動場所としてスタジオ8があった。しかしながら、例えば、運動場所としてプールやホットスタジオ等があってもよい。利用者41は、プールやホットスタジオにおいても、運動機器91を用いないで運動を行うことができる。この場合、レッスン情報には、運動レッスンが行われる運動場所の種類が設定されてもよい。そして、配信サーバ2は、レッスン情報に設定された種類に対応する運動場所の収容人数に基づいて、運動レッスンの定員を決定してもよい。
また、上記実施形態においては、インストラクター全員が利用者41をサポートすることが可能となっていた。しかしながら、インストラクターごとに、サポートする技能があるか否かが設定されていてもよい。例えば、マシン運動、プールでの運動、ホットスタジオでの運動等のそれぞれについて、サポートする技能があるか否かが設定されてもよい。配信サーバ2は、運動レッスンを構成する運動の種類、運動場所の種類等に基づいて、運動レッスンを構成する運動をサポートする技能があるインストラクターの中から、確保可能なインストラクターの人数を決定してもよい。
また、上記実施形態においては、本発明の情報処理装置が配信サーバ2に適用されていた。しかしながら、本発明の情報処理装置が出力端末5に適用されてもよい。そして、出力端末5が、運動レッスン実施準備処理、リソース・定員決定処理、運動機器仮予約処理、インストラクター仮予約処理、定員確定・リソース予約処理、参加受付処理、定員拡張処理等を実行してもよい。これにより、出力端末5が、運動レッスンに参加可能な利用者41の人数を決定してもよい。また、運動レッスンに参加可能な利用者41の人数を出力端末5が決定するためのプログラムが、出力端末5に記憶されてもよい。また、本発明の情報処理装置が出力端末5及び配信サーバ2に適用されてもよい。そして、出力端末5及び配信サーバ2は協働して処理を行ってもよい。