(57)【要約】【課題】複数の機器を１台のコンピュータ上でエミュレートして機器連携ソフトウェアの動作確認を行った場合、従来に比べてメモリ消費量を削減させる。【解決手段】命令変換部１０３は、実行部１０２が機器連携ソフトウェアを実行することで、機器の機能を呼び出す命令が実行された場合、描画部１００に対して予め付与された識別情報を送信先のポート番号とする第１通信命令に当該命令を変換する。命令変換部１２２は、通信部１２１により受信された第１通信命令に送信先の機器のＩＰアドレスが含まれている場合、当該ＩＰワークアドレスに対応する識別ＩＤを特定し、当該識別ＩＤを送信先のポート番号とする第２通信命令に第１通信命令を変換する。機能実行部１２３は、命令変換部１２２から第２通信命令を受け取ると、第２通信命令を通信部１２１に渡し、第２通信命令を送信先の描画部１００に送信させる。【選択図】図１
2013143049.tif 000002
【特許請求の範囲】
【請求項１】
複数の機器を連携させて所定の連携サービスを実現する機器連携ソフトウェアの動作確認を行う開発支援装置であって、
各機器に対応して設けられ、各機器による前記機器連携ソフトウェアのＧＵＩの描画をシミュレートする描画部と、前記機器連携ソフトウェアにしたがって各機器が実行する機能をシミュレートする全描画部共通の機能部とを備え、
前記描画部は、
前記機器連携ソフトウェアのＧＵＩを表示装置に表示させる表示制御部と、
前記機器連携ソフトウェアを解釈して実行する実行部と、
前記実行部により機器の機能を呼び出す命令が実行された場合、前記描画部に対して予め付与された識別情報を送信先のポート番号とする第１通信命令に当該命令を変換する描画部側命令変換部と、
前記描画部側命令変換部により変換された第１通信命令を前記機能部に送信する描画部側通信部とを備え、
前記機能部は、
前記描画部側通信部から送信された第１通信命令を受信する機能部側通信部と、
各機器の識別情報と各機器のネットワークアドレスとを対応付けて管理するデータ管理部と、
前記機能部側通信部により受信された第１通信命令に送信先の機器のネットワークアドレスが含まれている場合、前記データ管理部を参照して当該ネットワークアドレスに対応する識別情報を特定し、当該識別情報を送信先のポート番号とする第２通信命令に前記第１通信命令を変換する機能部側命令変換部と、
前記機能部側命令変換部により変換された第２通信命令を前記機能部側通信部に送信させる機能実行部とを備える開発支援装置。
【請求項２】
ユーザからの操作指令に基づいて前記描画部を生成すると共に、ユーザからの操作指令に基づいて前記描画部を削除する機器管理部を更に備え、
前記データ管理部は、各機器のデータを保存するための機器固有データ領域を備え、前記機器管理部により描画部が生成された場合、当該描画部のためのデータ領域を前記機器固有データ領域に確保し、前記機器管理部により描画部が削除された場合、当該描画部のためのデータ領域を前記機器固有データ領域から解放する請求項１記載の開発支援装置。
【請求項３】
前記機能部側命令変換部は、前記機能部側通信部により受信された第１通信命令が機器のデータを読み出す命令である場合、前記機能実行部に前記機器に対応する描画部のデータ領域からデータを読み出すように指示し、
前記機能実行部は、前記機能部側命令変換部からの指示にしたがって、前記データ領域からデータを読み出し、読み出したデータを前記機器に対応する描画部に送信するように前記機能部側通信部に指示する請求項２記載の開発支援装置。
【請求項４】
前記機能部側命令変換部は、前記機能部側通信部により受信された第１通信命令が機器にデータを保存する命令である場合、前記機能実行部に前記機器に対応する描画部のデータ領域にデータを保存するように指示し、
前記機能実行部は、前記機能部側命令変換部からの指示にしたがって、前記データ領域にデータを保存する請求項２又は３記載の開発支援装置。
【請求項５】
前記機能部側命令変換部は、前記機能部側通信部により受信された第１通信命令が第１機器のデータを第２機器にコピーする命令である場合、前記機能実行部にコピーを指示し、
前記機能実行部は、前記第１機器に対応する描画部のデータ領域からコピー対象のデータを読み出し、読み出したコピー対象のデータを前記第２機器に対応する描画部のデータ領域に書き込む請求項２〜４のいずれかに記載の開発支援装置。
【請求項６】
前記機器管理部は、前記描画部を生成する際にユーザから前記描画部の識別情報、ネットワークアドレス、及び前記機器のディスプレイサイズを含む起動オプションを指定する操作指令を受け付けて前記描画部を生成するものであり、生成した描画部を起動する際にユーザからの操作指令に基づいて前記起動オプションを変更する請求項２〜５のいずれかに記載の開発支援装置。
【請求項７】
前記描画部は、ネイティブコードで記述されている請求項１〜６のいずれかに記載の開発支援装置。
【請求項８】
複数の機器を連携させて所定の連携サービスを実現する機器連携ソフトウェアの動作確認を開発支援装置が行う動作確認方法であって、
前記開発支援装置は、各機器に対応して設けられ、各機器による前記機器連携ソフトウェアのＧＵＩの描画をシミュレートする描画部と、前記機器連携ソフトウェアにしたがって各機器が実行する機能をシミュレートする全描画部共通の機能部とを備え、
前記機器連携ソフトウェアのＧＵＩを前記描画部が表示装置に表示させる表示制御ステップと、
前記機器連携ソフトウェアを前記描画部が解釈して実行する実行ステップと、
前記実行ステップにより機器の機能を呼び出す命令が実行された場合、前記描画部が、自己に対して予め付与された識別情報を送信先のポート番号とする第１通信命令に当該命令を変換する描画部側命令変換ステップと、
前記描画部側命令変換ステップにより変換された第１通信命令を前記描画部が前記機能部に送信する描画部側送信ステップと、
前記描画部側送信ステップにより送信された第１通信命令を前記機能部が受信する機能部側受信ステップと、
前記機能部側受信ステップにより受信された第１通信命令に送信先の機器のネットワークアドレスが含まれている場合、前記機能部が、各機器の識別情報と各機器のネットワークアドレスとを対応付けて管理するデータ管理部を参照して当該ネットワークアドレスに対応する識別情報を特定し、当該識別情報を送信先のポート番号とする第２通信命令に前記第１通信命令を変換する機能部側命令変換ステップと、
前記機能部側命令変換ステップにより変換された第２通信命令を機能部側通信部に送信させる機能実行ステップとを備える動作確認方法。
【請求項９】
複数の機器を連携させて所定の連携サービスを実現する機器連携ソフトウェアの動作確認を行う開発支援装置としてコンピュータを機能させる開発支援プログラムであって、
各機器に対応して設けられ、各機器による前記機器連携ソフトウェアのＧＵＩの描画をシミュレートする描画部と、前記機器連携ソフトウェアにしたがって各機器が実行する機能をシミュレートする全描画部共通の機能部としてコンピュータを機能させ、
前記描画部は、
前記機器連携ソフトウェアのＧＵＩを表示装置に表示させる表示制御部と、
前記機器連携ソフトウェアを解釈して実行する実行部と、
前記実行部により機器の機能を呼び出す命令が実行された場合、前記描画部に対して予め付与された識別情報を送信先のポート番号とする第１通信命令に当該命令を変換する描画部側命令変換部と、
前記描画部側命令変換部により変換された第１通信命令を前記機能部に送信する描画部側通信部とを備え、
前記機能部は、
前記描画部側通信部から送信された第１通信命令を受信する機能部側通信部と、
各機器の識別情報と各機器のネットワークアドレスとを対応付けて管理するデータ管理部と、
前記機能部側通信部により受信された第１通信命令に送信先の機器のネットワークアドレスが含まれている場合、前記データ管理部を参照して当該ネットワークアドレスに対応する識別情報を特定し、当該識別情報を送信先のポート番号とする第２通信命令に前記第１通信命令を変換する機能部側命令変換部と、
前記機能部側命令変換部により変換された第２通信命令を前記機能部側通信部に送信させる機能実行部とを備える開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器連携ソフトウェアの開発を支援する技術に関するものである。
【背景技術】
【０００２】
近年、ネットワークを介して接続されたデジタル家電製品（以下、機器と記述する。）同士を連携させて所定の連携サービスをユーザに提供する機器が登場している。連携サービスとしては、例えば、複数のスマートフォンを用いてユーザ間で画像を共有したり、ユーザ間で文書を共同編集したりするものがある。
【０００３】
このような連携サービスを実現するためのソフトウェアを、以降、機器連携ソフトウェアと呼称する。機器連携ソフトウェアの開発に際しては、複数の実機を用意できないことがあるため、実機を模擬する複数のエミュレータをコンピュータ上で起動させて機器連携ソフトウェアの動作を確認することが行われている。
【０００４】
本願発明に関連する従来技術として、例えば特許文献１が知られている。特許文献１には、統合管理プリンタと複数の被管理プリンタとがネットワークを介して接続されたシステムで用いられるソフトウェアを評価するソフトウェア評価システムであって、複数の被管理プリンタを１台のコンピュータで模擬するものが開示されている。
【０００５】
図１４は、特許文献１に示される従来技術のブロック図である。図１４に示すソフトウェア評価システムは、統合管理プリンタ２００と、イーサネット（登録商標）等の通信路を介して接続されたコンピュータ２１０とを備えている。コンピュータ２１０は、被管理プリンタを模擬した複数の仮想被管理プリンタ２１１と、各仮想被管理プリンタ２１１に対応する機器情報受信部２１２とを備えている。
【０００６】
そして、このソフトウェア評価システムでは、機器情報受信部２１２に対応する仮想被管理プリンタ２１１の仮想ＩＰアドレスをバインドさせた状態で、統合管理プリンタ２００からの配信を待機させる。これにより、仮想被管理プリンタ２１１は統合管理プリンタ２００からの配信を受け付けることが可能となり、実際の統合管理プリンタ２００と被管理プリンタとによって行われるデータの送受が再現されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−３１３５２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１では、統合管理プリンタ２００と仮想被管理プリンタ２１１とでのみデータの送受が行われており、仮想被管理プリンタ２１１間におけるデータの送受は再現されていない。そのため、特許文献１では、クライアントサーバモデルのシミュレートが行われているに過ぎない。
【０００９】
また、被管理プリンタの個数に応じて仮想被管理プリンタ２１１及び機器情報受信部２１２を設ける必要があり、被管理プリンタの個数を増大させてしまうと、コンピュータ２１０のメモリ消費量が膨大になるという問題がある。機器のエミュレータは一般的に消費メモリ量やＣＰＵ使用率が大きいため、特許文献１の構成では高性能なコンピュータ２１０が必要になる。
【００１０】
本発明の目的は、複数の機器を１台のコンピュータ上でエミュレートして機器連携ソフトウェアの動作確認を行った場合、従来に比べてメモリ消費量を削減させることができる開発支援装置等を提供することである。
【課題を解決するための手段】
【００１１】
（１）本発明による開発支援装置は、複数の機器を連携させて所定の連携サービスを実現する機器連携ソフトウェアの動作確認を行う開発支援装置であって、各機器に対応して設けられ、各機器による前記機器連携ソフトウェアのＧＵＩの描画をシミュレートする描画部と、前記機器連携ソフトウェアにしたがって各機器が実行する機能をシミュレートする全描画部共通の機能部とを備え、前記描画部は、前記機器連携ソフトウェアのＧＵＩを表示装置に表示させる表示制御部と、前記機器連携ソフトウェアを解釈して実行する実行部と、前記実行部により機器の機能を呼び出す命令が実行された場合、前記描画部に対して予め付与された識別情報を送信先のポート番号とする第１通信命令に当該命令を変換する描画部側命令変換部と、前記描画部側命令変換部により変換された第１通信命令を前記機能部に送信する描画部側通信部とを備え、前記機能部は、前記描画部側通信部から送信された第１通信命令を受信する機能部側通信部と、各機器の識別情報と各機器のネットワークアドレスとを対応付けて管理するデータ管理部と、前記機能部側通信部により受信された第１通信命令に送信先の機器のネットワークアドレスが含まれている場合、前記データ管理部を参照して当該ネットワークアドレスに対応する識別情報を特定し、当該識別情報を送信先のポート番号とする第２通信命令に前記第１通信命令を変換する機能部側命令変換部と、前記機能部側命令変換部により変換された第２通信命令を前記機能部側通信部に送信させる機能実行部とを備える。
【００１２】
この構成によれば、複数の描画部と全描画部共通の１つの機能部とを備えている。そして、機器の機能を呼び出す命令が実行された場合、この命令は、実行元の識別情報を送信先のポート番号とする第１通信命令に変換され、機能部に送信される。機能部は第１通信命令を受信すると、第１通信命令に送信先の機器のネットワークアドレスが含まれていれば、この第１通信命令を、当該ネットワークアドレスに対応する識別情報を送信先のポート番号とする第２通信命令に変換する。そして、第２通信命令は、送信先の機器に対応する描画部に送信される。これにより、複数の描画部は、機能部を介してデータを送受することができ、複数の描画部と１つの機能部とによって複数の機器を１台のコンピュータ上でエミュレートすることができる。
【００１３】
従来の技術では、エミュレートする機器の個数分のエミュレータを起動させることで、ソフトウェアの動作確認が行われていた。このエミュレータは、本構成の描画部及び機能部の機能を併せ持つ。そのため、従来の技術では、エミュレートする機器の個数をｎ個とすると、ｎ個のエミュレータを起動させなければならず、メモリ消費量が増大するという問題があった。
【００１４】
そこで、本構成では、描画部のみをｎ個起動させ、機能部は全描画部で共用させた。そのため、従来の技術に比べて、機能部の個数をｎ−１個分減らすことができ、メモリ消費量を大幅に削減することができる。
【００１５】
（２）ユーザからの操作指令に基づいて前記描画部を生成すると共に、ユーザからの操作指令に基づいて前記描画部を削除する機器管理部を更に備え、前記データ管理部は、各機器のデータを保存するための機器固有データ領域を備え、前記機器管理部により描画部が生成された場合、当該描画部のためのデータ領域を前記機器固有データ領域に確保し、前記機器管理部により描画部が削除された場合、当該描画部のためのデータ領域を前記機器固有データ領域から解放することが好ましい。
【００１６】
この構成によれば、ユーザは機器管理部に対して描画部を生成するための操作指令を入力すると、描画部のためのデータ領域が機器固有データ領域に確保される。そのため、ユーザは動作対象となる機器連携ソフトウェアが連携する機器の個数に応じて自由に描画部を生成することができ、機器連携ソフトウェアの動作確認を容易に実施することができる。
【００１７】
また、ユーザは連携する機器の個数を変化させて機器連携ソフトウェアの動作確認を行うこともある。この場合、ユーザは生成した描画部を削除することで、エミュレートする機器の個数を調整することができ、手軽に機器連携ソフトウェアの動作確認を行うことができる。更に、ユーザが描画部を削除するとその描画部のためのデータ領域が解放されるため、メモリリソースを節約することができる。
【００１８】
（３）前記機能部側命令変換部は、前記機能部側通信部により受信された第１通信命令が機器のデータを読み出す命令である場合、前記機能実行部に前記機器に対応する描画部のデータ領域からデータを読み出すように指示し、前記機能実行部は、前記機能部側命令変換部からの指示にしたがって、前記データ領域からデータを読み出し、読み出したデータを前記機器に対応する描画部に送信するように前記機能部側通信部に指示することが好ましい。
【００１９】
この構成によれば、描画部により機器のデータを読み出す命令が実行されると、当該命令が第１通信命令に変換されて描画部から機能部に送信される。そして、機能部は、当該命令を実行した描画部のデータ領域からデータを読み出し、当該描画部に返す。そのため、開発支援装置において機器が自身のデータを読み出す処理を実現することができる。
【００２０】
（４）前記機能部側命令変換部は、前記機能部側通信部により受信された第１通信命令が機器にデータを保存する命令である場合、前記機能実行部に前記機器に対応する描画部のデータ領域にデータを保存するように指示し、前記機能実行部は、前記機能部側命令変換部からの指示にしたがって、前記データ領域にデータを保存することが好ましい。
【００２１】
この構成によれば、描画部により機器にデータを保存する命令が実行されると、当該命令が第１通信命令に変換されて描画部から機能部に送信される。そして、機能部は、当該命令を実行した描画部のデータ領域に保存対象のデータを保存する。そのため、開発支援装置において機器がデータを保存する処理を実現することができる。
【００２２】
（５）前記機能部側命令変換部は、前記機能部側通信部により受信された第１通信命令が第１機器のデータを第２機器にコピーする命令である場合、前記機能実行部にコピーを指示し、前記機能実行部は、前記第１機器に対応する描画部のデータ領域からコピー対象のデータを読み出し、読み出したコピー対象のデータを前記第２機器に対応する描画部のデータ領域に書き込むように、前記データ管理部に指示することが好ましい。
【００２３】
この構成によれば、描画部により第１機器のデータを第２機器にコピーする命令が実行されると、当該命令が第１通信命令に変換されて描画部から機能部に送信される。そして、機能部は、第１機器に対応する描画部のデータ領域に保存されたデータを第２機器に対応する描画部のデータ領域にコピーする。そのため、開発支援装置において機器間でデータをコピーする処理を実現することができる。
【００２４】
（６）前記機器管理部は、前記描画部を生成する際にユーザから前記描画部の識別情報、ネットワークアドレス、及び前記機器のディスプレイサイズを含む起動オプションを指定する操作指令を受け付けて前記描画部を生成するものであり、生成した描画部を起動する際にユーザからの操作指令に基づいて前記起動オプションを変更することが好ましい。
【００２５】
この構成によれば、ユーザは描画部を起動させる際にディスプレイサイズを含む起動オプションを変更することができるため、ユーザは、ディスプレイサイズを変更させながら機器連携ソフトウェアの動作確認を行うことができ、ＧＵＩを表示するうえで適切なディスプレイサイズを容易に確認することができる。
【００２６】
（７）前記描画部は、ネイティブコードで記述されていることが好ましい。
【００２７】
この構成によれば、描画部は、開発支援装置が実装されるコンピュータの例えばＯＳが直接デコードすることができるネイティブコードにより記述されているため、描画部によるメモリリソースの消費量を低下させ、かつ、描画部によるＧＵＩの描画処理の高速化を図ることができる。
【発明の効果】
【００２８】
本発明によれば、複数の描画部と１つの機能部とによって複数の機器を１台のコンピュータ上でエミュレートすることができるため、描画部及び機能部を１つのエミュレータとし、このエミュレータを複数起動させることで複数の機器をエミュレートしていた従来の構成に比べメモリリソースの消費量を抑制することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施の形態における開発支援装置の機能ブロック図である。
【図２】描画部が表示装置に表示する表示画面の一例を示した画面図である。
【図３】（Ａ）、（Ｂ）は機器管理部が表示装置に表示するＧＵＩの一例を示した図である。
【図４】（Ａ）は機器プロファイルの記載内容の一例を示した図である。（Ｂ）は機器固有データ領域のデータ構造の一例を示した図である。
【図５】（Ａ）、（Ｂ）は命令変換部によって行われる命令の変換を説明するための図である。
【図６】本発明の実施の形態による開発支援装置が描画部を生成する際の処理を示したフローチャートである。
【図７】本発明の実施の形態による開発支援装置が行う機器間の通信処理を示すフローチャートである。
【図８】本発明の実施の形態による開発支援装置が描画部を停止する場合の処理を示すフローチャートである。
【図９】本発明の実施の形態による開発支援装置のハードウェア構成を示すブロック図である。
【図１０】機器が自身のデータを読み出すユースケースを実行する際の開発支援装置の処理の説明図である。
【図１１】機器同士がデータをコピーするユースケースを開発支援装置が実行する際の処理の説明図である。
【図１２】機器がデータを保存するするユースケースの処理を開発支援装置が実行する際の処理の説明図である。
【図１３】機能実行部による変換処理の説明図である。
【図１４】特許文献１に示される従来技術のブロック図である。
【発明を実施するための形態】
【００３０】
以下、図面を参照しつつ本発明の実施の形態について説明する。図９は、本発明の実施の形態による開発支援装置９９のハードウェア構成を示すブロック図である。開発支援装置９９は、例えばコンピュータにより構成され、入力装置１、ＲＯＭ（リードオンリメモリ）２、ＣＰＵ（中央演算処理装置）３、ＲＡＭ（ランダムアクセスメモリ）４、外部記憶装置５、表示装置６、記録媒体駆動装置７、及び通信装置８を備える。各ブロックは内部のバスに接続され、このバスを介して種々のデータ等が入出され、ＣＰＵ３の制御の下、種々の処理が実行される。
【００３１】
入力装置１は、キーボード、マウス等から構成され、ユーザが種々のデータを入力するために使用される。ＲＯＭ２には、ＢＩＯＳ（Basic Input/Output System）等のシステムプログラムが記憶される。外部記憶装置５は、ハードディスクドライブ等から構成され、所定のＯＳ（Operating System）及び開発支援プログラム等が記憶される。ＣＰＵ３は、外部記憶装置５からＯＳ及び開発支援プログラム等を読み出し、各ブロックの動作を制御する。ＲＡＭ４は、ＣＰＵ３の作業領域等として用いられる。
【００３２】
表示装置６は、例えば液晶ディスプレイや有機ＥＬディスプレイにより構成され、ＣＰＵ３の制御の下に種々の画像を表示する。記録媒体駆動装置７は、ＣＤ−ＲＯＭドライブ、フレキシブルディスクドライブ等から構成される。
【００３３】
なお、開発支援プログラムは、ＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体９に格納されてユーザに提供される。ユーザはこの記録媒体９を記録媒体駆動装置７に読み込ませることで、開発支援プログラムをコンピュータにインストールする。また、開発支援プログラムをインターネット上のサーバに格納し、このサーバからダウンロードすることで、開発支援プログラムをコンピュータにインストールしてもよい。
【００３４】
通信装置８は、例えば、開発支援装置９９をインターネットに接続するための通信装置により構成され、ＣＰＵ３の制御の下、インターネットを介して他の機器との間でデータを送受する。
【００３５】
図１は、本発明の実施の形態における開発支援装置９９の機能ブロック図である。開発支援装置９９は、描画部１００、機器管理部１１０、及び機能部１２０を備えている。描画部１００は、各機器に対応して複数設けられ、各機器による前記機器連携ソフトウェアのＧＵＩの描画をシミュレートする。
【００３６】
描画部１００は、例えば、ＨＴＭＬ５で記述されたプログラムが実行可能なウェブブラウザにより構成され、エミュレートする機器の数に応じて１又は複数生成される。図１の例では２つの描画部１００が生成されているため２つの描画部１００＿１、１００＿２が示されている。ここで、描画部１００は、ネイティブコードで記述されているため、機能部１２０と比較してメモリ消費量が少なく、かつ、高速である。ネイティブコードとは、例えば開発支援装置９９を構成するコンピュータのＯＳが直接実行することができるコードである。そのため、描画部１００を仮想マシン上で動作する中間言語で記述した場合に比べてパラメータをネイティブコードのパラメータに変換するといった手間が省かれ、処理の高速化を図ることができる。
【００３７】
具体的には、描画部１００は、動作対象となる機器連携ソフトウェアを解釈及び実行することで、機器連携ソフトウェアのＧＵＩを表示装置６に表示する。また、描画部１００は、入力装置１を操作することでユーザにより入力された操作指令を受け付ける。ここで、描画部１００はウェブブラウザにより構成されているため、動作対象となる機器連携ソフトウェアは例えばウェブブラウザ上で実行することができるプログラミング言語により記述されている。本実施の形態では、機器連携ソフトウェアは、例えば、ＨＴＭＬ５により記述され、内部処理を担当する箇所は、例えばＪａｖａＳｃｒｉｐｔ（登録商標）により記述されている。
【００３８】
図２は、描画部１００が表示装置６に表示する表示画面３００の一例を示した画面図である。図２の例では、３つの機器がエミュレートされているため、表示画面３００には３つの機器に対応する３つのＧＵＩ表示ウインドウ３０１〜３０３が表示されている。ＧＵＩ表示ウインドウ３０１〜３０３には、それぞれ、対応する描画部１００がシミュレートする機器連携ソフトウェアのＧＵＩが表示される。ユーザはＧＵＩに含まれるボタン等をクリックすることで描画部１００に操作指令を入力することができる。また、ＧＵＩ表示ウインドウ３０１〜３０３は仮想ネットワークを示す線で結線され、機器同士が接続されていることが明示されている。
【００３９】
なお、機器連携ソフトウェアの一例としては、例えば、１画面で表示される地図画面を拡大させて、複数の地図画面に分割し、分割した地図画面を複数の機器で分担して表示させるものが挙げられる。この場合、例えば、ある機器において地図画面がスライドされると、それに連動して他の機器でも地図画面をスライドさせる処理が機器連携ソフトウェアによって実行される。
【００４０】
図１に戻り、描画部１００は、表示制御部１０１、実行部１０２、命令変換部１０３（描画部側命令変換部の一例）、及び通信部１０４（描画部側通信部の一例）を備えている。
【００４１】
表示制御部１０１は、機器連携ソフトウェアのＧＵＩに関するコードを解釈し、機器連携ソフトウェアのＧＵＩを表示装置６に表示させる描画処理を行う。また、表示制御部１０１は、マウス等によるユーザからの操作指令を受け付ける。ここで、表示制御部１０１は、ユーザからの操作指令を受け付ける等して、内部処理を実行する必要が発生すると処理を実行部１０２に委ねる。
【００４２】
実行部１０２は、機器連携ソフトウェアの内部処理の箇所を解釈して実行し、内部処理が終了すると処理結果を表示制御部１０１に返す。また、実行部１０２は、対応する描画部１００に対して個別に付与された識別情報（以下、識別ＩＤと記述する。）を保持する。
【００４３】
以下の説明では、描画部１００＿１には識別ＩＤとして１０００が付与され、描画部１００＿２には識別ＩＤとして２０００が付与されているものとする。また、描画部１００＿１がエミュレートする機器には１９２．１６８．０．２のネットワークアドレス（以下、ＩＰアドレスと記述する。）が予め付与され、描画部１００＿２がエミュレートする機器には、１９２．１６８．０．３のＩＰアドレスが予め付与されているものとする。
【００４４】
命令変換部１０３は、実行部１０２により機器の機能を呼び出す命令が実行された場合、描画部１００に対して予め付与された識別ＩＤを送信先のポート番号とする第１通信命令に当該命令を変換する。図５（Ａ）は、命令変換部１０３によって行われる命令の変換を説明するための図である。図５（Ａ）においては、描画部１００＿１の命令変換部１０３が命令を変換する場合を例に挙げて説明する。
【００４５】
図５（Ａ）の例では、ｇｅｔＡｄｄｒｅｓｓという命令が実行されている。ｇｅｔＡｄｄｒｅｓｓは、描画部１００＿１がエミュレートする機器のＩＰアドレスを取得するための命令である。
【００４６】
ｇｅｔＡｄｄｒｅｓｓには、描画部１００＿１の識別ＩＤである１０００を送信先のポート番号とするｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：１０００／？ｃｏｍｍａｎｄ＝ｇｅｔＡｄｄｒｅｓｓというＨＴＴＰ（Hyper Text Transfer Protocol）の第１通信命令に変換されている。先頭に“ｈｔｔｐ”と記述され、第１通信命令がＨＴＴＰの通信プロトコルの命令であることが示されている。“ｌｏｃａｌｈｏｓｔ”は、ホスト名を表している。本実施の形態では、開発支援装置９９がホストとなる。“１０００”はポート番号を示している。“／”はホストにおけるリソースのパスを示す。この例では、リソースはホストのルートディレクトリに存在している。“？”は区切り文字を示す。“ｃｏｍｍａｎｄ＝ｇｅｔＡｄｄｒｅｓｓ”は、第１通信命令の実態を示す。
【００４７】
なお、第１通信命令としてＨＴＴＰを用いる場合を例示したが、本発明はこれに限定されず、他の通信プロトコル（例えば、ＷｅｂＳｏｃｋｅｔ）を用いてもよい。ＷｅｂＳｏｃｋｅｔを用いた場合、描画部１００と機能部１２０とは双方向で通信することができるという利点や、通信されるデータのヘッダが非常に少なくオーバーヘッドが少なくなる利点がある。
【００４８】
本実施の形態では、各描画部１００がウェブクライアントとなり、機能部１２０がウェブサーバとなり、ある描画部１００が機能部１２０を介して別の描画部１００に命令を送信することで、機器同士の通信をシミュレートしている。ウェブサーバは、ポート番号によりウェブクライアントを識別することができる。そこで、本実施の形態では、機能部１２０に各描画部１００の識別ＩＤを管理させ、この識別ＩＤをポート番号とする第１通信命令を各描画部１００から機能部１２０に送信させている。これにより、機能部１２０は第１通信命令の送信元の描画部１００を区別することができ、機器に応じた機能を実行することができる。
【００４９】
従来の技術では、エミュレートする機器の個数分のエミュレータを起動させることで、ソフトウェアの動作確認が行われていた。このエミュレータは、本実施の形態の描画部１００及び機能部１２０の機能を併せ持つ。そのため、従来の技術では、エミュレートする機器の個数をｎ個とすると、ｎ個のエミュレータを起動させなければならず、メモリ消費量が増大するという問題があった。
【００５０】
そこで、本実施の形態では、描画部１００のみをｎ個起動させ、機能部１２０は全描画部１００で共用させた。そのため、従来の技術に比べて、機能部１２０の個数をｎ−１個分減らすことができ、メモリ消費量を大幅に削減することができる。
【００５１】
通信部１０４（描画部側通信部の一例）は、命令変換部１０３により変換された第１通信命令を機能部１２０に送信する。ここで、通信部１０４は、自己が属する描画部１００に付与された識別ＩＤがバインドされたソケットを生成し、生成したソケットを通信部１２１で生成された対応するソケットと接続して、描画部１００と機能部１２０とのコネクションを確立する。具体的には、通信部１０４は、描画部１００が起動した際、起動した描画部１００が機能部１２０から第２通信命令を受信するためのコネクションを確立する。また、通信部１０４は、描画部１００が機能部１２０に第１通信命令を送信する際、描画部１００と機能部１２０とのコネクションを確立する。なお、描画部１００が機能部１２０にデータ送信するためのコネクションは、第１通信命令としてＨＴＴＰが採用された場合、第１通信命令の送信後、機能部１２０から応答を受信することで消滅される。なお、この応答には、データが含まれる場合とデータが含まれない場合とが存在する。第１通信命令が文字列を送信するような命令である場合、応答にデータは含まれないが、第１通信命令がデータを読み出すような命令である場合、応答に読み出し対象となるデータが含まれる。
【００５２】
機器管理部１１０は、ユーザからの操作指令に基づいて、描画部１００を生成（追加）すると共に、ユーザからの操作指令に基づいて、生成した描画部１００を起動させる。また、機器管理部１１０は、ユーザからの操作指令に基づいて、描画部１００の状態を変更する。ここで、描画部１００の状態としては、起動中及び停止中が存在する。具体的には、機器管理部１１０は、表示装置６に機器の一覧画面を表示するＧＵＩを表示し、このＧＵＩを介してユーザからの操作指令を受け付けることで、描画部１００の生成、削除及び状態の変更を行う。
【００５３】
図３（Ａ）、（Ｂ）は、機器管理部１１０が表示装置６に表示するＧＵＩ４０１、４０２の一例を示した図である。ＧＵＩ４０１には、一覧表示欄４０１１、状態変更ボタン４０１２、機器追加ボタン４０１３、及び削除ボタン４０１４が含まれている。
【００５４】
一覧表示欄４０１１は、機器管理部１１０が生成した描画部１００に対応するエミュレート対象の機器が一覧表示されている。具体的には、一覧表示欄４０１１には、機器名、ＩＰアドレス、識別ＩＤ、及び起動状態のフィールドを持ち、１行に１つの機器が割り当てられた表である。機器名は、機器に付与された名称である。ＩＰアドレスは機器に付与されたＩＰアドレスである。識別ＩＤは各機器に対して一意に付与され、各機器を識別するためのデータである。起動状態は、各機器の状態、すなわち、各描画部１００の状態を示す。
【００５５】
例えば、機器１は対応する描画部１００の状態が起動中であるため、起動状態のフィールドには起動中と表示されている。一方、機器４は対応する描画部１００の状態が停止中であるため、起動状態のフィールドには停止中と表示されている。
【００５６】
また、機器１〜４には、識別ＩＤとしてそれぞれ１０００、２０００、３０００、４０００と異なるデータが割り当てられ、識別ＩＤによって機器１〜４を識別できることが分かる。
【００５７】
状態変更ボタン４０１２は、一覧表示欄４０１１の各行に対応して１つ設けられている。ユーザは、例えば、“停止”と表示された１行目の状態変更ボタン４０１２をクリックすると、機器１に対応する描画部１００の状態が停止中となる。そして、１行目の状態変更ボタン４０１２の表示が“停止”から“起動”に切り替わると共に、機器１の起動状態のフィールドに“停止中”と表示される。
【００５８】
また、ユーザは、例えば、“起動”と表示された４行目の状態変更ボタン４０１２をクリックすると機器４に対応する描画部１００の状態が起動中となる。そして、４行目の状態変更ボタン４０１２の表示が“起動”から“停止”に切り替わり、機器４の起動状態のフィールドに“起動中”と表示される。
【００５９】
機器追加ボタン４０１３は、新たに機器を追加する際に用いられる。ユーザが機器追加ボタン４０１３をクリックすると、機器管理部１１０は、図３（Ｂ）に示すＧＵＩ４０２を表示装置６に表示する。このＧＵＩ４０２は、新たに機器を登録するためのＧＵＩである。
【００６０】
ＧＵＩ４０２には、機器名入力欄４０２１、ＩＰアドレス入力欄４０２２、ディスプレイサイズ入力欄４０２３、及び追加ボタン４０２４が含まれている。機器名入力欄４０２１は、ユーザが機器名を入力するために用いられる。例えば、ユーザはキーボードを用いて機器名入力欄４０２１に好みの文字列を入力して、機器名を決定することができる。なお、デフォルトでは、例えば、“機器”の文字列の後に機器の生成順序を示す数値が付加された文字列が機器名として自動的に付与される。
【００６１】
ＩＰアドレス入力欄４０２２は、ユーザが機器のＩＰアドレスを入力するために用いられる。例えば、ユーザはキーボードを用いてＩＰアドレス入力欄４０２２にエミュレートする機器のＩＰアドレスを入力し、機器のＩＰアドレスを決定することができる。
【００６２】
ディスプレイサイズ入力欄４０２３は、ユーザが機器の表示装置の画面サイズを入力するために用いられる。具体的には、ディスプレイサイズ入力欄４０２３は、幅と高さとをそれぞれ入力するための入力欄が含まれる。このように、ユーザは幅と高さとを任意に入力することができるため、ユーザは、ＧＵＩの表示に適したディスプレイサイズをよりきめ細かく調節することができる。ここで、幅及び高さのサイズの単位としては例えばピクセルを採用することができる。
【００６３】
機器名入力欄４０２１〜ディスプレイサイズ入力欄４０２３への入力が終了し、ユーザにより追加ボタン４０２４がクリックされると、機器管理部１１０は当該機器に対して識別ＩＤを付与し、付与した識別ＩＤとユーザにより入力された機器名、ＩＰアドレス、及びディスプレイサイズとを含む機器固有情報が設定されたインスタンスを生成し、描画部１００を生成する。
【００６４】
また、機器管理部１１０は、生成済みの描画部１００を起動する際、ディスプレイサイズを変更するためのユーザからの操作指令を受け付け、受け付けた操作指令にしたがってディスプレイサイズを変更する。これにより、ディスプレイサイズを変更させながら機器連携ソフトウェアの動作確認を行うことができ、適切なＧＵＩのディスプレイサイズをユーザは容易に確認することができる。
【００６５】
なお、機器管理部１１０は、生成済みの描画部１００を起動する際、ディスプレイサイズのみならず、ＧＵＩ４０２に示す他の項目を変更するためのユーザからの操作指令を受け付け、受け付けた操作指令にしたがって該当する項目の内容を変更してもよい。これにより、ユーザは生成済みの描画部１００に対する設定内容の変更を容易に行うことができる。
【００６６】
なお、ディスプレイサイズは起動オプションの一例であり、本実施の形態では、起動オプションとして、例えば、機器連携ソフトウェアの格納場所を示すＵＲＩを含めてもよい。これにより、ユーザは生成済みの描画部１００に実行させる機器連携ソフトウェアを容易に変更することができる。
【００６７】
図３（Ａ）において、削除ボタン４０１４は、ユーザが機器を削除するために用いられる。ユーザは、例えば、一覧表示欄４０１１において削除した機器が表示された行に図略のカーソルを位置決めして当該機器を選択し、削除ボタン４０１４をクリックすると、選択した機器を削除することができる。
【００６８】
また、機器管理部１１０は、機器固有情報が記載された機器プロファイル５０１を生成し、データ管理部１２４に渡す。なお、機器プロファイル５０１は、例えばＸＭＬ（eXtensible Markup Language）等により記述される。
【００６９】
図４（Ａ）は、機器プロファイル５０１の記載内容の一例を示した図である。機器プロファイル５０１において、＜ｎａｍｅ＞のタグには、機器名が記述されている。＜ｉｄ＞のタグには機器に付与された識別ＩＤが記述されている。＜ａｄｄｒｅｓｓ＞のタグには機器に付与されたＩＰアドレスが記述されている。なお、機器プロファイル５０１には、図４（Ａ）に示した情報以外の機器固有情報（例えばディスプレイサイズ）を記述してもよい。
【００７０】
図１に戻り、機能部１２０は、機器連携ソフトウェアにしたがって各機器が実行する機能をシミュレートするものであり、通信部１２１（機能部側通信部の一例）、命令変換部１２２（機能部側命令変換部の一例）、機能実行部１２３、及びデータ管理部１２４を備えている。ここで、機器の機能とは、例えば他の機器と通信する機能、データを保存する機能、及びデータを読み出す機能等が該当する。
【００７１】
通信部１２１は、通信部１０４から送信される第１通信命令を受信し、受信した第１命令を命令変換部１２２に渡す。また、通信部１２１は、識別ＩＤがポート番号としてバインドされたソケットを生成し、生成したソケットを通信部１０４により生成されたソケットと接続することで、描画部１００と機能部１２０とを接続させる。ここで、通信部１２１は、描画部１００毎に識別ＩＤがポート番号としてバインドされたソケットを生成する。
【００７２】
命令変換部１２２は、通信部１２１により受信された第１通信命令に送信先の機器のＩＰアドレスが含まれている場合、機器プロファイル記憶部１２６に記憶された機器プロファイル５０１を参照し、当該ＩＰアドレスに対応する識別ＩＤを特定し、当該識別ＩＤを送信先のポート番号とする第２通信命令に第１通信命令を変換する。そして、命令変換部１２２は、変換した第２通信命令を機能実行部１２３に渡す。これにより、描画部１００同士が機能部１２０を介して通信することができる。
【００７３】
図５（Ｂ）は、命令変換部１０３、１２２の処理の説明図である。図５（Ｂ）では、文字列“ｈｅｌｌｏ”をＩＰアドレスが１９２．１６８．０．３の他の機器に送信する命令であるｓｅｎｄ（１９２．１６８．０．３，“ｈｅｌｌｏ”）が例示されている。ここで、ｓｅｎｄの送信元の機器の識別ＩＤは１０００であり、送信先の機器の識別ＩＤは２０００とする。
【００７４】
まず、命令変換部１０３は、送信元の機器の識別ＩＤ＝１０００を送信先のポート番号とする第１通信命令にｓｅｎｄを変換する（Ｓ５０１）。これにより、ｓｅｎｄは、“ｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：１０００／？ｃｏｍｍａｎｄ＝ｓｅｎｄ＆ｐａｒａｍ０＝１９２．１６８．０．３＆ｐａｒａｍ１＝ｈｅｌｌｏ”というｈｔｔｐの命令に変換される。
【００７５】
この命令において、“１０００”とあり、ｓｅｎｄが送信元の機器の識別ＩＤを送信先のポート番号とする命令に変換されていることが分かる。また、“ｃｏｍｍａｎｄ＝ｓｅｎｄ”とあり、この命令にｓｅｎｄが組み込まれていることが分かる。また、“ｐａｒａｍ０＝１９２．１６８．０．３”、“ｐａｒａｍ１＝ｈｅｌｌｏ”とあり、送信先の機器のＩＰアドレスと送信する文字列とがこの命令に組み込まれていることが分かる。
【００７６】
次に、命令変換部１２２は、第１通信命令内に送信先のＩＰアドレス（１９２．１６８．０．３）が記述されているため、第１通信命令には、他の機器のＩＰアドレスが記述されていると判定する。そして、命令変換部１２２は、このＩＰアドレスに対応する識別ＩＤ（＝２０００）を機器プロファイル５０１から特定し、特定した識別ＩＤ＝２０００を送信先のポート番号とする第２通信命令に第１通信命令に変換する（Ｓ５０２）。これにより、“ｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：１０００／？ｃｏｍｍａｎｄ＝ｓｅｎｄ＆ｐａｒａｍ０＝１９２．１６８．０．３＆ｐａｒａｍ１＝ｈｅｌｌｏ”は、“ｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：２０００／？ｃｏｍｍａｎｄ＝ｓｅｎｄ＆ｐａｒａｍ１＝ｈｅｌｌｏ”に変換される。
【００７７】
第２通信命令において、第１通信命令のｐａｒａｍ０＝１９２．１６８．０．３が送信先の機器の識別ＩＤである２０００に変換され、この２０００を送信先のポート番号とするｈｔｔｐの命令に変換されていることが分かる。
【００７８】
図１に戻り、機能実行部１２３は、命令変換部１２２から第２通信命令を受け取ると、第２通信命令を通信部１２１に渡し、第２通信命令を送信先の描画部１００に送信させる。
【００７９】
ここで、描画部１００はウェブクライアントにより構成されておりウェブサーバの機能を持たないため、第２通信命令を直接受信することができない。そこで、機能実行部１２３は、第２通信命令を例えば、ＪＳＯＮ（JavaScript（登録商標） Object Notation）形式の文字列に変換し、変換した文字列をＣｏｍｅｔを用いて通信部１２１を介して該当する描画部１００に送信する。具体的には、描画部１００は、機能部１２０と接続する際、第２通信命令を受信するためのコネクションを確立して機能部１２０からの応答を待っている。そして、機能部１２０は、このコネクションを介してＪＳＯＮ形式の文字列に変換された第２通信命令を例えばＣｏｍｅｔを用いて該当する描画部１００に送信する。Ｃｏｍｅｔを用いた場合、ウェブサーバである機能部１２０は、ウェブクライアントである描画部１００からの要請なしに、データを送信することができる。
【００８０】
図１３は、機能実行部１２３が第２通信命令を変換する処理の説明図である。図１３に示すように、第２通信命令は、“ｆｒｏｍ”、“ａｐｉ”、及び“ｐａｒａｍ１”の要素からなる文字列に変換されている。“ｆｒｏｍ”の要素には、送信元の描画部１００＿１のＩＰアドレスが記述されている。“ａｐｉ”の要素には送信対象となる命令である“ｓｅｎｄ”が記述されている。“ｐａｒａｍ１”の要素には、送信対象となる文字列である“ｈｅｌｌｏ”が記述されている。なお、図１３において、“／／”の記号はコメントを表している。
【００８１】
そして、機能実行部１２３は、文字列に変換した第２通信命令を送信先のポート番号である２０００を指定して通信部１２１に渡し、通信部１２１はポート番号が２０００のソケットを介して文字列に変換された第２通信命令を描画部１００＿２に送信する。
【００８２】
データ管理部１２４は、機器管理部１１０により描画部１００が生成された場合、当該描画部１００のためのデータ領域を機器固有データ記憶部１２５が記憶する機器固有データ領域５０２に確保する。具体的には、データ管理部１２４は、描画部１００を生成した際に機器管理部１１０から渡された機器プロファイル５０１を機器プロファイル記憶部１２６に保存する。そして、データ管理部１２４は、機器管理部１１０により生成された描画部１００のためのデータ領域を機器固有データ領域５０２に確保する。
【００８３】
また、データ管理部１２４は、機能実行部１２３の要求にしたがって、データをある描画部１００のデータ領域に保存させたり、ある描画部１００のデータ領域にデータを読み出したり、ある描画部１００のデータ領域からデータを削除したり、ある描画部１００のデータ領域のデータを別の描画部１００のデータ領域にコピーしたりする。
【００８４】
また、データ管理部１２４は、機器管理部１１０によりある描画部１００が削除されると、その描画部１００のデータ領域を機器固有データ領域５０２から解放する。また、データ管理部１２４は、機能実行部１２３の要求にしたがって、機器プロファイル５０１に記載された情報を機能実行部１２３に渡す。
【００８５】
図４（Ｂ）は、機器固有データ記憶部１２５が記憶する機器固有データ領域５０２のデータ構造の一例を示した図である。図４（Ｂ）に示すように機器固有データ領域５０２は、各描画部１００に付与された識別ＩＤに対応付けられたディレクトリを備えている。図４（Ｂ）の例では、機器固有データ領域５０２は、“ｄａｔａ＿１０００”、“ｄａｔａ＿２０００”、“ｄａｔａ＿３０００”の３つのディレクトリを備え、識別ＩＤ＝１０００、２０００、３０００の３つの描画部１００のデータ領域を備えていることが分かる。そして、各ディレクトリの配下には、対応する描画部１００のデータが保存される。
【００８６】
（フローチャート）
以下、本実施形態における開発支援装置９９が行う処理について説明する。図６は、本発明の実施の形態による開発支援装置９９が描画部１００を生成する際の処理を示したフローチャートである。
【００８７】
まず、機器管理部１１０は、描画部１００を生成するためのユーザからの操作指令及び動作対象となる機器連携ソフトウェアのＵＲＩを指定するための操作指令を受け付ける（Ｓ１００１）。この場合、ユーザは、図３（Ｂ）に示すＧＵＩ４０２において機器名、及びＩＰアドレスと、必要に応じてディスプレイサイズを入力し、追加ボタン４０２４をクリックすることで、操作指令を入力する。なお、ユーザがディスプレイサイズを入力しなかった場合、機器管理部１１０は、ディスプレイサイズとしてデフォルトのディスプレイサイズを設定すればよい。また、機器連携ソフトウェアのＵＲＩは、例えば、ＧＵＩ４０２にＵＲＩ入力欄（図略）を設け、この入力欄に入力させればよい。
【００８８】
次に、機器管理部１１０は、生成対象となる描画部１００に識別ＩＤを付与し、識別ＩＤ、機器名、ＩＰアドレス、及びディスプレイサイズが記述された機器プロファイル５０１を生成する（Ｓ１００２）。
【００８９】
次に、機器管理部１１０は、生成した機器プロファイル５０１に記述された内容にしたがって描画部１００を生成する（Ｓ１００３）。具体的には、機器管理部１１０は、生成した機器プロファイル５０１に記述された機器名、ディスプレイサイズ、ＩＰアドレス、及び識別ＩＤと、ユーザにより入力された機器連携ソフトウェアのＵＲＩとを起動パラメータとし、起動パラメータによって定義されたインスタンスを生成することで描画部１００を生成する。
【００９０】
動作対象となる機器連携ソフトウェアの格納場所は特に限定されず、開発支援装置９９内（例えばデータ管理部１２４）であってもよいし、開発支援装置９９外であってもよい。開発支援装置９９外の格納場所としては、開発支援装置９９とインターネットやＬＡＮを介して接続され、機器連携ソフトウェアを配信するためのサーバが挙げられる。
【００９１】
次に、機器管理部１１０は、生成した機器プロファイル５０１をデータ管理部１２４に渡し、データ管理部１２４は渡された機器プロファイル５０１を機器プロファイル記憶部１２６に保存する（Ｓ１００４）。
【００９２】
次に、Ｓ１００３で生成された描画部１００の実行部１０２は、機能部１２０との接続指示を実行する（Ｓ１００５）。次に、命令変換部１０３は、接続命令を実行した描画部１００と機能部１２０とを接続させる（Ｓ１００６）。
【００９３】
この場合、命令変換部１０３は、実行部１０２により実行された接続指示を通信部１０４に渡し、接続指示を機能部１２０に送信する。すると、通信部１０４及び通信部１２１は、接続指示を出した描画部１００の識別ＩＤをポート番号とするソケットを生成し、生成したソケット同士を接続させ、描画部１００と機能部１２０とのコネクションを確立させる。このコネクションは描画部１００が機能部１２０から送信される第２通信命令を受信するためのコネクションとなる。また、通信部１２１は描画部１００が起動されたことを機能実行部１２３に通知する。このように、第２通信命令を受信するためのコネクションを予め確立しておくことで、機能部１２０は、ある描画部１００が別の描画部１００にデータを送信するための第１通信命令を受信した場合、受信した第１通信命令に対応する第２通信命令を速やかに別の描画部１００に送信することができる。
【００９４】
次に、機能実行部１２３は、データ管理部１２４にＳ１００３で生成された描画部１００のデータ領域を確保するようにデータ管理部１２４に指示する（Ｓ１００７）。これにより、データ管理部１２４は、Ｓ１００３で生成された描画部１００の識別ＩＤをキーとするデータ領域を機器固有データ領域５０２に確保する。
【００９５】
次に、機能実行部１２３は、描画部１００が追加されたことを、生成済みの他の描画部１００に通知する（Ｓ１００８）。この場合、機能実行部１２３は、Ｓ１００３で生成された描画部１００の機器名を他の描画部１００に通知すればよい。なお、他の描画部１００が存在しない場合、つまり、Ｓ１００３で生成された描画部１００が１つ目の描画部１００である場合、Ｓ１００８の処理は省略される。
【００９６】
次に、描画部１００は、Ｓ１００１で入力されたＵＲＩから機器連携ソフトウェアを読み出して機器連携ソフトウェアの実行を開始する（Ｓ１００９）。なお、本実施の形態では、描画部１００は生成時においてデフォルトの起動状態が起動中とされている。したがって、このフローチャートでは、描画部１００は生成されると速やかに起動を開始し、機器連携ソフトウェアの実行を開始する。
【００９７】
なお、生成済みの描画部１００において起動状態が停止中から起動中に切り替えられた場合、描画部１００は、起動通知を機能部１２０に送信する。そして、機能部１２０の機能実行部１２３は、起動通知を送信した描画部１００の状態が起動中になったことを、状態が起動中の他の描画部１００に通知するようにしてもよい。これにより、起動中の描画部１００は新たに起動中の描画部１００が追加された場合、そのことを認識することができる。
【００９８】
図７は、本発明の実施の形態による開発支援装置９９が行う機器間の通信処理を示すフローチャートである。
【００９９】
このフローチャートの前提条件として、描画部１００＿１と描画部１００＿２とが起動中であるとする。また、描画部１００＿１のＩＰアドレスは１９２．１６８．０．２、識別ＩＤ（ポート番号）は１０００とする。また、描画部１００＿２のＩＰアドレスは１９２．１６８．０．３、識別ＩＤ（ポート番号）は２０００とする。
【０１００】
まず、描画部１００＿１の実行部１０２は、描画部１００＿２を送信先とする命令“ｓｅｎｄ（“１９２．１６８．０．３”，“ｈｅｌｌｏ”）“を実行する（Ｓ２００１）。
【０１０１】
次に、命令変換部１０３は、当該命令を“ｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：１０００／？ｃｏｍｍａｎｄ＝ｓｅｎｄ＆ｐａｒａｍ０＝１９２．１６８．０．３＆ｐａｒａｍ１＝ｈｅｌｌｏ”に変換し（Ｓ２００２）、第１通信命令を生成し、通信部１０４に渡す。次に、通信部１０４は、命令変換部１０３から渡された第１通信命令を機能部１２０に送信する（Ｓ２００３）。この場合、通信部１０４は、第１通信命令を機能部１２０に送信するためのコネクションを確立して、第１通信命令を機能部１２０に送信する。
【０１０２】
次に、命令変換部１２２は、通信部１２１により受信された第１通信命令に送信先のＩＰアドレス（＝１９２．１６８．０．３）が含まれているため、当該ＩＰアドレスに対応する識別ＩＤ（＝２０００）を送信先のポート番号とする第２通信命令に第１通信命令を変換する（Ｓ２００３）。ここで、命令変換部１２２は、データ管理部１２４にＩＰアドレス（＝１９２．１６８．０．３）を持つ機器の識別ＩＤを問い合わせる。すると、データ管理部１２４は、機器プロファイル記憶部１２６を参照してＩＰアドレス（＝１９２．１６８．０．３）に対応する識別ＩＤ（＝２０００）を返す。これにより、命令変換部１２２は、第１通信命令を“ｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：２０００／？ｃｏｍｍａｎｄ＝ｓｅｎｄ＆ｐａｒａｍ１＝ｈｅｌｌｏ”に変換する。
【０１０３】
次に、機能実行部１２３は、命令変換部１２２から第２通信命令を受け取り、受け取った第２通信命令を通信部１２１に送信させる（Ｓ２００４）。この場合、機能実行部１２３は、第２通信命令を例えばＪＳＯＮの文字列に変換し、変換した第２通信命令を送信先の描画部１００のポート番号を指定して通信部１２１に渡す。そして、通信部１２１は、指定されたポート番号がバインドされたソケットを介して文字列に変換された第２通信命令を送信先の描画部１００に送信する。この場合、第２通信命令は送信先のポート番号が２０００であるため、描画部１００＿２に送信される。
【０１０４】
次に、描画部１００＿２は、送信された第２通信命令を受信する（Ｓ２００５）。具体的には、描画部１００＿２の通信部１０４が第２通信命令を受信し、命令変換部１０３が第２通信命令をデコードする。そして、描画部１００＿２の命令変換部１０３は、第２通信命令に“ｃｏｍｍａｎｄ＝ｓｅｎｄ”及び“ｐａｒａｍ１＝ｈｅｌｌｏ”が含まれているため、他の描画部１００から“ｈｅｌｌｏ”の文字列が送信されたと認識する。
【０１０５】
なお、図７では文字列を送信する例を示したが、例えば、描画部１００＿２は何らかの処理を実行する命令を受信した場合はその命令にしたがって処理を実行し、処理結果をＧＵＩに反映させればよい。
【０１０６】
図８は、本発明の実施の形態による開発支援装置９９が描画部１００を停止する場合の処理を示すフローチャートである。まず、機器管理部１１０は、機器の動作を停止するためのユーザからの操作指令を受け付ける（Ｓ３００１）。この場合、ユーザは、図３（Ａ）に示す一覧表示欄４０１１において状態が起動中である機器のうち、停止させる機器の行に表示された状態変更ボタン４０１２をクリックすることで、操作指令を入力する。ここでは、描画部１００＿１に対応する機器の停止指示がユーザにより入力されたとする。
【０１０７】
次に、機器管理部１１０は、描画部１００＿１に停止を指示する（Ｓ３００２）。すると、描画部１００＿１の実行部１０２は、機器連携ソフトウェアに記述された機器を停止する際の処理にしたがって、機器を停止する処理を実行する。
【０１０８】
次に、描画部１００＿１は、機能部１２０に停止を通知し、機能部１２０は、起動中の他の描画部１００に対して（ここでは、描画部１００＿２に対して）の描画部１００＿１の停止を通知する（Ｓ３００３）。この場合、機能部１２０の機能実行部１２３は、描画部１００＿１の機器名を含む停止通知を通信部１２１を介して描画部１００＿２に送信し、描画部１００＿２の通信部１０４にその停止通知を受信させることで、描画部１００＿１の停止を描画部１００＿２に通知すればよい。次に、機能部１２０は、描画部１００＿１との接続を切断する（Ｓ３００４）。この場合、描画部１００＿１の通信部１０４及び通信部１２１はソケットの接続を切断することで、機能部１２０と描画部１００＿１との接続を切断すればよい。
【０１０９】
なお、描画部１００の停止でなく、描画部１００の削除が指示された場合、データ管理部１２４は、削除対象の描画部１００のデータ領域を機器固有データ領域５０２から解放すると共に、削除対象の描画部１００の機器プロファイル５０１を削除すればよい。
【０１１０】
次に、本発明の実施の形態による開発支援装置９９のユースケースについて説明する。上記説明では、ユースケースとして、機器同士が通信する場合を例に挙げて説明したが、本実施の形態では、開発支援装置９９は下記のユースケースを実行することもできる。
【０１１１】
図１０は、機器が自身のデータを読み出すユースケースＣ１を実行する際の開発支援装置９９の処理の説明図である。なお、図１０において、ユースケースＣ１に関連しないブロックは省いている。また、命令の実行元は描画部１００＿１とし、描画部１００＿１の識別ＩＤは１０００とする。図１０では、データを読み出す命令としてｇｅｔＬｉｓｔを採用した場合を例示しているが、読み出す命令としてはこの命令に限定されず、他の命令を採用してもよい。
【０１１２】
まず、実行部１０２は、ｇｅｔＬｉｓｔ（“／ｍｎｔ／ｓｄｃａｒｄ”）を実行している。ｇｅｔＬｉｓｔの括弧内にはデータの読み出し先のパスが記述されている。この例では、“／ｍｎｔ／ｓｄｃａｒｄ”のパスが記述されている。
【０１１３】
次に、命令変換部１０３は、ｇｅｔＬｉｓｔを描画部１００の識別ＩＤを送信先のポート番号とする第１通信命令に変換する。
【０１１４】
次に、通信部１０４は、この第１通信命令を機能部１２０に送信する。このとき、通信部１０４は、描画部１００＿１と機能部１２０とのコネクションを確立して、第１通信命令を送信し、機能部１２０からの応答を待つ状態となる。
【０１１５】
通信部１２１は、この第１通信命令を受信し、命令変換部１２２に渡す。命令変換部１２２は、通信部１２１から渡された第１通信命令をデコードし、描画部１００＿１のデータ領域（＝ｄａｔａ＿１０００／）の“／ｍｎｔ／ｓｄｃａｒｄ”のディレクトリからデータを読み出すように機能実行部１２３に指示する。
【０１１６】
次に、機能実行部１２３は、命令変換部１２２の指示にしたがって、機器固有データ領域５０２にアクセスし、ｄａｔａ＿１０００／ｍｎｔ／ｓｄｃａｒｄのディレクトリに格納されたデータを読み出す。そして、機能実行部１２３は、読み出したデータを第１通信命令に対する応答に含ませて通信部１２１に渡し、通信部１２１は、機能実行部１２３から渡された応答を描画部１００＿１に送信する。
【０１１７】
描画部１００＿１は、機能部１２０から応答を受信すると、確立したコネクションを消滅させる。以上によりデータの読み出しがシミュレートされる。なお、この態様は一例であり、機能実行部１２３は、描画部１００＿１が機能部１２０からのデータを受信するために確立したコネクションを利用して読み出し対象となるデータを描画部１００＿１に送信してもよい。
【０１１８】
図１０の例ではデータを読み出すユースケースを示したが、ＩＰアドレスを取得してもよいし、データを削除してもよい。データを削除する場合、描画部１００により削除するデータのファイル名及び格納場所を示すパスが指定された削除命令が実行される。この削除命令は第１通信命令に変換され機能部１２０に送信される。そして、機能部１２０はこの第１通信命令にしたがって、削除対象となるデータを描画部１００のデータ領域から削除すればよい。
【０１１９】
また、描画部１００によりＩＰアドレスを取得する命令が実行された場合、機能部１２０は、描画部１００の機器プロファイル５０１からＩＰアドレスを読み出し、命令を実行した描画部１００にＩＰアドレスを送信すればよい。
【０１２０】
図１１は、機器１が機器２にデータをコピーするユースケースＣ２を開発支援装置９９が実行する際の処理の説明図である。この説明において、描画部１００＿１は機器１に対応し、描画部１００＿２は機器２に対応しているものとする。また、機器１のＩＰアドレスは“１９２．１６８．０．２”とし、機器２のＩＰアドレスは“１９２．１６８．０．３”とする。また、図１１において、データ領域Ｄ１は、描画部１００＿１のデータ領域であり、データ領域Ｄ２は描画部１００＿２のデータ領域であるとする。
【０１２１】
まず、実行部１０２は、ｃｏｐｙ（“ＸＸＸ．ｊｐｇ”，“１９２．１６８．０．３”）を実行する。ここで、“ＸＸＸ．ＪＰＧ”はコピー対象となるデータのファイル名を示す。“１９２．１６８．０．３”はコピー先の機器のＩＰアドレスを示す。
【０１２２】
次に、命令変換部１０３は、ｃｏｐｙを描画部１００＿１の識別ＩＤ（＝１０００）を送信先のポート番号とする第１通信命令に変換する。
【０１２３】
次に、通信部１０４は、この第１通信命令を機能部１２０に送信する。通信部１２１は、この第１通信命令を受信し、命令変換部１２２に渡す。
【０１２４】
命令変換部１２２は、この第１通信命令をデコードし、描画部１００＿１のＸＸＸ．ｊｐｇを描画部１００＿２のデータ領域にコピーするように機能実行部１２３に指示する。機能実行部１２３は、命令変換部１２２の指示にしたがって、機器固有データ領域５０２のデータ領域Ｄ１のファイル名が“ＸＸＸ．ｊｐｇ”のデータをデータ領域Ｄ２にコピーするようにデータ管理部１２４に指示する。すると、データ管理部１２４は、データ領域Ｄ１からＸＸＸ．ｊｐｇのデータを読み出して、データ領域Ｄ２に書き込む。
【０１２５】
データ管理部１２４は、コピーが終了するとコピー終了通知を機能実行部１２３に通知し、機能実行部１２３は、コピー終了通知を描画部１００＿２に通知するためのｈｔｔｐの通信命令を生成し、通信部１２１に渡す。そして、通信部１２１は、機能実行部１２３から渡された通信命令を描画部１００＿２に送信する。以上により、機器同士でのデータのコピーがシミュレートされる。
【０１２６】
図１２は、機器がデータを保存するするユースケースＣ３の処理を開発支援装置９９が実行する際の処理の説明図である。図１２の例では、描画部１００＿１がデータを保存する場合を例に挙げて説明する。まず、実行部１０２は保存対象となるデータの格納場所やファイル名を指定した保存命令を実行する。保存場所の指定の方法としては、例えばＵＲＩを採用すればよい。また、保存場所は、本開発支援装置９９内に設けてもよいし、外部のサーバに設けてもよい。命令変換部１０３は、描画部１００＿１の識別ＩＤ（＝１０００）を送信先のポート番号とする第１通信命令に実行された保存命令を変換する。次に、通信部１０４は、命令変換部１０３により変換され第１通信命令を機能部１２０に送信する。通信部１２１は第１通信命令を受信して命令変換部１２２に渡す。命令変換部１２２は、第１通信命令をデコードし、保存対象のデータを描画部１００＿１のデータ領域に保存するように機能実行部１２３に指示する。機能実行部１２３は、命令変換部１２２の指示にしたがって、保存対象のデータを保存場所から読み出して描画部１００＿１のデータ領域に保存するようにデータ管理部１２４に指示する。そして、データ管理部１２４は、保存対象のデータを保存場所にアクセスして保存場所から読み出して描画部１００＿１のデータ領域に保存する。
【０１２７】
以上、説明したように本実施の形態による開発支援装置９９によれば、機器のエミュレータを描画部１００と機能部１２０とに分離し、機能部１２０が複数の描画部１００からの命令に応答することで各機器がエミュレートされている。そのため、描画部１００のみを追加するだけで機器を追加することができ、従来技術に比べメモリ消費量を抑制することができる。
【産業上の利用可能性】
【０１２８】
本発明の開発支援装置は、複数の描画部と単一の端末機能部とを１台のコンピュータ上で動作させて複数の機器をエミュレートするため、機器連携ソフトウェアを動作させて開発を進める機器連携ソフトウェアの開発環境に適用するうえで有用である。
【符号の説明】
【０１２９】
９９  開発支援装置
１００  描画部
１０１  表示制御部
１０２  実行部
１０３  命令変換部
１０４  通信部
１１０  機器管理部
１２０  機能部
１２１  通信部
１２２  命令変換部
１２３  機能実行部
１２４  データ管理部
１２５  機器固有データ記憶部
１２６  機器プロファイル機器プロファイル記憶部
【図１】
2013143049.tif 000003
【図２】
2013143049.tif 000004
【図３】
2013143049.tif 000005
【図４】
2013143049.tif 000006
【図５】
2013143049.tif 000007
【図６】
2013143049.tif 000008
【図７】
2013143049.tif 000009
【図８】
2013143049.tif 000010
【図９】
2013143049.tif 000011
【図１０】
2013143049.tif 000012
【図１１】
2013143049.tif 000013
【図１２】
2013143049.tif 000014
【図１３】
2013143049.tif 000015
【図１４】
2013143049.tif 000016