(57)【要約】【課題】通信相手が保有していない可能性が高い情報を選択して送信可能なデータ共有技術を提供する。【解決手段】他のノードに対してデータの送信を行うデータ送信装置であって、データを記憶するデータ記憶手段と、前記データ記憶手段に記憶されているデータを所定のグループに分類し、各グループについてのデータ数を表す情報であるサマリ情報を記憶するサマリ情報記憶手段と、他のノードからサマリ情報を受信する受信手段と、他のノードから受信されたサマリ情報に基づいて送信すべきデータを選択する選択手段と、前記選択手段によって選択されたデータを送信する送信手段と、を備える。選択手段は、他のノードから受信されたサマリ情報に基づいて、データ数の少ないグループに含まれるデータほど優先的に選択することが好ましい。【選択図】図１
2014170293.tif 000002
【特許請求の範囲】
【請求項１】
他のノードに対してデータの送信を行うデータ送信装置であって、
データを記憶するデータ記憶手段と、
前記データ記憶手段に記憶されているデータを所定のグループに分類し、各グループについてのデータ数を表す情報であるサマリ情報を記憶するサマリ情報記憶手段と、
他のノードからサマリ情報を受信する受信手段と、
他のノードから受信されたサマリ情報に基づいて送信すべきデータを選択する選択手段と、
前記選択手段によって選択されたデータを送信する送信手段と、
を備える、データ送信装置。
【請求項２】
前記選択手段は、他のノードから受信されたサマリ情報に基づいて、データ数の少ないグループに含まれるデータほど優先的に選択する、
請求項１に記載のデータ送信装置。
【請求項３】
前記受信手段は、複数の他のノードからサマリ情報を受信し、
前記選択手段は、他のノードから受信されたサマリ情報に含まれるグループごとのデータ数を足しあわせて、足し合わせた後のデータ数の少ないグループに含まれるデータほど優先的に送信すべきデータとして選択する、
請求項１に記載のデータ送信装置。
【請求項４】
前記選択手段は、全グループのデータ数の和とグループのデータ数との差が大きいグループほど優先的に選択し、選択されたグループに属するデータを選択する、
請求項２または３に記載のデータ送信装置。
【請求項５】
前記選択手段は、直近の所定期間以内に送信されたデータについては、前記ランダムな選択の対象としない、
請求項４に記載のデータ送信装置。
【請求項６】
前記選択手段は、他のノードから受信されたサマリ情報と前記サマリ情報記憶手段に格納されたサマリ情報とを比較して、他のノードの保有するデータ数が自ノードの保有するデータ数と比較して少ないグループほど、当該グループに含まれるデータを優先的に選択する、
請求項１に記載のデータ送信装置。
【請求項７】
前記送信手段は、前記サマリ情報記憶手段に格納されたサマリ情報を前記他のノードへ送信する、
請求項１〜６のいずれかに記載のデータ送信装置。
【請求項８】
前記選択手段は、前記他のノードから送信されたサマリ情報に加えて、前記サマリ情報記憶手段に格納されたサマリ情報にも基づいて、送信すべきデータを選択する、
請求項１〜７のいずれかに記載のデータ送信装置。
【請求項９】
前記受信手段は、他のノードまたはユーザからデータの受信を行うものであり、
前記受信手段がデータを受信した場合に、当該受信したデータを前記データ記憶手段に格納するとともに、前記サマリ情報を更新するデータ管理手段をさらに備える、
請求項１〜８のいずれかに記載のデータ送信装置。
【請求項１０】
前記データ管理手段は、データにハッシュ関数を適用して得られるハッシュ値を当該デ
ータのグループとする、
請求項９のいずれかに記載のデータ送信装置。
【請求項１１】
前記ハッシュ関数として、類似するデータからは同一のハッシュ値が得られる確率が高いハッシュ関数を用いる、
請求項１０に記載のデータ送信装置。
【請求項１２】
前記データ管理手段は、前記受信手段が受信したデータを前記データ記憶手段に格納する際に前記データ記憶手段の容量が不足する場合には、前記データ記憶手段からデータを削除するとともに、前記サマリ情報を更新する、
請求項９〜１１のいずれかに記載のデータ送信装置。
【請求項１３】
前記データ管理手段は、前記受信手段が受信したデータを前記データ記憶手段に格納する際に、前記サマリ情報記憶手段に格納された前記サマリ情報において当該データが属するグループのデータ数が所定数以上である場合には、前記データ記憶手段から当該グループに属するデータを削除する、
請求項９〜１２のいずれかに記載のデータ送信装置。
【請求項１４】
他のノードから受信されるサマリ情報および前記サマリ情報記憶手段に記憶されるサマリ情報に含まれる各グループのデータ数が一致した場合は、データの送信を行わない、
請求項１〜１３のいずれかに記載のデータ送信装置。
【請求項１５】
前記データ記憶手段に記憶されているデータ数が所定の閾値よりも少ない場合には、前記データ記憶手段内に記憶されているデータを直近の所定期間内に少なくとも一度送信しているという条件をさらに満たす場合に、データの送信を行わない、
請求項１４に記載のデータ送信装置。
【請求項１６】
前記送信手段は、自ノードに割り当てられた送信期間においてデータおよびサマリ情報を送信する、
請求項１〜１５のいずれかに記載のデータ送信装置。
【請求項１７】
複数のノードから構成され、各ノードの間でデータを共有するデータ共有システムであって、
各ノードは、
データを記憶するデータ記憶手段と、
前記データ記憶手段に記憶されているデータを所定のグループに分類し、各グループについてのデータ数を表す情報であるサマリ情報を記憶するサマリ情報記憶手段と、
他のノードからサマリ情報を受信する受信手段と、
他のノードから受信されたサマリ情報に基づいて送信すべきデータを選択する選択手段と、
前記選択手段によって選択されたデータを送信する送信手段と、
を備える、データ共有システム。
【請求項１８】
前記受信手段は、複数の他のノードからサマリ情報を受信し、
前記選択手段は、他のノードから受信されたサマリ情報に含まれるグループごとのデータ数を足しあわせて、足し合わせた後のデータ数の少ないグループに含まれるデータほど優先的に送信すべきデータとして選択する、
請求項１７に記載のデータ共有システム。
【請求項１９】
前記選択手段は、全グループのデータ数の和とグループのデータ数との差が大きいグル
ープほど優先的に選択し、選択されたグループに属するデータをランダムに選択する、
請求項１８に記載のデータ共有システム。
【請求項２０】
前記複数のノードのうち、一つのノードがアクセスポイントとして機能し、その他のノードがステーションとして機能し、
アクセスポイントとして機能するノードは、その他のノードに対してアドレスを割り当てる機能を有し、
ステーションとして機能するノードの前記送信手段は、アクセスポイントが送信してから、自ノードに割り当てられたアドレスに応じた時間の経過後に送信を開始する、
請求項１７〜１９のいずれかに記載のデータ共有システム。
【請求項２１】
アクセスポイントとして機能するノードが送信をしてから、その他のノードの全てが送信するまでを１つの通信サイクルとして、
前記選択手段は、現在の１つ前の通信サイクルにおいて他のノードから受信されたサマリ情報に基づいて、送信すべきデータを選択する、
請求項２０に記載のデータ共有システム。
【請求項２２】
データを記憶するデータ記憶手段と、前記データ記憶手段に記憶されているデータを所定のグループに分類し、各グループについてのデータ数を表す情報であるサマリ情報を記憶するサマリ情報記憶手段と、を備えるノードが、
他のノードから、サマリ情報を受信する受信ステップと、
他のノードから受信されたサマリ情報に基づいて送信すべきデータを選択する選択ステップと、
前記選択ステップにおいて選択されたデータを送信する送信ステップと、
を含むデータ共有方法。
【請求項２３】
前記選択ステップでは、他のノードから受信されたサマリ情報および前記サマリ情報記憶手段に記憶されているサマリ情報を足しあわせて、各グループのデータ数を算出し、データ数の少ないグループに含まれるデータほど優先的に送信すべきデータとして選択する、
請求項２２に記載のデータ共有方法。
【請求項２４】
前記選択ステップでは、全グループのデータ数の和とグループのデータ数との差が大きいグループほど優先的に選択し、選択されたグループに属するデータをランダムに選択する、
請求項２３に記載のデータ共有方法。
【請求項２５】
複数のユーザ端末と、複数のデータ通信装置と、から構成され、
ユーザ端末から入力されたメッセージを、前記複数のデータ通信装置の間で交換して、他のユーザ端末に提供するメッセージ交換システムであって、
前記ユーザ端末は、
ユーザからメッセージの入力を受け付ける入力手段と、
前記メッセージをデータ通信装置に送信する送信手段と、
データ通信装置からメッセージを受信し、ユーザに対して出力する出力手段と、
を備え、
前記データ通信装置は、
前記メッセージを記憶するメッセージ記憶手段と、
前記メッセージ記憶手段に記憶されているメッセージを所定のグループに分類し、各グループについてのメッセージ数を表す情報であるサマリ情報を記憶するサマリ情報記憶手段と、
前記ユーザ端末からメッセージを受信し、かつ、他のデータ通信装置からメッセージおよびサマリ情報を受信する受信手段と、
他のデータ通信装置から受信されたサマリ情報および前記サマリ情報記憶手段に記憶されているサマリ情報に基づいて送信すべきメッセージを選択する選択手段と、
前記選択手段によって選択されたメッセージおよび前記サマリ情報記憶手段に記憶されたサマリ情報を送信する送信手段と、
を備える、
メッセージ交換システム。
【請求項２６】
前記複数のデータ通信装置は、アクセスポイントとしてもステーションとしても機能可能であり、
アクセスポイントとして機能するデータ通信装置が、前記ユーザ端末と通信を行う、
請求項２５に記載のメッセージ交換システム。
【請求項２７】
前記複数のデータ通信装置は、所定のネットワークを介してサーバ装置と通信可能であり、
ステーションとして機能するデータ通信装置は、前記所定のネットワークに接続可能になった場合には、前記所定のネットワークに接続して前記サーバ装置へ前記メッセージ記憶手段に格納されたメッセージを送信する、
請求項２６に記載のメッセージ交換システム。
【請求項２８】
ステーションとして機能するデータ通信装置は、前記所定のネットワークに接続可能になった場合には、前記所定のネットワークへの接続と、前記アクセスポイントとして機能するデータ通信装置への接続とを定期的に切り替える、
請求項２７に記載のメッセージ交換システム。
【請求項２９】
前記サーバ装置は、データ通信装置から送信されるメッセージを取得し、メッセージ投稿サーバへアップロード済みのメッセージであるか否か判定し、アップロード済みでない場合には当該メッセージ投稿サーバへアップロードする、
請求項２７または２８に記載のメッセージ交換システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の通信ノード間でデータを効率的に交換する技術に関する。
【背景技術】
【０００２】
車車間通信を用いて交通情報などの情報を複数の車両の間で共有する手法が研究・開発されている。車両が保有する情報を周囲の車両に送信し、周囲の車両は受信した情報を記憶して、さらに周囲の車両に対して送信する。このようにして、情報が拡散する。
【０００３】
車車間通信に限られるわけではないが、このような情報共有技術においては、効率的に情報を共有することが求められる。たとえば、できるだけ通信相手が保有していない情報を送信することが望まれる。しかしながら、情報機器の記憶容量が増大するにつれて１つの通信ノードが保有するデータの数は膨大な数となる。データの数が多いと、通信相手がどのようなデータを保有していてどのようなデータを保有していないかということを簡単には判別できなくなる。
【０００４】
データの同一性を検出する技術としてBloom Filterが知られている（非特許文献１）。Bloom Filterでは、データのハッシュ値を算出し、得られたハッシュ値をビット単位OR演算で重ね合わせる。そして、チェック対象データのハッシュ値を算出し、そのいずれかのビット位置でフィルタの値が０であれば、そのデータは登録されていないことが保証される。Bloom Filterでは、瞬時に（O(1)で）検査が行える。
【０００５】
したがって、情報共有技術にBloom Filterを用いて、効率よく情報を拡散することが考えられる。すなわち、Bloom Filterのフィルタ値を通信相手ノードから取得し、このフィルタ値を用いて相手が保有していないデータを選択して送信することが考えられる。しかしながら、Bloom Filterでは一度登録したデータの削除は行えないという制限がある。利用が長期間にわたると次第に誤判定（保有していないデータを保有していると判断する＝擬陽性）の発生確率が上昇していく。このように、情報が絶えず供給され破棄する必要があるようなシステムにBloom Filterを適用するのは有効とはいえない。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】B. H. Bloom, "Space/time Trade-offs in Hash Coding with Allowable Errors", Communications of the ACM (CACM1970), vol. 13, No. 7, pp. 422-426, July 1970.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は上記の問題点を考慮してなされたものであり、本発明の目的は、通信相手が保有していない可能性が高い情報を選択して送信可能なデータ共有技術を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の第１の態様は、他のノードに対してデータの送信を行うデータ送信装置である。データ送信装置は、データ記憶手段と、サマリ情報記憶手段と、受信手段と、選択手段と、送信手段とを備える。データ記憶手段には、複数のデータが記憶される。データ送信装置は、データ記憶手段に記憶されたデータの中から、いずれかのデータを選択して他の
ノードに対して送信する。サマリ情報記憶手段には、データ記憶手段に記憶されたデータに基づいて作成されるサマリ情報が記憶される。サマリ情報は、データ記憶手段に記憶されているデータを所定のグループに分類し、各グループについて何個のデータがデータ記憶手段に記憶されているかを表す情報である。受信手段は、他のノードから、そのノードに関するサマリ情報を受信する。選択手段は、受信手段から受信したサマリ情報に基づいて、送信すべきデータを選択する。送信手段は、選択手段によって選択されたデータを前記他のノードに対して送信する。
【０００９】
本態様において、選択手段は、他のノードのサマリ情報においてデータの数が少ないグループに含まれるデータを、優先的に選択することが好ましい。なお、複数のノードからサマリ情報を受信する場合には、それぞれのサマリ情報に含まれるグループごとのデータ数（カウンタ値）を足しあわせて、足し合わせ後のデータ数に基づいて上記と同様の判断をすればよい。たとえば、サマリ情報に基づいて把握できるグループごとのデータ数に基づいて、全グループのデータ数の和とグループのデータ数との差が大きいグループほど優先的に選択し、選択されたグループに属するデータを選択するようにすることが考えられる。選択されたグループの中からメッセージを選択する基準については、任意の基準で構わない。このような構成を採用することで、通信相手ノードが保有していない可能性が高いデータを選択・送信することが可能となる。ここで、優先的に選択するというのは、高い確率で選択されるということを意味する。すなわち、データ数の少ないグループのデータほど優先的に選択する場合に、データ数の最も少ないグループのデータが常に選択される必要はない。もっとも、常にデータ数の最も少ないグループのデータを選択するようにしても構わない。
【００１０】
本態様において選択手段は、直近の所定時間以内に送信手段によって送信されたデータについては、上記の選択の対象としないことが好ましい。こうすることで、同じデータが短い期間内に重複して送信されるという無駄を省くことができる。
【００１１】
本態様における受信手段は、他のノードまたはユーザからデータの受信を行うことが好ましい。そして、本態様に係るデータ送信装置は、受信手段が受信したデータをデータ記憶手段に格納するとともに、サマリ情報を更新するデータ管理手段をさらに備えることが好ましい。サマリ情報の更新は、受信したデータからそのデータのグループを求めて、求められたグループについてのデータ数（カウンタ値）を１増やせばよい。あるいは受信したデータにグループＩＤが含まれている場合には、そのグループＩＤについてのデータ数を1増やせばよい。このようにすることで、データ送信装置内のサマリ情報を常にデータ
記憶手段と整合させることができる。
【００１２】
本態様において、送信手段は、自ノードのサマリ情報記憶手段に格納されたサマリ情報（以下、自ノードのサマリ情報とも称する）を他のノードへ送信することが好ましい。このようにすることで、自ノードが保有していないデータを他のノードから送信してもらうことが期待できる。
【００１３】
本態様において、選択手段は、他のノードから送信されたサマリ情報だけでなく、自ノードのサマリ情報にも基づいて送信すべきデータを選択するようにしてもよい。具体的には、他のノードのサマリ情報と自ノードのサマリ情報を全て足しあわせて、データ数の少ないグループのデータを優先的に選択することが考えられる。自ノードのサマリ情報を考慮した選択方法として、その他の方法も考えられる。たとえば、他ノードのサマリ情報と自ノードのサマリ情報を比較して、他のノードの保有するデータ数が自ノードの保有するデータ数と比較して少ないグループほど、当該グループに含まれるデータを優先的に選択してもよい。通信相手のノードが複数存在する場合には、各グループについて、他ノード１台が平均して保有するデータ数と自ノードが保有するデータ数とを比較して、差が大き
いグループに属するデータほど優先的に選択すればよい。
【００１４】
データがどのグループに属するかは、データのハッシュ値に基づいて決定することが考えられる。すなわち、本態様におけるデータ管理手段は、データにハッシュ関数を適用して得られるハッシュ値を、そのデータのグループとして扱うことが考えられる。ここで、ハッシュ関数として、一様性の高いハッシュ関数（CRC, MD, SHAなど）を採用することが考えられる。また、類似するデータが同一のハッシュ値をとる可能性が高い特殊なハッシュ関数（LSH, GeoHash, GeoHexなど）を採用することも考えられる。なお、ハッシュ関数に適用するのは、データの全ての部分であってもよいし、データの一部であってもよい。たとえば、LSHを用いることで、類似のデータには同一のハッシュ値（グループ）が割り
当てられることになるので、類似性の判断対象となる部分のみをハッシュ関数に適用することが好ましい。同様に、GeoHashやGeoHexは、データのうち位置情報に関する部分を対
象とする。一様なハッシュ関数を用いることで同一性の判断可能となるが、上記のような特殊なハッシュ関数を用いることで同一性に加えて類似性も考慮したデータの選択・送信ができる。なお、同一性のみを考慮するのであれば、ハッシュ関数を使わずに乱数によってグループを決定しても構わない。乱数を用いた場合も、一様性ハッシュ関数を用いた場合と同様の効果が得られる。また、ここで決定したグループは、データと関連づけて記憶し、他ノードに送信する際には一緒に送信することも好ましい。そうすることで、グループの決定を各ノードで行う必要がなくなる。
【００１５】
本態様においてデータ管理手段は、受信手段が受信したデータをデータ記憶手段に格納する際に、データ記憶手段の容量が不足する場合には、データ記憶手段からデータを削除することが好ましい。この際、データ管理手段は、サマリ情報の更新も行う。具体的には、削除したデータのグループからデータ数（カウンタ値）を１減ずる処理を行う。また、データ記憶手段の容量に残りがある場合でも、サマリ情報記憶手段におけるデータ数が所定数（上限値）以上となる場合には、受信したデータと同じグループの属するメッセージをデータ記憶手段から削除することが好ましい。すなわち、サマリ情報のカウンタ値が桁あふれを起こす場合などにも、データ記憶手段からデータを削除することが好ましい。本態様に係るデータ送信装置では、サマリ情報として、各グループのカウント数を用いているので、データ記憶手段からデータの削除を行っても、サマリ情報の整合性を保つことができる。
【００１６】
本態様に係るデータ送信装置によれば、他のノードが保有していないデータを送信することができる。したがって、長時間の通信が可能であれば最終的には全ノードが保有するデータが同一となることが期待される。そして、保有データが同一となった場合にはそれ以上のデータ送信を行う必要は無いので、データの送信を停止する。具体的な停止条件としては、たとえば、他のノードのサマリ情報と自ノードのサマリ情報の全てのサマリ情報について、各グループのデータ数が一致するという条件を採用することが考えられる。このような条件を満たした場合には、全ノードが保有するデータが一致している可能性が高いためである。なお、この停止条件は、各ノードが保有するデータ数が十分に多い場合には有効な判定基準となるが、保有するデータ数が少ない場合には必ずしも保有するデータが一致することを意味しない場合がある。そこで、データ記憶手段に記憶されているデータ数が所定の閾値よりも少ない場合には、データ記憶手段内に記憶されているデータを直近の所定期間内に少なくとも一度送信していることを、停止条件に加えることも好ましい。
【００１７】
本発明の第２の態様は、第１の態様のデータ送信装置から構成されるデータ共有システムである。データ送信装置が上述のような機能を有することで、データ共有システム内のいずれかのノード（データ送信装置）に格納されたデータは他のノードに効率的に送信され、システム内に素早く拡散される。したがって、各ノードが保有するデータは比較的短
い時間で、互いに一致するようになる。なお、本態様に係るデータ共有システムにおけるデータ送信装置は、移動可能な通信装置としてもよい。データ送信装置の移動速度が速い場合には、必ずしも全ノードが保有するデータを一致させることはできないが、他のノードが有していないデータを優先的に送信することが可能である。ここで、移動可能な通信装置とは、通信装置が移動可能な車両等の移動可能な物体に取り付けられる場合や、通信装置を人間が保有して移動する場合や、通信装置が車両などの移動可能な物体に持ち込まれ車両等が移動する場合などを含む。
【００１８】
本発明の第２態様において、データ共有システムを構成する各ノード（データ送信装置）は、いずれもアクセスポイント（AP）としてもステーション（STA）としても機能可能
であることが好ましい。あるいは、少なくともいずれかのノードはアクセスポイントとステーションの両方として機能可能であることが好ましい。そしてシステム内で、一つのノードがアクセスポイントとして機能し、その他のノードがステーションとして機能する。ここで、アクセスポイントとして機能するノードは、ステーションとして機能するノードに対してアドレスを割り当てる機能を有することが好ましい。ステーションとして機能するノードの送信手段は、アクセスポイントとして機能するノードが送信をしてから、自ノードに割り当てられたアドレスに応じた時間の経過後に送信を開始することが好ましい。このようにすることで、各ノードがランダムアクセス通信方式を採用する場合であっても、システム内で時分割式の通信が実現可能となる。時分割通信では通信の衝突が発生したり、不要な待ち時間が発生したりしないので、効率的な通信が行える。
【００１９】
上述のような時分割通信方式を実現すると、通信にサイクル（周期）を導入することができる。すなわち、アクセスポイントとして機能するノードが送信してから、その他のノードの全てが送信するまでを１つの通信サイクルとして定義することができる。そして、各ノードの選択手段は、現在の１つ前の通信サイクルにおいて他のノードから受信されたサマリ情報を用いて、送信すべきデータを選択することが好ましい。通信サイクルが導入されることで、いつの時点のサマリ情報を用いるかを明確にすることができる。
【００２０】
本発明の第３の態様は、上記第１および第２の態様におけるデータ送信装置が行うデータ共有方法である。
【００２１】
本発明の第４の態様は、上記第１から第３の態様に係るデータ共有技術を用いて実現するメッセージ交換システムである。本態様に係るメッセージ交換システムは、複数のユーザ端末と、複数のデータ通信装置とから構成され、ユーザ端末から入力されたメッセージを、複数のデータ通信装置の間で交換して、他のユーザ端末に提供するものである。
【００２２】
本態様におけるユーザ端末は、ユーザからメッセージの入力を受け付ける入力手段と、メッセージをデータ通信装置に送信する送信手段と、データ通信装置からメッセージを受信してユーザに対して出力する出力手段とを備える。
【００２３】
本態様におけるデータ通信装置は、上記第１の態様に係るデータ送信装置と同様である。また、本態様における複数のデータ通信装置は、上記第２の態様に係るデータ共有システムとして機能する。
【００２４】
このような構成を採用することで、ユーザ端末を介してユーザから入力されたメッセージが、システム内で効率的に交換されて他のユーザ端末まで比較的早くに到達する。
【００２５】
本態様において、複数のデータ通信装置は、アクセスポイントとしてもステーションとしても機能可能であることが好ましく、アクセスポイントとして機能するデータ通信装置がユーザ端末と通信を行うことが好ましい。データ通信装置は、アクセスポイントの仮想
化を行うことや、複数の無線機を有することで、他のデータ通信装置とユーザ端末の両方に対してアクセスポイントとして機能することができる。
【００２６】
本態様において、データ通信装置は、インターネットなどの所定のネットワークを介してサーバ装置と通信可能とすることが好ましい。ステーションとして機能するデータ通信装置は、前記所定のネットワークに接続可能となった場合には、このネットワークに接続してサーバ装置へメッセージを送信することが好ましい。上述のようにシステム内でメッセージが効率的に拡散されるので、いずれかのデータ通信装置がサーバ装置への接続を発見した場合にサーバ装置に送信するようにすれば、ユーザ端末から入力されたメッセージがサーバ装置へ送信される確率を高めることができる。
【００２７】
この場合、ステーションとして機能するデータ通信装置は、前記所定のネットワークに接続可能になった場合に、このネットワークへの接続と、アクセスポイントとして機能するデータ通信装置への接続とを定期的に切り替えることが好ましい。このようにすれば、データ通信装置が１つの無線機しか有しない場合であっても、システム内でのメッセージ交換と、サーバ装置へのメッセージ送信とを両立させることができる。
【００２８】
本態様において、上述のサーバ装置は、データ通信装置から送信されるメッセージを、メッセージ投稿サーバへアップロードする機能を有することが好ましい。メッセージ投稿サーバは、メッセージの投稿を受け付け、投稿されたメッセージをアクセスユーザに対して表示する機能を有するものである。この際、上述のサーバ装置は、自装置がメッセージ投稿サーバにすでにアップロードしたメッセージであるかを判定する機能、および、アップロード済みでないメッセージをメッセージ投稿サーバにアップロードする機能を有することが好ましい。このようにすることで、同じメッセージが重複してメッセージ投稿サーバに投稿されることを防止することができる。
【００２９】
本発明は、上記の手段の少なくとも一部を備えるデータ送信装置、データ共有システム、メッセージ交換システムとして捉えることができる。また、本発明は、上記の処理の少なくとも一部を備えるデータ送信方法として捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【００３０】
本発明によれば、通信相手が保有していない可能性が高い情報を選択して送信可能となり、効率的な情報の共有が可能となる。
【図面の簡単な説明】
【００３１】
【図１】本実施形態に係る情報共有システム１００の全体概要構成を示す図。
【図２】ユーザ端末１０２が車載機１１０にアクセスした際に表示される画面の例を示す図。
【図３】車載機１１０の機能構成を示す図。
【図４】車載機１１０の通信モードの状態遷移を示す図。
【図５】車載機１１０がユーザ端末１０２と通信を行う際に実行する処理の流れを示すフローチャート。
【図６】メッセージ情報のフォーマットを示す図。
【図７】サマリ情報の概要を示す図。
【図８】ユーザ１０３から車載機１１０にメッセージが投稿された場合に車載機１１０が行う処理の流れを示すフローチャート。
【図９】車載機１１０間で通信を行う場合の、通信順序制御について説明する図。
【図１０】車載機１１０間で行う通信処理の概要を示すフローチャート。
【図１１】他の車載機からメッセージを受信した場合に車載機１１０が行う処理の流れを示すフローチャート。
【図１２】他の車載機からサマリ情報を受信した場合に車載機１１０が行う処理の流れを示すフローチャート。
【図１３】サマリ情報の累積（足しあわせ）について説明する図。
【図１４】車載機１１０が送信するメッセージ情報を選択する際の処理の流れを示すフローチャート。
【図１５】車載機１１０においてメッセージ情報の送信を停止する判断の処理の流れを示すフローチャート。
【図１６Ａ】車載機１１０間でのメッセージ交換処理の具体的な動作例を説明する図。
【図１６Ｂ】車載機１１０間でのメッセージ交換処理の具体的な動作例を説明する図。
【図１７】車載機１１０がフィルタサーバ１０５と通信を行う際の処理の流れを示すフローチャート。
【発明を実施するための形態】
【００３２】
本実施形態に係る情報共有システムは、災害発生時に車両間で情報の伝搬を行い、車両からユーザに情報を発信することで、情報提供を主とした災害対策環境を提供するものである。車両からユーザに対して提供される情報は、周辺地図や災害対策マニュアルなどのあらかじめ保有している情報の他に、ユーザから入力された情報を含む。ユーザから車両に投稿された情報を、車両間で効率的に交換・拡散し、多くのユーザあるいはインターネット上のサーバへ届けることが本実施形態に係る情報共有システムの目的の一つである。以下では、図面を参照しながら本発明の実施形態に係る情報共有システムについて説明する。
【００３３】
＜システムの全体概要＞
図１は、本実施形態に係る情報共有システム１００の全体概要構成を示す図である。図１に示すように情報共有システムは、複数の車両１０１ａ，１０１ｂ，１０１ｃ（以下、総称してあるいは個別に車両１０１とも表記する）、複数のユーザ端末１０２ａ，１０２ｂ（以下、総称してあるいは個別にユーザ端末１０２とも表記する）、ネットワーク１０４、フィルタサーバ１０５、メッセージ投稿サーバ１０６から構成される。なお、ここで示した構成は例示にすぎず、車両１０１やユーザ端末１０２やフィルタサーバ１０５の数は任意であってよく、また、１つの車両に接続されるユーザ端末の数も任意であってよい。
【００３４】
車両１０１は、無線通信機（車載機）１１０を有し、車両間で情報を交換したり、ユーザ１０３に情報を提供したり、フィルタサーバ１０５へ情報を送信したりする。例えば、車両１０１は、ユーザ１０３から直接あるいはユーザ端末１０２を介して入力されたメッセージをデータベース内に格納し、車両間でこのメッセージを交換する。車両は移動可能であるため、ユーザから入力されたメッセージが広く伝搬する。稼働中のアクセスポイントが見つかった場合は、車両１０１はユーザから入力されたメッセージをネットワーク１０４を介してフィルタサーバ１０５へ送信する。車両間でメッセージが効率的に拡散されるので、ほとんどの通信インフラが災害により機能停止となっていても、いずれかの車両からフィルタサーバ１０５への送信がなされる。フィルタサーバ１０５は、メッセージ投稿サーバ１０６へのメッセージ投稿をフィルタ（選別）する機能があり、すでにサーバ１０６へ送信済み以外のメッセージを送信する。
【００３５】
ユーザ端末１０２は、無線通信機能およびウェブサービスクライアント機能を有する携帯型無線通信装置（例えば、ノート型パソコン、スマートフォン）である。ユーザ端末１０２は、車両１０１から情報を取得したり、車両１０２に対して情報を送信したりするこ
とができる。
【００３６】
ネットワーク１０４は、任意のネットワークであって構わないが、本実施形態ではインターネットを想定する。フィルタサーバ１０５は、車両１０１からメッセージ投稿サーバ１０６へ送信するメッセージのフィルタリングを行う機能を有する。本実施形態では、車両１０１はメッセージ投稿サーバ１０６へ直接投稿せずに、まずフィルタサーバ１０５へ送信する。すなわち、フィルタサーバ１０５にメッセージが集約されるので、どのメッセージがメッセージ投稿サーバ１０６へ投稿されたのかをフィルタサーバ１０５において管理することができる。フィルタサーバ１０５は、メッセージ投稿サーバ１０６へ未投稿のメッセージを選別して、メッセージ投稿サーバ１０６へ送信する。ユーザは、メッセージ投稿サーバ１０６に投稿されたメッセージをインターネットを介して閲覧可能である。インターネット接続はラストワンマイルを除けば災害耐性が強く、ユーザはアクセスポイントさえ確保できれば、メッセージ投稿サーバ１０６に投稿されたメッセージを自由に読むことができる。
【００３７】
本実施形態に係る情報共有システムの利用イメージについて、ユーザ１０３の観点から説明する。図２は、ユーザ端末１０２に表示される画面の例を示す図である。図２（ａ）は、ユーザ端末１０２が車両１０１の無線通信機１１０に無線接続したときに表示される画面の例である。図に示すように、ユーザ端末１０２を介してユーザ１０３は、周辺地図や災害マニュアルのダウンロードや、政府・報道機関の公式発表、伝言板システムへの書き込みや伝言板を調べることができる。ここで、伝言板を利用する場合は、図２（ｂ）に示すような画面から、メッセージを書き込んだり、車両１０１が有するメッセージを検索したりすることができる。ユーザが伝言板システムに書き込んだメッセージは、車両１０１間で交換され伝搬する。したがって、ユーザ１０３は、他のユーザが他の車両に対して書き込んだメッセージを、接続先の車両１０１から検索して表示することができる。なお、ここでユーザが検索することができるメッセージは、車両１０１が有しているメッセージに限られる。
【００３８】
ユーザ１０３が車両１０１から多様なメッセージを取得したり、あるいは、車両１０１が（数少ない）インターネット接続を発見してメッセージをサーバへアップロードするためには、車両１０１間でメッセージを効率的に伝搬・拡散する必要がある。以下では、主に車両１０１間でメッセージを交換（共有）するための方法に焦点を当てながら、より詳細に説明を加える。
【００３９】
＜装置の構成＞
図３は、車両１００に搭載される車載機１１０の機能構成を示す図である。車載機１１０は、無線通信装置を備えるコンピュータである。ＨＤＤやＳＤＤ、ＲＯＭなどの有形で非一時的な記憶装置に格納されたプログラムを、ＣＰＵが読み込んで実行することにより、図３に示すような各種の機能部が実現される。すなわち、コンピュータプログラムをＣＰＵが実行することにより、車載機１１０は、大略、通信管理部２１０、メッセージ管理部２３０、メッセージ記憶部２５０として機能する。通信管理部２１０は、ユーザ端末１０２や他の車載機１１０やフィルタサーバ１０５と無線通信を行うための機能を提供する機能部である。メッセージ管理部２３０は、車載機１１０内に記憶されるメッセージを管理するための機能を提供する機能部である。具体的には、メッセージ情報の登録・更新、サマリ情報の更新、送信メッセージの選択などを行う。メッセージ記憶部２５０は、種々のデータを記憶するための機能部である。
【００４０】
なお、車載機１１０は、図３に示した以外にも、ＧＰＳ装置のような位置情報取得装置、速度センサ、加速度センサ、照度センサ、ジャイロセンサ、マイク、カメラなどの周辺機器を有し、これらの装置によって取得された情報も利用可能に構成される。また、車載
機１１０は、カーナビゲーション機能など上記以外の機能を有することも好ましい。車載機１１０は、ユーザからの入力を受け付けるタッチパネルやボタンやキーボードなどの入力装置、およびユーザに対して情報を提供する表示装置やスピーカーなどの出力装置を備えることも好ましい。車載機１１０は、ユーザ端末１０２を介することなく、入力装置を介してユーザ１０３から直接指示を受け付け、メッセージの投稿受付や、メッセージの検索・表示などを行ってもよい。
【００４１】
本実施形態では、車載機１１０は、Wi-Fi Direct規格に準拠した１つの無線通信手段を有することを想定する。車載機１１０の通信モードには、APモードとSTAモードの２つが
存在する。APモード（Wi-Fi Direct APモード）では、任意のSTA（ここでは、ユーザ端末１０２およびSTAモードの他の車載機１１０）を接続可能である。STAモードでは、APモードの他の車載機やインターネットなどへの接続が可能である。通信モードの状態遷移などについては、後ほど詳しく説明する。なお、車載機１１０が複数の無線通信手段を有する場合には、このような接続の切替をすることなく、複数の接続を同時に行ってもよい。
【００４２】
通信機能部２１０は、他の装置との間の通信を管理するための機能部である。車載機１１０は、ユーザ端末１０２、他の車載機１１０、フィルタサーバ１０５と通信を行う。そこで、通信管理部２１０は、通信先に応じて、ユーザ端末データ通信部２１１、車車間データ通信部２１２、フィルタサーバデータ通信部２１３を有する。ユーザ端末データ通信部２１１は、ユーザ端末１０２との間で通信を行うための機能部であり、ユーザから接続があった場合に、ウェブページを表示するためのデータを送信し、ユーザからの入力に応じた処理を行うウェブサーバとして実装することができる。車車間データ通信部２１２は、他の車載機１１０との間で通信を行うための機能部であり、必須ではないがDTN（Delay
Tolerant Networking: 遅延耐性ネットワーク）に対応することが好ましい。なお、DTN
とは、極端に長い通信遅延時間や頻繁なパケットロス、間欠的な通信リンクの出現など安定した通信が行えない環境に対処するための既知のネットワーク手法である。フィルタサーバデータ通信部２１３は、フィルタサーバ１０５に対してメッセージを送信するための機能部である。
【００４３】
メッセージ管理部２３０は、メッセージ記憶部２５０に記憶しているメッセージやその他のデータを管理するための記憶部である。メッセージ管理部２３０は、主に、メッセージ追加部２３１およびメッセージ選択部２３２から構成される。メッセージ追加部２３１は、ユーザ端末１０２から入力（受信）されたメッセージや他の車載機１１０から受信したメッセージをデータ記憶部２５０に格納する。この際、後述するようにメッセージには種々の付加情報が付加されてメッセージ記憶部２５０に格納するので、メッセージ追加部２３１はこれらの付加情報の設定などを行う。また、本実施形態では、メッセージ記憶部２５０にどのようなメッセージが格納されているかを表すための情報であるサマリ情報を採用しているので、メッセージ追加部２３１は、メッセージの追加（登録）にあわせてサマリ情報の更新も行う。なお、メッセージ追加部２３１は、メッセージを記憶部２５０に追加する際に、データ容量の上限に達しているなどの事態が生じた場合には、既存のメッセージのいずれかを削除して新たなメッセージを追加する。
【００４４】
メッセージ選択部２３２は、他の車載機１１０に送信するメッセージを選択する。具体的には、通信相手の車載機１１０が保有していないと思われるメッセージを送信することが好ましい。そのために本実施形態では、通信相手の車載機１１０からサマリ情報を取得し、その情報を参照して送信すべきメッセージを選択する。その詳細は後述する。
【００４５】
メッセージ記憶部２５０は、種々のデータを記憶するための機能部である。メッセージデータベース２５１には、ユーザ端末あるいは他の車載機１１０から受信したメッセージが格納される。サマリ情報データベース２５２には、サマリ情報が格納される。災害対応
情報データベース２５３には、周囲の地図情報や災害対策マニュアルなどの静的なデータが格納される。
【００４６】
ユーザ端末１０２は、車載機１１０と通信可能な装置であれば、任意の装置であって構わない。本実施形態においては、無線通信機能を有するノート型パソコン、スマートフォンなどを想定する。ユーザ端末１０２は、たとえば、ブラウザアプリケーションやその他の通信アプリケーションを介して、車載機１１０にアクセスして、メッセージを投稿したり、各種情報を取得したりする。ユーザ端末１０２には既存の装置を採用可能であるため、詳細な説明は省略する。
【００４７】
なお、ユーザ端末１０２は、署名付きのメッセージを車載機１１０に対して投稿可能に構成することも好ましい。たとえば、ユーザ端末１０２にユーザの電子署名を格納しておき、ユーザ認証が行われたユーザからのメッセージにこの電子署名を付与して車載機１１０に投稿する。署名が付与されることで、メッセージ改ざんや成りすましを防止でき、災害発生時の混乱した状況で正確な情報が伝達されることが期待できる。署名を用いるユーザは任意であって構わないが、政府や自治体、報道機関などから投稿されるメッセージに署名を付与することを想定する。
【００４８】
フィルタサーバ１０５は、１台または複数台のコンピュータから構成される。フィルタサーバ１０５は、車載機１１０から送信されたメッセージを管理して、メッセージ投稿サーバ１０６に未送信なメッセージを取得した場合には、メッセージ投稿サーバ１０６に送信する機能を有する。当業者であれば、このような機能を実現するための方法は容易に理解できるので、詳細な説明は省略する。
【００４９】
＜処理内容＞
以下、図面を参照しながら、本システムにおいて行われる処理の内容について、より具体的に説明する。
【００５０】
１．車載機の通信モード切替
図４は、車載機１１０の通信モードの状態遷移を表す図である。車載機１１０のシステムが起動されて初期状態４０１になると、ビーコンを発して自ノードの存在を知らせるとともに、周囲の装置からのビーコンを取得して周囲にどのような装置が存在するかを検出する（４０２）。ここで、通信管理部２１０は、周囲に存在する車載機１１０の状態に応じて、Wi-Fi DirectのAPモードとなるかSTAモードとなるかの調停を行う。たとえば、所
定期間（たとえば２０秒）の間に他のWi-Fi Direct機器を検出できない場合には、Wi-Fi Direct APモードに移行する（４０４）。Wi-Fi Direct APモード４０４では、他の車載機１１０からの接続を受け付けるとともに、ユーザ端末１０２からの接続も受け付ける。Wi-Fi Direct APモード４０４にある車載機１１０は、基本的には通信モードを変更しない
が、接続している車載機が無くなってから一定時間（たとえば３０秒）経過した場合には、検出状態４０２へ移行する。検出状態４０２において、周囲にWi-Fi Direct APモード
の車載機器１１０が存在する場合などには、Wi-Fi Direct STAモードに移行する（４０５）。Wi-Fi Direct STAモード４０５時に、APモードの車載機を失った場合には、状態４０２に戻って周囲の状態を検出する。また、Wi-Fi Direct STAモード４０５時には定期的にインターネット接続を探索し、インターネット接続が発見された場合には、状態４０６に移行して、フィルタサーバ１０５に対してメッセージの送信を行う。フィルタサーバ１０５との通信が所定時間（たとえば３分）経過したらWi-Fi Direct STAモード４０５に戻る。すなわち、Wi-Fi Direct STAモード４０５の車載機１１０は、APモードの車載機への接続とインターネット（フィルタサーバ）への接続とを定期的に切り替える。なお、フィルタサーバ４０５と通信中の状態４０６において上記所定の期間が経過する前であっても、保有する全てのメッセージをフィルタサーバ１０５へ送信した場合には、Wi-Fi Direct S
TAモード４０５へ移行する。
【００５１】
本実施形態では、このような車載機１１０による各種モードの無線通信を介して、システム内でメッセージ等のデータがやりとりされる。
【００５２】
車載機１１０が複数の通信手段を備えている場合は、他の車載機との接続、ユーザ端末との接続、インターネットへの接続の全てまたは一部を同時に行ってもよい。このような場合も、バッテリー節約のために１つのみの通信手段を有効にし、上述のように接続を切り替えるようにしてもよい。
【００５３】
２．ユーザ端末との通信
図５は、車載機１１０がユーザ端末１０２と通信を行う際の処理の流れを示すフローチャートである。なお、車載機１１０は、Wi-Fi Direct APモード（図４の状態４０４）に
あるときにユーザ端末１０２からの接続を受け付ける。
【００５４】
ユーザ端末１０２から接続があった場合には、ユーザ端末データ通信部２１１は、ユーザ端末１０２上で図２（ａ）に示すようなメニューを表示するためのデータを送信する（Ｓ５０１）。その後、ユーザからメニュー項目の選択が送信されると（Ｓ５０２）、選択内容に応じた処理を実行する。
【００５５】
ユーザによってメッセージ投稿の処理が選択された場合には、メッセージを投稿画面（図２（ｂ））を表示するためのデータをユーザ端末に送信し、投稿メッセージをユーザ端末１０２から受信する（Ｓ５０３）。そして、メッセージ追加部２３１が、受信したメッセージをメッセージＤＢ２５１へ格納する（Ｓ５０４）。メッセージ追加の処理の詳細については、後ほど詳しく説明する。ユーザ端末１０２との接続が継続していれば（Ｓ５０９−ＹＥＳ）メニューを再度表示し、接続が継続していなければ（Ｓ５０９−ＮＯ）処理を終了する。
【００５６】
ユーザによってメッセージ検索の処理が選択された場合には、メッセージを検索画面（図２（ｂ））を表示するためのデータをユーザ端末に送信し、検索条件をユーザ端末１０２から受信する（Ｓ５０５）。検索条件には、たとえば、メッセージ本文に所定の文言が含まれるという条件や、所定の日時や場所で投稿されたという条件など、任意の条件を採用可能である。メッセージ選択部２３２は、入力された検索条件に合致するメッセージをメッセージＤＢ２５１から検索する（Ｓ５０６）。ユーザ端末データ通信部２１１は、検索結果のメッセージをユーザ端末に送信して表示させる（Ｓ５０７）。なお、検索条件は必ずしも入力させる必要は無く、車載機１１０が保有しているメッセージの一覧（全てまたは一部）を表示するようにしてもよい。このように、車載機１１０のメッセージＤＢ２５１に格納されているメッセージであれば、ユーザに提供することができる。
【００５７】
ユーザによって災害情報取得の処理が選択された場合には、災害対応情報ＤＢ２５３の格納されている情報のうち、どの情報を取得したいのかをユーザ端末１０２から取得し、要求された情報をユーザ端末１０２に送信する（Ｓ５０８）。
【００５８】
なお、署名付きのメッセージをユーザ端末に送信する場合には、署名から送信元の名称を取得し、メッセージ内容と合わせて送信元の名称をユーザ端末に送信して表示させることも好ましい。送信元の名称は、電子署名に含まれている名称を用いてもよいし、電子署名の識別子と送信元の名称の対応をあらかじめ記憶しておき、電子署名の識別子に対応する名称を用いてもよい。
【００５９】
３．メッセージ情報のフォーマット
図６は、メッセージＤＢ２５１に格納されるメッセージ情報のフォーマットを示す図である。
【００６０】
初回登録日時６０１は、ユーザ端末１０２を介してまたは直接にユーザ１０３から車載機１１０にメッセージが登録された日時を表すフィールドである。本システム内におけるメッセージは、基本的にユーザ１０３がいずれかの車載機１１０に投稿することによって初めて流通するものであり、そのメッセージが最初に投稿された日時をこのフィールドに記憶する。
【００６１】
初回登録位置６０２は、ユーザ端末１０２を介してまたは直接にユーザ１０３からメッセージが登録された場所を表すフィールドである。初回登録日時６０１と同様に、ユーザ１０３によっていずれかの車載機１１０に投稿された際の場所をこのフィールドに記憶する。
【００６２】
メッセージ本文６０３は、メッセージの内容を表すテキスト情報である。メッセージ本文の上限文字数をたとえば１４０文字とする。このようにメッセージの長さに上限を設けることで、１つのメッセージが多量の記憶容量を消費することを避けられる。
【００６３】
初回登録ユーザＩＤ６０４は、メッセージを登録したユーザ１０３のＩＤである。たとえば、ユーザ１０３から入力されたユーザＩＤを採用することもできるし、ユーザ端末１０２の機器ＩＤやＭＡＣアドレスなどを採用することもできる。メッセージを投稿したユーザ１０３を識別可能とすることで、特定のユーザが投稿したメッセージを容易に検索できるようになる。
【００６４】
初回登録ノードＩＤ６０５は、ユーザ１０３からメッセージを受け取った車載機１１０の機器ＩＤやＭＡＣアドレスである。このフィールドを採用することで、車載機１１０は、どのメッセージを自ノードがユーザ１０３から直接受け取ったものであるかを判断することができる。ユーザから直接受け取ったものはできるだけ削除しない（保持する）というポリシーが有効であると考えられるため、このフィールドを採用している。
【００６５】
署名６０６は、メッセージに対する電子署名を格納するフィールドである。たとえば、政府・自治体や報道機関などの公的機関が発表する情報には電子署名を付与することで、メッセージの改ざんや成りすましなどを防止し、メッセージ内容の確実性を保証するために用いられる。また、署名によりメッセージ投稿者を判断することもできるので、たとえば特定の自治体の署名を有するメッセージだけを選択して、ユーザ１０３に対して一覧表示で提供するという目的のために有効である。
【００６６】
サーバアップロードフラグ６０７は、このメッセージがすでにフィルタサーバ１０５に送信済みであるか否かを示すフィールドである。車載機１１０がフィルタサーバ１０５にメッセージを送信した際には、このフィールドが更新される。
【００６７】
ホップカウント６０８は、このメッセージが車載機間で何回転送されたかを示すフィールドである。車載機１１０が、車車間通信によってメッセージを送信する際あるいは受信する際には、このフィールドが更新される。ホップカウントが大きいメッセージほど、より広く拡散した情報であると判断でき、送信メッセージ選択の際の基準として有効である。また、ホップカウントの閾値よりも大きければそれ以上の送信を行わなかったり、メッセージＤＢ２５１から削除したりするためにも用いることができる。ユーザ１０３からメッセージを受信した場合には、ホップカウント６０８はゼロに設定する。
【００６８】
グループＩＤ６０９は、このメッセージが属するグループの識別子を示すフィールドで
ある。後述するように、本実施形態では、メッセージに対してハッシュ関数を適用して得られるハッシュ値を、そのメッセージのグループＩＤとして採用する。一度求めたグループＩＤをメッセージ情報内に格納することで、再び算出する手間を省くことができる。グループＩＤは、メッセージ選択部２２２が、送信メッセージを選択する際に参照される。
【００６９】
初回登録フラグ６１０は、このメッセージがユーザ１０３から自ノードに対して直接登録されたメッセージであるか否かを示すフィールドである。ユーザから直接受け取ったものはできるだけ削除しない（保持する）というポリシーが有効であると考えられるため、このフィールドを採用している。
【００７０】
前回送信時刻６１１は、このメッセージを他の車載機１１０から受信した場合に、その通信の時刻を示すフィールドである。このフィールドは、たとえば、直近の所定の期間内に一度送信したメッセージを送信しないようにする送信抑制のために用いられる。
【００７１】
なお、上記のフィールドは必ずしも全て採用する必要は無い。図６においてオプションとされているフィールドは、本実施形態においては省略可能としている。ただし、システム要件に応じて、必須フィールドやオプションフィールドは適宜採用することが好ましい。したがって、図６に示したフィールドのいずれかを採用しなくてもよいし、その他のフィールドを採用してもよい。
【００７２】
また、メッセージ情報の上記フィールドに関するデータは、ユーザ（ユーザ端末１０２）から受け取らずに、車載機１１０にて生成してもよい。すなわち、車載機１１０はユーザからメッセージ情報のうち一部の情報しか受け取らず、その他の情報についてメッセージ追加部２３１が付加するようにしてもよい。メッセージ本文６０３や署名６０６については、ユーザから受け取る必要があるが、その他の情報について車載機１１０にて生成可能である。たとえば、初回登録日時６０１、初回登録位置６０２などは、車載機１１０がユーザからメッセージを受け取った際の日時や位置を採用すればよい。その他のフィールドが車載機１１０にて生成可能であることも明らかであろう。
【００７３】
ユーザ端末１０２からメッセージを受信した場合のメッセージＤＢ２５１への登録処理の詳細については、「５．メッセージ登録処理」において詳細に説明する。
【００７４】
４．サマリ情報の内容とその生成方法
本システムにおいて、車載機１１０の間では、できるだけ相手が保持していないメッセージを送信することが、メッセージの伝搬・拡散の効率化の観点から有効である。しかしながら、相手がどのようなメッセージを保有しているかを判定することは、特に保持するメッセージの量が多くなると困難となる。たとえば、本実施形態では１つのメッセージ情報の容量が数百バイト程度であり、メッセージＤＢの記憶容量が数十ギガバイトであると想定すると、記憶できるメッセージの数は数千万個となる。これは、たとえば、東京都民（１３００万人）の全てが平均して５回程度メッセージを投稿した場合に、全てのメッセージを１つの車載機の中に格納できるだけの記憶容量である。このような大量のメッセージを保有している場合には、相手がどのようなメッセージを保有しているかを、短時間で精度よく判断するのは困難である。
【００７５】
そこで、本実施形態においては、メッセージにグループＩＤを割り当て、各グループＩＤについてメッセージＤＢ２５１にいくつのメッセージが格納されているかを表すサマリ情報を採用する。すなわち、サマリ情報は、各グループのメッセージ数をカウントするカウンタ値の集合である。図７を参照して、サマリ情報について説明する。
【００７６】
ユーザ端末１０２から新規のメッセージ投稿を受け付けると、メッセージ追加部２３１
は、そのメッセージをメッセージＤＢ２５１へ格納するとともに、サマリ情報ＤＢ２５２の更新も行う。具体的には、メッセージのグループＩＤを求めて、サマリ情報における当該グループＩＤのカウンタ値を１増分する。
【００７７】
グループＩＤの算出方法についてより詳細に説明する。本実施形態においては、メッセージ追加部２３１はハッシュ関数を有しており、メッセージに対してハッシュ関数を適用して得られるハッシュ値を、そのメッセージのグループＩＤとして採用する。ハッシュ関数としては、一様性の高いハッシュ関数（CRC, MD, SHAなど）を採用することが考えられる。なお、グループＩＤ（ハッシュ値）ごとのメッセージ数をカウントするので、ハッシュ値のビット数はそれほど大きくする必要が無く、本実施形態では８ビットのハッシュ値を採用する。したがって、グループは２５６個作成されることになる。
【００７８】
各カウンタの容量（ビット数）は、たとえば、記憶可能なメッセージ（数千万個。上記参照）が全て１つのグループに属した場合にもオーバフローしないように２６ビット以上としてもよいし、メッセージが各グループに平均的に分布する場合（１グループあたり数千万／２５６個）にオーバフローしないように１６ビット程度としてもよい。本実施形態では、カウンタは１６ビットとする。
【００７９】
サマリ情報がメッセージの伝搬に有効であることを簡単に説明する。メッセージの数が十分に多く存在する場合は、グループＩＤごとのメッセージ数はほぼ同じ程度になることが想定される。したがって、ある車載機のサマリ情報を参照すると、メッセージ数の少ないグループのメッセージを保有していない可能性が高いと判断することができる。したがって、通信相手のサマリ情報を取得した場合には、メッセージ数（カウンタ値）が少ないグループのメッセージを送信することで、相手が保有していないメッセージを送信できる可能性が高くなる。また、送受信ノード両方のサマリ情報を参照して、送信ノードのカウンタ値よりも受信ノードのカウンタ値の方が小さいグループのメッセージを送信するようにしても、同等の効果が得られる。いずれにしても、サマリ情報を用いることで、通信相手の車載機が保有していない可能性が高いメッセージを優先的に送信することができる。
【００８０】
なお、複数の通信相手からサマリ情報を受信した場合にどのようにサマリ情報を用いて送信メッセージを送信するかについては、「６−４．送信メッセージ選択処理」の欄で詳細に説明する。また、サマリ情報を用いることで、自ノードと通信相手のノードが保有するメッセージが一致したかどうかを判定することができる。この処理の詳細については、「６−６．送信停止判定処理」の欄で詳細に説明する。
【００８１】
なお、メッセージ情報に含まれるフィールドのうち、どの部分をハッシュ関数に適用させてグループＩＤを得るかは、適宜選択すれば良い。たとえば、メッセージ本文６０３のみに対してハッシュ関数を適用してもよいし、メッセージ情報全体に対してハッシュ関数を適用させてもよい。もちろん、メッセージ情報のうちの複数かつ一部のフィールドにハッシュ関数を適用させてもよい。
【００８２】
上記の説明では、一様性ハッシュ関数を採用しているが、その他のハッシュ関数を採用することも好ましい。たとえば、類似のデータには同一のハッシュ値（グループＩＤ）が割り当てられる可能性が高い特殊なハッシュ関数を採用することが考えられる。
【００８３】
このような特殊なハッシュ関数の例として、ＬＳＨ（Local Sensitivity Hash）がある。ＬＳＨを用いると、類似するデータ（ビット列）には、同一のハッシュ値が割り当てられる確率が高くなる。ＬＳＨを採用することで、内容が類似するメッセージを１つのグループとしてまとめることができる。したがって、上述のように相手ノードのカウンタ値が少ないグループのメッセージを送信して選択することで、相手が保有しないメッセージで
あり、かつ、保有しているメッセージとの類似性が高くないメッセージを送信できる確率が高くなり、効率的なメッセージ交換が実現できる。なお、ＬＳＨを用いる場合は、類似度を判断したい部分をハッシュ関数に適用させることが必要となる。たとえば、メッセージ本文の類似性に着目したい場合には、メッセージ本文６３０（だけ）をハッシュ関数に適用させることが好ましい。なお、メッセージ本文６３０以外にも、初回登録日時６０１や初回登録場所６０２、初回登録ユーザＩＤ６０４なども類似性判定の対象とすることが考えられる。
【００８４】
また、特殊なハッシュ関数の別の例として、ＧｅｏＨａｓｈやＧｅｏＨｅｘがある。これらは位置情報を入力として、近接する２つの位置のハッシュ値が一致する確率が高いハッシュ関数である。したがって、これらのハッシュ関数は、位置情報を類似判定の基準に採用する場合に、好適に利用できるハッシュ関数である。
【００８５】
また、メッセージのグループＩＤの算出方法として、ハッシュ関数を使わずに、乱数値を割り当てる方法も考えられる。乱数値を用いても、大量のメッセージがある場合には、各グループに含まれるメッセージ数はほぼ同程度となる。したがって、上記の一様性ハッシュ関数を採用した場合と同様の効果を得ることができる。なお、グループＩＤに乱数値を採用した場合には、メッセージ情報のグループＩＤ６０９にこの乱数値を格納しておく必要がある。この場合、他のノードではメッセージ情報からグループＩＤを算出することができないためである。もっとも、ハッシュ関数を用いてグループＩＤを算出する場合も、メッセージ情報にグループＩＤを格納しておくことは、他のノードで再びハッシュ計算をする手間を省けるので好ましい。
【００８６】
５．メッセージ登録処理
車載機１１０がメッセージを受信した場合における、メッセージの登録処理について説明する。なお、車載機１１０がメッセージを受信するのは、ユーザ１０３から（直接あるいはユーザ端末１０２を介して）受信する場合と、他の車載機から受信する場合があるが、いずれも類似の処理が行われるので、ユーザ１０３から受信した場合を例にして説明する。
【００８７】
図８は、ユーザ１０３（ユーザ端末１０２）から、車載機１１０に対してメッセージが投稿された場合の車載機１１０のおけるメッセージ登録処理の流れを示すフローチャートである。
【００８８】
ユーザ１０３からメッセージを受信すると、メッセージ追加部２３１は、そのメッセージに対してハッシュ関数を適用させてグループＩＤ（ハッシュ値）を算出する（Ｓ８０１）。本実施形態では、メッセージ本文に対してCRC-16を適用させてグループＩＤを算出する。
【００８９】
受信メッセージのグループＩＤが算出されたら、サマリ情報において当該グループのカウンタが上限に達していないか（Ｓ８０２）およびメッセージＤＢ２５１における記憶数が上限に達していないか（Ｓ８０３）を確認する。いずれも上限に達していない場合（Ｓ８０２−ＮＯかつＳ８０３−ＮＯ）には、ステップＳ８０４へ進む。
【００９０】
ステップＳ８０４では、メッセージ情報を構成する各種フィールドを、メッセージ追加部２３１において生成・更新する。具体的には、初回登録日時６０１に現在時刻を代入する。初回登録位置６０２にＧＰＳ装置から得られる現在位置（緯度・経度情報）を代入する。初回登録ユーザＩＤ６０４に、メッセージを投稿したユーザ端末１０２のＭＡＣアドレスを代入する。初回登録ノードＩＤ６０５に、車載機１１０（自ノード）の車載機ＩＤを代入する。署名６０６には、メッセージに署名が付されていた場合にはそれを代入し、
そうでない場合には空にする。サーバアップロードフラグ６０７はゼロ（アップロード済みでないことを意味する）にセットする。ホップカウント６０８はゼロとする。グループＩＤ６０９には、ステップＳ８０１において算出したグループＩＤを代入する。初回登録フラグ６１０は１（初回登録であることを意味する）をセットする。前回送信時刻６１１は空としてもよいし、現在時刻を代入してもよい。なお、メッセージ情報の生成は、グループＩＤの算出（Ｓ８０１）よりも前に行ってもよい。特に、メッセージ本文以外に基づいてグループＩＤを算出する場合には、グループＩＤの算出に先立ってメッセージ情報を作成しておくことが好ましい。
【００９１】
メッセージ追加部２３１は、生成したメッセージ情報をメッセージＤＢ２５１に格納する（Ｓ８０５）とともに、サマリ情報を更新する（Ｓ８０６）。サマリ情報の更新では、ステップＳ８０１で算出したグループＩＤに対応するカウンタ値を１増分する。
【００９２】
なお、ステップＳ８０２において、サマリ情報における上記グループのカウンタが上限に達していると判定された場合（Ｓ８０２−ＹＥＳ）には、ステップＳ８０７へ進んで、メッセージ管理部２３０はメッセージＤＢ２５１から当該グループに属するメッセージを選択して削除する。削除するメッセージの選択基準は任意としてよいが、本実施形態では以下の基準を採用する。すなわち、自ノードがユーザから直接受信したメッセージ（初回登録フラグ６１０が立っているメッセージ）は削除の対象とせず、初回登録日時が古いもの、ホップカウントが大きいもの、サーバアップロードフラグが立っているもの、の中からランダムに選択する。メッセージＤＢ２５１からメッセージを削除した後は、サマリ情報における当該グループのカウンタ値を１減算させ（Ｓ８０９）、ステップＳ８０４以降の登録処理を実施する。なお、この処理の流れにおいては、ステップＳ８０９とステップＳ８０６のサマリ情報更新処理は冗長であるため両方とも省略可能である。
【００９３】
ステップＳ８０３において、メッセージＤＢ２５１における記憶数が上限に達していると判定された場合（Ｓ８０３−ＹＥＳ）は、ステップＳ８０８に進んで、メッセージ管理部２３０はメッセージＤＢ２５１からメッセージを選択して削除する。ステップＳ８０７の削除処理と比較とすると、任意のグループのメッセージが削除対象になる点が異なるだけである。メッセージ削除後は上記と同様にサマリ情報の更新を行い（Ｓ８０９）、ステップＳ８０４以降の登録処理を実施する。
【００９４】
６．車載機間の通信
次に、車載機１１０同士の通信について説明する。ここでは、主に、メッセージを交換する処理について説明するが、その他のデータを送信する際にも同様の方法により通信を行う。
【００９５】
（６−１．通信順序）
各車載機はIEEE 802.11a/b/g/n/i/aiなどの通信規格にしたがって、定期的にブロード
キャスト通信を行う。各車載機は、自ノードに割り当てられた通信期間内に、自ノードが保有しているサマリ情報とメッセージ情報をブロードキャストする。通信されるデータの内容については後述し、ここでは、各ノードが通信を行うタイミング（通信順序制御）について図９を参照して説明する。
【００９６】
上述したように、本実施形態の車両間通信はWi-Fi Directを用いて実現され、１台の車載機がAPとして機能し、その他の車載機がSTAモードで動作する。APとして機能する車載
機１１０（以下、単にAPとも称する）は、ＤＨＣＰ機能も有しており、STAとして接続す
る車載機１１０（以下、単にSTAとも称する）に対してIPアドレスを付与する。本実施形
態では、192.168.10.2 - 192.168.10.254の範囲がSTAに割り当てられる。APには192.168.10.1が固定的に割り当てられるものとする。
【００９７】
ここで、通信を行う順序は、IPアドレスにしたがった順序とする。すなわち、APが通信を開始した後に、各STAは自ノードに割り当てられたIPアドレスのサブネットマスク（こ
こでは255.255.255.0）後の値に応じた時間だけ待機してから通信を開始する。たとえば
、各ノードの送信間隔が１００ミリ秒であれば、192.168.10.2が割り当てられた車載機は、AP（192.168.10.1）が送信してから１００ミリ秒経過した後に通信を開始する。この場合は、各車載機は、APが通信を開始してから、（サブネットマスク後のIPアドレスの値−１）×１００ミリ秒だけ経過した時点で自ノードが通信を始める。APは、自ノードに接続しているSTAの数が分かるので、全てのSTAが通信を完了した場合に次の通信を開始する。
【００９８】
このように、IPアドレスに基づいて送信順序制御を行うことで、送信パケットの衝突を回避して効率的な通信が実現可能になるとともに、通信に「サイクル」の概念を導入することができる。したがって、各車載機はこのサイクルに基づいて通信の制御を行う。簡単に各車載機が行う通信制御処理を図１０を参照して説明する。まず、APからメッセージを受信したら（Ｓ１００１）、サブネットマスク後のＩＰアドレス値に応じた時間だけ待機する（Ｓ１００２）。待機時間の経過後、送信するメッセージ情報の選択を行い（Ｓ１００３）、選択されたメッセージ情報と自ノードのサマリ情報を周囲にブロードキャスト送信する（Ｓ１００４）。ここで、ステップＳ１００３のメッセージ情報選択処理において、１サイクル前の周囲の車載機から受信したサマリ情報に基づいて選択が行われる。詳細については、後述する。
【００９９】
なお、上記ではIPアドレスに基づいて送信タイミングを判断しているが、必ずしもIPアドレスを用いる必要は無い。たとえば、APからSTAに対して、何番目のタイミングで通信
を開始すべきかを明示的に通知するようにしてもよい。これは処理の手間が増えるが、ＤＨＣＰ機能により任意のアドレスを割り当てられない場合などに有効な方法である。
【０１００】
（６−２．メッセージ受信時処理）
次に、図１１を参照して、他の車載機からメッセージ情報を受信した際の処理について説明する。本実施形態においては、他の車載機からメッセージ情報とサマリ情報をまとめて受信することを想定するが、説明のために、まずメッセージ情報受信時の処理について説明し、その後でサマリ情報受信時の処理について説明する。
【０１０１】
他の車載機からメッセージ情報を受信すると、メッセージ管理部２３０は、メッセージＤＢ２５１内に同一のメッセージ情報が存在するか否かを判断する（Ｓ１１０１）。メッセージ情報の同一性は、たとえば、受信したメッセージ情報と、初回登録日時６０１および初回登録ユーザＩＤ６０４が一致するメッセージ情報がメッセージＤＢ２５１に格納されているか否かによって判断することができる。もちろん、その他のフィールドも考慮して同一性を判断してもよい。
【０１０２】
受信したメッセージと同一のメッセージがＤＢ２５１内に存在しない場合（Ｓ１１０１−ＮＯ）は、このメッセージの登録処理を行う（Ｓ１１０５）。メッセージ登録処理は、ユーザ端末１０２からメッセージを受信した際の処理（「５．メッセージ登録処理」および図８のフローチャート参照）と同様の処理なので、詳しい説明は省略する。ユーザ端末１０２からメッセージを受信した場合との相違点は、車載機１１０からメッセージ情報を受信する場合は各種フィールド（図６参照）に情報が格納されているので、車載機１１０で情報を作成しなくて良い点である。ただし、ホップカウント６０８や初回登録フラグ６１０や前回送信時刻は（送信側で値を更新していない場合は）受信した車載機１１０が更新する必要がある。
【０１０３】
一方、受信したメッセージと同一のメッセージがＤＢ２５１内に存在する場合（Ｓ１１
０１−ＹＥＳ）は、このメッセージをＤＢ２５１に登録する必要は無い。ただし、受信したメッセージ情報におけるサーバアップロードフラグ６０７が立っており、ＤＢ２５１内のメッセージ情報ではこのフラグが立っていない場合には、ＤＢ２５１内のメッセージ情報のフラグを立てる（Ｓ１１０２）。また、受信したメッセージ情報のホップカウントの方がＤＢ２５１内のメッセージ情報のホップカウントよりも大きい場合（Ｓ１０１３−ＹＥＳ）には、ＤＢ２５１内のメッセージ情報のホップカウントを受信メッセージのホップカウントで上書きする（Ｓ１１０４）。
【０１０４】
なお、本実施形態では車両間の通信にブロードキャスト（ＵＤＰ）を用いているため、受信確認が行えず、パケットロスの発生を検知できない。そのため、他の車載機１１０からメッセージ情報（サマリ情報も同様）を受信した車載機は、受信したメッセージ送信してもよい。同じメッセージが車載機ごとに送信されることでより確実にメッセージ情報を車載機間で伝搬することができる。なお、受信したメッセージの送信を行うのは、たとえば、送信元の車載機から直接メッセージ情報を受信した車載機に限ったり所定ホップ数以内の車載機に限ったりするのが好ましい。また、受信した全ての車載機が受信したメッセージの送信を行うのではなく、いくつかのノードのみが行うようにしてもよい。どのノードが受信したメッセージを送信するかは、所定の基準にしたがって決定してもよいし、乱数などを用いて確率的に決定してもよい。このようにすることで、通信の効率化とパケットロスの抑制が図れる。
【０１０５】
（６−３．サマリ情報受信時処理）
他の車載機１１０から受信したサマリ情報は、送信メッセージの選択に用いられる。サマリ情報を参照することで、相手の車載機がどのメッセージを保有していない可能性が高いか判断できるためである。本実施形態では、受信したサマリ情報をサイクル単位で集計し、メッセージ選択の際には前サイクルにおいて受信・集計されたサマリ情報に基づいて選択処理を実行する。以下、図１２、図１３を参照して、他の車載機１１０からサマリ情報を受信した際に行う処理について説明する。
【０１０６】
他の車載機１１０からサマリ情報を受信すると、新しい通信サイクルで変わったか否かを判定する（Ｓ１２０１）。本実施形態では、APとして機能する車載機から通信サイクルが開始するので、STAであればAPからサマリ情報を受信した場合に、新しい通信サイクル
に入ったと判断できる。APであれば、接続しているSTAが全て通信を完了した場合に、通
信サイクルが終了して新しい通信サイクルに入ると判断できる。
【０１０７】
新しい通信サイクルに変わっている場合は（Ｓ１２０１−ＹＥＳ）、メッセージ管理部２３０は、現在メモリに格納している累積サマリ情報を前サイクルの累積サマリ情報としてサマリ情報ＤＢ２５２内に格納する（Ｓ１２０２）。そして、累積サマリ情報をリセットする（Ｓ１２０３）。累積サマリ情報も、通常のサマリ情報と同様にグループごとにいくつのメッセージが存在するかを表す情報であるが、複数の車載機についてのサマリ情報を累計したものである点が通常のサマリ情報と異なる。ステップＳ１２０３では、累積サマリ情報における各グループのカウンタをゼロにリセットする。その後、メッセージ管理部２３０は、受信したサマリ情報を累積サマリ情報に足し合わせる（Ｓ１２０４）。なお、受信したサマリ情報もそれ自体としてメモリに保持する。
【０１０８】
一方、通信サイクルが継続している場合（Ｓ１２０１−ＮＯ）には、累積サマリ情報をリセットすることなく、受信したサマリ情報を累積情報に足し合わせる（Ｓ１２０４）。
【０１０９】
サマリ情報の足しあわせ処理では、図１３に示すように、各グループについて累積サマリ情報のカウンタ値に、受信したサマリ情報の当該グループのカウンタ値を足し合わせる。図１３の左上図は受信したサマリ情報を表し、左下図は累積サマリ情報を表し、右図は
足し合わせ後の累積サマリ情報を表している。このような処理により、累積サマリ情報には、現在通信中の車載機１１０（自ノードを除く）のサマリ情報が集計される。
【０１１０】
（６−４．送信メッセージ選択処理）
次に、車載機１１０が送信タイミングにおいて送信するメッセージ情報を選択する処理（図１０のステップＳ１００３）の詳細について、図１４のフローチャートを参照しながら説明する。
【０１１１】
送信タイミングの到来時には、メッセージ選択部２３２は、前サイクルの累積サマリ情報を取得する（Ｓ１４０１）。そして、自ノードの現在のサマリ情報を、取得した累積サマリ情報に足し合わせる（Ｓ１４０２）。これにより、周囲の全ての車載機および自ノードのサマリ情報を合計した累積サマリ情報が得られる。なお、ステップＳ１４０２は省略可能なステップであるので、図では点線により示している。
【０１１２】
次に、メッセージ選択部２３２は、累積サマリ情報に基づいてグループ（グループＩＤ）を選択する（Ｓ１４０３）。具体的には、カウンタ値が小さいグループほど高い確率で選択する。本実施形態においては、グループＩＤがｉのグループについて、以下の選択確率Ｐｉにしたがって抽選する。
【数１】
2014170293.tif 000003
ここで、ｎｉは累積サマリ情報におけるグループＩＤ＝ｉのカウンタ値であり、Ｎは累積サマリ情報における全グループのカウンタ値の総和であり、ｍはグループ数である。
【０１１３】
なお、ここでは累積サマリ情報における全グループのカウンタ値の総和Ｎと、対象グループのカウンタ値ｎｉとの差（Ｎ−ｎｉ）にしたがった比率でグループが選択されるようにしているが、その他の方法も採用可能である。たとえば、カウンタ値の平均Ｎ／ｍと対象グループのカウンタ値ｎｉとの差（Ｎ／ｍ−ｎｉ）にしたがった比率でグループが選択されるようにしてもよい。これ以外にも、カウンタ値が少ないほど高確率でグループが選択される方法として、カウンタ値の逆数に応じた比率でグループを選択することが考えられる。ただし、逆数を用いるとカウンタ値の小さい場合に比率の違いが顕著であり、カウンタ値が大きい場合には比率の違いがそれほど現れないため、本実施形態では差に基づく確率を採用している。
【０１１４】
グループが選択されると、メッセージ選択部２３２は、選択したグループに送信可能なメッセージがあるかを確認する（Ｓ１４０４）。本実施形態では、直近の所定期間内に送信されたメッセージ情報は送信しないようにしている（送信抑制）。すなわち、前回送信時刻６１１に格納されている日時が、現在時刻から所定期間内であれば、そのメッセージ情報は送信しないものと判断される。ステップＳ１４０４では、選択されたグループ内に、前回送信時刻６１１が上記所定期間よりも前の時刻を示すメッセージ情報があるか否かを判断する。
【０１１５】
選択されたグループに送信可能なメッセージ情報が存在しない場合（Ｓ１４０４−ＮＯ）には、ステップＳ１４０３に戻って別のグループを再度選択する。この際、一度選択されたグループは選択しないようにすることが好ましい。
【０１１６】
選択されたグループに送信可能なメッセージ情報が存在する場合（Ｓ１４０４−ＹＥＳ）は、メッセージ選択部２３２は、送信可能なメッセージ情報の中から所定の基準にした
がってメッセージ情報を選択する。所定の基準とは、たとえば、初回登録日時６０１、初回登録位置６０２、ホップカウント６０８、サーバアップロードフラグ６０７、署名６０６、初回登録フラグ６１０、前回送信時刻６１１などの少なくともいずれかを用いた基準とすることができる。初回登録日時６０１では、新しい情報ほど優先するようにしてもよいし、古い情報ほど優先するようにしてもよいし、所定の範囲の値をとる情報ほど優先してもよい。これは、初回登録日時以外のフィールドについても同様である。あるいは、メッセージ選択部２３２は、選択されたグループの中からランダムにメッセージを選択してもよい。本実施形態においては、ホップカウント６０８が所定の閾値以内であり、前回送信時刻６１１が直近の所定期間内ではないメッセージの中から、ランダムでメッセージを選択する。
【０１１７】
図１４のフローチャートでは、１つメッセージ情報のみを選択するものとして説明したが、車載機１１０が複数のメッセージ情報を送信する場合には、複数のメッセージ情報を選択する必要がある。複数のメッセージの選択方法としては、ステップＳ１４０３で選択されたグループの中から複数のメッセージを選択する方法と、ステップＳ１４０３〜Ｓ１４０５の処理を繰り返して複数のメッセージを選択する方法の２通りの方法がある。これは、システムの要求に応じて適宜決定すればよい。
【０１１８】
また、最初の通信サイクルにおいては、前サイクルの累積サマリ情報が利用できないので、メッセージ選択部２３２は、自ノードが保有しているメッセージ情報の中からランダムでメッセージを選択すればよい。
【０１１９】
（６−５．送信処理）
次に、車載機１１０の送信処理（図１０のステップＳ１００４）の詳細について説明する。車載機１１０の車車間データ通信部２１２は、メッセージ選択部２３２によって選択されたメッセージ情報と、サマリ情報ＤＢ２５２に格納されているサマリ情報とを、周囲にブロードキャスト送信する。
【０１２０】
メッセージ情報送信の際に、このメッセージ情報の全フィールド（図６参照）を送信してもよいが、一部のフィールドについては送信しなくてもよい。たとえば、初回登録フラグ６１０、前回送信時刻６１１、グループＩＤ６０９は受信側の車載機でも求めることができるので送信しなくてもよい。また、メッセージ情報送信の際に、送信側でフィールドの値を更新してから送信することも好ましい。たとえば、ホップカウント６０８、前回送信時刻６１１は送信側の車載機が更新してから送信してもよい。
【０１２１】
本実施形態では、ＵＤＰを用いたブロードキャスト送信を行っているため、パケットロスが生じても検知することができない。そこで、通信の確実性を向上するためには、同じメッセージ情報を複数回送信することも好ましい。この繰り返し送信は、１サイクル内で行うことを想定するが、サイクルをまたいで複数回送信してもよい。再送回数とデータの転送速度はトレードオフの関係にあるため、通信環境やシステム要件として必要な正確性を考慮して適宜設定すればよい。たとえば、２回から４回程度繰り返して送信することが考えられる。なお、本実施形態ではＵＤＰを用いているが、ＴＣＰを用いて受信確認をしながらデータを送信するようにしてもよい。ＴＣＰではオーバヘッドが発生してスループットは低下するものの、信頼性の高い通信が実現できる。
【０１２２】
（６−６．送信停止判定処理）
上記のようなメッセージ情報の送信が、安定的に継続すれば、最終的に全ノードが保有するメッセージ情報が一致することが期待される。全ノードが保有するメッセージ情報が一致した後は、メッセージの交換を継続する必要は無いので、メッセージ交換の停止を判定するための処理が必要となる。新しい通信サイクルの開始は、APとして機能する車載機
１１０がメッセージを送信することによって開始するので、この送信停止判定処理はAPとして機能する車載機１１０のメッセージ管理部２３０が行えばよい。
【０１２３】
図１５は、送信停止判定処理の流れを示すフローチャートである。メッセージ管理部２３０は、自ノードの送信期間の開始に際に、前サイクルに取得した他ノードのサマリ情報および自ノードのサマリ情報が全て一致するか判定する（Ｓ１５０１）。サマリ情報が全て一致するとは、各グループのカウンタ値が、全てのノードのサマリ情報において一致することを意味する。サマリ情報が一致しない場合（Ｓ１５０１−ＮＯ）には、各ノードが保有しているメッセージ情報は異なるので、送信を継続する（Ｓ１５０５）。
【０１２４】
一方、サマリ情報が一致する場合（Ｓ１５０１−ＹＥＳ）には、各ノードが保有しているメッセージ情報が一致する可能性が高い。しかしながら、サマリ情報に基づく判断は確率的なものであり、サマリ情報が一致したからと行って必ずしも保有しているメッセージ情報が一致するとは限らない。たとえば、あるグループのカウンタ値が全てのノードで「２」であったとしても、あるノードはＡ，Ｂのメッセージ情報を保有し、別のノードはＣ，Ｄのメッセージ情報を保有しているという事態が生じうる。これは、特にメッセージＤＢ２５１に格納されているメッセージ件数が少ない場合に顕著な問題として現れる。保有しているメッセージの数が多い場合には多少の不一致があっても大半のメッセージは一致していることが想定されるのに対して、保有しているメッセージの数が少ない場合にはメッセージの不一致が顕著となるからである。
【０１２５】
そこで、本実施形態では、サマリ情報が一致した場合は、メッセージＤＢ２５１内のメッセージ数が所定の閾値以上であれば送信を停止する（Ｓ１５０４）が、メッセージＤＢ２５１内のメッセージ数が所定の閾値よりも少ない場合（Ｓ１５０２−ＮＯ）には、さらに、メッセージＤＢ２５１内の全てのメッセージを直近所定期間内に送信済みであることを（Ｓ１５０３−ＹＥＳ）を、送信停止のための条件とする。言い換えると、全てのメッセージが送信抑制されていることを、送信停止のための条件とする。メッセージＤＢ２５１内のメッセージを全て送信することによって、各ノードの保有メッセージが一致する。なお、保有メッセージを全て送信すると通信に時間を要することになるが、ここでは保有メッセージ数が少ない場合のみ全て送信するようにしているので、そのような問題は生じない。上記判定のための所定の閾値は、システム要求に応じて任意に定めればよいが、本実施形態では1万件とする。なお、この閾値は固定値とする必要はなく、たとえば、通信
中の車載機の数に応じた値（たとえば、固定値／車載機数）としてもよい。
【０１２６】
送信停止の判断がなされた場合には、車載機１１０間での（メッセージ交換のための）通信が停止される。再開の条件としては、いずれかの車載機１１０にユーザ１０３から新しくメッセージが投稿された場合や、新しい車載機１１０がAPに接続した場合が考えられる。これらの車載機１１０は、APに対してサマリ情報を送信する。そうすると、その他の車載機においてサマリ情報の不一致が検出されるので、メッセージ交換が再開される。なお、この際にAPとして機能する車載機は、IPアドレスの割り当て処理から再開して新規の通信サイクルを確立してもよいし、既存の通信サイクルをそのまま継続して通信を行ってもよい。
【０１２７】
（６−７．車載機間のメッセージ交換の動作例）
以上の方法により、車載機間でメッセージ情報が交換される。ここでは、車載機間の通信の全体の流れを図１６Ａ、図１６Ｂを参照して説明する。これらの図は、３台の車載機（ノードＡ，Ｂ，Ｃ）の間でメッセージ情報を交換する場合の流れを示した図である。なお、図中において、ＤＡｉはｉ番目のサイクルにおいて、ノードＡが送信するデータ（メッセージ情報）を意味する。ＳＡｉはｉ番目のサイクルにおけるノードＡのサマリ情報を意味する。Ｓｓｉは、ｉ番目のサイクルにおける累積サマリ情報を意味する。
【０１２８】
Wi-Fi Directのグループの調整を行い、ノードＡがAPとして機能し、ノードＢ，ＣがSTAとして機能することが決定されたとする。この過程において、１サイクル内での各ノー
ドの通信順序が、ノードＡ，Ｂ，Ｃの順であると決定されたものとする。図１６Ａの処理は、これらの決定以降の処理を示している。
【０１２９】
まず、ノードＡからデータ送信を行う。送信されるデータは、ランダムに選択されたメッセージＤＡ１と、この時点でのサマリ情報ＳＡ１である。送信するメッセージをランダムに選択するのは、この通信サイクルが最初のサイクルであり、それ以前に周囲のノードからサマリ情報を取得できていないためである。ノードＡからブロードキャスト送信される情報は、ノードＢ，Ｃによって受信される。ノードＡは、自ノードの送信後は、接続している全てのSTAからのパケットを受信するのを待つ。
【０１３０】
ノードＢ，Ｃでは、ノードＡから送信されるメッセージＤＡ１とサマリ情報ＳＡ１を受信する。そして、受信したサマリ情報を累積サマリ情報Ｓｓ１に統合する（足し合わせる）。なお、新しい通信サイクルの開始時には累積サマリ情報Ｓｓ１は空であるため、統合後の累積サマリ情報Ｓｓ１は、ノードＡから送信されたサマリ情報Ｓｓ１と等しい。ノードＢ，Ｃはまた、受信したメッセージ情報ＤＡ１をメッセージＤＢ２５１に格納するとともに、サマリ情報を更新する。ノードＢ，Ｃは、自ノードの送信タイミングが到来するまで待機する。
【０１３１】
STAとして機能するノードは、APからの通信を受信した後に、自ノードの送信順序に応
じた時間だけ待機してから送信を開始する。たとえば、ノードＡ，Ｂ，ＣのＩＰアドレスがそれぞれ、192.168.10.1, 192.168.10.2, 192.168.10.3であるとすると、サブネットマスク後のアドレス値が送信順序となる。ここでは、ノードＢの送信順序が２番目であるので、ノードＡの次に送信を開始する。ノードＢが送信タイミングを得ると、ランダムに選択されたメッセージＤＢ１とその時点のサマリ情報ＳＢ１をブロードキャスト送信する。
【０１３２】
ノードＢからの通信を受信したノードＡ，Ｃにおける処理は、上記で説明したノードＡからの通信を受信したノードＢ，Ｃと同様であるので、説明を省略する。
【０１３３】
次に、ノードＣが送信権を得て送信を開始する。この処理は上記と同様であるので、説明を省略する。
【０１３４】
ノードＡは、接続している全てのＳＴＡ（ノードＢ，Ｃ）から通信を受信したので、第１サイクルが終了したことを把握でき、第２サイクルを開始する。図１６Ｂは、第２サイクル以降の処理を示している。
【０１３５】
ノードＡはまず、前サイクルにおける各ノードのサマリ情報ＳＡ１，ＳＢ１，ＳＣ１が一致するか否か判定する。ここでは、各ノードが保有するメッセージ情報が一致していないので、通信を継続する。
【０１３６】
第２サイクルにおいても、通信の順序は第１サイクルと同じであり、ノードＡ，Ｂ，Ｃの順である。ノードＡは、ＤＢ２５１の中からメッセージ情報を選択して送信する。この際、第１サイクルにおいて集計された累積サマリ情報Ｓｓ１（ここでは、ＳＢ１＋ＳＣ１）に、さらに現時点での自ノードのサマリ情報ＳＡ２を足し合わせた累積サマリ情報Ｓｓ１＋ＳＡ２に基づいて、送信するメッセージを選択する。選択の基準としては、累積サマリ情報Ｓｓ１＋ＳＡ２におけるカウンタ値が少ないグループのメッセージ情報を優先的に（高確率で）選択する。ノードＡは、選択したメッセージＤＡ２と自ノードのサマリ情報ＳＡ２を、周囲にブロードキャストする。
【０１３７】
受信側ノードＢ，Ｃの処理は、第１サイクルと同じである。すなわち、サイクルの初めにリセットした累積サマリ情報Ｓｓ２に、受信したサマリ情報ＳＡ２を統合する。また、受信したメッセージＤＡ２をＤＢ２５１に保存するとともに、自ノードのサマリ情報を更新する。
【０１３８】
以降、第２サイクルにおいても、ノードＢ，Ｃの順番で送信権を得て、送信メッセージの選択および送信の処理を行う。基本的な処理を上記と同じであるため、説明は省略する。
【０１３９】
このようなサイクルを繰り返していくと、いずれノードＡにおいて、前サイクルの各ノードのサマリ情報ＳＡ（ｎ−１）、ＳＢ（ｎ−１）、ＳＣ（ｎ−１）が全て一致する。この場合には、ノードＡはメッセージ情報の送信を行わない。ノードＡから送信がされないので、ノードＢ，Ｃも送信を行わなくなる。なお、メッセージ交換の停止条件として、単にサマリ情報が一致するという条件だけでなく、保有しているメッセージの数が所定数以上であるという条件を付加することも好ましい。すなわち、サマリ情報が全て一致する場合であっても、保有しているメッセージの数が所定数よりも少なければ、保有しているメッセージを全て送信するまで（全てのメッセージが送信抑制状態になるまで）メッセージ交換を継続してもよい。
【０１４０】
７．車載機からフィルタサーバへのアップロード処理
車載機１１０が、STAとして車車間通信を行っている状態４０５、または接続検出状態
４０２において、ネットワーク接続を発見すると、STAとしてネットワーク１０４を介し
てフィルタサーバ１０５と通信を行う。フィルタサーバ１０５との通信においては、車載機１１０はメッセージＤＢ２５１に格納されたメッセージ情報をアップロードする。以下、その処理の詳細を図１７のフローチャートを参照しながら説明する。
【０１４１】
フィルタサーバ１０５との接続が確立すると、メッセージ選択部２３２がメッセージＤＢ２５１のなかからサーバアップロードフラグ６０７が立っていないメッセージ情報を選択する（Ｓ１７０１）。この際、サーバアップロードフラグが立っていないメッセージ情報をランダムで選択してもよいが、たとえば、ホップカウントが少ない情報を優先的に送信するなどの基準に従って選択・送信することも好ましい。
【０１４２】
フィルタサーバデータ通信部２１３は、選択されたメッセージ情報をフィルタサーバ１０５へ送信する（Ｓ１７０２）。また、メッセージ管理部２３０は、送信済みのメッセージについて、サーバアップロードフラグ６０７を１に更新する（Ｓ１７０３）。
【０１４３】
車載機１１０は、この処理を継続的に実施し、記憶している全てのメッセージ情報がアップロード済みになるまで行う。なお、車車間通信を行っていた車載機がフィルタサーバ１０５と通信を行う場合には、フィルタサーバ１０５との通信と車車間通信とを定期的に切り替えることも好ましい。
【０１４４】
ここでは、車載機１１０からフィルタサーバ１０５へメッセージ情報を送信する処理を説明したが、車載機１１０はフィルタサーバ１０５からメッセージ情報を受信するようにしてもよい。フィルタサーバ１０５からメッセージ情報を受信した場合の処理は、他の車載機からメッセージを受信した場合と同様である（「６−２．メッセージ受信時処理」参照）。フィルタサーバ１０５には、多くの車載機からメッセージが集約されるため、自ノードが保有していないメッセージをフィルタサーバ１０５から取得することができる。
【０１４５】
８．フィルタサーバでの処理
フィルタサーバ１０５には、多くの車載機からメッセージ情報が送信される。本システムにおいては、ユーザから投稿されたメッセージは最終的に、ソーシャルネットワークサービスなどのメッセージ投稿サービスに投稿されるようにする。したがって、フィルタサーバ１０５は、受信したメッセージ情報をメッセージ投稿サーバ１０６へ投稿する。
【０１４６】
この際、すでに投稿済みの情報について繰り返し投稿を行わないように、フィルタサーバ１０５では、どのメッセージを投稿したかを管理する。これは、フィルタサーバ１０５でメッセージを記憶する際に、アップロード済みフラグを設けて記憶し、メッセージ投稿サーバ１０６へ投稿したらこのフラグを立てるようにすればよい。
【０１４７】
また、フィルタサーバ１０５は、車載機１１０と通信を行う際に、記憶しているメッセージ情報を車載機１１０に送信することも好ましい。どのメッセージを送信するかは適宜決定すればよい。たとえば、初回メッセージ登録日時が比較的新しいメッセージを送信するということが考えられる。このような手法以外にも、車車間通信と同様にサマリ情報を利用して車載機１１０が持っていない可能性が高いメッセージ情報を送信することも考えられる。
【０１４８】
＜本実施形態の作用・効果＞
本実施形態では、グループごとのメッセージをカウントするサマリ情報を用いることで、通信相手ノードが保有する情報の傾向が分かり、相手が保有する情報と異なる情報を送信することが可能となる。したがって、車両間でメッセージが効率的に共有される。なお、メッセージからグループＩＤを算出する際のハッシュ関数にＬＳＨなどの特殊なハッシュ関数を用いることで、同一性だけでなく類似性まで考慮したメッセージ交換が可能となる。本実施形態では、サマリ情報にカウンタを用いているので、保有データの追加削除に応じてカウンタ値を増減させることができる。したがって、保有データの削除が必要となった場合であっても、サマリ情報は保有している情報の傾向を正しく反映したものとなる。
【０１４９】
また、車載機間の通信において、Wi-Fi Directを用いた通信を行い、かつ、送信順序制御を行うことで、送信の衝突抑制と、通信サイクルの導入という効果が得られる。送信の衝突抑制は、通信のスループット向上に役立つ。また、通信サイクルを導入することで、どの時点でのサマリ情報を用いてメッセージ送信を行うのかが明確にすることができる。
【０１５０】
また、本実施形態では、車車間での効率的な情報共有方法を利用して、災害時用の情報共有システムを提案している。災害発生時には、通信インフラが打撃を受けて携帯電話網やインターネットアクセスポイントがほぼ利用不可能になることが想定される。そのような事態において、車載機をＡＰとしてユーザ端末と通信してユーザからのメッセージを受け付け、車両間のＰ２Ｐ通信でメッセージを交換・拡散することで、他の場所のユーザにメッセージを届けたり、インターネット接続を見つけた車両がメッセージをインターネット上に投稿したりすることが可能となる。すなわち、本実施形態による情報共有システムによれば、車両を介して、ユーザに有効な情報を提供することが可能となる。
【０１５１】
＜変形例＞
上記の説明は、本発明の一つの実施形態を説明したものであり、本発明を限定するものではない。本発明は、その技術的思想の範囲内において種々の変形が可能である。
【０１５２】
たとえば、サマリ情報に基づくメッセージ交換（メッセージ選択・送信）方法は、上述の災害時の情報共有システム以外のシステムに有効に適用することができる。すなわち、任意の２つ以上のノードの保持するデータが異なる場合に、相手が保持していない可能性が高いデータを送信する目的に有効に適用することができる。この際、上述の説明では送
信順序制御を行っているが、この処理は必須ではなく各ノードが任意のタイミングで送信するようにしてもよい。また、上述の説明では全てのノードが保有するデータが一致するまでメッセージ交換を行うことを目的としているが、必ずしも全てのノードが一致することを目指す必要は無い。たとえば、２台の車両がすれ違う場合に上記のメッセージ交換方法を適用すれば、保有データを一致させるだけの時間がないとしても、相手が保有していないデータを送信できる確率が高まる。
【０１５３】
上述の説明では、３台以上の車載機の間でデータの交換が行われていたが、２台の車載機（あるいは任意の無線通信機）の間でデータの交換を行ってもよい。この場合、１対１の通信となるので、上記実施形態における通信制御よりも単純な通信制御方式を採用可能であることは当業者に自明であろう。
【０１５４】
また、上述の実施形態では、他の複数の車載機のサマリ情報を合計して、累積後のサマリ情報においてメッセージ数の少ないグループのメッセージを送信しているが、どのメッセージを送信するかはこれ以外の方法によることもできる。たとえば、他ノードのサマリ情報と自ノードのサマリ情報を比較して、自ノードの方が他ノードよりも多くのデータを保有しているグループに属するメッセージほど優先的に送信するようにしてもよい。このようなグループも、他ノードが保有していないメッセージを自ノードが保有している可能性が高いと考えられるためである。特にこのような選択方法は、周囲に存在するノードが少ない場合ほど有効であると考えられる。
【０１５５】
また、上述の説明では、サマリ情報とメッセージ情報とをまとめて送っているが、それぞれ異なるタイミングで送信するようにしてもよい。たとえば、まず、サマリ情報を互いに交換した後に、メッセージ情報を交換することが考えられる。
【０１５６】
また、サマリ情報に基づくメッセージ交換方法として送信される情報は、本実施形態におけるようなメッセージ情報に限られる必要は無く、任意のデータであって構わない。送信情報は、必ずしもテキストメッセージである必要は無く、また、本実施形態で説明した各種のフィールドを設けなくても構わない。
【符号の説明】
【０１５７】
１０１  車両
１０２  ユーザ端末
１０３  ユーザ
１０４  ネットワーク
１０５  フィルタサーバ
１０６  メッセージ投稿サーバ
１１０  車載機
２１０  通信管理部
２２０  メッセージ管理部
２３０  メッセージ記憶部
【図１】
2014170293.tif 000004
【図２】
2014170293.tif 000005
【図３】
2014170293.tif 000006
【図４】
2014170293.tif 000007
【図５】
2014170293.tif 000008
【図６】
2014170293.tif 000009
【図７】
2014170293.tif 000010
【図８】
2014170293.tif 000011
【図９】
2014170293.tif 000012
【図１０】
2014170293.tif 000013
【図１１】
2014170293.tif 000014
【図１２】
2014170293.tif 000015
【図１３】
2014170293.tif 000016
【図１４】
2014170293.tif 000017
【図１５】
2014170293.tif 000018
【図１６Ａ】
2014170293.tif 000019
【図１６Ｂ】
2014170293.tif 000020
【図１７】
2014170293.tif 000021