(57)【要約】【課題】端末装置間の双方向通信を仲介するサーバが維持するコネクション数の増加を抑制しながら、低遅延通信を実現する。【解決手段】実施形態の通信装置は、ネットワークを介して端末装置と通信する通信装置であり、第１接続維持部と、第２接続維持部と、切り替え指示部と、を備える。第１接続維持部は、端末装置との間に確立したコネクションを維持し、前記端末装置と他の端末装置との間の通信を仲介する。第２接続維持部は、前記第１接続維持部とは異なる方式により、前記端末装置が当該通信装置と通信可能な状態を維持する。切り替え指示部は、所定の切り替え条件が成立した場合に、前記端末装置に対して、通信可能な状態を維持する方式を、前記第１接続維持部による方式である第１方式から前記第２接続維持部による方式である第２方式、または前記第２方式から前記第１方式に切り替えることを指示する。【選択図】図１
2016019179.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して端末装置と通信する通信装置であって、
前記端末装置との間に確立したコネクションを維持し、前記端末装置と他の端末装置との間の通信を仲介する第１接続維持部と、
前記第１接続維持部とは異なる方式により、前記端末装置が当該通信装置と通信可能な状態を維持する第２接続維持部と、
所定の切り替え条件が成立した場合に、前記端末装置に対して、通信可能な状態を維持する方式を、前記第１接続維持部による方式である第１方式から前記第２接続維持部による方式である第２方式、または前記第２方式から前記第１方式に切り替えることを指示する切り替え指示部と、を備える通信装置。
【請求項２】
前記切り替え指示部は、前記第１接続維持部を介して前記端末装置と通信する他の端末装置からコネクションの確立が要求された場合に、前記第２方式により通信可能な状態を維持している前記端末装置に対して、通信可能な状態を維持する方式を第１方式に切り替えることを指示する、請求項１に記載の通信装置。
【請求項３】
前記切り替え指示部は、前記第１接続維持部を介して前記端末装置と通信する他の端末装置とのコネクションの切断が検知された場合に、前記第１方式により通信可能な状態を維持している前記端末装置に対して、通信可能な状態を維持する方式を第２方式に切り替えることを指示する、請求項２に記載の通信装置。
【請求項４】
前記切り替え指示部は、現在時刻が前記端末装置の使用頻度が高い時間帯として予め定められた時間帯の開始時刻となった場合に、前記第２方式により通信可能な状態を維持している前記端末装置に対して、通信可能な状態を維持する方式を第１方式に切り替えることを指示する、請求項１に記載の通信装置。
【請求項５】
前記切り替え指示部は、現在時刻が前記時間帯の終了時刻となった場合に、前記第１方式により通信可能な状態を維持している前記端末装置に対して、通信可能な状態を維持する方式を第２方式に切り替えることを指示する、請求項４に記載の通信装置。
【請求項６】
前記切り替え指示部は、通信装置の負荷状態が所定の閾値を超えた場合に、前記第１方式により通信可能な状態を維持している前記端末装置に対して、通信可能な状態を維持する方式を第２方式に切り替えることを指示する、請求項１に記載の通信装置。
【請求項７】
前記負荷状態は、コネクションを維持している前記端末装置の数、メモリの使用量、プロセッサの使用率のいずれか、または組み合わせである、請求項６に記載の通信装置。
【請求項８】
前記切り替え指示部は、所定の切り替え条件が成立した場合に、前記第１方式により通信可能な状態を維持している前記端末装置であって、所定の切り替え対象条件を満たす前記端末装置に対して、通信可能な状態を維持する方式を第２方式に切り替えることを指示する、請求項１に記載の通信装置。
【請求項９】
前記切り替え対象条件は、前記端末装置の機種と、前記第１接続維持部を介して前記端末装置と通信する他の端末装置から前記端末装置へのアクセス履歴と、の少なくとも一方に基づいて定められた条件である、請求項８に記載の通信装置。
【請求項１０】
コネクションの確立を要求する前記端末装置に対し、前記第２方式により通信可能な状態を維持することが可能か否かを判定する判定部をさらに備え、
前記切り替え指示部は、前記第２方式により通信可能な状態を維持することが可能と判定された前記端末装置に対して、所定の切り替え条件が成立した場合に、通信可能な状態を維持する方式を、前記第１方式から前記第２方式、または前記第２方式から前記第１方式に切り替えることを指示する、請求項１に記載の通信装置。
【請求項１１】
前記端末装置は、前記判定部による判定が終了するまでは前記第１方式により通信可能な状態を維持し、
前記切り替え指示部は、前記第２方式により通信可能な状態を維持することが可能と判定された前記端末装置に対して、通信可能な状態を維持する方式を、前記第１方式から前記第２方式に切り替えることを指示する、請求項１０に記載の通信装置。
【請求項１２】
前記判定部による判定結果を、前記端末装置の識別情報と対応付けて記憶する記憶部をさらに備え、
前記判定部は、コネクションの確立を要求する前記端末装置に対応する前記判定結果が前記記憶部に記憶されている場合に当該判定結果を再利用する、請求項１０に記載の通信装置。
【請求項１３】
前記判定部は、コネクションの確立を要求する前記端末装置に対応する前記判定結果が前記記憶部に記憶されている場合であっても、所定の再判定条件が成立した場合は、前記判定結果を再利用せずに、前記第２方式により通信可能な状態を維持することが可能か否かを再度判定する、請求項１２に記載の通信装置。
【請求項１４】
前記第１接続維持部は、ＷｅｂＳｏｃｋｅｔプロトコルに従ってコネクションを維持するＷｅｂＳｏｃｋｅｔサーバであり、
前記第２接続維持部は、前記端末装置からの定期的なアクセスにより通信可能な状態を維持するＵＤＰホールパンチングサーバである、請求項１〜１３のいずれか一項に記載の通信装置。
【請求項１５】
請求項１〜１４のいずれか一項に記載の通信装置とネットワークを介して通信する端末装置であって、
前記切り替え指示部による指示に応じて、通信可能な状態を維持する方式を前記第１方式から前記第２方式、または前記第２方式から前記第１方式に切り替える切り替え部を備える端末装置。
【請求項１６】
ネットワークを介して端末装置と通信するコンピュータに、
前記端末装置との間に確立したコネクションを維持し、前記端末装置と他の端末装置との間の通信を仲介する第１接続維持部の機能と、
前記第１接続維持部とは異なる方式により、前記端末装置が当該通信装置と通信可能な状態を維持する第２接続維持部の機能と、
所定の切り替え条件が成立した場合に、前記端末装置に対して、通信可能な状態を維持する方式を、前記第１接続維持部による方式である第１方式から前記第２接続維持部による方式である第２方式、または前記第２方式から前記第１方式に切り替えることを指示する切り替え指示部の機能と、を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信装置、端末装置およびプログラムに関する。
【背景技術】
【０００２】
確立したコネクションを維持することでコネクション確立処理にかかる遅延を低減し、低遅延通信を実現するＷｅｂ標準の通信プロトコルとして、ＷｅｂＳｏｃｋｅｔが知られている。ＷｅｂＳｏｃｋｅｔサーバは、単独で収容できるコネクション数に限りがあるため、複数のサーバでシステムを組むことが一般的である。この場合、双方向通信する２つの端末装置が同一のＷｅｂＳｏｃｋｅｔサーバに対してコネクションを確立することにより、双方向通信が単一サーバ内で完結するようにして低遅延化を達成する技術も知られている。
【０００３】
ＷｅｂＳｏｃｋｅｔサーバが端末装置とのコネクションを維持するためには、コネクション情報および送受信用バッファをサーバ上で確保する必要がある。このため、ＷｅｂＳｏｃｋｅｔサーバが維持するコネクション数の増加は、サーバ運用コストの増大に繋がる。一方、端末装置がサーバに対して定期的なアクセス（ポーリング）を行って通信可能な状態を維持する方式がある。しかし、この方式は、ＷｅｂＳｏｃｋｅｔサーバのようにコネクションを維持する方式と比べて通信の遅延が生じやすい。このため、ＷｅｂＳｏｃｋｅｔサーバが維持するコネクション数を抑制しながら、低遅延通信を実現することが求められている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】山口  秀夫，宮里  系一郎，“「ＷｅｂＳｏｃｋｅｔ」の活用でリモコンをスマートに”，日経エレクトロニクス  ｎｏ．１１０８，日本，日経ＢＰ社，２０１３年５月１３日，ｐ．７１−７９
【非特許文献２】Ｘ．Ｃｈｅｎ他、“ＷｅｂＳｏｃｋｅｔ  Ｐｒｏｔｏｃｏｌ  ａｓ  ａ  Ｔｒａｎｓｐｏｒｔ  ｆｏｒ  Ｔｒａｖｅｒｓａｌ  Ｕｓｉｎｇ  Ｒｅｌａｙｓ  ａｒｏｕｎｄ  ＮＡＴ（ＴＵＲＮ）”、［ｏｎｌｉｎｅ］、２０１３年９月１２日、［２０１４年６月１２日検索］、インターネット＜ＵＲＬ：http://tools.ietf.org/html/draft-chenxin-behave-turn-websocket-01＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、端末装置間の双方向通信を仲介するサーバが維持するコネクション数の増加を抑制しながら、低遅延通信を実現できる通信装置、端末装置およびプログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態の通信装置は、ネットワークを介して端末装置と通信する通信装置であり、第１接続維持部と、第２接続維持部と、切り替え指示部と、を備える。第１接続維持部は、前記端末装置との間に確立したコネクションを維持し、前記端末装置と他の端末装置との間の通信を仲介する。第２接続維持部は、前記第１接続維持部とは異なる方式により、前記端末装置が当該通信装置と通信可能な状態を維持する。切り替え指示部は、所定の切り替え条件が成立した場合に、前記端末装置に対して、通信可能な状態を維持する方式を、前記第１接続維持部による方式である第１方式から前記第２接続維持部による方式である第２方式、または前記第２方式から前記第１方式に切り替えることを指示する。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態の通信装置を示す構成図。
【図２】ユーザ管理情報の一例を示す概念図。
【図３】端末管理情報の一例を示す概念図。
【図４】組み合わせ管理情報の一例を示す概念図。
【図５】接続管理情報の一例を示す概念図。
【図６】第１端末装置を示す構成図。
【図７】第１実施形態の通信装置の動作を示すシーケンス図。
【図８】判定部による判定処理の手順を示すフローチャート。
【図９】第１実施形態の通信装置の動作を示すシーケンス図。
【図１０】第２実施形態の通信装置を示す構成図。
【図１１】第３実施形態の通信装置を示す構成図。
【図１２】通信装置のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【０００８】
以下、操作端末（例えばスマートフォン）を用いて被操作端末（例えばデジタルテレビ）を遠隔制御するユースケースを想定し、本発明の実施形態を説明する。なお、被操作端末は、デジタルテレビに限らず、白物家電、住宅設備機器（照明、スマートメータ、エネルギー計測装置、配電盤、給湯器、ドアフォン、電子錠、監視カメラなど）やセンサ（人感センサ、窓センサなど）などであってもよい。また、操作端末は、スマートフォンに限らず、タブレット端末やＰＣ（パーソナルコンピュータ）などであってもよい。
【０００９】
実施形態の通信装置は、操作端末および被操作端末の双方とコネクションを確立し、操作端末から送信された制御コマンドを被操作端末に転送することで、リアルタイム・低遅延の遠隔制御を実現する。具体的な手順としては、実施形態の通信装置は、まず、被操作端末（例えばデジタルテレビ）からのコネクション確立要求に応じて被操作端末とのコネクションを確立し、確立したコネクションを維持する。その後、操作端末（例えばスマートフォン）からのコネクション確立要求に応じて操作端末とのコネクションを確立する。そして、操作端末から送信された制御コマンドを操作端末との間で確立したコネクションを通じて受信し、この操作コマンドを、被操作端末との間で確立したコネクションを通じて被操作端末に転送する。
【００１０】
このように、実施形態の通信装置は、特に被操作端末との間に確立したコネクションを維持することで、リアルタイム・低遅延の遠隔制御を実現している。しかし、維持するコネクション数が増加すると、サーバ運用コストが増大する懸念がある。そこで、実施形態の通信装置は、コネクションを維持することなく被操作端末が当該通信装置と通信可能な状態を維持する手段（例えばＵＤＰホールパンチングサーバ）を別途備える構成とする。そして、所定の切り替え条件に応じて、被操作端末が当該通信装置と通信可能な状態を維持する方式（以下、通信維持方式という。）を動的に切り替える構成とする。これにより、維持するコネクション数の増加を抑制しながら、低遅延通信を実現することが可能となる。
【００１１】
以下では、被操作端末に対してアクセス先の切り替えを指示する条件（切り替え条件）などが異なるいくつかの具体的な実施形態を、図面を参照しながらより詳細に説明する。なお、以下で説明する各実施形態では、通信装置が通信する端末装置のうち、特にデジタルテレビなどの被操作端末を「第１端末装置」と表記し、スマートフォンなどの操作端末を「第２端末装置」と表記する。なお、これら操作端末と被操作端末を区別しないときは単に「端末装置」と表記する。また、以下で説明する各実施形態では、説明の便宜上、被操作端末（第１端末装置）と操作端末（第２端末装置）との組を１つのみ示すが、実際には、より多くの被操作端末と操作端末との組に対して、実施形態の通信装置が同様の処理を行う。
【００１２】
（第１実施形態）
図１は、第１実施形態の通信装置１０Ａを示す構成図である。図１に示す通信装置１０Ａは、ネットワーク４０を介して、第１端末装置２０および第２端末装置３０と通信する。通信装置１０Ａは、典型的には、一般的なコンピュータシステムとしてのハードウェア構成（ＣＰＵ、主記憶部、補助記憶部、通信インタフェース）を備えるサーバ装置として実現される。しかし、通信装置１０Ａは、例えば、ＰＣ（パーソナルコンピュータ）、デジタルテレビ、ハードディスクレコーダ、スレートＰＣ、スマートフォンなどのデジタル機器として実現されてもよい。また、通信装置１０Ａは、様々な構成上のバリエーション（ＣＰＵ、主記憶部、補助記憶部などの構成数や容量、接続インタフェース規格など）をとり得るものとする。さらに、通信装置１０Ａは、クラウドシステム上で動作する仮想マシンとして実現されてもよい。
【００１３】
本実施形態では、通信装置１０Ａは、ネットワーク４０としてのインターネット上に設置されたサーバ装置であるものとする。
【００１４】
第１端末装置２０と第２端末装置３０は、通信装置１０Ａを経由した双方向通信を行う端末装置である。これら端末装置２０，３０は、例えば、ＰＣ、ＳＴＢ（セットトップボックス）、デジタルテレビ、ハードディスクレコーダ、タブレット端末、スマートフォンなどのデジタル機器である。しかし、端末装置２０，３０は、通信装置１０Ａとネットワーク４０を介して通信できる機能を備えていれば、どのような形態の機器であってもよい。例えば、端末装置２０，３０は、ブロードバンドルータのような中継装置であってもよいし、白物家電やセンサのように、データ処理能力が低い機器であってもよい。
【００１５】
本実施形態では、上述したように、第１端末装置２０としてデジタルテレビ、第２端末装置３０としてスマートフォンを用い、スマートフォンからデジタルテレビをリアルタイム・低遅延で遠隔制御するケースを想定する。
【００１６】
ネットワーク４０は、通信装置１０Ａと端末装置２０，３０とが相互通信できるかぎりは、どのような物理媒体、構成であってもよい。本実施形態における最も一般的なネットワーク構成は、第２端末装置３０が、モバイルインターネット網を経由して通信装置１０Ａにアクセスし、第１端末装置２０が宅内ＬＡＮからブロードバンドルータを介してインターネット網に接続する構成である。しかし、このネットワーク構成のバリエーションは様々であり、この一般的な具体例に限られるものではない。
【００１７】
以下、通信装置１０Ａの機能的な構成要素について具体的に説明する。通信装置１０Ａは、図１に示すように、通信部１１、認証部１２、接続先決定部１３、第１接続維持部１４、第２接続維持部１５、判定部１６、切り替え指示部１７Ａ、ユーザ／端末管理情報記憶部１８および接続管理情報記憶部１９を備える。ユーザ／端末管理情報記憶部１８と接続管理情報記憶部１９は、異なる記憶装置を用いて実現してもよいし、同一の記憶装置上に実現してもよい。
【００１８】
通信部１１は、ネットワーク４０を介して端末装置２０，３０と通信する機能ブロックである。具体的には、通信部１１は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）からＴＣＰ／ＩＰ通信スタックを含む機能コンポーネントである。ＴＣＰ／ＩＰ通信スタックは、ＮＩＣ上にハードウェアで実装されたものであってもよいし、オペレーティングシステム（ＯＳ）上に実装される、あるいは、ドライバとして実装されるソフトウェアであってもよい。また、トランスポート層は、ＴＣＰに限定されるものではなく、例えばＵＤＰなどであってもよい。また、物理・ＭＡＣ層は、イーサネット（登録商標）だけでなく、Ｗｉｆｉなどの無線、ＩｎｆｉｎｉＢａｎｄなどであってもよい。
【００１９】
認証部１２は、端末装置２０，３０からの認証要求に応じて、ユーザ認証処理および端末認証処理を行う。端末装置２０，３０からの認証要求には、端末装置２０，３０を使用するユーザに固有の識別情報およびパスワード、端末装置２０，３０に固有の端末装置識別情報が含まれている。ユーザ識別情報およびパスワードは、例えば端末装置２０，３０を使用するユーザが入力する。端末装置識別情報は、端末装置２０，３０に予め記憶されている。
【００２０】
ユーザ認証処理は、端末装置２０，３０からの認証要求に含まれるユーザ識別情報とパスワードとの組み合わせを、ユーザ／端末管理情報記憶部１８が記憶するユーザ管理情報と照合する処理である。ユーザ管理情報は、例えば図２に示すように、ユーザ識別情報とパスワードとを関連付けたテーブルとして、ユーザ／端末管理情報記憶部１８に記憶されている。認証部１２は、端末装置２０，３０からの認証要求に含まれるユーザ識別情報とパスワードとの組み合わせがユーザ管理情報に含まれている場合に認証ＯＫとし、含まれていなければ認証ＮＧとする。
【００２１】
端末認証処理は、端末装置２０，３０からの認証要求に含まれるユーザ識別情報と端末装置識別情報との組み合わせを、ユーザ／端末管理情報記憶部１８が記憶する端末管理情報と照合する処理である。端末管理情報は、例えば図３に示すように、端末装置識別情報とユーザ識別情報とを関連付けたテーブルとして、ユーザ／端末管理情報記憶部１８に記憶されている。認証部１２は、端末装置２０，３０からの認証要求に含まれる端末装置識別情報とユーザ識別情報との組み合わせが端末管理情報に含まれている場合に認証ＯＫとし、含まれていなければ認証ＮＧとする。
【００２２】
なお、認証部１２は、端末装置２０，３０がユーザからのユーザ識別情報およびパスワードの入力を受け付ける機能を持たない場合、ユーザ認証処理を省略して端末認証処理のみを行うようにしてもよい。この場合、ユーザ識別情報は端末装置２０，３０に予め記憶され、端末装置２０，３０からの認証要求にはユーザ識別情報と端末装置識別情報とが含まれる。認証部１２は、この認証要求に含まれるユーザ識別情報と端末装置識別情報との組み合わせを、ユーザ／端末管理情報記憶部１８が記憶する端末管理情報と照合する。
【００２３】
認証部１２の認証結果（認証ＯＫ／ＮＧ）は、認証要求の要求元の端末装置２０，３０に通知される。この際、認証ＯＫの通知には、端末装置２０，３０が認証済みであることを示す後述のセッション識別情報が含まれる。通信装置１０Ａから認証ＯＫの認証結果を受け取った端末装置２０，３０は、通信装置１０Ａに対してコネクション確立要求を行う。このコネクション確立要求には、セッション識別情報と端末装置識別情報とが含まれる。
【００２４】
接続先決定部１３は、端末装置２０，３０からのコネクション確立要求に応じて、端末装置２０，３０がコネクションを確立すべき接続先（第１接続維持部１４）を決定する。本実施形態では、後述のように、第１接続維持部１４が複数の通信サーバによって構成される。接続先決定部１３は、これら第１接続維持部１４を構成する複数の通信サーバのうち、端末装置２０，３０がコネクションを確立すべき通信サーバを決定する。このとき接続先決定部１３は、コネクション確立要求の要求元が被操作端末である第１端末装置２０の場合はランダムに接続先を決定する。一方、コネクション確立要求の要求元が、すでに接続先が決定された第１端末装置２０に対応する第２端末装置３０の場合は、接続先決定部１３は、第１端末装置２０の接続先と同じ通信サーバを第２端末装置３０の接続先に決定する。
【００２５】
第１端末装置２０と第２端末装置３０との対応関係は、ユーザ／端末管理情報記憶部１８が、組み合わせ管理情報として予め記憶している。組み合わせ管理情報は、例えば図４に示すように、対応関係にある第１端末装置２０と第２端末装置３０の双方の端末装置識別情報を関連付けたテーブルとして、ユーザ／端末管理情報記憶部１８に記憶されている。接続先決定部１３は、このユーザ／端末管理情報記憶部１８が記憶する組み合わせ管理情報を参照して、第１端末装置２０と第２端末装置３０との対応関係を特定する。また、すでに決定した第１端末装置２０の接続先は、接続管理情報記憶部１９が記憶する後述の接続管理情報を参照することで特定できる。接続先決定部１３は、すでに接続先が決定された第１端末装置２０に対応する第２端末装置３０の場合は、以上のように特定した第１端末装置２０の接続先と同じ通信サーバを、第２端末装置３０の接続先として決定する。
【００２６】
接続先決定部１３は、コネクション確立要求の要求元である端末装置２０，３０の接続先を決定すると、当該端末装置２０，３０についての接続管理情報を接続管理情報記憶部１９に登録する。接続管理情報は、例えば図５に示すように、端末装置２０，３０の端末装置識別情報と、コネクション識別情報と、第１接続維持部１４のサーバ識別情報（ＴＣＰサーバ装置識別情報）と、第２接続維持部１５のサーバ識別情報（ＵＤＰサーバ装置識別情報）と、通信維持方式とを関連付けたテーブルとして、接続管理情報記憶部１９に記憶される。なお、図５では、端末装置識別情報が、主キーとなる構成を示しているが、端末識別情報を用いず、コネクション確立要求の前処理として実行され得るユーザ認証処理の結果得られる、セッション識別情報などをキーとして用いてもよい。
【００２７】
コネクション識別情報は、端末装置２０，３０と通信装置１０Ａとの間のコネクションを識別するための情報であり、接続先決定部１３が端末装置２０，３０からのコネクション確立要求に応じて発行する。ＴＣＰサーバ装置識別情報は、接続先決定部１３が端末装置２０，３０の接続先として決定した第１接続維持部１４の通信サーバの識別情報である。ＵＤＰサーバ装置識別情報は、第２接続維持部１５を構成する通信サーバの識別情報である。なお、第２端末装置３０についての接続管理情報には、ＵＤＰサーバ装置識別情報が含まれていなくてもよい。
【００２８】
通信維持方式は、第１端末装置２０における現在の通信維持方式を示す情報である。本実施形態では、第１端末装置２０の通信維持方式として、第１接続維持部１４によるコネクションの維持（以下、第１方式という。）と、第２接続維持部１５に対する定期的なアクセスによって通信可能な状態を維持する方式（以下、第２方式という。）がある。図５の例では、第１端末装置２０の現在の通信維持方式が第１方式の場合は通信維持方式として「ｔｃｐ」が記憶され、第１端末装置２０の現在の通信維持方式が第２方式の場合は通信維持方式として「ｕｄｐ」が記憶される。また、第１端末装置２０の通信維持方式が決まっていない場合、通信維持方式として「ｕｎｋｎｏｗｎ」が記憶される。
【００２９】
なお、図５では、第１端末装置２０についての接続管理情報のみを示しているが、第１端末装置２０についての接続管理情報と第２端末装置３０についての接続管理情報が混在する場合、これらを区別するために端末種別（第１端末装置２０（被操作端末）であるか第２端末装置３０（操作端末）であるか）を示す情報を、接続管理情報に含めるように構成してもよい。
【００３０】
上述したように接続先決定部１３は、すでに接続先が決定された第１端末装置２０に対応する第２端末装置３０からのコネクション確立要求に応じて接続先を決定する場合、接続管理情報を参照する。そして、第２端末装置３０に対応する第１端末装置２０の端末装置識別情報に関連付けられたＴＣＰサーバ装置識別情報で識別される通信サーバを、コネクション確立要求の要求元である第２端末装置３０の接続先として決定する。
【００３１】
また、接続先決定部１３は、コネクション確立要求の要求元である端末装置２０，３０の接続先を決定すると、当該端末装置２０，３０に対して接続先情報を通知する。この接続先情報には、接続先として決定した第１接続維持部１４の通信サーバのＴＣＰサーバ装置識別情報が含まれる。また、コネクション確立要求の要求元が第１端末装置２０の場合は、この通知にさらに、第２接続維持部１５を構成する通信サーバのＵＤＰサーバ装置識別情報とコネクション識別情報とが含まれる。
【００３２】
第１接続維持部１４は、端末装置２０，３０とのコネクションを維持し（第１方式）、端末装置２０，３０間の通信を仲介するサーバである。第１接続維持部１４の実体は、端末装置２０，３０が実際に接続され、双方向通信を行う複数の通信サーバである。これら複数の通信サーバは、仮想マシン上、もしくは物理マシン上で動作するサーバソフトウェアであり、操作端末である第２端末装置３０と被操作端末である第１端末装置２０の双方のコネクション情報を当該サーバソフトウェア・プロセスが参照可能なメモリ空間にキャッシュする。第１接続維持部１４は、ＴＣＰやＴＬＳ／ＳＳＬの通信コネクションを維持することを想定しており、その上位の通信プロトコルについては問わない。本実施形態では、第１接続維持部１４は、ＷｅｂＳｏｃｋｅｔサーバソフトウェアを想定している。
【００３３】
第２接続維持部１５は、第１接続維持部１４とは異なる方式（第２方式）により、第１端末装置２０が当該通信装置１０Ａと通信可能な状態を維持するサーバ装置である。具体的には、第１接続維持部１４がコネクションの概念を有するＴＣＰ、ＴＳＬ／ＳＳＬであったのに対し、第２接続維持部１５は、コネクションを維持しないＵＤＰ、ＤＴＬＳの利用を想定している。本実施形態では、第２接続維持部１５は、第１端末装置２０から定期的なＵＤＰ、ＤＴＬＳパケット（ＵＤＰハートビート）を受信し、これにより生成・維持される通信経路上のルーティングテーブルによって、通信装置１０Ａ側から第１端末装置２０へのＵＤＰアクセスが可能な状態を維持するＵＤＰホールパンチングサーバを想定している。
【００３４】
判定部１６は、コネクション確立要求を行った第１端末装置２０に対し、第２接続維持部１５による第２方式によって通信可能な状態を維持することが可能か否かを判定する。この判定部１６の判定結果（ＯＫ／ＮＧ）は、コネクション確立要求の要求元の第１端末装置２０に通知される。なお、判定部１６による判定処理の具体例については詳細を後述する。
【００３５】
また、判定部１６は、当該第１端末装置２０に対する判定結果に従って、コネクション確立要求を行った第１端末装置２０についての接続管理情報を更新する。すなわち、判定部１６は、当該第１端末装置２０が第２方式によって通信可能な状態を維持できると判定した場合、当該第１端末装置２０についての接続管理情報に含まれる通信維持方式を「ｕｄｐ」とする。一方、当該第１端末装置２０が第２方式によって通信可能な状態を維持できないと判定すると、判定部１６は、当該第１端末装置２０についての接続管理情報に含まれる通信維持方式を「ｔｃｐ」とする。
【００３６】
なお、図１の構成図では、判定部１６を第２接続維持部１５と異なるブロックで図示しているが、第２接続維持部１５の一つの機能として判定部１６を実現してもよい。
【００３７】
切り替え指示部１７Ａは、第２方式によって通信可能な状態を維持できると判定された第１端末装置２０に対して、所定の切り替え条件が成立した場合に、通信維持方式を第１方式から第２方式、または第２方式から第１方式へと切り替えることを指示する。
【００３８】
本実施形態では、通信装置１０Ａに対する第２端末装置３０のコネクションの確立および切断を切り替え条件とする。すなわち、切り替え指示部１７Ａは、第２方式によって通信可能な状態を維持している第１端末装置２０と対応関係にある第２端末装置３０からコネクション確立要求があった場合に、第１端末装置２０に対して、通信維持方式を第２方式から第１方式に切り替えることを指示する。この指示は、例えば第２接続維持部１５からのメッセージとして、第１端末装置２０に通知される。
【００３９】
また、その後、第２端末装置３０と通信装置１０Ａとの間のコネクションの切断が検知された場合、切り替え指示部１７Ａは、第１方式によって通信可能な状態を維持している（通信装置１０Ａとのコネクションが維持されている）第１端末装置２０に対して、通信維持方式を第１方式から第２方式に切り替えることを指示する。この指示は、例えば第１接続維持部１４からのメッセージとして、第１端末装置２０に通知される。
【００４０】
次に、第１端末装置２０の機能的な構成要素について具体的に説明する。図６は、第１端末装置２０を示す構成図である。第１端末装置２０は、図６に示すように、通信部２１、認証要求部２２、通信制御部２３、切り替え部２４および記憶部２５を備える。
【００４１】
通信部２１は、通信装置１０Ａと通信する機能ブロックであり、通信装置１０Ａの通信部１１と同様の構成とすることができる。
【００４２】
認証要求部２２は、第１端末装置２０を使用するユーザの操作に応じて、例えばユーザから入力されたユーザ識別情報やパスワード、記憶部２５が記憶する端末装置識別情報を取得して、通信装置１０Ａに対して認証要求を行う。
【００４３】
通信制御部２３は、通信装置１０Ａとの間の通信を制御する。通信制御部２３は、第１方式により通信装置１０Ａと通信可能な状態を維持する場合は、通信装置１０Ａによって接続先として決定された第１接続維持部１４の通信サーバを指定してコネクション確立要求を行い、コネクションを確立させる。このコネクションは第１接続維持部１４によって維持される。また、通信制御部２３は、第２方式により通信装置１０Ａと通信可能な状態を維持する場合は、通信装置１０Ａの第２接続維持部１５に対して定期的なアクセス（ポーリング）を行う。
【００４４】
切り替え部２４は、通信装置１０Ａの切り替え指示部１７Ａからの切り替え指示に応じて、通信維持方式を第１方式から第２方式、または第２方式から第１方式へと切り替える。
【００４５】
次に、第１実施形態の通信装置１０Ａの動作を説明する。図７は、第１実施形態の通信装置１０Ａの動作を示すシーケンス図である。なお、図７中のパラメータ表記における“｛｝”は、中の要素がいずれか一方を取ることを表す。また“＜＞”は、要素がオプションであることを表す。パラメータ全体が“＜＞”で囲われている場合は、メッセージ自体がオプションであることを表す。以下では、まず、図７で用いている各パラメータについて説明する。
【００４６】
ｓｅｓｓｉｏｎ＿ｉｄは、セッション識別情報を表す。セッション識別情報は、上述したように、被操作端末（例えばデジタルテレビ）である第１端末装置２０、操作端末（例えばスマートフォン（のアプリ））である第２端末装置３０が認証済みであることを示している。セッション識別情報は、例えば、上述した認証処理の結果が認証ＯＫであった場合に発行される。なお、正規の（通信装置１０Ａへの接続権限を持つ）端末装置２０，３０に対し、予め秘密情報としてセッション識別情報を埋め込んでいてもよい。また、この秘密情報として端末装置２０，３０に埋め込むセッション識別情報を定期的に更新する機構を、端末装置２０，３０と通信装置１０Ａとの間に設けるようにしてもよい。
【００４７】
ｄｅｖｉｃｅ＿ｉｄは、端末装置識別情報（ｄｓｔ＿ｄｅｖｉｃｅ＿ｉｄは、通信相手の端末装置の端末装置識別情報）を表す。端末装置識別情報は、通信装置１０Ａが端末装置２０，３０の初回接続時などに一意な識別子として生成・発行してもよいし、予め端末装置２０，３０に埋め込んでおいてもよい。また、ＭＡＣアドレスなど、端末装置２０，３０に固有の識別情報を利用してもよい。
【００４８】
ｔｃｐ＿ｓｅｒｖｅｒ＿ｉｄは、ＴＣＰサーバ装置識別情報を表す。ＴＣＰサーバ装置識別情報は、上述したように、端末装置２０，３０の接続先として決定した第１接続維持部１４の通信サーバの識別情報であり、具体的には接続先のＵＲＬである。第１接続維持部１４としてＷｅｂＳｏｃｋｅｔサーバを用いる場合、ＴＣＰサーバ装置識別情報は、例えば、ws://…、wss://…のような表記となる。
【００４９】
ｕｄｐ＿ｓｅｒｖｅｒ＿ｉｄは、ＵＤＰサーバ装置識別情報を表す。ＵＤＰサーバ装置識別情報は、上述したように、第２接続維持部１５を構成する通信サーバの識別情報であり、ＦＱＤＮであってもよいし、ＩＰアドレスとポート番号の組で構成してもよい。ＵＤＰサーバ装置識別情報は、判定部１６による判定時、もしくは、コネクション確立要求の要求元の第１端末装置２０が第２方式によって通信可能な状態を維持できるとすでに判定されている場合に払い出すように構成してもよいし、常に払い出すように構成してもよい。
【００５０】
ｃｏｎｎ＿ｉｄは、コネクション識別情報（ｄｓｔ＿ｃｏｎｎ＿ｉｄは、通信相手の端末装置のコネクション識別情報）を表す。コネクション識別情報は、第１接続維持部１４の複数の通信サーバ（ＷｅｂＳｏｃｋｅｔサーバ）を跨いで一意になるように構成してもよいし、各通信サーバ内で一意になるように構成してもよい。また、コネクション識別情報は、コネクション確立要求の応答として払い出すように構成してもよいし、通信維持方式を第２方式から第１方式に切り替えることを指示する際に払い出すように構成してもよい。また、コネクション識別情報は、第１接続維持部１４とのＷｅｂＳｏｃｋｅｔ接続確立シーケンスにおいて払い出すようにしてもよい。
【００５１】
ｔｃｐ＿ｏｒ＿ｕｄｐは、通信維持方式を表す。通信維持方式は、上述したように、第１端末装置２０における現在の通信維持方式を示す情報であり、第１方式の場合は「ｔｃｐ」、第２方式の場合は「ｕｄｐ」となり、第１端末装置２０の通信維持方式が切り替わるたびに更新される。
【００５２】
図７のシーケンス図は、第１端末装置２０が通信装置１０Ａに対してコネクション確立要求を行ってから、第２端末装置３０との間でＷｅｂＳｏｃｋｅｔ通信を行うまでの流れを示している。なお、図７のシーケンス図で示す動作に先立ち、第１端末装置２０は通信装置１０Ａに対して認証要求を行い、認証ＯＫの認証結果が通知されている。
【００５３】
まず、第１端末装置２０が通信装置１０Ａに対してコネクション確立要求を行うと（ステップＳ１０１）、接続先決定部１３が、要求元の第１端末装置２０の接続先となる第１接続維持部１４の通信サーバ（ＷｅｂＳｏｃｋｅｔサーバ）を決定して、接続管理情報記憶部１９に接続管理情報を登録する（ステップＳ１０２）。また、接続先決定部１３は、要求元の第１端末装置２０に対して、ＴＣＰサーバ装置識別情報とＵＤＰサーバ装置識別情報とコネクション識別情報とセッション識別情報を含む接続先情報を通知する（ステップＳ１０３）。
【００５４】
次に、第１端末装置２０が通信装置１０Ａに対して判定要求を行うと（ステップＳ１０４）、この判定要求に応じて、判定部１６が、要求元の第１端末装置２０が第２方式によって通信装置１０Ａと通信可能な状態を維持できるか否かの判定処理を行う（ステップＳ１０５）。そして、判定部１６は、判定処理の結果に応じて、接続管理情報記憶部１９が記憶する接続管理情報を更新する（ステップＳ１０６）。なお、判定処理の具体例は後述する。なお、ステップＳ１０４において、サーバ装置が判定要求のメッセージ完全性（改竄されていないこと）を保証するために、セッション識別情報を共有鍵情報としたメッセージ認証コードを加えてもよい。具体的には、端末装置は、ステップＳ１０４のメッセージとセッション識別情報を鍵として用いてＨＭＡＣ（Ｈａｓｈ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）を生成し、これをメッセージに加える。一方のサーバ装置は、メッセージ中の端末側の識別情報（端末識別情報もしくはコネクション識別情報）に基づき、接続管理情報記憶部からセッション識別情報を取得し、これを鍵として、受信メッセージからＨＭＡＣを生成する。メッセージ中のＨＭＡＣと、生成したＨＭＡＣの一致をもって、認証を経た正しい端末装置からの判定要求であることを確認する。サーバ装置は、ＨＭＡＣが一致しなければ、メッセージを破棄ないしエラー応答を送信する。以上の手順は、ステップＳ１０７等のＵＤＰ通信処理において常に実施してもよい。
【００５５】
以降の動作は、ステップＳ１０５の判定処理の結果によって異なる。まず、第１端末装置２０が第２方式によって通信装置１０Ａと通信可能な状態を維持できると判定された場合の動作を説明する。この場合、通信装置１０Ａから第１端末装置２０に対して判定結果：ＯＫが通知される。第１端末装置２０は、判定部１６からの判定結果：ＯＫの通知を受けて、第２方式（ＵＤＰハートビート）により、通信装置１０Ａと通信可能な状態を維持する（ステップＳ１０７）。これにより、通信装置１０Ａは、第２接続維持部１５から第１端末装置２０に対してＵＤＰアクセスできる状態が維持される。
【００５６】
その後、第１端末装置２０と対応関係にある第２端末装置３０が通信装置１０Ａに対してコネクション確立要求を行うと（ステップＳ１０８）、接続先決定部１３が、第１端末装置２０の接続先と同じ通信サーバ（ＷｅｂＳｏｃｋｅｔサーバ）を第２端末装置３０の通信先として決定するとともに、切り替え指示部１７Ａが、第２接続維持部１５を介して、第１端末装置２０に対して第２方式（ＵＤＰハートビート）から第１方式（ＷｅｂＳｏｃｋｅｔ接続）への切り替えを指示するための処理を行う。具体的には、切り替え指示部１７Ａは、第２接続維持部１５に対して、切り替え指示を出す（ステップＳ１０９）。第２接続維持部１５は、この切り替え指示に応じて接続管理情報記憶部１９が記憶する接続管理情報を更新するとともに（ステップＳ１１０）、切り替え指示部１７Ａからの切り替え指示を、第１端末装置２０に対してメッセージとして通知する（ステップＳ１１１）。なお、コネクション確立要求を行った第２端末装置３０に対しては、接続先決定部１３からＴＣＰサーバ装置識別情報とコネクション識別情報とを含む接続先情報が通知される（ステップＳ１１２）。
【００５７】
通信装置１０Ａから切り替え指示を受けた第１端末装置２０は、この切り替え指示に応じて、接続先として通知された第１接続維持部１４の通信サーバ（ＷｅｂＳｏｃｋｅｔサーバ）にアクセスして、通信装置１０Ａとの間のコネクション（ＷｅｂＳｏｃｋｅｔ接続）を確立する（ステップＳ１１３）。第１接続維持部１４は、第１端末装置２０との間のコネクションが確立されると、接続管理情報記憶部１９が記憶する接続管理情報を更新する（ステップＳ１１４）。
【００５８】
一方、第２方式によって通信装置１０Ａと通信可能な状態を維持できないと判定された場合は、通信装置１０Ａから第１端末装置２０に対して判定結果：ＮＧが通知される。この場合、第１端末装置２０は、接続先として通知された第１接続維持部１４の通信サーバ（ＷｅｂＳｏｃｋｅｔサーバ）にアクセスして、通信装置１０Ａとの間のコネクション（ＷｅｂＳｏｃｋｅｔ接続）を確立する（ステップＳ１１５）。第１接続維持部１４は、第１端末装置２０との間のコネクションが確立されると、接続管理情報記憶部１９が記憶する接続管理情報を更新する（ステップＳ１１６）。
【００５９】
その後、第１端末装置２０と対応関係にある第２端末装置３０が通信装置１０Ａに対してコネクション確立要求を行うと（ステップＳ１１７）、接続先決定部１３が、第１端末装置２０の接続先と同じ通信サーバ（ＷｅｂＳｏｃｋｅｔサーバ）を第２端末装置３０の通信先として決定し、ＴＣＰサーバ装置識別情報とコネクション識別情報とを含む接続先情報を第２端末装置３０に通知する（ステップＳ１１８）。
【００６０】
その後、第２端末装置３０が、接続先として通知された第１接続維持部１４の通信サーバ（ＷｅｂＳｏｃｋｅｔサーバ）にアクセスし、通信装置１０Ａとの間のコネクション（ＷｅｂＳｏｃｋｅｔ接続）を確立する（ステップＳ１１９）。以降、第１端末装置２０と第２端末装置３０との間で、第１接続維持部１４の同一のＷｅｂＳｏｃｋｅｔサーバを介して、ＷｅｂＳｏｃｋｅｔ通信が行われる（ステップＳ１２０）。
【００６１】
ここで、図７のステップＳ１０４における判定処理の具体例について、図８を参照して説明する。図８は、判定部１６による判定処理の手順を示すフローチャートである。この図８に示す判定処理は、第１端末装置２０からの判定要求に応じて行われる。第１端末装置２０からの判定要求は、例えばＵＤＰパケットで送信される。
【００６２】
判定部１６は、第１端末装置２０からＵＤＰパケットを受信すると（ステップＳ２０１）、受信したＵＤＰパケットを解析して要求元のＩＰアドレス・ポート番号を取得する（ステップＳ２０２）。そして、判定部１６は、ステップＳ２０２で取得したＩＰアドレス・ポート番号に対して、ＵＤＰパケットを送信する（ステップＳ２０３）。
【００６３】
その後、判定部１６は、ステップＳ２０３で送信したＵＤＰパケットに対するＡＣＫを受信できたか否かを判定する（ステップＳ２０４）。そして、ＡＣＫを受信できた場合は（ステップＳ２０４：Ｙｅｓ）、判定部１６は、第１端末装置２０が第２方式により通信装置１０Ａと通信可能な状態を維持できると判断し、第１端末装置２０に対して判定結果：ＯＫを通知する（ステップＳ２０５）。
【００６４】
一方、ＡＣＫを受信できずにタイムアウトした場合（ステップＳ２０４：Ｎｏ、ステップＳ２０６：Ｙｅｓ）、判定部１６は、第１端末装置２０が第２方式では通信装置１０Ａと通信可能な状態を維持できないと判断し、第１端末装置２０に対して判定結果：ＮＧを通知する（ステップＳ２０７）。なお、タイムアウトするまでは（ステップＳ２０６：Ｎｏ）、ステップＳ２０４の判定が繰り返される。
【００６５】
次に、第１端末装置２０との間でＷｅｂＳｏｃｋｅｔ通信を行った第２端末装置３０が、通信装置１０Ａとのコネクションを切断した場合の動作について説明する。図９は、第２端末装置３０がコネクションを切断した場合の通信装置１０Ａの動作を示すシーケンス図である。
【００６６】
まず、第２端末装置３０が第１接続維持部１４との間のＷｅｂＳｏｃｋｅｔコネクションを切断すると（ステップＳ３０１）、第１接続維持部１４が、接続管理情報記憶部１９が記憶する第２端末装置３０についての接続管理情報を削除する（ステップＳ３０２）。そして、切り替え指示部１７Ａが、第１端末装置２０に対して、第１方式（ＷｅｂＳｏｃｋｅｔ接続）から第２方式（ＵＤＰハートビート）への切り替えを指示する（ステップＳ３０３）。この切り替え指示は、第１接続維持部１４を介して第１端末装置２０に通知される。
【００６７】
通信装置１０Ａから切り替え指示を受けた第１端末装置２０は、この切り替え指示に応じて、まず、第２接続維持部１５に対するＵＤＰハートビート（第２方式）を開始する（ステップＳ３０４）。第２接続維持部１５は、第１端末装置２０のＵＤＰハートビートが開始されると、接続管理情報記憶部１９が記憶する接続管理情報を更新する（ステップＳ３０５）。
【００６８】
その後、第１端末装置２０は、第１接続維持部１４とのＷｅｂＳｏｃｋｅｔコネクションを切断する（ステップＳ３０６）。第１接続維持部１４は、第１端末装置２０とのＷｅｂＳｏｃｋｅｔコネクションが切断されると、接続管理情報記憶部１９が記憶する接続管理情報を更新する（ステップＳ３０７）。
【００６９】
以上、具体的な例を挙げながら詳細に説明したように、本実施形態の通信装置１０Ａは、先にコネクション確立要求を行った被操作端末である第１端末装置２０に対し、第２方式によって当該通信装置１０Ａと通信可能な状態を維持させておく。そして、操作端末である第２端末装置３０がコネクション確立要求を行ったときに、第１端末装置２０に対して、通信維持方式を第２方式から第１方式に切り替えることを指示する。また、第２端末装置３０とのコネクションの切断が検知されると、第１方式により当該通信装置１０Ａと通信可能な状態を維持している第１端末装置２０に対して、通信維持方式を第１方式から第２方式に切り替えることを指示する。つまり、本実施形態の通信装置１０Ａは、操作端末である第２端末装置３０が接続している間だけ、被操作端末である第１端末装置２０との間の第１接続維持部１４によるコネクションを維持する構成である。したがって、本実施形態の通信装置１０Ａは、第１接続維持部１４が維持するコネクション数の増加を抑制し、メモリ使用量の増加を有効に抑制しながら、第１端末装置２０と第２端末装置３０との間の第１接続維持部１４を介した低遅延通信を実現することができる。
【００７０】
また、本実施形態の通信装置１０Ａは、コネクションの確立を要求する第１端末装置２０が第２方式によって当該通信装置１０Ａと通信可能な状態を維持できるか否かを判定する。そして、第２方式によって通信可能な状態を維持できる第１端末装置２０に対して、上記の切り替え指示を行う。したがって、本実施形態の通信装置１０Ａは、さまざまなネットワーク環境に有効に適用できる。なお、第１端末装置２０が第２方式によって通信装置１０Ａと通信可能な状態を維持できることが保障されるネットワーク環境に適用する場合は、上記の判定を行わないように構成してもよい。
【００７１】
（変形例１）
上述した例では、通信装置１０Ａに対してコネクション確立要求を行った第１端末装置２０が、判定部１６による判定処理の結果を待ち、判定結果が通知されるとそれに従って第１方式または第２方式で通信装置１０Ａと通信可能な状態を維持する構成とした。しかし、第１端末装置２０が判定部１６による判定処理が終了するまでは第１方式により通信可能な状態を維持し、判定結果がＯＫの場合に、切り替え指示部１７Ａが第１端末装置２０に対して第１方式から第２方式への切り替えを指示するように構成してもよい。これにより、判定部１６が判定を行っている間に、操作端末である第２端末装置３０が第１接続維持部１４を介して第１端末装置２０にアクセスした場合であっても、第１端末装置２０がこのアクセスを受け付けることが可能になる。
【００７２】
（変形例２）
上述した例では、第１端末装置２０が通信装置１０Ａに対してコネクション確立要求を行うと判定部１６が判定処理を行う構成とした。つまり、判定部１６による判定処理は、第１端末装置２０がコネクション確立要求を行うたびに行われる。しかし、すでに判定処理を行った第１端末装置２０に対しては、その判定結果を端末装置識別情報と対応付けて記憶しておき、当該第１端末装置２０が第１接続維持部１４によるコネクションを切断した後にコネクション確立要求を再度行った場合は、記憶した判定結果を再利用することで繰り返しの判定処理を省略するように構成してもよい。これにより、第１端末装置２０が第２方式により通信装置１０Ａと通信可能な状態を維持できるか否かの判定を効率よく行うことができる。なお、判定結果は、例えば後述の端末情報記憶部６２（図１１参照）のように、端末識別情報と関連付けて情報を記憶する記憶部を追加し、ここに記憶させればよい。
【００７３】
また、判定結果が記憶されている第１端末装置２０がコネクション確立要求を行った場合に、判定部１６が所定の再判定条件が成立するか否かを判断し、再判定条件が成立する場合は記憶している判定結果を再利用せずに、判定処理を再度行うように構成してもよい。この場合の再判定条件としては、第２接続維持部１５を介した切り替え指示に対して応答がなかった場合（第２接続維持部１５による通信失敗が検知された場合）、前回の判定処理からの経過時間が所定時間を越えた場合、判定結果の再利用回数が所定回数を超えた場合、第１端末装置２０の外部ＩＰアドレス・ポート番号の変化を検知した場合などが挙げられる。
【００７４】
（変形例３）
上述した例では、第１端末装置２０の通信維持方式を必要なときだけ第１方式とするために、第２端末装置３０からのコネクション確立要求があった場合に、第１端末装置２０に対して通信維持方式を第２方式から第１方式へ切り替えることを指示し、第２端末装置３０との間のコネクション切断が検知されると、第１端末装置２０に対して通信維持方式を第１方式から第２方式へ切り替えることを指示する構成とした。しかし、第１端末装置２０の使用頻度が高い時間帯を予め定めておき、現在時刻がその時間帯の開始時刻となると、第１端末装置２０に対して通信維持方式を第２方式から第１方式へ切り替えることを指示し、現在時刻がその時間帯の終了時刻になると、第１端末装置２０に対して通信維持方式を第１方式から第２方式へ切り替えることを指示する構成としてもよい。
【００７５】
この場合、第１端末装置２０ごとに使用頻度が高い時間帯を定め、その時間帯の情報を端末装置識別情報と関連付けて記憶する構成であってもよい。特に通信装置１０Ａが時差のある様々な地域に存在する多数の第１端末装置２０と通信する場合、第１端末装置２０ごと、あるいは地域ごとに使用頻度が高い時間帯を定めておくことで、上述した切り替えを効果的に実施することができる。
【００７６】
（変形例４）
上述した例では、端末装置は、一度コネクション確立要求を行うと、ＵＤＰハートビートで維持できる限りは、サーバ装置との接続を維持できる構成になっているが、何らかのタイムアウトを設け、定期的にコネクション確立要求から再実行させる構成も考えられる。例えば、上述したＨＭＡＣ生成に要するセッション識別子は、定期的にリフレッシュする方がセキュリティ上好ましい。サーバ装置は、セッション識別子のタイムアウトを検出し、該当端末装置に対して、コネクション確立要求からやり直すトリガを送信するように構成してもよい。
【００７７】
（第２実施形態）
次に、第２実施形態について説明する。第２実施形態は、第１端末装置２０の通信維持方式を切り替える切り替え条件が第１実施形態とは異なる。すなわち、第１実施形態では、第２端末装置３０のコネクション確立要求とコネクションの切断を切り替え条件としていたのに対し、第２実施形態では、通信装置の負荷状態（第１接続維持部１４の負荷状態）が大きいことを切り替え条件とする。以下、第１実施形態と共通の構成要素には同一の符号を付して重複した説明を省略し、本実施形態に特徴的な部分についてのみ説明する。
【００７８】
図１０は、第２実施形態の通信装置１０Ｂを示す構成図である。本実施形態の通信装置１０Ｂは、図１０に示すように、第１実施形態の通信装置１０Ａの構成に加えて、状態情報生成部５１および状態情報記憶部５２を備える。また、本実施形態の通信装置１０Ｂは、第１実施形態の切り替え指示部１７Ａに代えて、切り替え指示部１７Ｂを備える。
【００７９】
状態情報生成部５１は、第１接続維持部１４の負荷状態を表す状態情報を生成する。状態情報は、例えば、第１接続維持部１４がコネクションを維持している端末装置２０，３０の数（コネクションの収容台数）、メモリ使用量、プロセッサの使用率のいずれか、または組み合わせを表す。コネクションの収容台数とメモリ使用量は、これらのキャパシティ情報を予め保持しておき、ＣＰＵ使用率のように、キャパシティ情報と比較しての相対値であってもよい。状態情報の生成は、例えば所定周期で定期的に生成される。また、負荷状態の変化を検知した場合に状態情報を生成するように構成してもよい。
【００８０】
状態情報記憶部５２は、状態情報生成部５１によって生成された状態情報を記憶する。状態情報記憶部５２は、状態情報生成部５１によって新たな状態情報が生成されるたびに、記憶している情報を更新する。
【００８１】
切り替え指示部１７Ｂは、状態情報記憶部５２が記憶する状態情報を随時参照し、状態情報（コネクションの収容台数、メモリ使用量、プロセッサの使用率のいずれか、または組み合わせ）を所定の閾値と比較する。そして、状態情報が所定の閾値を超えた場合に、第１方式により通信装置１０Ｂと通信可能な状態を維持している第１端末装置２０に対して、接続維持方法を第１方式から第２方式に切り替えることを指示する。すなわち、本実施形態の通信装置１０Ｂでは、負荷が低い間は第１端末装置２０に対して第１方式による通信維持を許容し、負荷が高くなると第２方式への切り替えを指示する。
【００８２】
通信維持方式の切り替え指示は、例えば、第１方式により通信装置１０Ｂと通信可能な状態を維持している第１端末装置２０のうち、任意に定めた基準に従って順次行うことができる。例えば、負荷状態を表す状態情報が閾値以下になるまで、コネクション確立要求を行ったタイミングが最も遅い第１端末装置２０から順に切り替え指示を出す、あるいはコネクション確立要求を行ったタイミングが最も早いものから順に切り替え指示を出すといった方法が考えられる。
【００８３】
以上のように、本実施形態の通信装置１０Ｂは、負荷が低い間は第１端末装置２０に対して第１方式による通信維持を許容し、負荷が高くなると第２方式への切り替えを指示する構成としている。したがって、本実施形態の通信装置１０Ｂによれば、第１実施形態と同様の効果に加えて、第１端末装置２０の通信維持方式を頻繁に切り替えることに伴う遅延や処理負荷の増大を有効に抑制できるといった効果が得られる。
【００８４】
（第３実施形態）
次に、第３実施形態について説明する。第３実施形態では、所定の切り替え条件が成立した場合に、第１方式により通信可能な状態を維持している第１端末装置２０であって、所定の切り替え対象条件を満たす第１端末装置２０に対して、通信維持方式を第１方式から第２方式に切り替えることを指示する。以下、第１実施形態と共通の構成要素には同一の符号を付して重複した説明を省略し、本実施形態に特徴的な部分についてのみ説明する。
【００８５】
図１１は、第３実施形態の通信装置１０Ｃを示す構成図である。本実施形態の通信装置１０Ｃは、図１１に示すように、第１実施形態の通信装置１０Ａの構成に加えて、端末情報生成部６１および端末情報記憶部６２を備える。また、本実施形態の通信装置１０Ｃは、第１実施形態の切り替え指示部１７Ａに代えて、切り替え指示部１７Ｃを備える。
【００８６】
端末情報生成部６１は、第１端末装置２０に関する各種情報を生成する。端末情報生成部６１は、例えば、通信装置１０Ｃに対する第１端末装置２０からの通信に含まれる情報（ＨＴＴＰヘッダに含まれるＵｓｅｒ−Ａｇｅｎｔ情報などの通信プロトコル内に設定された機器情報に類する情報）や、第１端末装置２０を使用するユーザによって明示的に登録された第１端末装置２０に関する情報などを取得して、端末情報を生成する。端末情報は、例えば、第１端末装置２０の機種情報や、第２端末装置３０から第１端末装置２０への過去のアクセス履歴などである。アクセス履歴は、第２端末装置３０から第１端末装置２０に対して過去に行われたアクセスの有無、アクセス回数、アクセス頻度、最終アクセス時間、アクセス時間の統計情報などを含む。
【００８７】
端末情報記憶部６２は、端末情報生成部６１によって生成された端末情報を、第１端末装置２０の端末装置識別情報と関連付けて記憶する。
【００８８】
切り替え指示部１７Ｃは、所定の切り替え条件が成立した場合に、第１方式により通信可能な状態を維持している第１端末装置２０であって、所定の切り替え対象条件を満たす第１端末装置２０に対して、通信維持方式を第１方式から第２方式に切り替えることを指示する。第１端末装置２０が所定の切り替え対象条件を満たすか否かは、端末情報記憶部６２が記憶する端末情報に基づいて判断される。
【００８９】
例えば、切り替え指示部１７Ｃは、端末情報に含まれる機種情報をもとに第１端末装置２０の機種を特定する。そして、第１端末装置２０が白物家電などの情報処理能力の低い機器であれば切り替え対象条件を満たさないと判断し、第１端末装置２０がＰＣ、タブレット端末、デジタルテレビなどの情報処理能力が高い機器であれば切り替え条件を満たすと判断する。つまり、切り替え指示部１７Ｃは、所定の切り替え条件が成立した場合に、第１方式により通信可能な状態を維持している第１端末装置２０が情報処理能力の高い機器であることを条件に、この第１端末装置２０に対して、通信維持方式を第１方式から第２方式に切り替えることを指示する。
【００９０】
また、切り替え指示部１７Ｃは、端末情報に含まれるアクセス履歴をもとに、第１端末装置２０が過去に一度でも第２端末装置３０からアクセスされた場合は、切り替え対象条件を満たさないと判断し、第１端末装置２０が過去に一度も第２端末装置３０からアクセスされていない場合は、切り替え対象条件を満たすと判断してもよい。つまり、切り替え指示部１７Ｃは、所定の切り替え条件が成立した場合に、第１方式により通信可能な状態を維持している第１端末装置２０が過去に第２端末装置３０から一度もアクセスされていないことを条件に、この第１端末装置２０に対して、通信維持方式を第１方式から第２方式に切り替えることを指示する構成であってもよい。
【００９１】
また、切り替え指示部１７Ｃは、端末情報に含まれるアクセス履歴をもとに、第１端末装置２０が過去に第２端末装置３０から高頻度でアクセスされている場合は、切り替え対象条件を満たさないと判断し、第１端末装置２０が第２端末装置３０からアクセスされる頻度が低い場合は、切り替え対象条件を満たすと判断してもよい。つまり、切り替え指示部１７Ｃは、所定の切り替え条件が成立した場合に、第１方式により通信可能な状態を維持している第１端末装置２０が、過去に第２端末装置３０から高頻度でアクセスされていないことを条件に、この第１端末装置２０に対して、通信維持方式を第１方式から第２方式に切り替えることを指示する構成であってもよい。
【００９２】
また、切り替え指示部１７Ｃは、端末情報に含まれるアクセス履歴をもとに、第１端末装置２０が第２端末装置３０から最後にアクセスされてからの経過時間が所定時間以下であれば、切り替え対象条件を満たさないと判断し、第１端末装置２０が第２端末装置３０から最後にアクセスされてからの経過時間が所定時間を越えていれば、切り替え対象条件を満たすと判断してもよい。つまり、切り替え指示部１７Ｃは、所定の切り替え条件が成立した場合に、第１方式により通信可能な状態を維持している第１端末装置２０が、第２端末装置３０から最後にアクセスされてからの経過時間が所定時間を越えていることを条件に、この第１端末装置２０に対して、通信維持方式を第１方式から第２方式に切り替えることを指示する構成であってもよい。
【００９３】
以上のように、本実施形態の通信装置１０Ｃは、第１端末装置２０の機種や第２端末装置３０からのアクセス履歴に応じて、通信維持方式を第２方式に切り替えることの影響が低いと想定される第１端末装置２０に対して、第１方式から第２方式への切り替えを指示する構成としている。したがって、本実施形態の通信装置１０Ｃによれば、第１実施形態と同様の効果に加えて、例えば、情報処理能力が低い機器が通信維持方式の切り替えを行うことで遅延が生じたりする不都合を抑制し、また、第２端末装置３０からアクセスを受ける可能性が高い第１端末装置２０の通信維持方式を第１方式に維持しておくことで、通信維持方式を切り替える際の遅延を低減できるといった効果が得られる。
【００９４】
（補足説明）
なお、上述した通信装置１０Ａ，１０Ｂ，１０Ｃの各機能的な構成要素は、例えば、汎用のコンピュータシステムを基本ハードウェアとして用いて実行されるプログラム（ソフトウェア）により実現することができる。
【００９５】
図１２は、通信装置１０Ａ，１０Ｂ，１０Ｃのハードウェア構成の一例を示す図である。通信装置１０Ａ，１０Ｂ，１０Ｃは、図１２に示すように、ＣＰＵ１０１と、主記憶部１０２と、補助記憶部１０３と、通信インタフェース１０４と、各部を接続するバス１０５とを含んだ汎用のコンピュータシステムとして構成される。なお、補助記憶部１０３は、有線または無線によるＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などで各部に接続されてもよい。
【００９６】
上述した通信装置１０Ａ，１０Ｂ，１０Ｃの各機能的な構成要素は、例えば、ＣＰＵ１０１が、主記憶部１０２を利用して、補助記憶部１０３などに格納されたプログラムを実行することによって実現される。このプログラムは、例えば、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷ、Ｂｌｕ−ｒａｙ（登録商標）Ｄｉｓｃなど）、半導体メモリ、またはこれに類する記録媒体に記録されて提供される。プログラムを記録する記録媒体は、コンピュータシステムが読み取り可能な記録媒体であれば、その記憶形式は何れの形態であってもよい。
【００９７】
また、上記プログラムを、コンピュータシステムにあらかじめインストールすることで実現してもよいし、ネットワークを介して配布される上記のプログラムをコンピュータシステムに適宜インストールするように構成してもよい。また、上記のプログラムを外部のサーバコンピュータ上で実行させ、ネットワークを介してその結果をクライアントコンピュータとして構成された通信装置１０Ａ，１０Ｂ，１０Ｃが受け取る構成としてもよい。
【００９８】
上記のコンピュータシステムで実行されるプログラムは、上述した通信装置１０Ａ，１０Ｂ，１０Ｃの各機能的な構成要素を含むモジュール構成となっており、ＣＰＵ１０１がこのプログラムを適宜読み出して実行することにより、上述した通信装置１０Ａ，１０Ｂ，１０Ｃの各機能的な構成要素が主記憶部１０２上にロードされ、主記憶部１０２上に生成されるようになっている。
【００９９】
なお、上述した通信装置１０Ａ，１０Ｂ，１０Ｃの各機能的な構成要素は、プログラム（ソフトウェア）により実現するだけでなく、その一部または全部を、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）やＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの専用のハードウェアにより実現することもできる。
【０１００】
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０１】
１０Ａ，１０Ｂ，１０Ｃ  通信装置
１１  通信部
１４  第１接続維持部
１５  第２接続維持部
１６  判定部
１７Ａ，１７Ｂ，１７Ｃ  切り替え指示部
２０  第１端末装置
３０  第２端末装置
４０  ネットワーク
６２  端末情報記憶部
【図１】
2016019179.tif 000003
【図２】
2016019179.tif 000004
【図３】
2016019179.tif 000005
【図４】
2016019179.tif 000006
【図５】
2016019179.tif 000007
【図６】
2016019179.tif 000008
【図７】
2016019179.tif 000009
【図８】
2016019179.tif 000010
【図９】
2016019179.tif 000011
【図１０】
2016019179.tif 000012
【図１１】
2016019179.tif 000013
【図１２】
2016019179.tif 000014