(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-06
(45)【発行日】2025-03-14
(54)【発明の名称】システムおよびプログラム
(51)【国際特許分類】
G06F 11/36 20250101AFI20250307BHJP
G16Y 10/65 20200101ALI20250307BHJP
G16Y 40/20 20200101ALI20250307BHJP
【FI】
G06F11/3698
G16Y10/65
G16Y40/20
(21)【出願番号】P 2021030816
(22)【出願日】2021-02-26
【審査請求日】2024-01-10
(73)【特許権者】
【識別番号】000004352
【氏名又は名称】日本放送協会
(74)【代理人】
【識別番号】100141139
【氏名又は名称】及川 周
(74)【代理人】
【識別番号】100171446
【氏名又は名称】高田 尚幸
(74)【代理人】
【識別番号】100114937
【氏名又は名称】松本 裕幸
(74)【代理人】
【識別番号】100171930
【氏名又は名称】木下 郁一郎
(72)【発明者】
【氏名】佐藤 辰哉
(72)【発明者】
【氏名】遠藤 大礎
(72)【発明者】
【氏名】藤津 智
(72)【発明者】
【氏名】藤沢 寛
【審査官】円子 英紀
(56)【参考文献】
【文献】特開2013-210882(JP,A)
【文献】特開2005-092286(JP,A)
【文献】米国特許第5889954(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G16Y 10/65
G16Y 40/20
(57)【特許請求の範囲】
【請求項1】
第1デバイスエミュレーターと、
第2デバイスエミュレーターと、
を備えるシステムであって、
前記第1デバイスエミュレーターと前記第2デバイスエミュレーターとのそれぞれは、
デバイス
のアクションの情報と、動作用アプリと、
デバイスが持つ属性と、デバイスで発生し得るイベントと、を含んだデバイス設定情報を記憶する設定記憶部と、
前記設定記憶部に記憶された前記動作用アプリを実行するデバイス動作部と、
前記設定記憶部に記憶された前記アクションの情報に関連付けられた制御信号を外部から受信すると、当該アクションに関連付けられた動作を行うように、前記デバイス動作部の動作を制御するデバイス制御部と、
を備え、
前記第1デバイスエミュレーターは、更新された前記第1デバイスエミュレーターの属性情報を、前記第2デバイスエミュレーターに伝達し、
前記第1デバイスエミュレーターは前記第1デバイスエミュレーターで発生したイベントの情報を前記第2デバイスエミュレーターに伝達するとともに、伝達を受けた前記第2デバイスエミュレーターは伝達された当該イベントの内容に応じた動作を行う、
システム。
【請求項2】
請求項1に記載のシステム、としてコンピューターを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デバイスエミュレーターおよびプログラムに関する。
【背景技術】
【0002】
映像等のコンテンツを提示する際に、IoTデバイスが用いられる場合がある。ここでのIoTデバイスは、例えば、映像を表示したり、音声を出力したり、LEDライト等の照明手段を用いて光の演出効果を実現したり、物質を噴霧したり、物を振動させたり、物の姿勢を変えたり、といった動作を行う装置である。つまり、ここでのIoTデバイスは、コンテンツの表現を実現するものである。様々な種類のIoTデバイスは、各デバイスに固有の動作をすることによって、コンテンツの表現を実現する。
【0003】
非特許文献1には、放送コンテンツが、IoTデバイスを活用することにより、時間や場所を選ばない映像・音声の提示や、テキスト、照明、振動を用いた情報提示によるアクセシビリティの向上を図る技術が記載されている。同文献では、コンテンツ、デバイス、ユーザーの3つの要素の情報から、デバイスが自律的にコンテンツを提示する仕組み「IoTベースメディアフレームワーク」についても記載されている。
【0004】
また、例えば特許文献1には、表示装置が、代替映像を表示する際に、当該代替映像に予め対応付けられた、匂い、熱、振動、および触感の少なくともいずれか一つを発生させる発生手段、を備える技術が記載されている。
【先行技術文献】
【特許文献】
【0005】
【非特許文献】
【0006】
【文献】遠藤大礎,IoTベースメディアフレームワーク 多様なデバイスやユーザー環境に応じたコンテンツ提示,NHK放送技術研究所,技研だより,2020年12月号,[online],[2021年2月1日ダウンロード],インターネット<URL:https://www.nhk.or.jp/strl/publica/giken_dayori/189/4.html>
【発明の概要】
【発明が解決しようとする課題】
【0007】
IoTデバイスを用いたコンテンツの提示を行うためには、実際にコンテンツを配信する前に、各デバイスに対しての動作検証を行う必要がある。しかしながら、コンテンツ提示のために使用され得るIoTデバイスの種類は、多種多様である。また、少なくとも検証の時点においては実在しないIoTデバイスについても、検証を行う必要がある。またコンテンツの種類とIoTデバイスの種類と組み合わせの数は膨大である。つまり、このような膨大な組み合わせをすべて網羅する検証環境を、実際のIoTデバイスを用いて構築することは非常に困難であるという問題がある。
【0008】
本発明は、上記の課題認識に基づいて行なわれたものであり、コンテンツの表現等を実現するためのIoTデバイスの検証を容易にするデバイスエミュレーターおよびプログラムを提供しようとするものである。
【課題を解決するための手段】
【0009】
[1]上記の課題を解決するため、本発明の一態様によるデバイスエミュレーターは、デバイスの、アクションの情報と、動作用アプリと、を少なくとも含んだデバイス設定情報を記憶する設定記憶部と、前記設定記憶部に記憶された前記動作用アプリを実行するデバイス動作部と、前記設定記憶部に記憶された前記アクションの情報に関連付けられた制御信号を外部から受信すると、当該アクションに関連付けられた動作を行うように、前記デバイス動作部の動作を制御するデバイス制御部とを備えるものである。
【0010】
[2]また、本発明の一態様は、上記のデバイスエミュレーターにおいて、前記設定記憶部は、複数のデバイスのそれぞれについての前記デバイス設定情報を記憶するものであり、前記デバイス動作部は、前記複数のデバイスの中から選択されたデバイスの前記動作用アプリを実行するものである。
【0011】
[3]また、本発明の一態様は、上記のデバイスエミュレーターにおいて、前記複数のデバイスの中から選択されたデバイスについての前記アクションの情報を外部に伝達する情報伝達部、をさらに備えるものである。
【0012】
[4]また、本発明の一態様は、上記のデバイスエミュレーターにおいて、前記情報伝達部は、前記デバイス動作部が、前記デバイスが持つ属性値を更新した際に、当該属性値の情報を外部に伝達するものである。
【0013】
[5]また、本発明の一態様は、上記のデバイスエミュレーターにおいて、前記情報伝達部は、前記デバイス動作部において前記デバイスに関する特定のイベントが発生した際に、当該イベントの情報を外部に伝達するものである。
【0014】
[6]また、本発明の一態様は、上記のデバイスエミュレーターにおいて、前記デバイス制御部は、ウェブオブシングス(WoT,web of things)プロトコルによって、前記制御信号を外部から受信するものである。
【0015】
[7]また、本発明の一態様は、デバイスの、アクションの情報と、動作用アプリと、を少なくとも含んだデバイス設定情報を記憶する設定記憶部と、前記設定記憶部に記憶された前記動作用アプリを実行するデバイス動作部と、前記設定記憶部に記憶された前記アクションの情報に関連付けられた制御信号を外部から受信すると、当該アクションに関連付けられた動作を行うように、前記デバイス動作部の動作を制御するデバイス制御部と、を備えるデバイスエミュレーター、としてコンピューターを機能させるためのプログラムである。
【発明の効果】
【0016】
本発明によれば、デバイスエミュレーターは、様々なデバイスとして動作する。これにより、コンテンツを再生する際などにおける、様々なデバイスに固有の動作を模擬的に実行できる。これにより、多種多様なデバイスの動作の検証が容易になる。
【図面の簡単な説明】
【0017】
【
図1】本発明の第1実施形態によるデバイスエミュレーターの概略機能構成を示すブロック図である。
【
図2】第1実施形態によるデバイスエミュレーターの基本的な動作手順を示すシーケンス図である。
【
図3】第1実施形態において設定記憶部20が記憶するデバイス情報の構成例を示す概略図である。
【
図4】第2実施形態によるデバイスエミュレーターの概略機能構成を示すブロック図である。
【
図5】第2実施形態によるデバイスエミュレーターの動作手順を示すシーケンス図である。
【
図6】第3実施形態によるデバイスエミュレーターの概略機能構成を示すブロック図である。
【
図7】第3実施形態によるデバイスエミュレーターの動作手順を示すシーケンス図である。
【
図8】第3実施形態によるデバイス設定ファイル(TD)の例を示す概略図(1/2)である。
【
図9】第3実施形態によるデバイス設定ファイル(TD)の例を示す概略図(2/2)である。
【
図10】第4実施形態によるシステムの構成を示すブロック図である。
【
図11】第5実施形態によるシステムの構成を示すブロック図である。
【
図12】各実施形態におけるデバイスエミュレーター(ないしは、エミュレーターが稼働するハードウェア)の内部構成の例を示すブロック図である。
【発明を実施するための形態】
【0018】
次に、本発明の複数の実施形態について、図面を参照しながら説明する。以下の実施形態におけるデバイスエミュレーター(あるいは単に「エミュレーター」)は、IoTデバイスの仮想的な実行状態を実現するものである。ハードウェア上で稼働するプログラムを「デバイスエミュレーター」等と呼ぶ場合もあるし、そのプログラムとハードウェアとを含めたものを「デバイスエミュレーター」等と呼ぶ場合もある。
【0019】
[第1実施形態]
本実施形態は、IoTデバイスの動作を模擬するデバイスエミュレーターである。なお、「IoT」は、Internet of Things(モノのインターネット)の略である。本実施形態が対応するIoTデバイスは、コンテンツの表現の手段として使用されるデバイスである。本実施形態のエミュレーターは、映像の表示や、音声の出力や、ライトの点灯や、振動を起こすなどといったIoTデバイスの動作を模擬する。なお、IoTデバイスが表現する方法(映像、音声等)は、ここに例示したものに限定されず、あらゆる種類の表現が可能である。本実施形態のエミュレーターは、通信機能を有している。エミュレーターは、通信を介して外部のデバイス(IoTデバイス)等からの制御を受けることが可能である。このような本実施形態のエミュレーターを用いることにより、複数のIoTデバイス間の連携動作を検証することも可能である。
【0020】
本実施形態のエミュレーターは、例えば、コンピューターを用いて実現可能である。エミュレーターは、一例として、携帯型情報端末機器(スマートフォン等)と、当該機器上で稼働するプログラムとを用いて実現可能である。ただし、エミュレーターを実現するためのハードウェアは、ここに例示したものには限定されない。
【0021】
図1は、本実施形態によるデバイスエミュレーターの概略機能構成を示すブロック図である。図示するように、デバイスエミュレーター1は、登録部10と、設定記憶部20と、デバイス選択部30と、デバイス動作部40と、デバイス制御部50とを含んで構成される。これらの各機能部は、例えば、コンピューターと、プログラムとで実現することが可能である。また、各機能部は、必要に応じて、記憶手段を有する。記憶手段は、例えば、プログラム上の変数や、プログラムの実行によりアロケーションされるメモリーである。また、必要に応じて、磁気ハードディスク装置やソリッドステートドライブ(SSD)といった不揮発性の記憶手段を用いるようにしてもよい。また、各機能部の少なくとも一部の機能を、プログラムではなく専用の電子回路として実現してもよい。各部の機能は、次の通りである。
【0022】
デバイスエミュレーター1は、前述の通り、通信機能を持つ。デバイスエミュレーター1は、例えば、標準化団体W3Cが提唱するWoTを用いて通信を行うようにしてよい。なお、「WoT」はWeb of Things(モノのウェブ)の略である。なお、WoTは、既に世界で利用されているウェブのオープン標準技術(HTML、Javascript、JSON等)を利用するものである。
【0023】
登録部10は、例えば外部から与えられるデバイス情報を読込み、エミュレーターにデバイスを登録するここで、デバイス情報は、デバイス設定ファイルと、動作用アプリ(動作用ウェブアプリ)とを含む。デバイス設定ファイルは、対象とするデバイスが持つ属性や、デバイスに対するアクションや、デバイスにおいて発生し得るイベントなどの情報を定義したデータである。動作用アプリは、デバイスの動作を模擬的に実現するプログラム(アプリケーションプログラム)のコードである。動作用アプリは、一例としてJavascript(登録商標)で記述されている。動作用アプリがデバイスエミュレーター1上で稼働することにより、エミュレーションの対象とするIoTデバイスの動作を模擬する表現を行える。
【0024】
設定記憶部20は、上記のデバイス情報(デバイス設定ファイルおよび動作用アプリ)を記憶する。デバイス設定ファイルは、上記の通り、各デバイスの特徴や動作を定義したデータを保持する。
【0025】
つまり、設定記憶部20は、デバイスの、アクションの情報と、動作用アプリと、を少なくとも含んだデバイス情報を記憶する。デバイスのアクションの情報は、デバイス設定ファイルが持つ情報である。また、設定記憶部は、デバイスの属性の情報を、デバイス設定ファイル内に含む情報として記憶してよい。また、設定記憶部は、デバイスで発生し得るイベントの情報を、デバイス設定ファイル内に含む情報として記憶してよい。
【0026】
設定記憶部20が記憶するデバイス設定情報は、複数のデバイスのそれぞれの設定情報であってもよい。複数のデバイスのデバイス設定情報のうち、適宜、特定のデバイスのデバイス設定情報が、デバイス選択部30によって選択されるようにしてもよい。設定記憶部20は、登録部10によって登録されたそれぞれのデバイスのデバイス情報を、徐々に蓄積していくようにしてよい。
【0027】
デバイス選択部30は、例えば外部からの指示等に基づいて、設定記憶部20に登録されているデバイスのうちの、特定のデバイスを選択する。デバイス選択部30は、設定記憶部20が複数のデバイスの情報を記憶している場合に、それら複数のデバイスの中から、デバイスエミュレーター1の動作対象とするデバイスを選択する。デバイス選択部30は、デバイスを選択した際に、各部に必要なデバイス情報を前述の設定記憶部20から呼び出す。デバイス選択部30は、選択したデバイスの動作用アプリを、デバイス動作部40に設定する。また、デバイス選択部30は、選択したデバイスを制御するためのAPIを、デバイス制御部50に設定(生成)する。なお、APIは、「Application Programming Interface」の略である。
【0028】
デバイス動作部40は、設定記憶部に記憶された動作用アプリを実行するものである。具体的には、デバイス動作部40は、例えば映像の表示や、音声出力や、ライトの点灯や、光線の出力や、装置を振動させることや、装置を傾けることや、物質(煙、水、あるいはその他の物質)を噴霧するなどといったことで、コンテンツの再生上の演出を行うことができる。なお、デバイス動作部40は、本来のデバイスの動作を模擬できれば充分である。デバイスの実際の動作(例えば、装置を振動させることや、装置を傾けることや、物質を噴霧することなど)を実行する手段をデバイスエミュレーター1のハードウェアが持たない場合には、デバイスエミュレーター1は、検証用の模擬的動作のみを行うようにしてよい。
【0029】
設定記憶部20に複数のデバイスの情報が記憶されている場合、デバイス動作部40は、それら複数のデバイスの中から選択されたデバイスの動作用アプリを実行する。そのために、上記のデバイス選択部30は、選択されたデバイスの動作用アプリを、デバイス動作部40に設定する。
【0030】
デバイス制御部50は、設定記憶部20に記憶されたアクションの情報に関連付けられた制御信号を外部から受信し、その制御信号に基づいて、当該アクションに関連付けられた動作を行うように、デバイス動作部40の動作を制御する。外部の装置がデバイスエミュレーター1に制御信号を送信することは、外部の装置等が例えば各動作に対応するAPIを呼び出すことにより行われる。つまり、デバイス制御部50は、外部からの制御を受付け、デバイス動作部40に伝える。外部からの制御信号の送信は、何らかの手段で自動的に行われるようにしてもよいし、ユーザーの操作に基づいて行われるようにしてもよい。
【0031】
図2は、本実施形態によるデバイスエミュレーターの基本的な動作手順を示すシーケンス図である。以下、この図に沿って、デバイスエミュレーター1の動作手順を説明する。
【0032】
ステップS1において、登録部10は、外部からのデバイス情報の登録を受け付ける。例えば、デバイスエミュレーター1の外のユーザーエージェントが、デバイス情報を登録部10に渡すことによって、デバイス情報を登録できるようにする。ユーザーエージェントは、デバイスエミュレーター1のユーザーに成り代わって動作する機能である。ユーザー自身がデバイスエミュレーターのユーザーインターフェースを操作することによって登録部10に対してデバイス情報の登録を要求するようにしてもよい。
【0033】
次にステップS2において、登録部10は、ステップS1で受け付けたデバイス情報を、設定記憶部20に書き込む。デバイス情報は、デバイス設定ファイルと動作用アプリ(ウェブアプリ)のコードとを含むものである。これによって、登録部10は、デバイスエミュレーター1に1つの仮想デバイスを登録することができる。なお、登録部10が行う都度、デバイスの情報は、設定記憶部20に書き込まれる。設定記憶部20は、複数のデバイスの情報を記憶することができる。
【0034】
次にステップS3において、デバイス選択部30は、ユーザーエージェントからの指示に基づいて、稼働させるデバイスを選択する。ここで選択され得るデバイスは、その時点までに設定記憶部20に登録されているデバイスのいずれかである。
【0035】
次にステップS4において、デバイス選択部30は、ステップS3で選択されたデバイスのデバイス情報を、設定記憶部20から呼び出す。設定記憶部20から読み出されたデバイス情報は、デバイス選択部30に渡される。デバイス情報は、前述の通り、デバイス設定ファイルと動作用アプリ(ウェブアプリ)のコードとを含む。
【0036】
次にステップS5において、デバイス選択部30は、ステップS4で取得した動作用アプリ(ウェブアプリ)を、実行可能な状態となるように、デバイス動作部40に設定する。これにより、デバイス動作部40は、ステップS3で選択されたデバイスを模擬する動作を行えるようになる。
【0037】
次にステップS6において、デバイス選択部30は、ステップS4で取得した動作用アプリ(ウェブアプリ)のAPIを、デバイス制御部50に設定する。これにより、デバイス制御部50は、当該動作用アプリを動作させるためのインターフェースを備えるようになる。言い換えれば、デバイスエミュレーター1の外部から、前記動作用アプリを動作させるためのAPIの呼び出しを行えるようになる。
【0038】
次にステップS7において、デバイス制御部50は、例えば外部の制御ドライバーから、選択されているIoTデバイスを制御する信号を受け取る。デバイス制御部50は、ステップS6において設定されたAPIにより、外部の制御ドライバーからの制御信号を受信する。言い換えれば、外部の制御ドライバーは、エミュレーター(仮想的なIoTデバイス)のデバイス制御部50に対する制御指示を行う。ここで、制御ドライバーは、エミュレーションの対象となるIoTデバイスとの連携動作を検証するために動作する実体である。制御ドライバーは、例えば外部の具体的な装置(一例として、テレビ等)であってもよいし、デバイスエミュレーター1と同一の、あるいは別のコンピューター上で稼働する処理プロセスであってもよい。
【0039】
次にステップS8において、デバイス制御部50は、デバイス動作部40に対する動作制御を行う。具体的には、デバイス制御部50は、ステップS7で外部の制御ドライバーから受け取った制御内容の情報を、デバイス動作部40に伝える。デバイス動作部40では、ステップS5において設定された動作用アプリ(ウェブアプリ)が稼働している。その動作用アプリは、受け取った情報に基づいた動作を行う。具体的には、デバイス動作部40は、動作用アプリの処理として、コンテンツを提示するための動作を行ったり、それに関連する動作を行ったりする。
【0040】
図2に示した一連の処理により、デバイスエミュレーター1は、特定のデバイスの選択を行う。また、デバイスエミュレーター1は、選択されたデバイスの動作を模擬的に実行する。また、デバイスエミュレーター1は、外部から当該デバイスへの制御信号を受け取り、その制御信号に応じた動作を、行うことができるようになる。つまり、外部の制御ドライバー等と、IoTデバイスとの連携動作を検証するためにデバイスエミュレーター1を使用することができる。
【0041】
図3は、登録部10によって登録され、設定記憶部20が記憶(保持)するデバイス情報の構成例を示す概略図である。図示するように、設定記憶部20は、複数のデバイスのそれぞれについて、デバイス情報を記憶するように構成される。同図は「0001」で識別されるデバイスのデバイス情報を示す。デバイス情報は、デバイス設定ファイルと、動作用アプリ(ウェブアプリ)とを含む。
【0042】
デバイス設定ファイルは、デバイスが持つ属性(properties)と、アクション(actions)と、イベント(events)の情報を持つ。
【0043】
デバイス設定ファイルにおけるデバイスの情報は、属性名と、属性値の型(type)と、属性の説明記述とを含む。1個(1種類)のデバイスが、1個または複数の属性を持つことができる。デバイスエミュレーター1は、あるデバイスが模擬的に動作するように設定されたとき(例えば、
図2のステップS5)に、そのデバイスの属性値を保持する記憶領域を確保し、属性値を初期化する。
【0044】
デバイス設定ファイルにおけるアクションの情報は、そのデバイスに対して要求することができる動作を規定する。例えば、デバイスエミュレーター1の外部から、APIを介してアクションを呼び出すことができる。アクションの情報は、アクション名と、アクションの説明記述とを含む。1個(1種類)のデバイスが、1個または複数のアクションを持つことができる。デバイスエミュレーター1は、あるデバイスが動作するように設定されたとき(例えば、
図2のステップS6)に、デバイス制御部50に、アクションを起動するためのAPIを設定する。
【0045】
デバイス設定ファイルにおけるイベントの情報は、そのデバイスにおいて発生し得る事象を規定する。例えば、デバイスエミュレーター1は、イベントの発生を表すデータに基づく動作を行うことができる。イベントの情報は、イベント名と、イベントのデータの型と、イベントの説明記述とを含む。1個(1種類)のデバイスが、1個または複数のイベントを持つことができる。デバイスエミュレーター1は、発生するイベントに応じた動作をすることができる。
【0046】
一例として、エミュレーションの対象となるデバイスがスマートLED(light emitting diode)である場合、そのデバイスが持つ属性の一つは、電源状態である。この電源状態という属性は、属性値として「ON」または「OFF」のいずれかの値を取り得る。デバイスエミュレーター1では、この属性値を読み取ることができる。このデバイスが持つアクションの1つは、「toggle」(トグル)である。このアクション「toggle」は、電源状態を「OFF」から「ON」へ、あるいは「ON」から「OFF」へ、変化させる作用を持つ。
図2のステップS7に示したように、外部の制御ドライバーは、上記のアクション「toggle」を呼び出すことができる。また、このデバイスが持つイベントの1つは、「overheating」(オーバーヒーティング)である。このイベント「overheating」は、LEDが過熱状態となったときに発生するものである。
【0047】
デバイス情報が持つ動作用アプリ(ウェブアプリ)は、そのデバイスの動作を模擬するアプリケーションプログラムのコードである。動作用アプリは、例えば、Jacascriptで記述される。デバイスエミュレーター1においては、この動作用アプリを、デバイス動作部40が実行する。
【0048】
以上、説明したように、本実施形態によれば、デバイスエミュレーター1は、デバイスの機能を模擬的に実行することができる。これにより、デバイスの動作の検証を容易に行うことが可能となる。
【0049】
[第2実施形態]
次に、本発明の第2実施形態について説明する。なお、前実施形態において既に説明した事項については以下において説明を省略する場合がある。ここでは、本実施形態に特有の事項を中心に説明する。本実施形態の特徴は、デバイスエミュレーターが、デバイスの情報(設定情報および状態情報等)を外部に伝達するための機能を備えている点である。
【0050】
図4は、本実施形態によるデバイスエミュレーターの概略機能構成を示すブロック図である。図示するように、デバイスエミュレーター2は、登録部10と、設定記憶部20と、デバイス選択部30と、デバイス動作部40と、デバイス制御部50と、情報伝達部60とを含んで構成される。つまり、本実施形態の特徴は、デバイスエミュレーター2が情報伝達部60を持つ点である。
【0051】
情報伝達部60は、デバイスエミュレーター2内の情報を外部に伝達するものである。情報伝達部60は、特定のデバイスが選択されたときに、選択されたデバイスのデバイス情報(デバイス設定ファイル)を外部に伝達する。また、情報伝達部60は、デバイス制御部50から渡されるデバイスの動作状況の情報を、外部に伝達する。言い換えれば、情報伝達部60は、デバイス設定ファイルの情報が更新されたときには、その情報を外部に伝達する。
【0052】
情報伝達部60は、複数のデバイスの中から選択されたデバイスについてのデバイス設定ファイルの情報(例えばアクションの情報)を外部に伝達する。また、情報伝達部60は、選択されたデバイスについてのデバイス設定ファイルの情報として、当該デバイスの属性の情報や、当該デバイスのイベントの情報を外部に伝達するようにしてもよい。また、デバイスが持つ属性値がデバイス動作部40によって更新されたときに、情報伝達部60が、更新された属性値の情報を外部に伝達するようにしてもよい。情報伝達部60は、デバイス動作部40においてデバイスに関する特定のイベントが発生した際に、当該イベントの情報を外部に伝達するようにしてもよい。
【0053】
本実施形態の登録部10と、設定記憶部20と、デバイス選択部30と、デバイス動作部40と、デバイス制御部50とのそれぞれは、第1実施形態の場合と同様の機能を持つ。また、それに加えて、デバイス選択部30は、デバイスが選択された時点で、選択されたデバイスのデバイス情報を、外部に伝達するために、上記の情報伝達部60に渡す。また、デバイス制御部50は、デバイスを制御する処理をする際に、デバイスの動作状況の情報(デバイス動作部40の状態の情報)を、上記の情報伝達部60に渡す。これらにより、情報伝達部60は、外部に伝達するための情報を獲得する。
【0054】
本実施形態では、デバイスエミュレーター2の外部の制御ドライバーは、デバイスの情報(取り得るアクションや、現在の状態等)を取得したうえで、デバイスエミュレーター2が模擬する仮想的なデバイスに対する制御を行うことができる。
【0055】
図5は、本実施形態によるデバイスエミュレーターの基本的な動作手順を示すシーケンス図である。以下、この図に沿って、デバイスエミュレーター2の動作手順を説明する。
【0056】
図5におけるステップS11からS16までの処理は、それぞれ、
図2におけるステップS1からS6までの処理と同様の処理である。
【0057】
ステップS16の次に、ステップS17において、デバイス選択部30は、ステップS13において選択されたデバイスのデバイス情報を、情報伝達部60に通知する。なお、このデバイス情報は、ステップS14において設定記憶部20から読み出された情報である。
【0058】
次にステップS18において、情報伝達部60は、ステップS17で渡されたデバイス情報を外部に伝達する。情報伝達部60は、例えば、デバイスエミュレーター2の外部の制御ドライバーに対して、デバイス情報を伝達する。
【0059】
次のステップS19およびS20の処理は、それぞれ、
図2におけるS7およびS8の処理と同様である。つまり、デバイスエミュレーター2の外部の制御ドライバーからの指示に基づいて、デバイス制御部50がデバイス動作部40の動作を制御する。
【0060】
次にステップS21において、デバイス制御部50は、デバイス動作部40の状態を取得する。
言い換えれば、デバイス制御部50は、エミュレーションの対象としているデバイスのプロパティーの値を取得する。
【0061】
次にステップS22において、デバイス制御部50は、ステップS21で把握したデバイス動作部40におけるデバイスの状態の情報を、情報伝達部60に渡す。
【0062】
次にステップS23において、情報伝達部60は、デバイス情報を外部の制御ドライバーに伝達する。ここでのデバイス情報は、情報伝達部60がステップS22で受け取った情報である。
【0063】
以上、説明したように、本実施形態によれば、第1実施形態のデバイスエミュレーターの動作に加えて、デバイスエミュレーターについての情報を外部に伝達することができるようになる。
【0064】
[第3実施形態]
次に、本発明の第3実施形態について説明する。なお、前実施形態までにおいて既に説明した事項については以下において説明を省略する場合がある。ここでは、本実施形態に特有の事項を中心に説明する。本実施形態の特徴は、デバイス設定ファイルとしてTD(Thing Description)の形式のデータを使用すること、およびデバイスエミュレーターと外部との通信のプロトコルとしてWoTプロトコルを用いることである。
【0065】
図6は、本実施形態によるデバイスエミュレーターの概略機能構成を示すブロック図である。図示するように、デバイスエミュレーター3は、登録部10と、設定記憶部20と、デバイス選択部30と、デバイス動作部40と、デバイス制御部50と、情報伝達部60とを含んで構成される。登録部10と、設定記憶部20と、デバイス選択部30と、デバイス動作部40と、デバイス制御部50と、情報伝達部60とは、それぞれ、第2実施形態における場合と同様の機能を持つものである。
【0066】
ただし、本実施形態において、デバイス設定ファイルはTDの形式のデータである。つまり、登録部10は、TDによるデバイス設定ファイルの登録を受け付ける。また、設定記憶部20は、TDによるデバイス設定ファイルを記憶する。また、デバイス選択部30は、選択されたデバイスについて、TDによるデバイス設定ファイルを設定記憶部20から読み出して情報伝達部60に通知する。また、デバイス制御部50は、デバイス動作部40におけるデバイスの状態に基づき、TDによるデバイス設定ファイルの記述を更新して、情報伝達部60に渡す。また、本実施形態において、外部の制御ドライバー等からデバイス制御部50への制御指示は、WoTプロトコルを用いて行われる。つまり、デバイス制御部50は、ウェブオブシングス(WoT,web of things)プロトコルによって、制御信号を外部から受信する。
【0067】
図7は、本実施形態によるデバイスエミュレーターの基本的な動作手順を示すシーケンス図である。以下、この図に沿って、デバイスエミュレーター3の動作手順を説明する。
【0068】
ステップS31において、登録部10は、
図5のステップS11と同様に、デバイス情報の登録を受け付ける。ただし、このとき、デバイス設定ファイルはTDの形式のデータである。
【0069】
次にステップS32において、登録部10は、
図5のステップS12と同様に、デバイス情報を設定記憶部20に書き込む。ただし、このとき、デバイス設定ファイルはTDの形式のデータである。
【0070】
次にステップS33において、デバイス選択部30は、
図5のステップS13と同様に、デバイスの選択の指示を受け付ける。
【0071】
次にステップS34において、デバイス選択部30は、
図5のステップS14と同様に、デバイス情報を設定記憶部20から読み出す。ただし、このとき、デバイス設定ファイルはTDの形式のデータである。
【0072】
次にステップS35において、デバイス選択部30は、
図5のステップS15と同様に、ウェブアプリの設定を行う。また、ステップS36において、デバイス選択部30は、
図5のステップS16と同様に、制御用APIの設定を行う。
【0073】
次にステップS37において、デバイス選択部30は、
図5のステップS17と同様に、情報伝達部60に、デバイス情報を通知する。ただし、このとき、デバイス設定ファイルはTDの形式のデータである。
【0074】
次にステップS38において、情報伝達部60は、
図5のステップS18と同様に、外部の制御ドライバー等に、デバイス情報を伝達する。ただし、このとき、デバイス設定ファイルはTDの形式のデータである。
【0075】
次にステップS39において、デバイス制御部50は、
図5のステップS19と同様に、外部の制御ドライバーからの制御指示を受けとる。ただしこのときの制御指示は、WoTプロトコルで送信されるものである。
【0076】
次にステップS40において、デバイス制御部50は、
図5のステップS20と同様に、デバイス動作部40の動作を制御する処理を行う。また、ステップS41において、デバイス制御部50は、
図5のステップS21と同様に、デバイス動作部40におけるデバイスの状態を把握する。つまり、デバイス制御部50は、デバイスのプロパティーの値を把握する。
【0077】
次にステップS42において、デバイス制御部50は、
図5のステップS22と同様に、取得したデバイスの状態の情報を、情報伝達部60に渡す。具体的には、デバイス制御部50は、更新されたデバイス設定ファイルのデータを、情報伝達部60に渡す。ただし、このときにデバイス制御部50が情報伝達部60に渡すデバイス設定ファイルは、TDの形式のデータである。
【0078】
次にステップS43において、情報伝達部60は、
図5のステップS23と同様に、更新されたデバイス情報を外部の制御ドライバーに伝達する。ただし、このときにデバイス制御部50が情報伝達部60に渡すデバイス情報は、TDの形式のデータである。
【0079】
図8,
図9は、本実施形態におけるデバイス設定ファイルの例を示す概略図である。前述の通り、デバイス設定ファイルは、TDの形式のデータである。
図8,
図9の両方で1本のファイルを示す。このファイルが、1つのデバイスの情報を表す。本例において、デバイスは、スマートスピーカーである。なお、ファイルのデータには便宜的に行番号を示している。
図8は、このデバイス設定ファイルの第1行目から第38行目までを示す。
図9は、このデバイス設定ファイルの第39行目から第81行目までを示す。以下、このファイルの内容を説明する。
【0080】
図示するように、TD形式のデータは、中括弧(curly brace)等で表わされるブロック構造を有する。
第1行目(
図8)の左中括弧は、このデータ全体の開始を表す。
第15行目から第26行目までのブロックは、属性(プロパティー)の情報である。この例では、当該デバイスは、1種類の属性を持つ。第16行目から第25行目までのブロックは、属性「power」(タイトルは「電源」)の情報である。
【0081】
第27行目(
図8)から第70行目(
図9)までのブロックは、アクションの情報である、この例では、当該デバイスは、toggle、setVolume、playAudio、launchNewsAppの4種類のアクションを持つ。各アクションの情報は、動作を起動するためのURLの情報を含む。第28行目(
図8)から第38行目までのブロックは、アクション「toggle」の情報である。このアクションは、電源制御(電源のオン/オフの切り替え)のためのアクションである。第39行目(
図9)から第49行目までのブロックは、アクション「setVolume」の情報である。このアクションは、音量制御のためのアクションである。第50行目から第59行目までのブロックは、アクション「playAudio」の情報である。このアクションは、音楽再生(音声再生)のためのアクションである。第60行目から第69行目までのブロックは、アクション「launchNewsApp」の情報である。このアクションは、ニュースアプリ起動のためのアクションである。
【0082】
第71行目から第80行目までのブロックは、イベントの情報である。当該デバイスは、1種類のイベントを持つ。第72行目から第79行目までのブロックは、イベント「weatherAlert」の情報である。このイベントは、気象警報を表す。
第81行目の右中括弧は、このファイルのデータ全体の終了を表す。
【0083】
[第4実施形態]
次に、本発明の第4実施形態について説明する。なお、前実施形態までにおいて既に説明した事項については以下において説明を省略する場合がある。ここでは、本実施形態に特有の事項を中心に説明する。本実施形態は、複数のデバイスエミュレーターと他の装置とを用いて構成されるシステムである。
【0084】
図10は、本実施形態によるシステムの構成を示すブロック図である。図示するように、システム101は、スマートテレビ6と、デバイスエミュレーター3Aおよび3Bとを含むように構成される。
【0085】
デバイスエミュレーター3Aおよび3Bは、それぞれ、前実施形態までにおいて説明したデバイスエミュレーター(例えば、第3実施形態のデバイスエミュレーター3)である。デバイスエミュレーター3Aおよび3Bは、1台の同一のハードウェア上で稼働するものであってもよいし、別々のハードウェア上で稼働するものであってもよい。
【0086】
スマートテレビ6は、外部からコンテンツの信号を受信して映像コンテンツを提示する装置である。コンテンツは、映像や音声に加えて、他の手段を用いた表現を含むものであってよい。例えば、コンテンツは、LEDによる光線の演出や、振動や傾きなどを生じさせることによる演出や、物質を噴霧することによる演出や、その他の演出による表現を含むものであってもよい。
【0087】
本実施形態のシステム101においては、デバイスエミュレーター3Aは、スマートスピーカー(デバイス)を模擬する。また、デバイスエミュレーター3Bは、触覚デバイスを模擬する。スマートテレビ6は、スマートスピーカーを制御する信号をデバイスエミュレーター3Aに対して送信する。また、スマートテレビ6は、触覚デバイスを制御する信号をデバイスエミュレーター3Bに対して送信する。デバイスエミュレーター3Aと3Bのそれぞれにとっては、スマートテレビ6は、外部装置(例えば、
図7等のシーケンス図における制御ドライバー)として機能する。
【0088】
デバイスエミュレーター3Aは、スマートスピーカーを模擬する動作として、スマートテレビ6が再生しているコンテンツを認識し、そのコンテンツあるいは関連する別のコンテンツの再生をWebViewにより行う。また、デバイスエミュレーター3Aは、ユーザーが発声する音声を認識し、その認識結果に基づいた制御をスマートテレビ6に対して行う。デバイスエミュレーター3A(スマートスピーカー)は、例えば、スマートテレビ6の電源のオン/オフの制御を行ったり、スマートテレビ6の音量の制御を行ったりする。
【0089】
デバイスエミュレーター3B(振動デバイス)は、スマートテレビ6からの制御信号に基づいて、スマートテレビ6で再生されるコンテンツに連動して振動する動作を模擬する。スマートテレビ6は、コンテンツの進行に合わせて、振動デバイスを制御するための信号を出力する。これにより、振動デバイスによるコンテンツに合わせたユーザー体験の検証を行うことができる。デバイスエミュレーター3Aは、そのハードウェア(例えば、デバイスエミュレーター3Aが稼働するスマートフォン)がネイティブな振動機能を持つ場合には、実際に振動させる動作を行ってもよい。デバイスエミュレーター3Aは、ハードウェアが振動機能を持たない場合には、振動を模擬する動作のみ(例えば、振動中であることを画面に表示するのみ)を行ってもよい。
【0090】
以上説明したように、本実施形態では、スマートテレビとIoTデバイスとの連携動作を検証することができる。
【0091】
[第5実施形態]
次に、本発明の第5実施形態について説明する。なお、前実施形態までにおいて既に説明した事項については以下において説明を省略する場合がある。ここでは、本実施形態に特有の事項を中心に説明する。本実施形態は、複数のデバイスエミュレーターが相互に通信する形態のシステムである。
【0092】
図11は、本実施形態によるシステムの構成を示すブロック図である。図示するように、システム102は、デバイスエミュレーター3Cおよび3Dを含むように構成される。デバイスエミュレーター3Cおよび3Dは、それぞれ、第3実施形態までにおいて説明したデバイスエミュレーター(例えば、第3実施形態のデバイスエミュレーター3)である。デバイスエミュレーター3Cおよび3Dは、1台の同一のハードウェア上で稼働するものであってもよいし、別々のハードウェア上で稼働するものであってもよい。
【0093】
本実施形態において、デバイスエミュレーター3Cは、スマートテレビを模擬する。また、デバイスエミュレーター3Dは、スマートLEDを模擬する。デバイスエミュレーター3Cおよび3Dは、それぞれ、エミュレーション対象のIoTデバイスを模擬する動作を行う。デバイスエミュレーター3Cのデバイス設定ファイル(TD形式)には、自デバイスがスマートテレビであり、選局するチャンネルの選択が可能であることが記述されている。デバイスエミュレーター3Dは、外部からの制御に応じて点灯色が変わるスマートLEDを模擬する。デバイスエミュレーター3Cおよび3Dのそれぞれは、互いに、相手側デバイスエミュレーターの外部装置(例えば、
図7等のシーケンス図における制御ドライバー)として機能する。
【0094】
デバイスエミュレーター3C(スマートテレビ)において選局操作が行われると、デバイスエミュレーター3Cは、当該スマートテレビのデバイス設定ファイル(TD)の属性の一つである現チャンネル情報を更新する。デバイスエミュレーター3Cは、その更新された属性情報(現チャンネル)を、デバイスエミュレーター3D(スマートLED)に伝達することができる。また、デバイスエミュレーター3C(スマートテレビ)において、イベントが発生し得る。イベントは例えば、視聴予約している番組の開始時刻が近付いたことを表すものである。デバイスエミュレーター3Cでは、当該スマートテレビのデバイス設定ファイル(TD)の中に、当該イベントが発生した時の挙動の記述を持つことができる。
【0095】
デバイスエミュレーター3Cは、スマートテレビのデバイスを選択した際に、そのデバイスの設定ファイル(TD)を、デバイスエミュレーター3D(スマートLED)側に伝達する。これにより、デバイスエミュレーター3D(スマートLED)は、デバイスエミュレーター3Cがスマートテレビとして動作していることを認識する。デバイスエミュレーター3D(スマートLED)は、スマートテレビのデバイス設定ファイル内の現チャンネルの情報に応じた色に発色(あるいはその模擬動作)するものであってよい。スマートテレビのデバイス設定ファイル(TD)内の現チャンネルが更新されると、デバイスエミュレーター3DはLEDの発光色を変化させる。また、デバイスエミュレーター3C側で特定のイベント(例えば、視聴予約番組の時刻に近づいたことを表すイベント)が発生すると、その情報がデバイスエミュレーター3D側に伝達される。デバイスエミュレーター3Dは、伝達されたイベントの内容に応じて、特定の動作(例えば、LEDライトの点滅動作(あるいはその模擬動作)等)を行うことができる。
【0096】
以上説明したように、本実施形態では、IoTデバイスを模擬するエミュレーター同士での連携動作を検証することができる。
【0097】
図12は、上記の各実施形態におけるデバイスエミュレーター(ないしは、エミュレーターが稼働するハードウェア)の内部構成の例を示すブロック図である。デバイスエミュレーターは、コンピューターを用いて実現され得る。図示するように、そのコンピューターは、中央処理装置901と、RAM902と、入出力ポート903と、入出力デバイス904や905等と、バス906と、を含んで構成される。コンピューター自体は、既存技術を用いて実現可能である。中央処理装置901は、RAM902等から読み込んだプログラムに含まれる命令を実行する。中央処理装置901は、各命令にしたがって、RAM902にデータを書き込んだり、RAM902からデータを読み出したり、算術演算や論理演算を行ったりする。RAM902は、データやプログラムを記憶する。RAM902に含まれる各要素は、アドレスを持ち、アドレスを用いてアクセスされ得るものである。なお、RAMは、「ランダムアクセスメモリー」の略である。入出力ポート903は、中央処理装置901が外部の入出力デバイス等とデータのやり取りを行うためのポートである。入出力デバイス904や905は、入出力デバイスである。入出力デバイス904や905は、入出力ポート903を介して中央処理装置901との間でデータをやりとりする。バス906は、コンピューター内部で使用される共通の通信路である。例えば、中央処理装置901は、バス906を介してRAM902のデータを読んだり書いたりする。また、例えば、中央処理装置901は、バス906を介して入出力ポートにアクセスする。
【0098】
なお、上述した各実施形態におけるデバイスエミュレーターの少なくとも一部の機能をコンピューターで実現することができる。その場合、この機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM、DVD-ROM、USBメモリー等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。つまり、「コンピューター読み取り可能な記録媒体」とは、非一過性の(non-transitory)コンピューター読み取り可能な記録媒体であってよい。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、一時的に、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0099】
以上、複数の実施形態を説明したが、本発明はさらに次のような変形例でも実施することが可能である。前記の各実施形態における説明では、デバイス設定ファイルは、デバイスが持つ属性(properties)の情報と、アクションの情報と、イベントの情報との全部を持つものであった。変形例として、デバイス設定ファイルが、属性の情報と、アクションの情報と、イベントの情報の、いずれか1つだけを持つものであってもよい。また、変形例として、デバイス設定ファイルが、属性の情報と、アクションの情報と、イベントの情報のうちの複数(全部ではない)を持つものであってもよい。
【0100】
以上、この発明の複数の実施形態について、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【産業上の利用可能性】
【0101】
本発明は、例えば、IoTデバイスの動作の検証などに利用することができる。但し、本発明の利用範囲はここに例示したものには限られない。
【符号の説明】
【0102】
1,2,3,3A,3B,3C,3D デバイスエミュレーター
6 スマートテレビ
10 登録部
20 設定記憶部
30 デバイス選択部
40 デバイス動作部
50 デバイス制御部
60 情報伝達部
101,102 システム
901 中央処理装置
902 RAM
903 入出力ポート
904,905 入出力デバイス
906 バス