[本実施の形態における第1、第2の装置間の接続処理]
図1、図2は、本実施の形態における第1、第2の装置間が通信可能になるまでの処理を示す図である。また、図3は、本実施の形態における第1、第2の装置間が通信を行う処理を示す図である。以下、端末900により、第1装置100aと第2装置100bとが互いに接続可能になるまでの処理と、その後第1装置と第2装置の仮想端子間で行われる通信処理の例を説明する。
本実施の形態では、第1装置100aは例えばタッチパネル付き表示装置であり、第2装置100bは例えばビデオカメラ装置である。表示装置は、各種の操作ボタンや、表示画面に表示される操作対象画像(文字列やアイコン)などの物理的な操作エレメントと、物理的なケーブルが接続される接続端子などを有する。また、ビデオカメラ装置にも、各種の操作ボタン(録画ボタン、再生ボタン、停止ボタンなど)である物理的な操作エレメントと、物理的なケーブルが接続される接続端子などを有する。その場合、第1装置100aと第2装置100bには、上記の操作エレメントや接続端子に対応して、仮想端子が設定される。具体的には、第1装置と第2装置それぞれのプロファイル情報に仮想端子が定義され、第1装置の仮想端子と第2装置の仮想端子間で通信ネットワークを介して通信が行われる。したがって、仮想端子は、物理的な端子ではなく、プロファイル情報に設定された仮想的な通信端子(通信ノード)である。また、仮想端子は、前述の物理的な操作エレメントや物理的な接続端子に対応付けられることがあり、さらに操作エレメントや接続端子以外の仮想的な機能に対応付けられる場合もある。
本実施の形態では、このような仮想端子を、単に端子と呼ぶ。但し、特に物理的な端子と区別する場合は仮想端子と呼ぶ。
図1において、端末900は、例えば、スマートフォンやパッド端末、パーソナルコンピュータなどである。端末900にはWEBブラウザ(通信クライアント)(WEB:ウェブ)が動作可能であり、端末は、インターネットやイントラネットなどの通信ネットワークを介して、通信ネットワーク上のノードと接続可能である。また、第1装置100aと第2装置100bは、前述の表示装置やビデオカメラ装置などであるが、基盤プログラムであるOS(Operating System)と、通信クライアント(プログラム)と、通信サーバ(プログラム)などがインストールされる。通信クライアントと通信サーバは、例えばHTTP(Hypertext Transfer Protocol)で送信処理を行うプログラムである。
図1に示されるとおり、最初に利用者が端末900を使用して、第1装置のURI(Uniform Resource Identifier)情報を取得する(S1)。図1の例ではマトリックス型バーコードでURIを取得しているが、他の方法でも取得できる。そして、端末900は、WEBブラウザの通信クライアントにより、取得したURIにアクセスを行い(S2)、第1装置100aは、通信サーバにより、端末からのアクセスに応答して内部の記憶装置に記憶しているWEBアプリケーション(プログラム)111を応答する(S3)。この結果、端末900のブラウザがダウンロードしたWEBアプリケーションを実行し、表示装置にWEBアプリケーションの表示画像121Dを表示する。WEBアプリケーションは、例えばHTML5データである。
また、表示画像121D内のメニューから接続GUI(WEBアプリケーションが有する一つの処理)(GUI:Graphical User Interface)の項目を選択する操作が行われると、接続GUIが実行され、第1装置100aの任意の端子にプロファイルコマンド(以下PROFコマンド)310を送信する(S4)。WEBアプリケーション111は第1装置のアプリであるので、PROFコマンドの送信先情報を有している。
そして、第1装置では、通信サーバがPROFコマンドに応答して、内部の記憶装置に記憶しているプロファイルデータ127aを応答する(S5)。プロファイルデータは、第1装置の名称、装置のアイコン情報、URIに加えて、第1装置が有する複数の仮想端子の情報、例えば端子の名称、URI、リンク情報などを有する。具体例は後述する。
その結果、端末900の接続GUIは、取得したプロファイルデータに基づいて、表示画像121D内に第1装置100aのアイコン211aと、別の装置の追加要求アイコン121D−Bを有する接続GUIの画像を表示する。アイコン211aには、仮想端子のアイコン212も含まれる。
次に、装置の追加要求アイコンが操作され第2装置のURIが入力または取得されると、端末の接続GUIは、第2装置100bの任意の端子にPROFコマンド310を送信する(S6)。それに応答して、第2装置の通信サーバが内部に記憶しているプロファイルデータ127bを応答する(S7)。その結果、端末900の接続GUIは、取得したプロファイルデータに基づいて、表示画像121D内に第2装置100bのアイコン211bを追加表示する。このアイコンにも仮想端子のアイコンが含まれる。
前述の装置の追加要求アイコンが表示されなくても、利用者が表示画像121Dの余白領域をタッチして第2装置のURIを入力または取得することで、端末の接続GUIが第2装置にPROFコマンド310を送信するようにしてもよい。または、装置の追加要求アイコンに代えて、ブックマーク内から第2装置を選択するようにしてもよい。さらに、接続GUIの処理を行うWEBアプリケーションは、第1装置または第2装置のいずれかに記憶されているものでよい。
図2に移り、利用者が、端末900の表示画面121Dに表示されている第1装置と第2装置のアイコンの任意の端子212間を接続するようにドラッグ操作する。例えば、第1装置のアイコン211aの端子212aから接続操作を開始すると、第2装置のアイコン211bの端子のうち第1装置の端子212aと通信可能な端子212bがハイライト表示される。プロファイルデータには、端子の情報として、端子の処理可能なデータの情報と接続数の上限が含まれているので、それに基づいて、接続GUIは、端子212aと通信可能な端子212bを検出できる。また、プロファイルデータには各端子の名称や説明文が含まれ、表示画面に名称や説明文が表示されてもよい。その場合、利用者はどの端子からドラッグ操作すればよいか容易に判別できる。
そして、利用者が端子212aと端子212bとの間をドラッグ操作すると、端末の接続GUIが、第1装置の端子212aにリンクコマンド(以下LINKコマンド)320aを、第2装置の端子212bにLINKコマンド320bをそれぞれ送信する(S8,S10)。第1装置に送信するLINKコマンド320aには、第2装置の端子212bのURIと接続指示が含まれる。一方、第2装置に送信するLINKコマンド320bには、第1装置の端子212aのURIと接続指示が含まれる。その結果、第1装置100aの通信サーバは、プロファイルデータ内の端子212aのリンク情報にリンク先端子212bのURIを設定する(S9)。同様に、第2装置100bの通信サーバは、プロファイルデータ内の端子212bのリンク情報にリンク先端子212aのURIを設定する(S10)。これらのリンク先端子のURIの設定は、後述するLINKコマンド処理(プログラム)により行われる。そして、端末の接続GUIが、第1装置接続アイコン213を表示する。
上記のプロファイルデータのリンク情報に互いのリンク先端子のURIを設定することで、第1装置の端子212aと第2装置の端子212bとの間は、リンク状態にされ、互いに通信できる状態になる。具体的な通信処理は後で詳述する。
図3に移り、第1装置と第2装置間の通信処理について説明する。前述のとおり、LINKコマンドに対するリンク先端子の設定により、第1装置の端子212aと第2装置の端子212bとは、リンク状態にされ、互いに通信できる状態にされている。したがって、各端子212a、212bに対応付けられている所定のイベントの発生に応答して、イベントが発生した装置の通信クライアントが起動する。所定のイベントは、例えば利用者による物理的な操作エレメントの操作や、電源起動などが含まれる。そして、起動した通信クライアントが、プロファイルデータに設定されたリンク先端子のURI宛てに、所定のイベントに対応付けられた端子の処理、例えばデータ送信やデータ要求のためのコマンド及びデータを送信する。さらに、リンク先端子の装置の通信サーバが、受信したコマンド及びデータに対応する処理を実行する。
このような端子間の通信を端子間通信と称する。端子間通信は、通信クライアントと通信サーバ間のHTTPによる通信である。したがって、所定のイベントに対応付けられた端子のURIとそれとリンク状態にある端子のURIの情報があれば、通信クライアントと通信サーバは、HTTPにより通信することができる。
図3の処理S12−S14は、第1装置100aの表示画面のタッチパネルに触れると、第2装置100bが録画を開始する例である。まず、利用者は、第1装置のタッチパネルの任意の位置または所定の位置に触れる操作を行うと(S12)、第1装置のOSが通信クライアントを起動し、タッチパネルに対応付けられている端子212aから第2装置100bの端子212bにセンドコマンド(以下SENDコマンド)330と送信データ331を送信する(S13)。送信データ331には、データ型「Boolean」と値「true」が含まれ、値「true」は録画開始の指示を意味する。第1装置のプロファイルデータ内に端子212aのリンク先端子として設定されている他の装置の端子すべてに、SENDコマンドと送信データが送信される。
そして、第2装置100bの通信サーバが、受信したSENDコマンドを処理するプログラムを起動して、端子212bである録画端子と送信データの値「true」に対応付けられた録画動作を開始する(S14)。
図3の処理S15−S18は、第1装置の映像入力ボタンの操作が行われると第2装置が映像配信データのURIを応答する例である。利用者が、第1装置の映像入力ボタンを操作すると(S15)、表示装置を制御するプレーヤ制御プログラムが起動する。プレーヤ制御プログラムは、プロファイルデータ内に映像入力端子のリンク先端子として設定されている第2装置の映像配信端子のURIと、レシーブコマンド(以下RECVコマンド)及び送信データとをパラメータにして、通信クライアントを実行する。その結果、通信クライアントはRECVコマンド340と送信データ331を第2装置の映像配信端子に送信する(S16)。
さらに、第2装置の通信サーバが、受信したRECVコマンドを処理するプログラムを起動し、端子212bである映像入力端子と送信データのデータ型である「application/dash+xml」(映像配信データを示すMIME型)に対応した処理を実行させる。その結果、通信サーバは、RECVコマンドを処理するプログラムが取得した映像配信データのURI「https://[1234:5678::90ab]/video.mpd」を値とする受信データ341を、第1装置の映像入力端子に応答する(S17)。そして、第1装置の通信クライアントは、映像配信データのURIに基づいて映像コンテンツを取得して、表示装置にコンテンツを再生させる(S18)。
第1装置の所定のイベントは、映像入力ボタンの操作に代えて、第1装置の電源起動などでもよい。
上記の例では、端末900で接続GUIを実行したが、それに代えて、第1装置または第2装置が端末900のWEBアプリケーションの接続GUIを実行して、PROFコマンドとLINKコマンドの送信と対応する処理を行うようにしてもよい。
以下、図1、図2、図3の動作を可能にする各装置と端末の構成及びそのプログラム群について説明し、各コマンドに対する動作を詳述する。
[第1装置、第2装置、端末の構成及びプログラム群]
図4、図5、図6は、第1装置、第2装置などの端子間通信を行う装置の構成とプログラム群を示す図である。
図4に示されるとおり、装置100は、中央処理装置であるCPU(Central Processing Unit)101、不揮発性記憶装置を含む記憶装置102、及び通信を行うための通信装置103を有する。さらに、装置100は、これら以外に、その装置固有の機能(例えば表示や録画、再生など)のために必要な固有の装置104も含む。固有の機能には、所定のイベントに応答してそれに対応付けられた端子とそのリンク先端子間の通信を開始する処理も含まれる。さらに、記憶装置102には、ソフトウェア110が記憶または組み込まれている。
ソフトウェア110は、複数のプログラムとデータを有する。通信サーバ(プログラム)114は、HTTP(Hypertext Transfer Protocol)という通信規格(HTTPSという暗号通信規格を含む)に従って受信ならびに応答の処理を行うプログラムであり、一般にHTTPサーバと呼ばれる。通信クライアント(プログラム)115は、通信サーバに対してHTTPに従って送信の処理を行うプログラムであり、一般にHTTPクライアントと呼ばれる。カーネル116は、オペレーティングシステムであり、装置の基本動作に必要なプログラムの集合である。また、プレーヤプログラム、それを制御するプレーヤ制御プログラム117は、固有の装置104の制御を行う。
WEBアプリケーション111は、装置100にアクセス(HTTPによる通信)してきた端末などに対して、通信サーバ114が応答するプログラムであり、端末などが実行するプログラムのデータである。WEBアプリケーションに後述する接続GUI(プログラム機能)121が含まれている。
装置間通信プログラム112は、前述の数種類のコマンドにより行われる装置間の通信を制御し、それらコマンドを処理するためのコマンド処理(プログラム)122〜126で構成される。コマンド処理群は、主に、装置100の通信サーバにより起動されてそれぞれのコマンド処理を行う。コマンド処理群には、PROFコマンド処理122、LINKコマンド処理123、SENDコマンド処理124、RECVコマンド処理125、NULLコマンド処理126を有する。
装置間通信データ113は、装置間の通信で参照されるまたは設定されるデータである。主に、装置100の固有の情報(装置の名称、アイコン情報、位置情報(GPS(Global Positioning System)等による装置の測位情報など)、複数の仮想端子の情報、例えば端子の名称、端子のURI、リンク情報などを有する)を記述しているプロファイルデータ127を有する。また、装置間の通信で認証を必要する場合は、認証データ128を含んでもよい。
図5に示されるとおり、装置100の通信サーバ114は、少なくとも、HTTPに従った受信処理を行うHTTP受信処理114−1と、その結果をHTTPに従って応答するHTTP応答処理114−2を有するプログラムである。また、必要に応じて、暗号通信(HTTPS)を行うための暗号通信処理114−3や、認証および承認を処理する受信時の認証処理114−4を有する。また、その他、その装置に必要な処理114−10を有する場合がある。処理114−10は、ログ記録処理、負荷分散処理、プロクシ処理、その他の拡張処理などである。
図6に示されるとおり、通信クライアント115は、少なくとも、HTTPに従った送信処理を行うHTTP送信処理115−1を有するプログラムである。また、必要に応じて、暗号通信(HTTPS)を行うための暗号通信処理115−2や、認証に必要なデータ送信を処理する送信時の認証処理115−3を有する。また、その他、その装置に必要な処理115−10を有する場合がある。
図7は、端末などの機器の構成とプログラム群を示す図である。端末とは、WEBブラウザを有するPC、パッド端末やスマートフォン等の機器である。端末900は、CPU901、不揮発性記憶装置を含む記憶装置902及び通信を行うための通信装置903を有する。これ以外に、その装置固有の機能のために必要な固有の装置904も構成に含む場合がある。記憶装置902には、端末のソフトウェア910が記憶または組み込まれている。
端末のソフトウェア910は、複数のプログラムとデータを有する。WEBブラウザ915は、通信サーバに対してHTTPに従って送信の処理を行う通信クライアントである。カーネル916はオペレーティングシステムである。
そして、WEBブラウザ915は、少なくとも、HTTPに従った送信処理を行うHTTP送信処理915−1と、その応答を実行する描画エンジン915−4を有するプログラムである。また、必要に応じて、暗号通信を行うための暗号通信処理915−2や、認証に必要なデータ送信を処理する認証処理915−3を有する。また、その他、その装置に必要な処理915−10を有する場合がある。
図8は、WEBアプリケーションの処理内容と説明を示す図である。WEBアプリケーション111は、接続GUI(処理)121を含む。WEBアプリケーション111は、他に、必要に応じて、その他の処理129(装置および固有の装置の制御GUI、装置および固有の装置の設定GUI、装置のブックマークGUI、装置の取扱説明を表示するGUI、初期画面の表示、各GUIを呼び出すMENUの表示など)を含んでも良い。
接続GUI121の、任意の装置を呼び出してその装置を図柄(アイコン)で表示する機能121−1は、マウスやタッチパネルなどのイベント制御、URIの入力(取得)、PROFコマンドの送信、プロファイルデータの記憶、アイコンや端子の図柄描画などの機能を有する。
また、接続GUI121の、呼び出した装置の間を接続する操作のための機能121−2は、マウスやタッチパネルなどのイベント制御、線の描画、LINKコマンドの送信などの機能を有する。
図9は、端末と第1装置と第2装置間の通信と通信を処理するプログラム及びハードウエアを示す図である。まず、端末900が第1装置100aにアクセスしてWEBアプリケーションを取得し、PROFコマンドとLINKコマンドを送信する処理について説明する。
端末900は、前述の利用者の操作に基づいて、ブラウザ915が、カーネル916のデバイスドライバやネットワークのプロトコルスタックを利用し、通信装置903から第1装置100aにアクセスまたはコマンドを送信する。この通信は、端末と第1装置が接続可能なネットワークNWを介して、HTTPによるアクセスと、TCP/IP(Transmission Control Protocol/Internet Protocol)によるIPパケットの送信と、通信装置による物理的な通信とで行われる。
第1装置100aでは、通信装置103がIPパケットを受信し、カーネルのプロトコルスタックによりIPパケット内のデータが通信サーバ114に渡される。通信サーバ114は、アクセスに応答してWEBアプリケーションを応答するか、コマンドに応答してコマンドとデータを装置間通信プログラム111に処理させる。
装置間通信プログラム111のコマンド処理が、コマンドに対応する処理を実行し、PROFコマンドであれば、プロファイルデータを通信サーバ114に応答させ、LINKコマンドであればリンク先URIをプロファイルデータ内の端末情報に設定する。
次に、第1装置と第2装置間の端末間通信について説明する。第1装置100aで物理的な操作エレメント(表示画面のタッチパネルや映像入力ボタン)を操作したり、電源起動されるなどの所定のイベントが発生すると、カーネルまたはそれ以外の制御プログラム等が通信クライアント115を起動する。そして、通信クライアントが、所定のイベントに対応するコマンドと送信データを、所定のイベントに対応付けられた仮想端子のリンク先URIにHTTPにより送信する。一方、第2装置100bでは、通信サーバ114がコマンドと送信データを受信し、前述と同様に、装置間通信プログラム111の対応するコマンド処理にコマンドの処理を実行させる。
[WEBアプリケーションの接続GUIの処理]
図10は、端末がWEBアプリケーション111を取得、実行する処理を示す図である。装置100のネットワークにおける位置であるURIが、その装置の説明書や本体などに記載されている。最初に、端末900が、装置100のURIを取得し(S1)、端末のWEBブラウザである通信クライアントを実行して、取得したURIへアクセスを行う(S2)。装置100の通信サーバ114が、このアクセスに応答して(S3_1)、端末900にWEBアプリケーション111を応答する(S3_2)。端末900は、WEBアプリケーション111を受信し(S3_3)、WEBブラウザがこれを実行する(S3_4)。WEBアプリケーション111は、例えばHTML5(Hypertext Markup Language 5)によって作成されている。WEBアプリケーションを実行することで、装置100の設定や動作などの様々な処理を、端末900の表示画面からグラフィカルなインターフェースで容易に操作することができる。
WEBアプリケーション111は、様々な処理機能のひとつに接続GUI121がある。接続GUI121は、任意の装置を呼び出してその装置を図柄(アイコン)で表示するという機能や、呼び出した装置の間を接続する操作のための機能を持つ。装置のアイコンについては、図1、図2で示したように、装置のアイコンに論理的な端子(仮想端子)のアイコンが含まれる。装置と端子のアイコンは、平面的であってもよく、立体的であってもよい。
端子との通信で使用されるデータを、コマンドと呼ぶ。端子のURIによってアクセスされる実体は、CGI(Common Gateway Interface)である。端子のCGIはアクセスされると、所定のプログラムを実行する。したがって、装置の端子にコマンドを送信することで、装置の装置間通信プログラム112が実行され、そのコマンドの種類に応じたコマンド処理が実行される。コマンドの種類には、前述したとおり、プロファイルPROF、リンクLINK、センドSEND、レシーブRECV、ヌルNULLなどがある。
図11は、端末によるプロファイルコマンド(PROFコマンド)の処理を示す図である。PROFコマンドは、装置100にそのプロファイルデータを応答するように要求するコマンドである。端末900で実行されている接続GUI121が、装置100の任意の端子に対して、PROFコマンド310を送信する(S4)。WEBアプリケーションが装置100からの応答により取得されている場合、そのWEBアプリケーションは装置100のPROFコマンドの送信先URIの情報を有する。したがって、接続GUIによるPROFコマンドの装置100への送信は、例えばWEBアプリケーションの実行開始時に自動的に行われる。または、端末で利用者が所望の装置のURIを入力して送信指示の操作をすることで、接続GUI121がその装置にPROFコマンドを送信することもできる。
装置100の通信サーバ114は、PROFコマンドを受信すると(S5_1)、PROFコマンド処理122を実行する(S5_2)。PROFコマンド処理122は、装置内の記憶装置からプロファイルデータ127を取り出し、これを通信サーバに渡す(S5_3)。通信サーバは、プロファイルデータ127を端末900に応答する(S5_4)。端末の接続GUIは、プロファイルデータを処理して、例えば、プロファイルデータに基づいて、装置とその端子のアイコンを表示する(S5_5)。アイコンは、図1に示したとおりである。
装置100は、悪意のある第三者からの保護を目的に、PROFコマンド310を受信して応答するか否かを、ネットワークの標準的な認証機能などによって確認してもよい。
図17は、プロファイルデータの構成を示す図である。装置100は、装置および端子(仮想端子)の特徴や現在の状態を、プロファイルデータ127に記憶する。プロファイルデータは、装置に関するデータ127_1と、複数の端子に関するデータ127_2を有する。装置に関するデータ127_1は、装置名称、装置の説明文、装置のアイコン情報、装置の位置情報、装置の端子情報を有する。端子に関するデータ127_2は、端子の名称、端子の説明文、端子のURI、端子の属性情報、端子の最大接続可能数、端子のリンク情報を有する。
端子の属性情報127_3は、その端子が処理可能なデータの情報を複数有する。また、端子のリンク情報127_4は、その端子に対して送信されたLINKコマンドで設定されるリンク先端子のURIを複数有する。
図18は、端子の属性情報である端子が処理可能なデータの情報の例を示す図である。端子が処理可能なデータの情報は、その端子が扱うことのできるデータの種類(データ型)と、その端子がデータをどのように処理できるかを表した端子属性とを有する。送信データや受信データは、データ型と値の組により構成される。
図示されるとおり、データ型には、真偽値(値は真と偽)、数値(値は数字)、文字(値は文字)、MIME型(値はURI)がある。また、端子属性とは、SENDコマンド、RECVコマンド、およびその送受信方向の組み合わせで、4種類(IN、OUT、REQ、ACK)を有する。端子属性それぞれについての説明は、図18に示されるとおりである。したがって、端子属性OUTの端子のリンク先端子は端子属性INであり、端子属性INの端子のリンク先端子は端子属性OUTでもある。同様に、端子属性REQの端子のリンク先端子は端子属性ACKであり、端子属性ACKの端子のリンク先端子は端子属性REQである。このような端子属性とデータ型に基づいて、前述の図2で説明した表示画像121Dでの接続先候補の端子のハイライト化が行われる。
それぞれの装置がプロファイルデータを保持することで、独立・分散型のネットワーク形態を構成する。このようなネットワーク形態であれば、ネットワークにおいてある装置が故障しても、他の装置はその影響を受けずに動作し続けることができる。また、中央サーバのような、情報を集積する装置との通信も必要なくなり、簡便で低コストである装置の端子間通信を実現できる。また、装置の利用者のプライバシーが尊重される。
図12は、端末によるリンクコマンド(LINKコマンド)の処理を示す図である。本実施の形態では、リンクとは、異なる端子が論理的に接続されて互いの通信が可能な状態のこと、またはそのような状態にする行為をいう。異なる端子は、それぞれ異なる装置の端子でもよいし、同一装置内の異なる端子でもよい。また、1つの端子が、異なる複数の端子とリンクしてもよい。LINKコマンドは、リンクする、または、リンクを解除するためのコマンドである。
図2で説明したとおり、端末900の接続GUI121による表示画面上で、利用者が異なる端子間を接続するようにドラッグ操作をすると、接続GUIが有する端子間を接続する操作のための機能121−2(図8)により、装置100の接続するようドラッグ操作された端子のURIに対して、LINKコマンド320が送信される(S8)。図12には、端末900から装置100だけにLINKコマンドが送信されているが、図2で説明したとおり、リンク状態にしたい異なる端子が異なる装置の場合、それぞれの装置の端子のURIにLINKコマンドが送信される。LINKコマンドの送信そのものは、WEBブラウザの通信クライアントにより行われる。
LINKコマンド320は、リンクをするか解除するかの情報、および、リンク先の相手端子のURIの情報を含んでいる。これに加えて、認証データ128を含んでもよい。
装置100の通信サーバ114は、LINKコマンド320を受信すると(S9_1)、LINKコマンド処理123を実行する(S9_2)。LINKコマンド処理123は、装置内の記憶装置102に記憶されているプロファイルデータ127のうち、LINKコマンドの送信先URIの端子のリンク情報に、LINKコマンドに含められた相手端子のURIを書き込み、設定する。その後、LINKコマンド処理123は、通信サーバ114に処理が成功したか失敗したかの情報を端末900に応答してもよい(S9_4)。
このようにプロファイルデータ127内のリンク情報にリンク先端子のURIが設定されることで、異なる端子間がリンク状態にされる。そして、利用者が一方の端子に関連付けられた物理的な操作エレメントを操作するなど所定のイベントが発生すると、イベントに応答して起動された通信クライアントが、そのイベントに関連付けられた端子のURIからリンク先端子のURIに、後述するSENDコマンドまたはRECVコマンドを送信する。コマンドの種類とコマンドに添付される送信データは、イベントに関連付けられた端子にあらかじめ対応付けられている。
なお、装置100は、悪意のある第三者からの保護を目的に、LINKコマンド320を受信して処理するか否かを、ネットワークの標準的な認証機能などによって制限してもよい。
[端子間通信の処理]
次に、LINKコマンドによりリンク状態に設定された端子間の通信の処理について説明する。端子間の通信では、例えば、データの送信を行うSENDコマンドと、データの受信を依頼するRECVコマンドと、応答用などに使用されるNULLコマンドが送信される。NULLコマンドは、例えば、通信中に何らかの異常により正しい応答ができない場合、受信したコマンドを受理できない場合などに使用される。NULLコマンドを受信した場合、装置は特に何も実行しない。
[SENDコマンド]
図13は、リンク状態にある第1装置の端子と第2装置の端子間のSENDコマンドの通信処理を示す図である。第1装置100aの端子に対応する所定のイベントが発生すると、通信クライアント115が起動する。そして、通信クライアント115が、第2装置100bの所定のイベントに対応付けられた端子のリンク先の端子に対し、SENDコマンド330を送信する(S12)。SENDコマンド330には送信データ331が添付されて送信される。送信データ331は、図3に示したとおり、データ型が真偽値(boolean)で、値が真(true)または偽(false)である。SENDコマンドと送信データは、所定イベントに対応付けられた端子に対応付けされている。
第2装置100bの通信サーバ114は、SENDコマンド330を受信すると(S14_1)、SENDコマンド処理124を実行する(S14_2)。SENDコマンド処理124は、送信データ331をリンク先端子への入力データとして処理する(S14_3)。その結果、第2装置のリンク先端子に対応付けられた処理であって、送信データの値に対応する処理が実行される。その後、SENDコマンド処理124は、通信サーバ114に書き換えが成功したか失敗したかの情報を第1装置100aに応答してもよい(S14_4)。
第2装置100bは、悪意のある第三者の装置などからの保護を目的に、リンク時に入手した認証データ128を利用して認証した後、SENDコマンド330の受信と処理をおこなってもよい。
上記の第1装置での端子に対応する所定のイベントは、様々なイベントが含まれる。例えば、第1装置の物理的な操作エレメントへの利用者による操作のイベントや、第1装置の電源起動のイベントや、第1装置のある端子が他の装置の端子からSENDコマンドを受信するイベントや、第1装置内のセンサが人間を感知したイベントなどがある。
図14は、一具体例におけるSENDコマンドの通信処理を示す図である。一具体例では、第1装置のタッチパネルを操作したことに応答して、通信クライアントが起動し、タッチパネルに対応付けられた端子からリンク先の第2装置の端子にSENDコマンドを送信し、第2装置の通信サーバがSENDコマンド処理に録画制御処理を実行させる。
図19は、一具体例での第1装置のプロファイルデータの例を示す図である。また、図20は、一具体例での第2装置のプロファイルデータの例を示す図である。
図19の第1装置のプロファイルデータ127aは、装置の名称「モニタ」、装置の画像情報などと、装置の端子情報として、端子1の名称「タッチパネル」、端子1のURI1_1、端子1の属性情報として「OUT, Boolean」「ACK, Boolean」、端子1のリンク情報(「なし」から「リンクしている端子のURI2_1」に設定されている。)などを有する。また、端子2の名称「映像入力」、端子2のURI1_2、端子2の属性情報として「REQ, application/dash+xml」、端子2のリンク情報(「なし」から「リンクしている端子のURI2_2」に設定されている。)などを有する。
図20の第2装置のプロファイルデータ127bは、装置の名称「ビデオカメラ」、装置の画像情報などと、装置の端子情報として、端子1の名称「録画」、端子1のURI2_1、端子1の属性情報として「IN, Boolean」「ACK, Boolean」、端子1のリンク情報(「なし」から「リンクしている端子のURI1_1」に設定されている。)などを有する。また、端子2の名称「映像配信」、端子2のURI2_2、端子2の属性情報として「ACK, application/dash+xml」、端子2のリンク情報(「なし」から「リンクしている端子のURI1_2」に設定されている。)などを有する。
したがって、第1装置の端子1「タッチパネル」と第2装置の端子2「録画」はリンク状態に設定され、SENDコマンドの送信(OUT)と受信(IN)がそれぞれ可能である。また、第1装置の端子2「映像入力」と第2装置の端子2「映像配信」もリンク状態に設定され、RECVコマンドの送信(REQ)と応答(ACK)がそれぞれ可能である。
図14において、利用者が第1装置のタッチパネルに触れる(S12_1)。タッチパネルに触れると、カーネルの機能によりイベントが発生する(S12_2)。イベントを待ち受ける常駐プログラム(デーモン)が、タッチパネルを触れたイベントに応答して、イベントに対応するSENDコマンド+送信データ(Boolean, true)と、送信先URIと、認証情報を所定のテーブルやプロファイルデータから取得して、それらの情報とともに通信クライアントを実行する(S12_3)。上記の処理S12_1―S12_3は、第1装置に固有の構成により実現される。
そして、第1装置の通信クライアントが、タッチパネルの端子から第2装置の録画端子に対応する端子のURI2_1に、SENDコマンドと送信データを送信する(S12_4)。
一方、第2装置の通信サーバが、SENDコマンドと送信データを受信し(S14_1)、SENDコマンド処理を実行する(S14_2)。そして、SENDコマンド処理は、録画端子に対応する端子(URI2_1)に送信された送信データの真偽値をパラメータとして、録画制御処理を実行する(S14_3)。具体的には、録画制御処理は、パラメータ値(true, false)と、第2装置の端子の設定に基づき、録画を開始する(true)または録画を停止する(false)のいずれかである。この処理S14_3も、第2装置に固有の構成で実現される。
[RECVコマンド]
図15は、リンク状態にある第1装置の端子と第2装置の端子間のRECVコマンドの通信処理を示す図である。第1装置100aでの所定のイベントに応答して通信クライアント115が起動し、通信クライアント115が、所定イベントに対応付けられた端子のリンク先である第2装置100bの端子に、RECVコマンド340を送信データ331と共に送信する(S16)。送信データ331には、図3に示したような要求するデータの種類(データ型)が含まれている。
第2装置100bの通信サーバ114は、RECVコマンド340を受信すると(S17_1)、RECVコマンド処理125を実行する(S17_2)。RECVコマンド処理125は、リンク先の端子に対して要求されたデータの種類(データ型)を送信データから取得し、種類に対応する受信データ341を生成し(S17_3)、受信データ341を通信サーバ114に渡す(S17_4)。そして、通信サーバ114は、受信データを第1装置100aに応答する(S17_5)。
第2装置は、悪意のある第三者の別の装置などからの保護を目的に、認証データ128を利用して認証した場合に、RECVコマンド340の受信と処理を実行してもよい。
そして、受信データを受信した第1装置の通信クライアントが受信データを処理する(S18)。たとえば、受信データに従って第1装置を制御する。
図16は、一具体例におけるRECVコマンドの通信処理を示す図である。一具体例では、第1装置の電源起動イベントに応答して、通信クライアントが、電源起動イベントに対応付けられた端子からそのリンク先の第2装置の端子にRECVコマンドを送信し、第2装置の通信サーバによって起動されたRECVコマンド処理が、要求されている受信データを第1装置の端子に応答する。
まず、利用者が第1装置の電源を起動する(S16_1)。電源起動に伴いカーネルが第1装置を制御するプレーヤ(プログラム)とそのプレーヤを制御するプレーヤ制御(プログラム)を実行する(S16_2)。プレーヤは、例えば、プレーヤ制御からの指示により再生や停止を行う機能と、映像配信データをダウンロードし、解析し、再生する機能を有する(S16_3)。一方、起動したプレーヤ制御は、電源起動イベントに対応付けられた映像配信端子に対応するRECVコマンド+送信データ(データ型:application/dash+xml,値:なし(固有値))と、その端子のリンク先端子のURI(第2装置の映像配信端子)と、認証情報を、所定のテーブル及びプロファイルデータから取得し、取得情報をパラメータとして通信クライアントを起動する(S16_4)。RECVコマンド+送信データは、電源起動に対応付けられた映像入力端子の固有値である。上記の処理S16_1〜S16_4は、第1装置に固有の構成により実現される。
そして、通信クライアントが、第2装置の映像配信端子のURIに、RECVコマンドと送信データを送信する(S16_5)。
一方、第2装置の通信サーバが、RECVコマンドと送信データを受信する(S17_1)。そして、通信サーバがRECVコマンド処理を実行する(S17_2)。RECVコマンド処理は、映像配信端子(URI2_2)に送信された送信データの種類に応じた受信データとして、第2装置の映像配信データの保存場所のURIを含む受信データ341を生成する(S17_3)。この処理S17_3は、第2装置に固有の構成により実現される。
そして、RECVコマンド処理は、生成した受信データを通信サーバに渡す(S17_4)。これに応答して、通信サーバが受信データを第1装置の映像入力端子に応答する(S17_5)。
さらに、第1装置の通信クライアントが受信データを受信し、プレーヤ制御に渡す(S18_1)。プレーヤ制御は、映像配信データのURIとともに、プレーヤに再生を指示する(S18_2)。この処理S18_2は第1装置に固有の構成により実現される。
その後、プレーヤは、映像配信データのURIにアクセスして映像コンテンツを取得して再生する。図16の例では、映像配信データのURIは、第2装置内の映像コンテンツを保存する記憶領域の位置である。
[第2の実施の形態]
図21は、第2の実施の形態を示す図である。図21の実施の形態では、第1装置(モニタ装置)100a、第2装置(ビデオカメラ)100b、第3装置(ランプ)100c、第4装置(エアコン)100dが、端末900の接続GUIの表示画像121Dに示すようにリンク状態に設定されている。このようなリンク状態は、利用者が、接続GUIの表示画面121Dで各装置のアイコン211a〜211dの端子間を接続するようにドラッグ操作することに応答して、接続GUIがLINKコマンドを各装置の端子に送信し、端子それぞれにリンク先端子のURIを設定することにより実現される。
第1装置100aは、モニタ装置であり、一例として、そのモニタ画面に第2〜第4装置を制御するためのメニューが表示可能にされている。そして、各メニュー項目が、第1装置100aの端子に対応付けられている。
たとえば、第1装置100aのモニタ画面の第1のメニュー項目をタッチするイベントに応答して、第1装置100aの端子212a_1からSENDコマンドまたはRECVコマンドが第2装置100bの端子212bに送信される。端子間通信は前述のとおりである。
また、第1装置100aのモニタ画面の第2のメニュー項目をタッチするイベントに応答して、第1装置の端子212a_2から第3装置100cの端子212c_1にSENDコマンドが送信される。この第2のメニュー項目は、例えば運転開始である。そこで、第3装置100cのSENDコマンド処理は、SENDコマンドの送信データの運転開始を示す「true」に対応する第3装置100cを点灯する処理を実行する。
さらに、第3装置100cのSENDコマンド処理は、端子212c_1で受信したSENDコマンドを、端子212c_2から第4装置100dの端子212dに転送する。そこで、第4装置100dのSENDコマンド処理は、空調を開始する。このような転送処理は、例えば、第3装置100cのプレーヤ制御などが処理できるように第3装置100cに固有な構成で実現される。
図21の第2の実施の形態に示されるとおり、本実施の形態の装置の仮想端子間の通信制御を利用して、家庭内のまたは職場内の複数の製品をネットワーク化することができる。各家電製品に必要な構成は、図4,5,6に示したとおり、通信サーバ114、通信クライアント115、装置間通信プログラム112、装置間通信データ113などのプログラムやデータと、CPU101、記憶装置102、通信装置103などのハードウエアである。WEBアプリケーション111は、必ずしも装置内の記憶装置に記憶されている必要はなく、所定のWEBアプリケーション配信サーバから端末にダウンロードされインストールされても良い。
以上の通り、本実施の形態によれば、WEBアプリケーションの接続GUIの機能により、利用者は端末またはある装置の画面上で装置アイコンの端子間を接続するドラッグ操作をすることで、各装置の仮想端子間を仮想の接続ケーブルで接続して(リンク状態にして)、端子間通信可能な状態にすることができる。したがって、煩雑な物理的な接続ケーブルを使用せずに複数の装置間をネットワーク接続することができる。このネットワーク接続は、中央サーバ装置などの大規模な装置を必要としない。