(57)【特許請求の範囲】
【請求項１】
一つ以上の他のノードとコネクションレス・メッシュ・ネットワークを形成するノードであって、
前記ノードのそれぞれは、
前記一つ以上の他のノードに情報を無線送信する送信器と、
前記一つ以上の他のノードから送信された情報を無線受信する受信器と、
プログラムを保存するメモリと、
前記メモリから前記プログラムを読み出して、実行することにより、前記プログラムに従って前記送信器及び前記受信器を制御する一つ以上のプロセッサと
を備え、
前記一つ以上のプロセッサは、
前記ノードを識別する識別子を生成するよう制御し、
前記識別子及びデータペイロードを更新するよう制御し、
生成された識別子及び更新されたデータペイロードを含むブロードキャスト情報を、所定周波数で、周期的に無線ブロードキャストするよう前記送信器を制御し、
前記一つ以上の他のノードのそれぞれからブロードキャストされたブロードキャスト情報である他のブロードキャスト情報を、所定周波数で、周期的に受信するよう前記受信器を制御し、
前記他のノードからの前記他のブロードキャスト情報に従って前記識別子及び前記データペイロードの前記更新を行い、
前記データペイロードは、どのノードが現在のアクティブノードであるかを示す情報であるアクティブノード情報を有し、
前記一つ以上のプロセッサは、前記他のノードのそれぞれから受信した前記他のブロードキャスト情報の前記データペイロードに含まれるアクティブノード情報に従って、どのノードがアクティブノードであるかを判定し、アクティブノードであると判定されたノードの識別子を示す前記アクティブノード情報を更新するために前記データペイロードの前記更新を行う
ことを特徴とするノード。
【請求項２】
前記一つ以上のプロセッサは、前記更新において、
前記受信器による前回の周期的な受信との関連で前記一つ以上の他のノードのうちアクティブノードであると判定されたノードから受信した、無線送信された情報のデータペイロードに含まれるアクティブノード情報が新しいアクティブノードの識別子を示すとの判定に応じて、前記送信器がその後にブロードキャストするアクティブノード情報を前記新しいアクティブノードの識別子を示すように更新することを特徴とする請求項１に記載のノード。
【請求項３】
前記データペイロードは、前記ノードのそれぞれがアクティブノードになることを要望するかどうかを示す情報であるアクティブ要求情報を更に有し、
前記一つ以上のプロセッサは、前記他のノードのそれぞれから受信した前記他のブロードキャスト情報の前記データペイロードのそれぞれに含まれる前記アクティブノード情報及び前記アクティブ要求情報に従って、どのノードがアクティブノードであるかを判定することを特徴とする請求項２に記載のノード。
【請求項４】
前記受信器による前回の周期的な受信との関連で前記ノードがアクティブノードであると判定された場合、前記一つ以上のプロセッサは、前記更新において、
前記一つ以上の他のノードのうちのアクティブ要求ノードから受信した、無線送信された情報のデータペイロードに含まれるアクティブ要求情報が、前記アクティブ要求ノードがアクティブノードになることを要望することを示すとの判定に応じて、前記送信器がその後にブロードキャストするアクティブノード情報をアクティブ要求ノードの識別子を示すように更新する特徴とする請求項３に記載のノード。
【請求項５】
前記一つ以上のプロセッサは、前記更新において、
前記アクティブ要求ノードがアクティブノードになることを要望することを示す、無線送信された情報のデータペイロードに含まれる前記アクティブ要求情報を、前記アクティブ要求ノードから受信してから所定時間が経過した後、又は、
前記アクティブ要求ノードがアクティブノードになることを要望することを示す、無線送信された情報のデータペイロードに含まれる前記アクティブ要求情報を、前記アクティブ要求ノードから所定回数受信したと判定したことに応じて、
前記送信器がその後にブロードキャストするアクティブノード情報を前記アクティブ要求ノードの識別子を示すように更新することを特徴とする請求項４に記載のノード。
【請求項６】
アクティブノードの立場の譲渡を要求する前記ノードのユーザ操作に従って入力される譲渡要求情報を受け付ける入力デバイスをさらに有し、
前記一つ以上のプロセッサは、前記更新において、前記入力デバイスが前記譲渡要求情報を受け付けたことに従って、前記送信器がその後にブロードキャストするアクティブノード情報を前記一つ以上の他のノードのうちの一つの識別子を示すように更新すること特徴とする請求項４に記載のノード。
【請求項７】
前記一つ以上のプロセッサは、データペイロードの情報が初期状態のままであるかを判定し、
データペイロードの情報が初期化状態のままであるとの判定に応じて、前記更新において、
前記他のブロードキャスト情報のアクティブノード情報に示された、前記一つ以上の他のノードのうちの一つの識別子を示すように、或いは、
前記一つ以上の他のノードのうちの一つの識別子を示す前記他のブロードキャスト情報のアクティブノード情報がない場合に、初期アクティブノード設定に従って前記ノードの識別子或いは前記一つ以上の他のノードのうちの一つの識別子を示すように
前記アクティブノード情報を更新することを特徴とする請求項６に記載のノード。
【請求項８】
前記初期アクティブノード設定は、前記ノード及び前記一つ以上の他のノードの各識別子に従って実行されることを特徴とする請求項７に記載のノード。
【請求項９】
前記一つ以上のプロセッサは、前記受信器が受信したトランザクション装置からのブロードキャスト信号に基づいて、前記ノードと前記トランザクション装置との間の距離の推定を示す距離推定情報を生成し、前記送信器が周期的に無線ブロードキャストするブロードキャスト情報に前記距離推定情報を含めるようにし、
前記初期アクティブノード設定は、前記ノードの前記距離推定情報及び前記一つ以上の他のノードの前記距離推定情報に従って実行されることを特徴とする請求項８に記載のノード。
【請求項１０】
前記一つ以上のプロセッサは、前記ブロードキャスト情報及び前記他のブロードキャスト情報が矛盾状態にあるかどうかを判定し、
前記矛盾状態との判定に応じて、前記一つ以上のプロセッサは、前記ブロードキャスト情報を再初期化することを特徴とする請求項９に記載のノード。
【請求項１１】
前記一つ以上のプロセッサは、前記一つ以上のプロセッサが前記ノードがアクティブノードになったと判定したことに応じてノードにアクティブ化動作を実行させ、前記一つ以上のプロセッサが前記他のノードがアクティブノードになったとの判定に応じてノードに非アクティブ化動作を実行させるように制御することを特徴とする請求項１０に記載のノード。
【請求項１２】
前記ノードのユーザに情報を出力する出力デバイスを更に有し、
前記アクティブ化動作は、前記出力デバイスが前記ノードがアクティブになったことを示す通知を出力することに対応し、
前記非アクティブ化動作は、前記出力デバイスが前記ノードが非アクティブになったことを示す通知を出力することに対応することを特徴とする請求項１１に記載のノード。
【請求項１３】
前記ブロードキャストは、パラメータを含む接続要求を行って前記他のノードの一つと接続を確立し、前記パラメータに従って前記他のノードの一つと通信することなしに行われることを特徴とする請求項１２に記載のノード。
【請求項１４】
前記一つ以上のプロセッサは、所定範囲内の疑似ランダム数値である識別子を生成することを特徴とする請求項１３に記載のノード。
【請求項１５】
前記ブロードキャストは、ＢＬＥ(Bluetooth Low Energy)のペリフェラル（ブロードキャスト）の役割において実行され、受信は、ＢＬＥのセントラル（オブザーバ）の役割において実行されること特徴とする請求項１４に記載のノード。
【請求項１６】
前記ブロードキャストは、アドバタイジングに関するｉＢｅａｃｏｎの規格に従って実行されることを特徴とする請求項１５に記載のノード。
【請求項１７】
複数のノードを含むコネクションレス・メッシュ・ネットワークシステムであって、
各ノードは、
他のノードに情報を無線送信する送信器と、
前記他のノードから送信された情報を無線受信する受信器と、
プログラムを保存するメモリと、
前記メモリから前記プログラムを読み出して、実行することにより、前記プログラムに従って前記送信器及び前記受信器を制御する一つ以上のプロセッサと
を備え、
前記一つ以上のプロセッサは、
前記ノードを識別する識別子を生成するよう制御し、
前記識別子及びデータペイロードを更新するよう制御し、
生成された識別子及び更新されたデータペイロードを含むブロードキャスト情報を、所定周波数で、周期的に無線ブロードキャストするよう前記送信器を制御し、
前記他のノードのそれぞれからブロードキャストされたブロードキャスト情報である他のブロードキャスト情報を、所定周波数で、周期的に受信するよう前記受信器を制御し、
前記他のノードからの前記他のブロードキャスト情報に従って前記識別子及び前記データペイロードの前記更新を行い、
前記データペイロードは、どのノードが現在のアクティブノードであるかを示す情報であるアクティブノード情報を有し、
前記一つ以上のプロセッサは、前記他のノードのそれぞれから受信した前記他のブロードキャスト情報の前記データペイロードに含まれるアクティブノード情報に従って、どのノードがアクティブノードであるかを判定し、アクティブノードであると判定されたノードの識別子を示す前記アクティブノード情報を更新するために前記データペイロードの前記更新を行う
ことを特徴とするシステム。
【請求項１８】
一つ以上の他のノードとコネクションレス・メッシュ・ネットワークを形成するノードを制御する制御方法であって、
前記ノードを識別する識別子を生成する生成ステップと、
前記識別子及びデータペイロードを更新する更新ステップと、
生成された識別子及び更新されたデータペイロードを含むブロードキャスト情報を、所定周波数で、周期的に無線ブロードキャストするステップと、
前記一つ以上の他のノードのそれぞれからブロードキャストされたブロードキャスト情報である他のブロードキャスト情報を、所定周波数で、周期的に受信するステップと、
を含み、
前記他のノードからの前記他のブロードキャスト情報に従って前記識別子及び前記データペイロードの前記更新を行い、
前記データペイロードは、どのノードが現在のアクティブノードであるかを示す情報であるアクティブノード情報を有し、
前記他のノードのそれぞれから受信した前記他のブロードキャスト情報の前記データペイロードに含まれるアクティブノード情報に従って、どのノードがアクティブノードであるかを判定し、アクティブノードであると判定されたノードの識別子を示す前記アクティブノード情報を更新するために前記データペイロードの前記更新を行う
ことを特徴とする方法。
【請求項１９】
一つ以上の他のノードとコネクションレス・メッシュ・ネットワークを形成するノードを制御する制御方法を実行させるためのプログラムを格納した、コンピュータにより読み取り可能な記憶媒体であって、
前記方法は、
前記ノードを識別する識別子を生成する生成ステップと、
前記識別子及びデータペイロードを更新する更新ステップと、
生成された識別子及び更新されたデータペイロードを含むブロードキャスト情報を、所定周波数で、周期的に無線ブロードキャストするステップと、
前記一つ以上の他のノードのそれぞれからブロードキャストされたブロードキャスト情報である他のブロードキャスト情報を、所定周波数で、周期的に受信するステップと、
を含み、
前記他のノードからの前記他のブロードキャスト情報に従って前記識別子及び前記データペイロードの前記更新を行い、
前記データペイロードは、どのノードが現在のアクティブノードであるかを示す情報であるアクティブノード情報を有し、
前記他のノードのそれぞれから受信した前記他のブロードキャスト情報の前記データペイロードに含まれるアクティブノード情報に従って、どのノードがアクティブノードであるかを判定し、アクティブノードであると判定されたノードの識別子を示す前記アクティブノード情報を更新するために前記データペイロードの前記更新を行う
ことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コネクションレス・メッシュ・ネットワーキングのためのノード、システム、方法及び記憶媒体に関する。
【背景技術】
【０００２】
現状のメッシュ又はピアツーピアネットワーキングプロトコルでは、安全かつ確実で逐次的な双方向通信データ伝送が重視されている。このようなプロトコルは、その目的を達成するために、有効データの伝送前に通信セッションを確立し、エラーチェック、送信確認等を行うため、要するオーバーヘッドが大きい。
【０００３】
この一例として、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）という通信技術による接続がある。ＢＬＥでは、接続を確立することにより２ノード間での双方向通信が可能になる。接続を確立するには、マスターデバイスはまず、ブロードキャストモードで自機器をアドバタイジングしている機器を発見する必要がある。マスターはまず、ブロードキャスト装置に対して接続要求を送り、その後その接続要求のパラメータに従って双方向通信を行うことになる。このような接続は、管理される必要があり、特定の状況下では損失することがある。この通信においては、巡回冗長検証（ＣＲＣ：Cyclical Redundancy Check)を使用したエラーチェックが行われ、エラーが発見された場合にはパケットが再送信される。
【０００４】
ＢＬＥで用いられるような接続を利用する際、わずかなデータ量しか送信されない使用形態の場合（例えば、あるネットワークにおいて複数のノードのうち、どちらが現在「アクティブ」になっているかを送信する場合等）には、実際に送信されるデータ量に対して帯域や複雑性の面でオーバーヘッドが非常に大きくなる。そのようなオーバーヘッドは、例えばネットワークにおける各ノードが正確な情報を持っていることを保証するために行う大規模なチェックによる遅延の発生等、性能の劣化に繋がる。このため、このようなプロトコルは、ノードが迅速に状況変化を認識しなければならないネットワークシステムには、不適切な場合がある。
【発明の概要】
【０００５】
本発明の様々な実施形態によれば、ノードが一つ以上の他のノードとコネクションレス・メッシュ・ネットワークを構築することができる。前記ノードのそれぞれは、前記一つ以上の他のノードに無線で情報を送信する送信器と、前記一つ以上の他のノードから送信された情報を無線で受信する受信器と、プログラムを保存するメモリと、前記メモリから前記プログラムを読み出して、実行することにより、前記プログラムに従って前記送信器及び前記受信器を制御する一つ以上のプロセッサとを備え、前記一つ以上のプロセッサは、前記ノードを識別する識別子を生成するよう制御し、前記識別子及びデータペイロードを更新するよう制御し、生成された識別子及び更新されたデータペイロードを含むブロードキャスト情報を、所定周波数で、周期的に無線でブロードキャストするよう前記送信器を制御し、前記一つ以上の他のノードのそれぞれからブロードキャストされたブロードキャスト情報である他のブロードキャスト情報を、所定周波数で、周期的に受信するよう前記受信器を制御し、前記他のノードからの前記他のブロードキャスト情報に従って前記識別子及び前記データペイロードの前記更新を行う。
【０００６】
本発明の他の側面は、添付の図面と関連した典型的な実施形態に関する以下の記述から明らかになるであろう。
【図面の簡単な説明】
【０００７】
【図１】本発明の一部の実施形態による各ノードのハードウェア構成図。
【図２】本発明の一部の実施形態によるトランザクション装置のハードウェア構成図。
【図３】本発明のシステム図を示す。
【図４】周期的なブロードキャストであるプロトコルデータ（ブロードキャスト情報）定義プロトコルを示す一例。
【図５】ｎ個のノードが実施形態に従うアドホック・コネクションレス・メッシュ・ネットワークを形成する様子を示す一例。
【図６】ノードがアクティブノードになることを要求することを示す一例。
【図７】アクティブノードが要求ノードに新しいアクティブノードとなることを許可することを示す一例。
【図８】メッシュネットワークの状態が再度安定することを示す一例。
【図９Ａ】、
【図９Ｂ】本発明の実施形態に係るコネクションレス・メッシュ・ネットワークを形成する各複数のノードが実行する処理を示すフローチャート。
【発明を実施するための形態】
【０００８】
本発明は、例示的な目的のための特定の実施形態を使用して以降で説明されるが、本発明がこれら実施形態に制限されるものと理解すべきではない。
【０００９】
本発明の本実施形態では、データが急速にすべての近傍ノード１００に伝搬する複数のノード１００がコネクションレス・メッシュ・ネットワークを形成する。他のノード１００との接続／セッション確立をせずに、各ノード１００は所定周波数にて、自身とデータペイロードを特定する識別子（ID）を含む情報を周期的に無線でブロードキャストする（「アドバタイジング」とも称す）。さらに、各ノード１００は、所定周波数にて、全ての他のノード１００からブロードキャストを周期的に受信する。なお、各ノード１００は、それぞれノード１００が受信する入力情報（ノード１００のタッチパネルへのユーザのタッチによる入力等）に従って、もしくは他のノード１００のブロードキャストを受信する際に受信される情報に従ってデータペイロードを随時生成／更新する。なお、各ノードは、例えば競合を解消するためにいつでも自分の識別子を変更しても良い。
【００１０】
一部の実施形態では、ノード１００は、例えば、スマートフォンもしくはタブレットのような携帯端末であり、それらは例えば、所定周波数で電波を送信及び受信が可能であり、プログラム及びデータを保存するためのメモリ、プログラムを実行することにより機器を制御するための一つ以上のプロセッサ（例えばＣＰＵ１０１）を含む。
【００１１】
一部の実施形態では、周期的なコネクションレス・ブロードキャスト通信は、他のノード１００との接続を確立することなしに（通信は特定の機器に指向される）ＢＬＥ(Bluetooth Low Energy)のブロードキャストモードにおいて排他的にブロードキャストの実行（アドバタイジング）とブロードキャストの受信（スキャン）との両方を行う各ノード１００により実現し得る。一部の実施形態では、このブロードキャストはＡｐｐｌｅのｉＢｅａｃｏｎ（登録商標）規格を使用して実施される。
【００１２】
ＢＬＥのブロードキャストモードでは、所定周波数で一方向性（一対多）のメッセージを送信することが可能である。オブザーバ通信装置は、所定周波数を繰り返しスキャンすることによりブロードキャスト装置から送信された一方向性のメッセージを受信可能である。ノード１００は、一部の実施形態において、ＢＬＥのブロードキャスト装置（周辺装置）としての役割で情報を周期的にブロードキャストし、ＢＬＥのオブザーバ（セントラル）としての役割で全ての他ノード１００からのブロードキャストを受信する。ここで、これら一方向性のメッセージをブロードキャスト及び受信することにより、ノード１００はブロードキャストで受信される情報に基づいて情報（例えばネットワークの状態など）が随時更新される、迅速な多対多通信が達成されるメッシュネットワークを効果的に形成する。
【００１３】
なお、ブロードキャスト及びスキャンのための所定周波数は、例えばＢＬＥの「アドバタイジングチャンネル」に対応する周波数帯域に含まれてもよい。ブロードキャストがＢＬＥにより実施される本実施形態では、ブロードキャストは「アドバタイジング」と称されてもよい。
【００１４】
一部の実施形態では、各ノード１００の不揮発メモリ（例えばＲＯＭ１０３）に保存され、各ノード１００の揮発メモリ（例えばＲＡＭ１０２）へと展開され、各ノード１００のＣＰＵ１０１の制御の下で実行されるプログラム（アプリケーション）は、上述のブロードキャスト（アドバタイジング）、受信（スキャン）及びデータの生成／更新を行うためにノード１００を制御する。特定の実施形態の一例では、ノード１００が「アクティブ」もしくは「非アクティブ」になると、このようなプログラムを実行することにより、ＣＰＵは対応するノード１００のユーザに通知する。この例は添付図面を参照して、以下に詳細を説明する。なお、この詳細な例は例示的であり、発明の権利範囲を制限することを意図していない。
【００１５】
コネクションレス・メッシュ・ネットワークを形成する複数のノード１００は例えば、ユーザ端末であってもよい。例えばこのユーザ端末は、本件発明の実施形態に係る無線機能を備えている、スマートフォン、タブレット端末、ＰＤＡ又はあらゆる他の機器であってもよい。以下、ノード１００は、例えばスマートフォンであると仮定する。上記プログラムは、各スマートフォンにインストールされているものとする。各ノード１００は、ブロードキャスト（無線データ送信）を実行可能な送信器１０５、ブロードキャストを受信可能（無線伝送の受信）な受信器１０６、受信した情報やプログラムを保存可能なメモリ（ＲＡＭ１０２又は記憶部１０４）、及び統括制御を実行可能なＣＰＵ１０１のようなハードウェアを含んでもよいと仮定する。プログラムを実行することでＣＰＵ１０１は、ブロードキャストを行う送信器１０５の制御、ブロードキャストを受信する受信器１０６の制御、データ（情報）を保存及び抽出するメモリの制御、及び対応する機能（ＵＩ(user interface)画面を表示又はタッチ入力を受信する等）を行うタッチパネルディスプレイ（出力機器１０７、入力機器１０８）のような他のハードウェアの制御が可能である。
【００１６】
本実施形態では、複数のノード１００の一つは、トランザクション装置２００から報酬（ロイヤルティポイント情報等）を受信可能である。トランザクション装置２００は、販売機、ＰＯＳ端末（Point Of Sale - 販売時点）、発券機、現金自動預け払い機（ＡＴＭ）又は、例えばユーザによる商品の購入といった、ユーザ操作の照合に応じてポイントをユーザに発行することが可能な他の任意の装置を含んでもよい。以下、実施形態におけるトランザクション装置２００として販売機を例示し説明する。なお、このようなトランザクション装置を必要としない実施形態と、このようなトランザクション装置を除くいかなる他の目的のためのメッシュネットワークのためのノードとが存在する。
【００１７】
以下で詳しく述べるように、トランザクション装置２００は、無線送信器２０５、受信器２０６、ＣＰＵ２０１及びメモリ（ＲＡＭ２０２、ＲＯＭ２０３、記憶部２０４）も備えているものとする。トランザクション装置２００は、ノード１００が、トランザクション装置２００に近接していると判定可能な識別情報を周期的にブロードキャストするよう構成される。トランザクション装置２００はさらに、トランザクション装置２００で行われる取引に関連する報酬情報を送信するよう構成される。例えば、ノード１００の一つのユーザがトランザクション装置２００（販売機）から商品を購入したことに応じてこの報酬情報を送信してもよい。上記プログラム（アプリケーション）を実行しているノード１００の一つがこの報酬情報を受信する際、例えば上記プログラム（アプリケーション）にログインしたユーザのユーザアカウントとともに、報酬（例えば購入に対応するロイヤルティポイント）に関する処理を実行する。本処理は例えば遠隔サーバへ識別情報及び報酬情報を伝送することを含むものであってもよい。
【００１８】
図1は、本発明の一部の実施形態による各ノード１００のハードウェア構成図である。ノード１００は、中央処理装置（ＣＰＵ）１０１、ランダム・アクセス・メモリ（RAM）１０２、リード・オンリ・メモリ（ROM）１０３、記憶部１０４、送信器１０５及び受信器１０６、出力デバイス１０７及び入力デバイス１０８を備える。これら全ての構成要素は、バス１０９により互いに接続される。
【００１９】
ＣＰＵ１０１は、ＲＯＭ１０３に保存されているコンピュータプログラムをＲＡＭ１０２に読み出して、プログラムの命令の実行によりノード１００の全体動作を制御できるハードウェアプロセッサである。簡単のため一つのＣＰＵ１０１のみが図示されているものの、ノード１００の機能を達成するために複数のＣＰＵ１０１が連携して命令を実行するように構成してもよい。ＣＰＵ１０１は、プログラムの命令を実行可能な任意のプロセッサであってもよい。
【００２０】
送信器１０５は、ＢＬＥのような特定の通信規格に従って、例えば他のノード１００又はトランザクション装置２００にデータを送信するための機器である。送信器１０５は、インターネットのようなコンピューティングネットワーク上のデータパケットを送信し、例えば、Universal Serial Bus（USB）、Ethernet、IEEE１３９４、無線周波数（RF）、近距離無線通信、８０２．１１（WiFi）、TCP/IP等のようなインタフェースの各種方式を含んでもよい。ＣＰＵ１０１は、バス１０９を経由して送信器１０５へ制御信号を送信することで、プログラムに従ってデータを送信するように送信器１０５を制御する。
【００２１】
受信器１０６は、ＢＬＥのような特定の通信規格に従って、例えば他のノード１００又はトランザクション装置２００からデータを受信するための機器である。受信器１０６は、インターネットのようなコンピューティングネットワーク上のデータパケットを受信し、例えば、Universal Serial Bus（USB）、Ethernet、IEEE１３９４、無線周波数（RF）、近距離無線通信、８０２．１１（WiFi）、TCP/IP等のようなインタフェースの各種方式を含んでもよい。ＣＰＵ１０１は、バス１０９を経由して受信器１０６に制御信号を送信することで、プログラムに従ってデータを受信するように受信器１０６を制御してもよい。
【００２２】
記憶部１０４は、様々な種類のデータを保存可能な不揮発記憶装置である。一部の実施形態では、例えば、記憶部１０４は内蔵メモリ機器であり、他の実施形態では、ノード１００に着脱自在に取り付けられている。出力デバイス１０７は、ノード１００のユーザに情報を提示するための機器であり、例えばLCDのディスプレイ又は携帯電話の画面等で構成され、ノード１００のユーザに対して情報を出力する。ディスプレイ１０７は、ノード１００に内蔵、又はノード１００に外付けされるものであってもよい。
【００２３】
出力デバイス１０７は、視覚的出力装置に限られず、例えばスピーカのような音声出力装置を備えるものであってもよい。
【００２４】
入力デバイス１０８は、ノード１００のユーザがノード１００に情報を入力するのに使用する機器である。入力デバイス１０８は、ディスプレイ１０７に一体的に内蔵されるタッチパネル機器であってもよい。しかし入力デバイス１０８はこれに限られず、マイクロフォンのような音声入力装置を備えるものであってもよい。
【００２５】
一部の実施形態では、ノード１００の機能は、ＣＰＵ１０１がＲＡＭ１０２をワークエリアとして使用し、ＲＯＭ１０３に保存されたソフトウェアプログラムを実行することにより実現可能である。プログラムに従って、ＣＰＵ１０１は、バス１０９上で制御信号を送信し、信号を受信することにより、ノード１００の他の構成要素の動作を制御できる。
【００２６】
図２は、本発明の一部の実施形態によるトランザクション装置２００のハードウェア構成図。トランザクション装置２００は、中央処理装置（ＣＰＵ）２０１、ＲＡＭ２０２、ＲＯＭ２０３、記憶部２０４、送信器２０５及び受信器２０６、出力デバイス２０７、及び入力デバイス２０８を備える。これら全ての構成要素は、バス２０９により互いに接続される。
【００２７】
ＣＰＵ２０１は、ＲＯＭ２０３に保存されているコンピュータプログラムをＲＡＭ２０２に読み出して、プログラムの命令の実行によりトランザクション装置２００の全体動作を制御できるハードウェアプロセッサである。簡単のため一つのＣＰＵ２０１のみが図示されているものの、トランザクション装置２００の機能を達成するために複数のＣＰＵ２０１が連携して命令を実行するように構成してもよいことに留意すべきである。ＣＰＵ２０１は、プログラムの命令を実行可能な任意のプロセッサであってもよい。
【００２８】
送信器２０５は、ＢＬＥのような特定の通信規格に従って、例えばノード１００又は無線通信機能を備える他の機器にデータを送信するための機器である。送信器２０５は、インターネットのようなコンピューティングネットワーク上のデータパケットを送信し、例えば、Universal Serial Bus（USB）、Ethernet、IEEE１３９４、無線周波数（RF）、近距離無線通信、８０２．１１（WiFi）、TCP/IP等のようなインタフェースの各種方式を含んでもよい。ＣＰＵ２０１は、バス２０９を経由して送信器２０５に制御信号を送信することで、プログラムに従ってデータを送信するように送信器２０５を制御してもよい。
【００２９】
受信器２０６は、ＢＬＥのような特定の通信規格に従って、例えば他のノード１００からデータを受信するための機器である。受信器２０６は、インターネットのようなコンピューティングネットワーク上のデータパケットを受信し、例えば、Universal Serial Bus（USB）、Ethernet、IEEE１３９４、無線周波数（RF）、近距離無線通信、８０２．１１（WiFi）、TCP/IP等のようなインタフェースの各種方式を含んでもよい。ＣＰＵ２０１は、バス２０９を経由して送信器２０５に制御信号を送信することで、プログラムに従ってデータを送信するように送信器２０５を制御してもよい。
【００３０】
記憶部２０４は、様々な種類のデータを保存可能な不揮発記憶装置である。一部の実施形態では、例えば、この記憶装置は内蔵メモリ機器であり、他の実施形態では、トランザクション装置２００に着脱自在に取り付けられている。
【００３１】
出力デバイス２０７は、例えばLCDのディスプレイなどの装置であり、トランザクション装置２００から商品を購入したいユーザに対して情報を出力する。ディスプレイ２０７は、トランザクション装置２００に内蔵、又はトランザクション装置２００に外付けされるものであってもよい。出力デバイス２０７は、視覚的出力装置に限られず、例えばスピーカのような音声出力装置を備えるものであってもよい。
【００３２】
入力デバイス２０８は、トランザクション装置２００のユーザがトランザクション装置２００に対して情報もしくは命令を入力するのに使用する機器である。入力デバイス２０８は、ユーザが購入する商品を選択するのに使用されるディスプレイ２０７に一体的に組み込まれたタッチパネル機器および／またはボタンであってもよい。しかし入力デバイス２０８はこれに限られず、マイクロフォンのような音声入力装置を備えるものであってもよい。
【００３３】
一部の実施形態では、トランザクション装置２００の機能は、ＣＰＵ２０１がＲＡＭ２０２をワークエリアとして使用してＲＯＭ２０３に保存されたソフトウェアプログラムを実行することにより実現可能である。プログラムに従って、ＣＰＵ２０１は、バス２０９上で制御信号を送信し、信号を受信することにより、トランザクション装置２００の他の構成要素の動作を制御できる。
【００３４】
トランザクション装置２００は、販売機、ＰＯＳ（Point Of Sale）端末、発券機、現金自動預け払い機（ＡＴＭ）又は、例えば、ユーザ操作の照合に対してポイントをユーザに発行することが可能な他の任意の装置に内蔵されてもよいし、外部に搭載されてもよい。
【００３５】
図３は、後述する例におけるシステム図を示している。１からｎまでの識別子を有する複数のノード１００は、トランザクション装置２００の近傍に存在する。任意のトランザクション装置２００は、全てのノード１００にブロードキャストを送信する。同様に、各ノード１００は、全ての他のノード１００にブロードキャストを送信し、他の各ノード１００及びトランザクション装置２００からのブロードキャストを受信する。
【００３６】
購入を行うユーザの対応ノード１００（アクティブノード１００）上で実行されているプログラム（アプリケーション）にログインしているユーザアカウントのみが、報酬と関連づけられるべきである。これを保証するため、ＣＰＵ１０１がプログラムを実行することによるノード１００の制御により、上述したコネクションレス・メッシュ・ネットワークを速やかに形成して、複数のノード１００のいずれがアクティブノード１００かを相互に通信する。このような動作により、各ノード１００のユーザに対して現在アクティブになっているノード１００がどれかが通知され、自分のノード１００がアクティブになったという通知に合せて購入を行なうことができる。
【００３７】
ノード１００のユーザは、例えば、対応するポイントを受信するために、他のユーザもしくはトランザクション装置２００の近傍にあるとき、ノード１００にインストールされたプログラム（アプリケーション）を起動する。プログラムの起動に際して、ノード１００のＣＰＵ１０１は、まずノード１００に、当該ノード１００が現在アクティブでない（トランザクション装置２００からの報酬通信を受信及び処理する準備ができていない状態（非アクティブ状態））旨をノード１００のユーザに対して通知させる。これは、ノード１００がトランザクション装置２００の通信可能範囲内に必ずしもいないために実行される。これ以外にも、たとえノード１００がトランザクション装置２００の範囲内であっても、トランザクション装置２００の範囲内にある他のノード１００が同様にプログラム（アプリケーション）を実行している可能性がある。一部の実施形態では、この通知は、ＣＰＵがノード１００を制御して、ノード１００が非アクティブ状態であることを示すＵＩ画面を（例えば、ノード１００の表示部１０７上に）表示させる処理に対応する。
【００３８】
通知を行った後、ノード１００は、トランザクション装置２００が自己識別ブロードキャスト通知を送信する所定周波数をスキャンする。トランザクション装置２００の識別情報に加えて、トランザクション装置２００によるこのブロードキャストは、受信するノード１００がトランザクション装置２００からの距離を推定することを可能にする情報を含んでいてよい。例えば、トランザクション装置２００は、仮にトランザクション装置２００の送信器から１メートル離れた地点でのブロードキャストを受信した場合の予測ＲＳＳＩ（受信信号強度）の指標を送信してもよい。この値及び実測ＲＳＳＩに基づいて、ノード１００は、トランザクション装置２００からの距離の推定を計算できる。
【００３９】
トランザクション装置２００からブロードキャストを検知するためのスキャンと共に、各ノード１００は、所定周波数にて、付近にある現在上記プログラムを実行中である任意の他のノード１００からブロードキャストを受信するためにスキャンする。さらに、各ノード１００は、所定周波数にて、当該ノード１００を識別する識別子を含む情報を周期的にブロードキャストする。この識別子は、例えば、の所定範囲の識別子のうちから疑似ランダムに選択されてもよい。ノード１００は、このようなブロードキャストや受信のために相互接続を確立することはない。
【００４０】
なお、他のノード１００から受信したブロードキャストを解析することにより、ノード１００が疑似ランダムに選択する識別子が他のノード１００と衝突するとノード１００が判定すると、ノード１００は疑似ランダムに他の識別子を選択する。許容可能な衝突確率であると判定されたものに応じて予め識別子の範囲の大きさを判定してもよい。より大きな範囲を選択することは、衝突確率を低くさせる利点があり、一方で小さな範囲を選択することは、ブロードキャスト中で送信される必要があるデータを少なくする利点がある。
【００４１】
識別子と共に、ブロードキャスト情報は、少量のペイロード情報を含む。この例におけるペイロード情報は、ネットワークの現在の状態を示す情報を含む。つまり、この情報は、ブロードキャストを行なうノード１００がアクティブ（アクティブノードＩＤ４０２）と判定したノード１００の識別子を示す。ブロードキャストを行なうノード１００がどのノードがアクティブなのかをまだ判定していない場合、例えば代わりにアクティブノードＩＤ４０２がまだ判定されていないことを示す情報が含まれていてもよい。
【００４２】
さらに、ブロードキャストのペイロード情報は、ブロードキャストしたノード１００がアクティブノード１００となることを望むこと（アクティブ要求フラグ４０３）を示すフラグの情報を含んでいてもよい。一部の実施形態では、このフラグは、ノード１００が他のノード１００の一つがアクティブノード１００であると判定した状態において、ノード１００のユーザがプログラムのＵＩ画面に対して、例えば、アクティブノード１００になることを望むことを示すように入力操作を行ったタイミングで設定される。例えば、この操作は、ノード１００のタッチパネル上のタッチ入力に対応するものであってもよい。
【００４３】
なお、ペイロード情報４００は、例えば前述したトランザクション装置２００からノード１００までの距離の推定の情報（距離推定情報４０４）も含むものであってもよい。
【００４４】
なお、ペイロード情報４００は、例えばノード１００が他のネットワークに属するノード１００からのブロードキャスト信号をただ無視するように、異なるメッシュネットワークが近傍で共存可能であるようなネットワーク識別子も含んでもよい。
【００４５】
ノード１００が、どのノード１００がアクティブノード１００であるかをまだ判定していない状態では、ノード１００は、トランザクション装置２００から自己識別ブロードキャストを受信するにあたり、どのノード１００がアクティブノード１００であるかを判定する処理を行う。なお、トランザクション装置２００からのブロードキャストが、トランザクション装置２００が所定距離内であることを示している場合のみ、ノード１００は本処理を行うものであってもよい。これは、例えば、ノード１００それぞれがトランザクション装置２００のブロードキャストの範囲内であり、反面互いのブロードキャストの範囲でないといった状況を避けるためである。
【００４６】
どのノード１００がアクティブノードであるかを判定する処理では、ブロードキャストが任意の他のノード１００から受信されない場合、ノード１００は自身がアクティブノードであると判定してもよい。この場合、ノード１００は、ノード１００が現在アクティブであることを、例えばノード１００のLCD上のＵＩ画面表示によりノード１００のユーザに通知してもよい。これに対して、ノード１００のユーザは、トランザクション装置２００から購入を行い、そして報酬通信がトランザクション装置２００から送信される。ノード１００がこの送信を受信すると、そのノード１００がアクティブノードであると判定されるため、ノード１００のＣＰＵが実行しているプログラム（アプリケーション）にログインしているユーザと、通信に対応するロイヤルティポイントと、を関連付ける処理を行う。
【００４７】
一部の実施形態では、トランザクション装置２００からアクティブノード１００への報酬情報の送信は、コネクションレス・ブロードキャスト送信であってもよい。その他の実施形態では、アクティブノード１００とトランザクション装置２００とが接続を確立した後、報酬情報がトランザクション装置２００からアクティブノード１００に送信される。
【００４８】
一方、ブロードキャストが任意の他のノード１００から受信されるとき、ノード１００は、任意の他のノード１００が、ノード１００がアクティブノード１００であると既に判定されているかどうかを最初に判定する。それは、他のノード１００から受信される各ブロードキャストのペイロード中のアクティブノードＩＤ４０２を検証することにより行う。任意の他のノード１００がアクティブノード１００であると既に判定されている場合、ノード１００は、メモリ中に、現在のアクティブノード１００を示す情報（例えば、識別子）を保存する。なお、ノード１００はその後それ自身の周期的なブロードキャストのためにその情報を使用してデータペイロードを生成する。
【００４９】
一方、ノード１００が他のノード１００のいずれもどのノード１００がアクティブであるかを判定していないと判定した場合、ノード１００は、どのノード１００がアクティブであるかを他のノード１００から受信する各ブロードキャストのペイロードの情報に従って判定する。例えば、ノード１００は、距離推定情報４０４に基づいて、どのノード１００がアクティブであるかを判定してもよい。一部の実施形態では、ノード１００は、アクティブノード１００であるトランザクション装置２００と最も近いと推定されるノード１００がいずれかを判定する。一部の実施形態では、ノード１００は、ノード１００の識別子に基づいて、どのノード１００がアクティブであるか判定する。例えば、最小の識別子を持つノード１００がアクティブであると定めてもよい。どのノード１００がアクティブか判定する他の方法は、例えばトランザクション装置２００から推定された距離及び識別子の両方に基づいた方法等が利用可能である。
【００５０】
なお、距離推定情報４０４に基づいてどのノード１００がアクティブであるか判定することは、トランザクション装置２００に最近接したノード１００（即ち対応ユーザが実際に購入を行う可能性が最も高いもの）がアクティブであると判定される可能性が最も高いという利点を有する。一方、アクティブノード１００が単純に識別子に基づいて判定されると、距離推定情報４０４が他のノード１００へブロードキャストされる必要がないという利点がある。
【００５１】
図４は距離推定情報４０４が用いられる際の周期的なブロードキャストであるプロトコルデータ４００（ブロードキャスト情報）を定義するプロトコルの例を示す。「ノードＩＤ」４０１はブロードキャストしているノード１００の識別子の情報に対応する。「アクティブノードＩＤ」４０２はブロードキャスト装置がアクティブであると判定したノードの識別子情報に対応する。「アクティブ要求可否」４０３はブロードキャスト装置がアクティブになるために要求しているかどうかを指し示すフラグに対応する。「距離推定」４０４はノード１００からトランザクション装置２００への推定された距離を指し示す。「ノードＩＤ」４０１、「アクティブノードＩＤ」４０２と「距離推定」４０４はプロトコルデータ４００のペイロード情報を構成する。他のありうるデータとして、２つの別々のメッシュネットワークをすぐそばにて運用可能にするためのネットワークＩＤが含まれるが、これに限定されない。
【００５２】
図５は、ｎ個のノード１００が実施形態に応じたアドホック・コネクションレス・メッシュ・ネットワークを形成する様子を示す一例である。各ノード１００の識別子は大きな太字で示され、図中左端のノード１００Ａの識別子は「１」、中央ノード１００Ｂは「２」、右端のノード１００Nは「ｎ」である。ノード１００のそれぞれは、識別子「１」を持つ左端のノード１００Ａがアクティブノードであると判定している。これは図中のノード１００のそれぞれの中の四角に囲まれた小さい「１」によって図示されている。ノード１００のそれぞれは「ノードＩＤ」４０１として自身の識別子を、「アクティブノードＩＤ」４０２として「１」を、「アクティブ要求可否」フラグ４０３として「ｎｏ」を、そしてその値を簡略化のために「・・・」として省略された「距離推定」４０４をブロードキャストしている。また、各ノードはすべての他ノードのブロードキャストを受信している。
【００５３】
前述したように、非アクティブ状態にあるノード１００のユーザーはアクティブノード１００になることを要求するために、ノード１００の操作（ノード１００が受信する入力）を行ってよい。この場合、ノード１００の以降のブロードキャストでアクティブ要求フラグ４０３がｙｅｓに設定される。図６は識別子「２」のノード１００Ｂがアクティブノード１００になるための要求を行う例を示す。
【００５４】
アクティブノード１００がアクティブ要求フラグ４０３がセットされた他のノード１００の一つからのブロードキャストを受信した際、アクティブノード１００は要求ノード１００からブロードキャストされたアクティブ要求フラグ４０３の情報を分析することで、要求ノード１００がアクティブノード１００になることを希望していることを検出できる。アクティブノード１００は、その後要求ノード１００の識別子を「アクティブノードＩＤ」４０２としてブロードキャストすることで、アクティブノード１００としてのその立場を要求ノード１００へ譲渡してもよい。
【００５５】
一部の実施形態においては、アクティブノード１００は要求ノード１００に即座にアクティブになることを許可する。その他の実施形態において、アクティブノード１００は例えば所定時間または所定回数の要求の後に要求ノード１００がアクティブになることを許可する。更に他の実施形態において、アクティブノード１００は（ノード１００のタッチパネルのＵＩ画面に対するタッチ入力のような）入力デバイス１０８上で入力操作を行うアクティブノード１００のユーザーに従って、要求ノード１００がアクティブになることを許可する。
【００５６】
図７はアクティブノード１００A（識別子「１」）が要求ノード１００Ｂ（識別子「２」）に新たにアクティブノード１００になることを許可する例を示す。なお、ノード１００Ａによるブロードキャストにおいて、識別子が「２」であるノード１００Ｂが新たなアクティブノード１００になることを許可するために、「２」が「アクティブノードＩＤ」４０２としてブロードキャストされる。
【００５７】
図８は、メッシュネットワークの状態が再度安定することを示す一例である。図７中の非アクティブノード１００（識別子「２」−「ｎ」）がアクティブノード１００A（識別子「１」）からのブロードキャストを受信した際、（例えば記憶部１０４またはＲＡＭ１０２の情報を書き換えることで）アクティブノード１００がノード「２」へ変わったことを反映するためにそのローカルの状態を更新する。また、続くブロードキャストにおいて、それらは「アクティブノードＩＤ」４０２として新たなアクティブノード１００Bの識別子「２」を送信する。同様に、アクティブであったノード１００Ａ（識別子「１」）はアクティブノード１００としてのその役割を譲渡し、「アクティブノードＩＤ」４０２として新たなアクティブノード１００Bの識別子「２」を送信する。このように、ネットワークの状態（現在のアクティブノード１００）は随時更新され、メッシュネットワークのすべてのノード１００へ速やかに伝搬される。
【００５８】
一部の場面で、ノード１００はその他のノード１００からのブロードキャストを受信した際、ネットワークの現在の状態が矛盾していると判定する場合がある。例えば、当初はトランザクション装置２００の範囲内にいるが互いの範囲内にない２つのノード１００はそれぞれが自分自身がアクティブノード１００になると判定する。しかしながら、２つのノード１００がその後互いの範囲内に移動すると、それらは互いからのブロードキャストを受信し、「アクティブノードＩＤ」４０２で両者が自身をアクティブノード１００であると主張していると判定する。このような場合、ノード１００は自身がアクティブであると主張しているノード１００は実際のアクティブノード１００であると上述の手順で（推定された距離、識別子等を用いて）再度判定してもよい。さらに、このアクティブノード１００の再判定は、以降の再判定を実行されたノードからのブロードキャストで非アクティブノード１００へ伝搬される。例えば、内部状態が再判定によって非アクティブになったノード１００がアクティブであることを示すように設定されていた非アクティブノード１００は、そのローカルに保存された「アクティブノードＩＤ」４０２情報を、非アクティブになったノードが再判定の後にブロードキャストした「アクティブノードＩＤ」４０２（つまり再判定でアクティブのままであると判定されたノードの識別子）に従って更新するであろう。このように、矛盾の訂正はネットワークを経由して速やかに伝搬する。
【００５９】
さらに、現在のアクティブノードが付近から離れるまたはその電源が突然落とされた際、アクティブノード１００がもはや周期的にブロードキャストしていないノード１００であることを指し示す情報をその他のノード１００が内部に保存するという状況が起こりうる。一部の実施形態においてそのような状況は、例えば所定時間の間に現在のアクティブノード１００からのブロードキャストが受信されなかった際にどのノード１００がアクティブノード１００かという再判定を実行することで対応可能である。
【００６０】
一部の実施形態において、複数のノード１００は上述のようにブロードキャスト能力を持たないがスキャン能力を有するデバイスを備える。これらのノード１００は「第二クラス装置」とみなされ、ブロードキャストとスキャンの能力を両方持つノード１００は「第一クラス装置」とみなされる。このような場合、第一クラス装置は上記の例で記載されたように動作する。一方、第二クラス装置はアクティブ状態になる前に第一クラス装置からのブロードキャストがないと検出するまで待機する。このような場合、第一クラス装置と第二クラス装置間の競合は回避できる。２つの第二クラス装置間の競合はその他の方法によって回避されてよい。例えば、上述したような手順によってアクティブノード１００を判定するために、第二クラス装置は互いにWiFiによって通信してもよい。
【００６１】
図９Ａ及び図９Ｂは、本発明の実施形態に係るコネクションレス・メッシュ・ネットワークを形成する複数のノード１００のそれぞれが実行する処理を示すフローチャートである。例えば、ＲＯＭ１０３に保存されたコンピュータプログラムをＲＡＭ１０２に読み出して、プログラムに応じたＲＡＭ１０２、記憶部１０４、発信器１０５、受信器１０６、出力デバイス１０７及び入力デバイス１０８を制御するＣＰＵ１０１により、ノード１００は本処理を実現する。
【００６２】
本処理は、例えば、アプリケーションに対応したアイコン上のタッチ動作等、入力デバイス１０８を使用する操作を行うことにより、ノード１００のユーザが対応アプリケーションのプログラムを起動するときに開始するものであってもよい。
【００６３】
Ｓ９０１にて、ＣＰＵ１０１は、プロトコルデータ４００中のノードＩＤ４０１、アクティブノードＩＤ４０２、アクティブ要求フラグ４０３及び距離推定情報４０４を、初期値を保存するようにＲＡＭ１０２又は記憶部１０４を制御することにより初期化する。なお、一部の実施形態では、距離推定情報４０４は存在せず、又はペイロード情報４００の情報は異なる形式のものである。ここで、ノードＩＤ４０１は、前記のとおり、所定範囲内に疑似ランダムに生成された数値に初期化されるものであってもよい。アクティブノードＩＤ４０２及びアクティブ要求フラグ４０３は、所定の初期値（例えば、アクティブノードＩＤ４０２における-１、アクティブ要求フラグ４０３におけるｎｏ等）に設定されるものであってもよい。
【００６４】
次に、ＣＰＵ１０１はＳ９０２に処理を進め、自己識別ブロードキャストがトランザクション装置２００から受信器１０６を経由して周期的なアドバタイジングブロードキャストにて受信するかどうかを判定する。アドバタイジングブロードキャストがトランザクション装置２００から受信された場合、ＣＰＵ１０１は、Ｓ９０３に処理を進める。そうでないときは、ＣＰＵ１０１はＳ９０２の処理を繰り返す。トランザクション装置２００を採用しない実施形態では、Ｓ９０２はスキップされる。
【００６５】
Ｓ９０３にて、ＣＰＵ１０１は、前記のとおり、トランザクション装置２００から受信したブロードキャストに従って距離推定情報４０４を更新する。距離推定情報４０４を採用しない実施形態では、Ｓ９０３はスキップされる。
【００６６】
次に、ＣＰＵ１０１はＳ９０４に処理を進め、通信範囲内の全ての他のノード１０１からの周期的なブロードキャストにおける各プロトコルデータ４００（ノードＩＤ４０１、アクティブノードＩＤ４０２のペイロード情報、アクティブ要求フラグ４０３及び距離推定情報４０４）を受信するように受信器１０６を制御する。なお、この受信は、それぞれ他のノード１００内で接続を確立せずに行われる。
【００６７】
次に、ＣＰＵ１０１はＳ９０５に処理を進め、アクティブノードＩＤ４０２がＳ９０１で設定された初期値のままになっているかどうか判定する。この判定の目的は、後述の初期のアクティブノード１００設定処理を行うかどうか判定するためである。
【００６８】
Ｓ９０５にて、ＣＰＵ１０１はまた、自身（本ノード１００）を含む複数のノード１００のプロトコルデータ４００の現在の状態が、他のノード１００から受信されたプロトコルデータ４００及びＳ９０１で初期化された本ノード１００のプロトコルデータ４００の現在のバージョンに基づいて矛盾しているかどうか判定する。上記のとおり、矛盾状態は、例えば、二つ以上のノード１００がそれら自身がアクティブノードＩＤ４０２内のアクティブノード１００であることを同時にブロードキャストするとき、及びアクティブノード１００が突然ブロードキャストを中止したときに対応するものであってもよい。さらに、矛盾状態は、二つ以上のノード１００がＳ９０１で自身における同一のノードＩＤ４０１を偶然生成する場合において、二つ以上のノード１００が同一のノードＩＤ４０１を持っていると判定されるときに対応するものであってもよい。
【００６９】
ＣＰＵ１０１は、プロトコルデータ４００の情報が初期値のままになっていると判定した場合、或いは状態が矛盾していると判定した場合、Ｓ９０６に処理を進める。
【００７０】
Ｓ９０６にて、ＣＰＵ１０１は、矛盾状態かどうかを再び判定する。状態が矛盾している場合、ＣＰＵ１０１は、Ｓ９０１に処理を戻す。これは、システムを自己修正するために矛盾状態を解消するプロトコルデータを再初期化するという目的を果たす。なお、このフローは簡略化して説明したが、どのように状態が矛盾しているかに応じて矛盾状態を解消する処理がなされることにより最適化を図る。例えば、その他の実施形態では、例えば、ＩＤが衝突しているノード１００のみがそれらＩＤを再初期化し、他のノード１００がその衝突を無視するものであってもよい。
【００７１】
Ｓ９０６にて、矛盾状態ではないとＣＰＵ１０１が判定した場合、Ｓ９０７に処理を進める。Ｓ９０７にて、ＣＰＵ１０１は、他のノード１００のいずれかが現在アクティブであるかどうかを判定する。Ｓ９０４で各プロトコルデータを解析し、ブロードキャストで他のノード１００から受信する各ノードＩＤ４０１において初期値ではない（例えば、正、非ゼロ値）が設定されているかどうかを確認することにより、これを行うものであってもよい。なお、状態はＳ９０６にて矛盾していないと判定されたため、アクティブノード１００となっている他のノード１００が一台のみになる。
【００７２】
Ｓ９０７にて他のノード１００がアクティブであるとＣＰＵ１０１が判定した場合、ＣＰＵ１０１はＳ９０８に処理を進め、例えば、Ｓ９０４にてアクティブなノードであるノード１００から受信したノードＩＤ４０１の値に、アクティブノードＩＤ４０２の自身の現在のバージョンを記憶するメモリを更新するようにＲＡＭ１０２又は記憶部１０４を制御する。
【００７３】
次に、ＣＰＵ１０１はＳ９０９に処理を進め、ＲＡＭ１０２または記憶部１０４に保存されているプロトコルデータ４００の随時更新される現在のバージョンを、例えば、他のノード１００へ所定周波数でブロードキャストするように送信器１０５を制御する。先に述べたとおり、例えば、ＢＬＥのブロードキャスト役割において、及びｉＢｅａｃｏｎに従ってこのブロードキャストは行われてよい。Ｓ９０９のブロードキャストを行った後、ＣＰＵ１０１はＳ９０２に処理を進め、処理を繰り返す。
【００７４】
Ｓ９０７にてアクティブである他のノード１００はないとＣＰＵ１０１が判定した場合、Ｓ９１０に処理を進め、初期アクティブノード設定処理を行う。初期アクティブノード設定処理は、前述したように、各距離推定情報４０４に従ってトランザクション装置２００に最も近いと推定された複数のノード１００のうちのノード１００を、アクティブノード１００として、判定することを含むものであってもよい。なお、初期アクティブノード設定処理は、ノード１００の各ノードＩＤ４０１に従ってアクティブノード１００を判定することを含むものであってもよい。例えば、ノード１００のうち、ノードＩＤ４０１が最小（又は最大）であるノード１００は、アクティブノード１００であると定めてもよい。ＣＰＵ１０１は、例えば、ノードＩＤ４０１へ現在値を保存するメモリを更新するようにＲＡＭ１０２又はメモリ１０４を制御する。続いて、ＣＰＵ１０１はＳ９０９に処理を進める。
【００７５】
Ｓ９０５に戻り、ＣＰＵ１０１は、プロトコルデータ４００の情報が初期値のままになっていないと判定し、且つ矛盾状態ではないと判定した場合、Ｓ９１１に処理を進める。
【００７６】
Ｓ９１１にて、ＣＰＵ１０１は、本ノード１００が現在のアクティブノード１００であるかどうかを判定する。つまり、ＣＰＵ１０１は、ＲＡＭ１０２または記憶部１０４に保存された自身の現在バージョンのプロトコルデータ４００においてアクティブノードＩＤ４０２を読み込み、Ｓ９０１にて初期化された自身のノードＩＤ４０１と同じであるかどうかを判定する。
【００７７】
ＣＰＵ１０１は、ノード１００が現在のアクティブノード１００であることを判定し、Ｓ９１２に処理を進める。そして、ＣＰＵ１０１は、他のノード１００の一つがアクティブノード１００になることを要求したか否かを判定する。ＣＰＵ１０１は、Ｓ９０４にて他のノード１００のそれぞれから受信したプロトコルデータ４００内のアクティブ要求フラグ４０３を読み込むことにより、この判定を行う。
【００７８】
ＣＰＵ１０１が他のノード１００がアクティブノード１００になることを要求したと判定した場合、Ｓ９１３に処理を進める。そうでないときはＳ９０９に処理を進める。Ｓ９１３にてＣＰＵ１０１は、アクティブノード１００の立場を、アクティブノード１００になることを要求するノード１００へ譲渡するための条件が満たされているかを判定する。前述したように、これらの条件は、ノード１００がアクティブになることを所定回数要求したと判定されたこと、アクティブになることを要求するノード１００の要求から所定時間が経過したこと、アクティブノード１００がアクティブノードとしての立場を譲渡するように指示するためのノード１００のユーザの入力操作が入力デバイス１０８を介して受信されたこと、などを含むものであってもよい。なお、複数の他のノード１００がアクティブノード１００となることを同時に要求している場合、Ｓ９１３の処理は、その一つがアクティブノード１００に決められる、又は全てが譲渡する条件を満たしていないと判定されるまで、これらノード１００に対して一つずつ行ってもよい。
【００７９】
ＣＰＵ１０１が、アクティブノード１００の立場を譲渡するための条件が満たされていると判定した場合、Ｓ９１４に処理を進め、自装置のプロトコルデータ４００にて要求ノード１００の識別子をアクティブノードＩＤ４０２として設定する。続いて、ＣＰＵ１０１はＳ９０９に処理を進める。
【００８０】
Ｓ９１３にて、アクティブノード１００になることを要求している他のノード１００のいずれも、ＣＰＵ１０１がアクティブノード１００の立場を譲渡するための条件を満たしていないと判定した場合、Ｓ９０９に直接処理を進め、自身の現在のアクティブノードＩＤ４０２をそのまま残存させる。
【００８１】
Ｓ９１１に戻り、ノード１００が現在のアクティブノード１００でないとＣＰＵ１０１が判定した場合、Ｓ９１５に処理を進める。Ｓ９１５にて、ＣＰＵ１０１は、他のノード１００から受信した前回の周期的ブロードキャスト時から、現在のアクティブノード１００が変わったかどうかを判定する。それまでアクティブノードだった他のノード１００から受信されたプロトコルデータ４００内のアクティブノードＩＤ４０２を読み込むこと、及びＳ９０４にてその他のノード１００から受信されたノードＩＤ４０１及びアクティブノードＩＤ４０２が同一であるかどうか判定することにより、この処理を行う。これらが同一でない場合、それはアクティブノード１００がアクティブノード１００としての立場を譲渡したことを意味する。
【００８２】
Ｓ９１５にて、それまでのアクティブノード１００がアクティブノード１００としての立場を譲渡したとＣＰＵ１０１が判定した場合、ＣＰＵ１０１はＳ９１６に処理を進める。そうでないときはＳ９１９に処理を進める。Ｓ９１６にて、ＣＰＵ１０１は、ＲＡＭ１０２又はストレージメモリ１０４に保存されたノードＩＤ４０１の現在のバージョンを新しいアクティブノード１００（すなわち、Ｓ９０４にて受信された、それまでのアクティブノード１００がブロードキャストしたアクティブノードＩＤ４０２中の識別子を持つノード１００）に更新する。続いて、ＣＰＵ１０１はＳ９１７に処理を進める。
【００８３】
Ｓ９１７にて、ＣＰＵ１０１は、自ノード１００がアクティブノード１００になったかどうかを判定する。Ｓ９１６にて設定したＩＤがＳ９０１にて初期化されたノード１００のＩＤと同一であるかどうかを判定することにより、この処理を行う。ノード１００がアクティブノード１００となった場合、ＣＰＵ１０１はＳ９１８に処理を進める。そうでないときはＳ９１９に処理を進める。
【００８４】
Ｓ９１８にて、ＣＰＵはアクティブ要求フラグ４０３の現在のバージョンを再設定する。続いて、ＣＰＵ１０１はＳ９０９に処理を進める。
【００８５】
Ｓ９１９にて、ＣＰＵ１０１は、アクティブになることの要求が入力デバイス１０８を通してノード１００のユーザから受信されたかどうかを判定する。先述のように、このような入力は、例えばこのフローチャートの処理を開始したプログラムのアプリケーションに表示されるボタン上のタッチ操作と対応するものであってもよい。
【００８６】
ＣＰＵ１０１が、アクティブになることの要求を受信したと判定した場合、Ｓ９２０に処理を進める。そうでないときはＳ９０９に処理を進める。Ｓ９２０にて、ＣＰＵ１０１は、プロトコルデータ４００にてアクティブ要求フラグ４０３の現在のバージョンをｙｅｓに更新し、それからＳ９０９に処理を進める。
【００８７】
なお、ＣＰＵ１０１は、ノード１００がアクティブノードとなったと判定したことに併せてアクティブ化動作（例えば、Ｓ９１０又はＳ９１６にて）をノード１００に行わせるよう制御するようにしてもよい。同様に、ＣＰＵ１０１は、他のノード１００がアクティブノードとなったと判定したことに併せて非アクティブ化動作（例えば、Ｓ９１０、Ｓ９１４又はＳ９１６にて）をノード１００に行わせるよう制御するようにしてもよい。例えば、アクティブ化動作は、出力デバイス１０７を制御することによって、ユーザに本ノード１００がアクティブになったことを通知することと対応するようにしてもよい。そして、非アクティブ化動作は、同様にノード１００がアクティブでなくなったことを通知するようにしてもよい。このような通知は、ノード１００がアクティブノード１００となった／なくなったことをユーザに示してもよい。上記で挙げた例において、この通知はユーザにノード１００がトランザクション装置２００から報酬情報通信を受信する準備が整っているかどうかを示し、そこでユーザが販売機から購入するタイミングをこの通知を利用して合せることができる。
【００８８】
こうして、図９（Ａ）及び図９（Ｂ）の処理により、ノード１００は、自身のプロトコルデータ４００のデータペイロードである、ノード１００を識別する識別子であるノードＩＤ４０１（Ｓ９０１）、アクティブノードＩＤ４０２（Ｓ９０８、Ｓ９１０、Ｓ９１４、Ｓ９１６）、アクティブ要求フラグ４０３（Ｓ９１８、Ｓ９２０）及び距離推定情報４０４（Ｓ９０３）を更新する。Ｓ９０９にて、ノードは、ブロードキャスト情報（プロトコルデータ４００）として、ノードＩＤ４０１とともにこの随時更新されるペイロード情報を他の全てのノード１００に周期的にブロードキャストする。さらに、ノード１００は、Ｓ９０４にて、他のブロードキャスト情報（他のノード１００のプロトコルデータ）を周期的に受信する。この他のブロードキャスト情報は、一つ以上の他のノード１００のそれぞれからブロードキャストされるブロードキャスト情報（対応する処理により各ノード１００により随時更新されるノードＩＤ４０１、アクティブノードＩＤ４０２、アクティブ要求フラグ４０３及び距離推定情報４０４）である。本処理によれば、互いに接続を確立する必要なく、複数のノード１００が、そのうちの一つが現在のアクティブノード１００であるということを互いに通信するメッシュネットワークを速やかに形成することが可能となる。
【００８９】
本発明は上述の例に限られず、これ以外のアプリケーシヨン（例えば、鬼ごっこ、旗取り、ホットポテト、又はじゃんけんのようなゲーム）にも適宜適用させてもよい。
【００９０】
本発明によれば、少量のデータが全ての近接ノード１００に無線により伝搬されるメッシュネットワークにおいて、パフォーマンスを向上させ、複雑さを低減させることが可能である。これは、例えば、接続オーバーヘッド、多重接続管理の低減の方が安全性や信頼性より高く重視されている場合には有益であり得る。
【図１】
0006736126.tif 000002
【図２】
0006736126.tif 000003
【図３】
0006736126.tif 000004
【図４】
0006736126.tif 000005
【図５】
0006736126.tif 000006
【図６】
0006736126.tif 000007
【図７】
0006736126.tif 000008
【図８】
0006736126.tif 000009
【図９Ａ】
0006736126.tif 000010
【図９Ｂ】
0006736126.tif 000011