以下、図面を参照して本発明の実施形態について詳細に説明する。
[1.ゴルフ場予約システムの構成]
先ず、本実施形態に係るゴルフ場予約システムSの構成及び機能概要について、図1を用いて説明する。図1は、本実施形態に係るゴルフ場予約システムSの概要構成の一例を示す図である。
図1に示すように、ゴルフ場予約システムSは、ゴルフ場予約サーバ1と、複数のゴルフ場端末2と、複数のユーザ端末3と、を含んで構成される。ゴルフ場予約サーバ1〜ユーザ端末3は、ネットワークNWを介して互いに接続される。ネットワークNWは、例えばインターネット、専用通信回線(例えば、CATV(Community Antenna Television)回線)、移動体通信網(基地局等を含む)、及びゲートウェイ等により構築されている。
ゴルフ場予約サーバ1は、ゴルフ場を予約するための予約サイトに関する各種処理を実行するサーバ装置である。ユーザは、予約サイトを利用することにより、所望のゴルフ場の利用を予約することができる。ゴルフ場予約サーバ1は、ユーザ端末3からの要求に応じて、予約サイトに関するウェブページ等の情報を送信する。
また、ゴルフ場予約サーバ1は、同一のプレー日に同一のゴルフ場を利用する複数の組に含まれる何れか少なくとも一の組におけるメンバーのうち、少なくとも一のメンバーの所属先を、元の組とは別の組の変更するように構成されている。各ゴルフ場においては、一日におけるゴルフのプレーのスタート時刻が複数予め定められている。例えば、所定時間間隔(例えば7分間隔等)でスタート時刻が定められている。この時間間隔を、スタート間隔という。また、或るスタート時刻からその次のスタート時刻までの時間帯を、時間枠という。ゴルフ場の利用を予約することは、時間枠を予約することである。従って、或る日に特定のゴルフ場の利用を予約した複数の組は、予約された時間枠のスタート時刻に対応する順序で、ゴルフをプレーすることが予定される。しかしながら、何れかの組におけるメンバーのうち、何れかのメンバーが、予約した時間枠のスタート時刻までにゴルフ場に到着しない場合がある。この場合に、ゴルフ場予約サーバ1は、そのメンバーの所属先を、よりスタート時間が遅い組に変更する。
各ゴルフ場端末2は、ゴルフ場の従業員により利用される端末装置である。ゴルフ場端末2の例として、タブレット式コンピュータ、パーソナルコンピュータ等が挙げられる。ゴルフ場端末2には、ウェブブラウザ、電子メールクライアント等がインストールされている。ゴルフ場端末2は、従業員による操作に基づいてゴルフ場予約サーバ1へ要求を送信し、この要求に応じてゴルフ場予約サーバ1から送信されてきたウェブページ等の情報を表示する。従業員は、ゴルフ場端末2を利用して、ゴルフ場の予約状況を確認等する。
各ユーザ端末3は、予約サイトを利用することにより、ゴルフ場を利用するユーザが携帯する端末装置である。例えば、ユーザは、ユーザ端末3を携帯してゴルフ場へ行く。ユーザ端末3の例として、スマートフォン、タブレット式コンピュータ等の携帯情報端末、携帯電話機、PDA(Personal Digital Assistant)等が挙げられる。ゴルフ場を予約する段階においては、ユーザは、例えばパーソナルコンピュータ等の据え置き型の端末装置を用いてもよい。ユーザ端末3には、ブラウザ、電子メールクライアント等のソフトウェアが組み込まれている。また、ユーザ端末3には、予約サイトを利用するための専用のアプリケーションがインストールされている。ユーザ端末3は、そのユーザ端末3の位置を示す位置情報を取得する機能を有する。例えば、GPS(Global Positioning System)等の衛星測位システムを利用して、位置情報として経緯度が計算されてもよい。また例えば、移動体通信事業者により、基地局を利用した位置情報がユーザ端末3に提供されてもよい。この場合、ユーザ端末3は、そのユーザ端末3の近くにある基地局の位置に対応した経緯度、住所又は郵便番号を、位置情報として取得する。ユーザ端末3は、例えば専用のアプリケーションをバックグラウンドで実行することにより、取得した位置情報をゴルフ場サーバ1へ送信する。
[2.ゴルフ場予約サーバの構成]
次に、ゴルフ場予約サーバ1の構成について、図2及び図3を用いて説明する。図2は、本実施形態に係るゴルフ場予約サーバ1の概要構成の一例を示すブロック図である。図2に示すように、ゴルフ場予約サーバ1は、システム制御部11と、システムバス12と、入出力インターフェース13と、記憶部14と、通信部15と、を備えている。システム制御部11と入出力インターフェース13とは、システムバス12を介して接続されている。
システム制御部11は、CPU(Central Processing Unit)11a、ROM(Read Only Memory)11b、RAM(Random Access Memory)11c等により構成されている。
入出力インターフェース13は、記憶部14及び通信部15とシステム制御部11との間のインターフェース処理を行う。
記憶部14は、例えば、ハードディスクドライブ等により構成されている。この記憶部14には、会員DB14a、ゴルフ場DB14b、予約情報DB14c、予約タイムテーブルDB14d、スコアDB14e等のデータベースが記憶されている。「DB」は、データベースの略語である。図3は、データベースに記憶される情報の例を示す図である。
会員DB14aには、ゴルフ場予約システムSを利用するユーザに関する会員情報が、ユーザごとに記憶されている。具体的に、会員DB14aには、会員情報として、ユーザID、氏名、住所、電話番号、電子メールアドレス等が、関連付けて記憶されている。ユーザIDは、ユーザを識別する識別情報である。
ゴルフ場DB14bには、ゴルフ場予約システムSで予約可能なゴルフ場に関するゴルフ場が、ゴルフ場ごとに記憶されている。具体的に、ゴルフ場DB14bには、ゴルフ場情報として、ゴルフ場ID、ゴルフ場名、住所、電話番号、電子メールアドレス等が、関連付けて記憶されている。ゴルフ場IDは、ゴルフ場を識別する識別情報である。
予約情報DB14cには、ゴルフ場の予約に関する予約情報が、予約が行われるごとに記憶される。具体的に、予約情報DB14cには、予約情報として、予約番号、予約者ID、ゴルフ場ID、プレー日、組数、組情報等が、関連付けて記憶される。予約番号は、予約を識別する番号である。予約者IDは、予約を行ったユーザのユーザIDである。ゴルフ場IDは、予約されたゴルフ場を示す。プレー日は、ゴルフのプレーが行われる日を示す。組数は、何組でゴルフをプレーするかを示す。組数は、予約された時間枠の数に相当する。組数として、1以上の値が設定される。組情報は、ゴルフをプレーする組に関する情報である。組数に相当する数の組情報が、予約情報DB14cに記憶される。各組情報は、組ID、スタート時刻、及びメンバーリストを含む。組IDは、組を識別する識別情報である。スタート時刻は、その組がゴルフのプレーを開始する時刻である。メンバーリストは、組を構成するメンバーのリストである。例えば、予約者は、ゴルフ場を予約する際に、組の各メンバー(または同伴者)の情報を入力する。例えば、各メンバーの氏名及び電子メールアドレスの入力が可能であってもよい。メンバーリストは、予約者により入力された各メンバーの情報を含む。メンバーの中に予約者がいる場合、予約者については、その予約者のユーザIDがメンバーリストに含まれてもよい。
予約タイムテーブルDB14dには、各ゴルフ場について、各プレー日におけるゴルフのスタート予定を示す予約タイムテーブルが記憶される。予約タイムテーブルには、時間枠ごとに、時間枠情報が含まれる。具体的に、予約タイムテーブルDB14dには、時間枠情報として、ゴルフ場ID、プレー日、スタート時刻、及び予約状況が少なくとも記憶される。ゴルフ場ID及びプレー日は、予約タイムテーブルが対応するゴルフ場及びプレー日を示す。スタート時刻は、予約タイムテーブル内の特定の時間枠を示す。予約状況は、その時間枠が予約されているか否かを示す。予約状況が、時間枠が予約されていることを示す場合、時間枠情報として、更に予約番号、組ID、メンバーリスト等が予約タイムテーブルDB14dに記憶される。予約番号は、その時間枠の予約に係る予約情報の識別番号である。組IDは、その時間枠でゴルフのプレーを開始する組を示す。メンバーリストは、その組のメンバーのリストである。システム制御部11は、例えば予約情報DB14cに予約情報が記憶されたり、予約情報が変更されたり、予約情報が削除されたりする等の予約情報DB14cの更新に応じて、予約タイムテーブルDB14dを更新してもよい。
スコアDB14eには、ゴルフ場予約システムSを利用するユーザのゴルフのスコアを示すスコア情報が記憶される。例えば、予約者は、予約したゴルフ場、プレー日及び時間枠においてゴルフをプレー中に、或いはそのプレー後に、ユーザ端末3にその予約者のスコアを入力することができる。システム制御部11は、入力されたスコア情報をスコアDB14eに記憶させる。具体的に、スコアDB14eには、ユーザID、ゴルフ場ID、プレー日、スコア情報等が関連付けて記憶される。ユーザIDは、スコア情報に示されるスコアを出したユーザを示す。ゴルフ場ID及びプレー日は、スコア情報に示されるスコアが出されたゴルフ場及びプレー日を示す。スコア情報は、例えば各ホールのスコアを含んでもよいし、グロススコアを含んでもよい。予約者は、その予約者以外のメンバーのスコアも入力可能であってもよい。メンバーの中には、ゴルフ場予約システムSの会員であるユーザもいたり、会員ではないユーザもいたりする。システム制御部11は、組の各メンバーが、ゴルフ場予約システムSの会員である場合、そのメンバーに付与されたユーザIDに関連付けて、スコア情報をスコアDB14eに記憶させてもよい。例えば、システム制御部11は、予約情報DB14cに記憶されたメンバーリストから、各メンバーの電子メールアドレスを取得する。システム制御部11は、各メンバーの電子メールアドレスに一致する電子メールアドレスを、会員DB14aから検索する。システム制御部11は、メンバーの電子メールアドレスと一致する電子メールアドレスに関連付けられたユーザIDを、そのメンバーのユーザIDとして取得する。また、予約者以外のメンバーの中に、ゴルフ場予約システムSの会員がいる場合、その会員のスコアについては、その会員自身がスコア情報の入力が可能であってもよい。
記憶部14には、更に地図DB、時刻表DB等が記憶されてもよい。これらのデータベースは、ユーザがいる地点からゴルフ場へ移動する場合においてゴルフ場への到着時刻を予測するために用いられる。地図DBには、所定地域(例えば日本)内における各道路の位置及び種類や、道路の接続関係を示す地図情報が記憶される。時刻表DBには、鉄道等における各路線の時刻表を示す時刻表情報が記憶される。
また更に、記憶部14には、オペレーティングシステム、DBMS(Database Management System)、サーバプログラム等の各種プログラムが記憶されている。サーバプログラムは、ゴルフ場の利用予約に関する処理や、メンバーの所属先の組を変更するための処理等システム制御部11に実行させるプログラムである。サーバプログラムは、例えば、他の装置からネットワークNWを介して取得されるようにしてもよいし、磁気テープ、光ディスク、メモリカード等の記録媒体に記録されてドライブ装置を介して読み込まれるようにしてもよい。
通信部15は、例えばネットワークインターフェースカード等により構成されている。通信部15は、ネットワークNWを介して、ゴルフ場端末2やユーザ端末3と接続し、これらの装置との通信状態を制御する。
[3.システム制御部の機能概要]
次に、図4乃至図6を用いて、ゴルフ場予約サーバ1におけるシステム制御部11の機能概要について説明する。図4は、本実施形態に係るゴルフ場予約サーバ1におけるシステム制御部11の機能ブロックの一例を示す図である。システム制御部11は、CPU11aが、サーバプログラムに含まれる各種プログラムコードを読み出し実行することにより、図4に示すように、位置情報取得部1101、到着予想時刻取得部1102、スタート時刻取得部1103、スコア取得部1104、変更部1105等として機能する。
位置情報取得部1101は、ゴルフ場において所定順序でゴルフをプレーする予定である複数の組に含まれる少なくとも一の組におけるメンバーのうち、少なくとも一のメンバーの位置を示す位置情報を取得する。例えば、位置情報取得部1101は、少なくとも2つの別々の組それぞれについて、その組の何れか少なくとも一のメンバーの位置情報を取得してもよい。位置情報取得部1101は、プレー日当日において、各ゴルフ場でプレーを予定する各組のメンバーを、予約タイムテーブルDB14dに記憶されたメンバーリストから特定する。メンバーのうち予約者について、位置情報取得部1101は、予約者IDとしてのユーザIDを予約情報DB14cから取得する。予約者以外のメンバーについて、位置情報取得部1101は、メンバーリストに含まれる電子メールアドレスを用いて、それらのメンバーのユーザIDを会員DB14aから取得する。一方、各ユーザ端末3は、そのユーザ端末3の位置情報を、ユーザの位置情報として、そのユーザのユーザIDとともにゴルフ場予約サーバ1へ送信する。例えば、ユーザ端末3は、定期的に位置情報を送信してもよいし、ゴルフ場予約サーバ1からの要求に応じて位置情報を送信してもよい。位置情報取得部1101は、位置情報とともに送信されてきたユーザIDに基づいて、その位置情報が、如何なる組の如何なるメンバーの位置情報であるかを特定する。
到着予想時刻取得部1102は、ゴルフ場において所定順序でゴルフをプレーする予定である複数の組に含まれる何れか少なくとも一の組におけるメンバーのうち、少なくとも一のメンバーによるゴルフ場への到着予想時刻を取得する。例えば、到着予想時刻取得部1102は、同一の予約者によりゴルフ場を利用することが予約された複数の組に含まれる何れか第1特定組のメンバーのうち、少なくとも一の第1メンバーによるゴルフ場への第1到着予想時刻を少なくとも取得する。また、到着予想時刻取得部1102は、複数の組に含まれる第2特定組であって、第1特定組よりも遅くプレーを開始する予定である何れか1又は複数の第2特定組のメンバーのうち、少なくとも一の第2メンバーによるゴルフ場への第2到着予想時刻と、を取得してもよい。すなわち、到着予想時刻取得部1102は、少なくとも2つの別々の組それぞれについて、その組の何れか少なくとも一のメンバーの到着予想時刻を取得してもよい。
例えば、到着予想時刻取得部1102は、位置情報取得部1101により取得された位置情報と、ゴルフ場の位置を示すゴルフ場位置情報と、に基づいて、少なくとも一のメンバーの到着予想時刻を取得してもよい。到着予想時刻取得部1102は、例えばゴルフ場位置情報として、ゴルフ場DB14bからゴルフ場の住所を取得してもよい。ユーザの位置情報を用いる場合、ゴルフ場予約サーバ1自身が到着予想時刻を算出してもよい。例えば、到着予想時刻取得部1102は、位置情報が取得された各メンバーについて、ユーザの位置情報、ゴルフ場位置情報、現在時刻、及び地図DB等を用いて、到着予想時刻を算出してもよい。例えば、到着予想時刻取得部1102は、ユーザの位置を出発地とし、ゴルフ場の位置を目的地として、地図DB等を用いて、ダイクストラ法等の経路探索アルゴリズムを用いて、出発地から目的地への経路を探索する。到着予想時刻取得部1102は、探索した経路を自動車で移動した場合の所要時間を算出する。到着予想時刻取得部1102は、現在時刻に所要時間を加算して、到着予想時刻を算出する。渋滞、事故、自然災害等の情報を取得することができる場合、到着予想時刻取得部1102は、それらの情報を考慮して到着予想時刻を算出してもよい。また、ユーザが鉄道の路線上に位置している場合、到着予想時刻取得部1102は、時刻表DBを用いて、ゴルフ場の最寄りの駅への到着予想時刻を算出し、次いで、地図DBを用いて、その駅からゴルフ場に移動する場合の到着予想時刻を算出してもよい。また、ゴルフ場予約サーバ1とは別の図示せぬサーバ装置が到着予想時刻を算出してもよい。例えば、到着予想時刻取得部1102は、ユーザの位置情報及びゴルフ場位置情報等をそのサーバ装置へ送信する。これらの情報に基づいてそのサーバ装置により算出された到着予想時刻を、到着予想時刻取得部1102は取得する。
到着予想時刻取得部1102は、ゴルフ場端末2から到着予想時刻を取得してもよい。例えば、電話等によりメンバーからゴルフ場へ遅れる旨の連絡が行われたとする。ゴルフ場の従業員は、電話等により申告された到着予想時刻を、そのメンバー又はそのメンバーが属する組の到着予想時刻としてゴルフ場端末2に入力する。ゴルフ場端末2は、入力された到着予想時刻、そのメンバーの氏名、及びそのメンバーが属する組の組IDをゴルフ場予約サーバ1へ送信してもよい。到着予想時刻取得部1102は、ゴルフ場端末2から受信した到着予想時刻を、そのメンバーの到着予想時刻として、又はそのメンバーが所属する組の全メンバーの到着予想時刻として取得してもよい。また例えば、組がゴルフ場にチェックインしたとき、従業員は、その組がチェックインしたことをゴルフ場端末2に入力する。ゴルフ場端末2は、チェックインした時刻を、その組の全メンバーの到着時刻としてゴルフ場予約サーバ1へ送信してもよい。
スタート時刻取得部1103は、ゴルフ場において所定順序でゴルフをプレーする予定である複数の組それぞれについて予約された時間枠のスタート時刻のうち、少なくとも第1特定組のスタート時刻を、第1スタート予定時刻として記憶手段から取得する。更に、スタート時刻取得部1103は、第2特定組のスタート時刻を、第2スタート予定時刻として取得してもよい。例えば、スタート時刻取得部1103は、複数の組それぞれについて予約された時間枠のスタート時刻を、スタート予定時刻として予約タイムテーブルDB14dから取得してもよい。
変更部1105は、到着予想時刻取得部1102により取得された到着予想時刻及びスタート時刻取得部1103により取得されたスタート予定時刻に基づいて、ゴルフ場において所定順序でゴルフをプレーする予定である複数の組に含まれる少なくとも一の組における少なくとも一のメンバーの所属先となる組を変更する。具体的に、変更部1105は、第1メンバーの到着予想時刻が、第1特定組のスタート予定時刻よりも遅いが、第1メンバーの到着予想時刻が、第2特定組のスタート予定時刻よりも早い場合、第1メンバーの所属先を、第1特定組から第2特定組に変更する。第1特定組のスタート予定時刻よりも遅く到着すると予想される第1メンバーを第1特定組に所属させたままでは、第1特定組によるプレーのスタート時刻が遅延する。しかしながら、第1メンバーを第1特定組から外すことで、第1特定組は、予約されたスタート時刻にプレーを開始させることができる。一方、第2特定組のスタート予定時刻よりも早く到着すると予想される第1メンバーを、第2特定組に所属させれば、第2特定組も、予約されたスタート時刻にプレーを開始させることができる。変更部1105は、第1メンバーの到着予想時刻が、第1特定組のスタート予定時刻よりも所定の閾時間以上遅い場合にのみ、第1メンバーの所属先を変更してもよい。すなわち、第1メンバーがさほど遅れずにゴルフ場に到着するのであれば、第1メンバーの所属先は第1特定組のままであってもよい。この閾時間は、例えばスタート間隔と同一であってもよいし、異なっていてもよい。
第2特定組が複数存在する場合、変更部1105は、第1メンバーの所属先を、複数の第2特定組のうち、その組を現時点で構成するメンバーの人数が最大許容人数未満である組に変更してもよい。最大許容人数は、一組当たり最大何人のメンバーを所属させることが許容されるかを示す。最大許容人数は、ゴルフ場予約システムS内で共通に定められてもよいし、ゴルフ場ごとに定められてもよい。例えば、最大許容人数は、4人であってもよい。第1メンバーの所属先を、メンバーの人数が最大許容人数未満である組に変更することで、所属先の変更先の組に当初所属していたメンバーの何れかをその組から外す必要がない。
図5は、メンバーの所属先の変更例を示す図である。図5に示すように、少なくともA組〜E組がゴルフ場G1の利用を予約している。ここで、A組、B組、C組、D組及びE組のスタート予定時刻は、それぞれ9時00分、9時07分、9時14分、9時21分及び9時28分である。B組のメンバーは、ユーザU1〜U4である。ユーザU1はユーザ端末3−1を携帯している。ユーザ端末3−1からの位置情報に基づくと、ユーザU1の到着予想時刻は9時19分である。従って、ユーザU1は、B組及びC組のスタート予定時刻よりも遅く到着するが、D組のスタート予定時刻よりは早く到着する。D組は、3人のユーザU5〜U7で構成されている。従って、D組のメンバーの人数は、最大許容人数の一例としての4人未満である。そこで、ユーザU1の所属先が、B組からD組に変更されてもよい。
或いは、変更部1105は、第1メンバーの所属先を第2特定組に変更する場合、その第2特定組に当初所属していたメンバーのうち何れか第2メンバーを、第2特定組から外してもよい。変更部1105は、例えば第2特定組を現時点で構成するメンバーの人数が最大許容人数に達している場合に、第2メンバーを第2特定組から外してもよい。また、変更部1105は、第2メンバーの所属先を別の組に変更可能である場合に、第2メンバーを第2特定組から外してもよい。所属先を別の組に変更可能であるとは、第2メンバーについて到着予想時刻取得部1102により取得された第2到着予想時刻が、複数の組のうち、第2メンバーが所属している第2特定組よりも早くプレーを開始する予定である何れか第3特定組によるゴルフのプレーのスタート予定時刻よりも早いことであってもよい。この場合、変更部1105は、第2ユーザの所属先を、第2特定組から第3特定組に変更することができる。但し、第3特定組を現時点で構成するメンバーの人数が最大許容人数未満であるか、又は第3特定組に所属している何れかのメンバーの所属先を、第3特定組から別の組に変更可能である場合にのみ、第2ユーザの所属先が第3特定組に変更可能であってもよい。
図6は、メンバーの所属先の変更例を示す図である。図6が図5と異なる点は、D組は、4人のユーザU5〜U8で構成されていることである。そのため、第1メンバーの所属先をD組に変更するためには、ユーザU5〜U8の何れかをD組から外す必要がある。ユーザU8はユーザ端末3−8を携帯している。ユーザ端末3−8からの位置情報に基づくと、ユーザU8の到着予想時刻は9時10分である。従って、ユーザU8は、C組のスタート予定時刻よりも早く到着する。C組は、3人のユーザU9〜U11で構成されている。そこで、ユーザU1の所属先が、B組からD組に変更され、ユーザU8の所属先が、D組からC組に変更されてもよい。
第1メンバーの所属先を第1特定組から第2特定組に変更することが前提である。そのため、変更部1105は、第1特定組を構成するメンバーの人数は最大許容人数未満であるものとして、第3特定組を特定してもよい。従って、変更部1105は、第2メンバーの第2到着予想時刻が、第1特定組の第1スタート予定時刻よりも早い場合、第1メンバーの所属先を、第1特定組から第2特定組に変更し、且つ第2メンバーの所属先を、第2特定組から第1特定組に変更してもよい。この場合、メンバーの人数が最大許容人数未満である組が存在しない場合であっても、所属先が変更となるメンバーの人数を抑えることができる。また、メンバーが変更される組の数も抑えることができる。
図7は、メンバーの所属先の変更例を示す図である。図7が図6と異なる点は、ユーザU8の到着予想時刻が9時00分であることである。従って、ユーザU8は、B組のスタート予定時刻よりも早く到着する。そこで、ユーザU1の所属先が、B組からD組に変更されてもよい。また、ユーザU8の所属先が、D組からB組に変更される。すなわち、B組の一のメンバーとD組の一のメンバーとが互いに入れ替わる。
第1メンバーの第1到着予想時よりもスタート予定時刻が遅い第2特定組が複数存在する場合がある。この場合、変更部1105は、複数の第2特定組のうち、メンバーの人数が最大許容人数未満である組を優先的に、第1メンバーの所属先の変更先として決定してもよい。或いは、変更部1105は、複数の第2特定組のうち、スタート予定時刻が早い組ほど優先的に、第1メンバーの所属先の変更先として決定してもよい。
所属先を別の組に変更可能な複数の第2メンバーが存在する場合がある。すなわち、複数の第2メンバーのそれぞれが、第1特定組のスタート予定時刻よりも遅いスタート予定時刻の1又は複数の組の何れかに所属し、且つそれら複数の第2メンバーそれぞれの到着予想時刻が、第3特定組(または、第1特定組)のスタート予定時刻よりも早い場合がある。各第2メンバーは同一の組に所属しているかもしれないし、別々の組に所属しているかもしれない。その場合、変更部1105は、例えばスコア情報を用いて、第2特定組から外すメンバーを決定し、第1メンバーの所属先を、外されることが決定されたメンバーが所属していた第2特定組に変更してもよい。
この場合において、スコア取得部1104は、第1メンバー及び各第2メンバーのスコア情報を取得する。具体的に、スコア取得部1104は、予約タイムテーブルDB14dに記憶されたメンバーリストに基づいて、第1メンバー及び第2メンバーのユーザIDを取得する。スコア取得部1104は、ユーザIDに関連付けられたスコア情報をスコアDB14eから取得する。例えば、前回のプレーにおいてスコア情報を入力していたメンバーについては、スコア取得部1104は、そのスコア情報を取得してもよい。また例えば、前回のプレーのスコア情報がない場合、スコア取得部1104は、過去に入力されたスコア情報の平均値を算出してもよい。
変更部1105は、第1メンバーの所属先を、複数の第2メンバーのうち、第1メンバーとの間のスコアの差が最も小さい第2メンバーが所属する組に変更してもよい。スコアは、そのスコアを出したプレーヤーによるゴルフのスキルやプレー時間を反映する。すなわち、スコアが良いほど、スキルが高く、またプレー時間が短い傾向がある。ゴルフをプレーする予定の集団を複数の組に分けた予約者又は幹事等は、その集団に属する各プレーヤーのゴルフのスキルを考慮して、組分けを行う傾向がある。例えば、同一組内に、スキルが高いプレーヤーと低いプレーヤーが混在するように組分けが行われたり、組間でスキルがおおよそ均衡するように組分けが行われたりする。ゴルフのスキルが相対的に近いメンバー同士を入れ替えることで、例えば、組内のスキルのバランスが崩れたり、組間におけるスキルのバランスが崩れたりすることが抑制される。また例えば、メンバーの入れ替えにより、プレー時間が大きく変わったり、組間でプレー時間の差が大きくなったりすることが抑制される。こうした抑制により、複数の組によるゴルフのプレーがスムーズに進行することが期待される。
図8は、メンバーの所属先の変更例を示す図である。図7に示した予約タイムテーブルと同様に、B組、D組及びE組のスタート予定時刻は、それぞれ9時07分、9時21分及び9時28分である。B組のメンバーであるユーザU1の到着予想時刻は9時19分である。一方、D組のメンバーであるユーザU5〜U8のうち、ユーザU6及びU8の到着予想時刻は、9時07分よりも早い。また、E組のメンバーであるユーザU13〜U16のうち、ユーザU13及びU114到着予想時刻は、9時07分よりも早い。従って、ユーザU6、U8、U13及びU14は、ユーザU1と入れ替わる候補となり得る。ユーザU1の過去のゴルフのスコアは95である。ユーザU6、U8、U13及びU14それぞれのスコアは、103、87、115及び98である。従って、これらのユーザのうちユーザU14のスコアが、ユーザU1のスコアと最も近い。そのため、ユーザU1の所属先がE組に変更され、ユーザU14の所属先がB組に変更されてもよい。
変更部1105は、第1メンバーとの間のスコアの差が所定の閾値未満である複数の第2メンバーが存在する場合、任意の条件に基づいて、それらの第2メンバーの中から、第2特定組から外すメンバーを決定し、それらの第2メンバーが所属する組の中から、第1メンバーの所属先の変更先となる組を決定してもよい。例えば、変更部1105は、ランダムにメンバー及び変更先を決定してもよいし、スタート予定時刻が最も早い組を変更先に決定してもよい。閾値は、例えば第1メンバーのゴルフのスキルと第2メンバーのゴルフのスキルがほぼ同等であると認識することができる程度の値であってもよい。
第2メンバーの所属先を、第1特定組とは別の第3特定組に変更する場合において、第3特定組のメンバーの中に、別の組に所属先を変更可能な2以上のメンバーが存在する場合、前述と同様に、変更部1105は、第2メンバーのスコア情報と、それら2以上のメンバーのスコア情報と、に基づいて、それら2以上のメンバーのうち何れのメンバーの所属先を別の組に変更するかを決定してもよい。また、第1メンバーの所属先の変更先となる組とは異なる組のメンバーの中に、第1特定組に所属先を変更可能な2以上のメンバーが存在する場合にも、変更部1105は、第1メンバーのスコア情報と、それら2以上のメンバーのスコア情報に基づいて、それら2以上のメンバーのうち何れのメンバーの所属先を、第1特定組に変更するかを決定してもよい。
変更部1105は、第1メンバーの所属先を変更した場合、所属先が変更された旨の通知を送信してもよい。この通知は、例えば、プレー日、ゴルフ場名、予約者名、所属先が変更となるメンバー、所属先の変更先となる組のスタート予定時刻等を含んでもよい。通知先は、例えば所属先が変更された第1メンバー及び第2メンバーそれぞれのユーザ端末3を含んでもよい。また、通知先は、メンバーが変更された組についてゴルフ場の利用を予約した予約者のユーザ端末3を含んでもよい。また、通知先は、メンバーが変更された組の全メンバーのユーザ端末3を含んでもよい。変更部1105は、例えばユーザ端末3にインストールされた専用のアプリケーションに対して通知を送信し、この専用のアプリケーションにより自動的に通知をユーザ端末3の画面に表示させてもよい。或いは、変更部1105は、電子メールで通知を送信してもよい。また、通知先は、メンバーが変更された組によるゴルフのプレーが予約されたゴルフ場のゴルフ場端末2を含んでもよい。
[4.ゴルフ場予約サーバの動作]
次に、ゴルフ場予約サーバ1の動作について、図9を用いて説明する。図9は、ゴルフ場予約サーバ1のシステム制御部11による所属先変更処理の一例を示すフローチャートである。システム制御部11は、サーバプログラムに含まれるプログラムコードに従って、所属先変更処理を実行する。所属先変更処理は、例えばゴルフ場ごとに所定時刻(例えば、第1組のスタート予定時刻の所定時間前等)に実行されてもよいし、ゴルフ場端末2からの要求に応じて実行されてもよい。
図9に示すように、スタート時刻取得部1103は、予約タイムテーブルDB14dから、対象のゴルフ場における本日の予約タイムテーブルを取得する(ステップS1)。次いで、位置情報取得部1101は、対象のゴルフ場でゴルフをプレーする予定である各組の各メンバーの位置情報を取得する(ステップS2)。例えば、位置情報取得部1101は、予約タイムテーブルに含まれる各組のメンバーリストに基づいて、各メンバーのユーザIDを特定する。位置情報取得部1101は、所属先変更処理を開始するタイミングで、各メンバーのユーザ端末3に対して位置情報を要求してもよい。或いは、位置情報取得部1101は、各メンバーのユーザ端末3から定期的に送信されてきた位置情報のうち、最新の位置情報を取得してもよい。位置情報取得部1101は、各ユーザ端末3から位置情報とともに送信されてくるユーザIDに基づいて、如何なるユーザ端末3から送信された位置情報が、如何なるメンバーの位置情報であるかを特定する。次いで、到着予想時刻取得部1102は、各組の各メンバーの到着時刻を予測する(ステップS3)。例えば、到着予想時刻取得部1102は、各メンバーの位置情報、対象のゴルフ場のゴルフ場位置情報、地図DB、時刻表DB等に基づいて、各メンバーによる対象のゴルフ場への到着予想時刻を算出する。
次いで、変更部1105は、予約タイムテーブルから各組のスタート予定時刻を取得する。変更部1105は、対象のゴルフ場で本日プレーを予定する組のメンバーのうち、到着予想時刻がスタート予定時刻よりも閾時間以上遅いメンバー(以下、遅延メンバーと称する。)が存在するか否かを判定する(ステップS4)。遅延メンバーが存在しない場合(ステップS4:NO)、所属先変更処理は終了する。
一方、遅延メンバーが存在する場合(ステップS4:YES)、変更部1105は、予約タイムテーブル及び予約情報DB14cに基づいて、対象のゴルフ場でゴルフをプレーする予定である複数の組の中から、遅延メンバーが所属する組について対象のゴルフ場を予約した予約者と同一の予約者によりその対象のゴルフ場の予約が行われた別の組を抽出する。変更部1105は、抽出された組のうち、遅延メンバーの予想到着時刻よりも遅いスタート予定時刻の組を特定する。変更部1105は、特定した組の中に、メンバーの人数が4人未満である組が存在するか否かを判定する(ステップS6)。メンバーの人数が4人未満である組が存在する場合(ステップS6:YES)、変更部1105は、遅延メンバーの所属先を、特定した組のうち、メンバーの人数が4人未満である組の何れかに変更する(ステップS7)。例えば、変更部1105は、予約タイムテーブルDB14dに記憶されている対象のゴルフ場における本日のタイムテーブルにおいて、遅延メンバーが所属していた組のメンバーリストから、遅延メンバーの情報を削除する。また、変更部1105は、メンバーの人数が4人未満である組のメンバーリストに、遅延メンバーの情報を追加する。また、変更部1105は、メンバーが変更となる組について予約情報DB14cに記憶された予約情報を変更してもよい。
一方、メンバーの人数が4人未満である組が存在しない場合(ステップS6:NO)、変更部1105は、特定した組のメンバーのうち、到着予想時刻が、そのメンバーが所属する組の一つ前にゴルフをプレーする予定である組のスタート予定時刻よりも早いメンバー(以下、早着メンバーと称する。)が存在するか否かを判定する(ステップS8)。早着メンバーが存在しない場合(ステップS8:NO)、所属先変更処理は終了する。
一方、早着メンバーが存在する場合(ステップS8:YES)、変更部1105は、番号iを1に設定する(ステップS9)。次いで、変更部1105は、所属先を別の組に変更可能であるか否かが判定される対象メンバーを、早着メンバーのうち、i番目のメンバーに設定して、所属先変更可能判定処理を実行する(ステップS10)。
図10は、ゴルフ場予約サーバ1のシステム制御部11による所属先変更可能判定処理の一例を示すフローチャートである。図10に示すように、変更部1105は、複数の組のうち、そのスタート予定時刻が、対象メンバーが所属する組のスタート予定時刻よりも早く、そのスタート予定時刻が、対象メンバーの到着予想時刻よりも遅い組を特定する(ステップS101)。次いで、変更部1105は、ステップS101で特定した組の中に、メンバーの人数が4人未満である組が存在するか否かを判定する(ステップS102)。メンバーの人数が4人未満である組が存在する場合(ステップS102:YES)、変更部1105は、対象メンバーの所属先が変更可能であると判定する。また、変更部1105は、対象メンバーの所属先の変更先を、特定された組のうち、メンバーの人数が4人未満である組の何れかに決定する(ステップS103)。ステップS103が終わると、所属先変更可能判定処理は終了する。
一方、メンバーの人数が4人未満である組が存在しない場合(ステップS102:NO)、変更部1105は、ステップS101で特定した組のメンバーのうち、到着予想時刻が、そのメンバーが所属する組の一つ前にゴルフをプレーする予定である組のスタート予定時刻よりも早いメンバー(以下、第2早着メンバーと称する。)が存在するか否かを判定する(ステップS104)。第2早着メンバーが存在する場合(ステップS104:YES)、変更部1105は、番号jを1に設定する(ステップS105)。次いで、変更部1105は、所属先を別の組に変更可能であるか否かが判定される対象メンバーを、第2早着メンバーのうち、j番目のメンバーに設定して、所属先変更可能判定処理を再帰的に実行する(ステップS106)。次いで、変更部1105は、番号jが、第2早着メンバーの人数未満であるか否かを判定する(ステップS107)。番号jが第2早着メンバーの人数未満である場合(ステップS107:YES)、変更部1105は、番号jを1増加させて(ステップS108)、ステップS106を実行する。
一方、番号jが第2早着メンバーの人数未満ではない場合(ステップS107:NO)、変更部1105は、第2早着メンバーの中に、所属先を変更可能なメンバーが存在するか否かを判定する(ステップS109)。所属先を変更可能なメンバーが存在しない場合(ステップS109:NO)、又は第2早着メンバーが存在しない場合(ステップS106:NO)、変更部1105は、対象メンバーの所属先は変更不可能であると判定して(ステップS110)、所属先変更可能判定処理は終了する。
一方、所属先を変更可能なメンバーが存在する場合(ステップS109:YES)、変更部1105は、対象メンバーと、所属先を変更可能な各メンバーと、のスコア情報を取得する。例えば、スコア取得部1104は、各メンバーについて特定されたユーザIDに基づいて、スコアDB14eからメンバーのスコア情報を取得する。次いで、変更部1105は、所属先を変更可能な各メンバーについて、そのメンバーのスコアと対象メンバーのスコアとの差を算出する。そして、変更部1105は、所属先を変更可能なメンバーのうち、対象メンバーとの間のスコアの差が最も小さいメンバーを特定する(ステップS111)。次いで、変更部1105は、対象メンバーの所属先が変更可能であると判定する。また、変更部1105は、対象メンバーの所属先の変更先を、ステップS111で特定されたメンバーが所属する組に決定する(ステップS112)。ステップS112が終わると、所属先変更可能判定処理は終了する。
所属先変更可能判定処理が終了すると、変更部1105は、図9に示すように、番号iが、早着メンバーの人数未満であるか否かを判定する(ステップS11)。番号iが早着メンバーの人数未満である場合(ステップS11:YES)、変更部1105は、番号iを1増加させて(ステップS12)、ステップS10を実行する。
一方、番号iが早着メンバーの人数未満ではない場合(ステップS11:NO)、変更部1105は、遅延メンバーと、早着メンバーのうち、所属先を変更可能な各メンバーのスコア情報と、を取得する。次いで、変更部1105は、所属先を変更可能各メンバーについて、そのメンバーのスコアと遅延メンバーのスコアとの差を算出する。そして、変更部1105は、所属先を変更可能なメンバーのうち、遅延メンバーとの間のスコアの差が最も小さいメンバーを特定する(ステップS13)。次いで、変更部1105は、遅延メンバーの所属先を、ステップS13で特定したメンバーが所属する組に変更する(ステップS14)。例えば、変更部1105は、予約タイムテーブルDB14dに記憶されている対象のゴルフ場における本日のタイムテーブルにおいて、遅延メンバーが所属していた組のメンバーリストから、遅延メンバーの情報を削除する。また、変更部1105は、ステップS13で特定されたメンバーが所属する組のメンバーリストに、遅延メンバーの情報を追加する。また、変更部1105は、各所属先変更可能判定処理において、所属先が変更可能であると判定されたメンバーのうち、ステップS111において、対象メンバーとの間のスコアの差が最も小さいと判定された各メンバーを特定する。変更部1105は、特定された各メンバーが所属していた組のメンバーリストから、そのメンバーの情報を削除する。また、変更部1105は、特定された各メンバーについて、所属先変更可能判定処理において決定された所属先の変更先となる組のメンバーリストに、そのメンバーの情報を追加する。また、変更部1105は、メンバーが変更となる組について予約情報DB14cに記憶された予約情報を変更してもよい。
次いで、変更部1105は、遅延メンバー、予約者、及びその他所属先が変更されたメンバー等のユーザ端末3へ、それらのメンバーの所属先が変更された旨の通知を送信して(ステップS15)、所属先変更処理は終了する。複数の遅延メンバーが存在した場合、遅延メンバーごとに、ステップS5〜S15が実行されてもよい。
以上説明したように、本実施形態によれば、ゴルフ場予約サーバ1が、ゴルフ場において所定順序でゴルフをプレーする予定である複数の組に含まれる何れか第1特定組のメンバーのうち、少なくとも一の第1メンバーによるゴルフ場への第1到着予想時刻を取得する。また、ゴルフ場予約サーバ1が、複数の組それぞれについて予約された、ゴルフのプレーのスタート予定時刻を記憶する記憶部14から、第1特定組の第1スタート予定時刻と、複数の組のうち、第1特定組よりも遅くプレーを開始する予定である何れか第2特定組の第2スタート予定時刻と、を少なくとも取得する。また、ゴルフ場予約サーバ1が、取得された第1到着予想時刻が、取得された第1スタート予定時刻よりも遅く且つ取得された第2スタート予定時刻よりも早い場合、第1メンバーの所属先を、第1特定組から第2特定組に変更する。従って、組内の何れかのメンバーが、予約されたスタート時刻までにゴルフ場に到着することができないことによって、その組全体のプレーのスタート時刻が遅延することを抑制することができる。
また、ゴルフ場予約サーバ1が、第1メンバーの位置を示す位置情報を取得してもよい。また、ゴルフ場予約サーバ1が、取得された位置情報と、ゴルフ場の位置を示すゴルフ場位置情報と、に基づいて、第1メンバーの到着予想時刻を取得してもよい。この場合、第1メンバーについては、そのメンバーの位置に基づいて到着予想時刻が取得される。従って、適切な到着予想時刻を取得することができる。
また、ゴルフ場予約サーバ1が、第1メンバーの所属先を第2特定組に変更する場合、第2特定組に所属するメンバーのうち何れか第2メンバーを、第2特定組みから外してもよい。
また、ゴルフ場予約サーバ1が、第1メンバーのゴルフのスコアを示すスコア情報と、第2特定組に所属するメンバーのうち、2以上のメンバーそれぞれのゴルフのスコアを示すスコア情報と、を取得してもよい。また、ゴルフ場予約サーバ1が、取得されたスコア情報に基づいて、前述の2以上のメンバーの中から、第2特定組から外される第2メンバーを決定し、第1メンバーの所属先を、第2特定組のうち、その第2メンバーが外された組に変更してもよい。この場合、スキル又はプレー時間を考慮して、第1メンバーの所属先の変更先を決定することができる。
また、ゴルフ場予約サーバ1が、2以上のメンバーのうち、第1メンバーとの間のスコアの差が最も小さい第2メンバーを、第2特定組から外してもよい。この場合、第1メンバーの所属先の変更先となる組内におけるゴルフのスキル又はその組によるゴルフのプレー時間が大きく変わることを抑制することができる。
また、ゴルフ場予約サーバ1が、第2メンバーによるゴルフ場への第2到着予想時刻を更に取得してもよい。また、ゴルフ場予約サーバ1が、取得された第2到着予想時刻が、複数の組のうち、第2特定組より早くプレーを開始する予定である何れか第3特定組によるゴルフのプレーのスタート予定時刻よりも早い場合、第2メンバーの所属先を、第2特定組から第3特定組に変更し、第1メンバーの所属先を、第1特定組から第2特定組に変更してもよい。この場合、第2特定組のうち、その組よりも早くプレーを開始する予定である第3特定組のスタート予定時刻よりも早く到着すると予想されるメンバーが所属する組に、第1メンバーの所属先が変更される。従って、第1特定組は予定通りの時刻にゴルフのプレーを開始させることができる。また、第3特定組も予定通りの時刻にゴルフのプレーを開始させることができる。従って、組内の何れかのメンバーが、予約されたスタート時刻までにゴルフ場に到着することができないことによって、その組全体のプレーのスタート時刻が遅延することを抑制することができる。
また、ゴルフ場予約サーバ1が、第2到着予想時刻が第1スタート予定時刻よりも早い場合、第2メンバーの所属先を第1特定組に変更してもよい。この場合、第1特定組と第2特定組との間で、一部のメンバーが入れ替わる。従って、所属先が変更となるメンバーの人数を抑えることができる。