(57)【特許請求の範囲】
【請求項１】
情報処理装置であって、
ネットワーク上の中継サーバを介した方式、または、前記中継サーバを介さないピアツーピア方式により、前記ネットワーク上の他の情報処理装置と通信可能な通信部と、
当該情報処理装置の通信環境を検出し、当該通信環境に応じて、可能な限り前記ピアツーピアにより通信するように、前記他の情報処理装置との通信方式を決定可能な制御部と
を具備し、
前記通信部は、
第１の帯域及び第１の利用可能範囲を有する第１のネットワークに接続可能な第１のネットワークインタフェースと、
第２の帯域及び第２の利用可能範囲を有する第２のネットワークに接続可能な第２のネットワークインタフェースとを有し、
前記制御部は、前記中継サーバを介した前記他の情報処理装置との通信には前記第１のネットワークインタフェースを用い、前記ピアツーピアによる前記他の情報処理装置との通信には可能な限り前記第２のネットワークインタフェースを用いるように前記通信部を制御する
情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記制御部は、当該情報処理装置の移動に伴う通信環境の変化を検出し、当該通信環境の変化に応じて前記通信方式を決定する
情報処理装置。
【請求項３】
請求項１に記載の情報処理装置であって、
前記制御部は、当該情報処理装置及び前記他の情報処理装置と前記ネットワークとの間における通信中継装置の設置の有無または当該通信中継装置のタイプを判定し、当該設置の有無またはタイプに応じて、前記ピアツーピアによる通信を当該情報処理装置から開始するか、前記他の情報処理装置から開始するかを決定する
情報処理装置。
【請求項４】
請求項２に記載の情報処理装置であって、
前記制御部は、前記通信部の状態の変化、前記通信部における受信信号レベルの変化、及び、前記通信部が用いるＩＰアドレスの変化のうち少なくとも１つを基に、前記通信環境の変化を検出する
情報処理装置。
【請求項５】
請求項１に記載の情報処理装置であって、
記憶部をさらに具備し、
前記通信部は、前記通信環境を判定可能な前記ネットワーク上の判定サーバと通信可能であり、
前記制御部は、
前記判定された通信環境を示す通信環境判定情報を受信するように前記通信部を制御し、
前記受信された通信環境判定情報を記憶するように前記記憶部を制御し、
前記記憶された通信環境判定情報に基づいて前記通信方式を決定する
情報処理装置。
【請求項６】
請求項１に記載の情報処理装置であって、
前記第２の帯域は前記第１の帯域よりも広く、
前記第２の利用可能範囲は前記第１の利用可能範囲よりも狭い
情報処理装置。
【請求項７】
請求項５に記載の情報処理装置であって、
記憶部をさらに具備し、
前記制御部は、
前記第１のネットワークインタフェースを用いて当該情報処理装置の位置を示す位置情報を受信するように前記通信部を制御し、
前記通信環境判定情報と前記受信された位置情報とを関連付けて記憶するように前記記憶部を制御し、
前記受信された位置情報と、前記記憶された位置情報及び通信環境判定情報とに基づいて、前記ピアツーピアによる通信が可能と判断されるネットワークインタフェースを有効にし、前記ピアツーピアによる通信が不可能と判断されるネットワークインタフェースを無効にする
情報処理装置。
【請求項８】
請求項１に記載の情報処理装置であって、
前記通信部は、前記通信方式が変更された場合でも、当該情報処理装置が有するアプリケーション上は同一の手順で通信を継続可能な論理通信部を有する
情報処理装置。
【請求項９】
情報処理装置における情報処理方法であって、
当該情報処理装置の通信環境を検出し、
他の情報処理装置と、ネットワーク上の中継サーバを介して通信する方式と、前記中継サーバを介さずにピアツーピアにより通信する方式のうち、可能な限り前記ピアツーピアにより通信する方式を選択するように、前記通信環境に応じて前記他の情報処理装置との通信方式を決定する
情報処理方法であって、
前記情報処理装置の通信部は、
第１の帯域及び第１の利用可能範囲を有する第１のネットワークに接続可能な第１のネットワークインタフェースと、
第２の帯域及び第２の利用可能範囲を有する第２のネットワークに接続可能な第２のネットワークインタフェースとを有し、
当該情報処理方法は、前記中継サーバを介した前記他の情報処理装置との通信には前記第１のネットワークインタフェースを用い、前記ピアツーピアによる前記他の情報処理装置との通信には可能な限り前記第２のネットワークインタフェースを用いるように前記通信部を制御する
情報処理方法。
【請求項１０】
情報処理装置に、
当該情報処理装置の通信環境を検出するステップと、
他の情報処理装置と、ネットワーク上の中継サーバを介して通信する方式と、前記中継サーバを介さずにピアツーピアにより通信する方式のうち、可能な限り前記ピアツーピアにより通信する方式を選択するように、前記通信環境に応じて前記他の情報処理装置との通信方式を決定するステップと
を実行させるプログラムであって、
前記情報処理装置の通信部は、
第１の帯域及び第１の利用可能範囲を有する第１のネットワークに接続可能な第１のネットワークインタフェースと、
第２の帯域及び第２の利用可能範囲を有する第２のネットワークに接続可能な第２のネットワークインタフェースとを有し、
当該プログラムは、前記中継サーバを介した前記他の情報処理装置との通信には前記第１のネットワークインタフェースを用い、前記ピアツーピアによる前記他の情報処理装置との通信には可能な限り前記第２のネットワークインタフェースを用いるように前記通信部を制御するステップをさらに実行させる
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、他の情報処理装置と通信可能な情報処理装置、当該情報処理装置における情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来から、多数のデバイス間で通信を行うアーキテクチャとして、ピアツーピア（peer to peer：Ｐ２Ｐ）がある。Ｐ２Ｐ方式の通信は、クライアント‐サーバ方式の通信に比べて、ネットワークに接続するデバイスの数が膨大になっても、サーバへのアクセス集中が少ないという特徴があるため、近年、商用的にも注目を集めている。【０００３】
一般にＰ２Ｐ通信においては、デバイス間に介在する各種ルータ（ＮＡＴ（Network Address Translation）ルータ）の挙動が異なるために、ＳＴＵＮ（Simple Traversal of UDP through ＮＡＴs）サーバ等を用いてＮＡＴの種別を判定し、実際のＰ２Ｐ通信方式を決定するという処理が行われる（例えば、特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２５２２６１号公報
【特許文献２】特開２０１１−１８８３５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このＮＡＴの種別を判定する処理は、比較的長い時間を必要としてしまう（４０秒程度かかることがあるといわれている）。また、Ｐ２Ｐ通信が多数のデバイスを対象としており、かつ、当該デバイスがモバイルデバイスである場合には、デバイスの移動の度に上記判定処理が繰り返されることになり、サーバ側に負荷がかかりすぎてしまうという問題がある。【０００６】
また、近年のＩＰｖ４の枯渇により、キャリアグレードＮＡＴ（ラージスケールＮＡＴ）が注目されている。キャリアグレードＮＡＴとは、ＩＳＰ（Internet Service Provider）等の電気通信事業者が、自社内のネットワークでプライベートアドレスを用いて、他社のネットワークとの接続部でネットワークアドレス変換（ＮＡＴ）を行うことをいう。このキャリアグレードＮＡＴの導入が進むと、サーバを経由したＰ２Ｐ通信方式の判定処理を必要とする環境が増加することが予想されるため、上記の問題はさらに深刻になることが予想される。【０００７】
以上のような事情に鑑み、本技術の目的は、通信環境に応じて、Ｐ２Ｐを含めた最適な通信を実現することが可能な情報処理装置、情報処理方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上述の課題を解決するため、本技術の一形態に係る情報処理装置は、通信部と制御部とを有する。上記通信部は、ネットワーク上の中継サーバを介した方式、または、上記中継サーバを介さないピアツーピア方式により、上記ネットワーク上の他の情報処理装置と通信可能である。上記制御部は、当該情報処理装置の通信環境を検出し、当該通信環境に応じて、可能な限り上記ピアツーピアにより通信するように、上記他の情報処理装置との通信方式を決定可能である。【０００９】
上記制御部は、当該情報処理装置の移動に伴う通信環境の変化を検出し、当該通信環境の変化に応じて上記通信方式を決定してもよい。【００１０】
この構成により情報処理装置は、情報処理装置の移動に伴う通信環境の変化に応じて、Ｐ２Ｐを含めた最適な通信を実現することができる。【００１１】
上記制御部は、当該情報処理装置及び上記他の情報処理装置と上記ネットワークとの間における通信中継装置の設置の有無または当該通信中継装置のタイプを判定し、当該設置の有無またはタイプに応じて、上記ピアツーピアによる通信を当該情報処理装置から開始するか、上記他の情報処理装置から開始するかを決定してもよい。【００１２】
これにより情報処理装置は、ＮＡＴルータ、プロキシサーバ、ファイアーウォール等の通信中継装置が、当該情報処理装置側と他の情報処理装置側のどちらに設置されているか、及びそのタイプに応じて、より接続しやすい方からＰ２Ｐ通信を開始することができる。【００１３】
上記制御部は、上記通信部の状態の変化、上記通信部における受信信号レベルの変化、及び、上記通信部が用いるＩＰアドレスの変化のうち少なくとも１つを基に、上記通信環境の変化を検出してもよい。【００１４】
これにより情報処理装置は、これら３つの変化のうち少なくとも１つを検出することで、通信環境の変化を検出することができる。【００１５】
上記情報処理装置は、記憶部をさらに有してもよい。この場合上記通信部は、上記通信環境を判定可能な上記ネットワーク上の判定サーバと通信可能であってもよい。この場合上記制御部は、上記判定された通信環境を示す通信環境判定情報を受信するように上記通信部を制御し、上記受信された通信環境判定情報を記憶するように上記記憶部を制御し、上記記憶された通信環境判定情報に基づいて上記通信方式を決定してもよい。【００１６】
これにより情報処理装置は、一度判定サーバから通信環境判定情報を取得して記憶した場合には、通信環境の変化がない限り、再度判定サーバから通信環境判定情報を取得する必要がなくなるため、判定サーバの負荷を極力低減することができる。【００１７】
上記通信部は、第１のネットワークインタフェースと第２のネットワークインタフェースを有していてもよい。上記第１のネットワークインタフェースは、第１の帯域及び第１の利用可能範囲を有する第１のネットワークに接続可能であり、上記第２のネットワークインタフェースは、第２の帯域及び第２の利用可能範囲を有する第２のネットワークに接続可能である。この場合上記制御部は、上記中継サーバを介した上記他の情報処理装置との通信には上記第１のネットワークインタフェースを用い、上記ピアツーピアによる上記他の情報処理装置との通信には可能な限り上記第２のネットワークインタフェースを用いるように上記通信部を制御してもよい。【００１８】
これにより情報処理装置は、帯域及び利用可能範囲の異なるネットワークの特性に応じて、サーバ経由の通信とＰ２Ｐによる通信とを使い分けることができる。【００１９】
上記第２の帯域は上記第１の帯域よりも広く、上記第２の利用可能範囲は上記第１の利用可能範囲よりも狭くてもよい。【００２０】
ここで第１のネットワークインタフェースは例えば３Ｇのインタフェースであり、第２のネットワークインタフェースは無線ＬＡＮ（ＷｉＦｉ）のインタフェースであるが、この例に限られない。【００２１】
上記制御部は、上記第１のネットワークインタフェースを用いて当該情報処理装置の位置を示す位置情報を受信するように上記通信部を制御し、上記通信環境判定情報と上記受信された位置情報とを関連付けて記憶するように上記記憶部を制御してもよい。またこの場合制御部は、上記受信された位置情報と、上記記憶された位置情報及び通信環境判定情報とに基づいて、上記ピアツーピアによる通信が可能と判断されるネットワークインタフェースを有効にし、上記ピアツーピアによる通信が不可能と判断されるネットワークインタフェースを無効にしてもよい。【００２２】
これにより情報処理装置は、ピアツーピア通信が不可能と判断されるネットワークインタフェースを無効（その電源をオフ）にすることで、消費電力を抑えながらピアツーピア通信を行うことができる。【００２３】
上記通信部は、上記通信方式が変更された場合でも、当該情報処理装置が有するアプリケーション上は同一の手順で通信を継続可能な論理通信部を有してもよい。【００２４】
これにより情報処理装置は、アプリケーション上は、ユーザに意識させることなく、中継サーバ経由の通信とＰ２Ｐ通信とを切り替えることができる。【００２５】
本技術の他の形態に係る情報処理方法は、情報処理装置における情報処理方法であって、
当該情報処理装置の移動に伴う通信環境の変化を検出することを含む。そして本方法では、他の情報処理装置と、ネットワーク上の中継サーバを介して通信する方式と、上記中継サーバを介さずにピアツーピアにより通信する方式のうち、可能な限り上記ピアツーピアにより通信する方式が選択されるように、上記通信環境の変化に応じて上記他の情報処理装置との通信方式が決定される。【００２６】
本技術のまた別の形態に係るプログラムは、情報処理装置に、検出ステップと、決定ステップとを実行させる。上記検出ステップでは、当該情報処理装置の移動に伴う通信環境の変化が検出される。上記決定ステップでは、他の情報処理装置と、ネットワーク上の中継サーバを介して通信する方式と、上記中継サーバを介さずにピアツーピアにより通信する方式のうち、可能な限り上記ピアツーピアにより通信する方式が選択されるように、上記通信環境の変化に応じて上記他の情報処理装置との通信方式が決定される。【００２７】
本技術のさらに別の形態に係る情報処理装置は、通信部と管理部とを有する。上記通信部は、ネットワーク上の中継サーバを介した方式、または、上記中継サーバを介さないピアツーピア方式により通信可能な上記ネットワーク上の第１の通信装置および第２の通信装置と通信可能である。上記管理部は、上記第１または第２の通信装置の通信環境を判定した判定情報であって、当該第１または第２の通信装置のうち一方の通信装置が、その通信環境に応じて可能な限り他方の通信装置と上記ピアツーピアにより通信するために利用可能な判定情報を管理する。
【発明の効果】
【００２８】
以上のように、本技術によれば、通信環境に応じて、Ｐ２Ｐを含めた最適な通信を実現することができる。
【図面の簡単な説明】
【００２９】
【図１】本技術の第１の実施形態におけるシステムのネットワーク構成を示した図である。
【図２】上記システムにおけるメッセージングサーバのハードウェア構成を示したブロック図である。
【図３】上記システムにおけるデバイスのハードウェア構成を示したブロック図である。
【図４】上記システムにおけるメッセージングサーバのソフトウェアモジュール構成を示したブロック図である。
【図５】上記システムにおけるＰ２Ｐ通信テストサーバのソフトウェアモジュール構成を示したブロック図である。
【図６】上記システムにおけるデバイスのソフトウェアモジュール構成を示したブロック図である。
【図７】ＳＴＵＮによるＮＡＴタイプの判定に用いられるＮＡＴの分類対応表を示した図である。
【図８】デバイスにおける通信環境判定処理の流れを示したフローチャートである。
【図９】Ｐ２Ｐ通信テストサーバにおける通信環境判定処理の流れを示したフローチャートである。
【図１０】デバイスによる通信環境特定処理の流れを示したフローチャートである。
【図１１】デバイスによる通信方式決定処理の流れを示したフローチャートである。
【図１２】ＮＡＴタイプに応じたＰ２Ｐ通信の可否を示した表である。
【図１３】接続要求元のデバイスにおけるＰ２Ｐ通信接続処理の流れを示したフローチャートである。
【図１４】接続要求先のデバイスにおけるＰ２Ｐ通信接続処理の流れを示したフローチャートである。
【図１５】Ｐ２Ｐ通信テストサーバにおけるＰ２Ｐ通信接続処理の流れを示したフローチャートである。
【図１６】メッセージングサーバによるデバイス間のメッセージの転送処理の流れを示したフローチャートである。
【図１７】デバイスの移動に伴うデバイス間のＰ２Ｐ通信方式の変化の例を示した図である。
【図１８】本技術の第２の実施形態におけるシステムのネットワーク構成を示した図である。
【図１９】上記システムにおけるデバイスのソフトウェアモジュール構成を示したブロック図である。
【図２０】デバイスにおけるＰ２Ｐ通信可能性に応じたネットワークインタフェース制御処理の流れを示したフローチャートである。
【図２１】Ｐ２Ｐ通信テストサーバにおけるネットワークインタフェース制御処理に関連した通信環境判定処理の流れを示したフローチャートである。
【図２２】デバイスの移動に伴うデバイス間のＰ２Ｐ通信方式の変化の例を示した図である。
【発明を実施するための形態】
【００３０】
以下、本技術に係る実施形態を、図面を参照しながら説明する。
【００３１】
＜第１の実施形態＞
まず、本技術の第１の実施形態を説明する。
【００３２】
［システムのネットワーク構成］
図１は、本実施形態に係るシステムのネットワーク構成を示した図である。
【００３３】
同図に示すように、このシステムは、クラウド上のメッセージングサーバ１００及びＰ２Ｐ通信テストサーバ２００と、それらの各サーバとＷＡＮ（Wide Area Network）５０を介して接続可能な複数のデバイス３００とを有する。
【００３４】
メッセージングサーバ１００は、各デバイス３００間の通信（メッセージ）を中継するサーバである。
【００３５】
デバイス３００は、例えばスマートフォン、携帯電話機、タブレットＰＣ（Personal Computer）、デスクトップＰＣ、ノートブックＰＣ、ＰＤＡ（Personal Digital Assistant）、携帯型ＡＶプレイヤー、電子ブック、デジタルスチルカメラ、カムコーダ、テレビジョン装置、ＰＶＲ（Personal Video Recorder）、ゲーム機器、プロジェクター、カーナビゲーションシステム、デジタルフォトフレーム、ＨＤＤ（Hard Disk Drive）装置、ヘルスケア機器、家庭用電気製品等、あらゆる情報処理装置であり得る。同図では、デバイス３００Ａとデバイス３００Ｂの２台のみが示されているが、デバイス３００の数は３台以上であっても構わない。
【００３６】
各デバイス３００は、メッセージングサーバ１００と常時接続により通信可能であり、当該メッセージングサーバ１００を介して他のデバイス３００と通信可能である。また各デバイス３００は、可能な場合はデバイス３００間で直接Ｐ２Ｐ通信を行うことも可能である。
【００３７】
各デバイス３００は、上記メッセージングサーバ１００、Ｐ２Ｐ通信テストサーバ２００及び他のデバイス３００と、通信中継装置３５０を介して通信する場合もあるし、通信中継装置３５０を介さずに直接通信する場合もある。
【００３８】
デバイス３００が例えばデスクトップＰＣのような据置型の機器である場合、通信中継装置３５０は、例えばＮＡＴルータやプロキシサーバまたはファイアーウォール等であり得る。つまりこの場合の通信中継装置３５０は、内側（デバイス３００側）のネットワークと外部（クラウド側）のネットワークとの間の通信を中継する機能を持ち、両ネットワークにおいて利用されるアドレスの相違や、セキュリティを保護する機構のために、外部のサーバが、特別な手段を用いない限り、内部の特定のデバイスを指定して接続することを不可能にしているものである。
【００３９】
デバイス３００が例えばスマートフォンのようなモバイル機器である場合、通信中継装置３５０は、無線ＬＡＮ用のアクセスポイントであり得る。
【００４０】
Ｐ２Ｐ通信テストサーバ２００は、各デバイス３００と通信可能である。このＰ２Ｐ通信テストサーバ２００は、各デバイス３００がメッセージングサーバ１００と通信するのに先立って、各デバイス３００からの要求に応じてＮＡＴタイプ等の通信環境を判定し、判定情報を各デバイス３００へ返信する。またＰ２Ｐ通信テストサーバ２００は、デバイス３００間のＰ２Ｐ通信時に、各デバイス３００がＷＡＮ側のＩＰアドレス及びポート番号を取得するための補助処理を行う。
【００４１】
［メッセージングサーバのハードウェア構成］
図２は、上記メッセージングサーバ１００のハードウェア構成を示した図である。同図に示すように、メッセージングサーバ１００は、ＣＰＵ（Central Processing Unit）１１、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３、入出力インタフェース１５、及び、これらを互いに接続するバス１４を備える。
【００４２】
ＣＰＵ１１は、必要に応じてＲＡＭ１３等に適宜アクセスし、各種演算処理を行いながらメッセージングサーバ１００の各ブロック全体を統括的に制御する。ＲＯＭ１２は、ＣＰＵ１１に実行させるＯＳ、プログラムや各種パラメータなどのファームウェアが固定的に記憶されている不揮発性のメモリである。ＲＡＭ１３は、ＣＰＵ１１の作業用領域等として用いられ、ＯＳ、実行中の各種アプリケーション、処理中の各種データを一時的に保持する。
【００４３】
入出力インタフェース１５には、表示部１６、操作受付部１７、記憶部１８、通信部１９等が接続される。
【００４４】
表示部１６は、例えばＬＣＤ（Liquid Crystal Display）、ＯＥＬＤ（Organic ElectroLuminescence Display）、ＣＲＴ（Cathode Ray Tube）等を用いた表示デバイスである。
【００４５】
操作受付部１７は、例えばマウス等のポインティングデバイス、キーボード、タッチパネル、その他の入力装置である。操作受付部１７がタッチパネルである場合、そのタッチパネルは表示部１６と一体となり得る。
【００４６】
記憶部１８は、例えばＨＤＤ（Hard Disk Drive）や、フラッシュメモリ（ＳＳＤ；Solid State Drive）、その他の固体メモリ等の不揮発性メモリである。当該記憶部１８には、上記ＯＳや各種アプリケーション、各種データが記憶される。特に本実施形態において、記憶部１８には、後述する複数のソフトウェアモジュール等のプログラムが記憶される。
【００４７】
通信部１９は、ＷＡＮ５０に接続するためのＮＩＣ等であり、デバイス３００との間の通信処理を担う。
【００４８】
［Ｐ２Ｐ通信テストサーバのハードウェア構成］
上記Ｐ２Ｐ通信テストサーバ２００のハードウェア構成も、上記メッセージングサーバ１００のハードウェア構成と同様であるため、詳細な説明を省略する。
【００４９】
本実施形態では、Ｐ２Ｐ通信テストサーバ２００において、上記メッセージングサーバ１００のＣＰＵ１１、記憶部１８、通信部１９と対応するハードウェアをそれぞれＣＰＵ２１、記憶部２８、通信部２９と称する。記憶部２８には、後述するソフトウェアモジュールや、各デバイス３００の通信環境判定結果情報等のデータベースが記憶される。
【００５０】
［デバイスのハードウェア構成］
図３は、上記デバイス３００のハードウェア構成を示した図である。同図に示すように、デバイス３００のハードウェア構成も、上記メッセージングサーバ１００のハードウェア構成と基本的に同様である。
【００５１】
すなわち、デバイス３００は、ＣＰＵ３１、ＲＯＭ３２、ＲＡＭ３３、入出力インタフェース３５、及び、これらを互いに接続するバス３４、表示部３６、操作受付部３７、記憶部３８、通信部３９を備える。ここで表示部３６は、デバイス３００に内蔵されていてもよいし、デバイス３００に外部接続されていてもよい。
【００５２】
ＣＰＵ３１は、記憶部３８や通信部３９等の各ブロックを制御して、メッセージングサーバ１００やＰ２Ｐ通信テストサーバ２００との通信処理や、各種データ処理を実行する。
【００５３】
記憶部３８には、後述する複数のソフトウェアモジュール等のプログラムや、通信環境判定結果情報等の各種データベースが記憶される。上記プログラムは、デバイス３００に、ＷＡＮ５０を介して提供されてもよいし、デバイス３００で読み取り可能な記録媒体として提供されてもよい。
【００５４】
デバイス３００がスマートフォン等のモバイル機器の場合、通信部３９は、３Ｇや無線ＬＡＮ等の無線通信用のモジュールであり得る。
【００５５】
デバイス３００が、例えばデジタルフォトフレームやヘルスケア機器（例えば体温計、体重計、血圧計、脈拍計等）である場合、操作受付部３７は、ボタンやスイッチのみで構成され、キーボードやタッチパネルのような文字入力機能を有さない場合もある。
【００５６】
［メッセージングサーバのモジュール構成］
図４は、上記メッセージングサーバ１００が有するソフトウェアモジュールの構成を示した図である。同図に示すように、メッセージングサーバ１００は、接続管理部１０１、メッセージ受信部１０２、メッセージ転送処理部１０３及びメッセージ送信部１０４の各ソフトウェアモジュールを有する。
【００５７】
接続管理部１０１は、デバイス３００からの接続要求を受け、デバイス３００と接続を確立し、当該接続を管理する。
【００５８】
メッセージ受信部１０２は、デバイス３００から送信されたメッセージを、接続管理部１０１を介して受信する。
【００５９】
メッセージ転送処理部１０３は、デバイス３００から受信したメッセージを、当該メッセージの宛先に指定された他のデバイス３００へ転送するために、メッセージ送信部１０４へ引き渡す。
【００６０】
メッセージ送信部１０４は、メッセージ転送処理部１０３から受け取ったメッセージを、接続管理部１０１を介して宛先のデバイス３００へ送信する。
【００６１】
［Ｐ２Ｐ通信テストサーバのモジュール構成］
図５は、上記Ｐ２Ｐ通信テストサーバ２００が有するソフトウェアモジュールの構成を示した図である。同図に示すように、Ｐ２Ｐ通信テストサーバ２００は、接続管理部２０１、アドレス情報取得サーバ部２０２、通信環境判定サーバ部２０３及び通信環境判定結果管理部２０４の各ソフトウェアモジュールを有する。
【００６２】
接続管理部２０１は、デバイス３００からの接続要求を受け、デバイス３００と接続を確立し、当該接続を管理する。
【００６３】
アドレス情報取得サーバ部２０２は、デバイス３００がＰ２Ｐ通信時にＷＡＮ側のＩＰアドレス及びポート番号を取得するための補助を行う。
【００６４】
通信環境判定サーバ部２０３は、デバイス３００の属する通信環境を判定する。具体的には、通信環境判定サーバ部２０３は、ＳＴＵＮによるＮＡＴタイプ判定等の処理を実行する。
【００６５】
通信環境判定結果管理部２０４は、デバイス３００から送られた通信環境特定情報をキーとして、通信環境判定結果情報をデータベース２１４上で管理する。
【００６６】
［デバイスのモジュール構成］
図６は、上記デバイス３００が有するソフトウェアモジュールの構成を示した図である。同図に示すように、デバイス３００は、アプリケーション処理部３０１、論理通信部３０２、ルーティング部３０３、サーバ通信部３０４、Ｐ２Ｐ通信部３０５、通信方式決定部３０６、通信環境判定部３０７、通信環境判定結果管理部３０８、通信環境特定部３０９及び通信環境変化検出部３１０の各ソフトウェアモジュールを有する。
【００６７】
アプリケーション処理部３０１は、デバイス３００が有するアプリケーションの処理を行う。
【００６８】
論理通信部３０２は、下位レイヤ（サーバ通信部３０４及びＰ２Ｐ通信部３０５）によるメッセージ通信(パケット通信)機構を利用して、当該下位レイヤの接続の切断等に影響を受けずに、通信状態を継続できる論理接続ＡＰＩ（Application Program Interface）を提供する。
【００６９】
ルーティング部３０３は、メッセージの送信先に応じて、サーバ通信部３０４またはＰ２Ｐ通信部３０５に適切にメッセージをルーティングし、また両通信部が受信したメッセージを上位レイヤである論理通信部３０２及びアプリケーション処理部３０１へ配送する。
【００７０】
サーバ通信部３０４は、メッセージングサーバ１００を経由した他のデバイス３００との通信を行う。
【００７１】
Ｐ２Ｐ通信部３０５は、Ｐ２Ｐ通信テストサーバ２００と協調し、他のデバイス３００とＰ２Ｐ通信を行う。
【００７２】
通信方式決定部３０６は、通信環境判定部３０７の判定結果を基に、Ｐ２Ｐ通信の可否を判定し、及び、可能であればＰ２Ｐ通信のための接続方式を決定する。
【００７３】
通信環境判定部３０７は、通信環境判定結果情報、通信環境特定情報、通信環境変化検出情報等を利用して、上記Ｐ２Ｐ通信のための通信環境判定処理を行う。
【００７４】
通信環境判定結果管理部３０８は、Ｐ２Ｐ通信テストサーバ２００から受信した通信環境判定結果情報を、データベース３１８上で管理する。
【００７５】
通信環境特定部３０９は、通信環境を特定するためのキーとなる通信環境特定情報を取得する。具体的には、通信環境特定部３０９は、例えばUPnP IGDによるルータのＵＵＩＤ（Universally Unique Identifier）を取得したり、ＡＲＰ（Address Resolution Protocol）によるゲートウェイＭＡＣアドレスを取得したりすることで、上記通信環境を特定する。
【００７６】
通信環境変化検出部３１０は、通信部３９のネットワークインタフェース等を監視し、通信状態の変化に基づき、他のデバイス３００との通信方式の切り替えが必要になる可能性があるタイミングを決定する。この通信環境の変化は、デバイス３００の移動に伴うものである。
【００７７】
［システムの動作］
次に、以上のように構成されたシステムにおけるメッセージングサーバ１００、Ｐ２Ｐ通信テストサーバ２００及びデバイス３００の動作について説明する。本実施形態及び他の実施形態において、メッセージングサーバ１００、Ｐ２Ｐ通信テストサーバ２００及びデバイス３００における動作は、それぞれＣＰＵと、その制御下において実行される上記各ソフトウェアモジュールとで協働して行われる。
【００７８】
（メッセージングサーバとデバイスとの連携システム）
本実施形態では、各デバイス３００は、クラウド上のメッセージングサーバ１００を利用して通信し、連係して動作することが可能である。
【００７９】
各デバイス３００は起動すると、メッセージングサーバ１００との間で常時接続を確立する。この際デバイス３００は、個々のデバイス３００に一意に割り当てられたデバイスＩＤをメッセージングサーバ１００に通知し、メッセージングサーバ１００はこのデバイスＩＤに基づいてデバイス３００間の通信を仲介する。
【００８０】
この際の通信は、メッセージ(パケット)ベースで行われ、送付先等の指定にはデバイスＩＤ等が用いられる。
【００８１】
クラウド側（メッセージングサーバ１００）の負荷を軽減するため、デバイス３００間の通信は、可能な場合はＰ２Ｐ通信によって行われる。
【００８２】
（Ｐ２Ｐ通信の基本処理）
本実施形態におけるシステムにおいて、デバイス３００間でＰ２Ｐ通信を行うには、ＴＣＰ／ＩＰネットワーク上で、ＮＡＴルータ（通信中継装置３５０）を超えて接続を行う機能が必要である。
【００８３】
このような機能を実現するために例えば、ＳＴＵＮと呼ばれるプロトコルがある。ＳＴＵＮは、デバイス３００のために、ＮＡＴの存在とタイプを判定するとともに、デバイス３００が他のデバイス３００との接続に利用するグローバルＩＰアドレス及びポート番号を取得する機能を有する。
【００８４】
本実施形態において、Ｐ２Ｐ通信テストサーバ２００は、ＳＴＵＮに代表されるプロトコルを実行するために、上述のように、ＮＡＴタイプを判定する通信環境判定サーバ部２０３と、アドレス及びポート番号情報を取得するアドレス情報取得サーバ部２０２とを有する。
【００８５】
まず、各デバイス３００は、予めそれぞれＰ２Ｐ通信テストサーバ２００と通信して、ＮＡＴタイプを判定しておく。図７は、ＳＴＵＮによるＮＡＴタイプの判定に用いられるＮＡＴの分類対応表を示した図である。
【００８６】
同図に示すように、ＮＡＴのタイプは、そのマッピングルール、フィルタリング特性、パケットドロップやＮＡＴの有無等に応じて、フルコーンＮＡＴ、アドレス制限付きコーンＮＡＴ、ポート制限付きコーンＮＡＴ、シンメトリックＮＡＴ、ＵＤＰブロックド、オープンインターネット及びシンメトリックＵＤＰファイアーウォールに分類される。フルコーンＮＡＴ、アドレス制限付きコーンＮＡＴ、ポート制限付きコーンＮＡＴ及びシンメトリックＮＡＴについては、その記載順に、通信における制約は大きくなる。
【００８７】
次に、Ｐ２Ｐ通信を行いたい（接続要求元の）デバイス３００は、メッセージングサーバ１００を経由した通信により、接続要求先のデバイス３００のＮＡＴタイプを取得し、この接続要求元／接続要求先のデバイス３００のＮＡＴタイプの組み合わせにより、Ｐ２Ｐ通信が行えるか、どちらのデバイス３００から接続を行うべきか、及び、接続の際に特別な処理を必要とするか等の判定を行う（詳細は後述）。
【００８８】
どちらのデバイス３００でもＰ２Ｐ接続が不可と判定された場合は、Ｐ２Ｐ通信は行わず、メッセージングサーバ１００を経由した通信が用いられることとなる。
【００８９】
以下、デバイス３００が通信を行う際の具体的な各処理の流れについて詳細に説明する。
【００９０】
（通信環境判定処理）
まず、通信環境判定処理について説明する。図８は、デバイス３００における通信環境判定処理の流れを示したフローチャートである。また図９は、Ｐ２Ｐ通信テストサーバ２００における通信環境判定処理の流れを示したフローチャートである。
【００９１】
同図に示すように、デバイス３００の通信環境判定部３０７は、通信環境変化検出部３１０による、デバイス３００の移動に伴う通信環境の変化の検出を待つ（図８のステップ７１）。
【００９２】
ここで、通信環境変化検出部３１０は、通信環境の変化検出処理において、例えば、通信部３９のネットワークインタフェース（複数ある場合はそれぞれ）の状態や、その受信号の受信レベル、通信に使用するＩＰアドレスの変化等を監視する。通信環境変化検出部３１０は、これらに変化があったとき、通信環境が変化したと判定し、通信環境変化検出イベントを通信環境判定部３０７へ通知する。
【００９３】
実際には、これらの変化すべてが、デバイス３００間の通信方式を切り替える必要があることを意味するわけではないが、通信環境判定部３０７は、これらの変化をきっかけとして、後述の通信環境特定情報を再取得し、変化があるか確認することができる。
【００９４】
通信環境判定部３０７は、通信環境変化検出部３１０から通信環境の変化検出イベントを受信した場合（図８のステップ７２のＹｅｓ）、通信環境特定部３０９により通信環境特定処理を実行し、通信環境特定情報を取得する（図８のステップ７３）。
【００９５】
ここで当該通信環境特定処理の詳細について説明する。図１０は、当該通信環境特定処理の流れを示したフローチャートである。
【００９６】
同図に示すように、通信環境特定部３０９はまず、UPnP IGDにより、ルータ（通信中継装置３５０）のＵＵＩＤを取得する（ステップ１０１）。
【００９７】
上記ＵＵＩＤの取得に成功した場合（ステップ１０２のＹｅｓ）、通信環境特定部３０９は、通信環境特定情報として、ルータのＵＵＩＤを設定する（ステップ１０４）。
【００９８】
一方、上記ＵＵＩＤの取得に失敗した場合（ステップ１０２のＮｏ）、通信環境特定部３０９は、ＡＲＰによりゲートウェイのＭＡＣアドレスを取得する（ステップ１０３）。
【００９９】
そして通信環境特定部３０９は、通信環境特定情報として、当該ゲートウェイのＭＡＣアドレスを設定する（ステップ１０５）。
【０１００】
通信環境判定部３０７は、これらルータのＵＵＩＤ及びゲートウェイのＭＡＣアドレスを、通信環境特定情報として取得する。
【０１０１】
通信環境判定部３０７は、取得した通信環境特定情報がこれまでと同じか否かを判断する（図８のステップ７４）。
【０１０２】
通信環境特定情報がこれまでと異なると判断した場合（Ｎｏ）、通信環境判定部３０７は、当該通信環境特定情報をキーにして、通信環境判定結果管理部３０８から、通信環境判定結果情報を取得する（ステップ７５）。
【０１０３】
上記通信環境特定情報に対応する通信環境判定結果情報が存在する場合（ステップ７６のＹｅｓ）、通信環境判定部３０７は、当該通信環境判定結果情報を、通信方式決定部３０６へ通知する（ステップ８１）。
【０１０４】
一方、上記通信環境特定情報に対応する通信環境判定結果情報が存在しない場合（ステップ７６のＮｏ）、通信環境判定部３０７は、Ｐ２Ｐ通信部３０５を介して、Ｐ２Ｐ通信テストサーバ２００上の通信環境判定サーバ部２０３に、通信環境特定情報を含む通信環境判定結果取得リクエストメッセージを送信する（ステップ７７）。
【０１０５】
Ｐ２Ｐ通信テストサーバ２００の通信環境判定サーバ部２０３は、当該通信環境判定結果取得リクエストメッセージを待機し（図９のステップ９１）、当該リクエストメッセージを受信すると（ステップ９２のＹｅｓ）、当該メッセージから、通信環境特定情報を取得する（ステップ９３）。
【０１０６】
続いて通信環境判定サーバ部２０３は、取得した通信環境特定情報をキーにして、通信環境判定結果管理部２０４から、対応する通信環境判定結果情報を取得する（ステップ９４）。
【０１０７】
対応する通信環境判定結果が存在する場合（ステップ９５のＹｅｓ）、通信環境判定サーバ部２０３は、当該通信環境判定結果情報を、上記リクエストへのレスポンスとしてデバイス３００の通信環境判定部３０７へ送信する（ステップ９６）。
【０１０８】
一方、対応する通信環境判定結果が存在しない場合（ステップ９５のＮｏ）、通信環境判定サーバ部２０３は、通信環境判定結果無しとしてデバイス３００の通信環境判定部３０７へレスポンスを送信する（ステップ９７）。
【０１０９】
そして通信環境判定サーバ部２０３は、上記通信環境特定情報を基に、ＳＴＵＮサーバ処理を実行し、通信環境判定結果を取得し、ＳＴＵＮクライアント処理を実行するデバイス３００の通信環境判定部３０７からの要求に応じて、それを送信する（ステップ９８）。当該通信環境判定結果は、通信環境判定結果管理部２０４に保存される。
【０１１０】
デバイス３００の通信環境判定部３０７は、上記レスポンスを受信すると（ステップ７８）、当該レスポンスが、通信環境判定結果無しを示しているか否かを判断する（ステップ７９）。
【０１１１】
上記レスポンスが、通信環境判定結果有りを示していると判断した場合（Ｎｏ）、通信環境判定部３０７は、当該通信環境判定結果情報を通信環境判定結果管理部３０８に保存するとともに（ステップ８０）、それを通信方式決定部３０６へ通知する（ステップ８１）。
【０１１２】
一方、上記レスポンスが、通信環境判定結果無しを示していると判断した場合（Ｙｅｓ）、通信環境判定部３０７は、上記ＳＴＵＮクライアント処理を行い（ステップ８２）、上記ＳＴＵＮサーバ処理を行うＰ２Ｐ通信テストサーバ２００の通信環境判定サーバ部２０３から、通信環境判定結果を取得する（ステップ８３）。
【０１１３】
そして通信環境判定部３０７は、当該取得した通信環境判定結果情報を通信環境判定結果管理部３０８に保存するとともに（ステップ８０）、それを通信方式決定部３０６へ通知する（ステップ８１）。
【０１１４】
（通信方式決定処理）
次に、上記通信環境判定結果に基づいた通信方式決定処理について説明する。図１１は、デバイス３００による通信方式決定処理の流れを示したフローチャートである。
【０１１５】
同図に示すように、デバイス３００の通信方式決定部３０６はまず、アプリケーション処理部３０１から、接続要求先のデバイス３００のデバイスＩＤを取得する（ステップ１１１）。
【０１１６】
続いて通信方式決定部３０６は、接続要求先のデバイス３００に、通信環境判定結果のリクエストメッセージを送信する（ステップ１１２）。
【０１１７】
続いて通信方式決定部３０６は、接続要求先のデバイス３００から、通信環境判定結果レスポンスメッセージを取得する（ステップ１１３）。
【０１１８】
続いて通信方式決定部３０６は、Ｐ２Ｐ通信可能性判定処理を実行する（ステップ１１４）。当該処理では、接続要求元のデバイス３００における判定結果と、接続要求先のデバイス３００における判定結果の双方が用いられる。
【０１１９】
当該Ｐ２Ｐ通信可能性判定処理は、例えば、上記Ｐ２Ｐ通信テストサーバ２００によりＳＴＵＮを用いて判定されたＮＡＴタイプに応じて実行される。図１２は、ＮＡＴタイプに応じたＰ２Ｐ通信の可否を示した表である。
【０１２０】
同図において、「ＯＫ」は、何の設定無しに接続が可能であること、「ＵＨ」はＵＤＰホールパンチングを行うことで接続が可能であること、「ＮＧ」は接続が不可能であることを示す。通信方式決定部３０６は、当該表をデータとして保持しておき、接続要求元及び接続要求先の各デバイス３００の上記通信環境判定結果におけるＮＡＴタイプを当該表に当てはめて接続可能性を判定する。
【０１２１】
ここで、接続要求元のデバイス３００から接続要求先のデバイス３００へ接続する場合と、接続要求先のデバイス３００から接続要求元のデバイス３００へ接続する場合とでは、判定結果が異なる場合（接続要求先から接続した方が有利な場合）もある。したがって、通信方式決定部３０６は、双方のデバイス３００について（接続要求元と接続要求先とを入れ替えた場合を考慮して）判定を行い、Ｐ２Ｐ通信の可否、接続の向き、接続方式を決定する。
【０１２２】
例えば、接続の向きに関しては、双方のデバイス３００におけるＮＡＴルータ、プロキシサーバ、ファイアーウォール等の通信中継装置３５０の有無や、それらのタイプによって、一方向の接続のみが可能である場合や、双方からの接続が可能であるものの特別な設定が必要な場合等が想定される。したがって、接続の向きは、接続が可能な方向または極力特別な設定の必要がない方向に決定される。
【０１２３】
通信方式決定部３０６は、上記判定処理により、判定結果として、Ｐ２Ｐ通信可否、接続の向き、接続方式を取得する（ステップ１１５）。
【０１２４】
続いて通信方式決定部３０６は、上記判定結果から、Ｐ２Ｐ通信が可能であるか否かを判断する（ステップ１１６）。
【０１２５】
Ｐ２Ｐ通信が可能であると判断した場合（Ｙｅｓ）、通信方式決定部３０６は、Ｐ２Ｐ通信部３０５に、上記決定された接続方式、接続の向きで、他のデバイス３００と、Ｐ２Ｐ通信による接続を行うように通知する（ステップ１１７）。
【０１２６】
一方、Ｐ２Ｐ通信が不可能であると判断した場合（Ｎｏ）、通信方式決定部３０６は、サーバ通信部３０４に、他のデバイス３００と、メッセージングサーバ１００を経由した接続を行うように通知する（ステップ１１８）。
【０１２７】
（Ｐ２Ｐ通信接続処理）
次に、Ｐ２Ｐ通信が可能と判断された場合のＰ２Ｐ通信の接続処理について説明する。図１３は、接続元のデバイス３００におけるＰ２Ｐ通信接続処理の流れを示したフローチャートである。また図１４は、接続先のデバイス３００におけるＰ２Ｐ通信接続処理の流れを示したフローチャートである。また図１５は、Ｐ２Ｐ通信テストサーバ２００におけるＰ２Ｐ通信接続処理の流れを示したフローチャートである。また
【０１２８】
まず、接続元のデバイス３００のＰ２Ｐ通信部３０５は、Ｐ２Ｐ通信テストサーバ２００に、アドレス情報取得リクエストメッセージを送信する（図１３のステップ１３１）。
【０１２９】
Ｐ２Ｐ通信テストサーバ２００のアドレス情報取得サーバ部２０２は、上記アドレス情報取得リクエストメッセージを待機し（図１５のステップ１５１）、当該アドレス情報取得リクエストメッセージを受信すると（ステップ１５２）、受信したメッセージの送信元の外部ＩＰアドレス及びポート番号を取得する（ステップ１５３）。
【０１３０】
そしてアドレス情報取得サーバ部２０２は、取得した送信元アドレス及びポート番号を含む、アドレス情報取得レスポンスメッセージを、上記接続元のデバイス３００のＰ２Ｐ通信部３０５へ送信する（ステップ１５４）。
【０１３１】
接続元のデバイス３００のＰ２Ｐ通信部３０５は、Ｐ２Ｐ通信テストサーバ２００から上記アドレス情報取得レスポンスメッセージを受信すると（図１３のステップ１３２）、当該メッセージから、自身の外部アドレス及びポート番号を取得する（ステップ１３３）。
【０１３２】
続いてサーバ通信部３０４は、接続先のデバイス３００に、メッセージングサーバ１００を経由して、自身の外部アドレス及びポート番号を含むＰ２Ｐ接続開始リクエストメッセージを送信する（ステップ１３４）。
【０１３３】
接続先のデバイス３００のサーバ通信部３０４は、上記接続元のデバイス３００からのＰ２Ｐ接続開始リクエストメッセージを、メッセージングサーバ１００を経由して受信する（図１４のステップ１４１）。
【０１３４】
続いて接続先のデバイス３００のＰ２Ｐ通信部３０５は、上記メッセージから、接続元のデバイス３００の外部アドレス及びポート番号を取得する（ステップ１４２）。
【０１３５】
続いて接続先のデバイス３００のＰ２Ｐ通信部３０５は、Ｐ２Ｐ通信テストサーバ２００に、アドレス情報取得リクエストメッセージを送信する（ステップ１４３）。
【０１３６】
Ｐ２Ｐ通信テストサーバ２００のアドレス情報取得サーバ部２０２は、上述と同様に、上記リクエストメッセージの送信元の外部ＩＰアドレス及びポート番号を取得し、それらを含むレスポンスメッセージを、接続先のデバイス３００のＰ２Ｐ通信部３０５へ送信する（図１５のステップ１５１〜１５４）。
【０１３７】
続いて接続先のデバイス３００のＰ２Ｐ通信部３０５は、Ｐ２Ｐ通信テストサーバ２００から上記アドレス情報取得レスポンスメッセージを受信すると（図１４のステップ１４４）、当該メッセージから、自身の外部アドレス及びポート番号を取得する（ステップ１４５）。
【０１３８】
そして接続先のデバイス３００のサーバ通信部３０４は、接続元のデバイス３００に、自身の外部アドレス及びポート番号を含むＰ２Ｐ接続開始レスポンスメッセージを、メッセージングサーバ１００を介して送信する（ステップ１４６）。
【０１３９】
接続元のデバイス３００のサーバ通信部３０４は、接続先のデバイス３００から、Ｐ２Ｐ接続開始レスポンスメッセージを受信すると（図１３のステップ１３５）、当該メッセージから、接続先のデバイス３００の外部アドレス及びポート番号を取得する。
【０１４０】
この後、接続元のデバイス３００と接続先のデバイス３００との間で、上記決定された接続の向き及び接続方式により、実際にＰ２Ｐ通信処理が実行されることになる。この際、接続先のデバイス３００では、接続元のデバイス３００からのアクセスを許容すべく、一時的に、ＮＡＴルータ等のタイプに応じたUPnP IGDによるＷＡＮ／ＬＡＮ間のアドレス／ポート番号転送設定、手動によるポートフォワーディング設定、またはファイアーウォール機能の設定変更等が実行され得る。
【０１４１】
（メッセージ転送処理）
次に、メッセージングサーバ１００による、デバイス３００間のメッセージの転送処理について説明する。図１６は、当該メッセージ転送処理の流れを示したフローチャートである。当該メッセージ転送処理は、上記Ｐ２Ｐ通信接続処理におけるＰ２Ｐ接続開始リクエスト／レスポンスメッセージのやり取りのほか、Ｐ２Ｐ通信が不可能と判断された場合におけるデバイス３００間のメッセージのやり取り一般において実行される。
【０１４２】
同図に示すように、メッセージングサーバ１００のメッセージ転送処理部１０３はメッセージ受信部１０２から、デバイス３００からのメッセージを受信する（ステップ１６１）。
【０１４３】
続いてメッセージ転送処理部１０３は、上記受信したメッセージから、送信先デバイスＩＤを取得する（ステップ１６２）。
【０１４４】
続いてメッセージ転送処理部１０３は、接続管理部１０１に、上記送信先デバイスＩＤに対応するデバイス３００が接続されているか否かを判断する（ステップ１６３）。
【０１４５】
送信先デバイスＩＤに対応するデバイス３００が接続されていると判断した場合（Ｙｅｓ）、メッセージ転送処理部１０３は、メッセージ送信部１０４を経由して、送信先のデバイス３００へメッセージを転送する（ステップ１６４）。
【０１４６】
一方、送信先デバイスＩＤに対応するデバイス３００が接続されていないと判断した場合（Ｎｏ）、メッセージ転送処理部１０３は、当該メッセージを破棄する（ステップ１６５）。
【０１４７】
（Ｐ２Ｐ通信方式の変化の例）
図１７は、デバイス３００の移動に伴うデバイス３００間のＰ２Ｐ通信方式の変化の例を示した図である。
【０１４８】
同図では、デバイス３００Ａが移動しながら、移動しないデバイス３００ＢとＰ２Ｐにより通信する場合が示されている。デバイス３００Ｂには、ＮＡＴタイプがポート制限付きコーンＮＡＴ（ＰＲ）であるＮＡＴルータ（通信中継装置３５０Ｂ）が接続されている。
【０１４９】
同図に示すように、デバイス３００Ａが、それに接続された通信中継装置３５０ＢのＮＡＴタイプがポート制限付きコーンＮＡＴ（ＰＲ）である通信環境Ｘに存在する場合、デバイス３００ＢとのＰ２Ｐ通信は、デバイス３００Ａからデバイス３００Ｂへの接続により開始され、ＵＤＰホールパンチング（ＵＨ）により行われる。
【０１５０】
その後、デバイス３００Ａが、それに接続された通信中継装置３５０ＡのＮＡＴタイプがＵＤＰブロックド（Ｕ）である通信環境Ｙへ移動した場合、デバイス３００Ｂとの間ではＰ２Ｐ通信は不可能であるため、メッセージングサーバ１００経由の通信が行われる。
【０１５１】
その後、デバイス３００Ａが、それに接続された通信中継装置３５０ＡのＮＡＴタイプがフルコーンＮＡＴ（ＦＣ）である通信環境Ｚへ移動した場合、デバイス３００ＢとのＰ２Ｐ通信は、デバイス３００Ｂからデバイス３００Ａへの接続により、特別な設定無しに開始される。
【０１５２】
このように、各デバイス３００は、その移動に伴う通信環境の変化に応じて、Ｐ２Ｐ通信方式とメッセージングサーバ１００経由の通信方式、Ｐ２Ｐ通信における接続の向き、接続方式を切り替えて通信する。
【０１５３】
（論理通信部の説明）
上記論理通信部３０２は、上述のように、ルーティング部３０３以下のレイヤで扱われるメッセージ通信(パケット通信)をベースに、アプリケーションの利便性を高めるために、複数の通信プリミティブを提供する。
【０１５４】
本実施形態においては、論理通信部３０２は、ＲＰＣ、メッセージ、バイトストリームの３つの通信プリミティブを提供し、さらにバイトストリームを用いてＨｔｔｐのエミュレーションも行える構成となっている。
【０１５５】
具体的には、論理通信部３０２は、ＩＰ上にＴＣＰを実装する場合と同様に、メッセージ（パケット）のフロー制御及び再送処理を行った上で、ストリーム通信を行う機構を実装している。
【０１５６】
本実施形態では、下位のメッセージ通信レイヤで、メッセージングサーバ１００経由の通信とＰ２Ｐ通信との切り替えまたは併用が可能となっているため、論理通信レイヤにおいては、通信方式がメッセージングサーバ１００経由とＰ２Ｐとで切り替わっても、論理通信プリミティブ上の接続は継続されることになる。
【０１５７】
したがって、デバイス３００は、アプリケーションレイヤの動作を継続したままシームレスに上記通信方式を切り替えることができ、ユーザは当該切り替えを意識しないで済む。
【０１５８】
［まとめ］
以上説明したように、本実施形態では、デバイス３００の移動に伴う通信環境の変化に応じて、メッセージングサーバ１００経由の接続とＰ２Ｐ接続との切り替え、及び、Ｐ２Ｐ接続方式（接続の向きを含む）の切り替え処理が実行される。
【０１５９】
また本実施形態では、デバイス３００は、通信環境を特定する手段を有し、これにより得られた情報をキーとして、通信環境（ＮＡＴタイプ）判定結果を保存する機構を有する。したがってデバイス３００は、Ｐ２Ｐ通信方式決定のために、毎回Ｐ２Ｐ通信テストサーバ２００（ＳＴＵＮサーバ）による判定処理を行う必要を無くす（あるいは、減少させる）ことができる。
【０１６０】
さらに本実施形態では、通信環境判定結果情報はメッセージングサーバ１００でも記録されているため、それがデバイス３００間で共有される。したがってメッセージングサーバ１００は、同じ通信環境上で異なるデバイス３００がＰ２Ｐ通信を行う場合にも、通信環境を判定する処理を省略させることができる。
【０１６１】
＜第２の実施形態＞
次に、本技術の第２の実施形態を説明する。本実施形態においては、特に説明しない箇所は、上記第１の実施形態と同様の構成である。また本実施形態において、上記第１の実施形態と同様の機能及び構成を有する箇所には同一の符号を付し、その説明を省略または簡略化する。
【０１６２】
［システムのネットワーク構成及びデバイスのモジュール構成］
図１８は、本実施形態におけるシステムのネットワーク構成を示した図である。また図１９は、本実子形態におけるデバイス３００のソフトウェアモジュール構成を示したブロック図である。メッセージングサーバ１００及びＰ２Ｐ通信テストサーバ２００のハードウェア構成及びソフトウェアモジュール構成は、上記第１の実施形態と同様である。
【０１６３】
本実施形態においては、上記第２の実施形態と比較して、デバイス３００が複数のネットワークに対応した複数のネットワークインタフェースを有する点が異なる。
【０１６４】
すなわち、本実施形態では、デバイス３００のＰ２Ｐ通信部３０５、通信環境変化検出部３１０及び通信環境判定部３０７は、上記複数のネットワーク及びネットワークインタフェースに対応している。具体的には、デバイス３００は、第１のネットワーク(例えば３Ｇネットワーク)に対応した第１のネットワークインタフェースと、第２のネットワーク(例えば、Wireless LAN、WiFi等)に対応した第２のネットワークインタフェースとを有する。
【０１６５】
また図１９に示すように、本実施形態では、デバイス３００は、上記第１の実施形態と同様のソフトウェアモジュールに加えて、位置情報取得部３１１を新たに有する。
【０１６６】
位置情報取得部３１１は、いずれかのネットワークを介して、あるいはＧＰＳ等の外部の位置情報取得手段から、定期的にデバイス３００の位置情報を取得する。
【０１６７】
通信環境特定部３０９は、通信環境特定情報を生成する際に、位置情報取得部３１１から取得した位置情報も当該通信環境特定情報に含める。当該位置情報を含む通信環境特定情報は、上記通信環境判定結果情報と関連付けられて、通信環境判定結果管理部３０８（記憶部３８）に記憶される。
【０１６８】
例えば第１のネットワークとしての３Ｇネットワークは、帯域は狭いが利用可能なエリアが広く、グローバルＩＰアドレスが割り当てられるという特性がある。一方、第２のネットワークとしてのＷｉＦｉネットワークは、帯域は広いが、利用可能なエリアが狭く、プライベートＩＰアドレスが割り当てられることが多いという特性がある。デバイス３００は、この第１のネットワーク及び第２のネットワークの特性を利用して、モバイルのデバイス３００にとってより効率的な通信を実現する。
【０１６９】
具体的には、デバイス３００は、第１のネットワークを常に有効にしておき、メッセージングサーバ１００を経由した通信は、当該第１のネットワークを経由して行う。
【０１７０】
一方、デバイス３００は、第２のネットワークについては、第１のネットワークあるいは他の手段から位置情報を取得し、過去にＰ２Ｐ通信が利用可能であった位置の近辺にデバイス３００が存在する場合だけ、そのネットワークインタフェースの電源を投入する。
【０１７１】
［システムの動作］
以下、本実施形態におけるシステムの動作について具体的に説明する。
【０１７２】
図２０は、デバイス３００における、Ｐ２Ｐ通信可能性に応じたネットワークインタフェース制御処理の流れを示したフローチャートである。また図２１は、Ｐ２Ｐ通信テストサーバ２００におけるネットワークインタフェース制御処理に関連した通信環境判定処理の流れを示したフローチャートである。
【０１７３】
まず、デバイス３００の位置情報取得部３１１は、位置情報取得用のタイマーイベントを待機し（図２０のステップ２０１）、当該タイマーイベントを受信すると（ステップ２０２のＹｅｓ）、第１のネットワークまたはＧＰＳ等により、デバイス３００の位置情報を取得する（ステップ２０３）。
【０１７４】
続いて通信環境判定部３０７は、上記位置情報を通信環境特定部３０９から取得して、当該位置情報が前回取得した位置情報と比べて大きく変化したか否かを判断する（ステップ２０４）。
【０１７５】
位置情報が大きく変化したと判断した場合（Ｙｅｓ）、通信環境判定部３０７は、第１のネットワークを介して、Ｐ２Ｐ通信テストサーバ２００に、位置情報付きの通信環境特定情報を含む通信環境判定結果取得リクエストを送信する（ステップ２０５）。
【０１７６】
Ｐ２Ｐ通信テストサーバ２００の通信環境判定サーバ部２０３は、当該通信環境判定結果取得リクエストメッセージを待機し（図２１のステップ２１１）、当該リクエストメッセージを受信すると（ステップ２１２のＹｅｓ）、当該メッセージから、位置情報を含む通信環境特定情報を取得する（ステップ２１３）。
【０１７７】
続いて通信環境判定サーバ部２０３は、取得した通信環境特定情報中の位置情報をキーにして、通信環境判定結果管理部２０４から、対応する通信環境判定結果情報を取得する（ステップ２１４）。この際、通信環境判定サーバ部２０３は、位置情報によって示された位置の近傍と判定される通信環境判定結果（複数存在すればそれら全て）を取得する。
【０１７８】
対応する通信環境判定結果が存在する場合（ステップ２１５のＹｅｓ）、通信環境判定サーバ部２０３は、当該通信環境判定結果情報を、上記リクエストへのレスポンスとしてデバイス３００の通信環境判定部３０７へ送信する（ステップ２１６）。
【０１７９】
一方、対応する通信環境判定結果が１つも存在しない場合（ステップ２１５のＮｏ）、通信環境判定サーバ部２０３は、通信環境判定結果無しとしてデバイス３００の通信環境判定部３０７へレスポンスを送信する（ステップ２１７）。
【０１８０】
そして通信環境判定サーバ部２０３は、上記通信環境特定情報を基に、ＳＴＵＮサーバ処理を実行し、通信環境判定結果を取得し、ＳＴＵＮクライアント処理を実行するデバイス３００の通信環境判定部３０７からの要求に応じて、それを送信する（ステップ９８）。当該通信環境判定結果は、上記位置情報と関連付けられて、通信環境判定結果管理部２０４に保存される。
【０１８１】
デバイス３００の通信環境判定部３０７は、Ｐ２Ｐ通信テストサーバ２００から、上記レスポンスを受信する（図２０のステップ２０６）。
【０１８２】
続いて通信環境判定部３０７は、得られた通信環境判定結果（複数可）に基づき、他のデバイス３００との間でＰ２Ｐ通信ができる可能性を判定する。そして、通信環境判定部３０７は、Ｐ２Ｐ通信ができる可能性があるネットワークについては、そのネットワークインタフェースの電源をオンにする。一方、通信環境判定部３０７は、Ｐ２Ｐ通信ができる可能性がないネットワークについては、そのネットワークインタフェースの電源をオフにする（ステップ２０７）。
【０１８３】
その後は、Ｐ２Ｐ通信が可能な場合、電源がオンとなったネットワークインタフェースによる他のデバイス３００とのＰ２Ｐ通信が行われる。
【０１８４】
（Ｐ２Ｐ通信方式の変化の例）
図２２は、本実施形態におけるデバイス３００の移動に伴うデバイス３００間のＰ２Ｐ通信方式の変化の例を、複数のネットワークとの関係において示した図である。
【０１８５】
同図においては、上記第１の実施形態の図１７で示した例と同様に、デバイス３００Ａが移動しながら、移動しないデバイス３００ＢとＰ２Ｐにより通信する場合が示されている。デバイス３００Ａの通信環境Ｘ、Ｙ、ＺにおけるＮＡＴタイプ及びデバイス３００ＢのＮＡＴタイプは、上記図１７に示した例と同様である。
【０１８６】
同図に示すように、デバイス３００Ａが、位置情報Ｘ及び通信環境Ｘに存在する場合、デバイス３００Ｂとの間でＰ２Ｐ通信が可能である。ここで、第２のネットワーク（ＷＬＡＮ）が利用可能であると判断された場合には、第２のネットワークインタフェース（ＷＬＡＮインタフェース）の電源はオンにされる。
【０１８７】
また、デバイス３００Ｂが、位置情報Ｙ及び通信環境Ｙに存在する場合、デバイス３００Ｂとの間のＰ２Ｐ通信が不可能であるため、第２のネットワークインタフェースの電源はオフにされる。
【０１８８】
また、デバイス３００Ｂが、位置情報Ｚ及び通信環境Ｚに存在する場合、デバイス３００Ｂとの間でＰ２Ｐ通信が可能である。しかしここで、第２のネットワークは利用不可能と判断された場合には、第２のネットワークインタフェースの電源はオフにされ、第１のネットワークを用いたＰ２Ｐ通信が実行される。
【０１８９】
［まとめ］
以上説明したように、本実施形態によれば、デバイス３００は、自身が複数のネットワークインタフェースを有する場合、例えば、３Ｇネットワークでメッセージングサーバ１００経由の接続を行い、ＷｉＦｉネットワーク経由でＰ２Ｐ接続が可能な場合には、Ｐ２Ｐ接続を用いて高速な通信を行うことができる。
【０１９０】
また本実施形態では、デバイス３００は、３Ｇネットワークから位置情報を取得し、この位置情報と関連付けて、ＷｉＦｉネットワーク上でＰ２Ｐ通信が可能であったどうかという情報を保持する。これによりデバイス３００は、通常はＷｉＦｉ用のネットワークインタフェースの電源をオフにしておき、過去にＰ２Ｐ通信が可能であった場所近辺に存在する場合のみその電源をオンにすることで、電力消費を抑えながらＰ２Ｐ通信が行うことができる。
【０１９１】
［変形例］
本技術は上述の実施形態にのみ限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々変更され得る。
【０１９２】
上述の第１及び第２の実施形態においては、通信環境判定処理と、Ｐ２Ｐ通信用のＩＰアドレス及びポート番号の取得処理を実行するＳＴＵＮサーバとしてＰ２Ｐ通信テストサーバ２００が設けられた。しかし、当該Ｐ２Ｐ通信テストサーバ２００の機能をメッセージングサーバ１００が有してもよい。
【０１９３】
上述の第１及び第２の実施形態においては、メッセージングサーバ１００はクラウド上に１台のみ示されているが、メッセージングサーバ１００は複数設けられていてもよい。この場合、デバイス３００からのメッセージは、複数のメッセージングサーバ１００間で中継され得る。つまり、各デバイス３００には、複数のメッセージングサーバ１００のうち、特定のメッセージングサーバ１００が、その利用サーバ（担当サーバ）として割り当てられている。割り当ての方法は如何なるものであってもよいが、例えば、各デバイス及びメッセージングサーバのＩＤを元に行われる。あるデバイス３００が送信したメッセージが、当該デバイスを担当しないメッセージングサーバ１００によって受信された場合、そのメッセージは、当該担当の他のメッセージングサーバ１００へ転送される。
【０１９４】
上述の第２の実施形態では、複数のネットワークの例として、３Ｇネットワークと無線ＬＡＮ（ＷｉＦｉ）とが示されたが、もちろん、ネットワークはこれらに限られない。例えば、４Ｇネットワーク、ＬＴＥネットワーク、ＷｉＭＡＸネットワーク等の他のネットワーク及びそれに応じたネットワークインタフェースが用いられてもよい。
【０１９５】
上述の第１及び第２の実施形態においては、デバイス３００が通信方式決定部３０６、通信環境判定部３０７及び通信環境判定結果管理部３０８を有している例が示された。しかし、これら通信方式決定部、通信環境判定部及び通信環境判定結果管理部が提供する機能のいずれかまたは全ては、クラウド側（上記メッセージングサーバ１００またはその他のサーバで提供されてもよい。
【０１９６】
［その他］
本技術は以下のような構成も採ることができる。
（１）
情報処理装置であって、
ネットワーク上の中継サーバを介した方式、または、前記中継サーバを介さないピアツーピア方式により、前記ネットワーク上の他の情報処理装置と通信可能な通信部と、
当該情報処理装置の移動に伴う通信環境の変化を検出し、当該通信環境の変化に応じて、可能な限り前記ピアツーピアにより通信するように、前記他の情報処理装置との通信方式を決定可能な制御部と
を具備する情報処理装置。
（２）
上記（１）に記載の情報処理装置であって、
前記制御部は、当該情報処理装置の移動に伴う通信環境の変化を検出し、当該通信環境の変化に応じて前記通信方式を決定する
情報処理装置。
（３）
上記（１）または（２）に記載の情報処理装置であって、
前記制御部は、当該情報処理装置及び前記他の情報処理装置と前記ネットワークとの間における通信中継装置の設置の有無または当該通信中継装置のタイプを判定し、当該設置の有無またはタイプに応じて、前記ピアツーピアによる通信を当該情報処理装置から開始するか、前記他の情報処理装置から開始するかを決定する
情報処理装置。
（４）
上記（２）または（３）に記載の情報処理装置であって、
前記制御部は、前記通信部の状態の変化、前記通信部における受信信号レベルの変化、及び、前記通信部が用いるＩＰアドレスの変化のうち少なくとも１つを基に、前記通信環境の変化を検出する
情報処理装置。
（５）
上記（１）から（４）のいずれかに記載の情報処理装置であって、
記憶部をさらに具備し、
前記通信部は、前記通信環境を判定可能な前記ネットワーク上の判定サーバと通信可能であり、
前記制御部は、
前記判定された通信環境を示す通信環境判定情報を受信するように前記通信部を制御し、
前記受信された通信環境判定情報を記憶するように前記記憶部を制御し、
前記記憶された通信環境判定情報に基づいて前記通信方式を決定する
情報処理装置。
（６）
上記（１）から（５）のいずれかに記載の情報処理装置であって、
前記通信部は、
第１の帯域及び第１の利用可能範囲を有する第１のネットワークに接続可能な第１のネットワークインタフェースと、
第２の帯域及び第２の利用可能範囲を有する第２のネットワークに接続可能な第２のネットワークインタフェースとを有し、
前記制御部は、前記中継サーバを介した前記他の情報処理装置との通信には前記第１のネットワークインタフェースを用い、前記ピアツーピアによる前記他の情報処理装置との通信には可能な限り前記第２のネットワークインタフェースを用いるように前記通信部を制御する
情報処理装置。
（７）
上記（６）に記載の情報処理装置であって、
前記第２の帯域は前記第１の帯域よりも広く、
前記第２の利用可能範囲は前記第１の利用可能範囲よりも狭い
情報処理装置。
（８）
上記（６）に記載の情報処理装置であって、
記憶部をさらに具備し、
前記制御部は、
前記第１のネットワークインタフェースを用いて当該情報処理装置の位置を示す位置情報を受信するように前記通信部を制御し、
前記通信環境判定情報と前記受信された位置情報とを関連付けて記憶するように前記記憶部を制御し、
前記受信された位置情報と、前記記憶された位置情報及び通信環境判定情報とに基づいて、前記ピアツーピアによる通信が可能と判断されるネットワークインタフェースを有効にし、前記ピアツーピアによる通信が不可能と判断されるネットワークインタフェースを無効にする
情報処理装置。
（９）
上記（１）から（８）のいずれかに記載の情報処理装置であって、
前記通信部は、前記通信方式が変更された場合でも、当該情報処理装置が有するアプリケーション上は同一の手順で通信を継続可能な論理通信部を有する
情報処理装置。
【符号の説明】
【０１９７】
３１…ＣＰＵ
３３…ＲＡＭ
３８…記憶部
３９…通信部
５０…ＷＡＮ
１００…メッセージングサーバ
２００…Ｐ２Ｐ通信テストサーバ
２０１…接続管理部
２０２…アドレス情報取得サーバ部
２０３…通信環境判定サーバ部
２０４…通信環境判定結果管理部
３００（３００Ａ、３００Ｂ）…デバイス
３０１…アプリケーション処理部
３０２…論理通信部
３０３…ルーティング部
３０４…サーバ通信部
３０５…Ｐ２Ｐ通信部
３０６…通信方式決定部
３０７…通信環境判定部
３０８…通信環境判定結果管理部
３０９…通信環境特定部
３１０…通信環境変化検出部
３１１…位置情報取得部
３５０（３５０Ａ、３５０Ｂ）…通信中継装置
【図２】
0005888405.tif 000002
【図３】
0005888405.tif 000003
【図４】
0005888405.tif 000004
【図５】
0005888405.tif 000005
【図６】
0005888405.tif 000006
【図７】
0005888405.tif 000007
【図８】
0005888405.tif 000008
【図９】
0005888405.tif 000009
【図１０】
0005888405.tif 000010
【図１１】
0005888405.tif 000011
【図１２】
0005888405.tif 000012
【図１３】
0005888405.tif 000013
【図１４】
0005888405.tif 000014
【図１５】
0005888405.tif 000015
【図１６】
0005888405.tif 000016
【図１９】
0005888405.tif 000017
【図２０】
0005888405.tif 000018
【図２１】
0005888405.tif 000019
【図１】
0005888405.tif 000020
【図１７】
0005888405.tif 000021
【図１８】
0005888405.tif 000022
【図２２】
0005888405.tif 000023