以下、本発明の実施の形態について図面を参照して詳細に説明する。
(第1の実施の形態)
図1は、第1の実施の形態に係るデータ交換システムの概略構成図である。図1に示すように、データ交換システム1は、ユーザ端末10A〜10Cと、ユーザ端末10A〜10Cと無線基地局20及びコアネットワーク30を介して通信を行うデータ交換サーバ40とから構成される。
図1に示すデータ交換システム1において、データ交換サーバ40は、ユーザ端末10A〜10C間におけるデータ交換を管理する。ここで、ユーザ端末10A〜10C間で交換される交換データは、例えば、ユーザ端末10A〜10Cの電話番号やメールアドレス、ユーザ端末10A〜10Cのユーザの氏名、住所、役職、当該ユーザの他のメールアドレスや、当該ユーザのソーシャルネットワークサービス(SNS)−IDなどの名刺情報や、写真やアバターなどの画像情報や、趣味や出身地などのプロフィール情報などであるが、これに限られるものではない。
また、データ交換システム1は、図1に示す構成に限られるものではない。例えば、データ交換システム1において、コアネットワーク30とデータ交換サーバ40との間に不図示の認証用ノードやインタフェースノード等が設けられてもよい。また、ユーザ端末10A〜10Cの数、無線基地局20の数は、図1に示す数に限られるものではない。以下、ユーザ端末10A〜10Cを区別しない場合はユーザ端末10と総称するものとする。
次に、第1の実施の形態に係るデータ交換システムの機能構成について説明する。なお、データ交換システム1を構成する各装置(具体的には、データ交換サーバ40、ユーザ端末10など)は、通信インタフェース、プロセッサ、メモリ、送受信回路、ディスプレイ、操作キー、タッチパネルなどを含むハードウェアを有しており、メモリには、プロセッサによって実行されるソフトウェアモジュールが記憶されている。後述する機能構成は、上述のハードウェアによって実現されてもよいし、プロセッサによって実行されるソフトウェアモジュールによって実現されてもよいし、両者の組み合わせによって実現されてもよい。
図2は、第1の実施の形態に係るデータ交換サーバ40の詳細機能構成図である。図2に示すように、データ交換サーバ40は、送受信部401、登録情報記憶部402、登録処理部403、検索処理部404、交換管理部405、交換状態記憶部406、交換データ記憶部407を具備する。
送受信部401(通知部)は、無線基地局20及びコアネットワーク30などを介してユーザ端末10と情報を送受信する。具体的には、送受信部401は、後述するログイン要求、検索要求、状態取得要求、交換データなどをユーザ端末10から受信する。また、送受信部401は、後述する検索処理部404から入力された送付候補リスト、後述する交換管理部405から入力された状態情報、交換データなどをユーザ端末10に送信する。送受信部401は、例えば、HTTPプロトコルを用いて、上記情報の送受信を行う。
登録情報記憶部402(記憶部)は、所定エリア毎にユーザ端末10の登録情報を管理する管理テーブルを記憶する。具体的には、所定エリア毎の管理テーブルでは、各エリアに位置するユーザ端末10のユーザ識別情報、位置情報、交換データの識別情報(以下、交換データ識別情報という)、ログイン要求の受信時刻(以下、ログイン要求受信時刻という)、ニックネームが関連付けて記憶される。図3は、第1の実施の形態に係る登録情報記憶部402の概念図である。
図3に示すように、管理テーブルは、矩形に区切られたエリア毎(例えば、1km四方の正方形のエリア毎)に設けられており、当該エリア内の位置情報(例えば、経度及び緯度や、在圏セル情報など)に基づいて算出されるインデックスキーを有する。このインデックスキーは、例えば、経度及び緯度をキーとするハッシュ関数で得られるハッシュ値である。
なお、図3では、経度方向をx軸、緯度方向をy軸として、x軸方向に連続するエリアに連続するインデックスキーが付与されるように、経度、緯度に基づいてインデックスキーが算出されるがこれに限られるものではない。例えば、y軸方向に連続するエリアに連続するインデックスキーが付与されるように、経度、緯度に基づいてインデックスキーが算出されてもよい。
また、図3では、x軸方向のエリアの数が「8」である場合を示しているが、1以上の整数であればどのような数であってもよい。同様に、y軸方向のエリアの数が「8」である場合を示しているが、1以上の整数であればどのような数であってもよい。
また、図3に示すような複数のエリアからなるエリアブロックは、1つであってもよいし、複数であってもよい。具体的には、エリアブロックが、日本全国に1つ設けられてもよいし、所定数の地域毎(例えば、北海道エリア、東北エリアや、経度何度・緯度何度以上など)に設けられてもよい。エリアブロックが地域毎に設けられる場合、日本全国に対して1つのエリアブロックを設ける場合と比較して、各エリアブロックで付与されるインデックスキーの数が少なくなるので、より検索効率が高くなる。
登録処理部403は、送受信部401によってユーザ端末10からログイン要求が受信された場合、当該ログイン要求に含まれる位置情報に基づいてインデックスキーを算出し、算出したインデックスキーを有する管理テーブルに当該ユーザ端末10の登録情報を登録する。ここで、ログイン要求とは、データ交換サービスを利用するために、データ交換サーバ40に対するログインを要求するものである。ログイン要求には、ユーザ端末10の位置情報(例えば、緯度及び経度、在圏セル情報など)の他に、ユーザ識別情報、合言葉、交換データなどが含まれてもよい。
具体的には、登録処理部403は、算出したインデックスキーを有する管理テーブルに、ユーザ端末10のユーザ識別情報、位置情報(例えば、緯度及び経度、在圏セル情報など)、交換データ識別情報、当該ログイン要求の受信時刻(以下、ログイン要求受信時刻という)、ニックネームを関連付けて登録する。
例えば、ユーザ端末10Aの位置情報「経度Xa,緯度Ya」に基づいてインデックスキー「36」が算出された場合、図3に示すように、インデックスキー「36」を有する管理テーブルにユーザ端末10Aのユーザ識別情報「#A」、位置情報「経度Xa,緯度Ya」、交換データ識別情報「名刺a」、ログイン要求受信時刻「21:30」、ニックネーム「Aaa」が関連付けて登録される。
なお、図3に示す管理テーブルは例示にすぎず、管理テーブルには、ユーザ端末10の位置情報が少なくとも記憶されていればよい。また、図3に示すログイン要求受信時刻は、時分単位で登録されているが、これに限られるものではなく、時分秒単位で登録されてもよい。
また、登録処理部403は、ユーザ端末10からのログイン要求に含まれる交換データを交換データ記憶部407に記憶させる。なお、登録処理部403は、交換データを交換データ識別情報(例えば、名刺IDなど)やユーザ識別情報などに関連付けて交換データ記憶部407に記憶させてもよい。
検索処理部404は、送受信部401によってユーザ端末10からの検索要求が受信された場合、登録情報記憶部402を参照し、ユーザ端末10の交換データの送付候補となる他のユーザ端末10を検索する。ここで、検索要求とは、ユーザ端末10の交換データの送付候補となる他のユーザ端末10の検索をデータ交換サーバ40に要求するものである。
具体的には、検索処理部404は、検索エリア特定部404a(特定部)と、距離算出部404bと、送付候補決定部404cとを具備する。
検索エリア特定部404aは、送受信部401によってユーザ端末10からの検索要求が受信された場合、検索エリアを特定する。検索エリアは、ユーザ端末10の位置情報が示す位置を中心とする所定半径の円内に少なくとも一部が含まれる各エリアで構成される。検索エリア特定部404aは、上述の管理テーブルに登録されたユーザ端末10の位置情報に基づいて、上記検索エリアを構成する各エリアのインデックスキーを特定することで、上記検索エリアを特定する。
図4は、第1の実施の形態に係る検索エリアの概念図である。ここでは、検索エリアがユーザ端末10の位置を中心とする半径2kmの円内に少なくとも一部が含まれる各エリアで構成される場合が示される。図4に示すように、検索要求を送信したユーザ端末10の登録情報がインデックスキー「36」を有する管理テーブルに登録されている場合、上記検索エリアを構成する各エリアのインデックスキーは、18〜22、26〜30、34〜38、42〜46、50〜54である。
このような検索エリアを構成する各エリアのインデックスキーは、検索要求を送信したユーザ端末10の位置情報に基づいて算出される。具体的には、当該ユーザ端末10の位置情報(X,Y)に基づいて、当該ユーザ端末10の位置を中心とする所定半径(ここでは、半径2km)の円内に少なくとも一部が含まれる各エリア内の所定地点の位置情報(X+a,Y+b)を算出する。ここで、ユーザ端末10の位置情報(X,Y)は、管理テーブルに登録されている位置情報(経度、緯度)を、経度1度を90km、緯度1度を111.6kmとしてkm(キロメートル)単位に変更するものとする。また、図4では、各エリアは1km四方の正方形である。このため、図4においては、上記各エリア内の所定地点の位置情報(X+a,Y+b)は、−2≦a≦+2(aは整数)、−2≦b≦+2(bは整数)として、(X−2、Y−2)、(X−1、Y−2)、(X、Y−2)、(X+1、Y−2)、(X+2、Y−2)、…、(X+2、Y+2)で合計25個算出される。算出された25個の位置情報は、km(キロメートル)単位から経度・緯度の度単位に再変換されてハッシュ関数に入力される。このハッシュ関数で算出されるハッシュ値が各エリアのインデックスキーとなる。
以上のように、検索エリア特定部404aは、検索要求を送信したユーザ端末10の位置情報に基づいて検索エリアを構成する各エリア内の所定地点の位置情報を算出し、当該所定地点の位置情報に基づいて上記各エリアのインデックスキーを算出する。特に、以上で説明した算出方法では、ユーザ端末10の位置情報(X,Y)を経度・緯度単位からkm単位に変更するので、検索エリアを構成する各エリア内の所定地点の位置情報(X+a,Y+b)(ここで、−2≦a≦+2(aは整数)、−2≦b≦+2(bは整数))の算出を簡略化でき、各エリアのインデックスキーを容易に算出できる。
なお、検索エリアを構成する各エリア内の所定地点の位置情報の算出方法は、上記に限られるものではない。例えば、ユーザ端末10の位置情報(X,Y)を経度・緯度単位のまま変更せずに算出することも可能である。この場合、経度1度を90km、緯度1度を111.6kmとすると、図4のインデックスキー37のエリア内の所定地点の位置情報は、((X+1/90),Y)で表わされる。また、図4のインデックスキー44のエリア内の所定地点の位置情報は、(X,(Y−1/111.6))で算出される。このように算出された位置情報をハッシュ関数に入力することで、経度・緯度単位とkm単位との変換・再変換を行わずとも、検索エリアを構成する各エリアのインデックスキーを算出できる。
距離算出部404bは、検索要求を送信したユーザ端末10と検索エリア特定部404aによって特定された検索エリア内に位置する他のユーザ端末10との間の距離を算出する。具体的には、距離算出部404bは、検索エリア特定部404aで算出されたインデックスキーを有する管理テーブルに登録された他のユーザ端末10の位置情報を取得する。また、距離算出部404bは、取得した位置情報に基づいて、検索要求を送信したユーザ端末10と当該他のユーザ端末10との間の距離を算出する。
送付候補決定部404cは、距離算出部404bによって算出された距離が所定距離(例えば、2km)以下であるか否かを判定する。送付候補決定部404cは、算出された距離が所定距離以下である他のユーザ端末10を送付候補として決定する。
また、送付候補決定部404cは、ユーザ端末10の交換データの送付候補として検索された他のユーザ端末10のユーザ識別情報を含む送付候補リストを送受信部401に出力する。送受信部401は、送付候補決定部404cから出力された送付候補リストをユーザ端末10に送信する。
なお、送付候補決定部404cは、距離算出部404bによって算出された距離が所定距離以下である他のユーザ端末10のログイン要求受信時刻やニックネームなどに基づいて、検索要求を送信したユーザ端末10の交換データの送付候補を更に絞ってもよい。例えば、送付候補決定部404cは、上記他のユーザ端末10のうち、ログイン要求受信時刻が検索要求の受信時刻から所定時間前までの間にあるユーザ端末10を送付候補として決定してもよい。また、送付候補決定部404cは、上記他のユーザ端末のうち、検索要求を送信したユーザ端末10と同じ合言葉を有するユーザ端末10を送付候補として決定してもよい。
以上の検索処理部404による送付候補の検索処理は、送受信部401によってユーザ端末10からの再検索要求が受信された場合に行われてもよい。ここで、再検索要求とは、既に、送付候補が検索されたユーザ端末10が再度送付候補の検索を要求するものである。また、検索処理部404は、送受信部401によってユーザ端末10からの検索要求や再検索要求が受信された場合に、登録情報記憶部402に記憶されたログイン要求受信時刻を更新してもよい。かかる場合、ログイン要求受信時刻は、検索要求又は再検索要求の受信時刻に更新される。このように、ログイン要求受信時刻を更新することで、ログイン要求が受信されてから時間が経過しているユーザ端末10であっても、検索要求又は再検索要求が受信されていれば、送付候補として検索されることとなる。
交換管理部405は、検索処理部404でユーザ端末10の交換データの送付候補として他のユーザ端末10が検索された場合、検索された他のユーザ端末10のユーザ識別情報と、検索された他のユーザ端末10に対するユーザ端末10からの交換データの送信状態、検索された他のユーザ端末10によるユーザ端末10からの交換データの受信状態とを関連付けて交換状態記憶部406(図5参照)に記憶させる。
図5は、第1の実施の形態に係る交換状態記憶部406の一例を示す図である。図5に示すように、交換状態記憶部406では、ユーザ端末10Aのユーザ識別情報「#A」と、ユーザ端末10Aの交換データ#Aの送付候補として検索されたユーザ端末10B及び10Cのユーザ識別情報「#B」及び「#C」と、ユーザ端末10Aからのユーザ端末10B及び10Cに対する交換データ#Aの送信状態と、ユーザ端末10B及び10Cによる交換データ#Aの受信状態と、が関連付けて記憶される。
交換管理部405は、送受信部401によってユーザ端末10からの他のユーザ端末10に対する送信要求が受信された場合、ユーザ端末10からの他のユーザ端末10に対する交換データの送信状態を「済(送信済)」に更新する。ここで、送信要求とは、送付候補の他のユーザ端末10に対して交換データ記憶部407に記憶された交換データを送信することをユーザ端末10が要求するものである。例えば、図5においては、ユーザ端末10Aからの送信要求に応じて、ユーザ端末10Aからのユーザ端末10B及び10Cに対する交換データ#Aの送信状態が「未(未送信)」から「済(送信済)」に更新されている。
また、交換管理部405は、送受信部401によってユーザ端末10からの状態取得要求が受信された場合、ユーザ端末10に対する交換データの送信状態を取得して、送受信部401に出力する。ここで、状態取得要求とは、自端末に対する他のユーザ端末10からの交換データの送信状態の取得を要求する、すなわち、自端末が受信可能な交換データがデータ交換サーバ40に存在するか否かを確認するためのものである。
例えば、図5において、ユーザ端末10Aからのユーザ端末10Bに対する交換データ#Aの送信状態は「済(送信済)」である一方、ユーザ端末10Cからのユーザ端末10Bに対する交換データ#Cの送信状態は「未(未送信)」である。このため、ユーザ端末10Bからの状態取得要求が受信された場合、交換管理部405は、ユーザ端末10Aからの交換データ#Aを受信可能であることを示す状態情報を送受信部401に出力する。送受信部401は、交換管理部405から入力された状態情報をユーザ端末10Bに送信する。
また、交換管理部405は、送受信部401によって交換データの受信要求が受信された場合、交換データ記憶部407から交換データを取得して、送受信部401に出力する。送受信部401は、交換管理部405から入力された交換データをユーザ端末10に送信する。なお、交換データの受信要求には、交換データ識別情報(例えば、名刺IDなど)が含まれていてもよく、交換管理部405は、当該交換データ識別情報に関連付けられた交換データを交換データ記憶部407から取得してもよい。
また、交換管理部405は、交換データの受信要求に応じて送受信部401により交換データがユーザ端末10に送信された場合、交換状態記憶部406におけるユーザ端末10による受信状態を「済(受信済)」に更新する。例えば、図5においては、ユーザ端末10Bによる交換データ#Aの受信状態が「未(未受信)」から「済(受信済)」に更新されている。
次に、第1の実施の形態に係るデータ交換システムの動作について説明する。具体的には、(1)各ユーザ端末10の交換データの送付候補の検索動作(以下、検索動作という)と、(2)各ユーザ端末10の交換データの交換動作(以下、交換動作という)を説明する。なお、以下の検索動作及び交換動作において、ユーザ端末10A〜10Cとデータ交換サーバ40との通信は、例えば、HTTPプロトコルを用いて行われるものとするが、通信可能であればどのようなプロトコルが用いられてもよい。また、ユーザ端末10A〜10Cとデータ交換サーバ40との通信は、不図示の中継用ノード(例えば、MAPS、コアネットワーク上のノード、無線基地局20など)を介して行われてもよい。
(1)検索動作
図6及び図7を参照し、第1の実施の形態に係るデータ交換システムにおける検索動作を説明する。図6は、第1の実施の形態に係るデータ交換システムにおける検索動作を示すシーケンス図である。図7は、第1の実施の形態に係るデータ交換サーバにおける検索動作を示すフローチャートである。なお、図6及び図7では、図3に示すように、所定エリア毎にユーザ端末10の登録情報を管理する管理テーブルが登録情報記憶部402に記憶されているものとする。
図6に示すように、ユーザ端末10Aは、データ交換サーバ40に対して、ログイン要求を送信する(ステップS101)。ここでは、当該ログイン要求には、ユーザ端末10Aの位置情報(例えば、経度、緯度)が含まれる。なお、当該ログイン要求には、ユーザ端末10Aのユーザ識別情報、交換データ識別情報、ニックネーム、交換データなどが含まれてもよい。ユーザ端末10Aは、データ交換サーバ40に対するログイン要求の送信を契機として、検索要求制限タイマ(後述)を起動する。
データ交換サーバ40は、ユーザ端末10Aからのログイン要求を受信すると、当該ログイン要求に含まれる位置情報に基づいてインデックスキーを算出し、算出したインデックスキーを有する管理テーブルに当該ユーザ端末10Aの登録情報を登録する。(ステップS102)。例えば、ユーザ端末10Aの位置情報「経度Xa,緯度Ya」からインデックスキー「36」が算出される場合、図3に示すように、データ交換サーバ40は、インデックスキー「36」を有する管理テーブルに、ユーザ端末10Aのユーザ識別情報「#A」、位置情報「経度Xa,緯度Ya」、交換データ識別情報「名刺a」、ログイン要求受信時刻「21:30」、ニックネーム「Aaa」を関連付けて登録する。また、データ交換サーバ40は、ユーザ端末10Aからのログイン要求に含まれる交換データ#Aを交換データ識別情報「名刺a」と関連付けて交換データ記憶部407に記憶させる。
同様に、ユーザ端末10B及び10Cは、データ交換サーバ40に対して、ログイン要求を送信する(ステップS103、S105)。データ交換サーバ40は、ユーザ端末10B及び10Cからのログイン要求を受信すると、当該ログイン要求に含まれる位置情報に基づいてインデックスキーを算出し、算出したインデックスキーを有する管理テーブルに当該ユーザ端末10B及び10Cの登録情報を登録する。(ステップS104、S106)。例えば、図3では、インデックスキー「37」を有する管理テーブルにユーザ端末10Cの登録情報が登録されており、インデックスキー「44」を有する管理テーブルにユーザ端末10Bの登録情報が登録されている。また、データ交換サーバ40は、ユーザ端末10B及び10Cからのログイン要求に含まれる交換データ#B及び#Cを交換データ識別情報「名刺b」、「名刺c」と関連付けて交換データ記憶部407に記憶させる。
ユーザ端末10Aは、ログイン要求の送信を契機に起動した検索要求制限タイマが満了すると、データ交換サーバ40に対して、ユーザ端末10Aの交換データ#Aの送付候補の検索を要求する検索要求を送信する(ステップS107)。
データ交換サーバ40は、ユーザ端末10Aからの検索要求を受信すると、ユーザ端末10Aの交換データ#Aの送付候補の検索処理を行う(ステップS108)。図7を参照し、データ交換サーバ40の検索処理部404における検索動作を詳述する。なお、図7の「検索者」とは、データ交換サーバ40に対して検索要求を送信するユーザ端末10である。以下では、「検索者」がユーザ端末10Aである場合を説明するが、他のユーザ端末10である場合も同様の動作が行なわれるものとする。
図7に示すように、データ交換サーバ40は、検索者(ここでは、ユーザ端末10A)からの検索要求を受信すると、検索者の登録情報が登録された管理テーブルを登録情報記憶部402から検索し、検索された管理テーブルのインデックスキーを取得する(ステップS201)。例えば、図4では、検索者(ユーザ端末10A)の登録情報はインデックスキー「36」を有する管理テーブルに登録されているので、インデックスキー「36」が取得される。
データ交換サーバ40は、検索者の登録情報が登録された管理テーブルのインデックスキーに基づいて、検索エリアを構成する各エリアのインデックスキーを算出する(ステップS202)。上述のように、検索エリアは、検索者の位置情報が示す位置を中心とする所定半径の円内に少なくとも一部が含まれる各エリアで構成される。
例えば、図4において、検索者(ユーザ端末10A)の位置情報「経度Xa,緯度Ya」を経度1度を90km、緯度1度を111.6kmとしてkm(キロメートル)単位に変更した値を(X、Y)とする。このとき、検索エリアを構成する各エリア内の所定地点の位置情報は、−2≦a≦+2(aは整数)、−2≦b≦+2(bは整数)として、(X+a,Y+b)で算出される。例えば、検索者の位置するエリアの右側に隣接するエリアの所定地点の位置情報は(X+1,Y)で算出され、下側に隣接するエリアの所定地点の位置情報は(X,Y−1)で算出される。これらの位置情報は経度・緯度単位に再変換されてハッシュ関数に入力される。経度・緯度単位に再変換された(X+1,Y)、(X,Y−1)をハッシュ関数に入力することでインデックスキー「37」、「44」算出される。同様に、図4では、検索エリアを構成する各エリアのインデックスキー「18」〜「22」、「26」〜「30」、「34」〜「38」、「42」〜「46」、「50」〜「54」が算出される。
データ交換サーバ40は、以上のように算出したインデックスキーを有する管理テーブルに登録されたユーザ端末10を抽出する(ステップS203)。図4に示す場合、検索エリアを構成する各エリアのインデックスキーは、18〜22、26〜30、34〜38、42〜46、50〜54であるので、これらのインデックスキーを有する管理テーブルに登録されたユーザ端末10が抽出される。
以上のように、検索者の位置情報から検索エリアを構成する各エリアのインデックスキーを算出できるので、検索エリア(すなわち、検索者の位置情報が示す位置から所定半径以内の円に少なくとも一部が含まれる複数のエリア)を容易に特定することができる。
データ交換サーバ40は、検索者の位置情報と抽出されたユーザ端末10の位置情報とから、検索者と抽出されたユーザ端末10との間の2地点間の距離を算出する(ステップS204)。
データ交換サーバ40は、算出された2地点間の距離が所定距離(例えば、2km)以下であるユーザ端末10を検索者の交換データの送付候補として決定する(ステップS205)。データ交換サーバ40は、決定されたユーザ端末10を検索者の交換データの送付候補として交換状態記憶部406に記憶する。
なお、データ交換サーバ40は、ステップS205で決定されたユーザ端末10のログイン要求受信時刻やニックネームに基づいて、検索者の交換データの送付候補を更に絞ってもよい。例えば、データ交換サーバ40は、ログイン要求受信時刻が検索要求受信時刻から所定時間前までの間となるユーザ端末10を送付候補として検索してもよい。また、データ交換サーバ40は、検索者と同じ合言葉を有する他のユーザ端末10を送付候補として検索してもよい。
図6に示すように、データ交換サーバ40は、以上のように送付候補として検索されたユーザ端末10をユーザ端末10Aに通知する(ステップS109)。具体的には、データ交換サーバ40は、ユーザ端末10Aに対して、検索されたユーザ端末10のユーザ識別情報を含む送付候補リストを送信する。図4に示す場合、交換データ#Aの送付候補として、ユーザ端末10B及び10Cが決定されるので、ユーザ端末10B及び10Cのユーザ識別情報「#B」及び「#C」を含む送付候補リストが、ユーザ端末10Aに送信される。
同様に、ユーザ端末10Bは、ログイン要求の送信を契機に起動した検索要求制限タイマが満了すると、データ交換サーバ40に対して、ユーザ端末10Bの交換データ#Bの送付候補の検索を要求する検索要求を送信する(ステップS110)。データ交換サーバ40は、ユーザ端末10Bからの検索要求を受信すると、図7で説明したように交換データ#Bの送付候補の検索処理を行い(ステップS111)、検索された他のユーザ端末10をユーザ端末10Bに通知する(ステップS112)。
また、ユーザ端末10Cは、ログイン要求の送信を契機に起動した検索要求制限タイマが満了すると、データ交換サーバ40に対して、ユーザ端末10Cの交換データ#Cの送付候補の検索を要求する検索要求を送信する(ステップS113)。データ交換サーバ40は、ユーザ端末10Cからの検索要求を受信すると、図7で説明したように交換データ#Cの送付候補の検索処理を行い(ステップS114)、検索された他のユーザ端末10をユーザ端末10Cに通知する(ステップS115)。
以上のように、第1の実施の形態に係るデータ交換システムにおける検索動作によれば、ユーザ端末10Aから交換データの送付候補の検索要求が受信された場合、ユーザ端末10Aの位置情報に基づいて、当該位置情報が示すユーザ端末10Aの位置を中心とする所定半径の円内に少なくとも一部が含まれる各エリア(すなわち、検索エリアを構成する各エリア)のインデックスキーを特定する。このため、特定された各エリアのインデックスキーを有する管理テーブルに登録されたユーザ端末10B、10Cとユーザ端末10Aとの間の距離を算出すればよく、ログイン中の全ての他のユーザ端末10との間の距離を算出する必要がない。この結果、ユーザ端末10Aと同一エリアに位置する他のユーザ端末10B、10Cを、データ交換サーバ40の処理負荷を増大させずに、かつ、迅速に、ユーザ端末10Aの交換データの送付候補として特定できる。
また、第1の実施の形態に係るデータ交換システムにおける検索動作によれば、データ交換サーバ40は、ユーザ端末10Aの位置情報が登録された管理テーブルのインデックスキーに基づいて検索エリアのインデックスキーを算出する。このため、当該検索エリアのインデックスキーを有する管理テーブルに登録された他のユーザ端末10を、ユーザ端末10Aと同一エリアに位置するユーザ端末10としてより迅速に特定できる。
(2)交換動作
次に、図8を参照し、第1の実施の形態に係るデータ交換システムにおける交換動作を説明する。図8は、第1の実施の形態に係るデータ交換システムにおける交換動作を示すシーケンス図である。なお、図8において、ユーザ端末10A〜10Cは、図6及び図7で説明した送付候補の検索動作を行っているものとする。すなわち、ユーザ端末10A〜10Cは、それぞれ、上述の送付候補リストを有するものとする。以下において、ユーザ端末10A〜10Cは、図5に示すように、互いに、交換データ#A〜#Cの送付候補であるものとする。
図8に示すように、ユーザ端末10Aは、データ交換サーバ40に対して、状態取得要求を送信する(ステップS301)。上述のように、状態取得要求とは、ユーザ端末10Aに対するユーザ端末10B及び10Cからの交換データ#B及び#Cの送信状態の取得を要求する、すなわち、ユーザ端末10Aが受信可能な交換データ#B及び#Cがデータ交換サーバ40に存在するか否かを確認するためのものである。なお、ユーザ端末10Aは、例えば、送付候補リストの受信を契機として、所定時間間隔Tで定期的に状態取得要求を行う。
データ交換サーバ40は、ユーザ端末10Aからの状態取得要求に応じて、ユーザ端末10B及び10Cからのユーザ端末10Aに対する交換データ#B及び#Cの送信状態を交換状態記憶部406から取得する(ステップS302)。
データ交換サーバ40は、交換状態記憶部406から取得されたユーザ端末10Aに対する交換データ#B及び#Cの送信状態を示す状態情報をユーザ端末10Aに送信する(ステップS303)。ここでは、ユーザ端末10Aに対する交換データ#B及び#Cはデータ交換サーバ40に送信されていないので、ユーザ端末10Aが受信可能な交換データがないことを示す状態情報がユーザ端末10Aに送信される。
ユーザ端末10Aは、送付候補リストから交換データ#Aの送付先としてユーザ端末10Bを選択し、選択されたユーザ端末10Bに対する交換データ#Aの送信要求をデータ交換サーバ40に送信する(ステップS304)。なお、ユーザ端末10Aは、送付候補リストを表示画面に表示し、ユーザに送付先のユーザ端末10を選択させてもよい。或いは、ユーザ端末10Aは、送付候補リストに含まれる全てのユーザ端末10を全て送付先として選択してもよい。
データ交換サーバ40は、ユーザ端末10Bに対する交換データ#Aの送信要求を受信すると、交換状態記憶部406におけるユーザ端末10Bに対する交換データ#Aの送信状態を「済(送信済)」に更新する(ステップS305)。具体的には、図5に示すように、データ交換サーバ40は、交換状態記憶部406において交換データ#Aの送付候補としてのユーザ端末10Bのユーザ識別情報「#B」に関連付けられた送信状態を「済(送信済)」に更新する。
ステップS301と同様に、ユーザ端末10Bは、所定時間間隔Tで、データ交換サーバ40に対して状態取得要求を送信する(ステップS306)。また、ステップS302と同様に、データ交換サーバ40は、ユーザ端末10A及び10Cからのユーザ端末10Bに対する交換データ#A及び#Cの送信状態を交換状態記憶部406から取得する(ステップS307)。ここでは、ユーザ端末10Bに対する交換データ#Aの送信状態は「済(送信済)」に更新されているので、ユーザ端末10Aからの交換データ#Aを受信可能であることを示す状態情報がユーザ端末10Bに送信される(ステップS308)。
ステップS301〜S303と同様に、ユーザ端末10Cは、状態取得処理を行う(ステップS309〜S311)。
ユーザ端末10Bは、ステップS308で受信した状態情報に基づいて、データ交換サーバ40に対して、交換データ#Aの受信要求を送信する(ステップS312)。なお、ユーザ端末10Bは、ステップS308で受信した状態情報に基づいて、ユーザ端末10Aからの交換データ#Aを受信するか否かの選択画面を表示し、ユーザによる受信指示を受け付けた場合に、交換データ#Aの受信要求を送信してもよい。
データ交換サーバ40は、ユーザ端末10Bからの受信要求に応じて交換データ記憶部407から交換データ#Aを取得して、ユーザ端末10Bに送信する(ステップS313)。
データ交換サーバ40は、交換状態記憶部406におけるユーザ端末10Bに対する交換データ#Aの受信状態を「済(受信済)」に更新する(ステップS314)。具体的には、図5に示すように、データ交換サーバ40は、交換状態記憶部406において交換データ#Aの送付候補としてのユーザ端末10Bのユーザ識別情報「#B」に関連付けられた受信状態を「済(受信済)」に更新する。
ステップS304と同様に、ユーザ端末10Bは、送付候補リストから交換データ#Bの送付先としてユーザ端末10Aを選択し、選択されたユーザ端末10Aに対する交換データ#Bの送信要求をデータ交換サーバ40に送信する(ステップS315)。
ステップS305と同様に、データ交換サーバ40は、ユーザ端末10Aに対する交換データ#Bの送信要求を受信すると、交換状態記憶部406におけるユーザ端末10Aに対する交換データ#Bの送信状態を「済(送信済)」に更新する(ステップS316)。具体的には、図5に示すように、データ交換サーバ40は、交換状態記憶部406において交換データ#Bの送付候補としてのユーザ端末10Aのユーザ識別情報「#A」に関連付けられた送信状態を「済(送信済)」に更新する。
ステップS301における状態取得要求から所定時間経過後、ユーザ端末10Aは、ユーザ端末10Aは、再び、データ交換サーバ40に対して、状態取得要求を送信する(ステップS317)。また、ステップS302と同様に、データ交換サーバ40は、ユーザ端末10B及び10Cからのユーザ端末10Aに対する交換データ#B及び#Cの送信状態を交換状態記憶部406から取得する(ステップS318)。ここでは、ユーザ端末10Aに対する交換データ#Bの送信状態は「済(送信済)」に更新されているので、ユーザ端末10Bからの交換データ#Bを受信可能であることを示す状態情報がユーザ端末10Aに送信される(ステップS319)。
ユーザ端末10Aは、ステップS319で受信した状態情報に基づいて、データ交換サーバ40に対して、交換データ#Bの受信要求を送信する(ステップS320)。データ交換サーバ40は、ユーザ端末10Aからの受信要求に応じて交換データ記憶部407から交換データ#Bを取得して、ユーザ端末10Aに送信する(ステップS321)。
データ交換サーバ40は、交換状態記憶部406におけるユーザ端末10Aに対する交換データ#Bの受信状態を「済(受信済)」に更新する(ステップS322)。具体的には、図5に示すように、データ交換サーバ40は、交換状態記憶部406において交換データ#Bの送付候補としてのユーザ端末10Aのユーザ識別情報「#A」に関連付けられた受信状態を「済(受信済)」に更新する。
以上のように、第1の実施の形態に係るデータ交換システムによる交換動作によれば、データ交換サーバ40は、ユーザ端末10Aから送付候補のユーザ端末10B及び10Cに対する交換データ#Aの送信状態を管理している。このため、交換データ#Aの送付候補のユーザ端末10B及び10Cがデータ交換サーバ40に状態取得要求を送信することで、ユーザ端末10B及び10Cが受信可能な交換データ#Aが存在するか否かを容易に確認することができる。
また、第1の実施の形態に係るデータ交換システムによる交換動作によれば、ユーザ端末10Aは、上述の検索動作で検索されたユーザ端末10B及び10Cのうち、所望のユーザ端末10(例えば、ユーザ端末10B)に対してのみ交換データを送付できる。このため、意図しないユーザ端末10に交換データが送付されるのを防止することができる。
また、第1の実施の形態に係るデータ交換システムによる交換動作によれば、交換データ#Aの送付候補のユーザ端末10B及び10Cは、交換データ#Aの受信要求を行った上で交換データ#Aを受信する。このため、ユーザ端末10B及び10Cに対する交換データ#Aの送信状態が「済(送信済)」であっても、ユーザ端末10B及び10Cは、当該交換データ#Aの受信を望まない場合、当該交換データ#Aを受信する必要がない。したがって、例えば、悪意のユーザ端末10Aが多数のユーザ端末10に対する交換データ#Aを送付するような場合でも、当該悪意のユーザ端末10Aからの交換データ#Aがむやみに受信されてしまうのを防止することができる。
上述の実施の形態を用いて本発明について詳細に説明したが、当業者にとっては、本発明が本明細書中に説明した実施形態に限定されるものではないということは明らかである。
例えば、上述の実施の形態では、データ交換サーバ40は、登録情報記憶部402、交換状態記憶部406及び交換データ記憶部407の3つの記憶部を具備するが、記憶部の構成はこれに限られるものはなく、これらが1つ又は複数の記憶部で構成されてもよい。
本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び更新態様として実施することができる。従って、本明細書の記載は、例示説明を目的とするものであり、本発明に対して何ら制限的な意味を有するものではない。