(57)【要約】【課題】常時接続できないクライアントとサーバとの通信を従来通り可能にしたままで、常時接続できるクライアントとサーバとが常時接続を利用した通信ができるネットワークシステム、通信方法、電子機器、アプリケーションサーバ、プログラムを提供する。【解決手段】電子機器と、前記電子機器と常時接続するための常時接続サーバと、前記電子機器からのポーリングに応じて前記電子機器にデータを送信するためのアプリケーションサーバとを備えるネットワークシステムが提供される。前記アプリケーションサーバは、前記常時接続サーバを介して前記電子機器にポーリング命令をプッシュする。【選択図】図１
2015103123.tif 000002
【特許請求の範囲】
【請求項１】
電子機器と、
前記電子機器と常時接続するための常時接続サーバと、
前記電子機器からのポーリングに応じて前記電子機器にデータを送信するためのアプリケーションサーバとを備え、
前記アプリケーションサーバは、前記アプリケーションサーバに向けてポーリングさせるためのポーリング命令を前記常時接続サーバを介して前記電子機器にプッシュする、ネットワークシステム。
【請求項２】
前記アプリケーションサーバは、受け付けた命令の種類に応じて、前記常時接続サーバを介して前記電子機器に前記ポーリング命令をプッシュするか否かを決定する、請求項１に記載のネットワークシステム。
【請求項３】
前記アプリケーションサーバは、即時に録画を開始するための命令を受け付けた場合、前記常時接続サーバを介して前記電子機器に前記ポーリング命令をプッシュし、録画の予約のための命令を受け付けた場合に、前記ポーリング命令をプッシュすることなく前記電子機器からのポーリングを待つ、請求項１または２に記載のネットワークシステム。
【請求項４】
前記アプリケーションサーバは、即時に撮影を開始するための命令を受け付けた場合、前記常時接続サーバを介して前記電子機器に前記ポーリング命令をプッシュし、撮影の予約のための命令を受け付けた場合に、前記ポーリング命令をプッシュすることなく前記電子機器からのポーリングを待つ、請求項１から３のいずれか１項に記載のネットワークシステム。
【請求項５】
前記アプリケーションサーバは、有料サービスに関するデータを送信する場合、前記常時接続サーバを介して前記電子機器に前記ポーリング命令をプッシュし、無料サービスに関するデータを送信する場合、前記ポーリング命令をプッシュすることなく前記電子機器からのポーリングを待つ、請求項１から４のいずれか１項に記載のネットワークシステム。
【請求項６】
前記アプリケーションサーバは、他の電子機器からメッセージを受信した場合、前記常時接続サーバを介して前記電子機器に前記ポーリング命令をプッシュし、
前記電子機器は、前記アプリケーションサーバにポーリングすることによって前記メッセージを受信し、前記メッセージを出力する、請求項１から５のいずれか１項に記載のネットワークシステム。
【請求項７】
前記電子機器は、カメラを含み、
前記アプリケーションサーバは、他の電子機器から命令を受信した場合、前記常時接続サーバを介して前記電子機器に前記ポーリング命令をプッシュし、
前記電子機器は、前記アプリケーションサーバにポーリングすることによって前記アプリケーションサーバから撮影命令を受信して、前記カメラを用いて撮影する、請求項１から６のいずれか１項に記載のネットワークシステム。
【請求項８】
前記電子機器は、番組を録画する機能を有し、
前記アプリケーションサーバは、他の電子機器から命令を受信した場合、前記常時接続サーバを介して前記電子機器に前記ポーリング命令をプッシュし、
前記電子機器は、前記アプリケーションサーバにポーリングすることによって前記アプリケーションサーバから録画命令を受信して、前記番組を録画する、請求項１から７のいずれか１項に記載のネットワークシステム。
【請求項９】
電子機器が常時接続サーバと常時接続を開始するステップと、
アプリケーションサーバが、前記常時接続サーバを介して前記電子機器にポーリング命令をプッシュするステップと、
前記電子機器が、前記アプリケーションサーバにポーリングするステップと、
前記アプリケーションサーバが、前記ポーリングに応じて前記電子機器にデータを送信するステップとを備える、通信方法。
【請求項１０】
常時接続サーバと常時接続し、アプリケーションサーバとデータを通信するための通信インターフェイスと、
前記通信インターフェイスを利用することによって、前記常時接続サーバからポーリング命令を受信し、前記アプリケーションサーバにポーリングし、前記アプリケーションサーバからデータを受信するためのプロセッサとを備える、電子機器。
【請求項１１】
常時接続サーバと電子機器と通信するための通信インターフェイスと、
前記通信インターフェイスを利用することによって、前記常時接続サーバを介して前記電子機器にポーリング命令をプッシュし、前記電子機器からのポーリングに応じて前記電子機器にデータを送信するためのプロセッサとを備える、アプリケーションサーバ。
【請求項１２】
プロセッサと通信インターフェイスとを含む電子機器で利用されるプログラムであって、
前記通信インターフェイスを利用することによって、常時接続サーバと常時接続を開始するステップと、
前記通信インターフェイスを利用することによって、前記常時接続サーバからポーリング命令を受信するステップと、
前記通信インターフェイスを利用することによって、アプリケーションサーバにポーリングするステップと、
前記通信インターフェイスを利用することによって、前記アプリケーションサーバからデータを受信するステップとを前記プロセッサに実行させる、プログラム。
【請求項１３】
プロセッサと通信インターフェイスとを含むアプリケーションサーバで利用されるプログラムであって、
前記通信インターフェイスを利用することによって、常時接続サーバを介して電子機器にポーリング命令を送信するステップと、
前記通信インターフェイスを利用することによって、前記電子機器からのポーリングを受けるステップと、
前記通信インターフェイスを利用することによって、前記電子機器にデータを送信するステップとを前記プロセッサに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントとサーバとの間のデータの送受信の技術に関し、特に常時接続を利用してデータの送受信を行うネットワークシステム、通信方法、電子機器、アプリケーションサーバ、プログラムに関する。
【背景技術】
【０００２】
従来から、通信機器が互いにデータを送受信するための様々な技術が知られている。たとえば、クライアント側からのポーリングに応じて、サーバがクライアントとのデータの送受信を行う技術が知られている。
【０００３】
ポーリングに関する技術として、特開２００９−１３０４３８号公報（特許文献１）には、データ通信装置、データ通信装置の制御方法、データ通信装置制御プログラムおよび該プログラムを記録したコンピュータ読み取り可能な記録媒体が開示されている。特開２００９−１３０４３８号公報（特許文献１）によると、携帯通信端末は、自装置で発生したイベントを検知するイベント検知部と、イベントと対応付けてポーリング間隔を記憶しているポーリング情報データベースと、イベント検知部が検知したイベントと対応付けられたポーリング間隔をポーリング情報データベースから取得し、所定の時間、該ポーリング間隔に変更するポーリング設定部とポーリング設定部が変更したポーリング間隔で、所定の時間、ポーリングを実施する電子メール取得部と、を備えている。そのため、バッテリーの消耗を軽減するとともに、ユーザにとって最適なポーリング間隔でデータを取得できる。
【０００４】
特開２０１３−１７２５１９号公報（特許文献２）には、電力制御装置、通信制御方法及び通信制御プログラムが開示されている。特開２０１３−１７２５１９号公報（特許文献２）によると、電力制御装置が有する制御装置（通信制御装置）は、各給電装置に問合せをし、各給電装置の状態を取得する。そして、制御装置は、取得した各給電装置の状態により、各給電装置の制御に必要な通信頻度を予測し、高い通信頻度が必要な給電装置ほど、制御装置から次回の問合せをするまでの時間（ポーリング間隔）を短く設定する。また、制御装置は、問合せを行なう度に、ポーリング間隔を更新する。
【０００５】
しかしながら、ポーリングが行われるまでの間、サーバからクライアントへデータをプッシュすることができない。そこで、近年では、ＴＣＰ（Transmission Control Protocol）上で動作するＷｅｂＳｏｃｋｅｔという常時接続に関する技術が開発されている。ＷｅｂＳｏｃｋｅｔは、インターネットの標準化団体であるＷ３ＣとＩＥＴＦがウェブサーバとウェブブラウザとの間の双方向通信用の技術規格である。ＷｅｂＳｏｃｋｅｔプロトコルの仕様はＲＦＣ（Request For Comment）６４５５に規定されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１３０４３８号公報
【特許文献２】特開２０１３−１７２５１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＷｅｂＳｏｃｋｅｔを利用すれば任意のタイミングでサーバからクライアントへデータをプッシュできるが、ネットワークシステムに含まれる全てのクライアントがＷｅｂＳｏｃｋｅｔに対応していない場合がある。本発明の目的は、常時接続できないクライアントとサーバとの通信を従来通り可能にしたままで、常時接続できるクライアントとサーバとが常時接続を利用した通信ができるネットワークシステム、通信方法、電子機器、アプリケーションサーバ、プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
この発明のある態様に従うと、電子機器と、電子機器と常時接続するための常時接続サーバと、電子機器からのポーリングに応じて電子機器にデータを送信するためのアプリケーションサーバとを備えるネットワークシステムが提供される。アプリケーションサーバは、アプリケーションサーバに向けてポーリングさせるためのポーリング命令を常時接続サーバを介して電子機器にプッシュする。
【０００９】
好ましくは、アプリケーションサーバは、受け付けた命令の種類に応じて、常時接続サーバを介して電子機器にポーリング命令をプッシュするか否かを決定する。
【００１０】
好ましくは、アプリケーションサーバは、即時に録画を開始するための命令を受け付けた場合（あるいは、即時に録画を開始することが望ましい場合）、常時接続サーバを介して電子機器にポーリング命令をプッシュし、録画の予約のための命令を受け付けた場合（あるいは、即時に録画を開始しなくてもよい場合）、ポーリング命令をプッシュすることなく電子機器からのポーリングを待つ。
【００１１】
好ましくは、アプリケーションサーバは、即時に撮影を開始するための命令を受け付けた場合、常時接続サーバを介して電子機器にポーリング命令をプッシュし、撮影の予約のための命令を受け付けた場合に、ポーリング命令をプッシュすることなく電子機器からのポーリングを待つ。
【００１２】
好ましくは、アプリケーションサーバは、有料サービスに関するデータを送信する場合、常時接続サーバを介して電子機器にポーリング命令をプッシュし、無料サービスに関するデータを送信する場合、ポーリング命令をプッシュすることなく電子機器からのポーリングを待つ。
【００１３】
好ましくは、アプリケーションサーバは、他の電子機器からメッセージを受信した場合、常時接続サーバを介して電子機器にポーリング命令をプッシュし、電子機器は、アプリケーションサーバにポーリングすることによってメッセージを受信し、メッセージを出力する。
【００１４】
好ましくは、電子機器は、カメラを含む。アプリケーションサーバは、他の電子機器から命令を受信した場合、常時接続サーバを介して電子機器にポーリング命令をプッシュする。電子機器は、アプリケーションサーバにポーリングすることによってアプリケーションサーバから撮影命令を受信して、カメラを用いて撮影する。
【００１５】
好ましくは、電子機器は、番組を録画する機能を有する。アプリケーションサーバは、他の電子機器から命令を受信した場合、常時接続サーバを介して電子機器にポーリング命令をプッシュする。電子機器は、アプリケーションサーバにポーリングすることによってアプリケーションサーバから録画命令を受信して、番組を録画する。
【００１６】
この発明の別の態様に従うと、電子機器が常時接続サーバと常時接続を開始するステップと、アプリケーションサーバが、常時接続サーバを介して電子機器にポーリング命令をプッシュするステップと、電子機器が、アプリケーションサーバにポーリングするステップと、アプリケーションサーバが、ポーリングに応じて電子機器にデータを送信するステップとを備える、通信方法が提供される。
【００１７】
この発明の別の態様に従うと、常時接続サーバと常時接続し、アプリケーションサーバとデータを通信するための通信インターフェイスと、通信インターフェイスを利用することによって、常時接続サーバからポーリング命令を受信し、アプリケーションサーバにポーリングし、アプリケーションサーバからデータを受信するためのプロセッサとを備える、電子機器が提供される。
【００１８】
この発明の別の態様に従うと、常時接続サーバと電子機器と通信するための通信インターフェイスと、通信インターフェイスを利用することによって、常時接続サーバを介して電子機器にポーリング命令をプッシュし、電子機器からのポーリングに応じて電子機器にデータを送信するためのプロセッサとを備える、アプリケーションサーバが提供される。
【００１９】
この発明の別の態様に従うと、プロセッサと通信インターフェイスとを含む電子機器で利用されるプログラムが提供される。プログラムは、通信インターフェイスを利用することによって、常時接続サーバと常時接続を開始するステップと、通信インターフェイスを利用することによって、常時接続サーバからポーリング命令を受信するステップと、通信インターフェイスを利用することによって、アプリケーションサーバにポーリングするステップと、通信インターフェイスを利用することによって、アプリケーションサーバからデータを受信するステップとをプロセッサに実行させる。
【００２０】
この発明の別の態様に従うと、プロセッサと通信インターフェイスとを含むアプリケーションサーバで利用されるプログラムが提供される。プログラムは、通信インターフェイスを利用することによって、常時接続サーバを介して電子機器にポーリング命令を送信するステップと、通信インターフェイスを利用することによって、電子機器からのポーリングを受けるステップと、通信インターフェイスを利用することによって、電子機器にデータを送信するステップとをプロセッサに実行させる。
【発明の効果】
【００２１】
以上のように、この発明によれば、常時接続できないクライアントとサーバとの通信を従来通り可能にしたままで、常時接続できるクライアントとサーバとが常時接続を利用した通信ができるネットワークシステム、通信方法、電子機器、アプリケーションサーバ、プログラムが提供される。
【図面の簡単な説明】
【００２２】
【図１】第１の実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【図２】本実施の形態にかかるクライアント１００のハードウェア構成を表わすブロック図である。
【図３】本実施の形態にかかる常時接続サーバ２００のハードウェア構成を表わすブロック図である。
【図４】本実施の形態にかかるアプリケーションサーバ３００のハードウェア構成を表わすブロック図である。
【図５】本実施の形態にかかるスマートフォン５００のハードウェア構成を表わすブロック図である。
【図６】本実施の形態にかかるネットワークシステム１における常時接続に関するデータのやり取りの処理手順を示すシーケンス図である。
【図７】第１の実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すシーケンス図である。
【図８】第１の実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すシーケンス図である。
【図９】第２の実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【図１０】第２の実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すシーケンス図である。
【図１１】第２の実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すシーケンス図である。
【図１２】第３の実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【図１３】第３の実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すシーケンス図である。
【図１４】第３の実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すシーケンス図である。
【図１５】第４の実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【図１６】第４の実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すシーケンス図である。
【図１７】第４の実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すシーケンス図である。
【発明を実施するための形態】
【００２３】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００２４】
また、以下では、常時接続の一例として、ＷｅｂＳｏｃｋｅｔプロトコルを利用した通信について説明する。しかしながら、常時接続サーバから任意のタイミングでクライアントにデータをプッシュできればよく、本発明はＷｅｂＳｏｃｋｅｔプロトコルを利用する常時接続に限定されるものではない。
＜第１の実施の形態＞
＜ネットワークシステムの全体構成＞
【００２５】
まず、本実施の形態にかかるネットワークシステム１の全体構成について説明する。図１は、本実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【００２６】
図１を参照して、ネットワークシステム１は、住居またはオフィスなどに配置される複数のクライアント１００Ａ，１００Ｂ，１００Ｃと、クライアント１００Ａ，１００Ｂと常時接続が可能な常時接続サーバ２００と、クライアント１００Ａ，１００Ｂ，１００Ｃに関する様々なサービスを提供するアプリケーションサーバ３００とを含む。クライアントとしては、たとえば、掃除機１００Ａ、テレビ１００Ｂ、エアコン１００Ｃ、洗濯機、冷蔵庫、炊飯器、空気清浄器、床暖房、ＩＨ（Induction Heating）クッキングヒーター、電子レンジ、照明などの家電が挙げられる。さらに、クライアントは、通信機器であればよく、たとえば、パーソナルコンピュータ、テレビ以外のＡＶ機器、インターホンシステムなどを含んでもよい。また、常時接続サーバ２００とアプリケーションサーバ３００とは、クライアントと同じ住居内、オフィス内、ビル内、会社あるいは学校の構内に存在するサーバなどを含んでもよい。
【００２７】
家電と各サーバ間は、光ファイバ等の回線を経由し、途中に、光回線終端装置、無線ＬＡＮ通信を行うためのアクセスポイント、ルータ等が接続されてもよい。家電は、ネットワークに接続する手段として、ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎ／ａｃなどの無線ＬＡＮ通信、あるいは、有線ＬＡＮなどが用いられるが、接続方法はこれらに限定されるものではない。
【００２８】
そして、本実施の形態においては、掃除機１００Ａおよびテレビ１００Ｂは、ＷｅｂＳｏｃｋｅｔプロトコルを利用して、常時接続サーバ２００と常時接続が可能である。そして、掃除機１００Ａは、ＨＴＴＰプロトコルを利用して、各種のサービスを提供するためのアプリケーションサーバ３００とデータを送受信することもできる。同様に、テレビ１００Ｂも、ＨＴＴＰプロトコルを利用して、各種のサービスを提供するためのアプリケーションサーバ３００とデータを送受信することもできる。
【００２９】
一方、エアコン１００Ｃは、ＷｅｂＳｏｃｋｅｔプロトコルに対応していないため、常時接続サーバ２００と常時接続ができない。あるいは、エアコン１００Ｃは、図示しないプロキシサーバを介してインターネットに接続されるため、常時接続サーバ２００と常時接続ができない。しかしながら、エアコン１００Ｃは、従来通りのＨＴＴＰプロトコルを利用して、各種のサービスを提供するためのアプリケーションサーバ３００と直接的にデータを送受信することはできる。
【００３０】
なお、本実施の形態においては、常時接続サーバ２００とアプリケーションサーバ３００とが別々のコンピュータである。換言すれば、常時接続サーバ２００において、クライアントと常時接続するためのサービスプログラムが稼働する。そして、アプリケーションサーバ３００において、クライアントに情報を送信することによってクライアントを制御するためのサービスプログラムや、クライアントからの情報を取得することによって当該情報を他の電子機器で利用するためのサービスプログラムなどが稼働する。
【００３１】
しかしながら、常時接続サーバとアプリケーションサーバとが同一のコンピュータであってもよい。たとえば、１つのコンピュータ、すなわち装置としてのサーバが、クライアントと常時接続するための通信サービスプログラムと、クライアントを制御するためのアプリケーションサービスプログラムとを搭載してもよい。また、１つのアプリケーションサーバが複数のアプリケーションサービスプログラムを搭載してもよい。
【００３２】
また、本実施の形態にかかる構成は、ＨＴＴＰ／ＷｅｂＳｏｃｋｅｔプロトコルの他に、ＳＳＬで通信路を暗号化できるＨＴＴＰＳ／ＷＳＳプロトコルでも利用可能である。すなわち、本実施形態にかかるネットワークシステム１は、ＨＴＴＰＳ／ＷＳＳプロトコルを利用するシステムにも適応できる。
＜ネットワークシステムの動作概要＞
【００３３】
次に、本実施の形態にかかるネットワークシステム１の動作概要について説明する。まず、掃除機１００Ａ、テレビ１００Ｂ、エアコン１００Ｃなどのクライアントの各々は、定期的に、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００にポーリングしている。ただし、常時接続サーバ２００との常時接続が可能な掃除機１００Ａおよびテレビ１００Ｂは、定期的なポーリングをしない形態であってもよい。
【００３４】
ここでは、スマートフォン５００あるいはパーソナルコンピュータなどの通信機器のユーザが、外出中に、アプリケーションサーバ３００の提供するサービスを利用する場合について説明する。スマートフォン５００は、掃除機１００Ａに対するサービス用の命令（以下、サービスデータともいう。）をアプリケーションサーバ３００に送信する（ステップＳ１０２）。
【００３５】
アプリケーションサーバ３００は、常時接続サーバ２００を介して、掃除機１００Ａにポーリングをさせるためのポーリング動作実行命令（以下、単にポーリング命令ともいう。）を送信する（ステップＳ１０４、ステップＳ１０６）。具体的には、アプリケーションサーバ３００は、掃除機１００Ａと掃除機用のサービスとの組み合わせを特定するための接続ＩＤとポーリング命令とを常時接続サーバ２００に送信する（ステップＳ１０４）。
【００３６】
常時接続サーバ２００は、接続ＩＤに基づいて、ＷｅｂＳｏｃｋｅｔプロトコルを利用して、ポーリング命令を掃除機１００Ａに送信する（ステップＳ１０６）。
【００３７】
掃除機１００Ａは、ＷｅｂＳｏｃｋｅｔプロトコルを利用して、ポーリング命令を受信した旨を常時接続サーバ２００に送信する（ステップＳ１０８）。掃除機１００Ａは、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００にポーリングする（ステップＳ１１０）。
【００３８】
アプリケーションサーバ３００は、ポーリングに応じて、ＨＴＴＰプロトコルを利用して、サービスデータを掃除機に送信する（ステップＳ１１２）。
【００３９】
掃除機１００Ａは、サービスデータに応じて動作する（ステップＳ１１４）。掃除機１００Ａは、サービスデータを受け付けた旨、および／または、動作が完了した旨を、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００に送信する(ステップＳ１１６)。
【００４０】
アプリケーションサーバ３００は、クライアント１００からのデータをスマートフォン５００などに送信してもよい(ステップＳ１１８)。スマートフォン５００は、入力された命令に対応する動作が完了した旨をディスプレイに表示したりスピーカから音声出力したりする。
【００４１】
このように、本実施の形態においては、掃除機１００Ａからアプリケーションサーバ３００への定期的なポーリングを待たずに、アプリケーションサーバ３００から掃除機１００Ａにサービスデータを送ることができる。同様に、常時接続サーバ２００と常時接続されているテレビ１００Ｂに関しても、テレビ１００Ｂからアプリケーションサーバ３００への定期的なポーリングを待たずに、アプリケーションサーバ３００からテレビ１００Ｂにサービスデータを送ることもできる。
【００４２】
そして、常時接続に対応していないエアコン１００Ｃやその他の家電（他の掃除機を含む。）に対しては、従来通り、アプリケーションサーバ３００がエアコン１００Ｃやその他の家電からのポーリングに応じて、サービスデータをエアコン１００Ｃやその他の家電に送信することができる。
【００４３】
すなわち、本実施の形態においては、常時接続を利用しつつ、常時接続に対応していないクライアントとサーバとの送受信を従来通りに可能にする。以下では、このような機能を実現するためのネットワークシステム１の構造について詳細に説明する。
＜クライアント１００のハードウェア構成＞
【００４４】
まず、クライアント１００のハードウェア構成の一態様について説明する。図２は、本実施の形態にかかるクライアント１００のハードウェア構成を表わすブロック図である。
【００４５】
図２を参照して、クライアント１００は、主たる構成要素として、ＣＰＵ１１０と、メモリ１２０と、入出力部１３０と、カメラ１４０と、クライアント制御回路１５０と、通信インターフェイス１６０とを含む。
【００４６】
ＣＰＵ１１０は、メモリ１２０あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、クライアント１００の各部を制御する。より詳細には、ＣＰＵ１１０は、クライアントＡＰＰ（Application software）として動作するとともに、クライアントＡＰＩ（ApplicationProgramming Interface）として動作する。すなわち、ＣＰＵ１１０は、メモリ１２０に格納されているプログラムを実行することによって、図６に記載のクライアント１００の動作、図８、図１１、図１４、図１７に記載の各処理（ステップＳ）を実行する。
【００４７】
メモリ１２０は、各種のＲＡＭ（Random  Access  Memory）や、各種のＲＯＭ（Read-Only  Memory）や、フラッシュメモリーなどによって実現される。なお、メモリ１２０は、インターフェイスを介して利用される、ＵＳＢ（Universal  Serial  Bus）(登録商標)メモリ、ＣＤ（Compact  Disc）、ＤＶＤ（Digital  Versatile  Disk）、メモリカード、ハードディスク、ＩＣ（Integrated  Circuit）カード、光カード、マスクＲＯＭ、ＥＰＲＯＭ（ErasableProgrammable Read Only Memory）、ＥＥＰＲＯＭ（Electronically  Erasable  Programmable  Read-Only  Memory）などの記憶媒体などによって実現されてもよい。
【００４８】
メモリ１２０は、ＣＰＵ１１０によって実行されるプログラムや、ＣＰＵ１１０によるプログラムの実行により生成されたデータ、入出力部１３０を介して入力されたデータ、掃除機１００Ａ、テレビ１００Ｂ、エアコン１００Ｃなどのようなクライアント１００として動作するためのＡＰＰデータ、クライアントＡＰＰとデータをやり取りしながら外部の機器と通信するためのＡＰＩデータを記憶する。たとえば、メモリ１２０は、常時接続サーバの接続先、アプリケーションサーバ接続先、サービス識別コード、サービス認証トークン、接続ＩＤ、クライアント識別ＩＤなどを記憶する。
【００４９】
入出力部１３０は、ボタン、タッチパネル、キーボードなどによって実現され、ユーザからの命令を受け付けて、当該命令をＣＰＵ１１０に入力する。入出力部１３０は、ディスプレイ、ライトなどによって実現され、ＣＰＵ１１０からの信号に基づいて、文字や画像を出力する。入出力部１３０は、スピーカなどによって実現され、ＣＰＵ１１０からの信号に基づいて、文字や画像を出力する。
【００５０】
カメラ１４０は、ＣＰＵ１１０からの信号に基づいて、静止画像や動画像を撮影する。具体的には、カメラ１４０は、撮影した画像データをＣＰＵ１１０に受け渡す。ＣＰＵ１１０は、画像データを逐次メモリ１２０に記憶させていく。
【００５１】
クライアント制御回路１５０は、ＣＰＵ１１０からの信号に基づいて、クライアントの各部（モータなど）を制御する。
【００５２】
通信インターフェイス１６０は、ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎ／ａｃなどの無線ＬＡＮ通信、ＺｉｇＢｅｅ(登録商標)、ＢｌｕｅＴｏｏｔｈ（登録商標）、あるいは、イーサネット（登録商標）などの有線ＬＡＮなどの通信モジュールによって実現される。通信インターフェイス１６０は、有線通信あるいは無線通信によって他の装置との間でデータをやり取りする。ＣＰＵ１１０は、通信インターフェイス１６０を介して、他の装置からプログラム、制御命令、画像データ、テキストデータなどを受信したり、他の装置にテキストデータ、画像データなどを送信したりする。
【００５３】
なお、ＷｅｂＳｏｃｋｅｔプロトコルが利用可能なクライアント１００（たとえば、掃除機１００Ａおよびテレビ１００Ｂなど）に関しては、ＣＰＵ１１０は、通信インターフェイス１６０を介して、常時接続サーバ２００と常時接続を行うことができるし、ＨＴＴＰプロトコルを利用してアプリケーションサーバ３００と通信することもできる。一方、ＷｅｂＳｏｃｋｅｔプロトコルが利用できないクライアント１００（たとえば、エアコン１００Ｃ）に関しては、ＣＰＵ１１０は、通信インターフェイス１６０を介して、ＨＴＴＰプロトコルを利用してアプリケーションサーバ３００と通信することはできるが、常時接続サーバ２００と常時接続することはできない。
＜常時接続サーバ２００のハードウェア構成＞
【００５４】
次に、常時接続サーバ２００のハードウェア構成の一態様について説明する。図３は、本実施の形態にかかる常時接続サーバ２００のハードウェア構成を表わすブロック図である。なお、常時接続サーバ２００は、apache、tomcat、mysqlなど、一般的なサーバモジュールで担保できる機能は標準的に利用可能である。
【００５５】
図３を参照して、常時接続サーバ２００は、主たる構成要素として、ＣＰＵ２１０と、メモリ２２０と、入出力部２３０と、通信インターフェイス２６０とを含む。常時接続サーバ２００のハードウェア構成は、クライアント１００のハードウェア構成と比較して、カメラ１４０とクライアント制御回路１５０とを有さない点、ＣＰＵ２１０の動作、メモリ２２０に格納されているデータに関して異なる。以下では、ＣＰＵ２１０の動作とメモリ２２０が記憶するデータとについて説明するものとし、その他のハードウェア構成については説明を繰り返さない。
【００５６】
ＣＰＵ２１０は、メモリ２２０あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、常時接続サーバ２００の各部を制御する。具体的には、ＣＰＵ２１０は、メモリ２２０に記憶されているプログラムを実行することによって、モジュールとしてのＷＳサーバとして動作する。すなわち、ＣＰＵ２１０は、メモリ２２０に格納されているプログラムを実行することによって、図６に記載の常時接続サーバ２００の動作を実行する。
【００５７】
メモリ２２０は、ＣＰＵ２１０によって実行されるプログラムや、ＣＰＵ２１０によるプログラムの実行により生成されたデータ、入出力部２３０を介して入力されたデータ、サービスＩＤ、サービス名、アプリケーションサーバ３００の接続先ＵＲＬ、サービス認証トークン生成情報、認証情報（ワンタイムキー）、接続ＩＤなどを記憶する。
＜アプリケーションサーバ３００のハードウェア構成＞
【００５８】
次に、アプリケーションサーバ３００のハードウェア構成の一態様について説明する。図４は、本実施の形態にかかるアプリケーションサーバ３００のハードウェア構成を表わすブロック図である。なお、アプリケーションサーバ３００は、apache、tomcat、mysqlなど、一般的なサーバモジュールで担保できる機能は標準的に利用可能である。
【００５９】
図４を参照して、アプリケーションサーバ３００は、主たる構成要素として、ＣＰＵ３１０と、メモリ３２０と、入出力部３３０と、通信インターフェイス３６０とを含む。アプリケーションサーバ３００のハードウェア構成は、クライアント１００のハードウェア構成と比較して、カメラ１４０とクライアント制御回路１５０とを有さない点、ＣＰＵ３１０の動作、メモリ３２０に格納されているデータに関して異なる。よって、以下では、ＣＰＵ３１０の動作と、メモリ３２０が記憶するデータとについて説明するものとし、その他のハードウェア構成については説明を繰り返さない。
【００６０】
ＣＰＵ３１０は、メモリ３２０あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、アプリケーションサーバ３００の各部を制御する。具体的には、ＣＰＵ３１０は、メモリ３２０に記憶されているプログラムを実行することによって、サーバＡＰＰとして動作するとともに、サーバＡＰＩとして動作する。すなわち、ＣＰＵ３１０は、メモリ３２０に格納されているプログラムを実行することによって、図６に記載のアプリケーションサーバ３００の動作、図７、図１０、図１３、図１６に記載の各処理（ステップＳ）を実行する。
【００６１】
メモリ３２０は、ＣＰＵ３１０によって実行されるプログラムや、ＣＰＵ３１０によるプログラムの実行により生成されたデータ、入出力部３３０を介して入力されたデータ、アプリケーションサーバ３００として動作するためのＡＰＰデータ、サーバＡＰＰとデータをやり取りしながらクライアント１００と常時接続サーバ２００とスマートフォン５００と通信するためのＡＰＩデータを記憶する。たとえば、メモリ３２０は、常時接続サーバのＵＲＬ、サービスＩＤとサービス認証トークン、認証情報（ワンタイムキー）生成情報、接続ＩＤなどを記憶する。
＜スマートフォン５００のハードウェア構成＞
【００６２】
次に、スマートフォン５００あるいはパーソナルコンピュータなどの通信機器のハードウェア構成の一態様について説明する。図５は、本実施の形態にかかるスマートフォン５００のハードウェア構成を表わすブロック図である。
【００６３】
図５を参照して、スマートフォン５００は、主たる構成要素として、ＣＰＵ５１０と、メモリ５２０と、ボタン５３０と、ディスプレイ５４０と、通信インターフェイス５６０とを含む。なお、近年のスマートフォンでは、ボタン５３０とディスプレイ５４０の代わりにタッチパネルが利用されることが多い。
【００６４】
スマートフォン５００のハードウェア構成は、クライアント１００のハードウェア構成と比較して、クライアント制御回路１５０を有さない点、ＣＰＵ５１０の動作、メモリ５２０に格納されているデータに関して異なる。そして、ＣＰＵ５１０の動作、メモリ５２０に格納されているデータは、一般的なスマートフォンのものと同様である。よって、ここでは、ハードウェア構成の各部については説明を繰り返さない。
＜常時接続に関する装置間のデータのやり取り＞
【００６５】
次に、本実施の形態にかかるネットワークシステム１における常時接続に関する装置間のデータのやり取りについて説明する。なお、図６は、本実施の形態にかかるネットワークシステム１における常時接続に関するデータのやり取りの処理手順を示すシーケンス図である。
【００６６】
なお、図６におけるクライアント１００の動作は、クライアントＡＰＩ１１０Ａが実現するものである。図２および図６を参照して、クライアントＡＰＩ１１０Ａは、クライアント１００のＣＰＵ１１０がプログラムを実行することによって実現されるものである。クライアントＡＰＩ１１０Ａは、通信インターフェイス１６０を介して、ＷｅｂＳｏｃｋｅｔプロトコルを使用して常時接続サーバ２００と通信する。クライアントＡＰＩ１１０Ａは、通信インターフェイス１６０を介して、ＨＴＴＰプロトコルを使用して常時接続サーバ２００およびアプリケーションサーバ３００と通信する。
【００６７】
同様に、図６における常時接続サーバ２００の動作は、ＷＳサーバ２１０Ａが実現するものである。図３および図６を参照して、ＷＳサーバ２１０Ａは、常時接続サーバ２００のＣＰＵ２１０がプログラムを実行することによって実現されるものである。ＷＳサーバ２１０Ａは、通信インターフェイス２６０を介して、ＷｅｂＳｏｃｋｅｔプロトコルを利用してクライアント１００と常時接続する。ＷＳサーバ２１０Ａは、通信インターフェイス２６０を介して、ＨＴＴＰプロトコルを利用してアプリケーションサーバ３００と通信する。
【００６８】
同様に、図６におけるアプリケーションサーバ３００の動作は、サーバＡＰＩ３１０Ａが実現するものである。図４および図６を参照して、サーバＡＰＩ３１０Ａは、アプリケーションサーバ３００のＣＰＵ３１０がプログラムを実行することによって実現されるものである。サーバＡＰＩ３１０Ａは、通信インターフェイス３６０を介して、ＨＴＴＰプロトコルを利用してクライアント１００と常時接続サーバ２００とスマートフォン５００などの他の通信装置と通信する。
【００６９】
図６を参照して、クライアント１００は、ＨＴＴＰプロトコルを使用して、アプリケーションサーバ３００に認証情報を要求する（ステップＳ００２）。このとき、クライアント１００は、アプリケーションサーバ３００に、認証に利用されるクライアントＩＤを送信する。アプリケーションサーバ３００は、当該要求に応じてＨＴＴＰプロトコルを使用して認証情報を送信する（ステップＳ００４）。
【００７０】
アプリケーションサーバ３００は、常時接続サーバ２００にも認証情報を送信する（ステップＳ００６）。常時接続サーバ２００は、アプリケーションサーバ３００から受信した認証情報を保存する（ステップＳ００８）。
【００７１】
クライアント１００と常時接続サーバ２００とは、ＨＴＴＰプロトコルを使用して、ＷｅｂＳｏｃｋｅｔを利用した常時接続状態を確立する（ステップＳ０１０、ステップＳ０１２）。具体的には、クライアント１００は、ＨＴＴＰプロトコルを使用して、常時接続サーバ２００にハンドシェイク要求を送る。常時接続サーバ２００は、ハンドシェイク応答を返す。これによって、クライアント１００と常時接続サーバ２００との間で、ＷｅｂＳｏｃｋｅｔプロトコルによる常時接続が有効になる。
【００７２】
クライアント１００は、認証情報を常時接続サーバ２００に送信する（ステップＳ０１４）。常時接続サーバ２００は、クライアント１００からの認証情報と予め保存している認証情報とに基づいて、クライアント１００を認証する（ステップＳ０１６）。認証に成功すると、常時接続サーバ２００は、アプリケーションサーバ３００がクライアント１００を識別するための接続ＩＤを発行する（ステップＳ０１８）。
【００７３】
具体的には、常時接続サーバ２００は、常時接続中のクライアント１００と接続ＩＤとの対応関係を、接続状態管理情報として記憶する。常時接続サーバ２００は、アプリケーションサーバ３００とクライアント１００とに接続ＩＤを送信する。クライアント１００は、常時接続サーバ２００から接続ＩＤを受信して、記憶する（ステップＳ０２０）。同様に、アプリケーションサーバ３００も、接続ＩＤを受信して、記憶する（ステップＳ０２２）。
【００７４】
その後、アプリケーションサーバ３００は、必要に応じて、データ本体（たとえば、ポーリング命令など）と送り先のクライアント１００を特定するための接続ＩＤとを常時接続サーバ２００に送信する（ステップＳ０３２）。常時接続サーバ２００は、アプリケーションサーバ３００からデータ本体と接続ＩＤとを受信する（ステップＳ０３４）。常時接続サーバ２００は、接続状態管理情報を参照して、接続ＩＤに基づいてクライアント１００を特定する（ステップＳ０３６）。
【００７５】
常時接続サーバ２００は、ＷｅｂＳｏｃｋｅｔプロトコルを使用して、特定されたクライアント１００にデータ本体を送信する（ステップＳ０３８）。クライアント１００は、データ本体を受信する（ステップＳ０４０）。クライアント１００は、ＷｅｂＳｏｃｋｅｔプロトコルを使用して、受信結果を常時接続サーバ２００に送信する（ステップＳ０４２）。常時接続サーバ２００は、受信結果を受信すると、当該受信結果をアプリケーションサーバ３００に送信する（ステップＳ０４４）。アプリケーションサーバ３００は、受信結果を受信する（ステップＳ０４６）。
＜アプリケーションサーバの処理手順の詳細＞
【００７６】
次に、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細について説明する。図７は、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すシーケンス図である。
【００７７】
図７を参照して、アプリケーションサーバ３００のＣＰＵ３１０は、通信インターフェイス３６０を介して、スマートフォン５００またはパーソナルコンピュータなどの他の機器から、命令を受信したか否かを判断する(ステップＳ１２２)。ＣＰＵ３１０は、命令を受信した場合(ステップＳ１２２にてＹＥＳである場合)、当該命令の対象となるクライアント１００を特定するためのクライアント識別ＩＤと受信した当該命令とをメモリ３２０に記憶する(ステップＳ１２４)。
【００７８】
ＣＰＵ３１０は、即時にクライアント１００に命令を伝える必要があるか否かを判断する(ステップＳ１２６)。たとえば、ＣＰＵ３１０は、所定の即時条件を満たすか否かを判断する。ＣＰＵ３１０は、即時に命令を伝える必要がないと判断した場合(ステップＳ１２６にてＮＯである場合)、ステップＳ１２２から処理を繰り返す。
【００７９】
ＣＰＵ３１０は、即時に命令を伝える必要があると判断した場合(ステップＳ１２６にてＹＥＳである場合)、通信インターフェイス３６０を介して、常時接続サーバ２００を介してクライアント１００にポーリング命令をＰＵＳＨする(ステップＳ１２８)。具体的には、ＣＰＵ３１０は、クライアントを特定するための接続ＩＤとポーリング命令とを常時接続サーバ２００に送信する。
【００８０】
ＣＰＵ３１０は、命令を受信しなかった場合(ステップＳ１２２にてＮＯの場合)、通信インターフェイス３６０を介してクライアント１００からポーリングを受けたか否かを判断する(ステップＳ１３０)。ＣＰＵ３１０は、クライアント１００からポーリングを受けていない場合(ステップＳ１３０にてＮＯの場合)、ステップＳ１２２からの処理を繰り返す。
【００８１】
ＣＰＵ３１０は、クライアント１００からのポーリングを受けた場合(ステップＳ１３０にてＹＥＳである場合)、メモリ１２０に当該クライアント１００に向けた命令が記憶されているか否かを判断する(ステップＳ１３２)。メモリ１２０にクライアント１００に向けた命令が記憶されていない場合(ステップＳ１３２にてＮＯの場合)、ステップＳ１２２からの処理を繰り返す。
【００８２】
ＣＰＵ３１０は、メモリ１２０にクライアント１００に向けた命令が記憶されている場合(ステップＳ１３２にてＹＥＳである場合)、通信インターフェイス３６０を介してＨＴＴＰプロトコルを利用して当該命令をクライアント１００に送信する(ステップＳ１３４)。ＣＰＵ３１０は、メモリ１２０から当該命令を削除する(ステップＳ１３６)。ＣＰＵ３１０は、ステップＳ１２２からの処理を繰り返す。
＜クライアントの処理手順の詳細＞
【００８３】
次に、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細について説明する。図８は、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すシーケンス図である。
【００８４】
図８を参照して、クライアント１００のＣＰＵ１１０は、メモリ１２０からポーリングフラグとクライアント識別ＩＤとを読み出す(ステップＳ１５２)。ＣＰＵ１１０は、メモリ１２０を参照して、ポーリングフラグがＯＮであるか否かを判断する(ステップＳ１５４)。ＣＰＵ１１０は、ポーリングフラグがＯＦＦの場合(ステップＳ１５４にてＮＯの場合)、所定時間スリープする(ステップＳ１５６)。ＣＰＵ１１０は、ステップＳ１５２からの処理を繰り返す。
【００８５】
ＣＰＵ１１０は、ポーリングフラグがＯＮである場合(ステップＳ１５４にてＹＥＳである場合)、ＨＴＴＰプロトコルを利用して、通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングする(ステップＳ１５８)。ＣＰＵ１１０は、通信インターフェイス１６０を介して、アプリケーションサーバ３００から制御データを受け付ける(ステップＳ１６０)。制御データは、ポーリングの成功および失敗を示す成功失敗フラグ、制御命令、ポーリングフラグ、ポーリング間隔、などの情報を含む。
【００８６】
ＣＰＵ１１０は、成功フラグがＯＮであるか否かを判断する(ステップＳ１６２)。ＣＰＵ１１０は、成功フラグがＯＦＦである場合(ステップＳ１６２にてＮＯの場合)、ポーリング間隔の間だけ、通信インターフェイス１６０を介して、常時接続サーバ２００からのポーリング命令を待つ(ステップＳ１６４)。
【００８７】
ＣＰＵ１１０は、常時接続サーバ２００からのポーリング命令を受けた場合に、ＨＴＴＰプロトコルを利用して通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングする。そして、ステップＳ１６０からの処理を繰り返す。一方、常時接続サーバ２００からのポーリング命令を受信しなかった場合、ＣＰＵ１１０は、ステップＳ１５２からの処理を繰り返す。
【００８８】
ＣＰＵ１１０は、成功フラグがＯＮである場合(ステップＳ１６２にてＹＥＳである場合)、制御データに含まれるポーリングフラグがＯＮであるか否かを判断する(ステップＳ１６６)。ＣＰＵ１１０は、制御データに含まれるポーリングフラグがＯＦＦである場合(ステップＳ１６６にてＮＯの場合)、メモリ１２０のポーリングフラグをＯＦＦに設定する(ステップＳ１６８)。ＣＰＵ１１０は、ステップＳ１５６からの処理を繰り返す。
【００８９】
ＣＰＵ１１０は、制御データに含まれるポーリングフラグがＯＮである場合(ステップＳ１６６にてＹＥＳである場合)、時計を設定しなおす(ステップＳ１７０)。ＣＰＵ１１０は、制御データに含まれるポーリング間隔でメモリ１２０のポーリング間隔を更新する(ステップＳ１７２)。
【００９０】
ＣＰＵ１１０は、制御データに制御命令が含まれているか否かを判断する(ステップＳ１７４)。ＣＰＵ１１０は、制御データに制御命令が含まれていない場合(ステップＳ１７４にてＮＯの場合)、ステップＳ１６４からの処理を繰り返す。
【００９１】
ＣＰＵ１１０は、制御データに制御命令が含まれている場合(ステップＳ１７４にてＹＥＳである場合)、制御命令を実行する(ステップＳ１７６)。ＣＰＵ１１０は、ステップＳ１６４からの処理を繰り返す。
【００９２】
ただし、ＣＰＵ１１０は、ステップＳ１５６の代わりに、所定時間の間、常時接続サーバ２００からのポーリング命令を待ち受けるステップ（ステップＳ１６４）を実行しても良い。つまり、ＣＰＵ１１０は、ステップＳ１５６の代わりに、常時接続サーバ２００からのポーリング命令を受けた場合に、ＨＴＴＰプロトコルを利用して通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングしてもよい。
＜第２の実施の形態＞
【００９３】
次に、第２の実施の形態として、クライアント１００が掃除機１００Ａであり、アプリケーションサーバ３００がメッセージ伝達サービスを提供するネットワークシステム１について説明する。つまり、スマートフォン５００のユーザが、掃除機１００Ａに所望のメッセージを出力させるためのサービスを利用する場合について説明する。なお、本実施の形態にかかるネットワークシステム１の全体構成は、第１の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
＜ネットワークシステムの動作概要＞
【００９４】
以下では、本実施の形態にかかるネットワークシステム１の動作概要について説明する。図９は、本実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【００９５】
図９を参照して、掃除機１００Ａ、テレビ１００Ｂ、エアコン１００Ｃなどのクライアント１００は、定期的に、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００にポーリングする。ただし、常時接続サーバ２００との常時接続が可能な掃除機１００Ａおよびテレビ１００Ｂは、定期的なポーリングをしない形態であってもよい。
【００９６】
スマートフォン５００は、ユーザからのメッセージの入力を受け付ける。スマートフォン５００は、掃除機１００Ａに対するメッセージ出力命令をアプリケーションサーバ３００に送信する（ステップＳ２０２）。スマートフォン５００から送信されるメッセージ出力命令は、メッセージを示すテキストデータを含む。
【００９７】
アプリケーションサーバ３００は、常時接続サーバ２００を介して、掃除機１００Ａにポーリング命令を送信する（ステップＳ２０４、ステップＳ２０６）。具体的には、アプリケーションサーバ３００は、掃除機１００Ａと掃除機用のサービスとの組み合わせを特定するための接続ＩＤとポーリング命令とを常時接続サーバ２００に送信する（ステップＳ２０４）。
【００９８】
常時接続サーバ２００は、接続ＩＤに基づいて、ＷｅｂＳｏｃｋｅｔプロトコルを利用して、ポーリング命令を掃除機１００Ａに送信する（ステップＳ２０６）。
【００９９】
掃除機１００Ａは、ＷｅｂＳｏｃｋｅｔプロトコルを利用して、ポーリング命令を受信した旨を常時接続サーバ２００に送信する（ステップＳ２０８）。掃除機１００Ａは、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００にポーリングする（ステップＳ２１０）。
【０１００】
アプリケーションサーバ３００は、ポーリングに応じて、メッセージ出力命令に含まれるテキストデータを音声データに変換する。アプリケーションサーバ３００は、ＨＴＴＰプロトコルを利用して、当該音声データを含むメッセージ出力命令を掃除機１００Ａに送信する（ステップＳ２１２）。
【０１０１】
掃除機１００Ａは、メッセージ出力命令に応じてスピーカからメッセージを音声出力する（ステップＳ２１４）。ただし、掃除機１００Ａは、メッセージ出力命令に応じてメッセージをディスプレイに表示してもよい。掃除機１００Ａは、メッセージ出力命令を受け付けた旨、メッセージの出力が完了した旨を、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００に送信する（ステップＳ２１６）。
【０１０２】
アプリケーションサーバ３００は、クライアント１００がメッセージ出力命令を受け付けた旨、メッセージの出力が完了した旨をスマートフォン５００に送信する(ステップＳ２１８)。スマートフォン５００は、メッセージの出力が完了した旨をディスプレイに表示したりスピーカから音声出力したりする。
【０１０３】
このように、本実施の形態においては、掃除機１００Ａからアプリケーションサーバ３００への定期的なポーリングを待たずに、アプリケーションサーバ３００から掃除機１００Ａにサービスデータを送ることができる。同様に、テレビ１００Ｂからアプリケーションサーバ３００への定期的なポーリングを待たずに、アプリケーションサーバ３００からテレビ１００Ｂにサービスデータを送ることができる。
【０１０４】
そして、常時接続に対応していないエアコン１００Ｃやその他の家電（他の掃除機を含む。）に対しては、従来通り、アプリケーションサーバ３００がエアコン１００Ｃやその他の家電からのポーリングに応じて、サービスデータをエアコン１００Ｃやその他の家電に送信することができる。
＜各装置のハードウェア構成と＞
【０１０５】
クライアント１００と常時接続サーバ２００とアプリケーションサーバ３００とスマートフォン５００のハードウェア構成は、第１の実施の形態のそれらと同様であるため、ここでは説明を繰り返さない。
＜常時接続に関する装置間のデータのやり取り＞
【０１０６】
本実施の形態にかかるネットワークシステム１における常時接続に関する装置間のデータのやり取りも、第１の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
＜アプリケーションサーバの処理手順の詳細＞
【０１０７】
次に、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細について説明する。図１０は、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すシーケンス図である。
【０１０８】
図１０を参照して、アプリケーションサーバ３００のＣＰＵ３１０は、通信インターフェイス３６０を介して、スマートフォン５００からメッセージ出力命令を受信したか否かを判断する(ステップＳ２２２)。ＣＰＵ３１０は、スマートフォン５００からメッセージ出力命令を受信した場合(ステップＳ２２２にてＹＥＳである場合)、スマートフォン５００またはそのユーザに対応付けられているクライアント１００を特定するためのクライアント識別ＩＤと受信したメッセージ出力命令とをメモリ３２０に記憶する(ステップＳ２２４)。メッセージ出力命令は、メッセージを示すテキストデータを含む。
【０１０９】
ＣＰＵ３１０は、即時にメッセージ出力命令をクライアント１００に伝える必要があるか否かを判断する(ステップＳ２２６)。ここでは、ＣＰＵ３１０は、スマートフォン５００のユーザが有料サービスの会員か否かを判断する。ＣＰＵ３１０は、スマートフォン５００のユーザが有料サービスの会員でない場合(ステップＳ２２６にてＮＯである場合)、ステップＳ２２２から処理を繰り返す。
【０１１０】
ＣＰＵ３１０は、スマートフォン５００のユーザが有料サービスの会員である場合(ステップＳ２２６にてＹＥＳである場合)、通信インターフェイス３６０を介して、常時接続サーバ２００を介してクライアント１００にポーリング命令をＰＵＳＨする(ステップＳ２２８)。具体的には、ＣＰＵ３１０は、クライアントとサービスとを特定するための接続ＩＤとポーリング命令とを常時接続サーバ２００に送信する。
【０１１１】
ＣＰＵ３１０は、メッセージ出力命令を受信しなかった場合(ステップＳ２２２にてＮＯの場合)、通信インターフェイス３６０を介してクライアント１００からポーリングを受けたか否かを判断する(ステップＳ２３０)。ＣＰＵ３１０は、クライアント１００からポーリングを受けていない場合(ステップＳ２３０にてＮＯの場合)、ステップＳ２２２からの処理を繰り返す。
【０１１２】
ＣＰＵ３１０は、クライアント１００からのポーリングを受けた場合(ステップＳ２３０にてＹＥＳである場合)、当該クライアント１００に対応するメッセージ出力命令がメモリ１２０に記憶されているか否かを判断する(ステップＳ２３２)。メモリ１２０にクライアント１００に対応するメッセージ出力命令が記憶されていない場合(ステップＳ２３２にてＮＯの場合)、ステップＳ２２２からの処理を繰り返す。
【０１１３】
ＣＰＵ３１０は、メモリ１２０にクライアント１００に対応するメッセージ出力命令が記憶されている場合(ステップＳ２３２にてＹＥＳである場合)、メッセージ出力命令に含まれるテキストデータを音声データに変換する(ステップＳ２３３)。ＣＰＵ３１０は、通信インターフェイス３６０を介してＨＴＴＰプロトコルを利用して音声データをクライアント１００に送信する(ステップＳ２３４)。ＣＰＵ３１０は、メモリ１２０からメッセージ出力命令を削除する(ステップＳ２３６)。ＣＰＵ３１０は、ステップＳ２２２からの処理を繰り返す。
＜クライアントの処理手順の詳細＞
【０１１４】
次に、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細について説明する。図１１は、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すシーケンス図である。
【０１１５】
図１１を参照して、クライアント１００のＣＰＵ１１０は、メモリ１２０からポーリングフラグとクライアント識別ＩＤとを読み出す(ステップＳ２５２)。ＣＰＵ１１０は、メモリ１２０を参照して、ポーリングフラグがＯＮであるか否かを判断する(ステップＳ２５４)。ＣＰＵ１１０は、ポーリングフラグがＯＦＦの場合(ステップＳ２５４にてＮＯの場合)、所定時間スリープする(ステップＳ２５６)。ＣＰＵ１１０は、ステップＳ２５２からの処理を繰り返す。
【０１１６】
ＣＰＵ１１０は、ポーリングフラグがＯＮである場合(ステップＳ２５４にてＹＥＳである場合)、ＨＴＴＰプロトコルを利用して、通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングする(ステップＳ２５８)。ＣＰＵ１１０は、通信インターフェイス１６０を介して、アプリケーションサーバ３００から制御データを受け付ける(ステップＳ２６０)。制御データは、ポーリングの成功および失敗を示す成功失敗フラグ、音声データ、ポーリングフラグ、ポーリング間隔、などの情報を含む。
【０１１７】
ＣＰＵ１１０は、成功フラグがＯＮであるか否かを判断する(ステップＳ２６２)。ＣＰＵ１１０は、成功フラグがＯＦＦである場合(ステップＳ２６２にてＮＯの場合)、ポーリング間隔の間、通信インターフェイス１６０を介して、常時接続サーバ２００からのポーリング命令を待つ(ステップＳ２６４)。
【０１１８】
ＣＰＵ１１０は、常時接続サーバ２００からのポーリング命令を受けた場合に、ＨＴＴＰプロトコルを利用して通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングする。そして、ステップＳ２６０からの処理を繰り返す。一方、常時接続サーバ２００からのポーリング命令を受信しなかった場合、ＣＰＵ１１０は、ステップＳ２５２からの処理を繰り返す。
【０１１９】
ＣＰＵ１１０は、成功フラグがＯＮである場合(ステップＳ２６２にてＹＥＳである場合)、制御データに含まれるポーリングフラグがＯＮであるか否かを判断する(ステップＳ２６６)。ＣＰＵ１１０は、制御データに含まれるポーリングフラグがＯＦＦである場合(ステップＳ２６６にてＮＯの場合)、メモリ１２０のポーリングフラグをＯＦＦに設定する(ステップＳ２６８)。ＣＰＵ１１０は、ステップＳ２５６からの処理を繰り返す。
【０１２０】
ＣＰＵ１１０は、制御データに含まれるポーリングフラグがＯＮである場合(ステップＳ２６６にてＹＥＳである場合)、時計を設定しなおす(ステップＳ２７０)。ＣＰＵ１１０は、制御データに含まれるポーリング間隔でメモリ１２０のポーリング間隔を更新する(ステップＳ２７２)。
【０１２１】
ＣＰＵ１１０は、制御データに音声データが含まれているか否かを判断する(ステップＳ２７４)。ＣＰＵ１１０は、制御データに音声データが含まれていない場合(ステップＳ２７４にてＮＯの場合)、ステップＳ２６４からの処理を繰り返す。
【０１２２】
ＣＰＵ１１０は、制御データに音声データが含まれている場合(ステップＳ２７４にてＹＥＳである場合)、入出力部１３０としてのスピーカにメッセージの音声を出力させる(ステップＳ２７６)。ＣＰＵ１１０は、ステップＳ２６４からの処理を繰り返す。
【０１２３】
ただし、ＣＰＵ１１０は、ステップＳ２５６の代わりに、所定時間の間、常時接続サーバ２００からのポーリング命令を待ち受けるステップ（ステップＳ２６４）を実行しても良い。つまり、ＣＰＵ１１０は、ステップＳ２５６の代わりに、常時接続サーバ２００からのポーリング命令を受けた場合に、ＨＴＴＰプロトコルを利用して通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングしてもよい。
＜第３の実施の形態＞
【０１２４】
次に、第３の実施の形態として、クライアント１００が掃除機１００Ａであり、アプリケーションサーバ３００が室内撮影サービスを提供するネットワークシステム１について説明する。つまり、スマートフォン５００のユーザが、掃除機１００Ａに室内を撮影させるためのサービスを利用する場合について説明する。なお、本実施の形態にかかるネットワークシステム１の全体構成は、第１の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
＜ネットワークシステムの動作概要＞
【０１２５】
以下では、本実施の形態にかかるネットワークシステム１の動作概要について説明する。図１２は、本実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【０１２６】
図１２を参照して、掃除機１００Ａ、テレビ１００Ｂ、エアコン１００Ｃなどのクライアント１００は、定期的に、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００にポーリングする。ただし、常時接続サーバ２００との常時接続が可能な掃除機１００Ａおよびテレビ１００Ｂは、定期的なポーリングをしない形態であってもよい。
【０１２７】
スマートフォン５００は、掃除機１００Ａに対する撮影命令をアプリケーションサーバ３００に送信する（ステップＳ３０２）。
【０１２８】
アプリケーションサーバ３００は、常時接続サーバ２００を介して、掃除機１００Ａにポーリング命令を送信する（ステップＳ３０４、ステップＳ３０６）。具体的には、アプリケーションサーバ３００は、掃除機１００Ａと掃除機用のサービスとの組み合わせを特定するための接続ＩＤとポーリング命令とを常時接続サーバ２００に送信する（ステップＳ３０４）。常時接続サーバ２００は、接続ＩＤに基づいて、ＷｅｂＳｏｃｋｅｔプロトコルを利用して、ポーリング命令を掃除機１００Ａに送信する（ステップＳ３０６）。
【０１２９】
掃除機１００Ａは、ＷｅｂＳｏｃｋｅｔプロトコルを利用して、ポーリング命令を受信した旨を常時接続サーバ２００に送信する（ステップＳ３０８）。掃除機１００Ａは、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００にポーリングする（ステップＳ３１０）。
【０１３０】
アプリケーションサーバ３００は、ポーリングに応じて、ＨＴＴＰプロトコルを利用して、撮影命令を掃除機に送信する（ステップＳ３１２）。
【０１３１】
掃除機は、撮影命令に応じて室内の静止画像または動画像を撮影する（ステップＳ３１４）。掃除機は、撮影命令を受け付けた旨、撮影が完了した旨、静止画像データ、動画像データを、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００に送信する（ステップＳ３１６）。
【０１３２】
アプリケーションサーバ３００は、クライアント１００が撮影命令を受け付けた旨、撮影が完了した旨、静止画像データ、動画像データをスマートフォン５００に送信する(ステップＳ３１８)。スマートフォン５００は、メッセージの出力が完了した旨をディスプレイに表示したりスピーカから音声出力したりする。
【０１３３】
このように、本実施の形態においては、掃除機１００Ａからアプリケーションサーバ３００への定期的なポーリングを待たずに、アプリケーションサーバ３００から掃除機１００Ａにサービスデータを送ることができる。同様に、テレビ１００Ｂからアプリケーションサーバ３００への定期的なポーリングを待たずに、アプリケーションサーバ３００からテレビ１００Ｂにサービスデータを送ることができる。
【０１３４】
そして、常時接続に対応していないエアコン１００Ｃやその他の家電（他の掃除機を含む。）に対しては、従来通り、アプリケーションサーバ３００がエアコン１００Ｃやその他の家電からのポーリングに応じて、サービスデータをエアコン１００Ｃやその他の家電に送信することができる。
＜各装置のハードウェア構成＞
【０１３５】
クライアント１００と常時接続サーバ２００とアプリケーションサーバ３００とスマートフォン５００のハードウェア構成は、第１の実施の形態のそれらと同様であるため、ここでは説明を繰り返さない。
＜常時接続に関する装置間のデータのやり取り＞
【０１３６】
本実施の形態にかかるネットワークシステム１における常時接続に関する装置間のデータのやり取りも、第１の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
＜アプリケーションサーバの処理手順の詳細＞
【０１３７】
次に、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細について説明する。図１３は、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すシーケンス図である。
【０１３８】
図１３を参照して、アプリケーションサーバ３００のＣＰＵ３１０は、通信インターフェイス３６０を介して、スマートフォン５００から撮影命令を受信したか否かを判断する(ステップＳ３２２)。なお、撮影命令は、静止画撮影命令であってもよいし、動画撮影命令であってもよい。ＣＰＵ３１０は、スマートフォン５００から撮影命令を受信した場合(ステップＳ３２２にてＹＥＳである場合)、スマートフォン５００に対応付けられているクライアント１００を特定するためのクライアント識別ＩＤと受信した撮影命令とをメモリ３２０に記憶する(ステップＳ３２４)。
【０１３９】
ＣＰＵ３１０は、即時にクライアント１００命令を伝える必要があるか否かを判断する(ステップＳ３２６)。ここでは、ＣＰＵ３１０は、スマートフォン５００のユーザが有料サービスの会員か否かを判断する。ＣＰＵ３１０は、スマートフォン５００のユーザが有料サービスの会員でない場合(ステップＳ３２６にてＮＯである場合)、ステップＳ３２２から処理を繰り返す。
【０１４０】
ＣＰＵ３１０は、スマートフォン５００のユーザが有料サービスの会員である場合(ステップＳ３２６にてＹＥＳである場合)、通信インターフェイス３６０を介して、常時接続サーバ２００を介してクライアント１００にポーリング命令をＰＵＳＨする(ステップＳ３２８)。具体的には、ＣＰＵ３１０は、クライアントを特定するための接続ＩＤとポーリング命令とを常時接続サーバ２００に送信する。
【０１４１】
ＣＰＵ３１０は、撮影命令を受信しなかった場合(ステップＳ３２２にてＮＯの場合)、通信インターフェイス３６０を介してクライアント１００からポーリングを受けたか否かを判断する(ステップＳ３３０)。ＣＰＵ３１０は、クライアント１００からポーリングを受けていない場合(ステップＳ３３０にてＮＯの場合)、ステップＳ３２２からの処理を繰り返す。
【０１４２】
ＣＰＵ３１０は、クライアント１００からのポーリングを受けた場合(ステップＳ３３０にてＹＥＳである場合)、当該クライアント１００に対応する撮影命令がメモリ１２０に記憶されているか否かを判断する(ステップＳ３３２)。メモリ１２０にクライアント１００に対応する撮影命令が記憶されていない場合(ステップＳ３３２にてＮＯの場合)、ステップＳ３２２からの処理を繰り返す。
【０１４３】
ＣＰＵ３１０は、メモリ１２０にクライアント１００に対応する撮影命令が記憶されている場合(ステップＳ３３２にてＹＥＳである場合)、通信インターフェイス３６０を介してＨＴＴＰプロトコルを利用して撮影命令をクライアント１００に送信する(ステップＳ３３４)。ＣＰＵ３１０は、メモリ１２０から撮影命令を削除する(ステップＳ３３６)。ＣＰＵ３１０は、ステップＳ３２２からの処理を繰り返す。
＜クライアントの処理手順の詳細＞
【０１４４】
次に、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細について説明する。図１４は、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すシーケンス図である。
【０１４５】
図１４を参照して、クライアント１００のＣＰＵ１１０は、メモリ１２０からポーリングフラグとクライアント識別ＩＤとを読み出す(ステップＳ３５２)。ＣＰＵ１１０は、メモリ１２０を参照して、ポーリングフラグがＯＮであるか否かを判断する(ステップＳ３５４)。ＣＰＵ１１０は、ポーリングフラグがＯＦＦの場合(ステップＳ３５４にてＮＯの場合)、所定時間スリープする(ステップＳ３５６)。ＣＰＵ１１０は、ステップＳ３５２からの処理を繰り返す。
【０１４６】
ＣＰＵ１１０は、ポーリングフラグがＯＮである場合(ステップＳ３５４にてＹＥＳである場合)、ＨＴＴＰプロトコルを利用して、通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングする(ステップＳ３５８)。ＣＰＵ１１０は、通信インターフェイス１６０を介して、アプリケーションサーバ３００から制御データを受け付ける(ステップＳ３６０)。制御データは、ポーリングの成功および失敗を示す成功失敗フラグ、撮影命令、ポーリングフラグ、ポーリング間隔、などの情報を含む。
【０１４７】
ＣＰＵ１１０は、成功フラグがＯＮであるか否かを判断する(ステップＳ３６２)。ＣＰＵ１１０は、成功フラグがＯＦＦである場合(ステップＳ３６２にてＮＯの場合)、ポーリング間隔の間、通信インターフェイス１６０を介して、常時接続サーバ２００からのポーリング命令を待つ(ステップＳ３６４)。
【０１４８】
ＣＰＵ１１０は、常時接続サーバ２００からのポーリング命令を受けた場合に、ＨＴＴＰプロトコルを利用して通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングする。そして、ステップＳ１６０からの処理を繰り返す。一方、常時接続サーバ２００からのポーリング命令を受信しなかった場合、ＣＰＵ１１０は、ステップＳ１５２からの処理を繰り返す。
【０１４９】
ＣＰＵ１１０は、成功フラグがＯＮである場合(ステップＳ３６２にてＹＥＳである場合)、制御データに含まれるポーリングフラグがＯＮであるか否かを判断する(ステップＳ３６６)。ＣＰＵ１１０は、制御データに含まれるポーリングフラグがＯＦＦである場合(ステップＳ３６６にてＮＯの場合)、メモリ１２０のポーリングフラグをＯＦＦに設定する(ステップＳ３６８)。ＣＰＵ１１０は、ステップＳ３５６からの処理を繰り返す。
【０１５０】
ＣＰＵ１１０は、制御データに含まれるポーリングフラグがＯＮである場合(ステップＳ３６６にてＹＥＳである場合)、時計を設定しなおす(ステップＳ３７０)。ＣＰＵ１１０は、制御データに含まれるポーリング間隔でメモリ１２０のポーリング間隔を更新する(ステップＳ３７２)。
【０１５１】
ＣＰＵ１１０は、制御データに撮影命令が含まれているか否かを判断する(ステップＳ３７４)。ＣＰＵ１１０は、制御データに撮影命令が含まれていない場合(ステップＳ３７４にてＮＯの場合)、ステップＳ３６４からの処理を繰り返す。
【０１５２】
ＣＰＵ１１０は、制御データに撮影命令が含まれている場合(ステップＳ３７４にてＹＥＳである場合)、カメラ１４０に静止画像または動画像を撮影させる(ステップＳ３７６)。ＣＰＵ１１０は、通信インターフェイス１６０を介して、ＨＴＴＰプロトコルを利用して、静止画像データまたは動画像データをアプリケーションサーバ３００に送信する(ステップＳ３７８)。ＣＰＵ１１０は、ステップＳ３６４からの処理を繰り返す。
【０１５３】
ただし、ＣＰＵ１１０は、ステップＳ３５６の代わりに、所定時間の間、常時接続サーバ２００からのポーリング命令を待ち受けるステップ（ステップＳ３６４）を実行しても良い。つまり、ＣＰＵ１１０は、ステップＳ３５６の代わりに、常時接続サーバ２００からのポーリング命令を受けた場合に、ＨＴＴＰプロトコルを利用して通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングしてもよい。
＜第４の実施の形態＞
【０１５４】
次に、第４の実施の形態として、クライアント１００がテレビ１００Ｂあるいはハードディスクレコーダであり、アプリケーションサーバ３００が録画命令中継サービスを提供するネットワークシステム１について説明する。つまり、スマートフォン５００のユーザが、テレビ１００Ｂに番組を録画させるためのサービスを利用する場合について説明する。なお、本実施の形態にかかるネットワークシステム１の全体構成は、第１の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
＜ネットワークシステムの動作概要＞
【０１５５】
以下では、本実施の形態にかかるネットワークシステム１の動作概要について説明する。図１５は、本実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【０１５６】
図１５を参照して、掃除機１００Ａ、テレビ１００Ｂ、エアコン１００Ｃなどのクライアント１００は、定期的に、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００にポーリングする。ただし、常時接続サーバ２００との常時接続が可能な掃除機１００Ａおよびテレビ１００Ｂは、定期的なポーリングをしない形態であってもよい。
【０１５７】
スマートフォン５００は、ユーザからの録画命令を受け付ける。スマートフォン５００は、テレビ１００Ｂに対する録画命令をアプリケーションサーバ３００に送信する（ステップＳ４０２）。
【０１５８】
アプリケーションサーバ３００は、常時接続サーバ２００を介して、テレビ１００Ｂにポーリング命令を送信する（ステップＳ４０４、ステップＳ４０６）。具体的には、アプリケーションサーバ３００は、テレビ１００Ｂとテレビ用のサービスとの組み合わせを特定するための接続ＩＤとポーリング命令とを常時接続サーバ２００に送信する（ステップＳ４０４）。
【０１５９】
常時接続サーバ２００は、接続ＩＤに基づいて、ＷｅｂＳｏｃｋｅｔプロトコルを利用して、ポーリング命令をテレビ１００Ｂに送信する（ステップＳ４０６）。
【０１６０】
テレビ１００Ｂは、ＷｅｂＳｏｃｋｅｔプロトコルを利用して、ポーリング命令を受信した旨を常時接続サーバ２００に送信する（ステップＳ４０８）。テレビ１００Ｂは、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００にポーリングする（ステップＳ４１０）。
【０１６１】
アプリケーションサーバ３００は、ポーリングに応じて、ＨＴＴＰプロトコルを利用して、録画命令を掃除機に送信する（ステップＳ４１２）。
【０１６２】
テレビ１００Ｂは、録画命令に応じて番組を録画したり、録画予約をしたりする（ステップＳ４１４）。テレビ１００Ｂは、録画命令を受け付けた旨、録画が完了した旨を、ＨＴＴＰプロトコルを利用して、アプリケーションサーバ３００に送信する（ステップＳ４１６）。
【０１６３】
アプリケーションサーバ３００は、クライアント１００が録画命令を受け付けた旨、録画が完了した旨をスマートフォン５００に送信する(ステップＳ４１８)。スマートフォン５００は、録画の命令が受領された旨をディスプレイに表示したりスピーカから音声出力したりする。
【０１６４】
このように、本実施の形態においては、テレビ１００Ｂからアプリケーションサーバ３００への定期的なポーリングを待たずに、アプリケーションサーバ３００からテレビ１００Ｂにサービスデータを送ることができる。同様に、掃除機１００Ａからアプリケーションサーバ３００への定期的なポーリングを待たずに、アプリケーションサーバ３００から掃除機１００Ａにサービスデータを送ることができる。
【０１６５】
そして、常時接続に対応していないエアコン１００Ｃやその他の家電に対しては、従来通り、アプリケーションサーバ３００がエアコン１００Ｃやその他の家電からのポーリングに応じて、サービスデータをエアコン１００Ｃやその他の家電に送信することができる。
＜各装置のハードウェア構成と＞
【０１６６】
クライアント１００と常時接続サーバ２００とアプリケーションサーバ３００とスマートフォン５００のハードウェア構成は、第１の実施の形態のそれらと同様であるため、ここでは説明を繰り返さない。
＜常時接続に関する装置間のデータのやり取り＞
【０１６７】
本実施の形態にかかるネットワークシステム１における常時接続に関する装置間のデータのやり取りも、第１の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
＜アプリケーションサーバの処理手順の詳細＞
【０１６８】
次に、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細について説明する。図１６は、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すシーケンス図である。
【０１６９】
図１６を参照して、アプリケーションサーバ３００のＣＰＵ３１０は、通信インターフェイス３６０を介して、スマートフォン５００から録画命令を受信したか否かを判断する(ステップＳ４２２)。なお、録画命令は、録画予約命令または即時録画命令である。そして、録画命令は、録画日付、録画開始時刻、録画終了時刻、チャンネルなどを示す情報を含むものである。録画命令は、開始時刻に関係なく即時に録画を開始するためのフラグを含んでも良い。
【０１７０】
ＣＰＵ３１０は、スマートフォン５００から録画命令を受信した場合(ステップＳ４２２にてＹＥＳである場合)、スマートフォン５００またはそのユーザに対応付けられているクライアント１００を特定するためのクライアント識別ＩＤと受信した録画命令とをメモリ３２０に記憶する(ステップＳ４２４)。
【０１７１】
ＣＰＵ３１０は、即時にクライアント１００に録画命令を伝える必要があるか否かを判断する(ステップＳ４２６)。ここでは、ＣＰＵ３１０は、録画命令が即時録画命令であるか否かを判断する。たとえば、ＣＰＵ１１０は、録画開始時刻を既に経過しているか否かを判断する。あるいは、ＣＰＵ１１０は、録画命令における、即時に録画を開始するためのフラグがＯＮであるか否かを判断する。
【０１７２】
ＣＰＵ３１０は、録画命令が録画予約命令である場合、すなわち未だ録画開示時刻前である場合あるいは録画命令の即時に録画を開始するためのフラグがＯＦＦである場合(ステップＳ４２６にてＮＯである場合)、ステップＳ４２２から処理を繰り返す。
【０１７３】
ＣＰＵ３１０は、録画命令が即時録画命令である場合、すなわち既に録画開始時刻を過ぎている場合あるいは録画命令の即時に録画を開始するためのフラグがＯＮである場合(ステップＳ４２６にてＹＥＳである場合)、通信インターフェイス３６０を介して、常時接続サーバ２００を介してクライアント１００にポーリング命令をＰＵＳＨする(ステップＳ４２８)。具体的には、ＣＰＵ３１０は、クライアントを特定するための接続ＩＤとポーリング命令とを常時接続サーバ２００に送信する。
【０１７４】
ＣＰＵ３１０は、録画命令を受信しなかった場合(ステップＳ４２２にてＮＯの場合)、通信インターフェイス３６０を介してクライアント１００からポーリングを受けたか否かを判断する(ステップＳ４３０)。ＣＰＵ３１０は、クライアント１００からポーリングを受けていない場合(ステップＳ４３０にてＮＯの場合)、ステップＳ４２２からの処理を繰り返す。
【０１７５】
ＣＰＵ３１０は、クライアント１００からのポーリングを受けた場合(ステップＳ４３０にてＹＥＳである場合)、メモリ１２０にクライアント１００に対応する録画命令が記憶されているか否かを判断する(ステップＳ４３２)。メモリ１２０にクライアント１００に対応する録画命令が記憶されていない場合(ステップＳ４３２にてＮＯの場合)、ステップＳ４２２からの処理を繰り返す。
【０１７６】
ＣＰＵ３１０は、メモリ１２０にテレビ１００Ｂに対応する録画命令が記憶されている場合(ステップＳ４３２にてＹＥＳである場合)、通信インターフェイス３６０を介してＨＴＴＰプロトコルを利用して録画命令をテレビ１００Ｂに送信する(ステップＳ４３４)。ＣＰＵ３１０は、メモリ１２０から録画命令を削除する(ステップＳ４３６)。ＣＰＵ３１０は、ステップＳ４２２からの処理を繰り返す。
＜テレビ１００Ｂの処理手順の詳細＞
【０１７７】
次に、本実施の形態にかかるネットワークシステム１におけるテレビ１００Ｂの処理手順の詳細について説明する。図１７は、本実施の形態にかかるネットワークシステム１におけるテレビ１００Ｂの処理手順の詳細を示すシーケンス図である。
【０１７８】
図１７を参照して、テレビ１００ＢのＣＰＵ１１０は、メモリ１２０からポーリングフラグとクライアント識別ＩＤとを読み出す(ステップＳ４５２)。ＣＰＵ１１０は、メモリ１２０を参照して、ポーリングフラグがＯＮであるか否かを判断する(ステップＳ４５４)。ＣＰＵ１１０は、ポーリングフラグがＯＦＦの場合(ステップＳ４５４にてＮＯの場合)、所定時間スリープする(ステップＳ４５６)。ＣＰＵ１１０は、ステップＳ４５２からの処理を繰り返す。
【０１７９】
ＣＰＵ１１０は、ポーリングフラグがＯＮである場合(ステップＳ４５４にてＹＥＳである場合)、ＨＴＴＰプロトコルを利用して、通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングする(ステップＳ４５８)。ＣＰＵ１１０は、通信インターフェイス１６０を介して、アプリケーションサーバ３００から制御データを受け付ける(ステップＳ４６０)。制御データは、ポーリングの成功および失敗を示す成功失敗フラグ、録画命令、ポーリングフラグ、ポーリング間隔、などの情報を含む。
【０１８０】
ＣＰＵ１１０は、成功フラグがＯＮであるか否かを判断する(ステップＳ４６２)。ＣＰＵ１１０は、成功フラグがＯＦＦである場合(ステップＳ４６２にてＮＯの場合)、ポーリング間隔の間、通信インターフェイス１６０を介して、常時接続サーバ２００からのポーリング命令を待つ(ステップＳ４６４)。
【０１８１】
ＣＰＵ１１０は、常時接続サーバ２００からのポーリング命令を受けた場合に、ＨＴＴＰプロトコルを利用して通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングする。そして、ステップＳ４６０からの処理を繰り返す。一方、常時接続サーバ２００からのポーリング命令を受信しなかった場合、ＣＰＵ１１０は、ステップＳ４５２からの処理を繰り返す。
【０１８２】
ＣＰＵ１１０は、成功フラグがＯＮである場合(ステップＳ４６２にてＹＥＳである場合)、制御データに含まれるポーリングフラグがＯＮであるか否かを判断する(ステップＳ４６６)。ＣＰＵ１１０は、制御データに含まれるポーリングフラグがＯＦＦである場合(ステップＳ４６６にてＮＯの場合)、メモリ１２０のポーリングフラグをＯＦＦに設定する(ステップＳ４６８)。ＣＰＵ１１０は、ステップＳ４５６からの処理を繰り返す。
【０１８３】
ＣＰＵ１１０は、制御データに含まれるポーリングフラグがＯＮである場合(ステップＳ４６６にてＹＥＳである場合)、時計を設定しなおす(ステップＳ４７０)。ＣＰＵ１１０は、制御データに含まれるポーリング間隔でメモリ１２０のポーリング間隔を更新する(ステップＳ４７２)。
【０１８４】
ＣＰＵ１１０は、制御データに即時録画命令が含まれているか否かを判断する(ステップＳ４７４)。ＣＰＵ１１０は、制御データに即時録画命令が含まれていない場合(ステップＳ４７４にてＮＯの場合)、ステップＳ４６４からの処理を繰り返す。
【０１８５】
ＣＰＵ１１０は、制御データに即時録画命令が含まれている場合(ステップＳ４７４にてＹＥＳである場合)、即時録画命令に含まれるチャンネルに基づいて録画を開始する(ステップＳ４７６)。ＣＰＵ１１０は、ステップＳ４６４からの処理を繰り返す。
【０１８６】
ＣＰＵ１１０は、制御データに即時録画命令が含まれていない場合(ステップＳ４７４にてＮＯの場合)、制御データに録画予約命令が含まれているか否かを判断する(ステップＳ４７８)。ＣＰＵ１１０は、制御データに録画予約命令が含まれている場合(ステップＳ４７８にてＹＥＳである場合)、メモリ１２０に録画予約を登録する(ステップＳ４８０)。ＣＰＵ１１０は、ステップＳ４６４からの処理を繰り返す。
【０１８７】
ＣＰＵ１１０は、制御データに録画予約命令が含まれていない場合(ステップＳ４７８にてＮＯである場合)、ステップＳ４６４からの処理を繰り返す。
【０１８８】
ただし、ＣＰＵ１１０は、ステップＳ４５６の代わりに、所定時間の間、常時接続サーバ２００からのポーリング命令を待ち受けるステップ（ステップＳ４６４）を実行しても良い。つまり、ＣＰＵ１１０は、ステップＳ４５６の代わりに、常時接続サーバ２００からのポーリング命令を受けた場合に、ＨＴＴＰプロトコルを利用して通信インターフェイス１６０を介してアプリケーションサーバ３００にポーリングしてもよい。
＜第５の実施の形態＞
【０１８９】
なお、上記の第３の実施の形態においては、アプリケーションサーバ３００が、有料サービスか無料サービスかに基づいて、クライアント１００にポーリング命令を送るか否かを判断するものであった。しかしながら、上記の第４の実施の形態のように、アプリケーションサーバ３００は、即時に撮影するための命令を受け付けたか、撮影の予約の命令を受け付けたかに基づいて、クライアント１００にポーリング命令を送るか否かを判断してもよい。
【０１９０】
すなわち、図１３のステップＳ３２６において、図１６のステップＳ４２６と同様に、アプリケーションサーバ３００のＣＰＵ３１０は、即時撮影命令を受け付けたか否かを判断してもよい。そして、即時撮影命令を受け付けた場合（ステップＳ３２６にてＹＥＳである場合）に、ＣＰＵ３１０は、通信インターフェイス３６０を介して、常時接続サーバ２００を介してクライアント１００にポーリング命令をＰＵＳＨする(ステップＳ３２８)。逆に、ＣＰＵ３１０は、即時撮影命令を受け付けなかった場合 (ステップＳ３２６にてＮＯである場合)、すなわち撮影予約命令（撮影開始時刻および／または定期的に撮影するための撮影周期などを含む。）を受け付けた場合、ステップＳ３２２から処理を繰り返す。
【０１９１】
同様に、図１４のステップＳ３７４〜ステップＳ３７８においては、図１７のステップＳ４７４〜ステップＳ４８０と同様に、ＣＰＵ１１０は、制御データに即時撮影命令が含まれているか否かを判断する。ＣＰＵ１１０は、制御データに即時撮影命令が含まれている場合、即時撮影命令に基づいてカメラ１４０を用いて動画像または静止画像を撮影する。
【０１９２】
ＣＰＵ１１０は、制御データに即時撮影命令が含まれていない場合、制御データに撮影予約命令が含まれているか否かを判断する。ＣＰＵ１１０は、制御データに撮影予約命令が含まれている場合、メモリ１２０に撮影予約命令を登録する。ＣＰＵ１１０は、制御データに撮影予約命令が含まれていない場合、ステップＳ３６４からの処理を繰り返す。
＜第６の実施の形態＞
【０１９３】
なお、第２の実施の形態においては、アプリケーションサーバ３００でテキストデータから音声データへと変換している。しかしながら、クライアント１００でテキストデータから音声データへと変換するものであってもよい。
【０１９４】
すなわち、アプリケーションサーバ３００は、クライアント１００からのポーリングに応じて、テキストデータをクライアント１００に送信する。クライアント１００が、テキストデータを音声データに変換する。そして、クライアント１００が、音声データに基づいて、スピーカからメッセージを音声出力する。
【０１９５】
この場合には、アプリケーションサーバ３００からクライアント１００へと音声データを送信する必要がなくなるので、通信データ量を減らすことができる。
＜第７の実施の形態＞
【０１９６】
また、第２の実施の形態においては、クライアント１００が、スピーカからメッセージを音声出力するものであった。しかしながら、クライアント１００は、ディスプレイからメッセージを表示するものであってもよい。
【０１９７】
すなわち、アプリケーションサーバ３００は、クライアント１００からのポーリングに応じて、テキストデータをクライアント１００に送信する。そして、クライアント１００が、テキストデータに基づいて、ディスプレイにメッセージを表示する。
＜第８の実施の形態＞
【０１９８】
また、第２の実施の形態においては、クライアント１００が、スピーカからメッセージを音声出力するものであった。しかしながら、クライアント１００は、ディスプレイからメッセージを表示するとともに、スピーカからメッセージを音声出力するものであってもよい。
【０１９９】
すなわち、アプリケーションサーバ３００は、クライアント１００からのポーリングに応じて、テキストデータを音声データに変換する。アプリケーションサーバ３００は、クライアント１００にテキストデータと音声データとをクライアント１００に送信する。そして、クライアント１００が、テキストデータに基づいてディスプレイにメッセージを表示するとともに、音声データに基づいてスピーカに音声出力する。
【０２００】
なお、第６の実施の形態のように、第８の実施の形態においても、クライアント１００がテキストデータを音声データに変換しても良い。この場合にも、アプリケーションサーバ３００からクライアント１００へと音声データを送信する必要がなくなるので、通信データ量を減らすことができる。
＜その他の応用例＞
【０２０１】
本発明は、システム或いは装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。そして、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体（あるいはメモリ）を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の効果を享受することが可能となる。
【０２０２】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２０３】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【０２０４】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わる他の記憶媒体に書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【０２０５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２０６】
１        ：ネットワークシステム
１００    ：クライアント
１１０    ：ＣＰＵ
１１０Ａ  ：クライアントＡＰＩ
１２０    ：メモリ
１４０    ：カメラ
１５０    ：クライアント制御回路
１６０    ：通信インターフェイス
２００    ：常時接続サーバ
２１０    ：ＣＰＵ
２１０Ａ  ：ＷＳサーバ
２２０    ：メモリ
２６０    ：通信インターフェイス
３００    ：アプリケーションサーバ
３１０    ：ＣＰＵ
３１０Ａ  ：サーバＡＰＩ
３２０    ：メモリ
３６０    ：通信インターフェイス
５００    ：スマートフォン
【図１】
2015103123.tif 000003
【図２】
2015103123.tif 000004
【図３】
2015103123.tif 000005
【図４】
2015103123.tif 000006
【図５】
2015103123.tif 000007
【図６】
2015103123.tif 000008
【図７】
2015103123.tif 000009
【図８】
2015103123.tif 000010
【図９】
2015103123.tif 000011
【図１０】
2015103123.tif 000012
【図１１】
2015103123.tif 000013
【図１２】
2015103123.tif 000014
【図１３】
2015103123.tif 000015
【図１４】
2015103123.tif 000016
【図１５】
2015103123.tif 000017
【図１６】
2015103123.tif 000018
【図１７】
2015103123.tif 000019
【手続補正書】
【提出日】平成26年11月21日(2014.11.21)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
【図１】第１の実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【図２】本実施の形態にかかるクライアント１００のハードウェア構成を表わすブロック図である。
【図３】本実施の形態にかかる常時接続サーバ２００のハードウェア構成を表わすブロック図である。
【図４】本実施の形態にかかるアプリケーションサーバ３００のハードウェア構成を表わすブロック図である。
【図５】本実施の形態にかかるスマートフォン５００のハードウェア構成を表わすブロック図である。
【図６】本実施の形態にかかるネットワークシステム１における常時接続に関するデータのやり取りの処理手順を示すシーケンス図である。
【図７】第１の実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すフローチャートである。
【図８】第１の実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すフローチャートである。
【図９】第２の実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【図１０】第２の実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すフローチャートである。
【図１１】第２の実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すフローチャートである。
【図１２】第３の実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【図１３】第３の実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すフローチャートである。
【図１４】第３の実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すフローチャートである。
【図１５】第４の実施の形態にかかるネットワークシステム１の全体構成と動作概要とを示すイメージ図である。
【図１６】第４の実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すフローチャートである。
【図１７】第４の実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すフローチャートである。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００７６
【補正方法】変更
【補正の内容】
【００７６】
次に、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細について説明する。図７は、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すフローチャートである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
次に、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細について説明する。図８は、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すフローチャートである。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１０７
【補正方法】変更
【補正の内容】
【０１０７】
次に、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細について説明する。図１０は、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すフローチャートである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１１４
【補正方法】変更
【補正の内容】
【０１１４】
次に、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細について説明する。図１１は、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すフローチャートである。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１３７
【補正方法】変更
【補正の内容】
【０１３７】
次に、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細について説明する。図１３は、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すフローチャートである。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１４４
【補正方法】変更
【補正の内容】
【０１４４】
次に、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細について説明する。図１４は、本実施の形態にかかるネットワークシステム１におけるクライアント１００の処理手順の詳細を示すフローチャートである。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１６８
【補正方法】変更
【補正の内容】
【０１６８】
次に、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細について説明する。図１６は、本実施の形態にかかるネットワークシステム１におけるアプリケーションサーバ３００の処理手順の詳細を示すフローチャートである。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１７７
【補正方法】変更
【補正の内容】
【０１７７】
次に、本実施の形態にかかるネットワークシステム１におけるテレビ１００Ｂの処理手順の詳細について説明する。図１７は、本実施の形態にかかるネットワークシステム１におけるテレビ１００Ｂの処理手順の詳細を示すフローチャートである。