(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023145128
(43)【公開日】2023-10-11
(54)【発明の名称】開発環境構築システム、開発環境構築方法およびプログラム
(51)【国際特許分類】
G06F 9/44 20180101AFI20231003BHJP
【FI】
G06F9/44
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022052430
(22)【出願日】2022-03-28
(71)【出願人】
【識別番号】314012076
【氏名又は名称】パナソニックIPマネジメント株式会社
(74)【代理人】
【識別番号】100109210
【弁理士】
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【弁理士】
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【弁理士】
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】玉野 宏和
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BA11
5B376BA18
5B376BC08
5B376BC68
5B376EA17
(57)【要約】
【課題】物理デバイスと仮想デバイスとが混在する開発環境を構築でき、開発効率の向上を図ることができる開発環境構築システムを提供する。
【解決手段】構築処理サーバ10は、ハードウェアで構成された対象デバイスを制御するソフトウェアの開発環境を構築する開発環境構築システムであって、開発環境には、仮想的に構成された仮想デバイスが含まれており、開発環境の仕様を示す開発環境仕様情報20、仮想デバイスに関する仮想デバイス情報、および、開発環境の構築先の候補における開発環境の構築能力を示す構築能力情報を取得する取得部11と、開発環境仕様情報、仮想デバイス情報および構築能力情報に基づいて、開発環境の構築先を決定する決定部12と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ハードウェアで構成された対象デバイスを制御するソフトウェアの開発環境を構築する開発環境構築システムであって、
前記開発環境には、仮想的に構成された仮想デバイスが含まれており、
前記開発環境の仕様を示す開発環境仕様情報、前記仮想デバイスに関する仮想デバイス情報、および、前記開発環境の構築先の候補における前記開発環境の構築能力を示す構築能力情報を取得する取得部と、
前記開発環境仕様情報、前記仮想デバイス情報および前記構築能力情報に基づいて、前記開発環境の構築先を決定する決定部と、を備える、
開発環境構築システム。
【請求項2】
前記決定部は、前記開発環境仕様情報、前記仮想デバイス情報および前記構築能力情報に関する条件に基づいて、前記構築先を決定する、
請求項1に記載の開発環境構築システム。
【請求項3】
前記開発環境仕様情報は、前記対象デバイスの所在を示す情報を含む、
請求項1または2に記載の開発環境構築システム。
【請求項4】
前記仮想デバイス情報は、前記仮想デバイスを制御する際に要求される応答性を示す応答性能要求情報、または、前記仮想デバイスを制御する際に要求される計算リソースを示すリソース情報を含む、
請求項1~3のいずれか1項に記載の開発環境構築システム。
【請求項5】
前記構築能力情報は、前記開発環境の構築の可否を示す情報、または、ストレージ容量を示す情報を含む、
請求項1~4のいずれか1項に記載の開発環境構築システム。
【請求項6】
前記仮想デバイス情報は、前記仮想デバイスに対する入出力インタフェースである仮想インタフェースの設定に関する仮想IF設定情報を含み、
前記開発環境構築システムは、さらに、前記仮想IF設定情報を変更することで、決定された前記構築先に前記開発環境を構築する構築部を備える、
請求項1~5のいずれか1項に記載の開発環境構築システム。
【請求項7】
前記開発環境構築システムは、さらに、
構築された前記開発環境において前記対象デバイスを制御するソフトウェアを、開発可能か否かを試行する試行部と、
前記試行の結果を提示する提示部と、を備える、
請求項1~6のいずれか1項に記載の開発環境構築システム。
【請求項8】
前記開発環境の構築先の候補は、ハイパーバイザを含む、
請求項1~7のいずれか1項に記載の開発環境構築システム。
【請求項9】
ハードウェアで構成された対象デバイスを制御するソフトウェアの開発環境を構築する開発環境構築システムにより実行される開発環境構築方法であって、
前記開発環境には、仮想的に構成された仮想デバイスが含まれており、
前記開発環境の仕様を示す開発環境仕様情報、前記仮想デバイスに関する仮想デバイス情報、および、前記開発環境の構築先の候補における前記開発環境の構築能力を示す構築能力情報を取得する取得ステップと、
前記開発環境仕様情報、前記仮想デバイス情報および前記構築能力情報に基づいて、前記開発環境の構築先を決定する決定ステップと、を含む、
開発環境構築方法。
【請求項10】
請求項9に記載の開発環境構築方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ハードウェアで構成された対象デバイスを制御するソフトウェアの開発環境を構築する開発環境構築システム、開発環境構築方法およびプログラムに関する。
【背景技術】
【0002】
ハードウェアで構成されたデバイス(物理デバイス)がソフトウェアとしてエミュレーションされている仮想デバイスを用いた開発環境による、デバイス制御ソフトウェアの開発が行われている。例えば、ハイパーバイザ(HV)、バーチャルマシン(VM)、コンテナ技術などにより、車載向けソフトウェア開発環境の構築および複製が容易となっている。また、物理デバイスをソフトウェアでエミュレーションすることで、クラウド環境上で物理ハードウェアなしでデバイスの検証などを行うことができる。このような前提において、特許文献1および特許文献2に示されるような技術が開示されている。
【0003】
特許文献1には、所望の故障注入を含む所望の制御を、テストプログラムから、所望のタイミングで、仮想デバイスモデルへ与えることが可能な演算装置および仮想開発環境装置が開示されている。
【0004】
特許文献2には、仮想デバイスを仮想コンピューティング環境に動的に追加する手段について開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許第6692278号公報
【特許文献2】特開2006-18814号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ハードウェアで構成されたデバイスがソフトウェアとしてエミュレーションされることで、仮想的に構成された仮想デバイスを複数含む開発環境がクラウド環境上などに構築され、デバイスを制御するソフトウェアの開発が進められている。これに対して、複数の仮想デバイスのうち特定のデバイスをハードウェアで構成された物理デバイスとした、物理デバイスと仮想デバイスとが混在する開発環境を利用して、開発効率の向上を図りたいという要望がある。
【0007】
しかしながら、上記特許文献1および2では、物理デバイスと仮想デバイスとが混在する開発環境の実現については考慮されていない。
【0008】
そこで、本開示は、物理デバイスと仮想デバイスとが混在する開発環境を構築でき、開発効率の向上を図ることができる開発環境構築システムなどを提供する。
【課題を解決するための手段】
【0009】
本開示の一態様に係る開発環境構築システムは、ハードウェアで構成された対象デバイスを制御するソフトウェアの開発環境を構築する開発環境構築システムであって、前記開発環境には、仮想的に構成された仮想デバイスが含まれており、前記開発環境の仕様を示す開発環境仕様情報、前記仮想デバイスに関する仮想デバイス情報、および、前記開発環境の構築先の候補における前記開発環境の構築能力を示す構築能力情報を取得する取得部と、前記開発環境仕様情報、前記仮想デバイス情報および前記構築能力情報に基づいて、前記開発環境の構築先を決定する決定部と、を備える。
【0010】
本開示の一態様に係る開発環境構築方法は、ハードウェアで構成された対象デバイスを制御するソフトウェアの開発環境を構築する開発環境構築システムにより実行される開発環境構築方法であって、前記開発環境には、仮想的に構成された仮想デバイスが含まれており、前記開発環境の仕様を示す開発環境仕様情報、前記仮想デバイスに関する仮想デバイス情報、および、前記開発環境の構築先の候補における前記開発環境の構築能力を示す構築能力情報を取得する取得ステップと、前記開発環境仕様情報、前記仮想デバイス情報および前記構築能力情報に基づいて、前記開発環境の構築先を決定する決定ステップと、を含む。
【0011】
本開示の一態様に係るプログラムは、上記の開発環境構築方法をコンピュータに実行させるためのプログラムである。
【発明の効果】
【0012】
本開示の一態様に係る開発環境構築システムなどによれば、物理デバイスと仮想デバイスとが混在する開発環境を構築でき、開発効率の向上を図ることができる。
【図面の簡単な説明】
【0013】
【
図1】実施の形態に係る開発環境構築システムを含むクラウド環境およびローカル環境の一例を示す構成図である。
【
図2】実施の形態に係る開発環境構築システムの動作の一例を示すフローチャートである。
【
図3】ローカル環境に構築された開発環境の一例を示す構成図である。
【
図4】クラウド環境に構築された開発環境の一例を示す構成図である。
【発明を実施するための形態】
【0014】
(実施の形態)
以下、実施の形態に係る開発環境構築システムについて、図面を用いて説明する。
【0015】
図1は、実施の形態に係る開発環境構築システム(構築処理サーバ10)を含むクラウド環境100およびローカル環境200の一例を示す構成図である。例えば、クラウド環境100とローカル環境200とは、インターネットなどを介して通信可能に接続されている。
【0016】
構築処理サーバ10は、ハードウェアで構成された対象デバイスを制御するソフトウェアの開発環境を構築する開発環境構築システムの一例である。構築処理サーバ10によって構築される開発環境には、仮想的に構成された仮想デバイスが含まれている。
図1では、対象デバイスとして、実デバイスA300を示している。実デバイスA300は、ハードウェアで構成されたデバイス(物理デバイス)であり、例えば、車両に搭載されるデバイスである。車両に搭載されるデバイスとしては、CAN(Controller Area Network)またはイーサネット(登録商標)などを介して、車載装置によって制御されるECU(Electronic Control Unit)、または、IVI(In Vehicle Infotainment)用のタッチスクリーンディスプレイなどがある。
【0017】
例えば、実デバイスA300は、ユーザ400が実デバイスA300などの検証を行うローカル環境200に配置される。例えば、ローカル環境200には、クライアント210および220が設けられる。クライアント210および220は、ローカル環境200に設置されたPC(Personal Computer)などのコンピュータである。
【0018】
例えば、クラウド環境100には、実デバイスA300を含む複数の物理デバイスが、ソフトウェアとしてエミュレーションされることで、仮想的に構成された複数の仮想デバイスについての開発環境がすでに構築されているとする。これに対して、複数の仮想デバイスのうちの特定のデバイスを物理デバイスとした開発環境を利用したいという要望がある。構築処理サーバ10は、このような要望に対応するためのものであり、物理デバイスと仮想デバイスとが混在する開発環境を構築できる。
【0019】
例えば、構築処理サーバ10は、クラウド環境100に設けられる。ただし、構築処理サーバ10は、クラウド環境100に設けられなくてもよく、クラウド環境100およびローカル環境200と通信可能な環境に設けられていてもよい。
【0020】
構築処理サーバ10は、取得部11、決定部12、構築部13、試行部14および提示部15を備える。構築処理サーバ10は、プロセッサおよびメモリなどを含むコンピュータである。メモリは、ROM(Read Only Memory)およびRAM(Random Access Memory)などであり、プロセッサにより実行されるプログラムを記憶することができる。取得部11、決定部12、構築部13、試行部14および提示部15は、メモリに格納されたプログラムを実行するプロセッサなどによって実現される。なお、取得部11、決定部12、構築部13、試行部14および提示部15は、1つのサーバ(1つの筐体)に配置されてもよいし、複数のサーバ(複数の筐体)に分散して配置されてもよい。
【0021】
取得部11は、開発環境仕様情報、仮想デバイス情報、および、構築能力情報を取得する。取得部11の動作および各情報の詳細については後述する。
【0022】
決定部12は、開発環境の構築先を決定する。決定部12の動作の詳細については後述する。
【0023】
構築部13は、決定された構築先に開発環境を構築する。構築部13の動作の詳細については後述する。
【0024】
試行部14は、構築された開発環境において対象デバイスを制御するソフトウェアを、開発可能か否かを試行する。試行部14の動作の詳細については後述する。
【0025】
提示部15は、試行部14による試行の結果を提示する。提示部15の動作の詳細については後述する。
【0026】
クラウド環境100には、クラウド環境100に構築された開発環境に含まれる複数の仮想デバイスに関する複数の仮想デバイス情報が記憶される。仮想デバイス情報は、仮想デバイスを利用する場合などに必要となるパラメータを含み、当該パラメータは、テーブルなどで管理される。ここでは複数の仮想デバイス情報の一例として、実デバイスA300がソフトウェアとしてエミュレーションされることで仮想的に構成された仮想デバイスAに関する仮想デバイスA情報30a、および、図示していない実デバイスBがソフトウェアとしてエミュレーションされることで仮想的に構成された仮想デバイスBに関する仮想デバイスB情報30bを示している。
【0027】
仮想デバイスA情報30aは、仮想デバイスAについての、デバイス制御ソフト指定情報31、仮想IF設定情報32、仮想デバイスソフト指定情報33、応答性能要求情報34および仮想デバイス設定情報35を含む。ここでは、実デバイスA300に対する仮想デバイスAに着目して説明するが、実デバイスごとにこれらの情報が存在する。つまり、クラウド環境100には、この他にも、様々な実デバイスに対応した仮想デバイス情報が記憶され得る。
【0028】
デバイス制御ソフト指定情報31は、クラウド環境100に構築された開発環境に含まれる仮想デバイスAを制御するソフトウェア(デバイス制御ソフトウェア)の内容または取得先を示す情報である。例えば、デバイス制御ソフト指定情報31は、gitリポジトリのアクセス情報またはリポジトリ内のどのコード状態かを示す情報を含む。デバイス制御ソフト指定情報31を用いることで、仮想デバイスAを制御するソフトウェアを利用することができる。
【0029】
仮想IF設定情報32は、上記ソフトウェア(デバイス制御ソフトウェア)から仮想デバイスAを制御する際の仮想デバイスAに対する入出力インタフェースである仮想インタフェースの設定に関する設定情報である。例えば、仮想IF設定情報32は、仮想デバイスAへのアクセス先情報を含む。なお、仮想IF設定情報32を変更することで、アクセス先を実デバイスA300に変更することができ、デバイス制御ソフトウェアから実デバイスA300を制御することができる。
【0030】
仮想デバイスソフト指定情報33は、仮想デバイスAを示すソフトウェアの内容または取得先を示す情報である。例えば、仮想デバイスソフト指定情報33は、gitリポジトリのアクセス情報またはリポジトリ内のどのコード状態かを示す情報を含む。仮想デバイスソフト指定情報33を用いることで、仮想デバイスAを利用することができる。
【0031】
応答性能要求情報34は、仮想デバイスAを制御する際に要求される応答性を示す情報である。例えば、応答性能要求情報34は、仮想デバイスAを制御する際に要求されるレスポンス時間などを含む。
【0032】
仮想デバイス設定情報35は、仮想デバイスAを制御する際に要求される計算リソースを示すリソース情報を含む。例えば、リソース情報は、仮想デバイスAをHVなどで実現する場合に、要求されるCPUコア数およびメモリ量などの計算リソースを含む。
【0033】
仮想デバイスB情報30bについても、仮想デバイスBに関して、仮想デバイスA情報30aと同様の情報を含む。例えば、上記の説明において、仮想デバイスAとしているところを仮想デバイスBに置き換えることで、仮想デバイスB情報30bの説明となる。その他の仮想デバイス情報についても同様である。
【0034】
例えば、ユーザ400は、物理デバイスと仮想デバイスとが混在する開発環境の仕様を示す開発環境仕様情報20を、例えば、クラウド環境100またはローカル環境200と通信可能に接続された機器(PCまたは携帯端末など)に入力する。あるいは、開発環境仕様情報20は、クラウド環境100またはローカル環境200における機器に記憶されていてもよい。例えば、開発環境仕様情報20は、どの物理デバイスを指定するかを示す情報(ここでは実デバイスAを指定することを示す情報)および実デバイスA300の所在を示す情報を含む。実デバイスA300の所在を示す情報は、例えば、実デバイスA300が存在する場所(ここではローカル環境200)や接続されている機器(ここではクライアント210)などを含む。
【0035】
また、開発環境の構築先の候補となる機器などには、開発環境の構築能力を示す構築能力情報が記憶される。例えば、クライアント210には構築能力情報40aが記憶され、クライアント220には構築能力情報40bが記憶され、クラウド環境100には構築能力情報40cが記憶される。
【0036】
例えば、構築能力情報40aは、クライアント210における開発環境の構築の可否を示す情報、または、クライアント210が有するストレージのストレージ容量を示す情報を含む。開発環境の構築の可否を示す情報は、クライアント210がHVを含むか否かを示す情報であってもよく、クライアント210がHVを含まない場合、クライアント210での開発環境の構築が不可であってもよい。また、開発環境の構築の可否を示す情報は、クライアント210が開発環境の構築を許可されているか否かを示す情報であってもよく、クライアント210が開発環境の構築を許可されていない場合、クライアント210での開発環境の構築が不可であってもよい。ストレージ容量を示す情報は、クライアント210が有するストレージのストレージ残容量を示す情報であってもよい。
【0037】
例えば、構築能力情報40bは、クライアント220における開発環境の構築の可否を示す情報、または、クライアント220が有するストレージのストレージ容量を示す情報を含む。開発環境の構築の可否を示す情報は、クライアント220がHVを含むか否かを示す情報であってもよく、クライアント220がHVを含まない場合、クライアント220での開発環境の構築が不可であってもよい。また、開発環境の構築の可否を示す情報は、クライアント220が開発環境の構築を許可されているか否かを示す情報であってもよく、クライアント220が開発環境の構築を許可されていない場合、クライアント220での開発環境の構築が不可であってもよい。ストレージ容量を示す情報は、クライアント220が有するストレージのストレージ残容量を示す情報であってもよい。
【0038】
例えば、構築能力情報40cは、クラウド環境100における開発環境の構築の可否を示す情報、または、クラウド環境100が有するストレージのストレージ容量を示す情報を含む。開発環境の構築の可否を示す情報は、クラウド環境100が開発環境の構築を許可されているか否かを示す情報であってもよく、クラウド環境100が開発環境の構築を許可されていない場合、クラウド環境100での開発環境の構築が不可であってもよい。ストレージ容量を示す情報は、クラウド環境100が有するストレージのストレージ残容量を示す情報であってもよい。
【0039】
次に、構築処理サーバ10の動作の詳細について、
図2を用いて説明する。
【0040】
図2は、実施の形態に係る開発環境構築システム(構築処理サーバ10)の動作の一例を示すフローチャートである。
【0041】
まず、取得部11は、開発環境の仕様を示す開発環境仕様情報20、仮想デバイスに関する仮想デバイス情報(例えば仮想デバイスA情報30aおよび仮想デバイスB情報30bなど)、および、開発環境の構築先の候補における開発環境の構築能力を示す構築能力情報(例えば構築能力情報40a~40cなど)を取得する(ステップS11)。取得部11は、クラウド環境100またはローカル環境200からこれらの情報を取得するが、これらの情報の取得先はクラウド環境100またはローカル環境200に限らない。例えば、これらの情報は、クラウド環境100またはローカル環境200に記憶されていなくてもよく、取得部11は、クラウド環境100またはローカル環境200以外の環境からこれらの情報を取得してもよい。
【0042】
次に、決定部12は、開発環境仕様情報20、仮想デバイス情報および構築能力情報に基づいて、開発環境の構築先を決定する(ステップS12)。例えば、決定部12は、開発環境の構築先として、クラウド環境100またはローカル環境200のいずれかを決定してもよく、さらに、開発環境の構築先として、ローカル環境200に設けられた具体的な機器を決定してもよい。
【0043】
例えば、決定部12は、開発環境仕様情報20、仮想デバイス情報および構築能力情報に関する条件に基づいて、構築先を決定してもよい。例えば、決定部12は、開発環境仕様情報20に関する条件として、対象デバイスの所在の条件、各仮想デバイス(仮想デバイスA、B、・・・)を制御する際に要求される応答性および計算リソースの条件、開発環境の構築先の候補における開発環境の構築の可否の条件、および、開発環境の構築先の候補におけるストレージ容量の条件などに基づいて、構築先を決定してもよい。
【0044】
具体的には、対象デバイスの所在の条件については、対象デバイスが接続されている機器、または、当該機器が接続されたLAN(Local Area Network)内の機器が構築先に決定されやすくなる。各仮想デバイス(仮想デバイスA、B、・・・)を制御する際に要求される応答性の条件については、当該応答性を実現できる性能を有する機器が構築先に決定されやすくなる。各仮想デバイスを制御する際に要求される計算リソースの条件については、当該計算リソースを満たす性能(CPUコア数および残ストレージ容量など)を有する機器が構築先に決定されやすくなる。開発環境の構築先の候補における開発環境の構築の可否の条件については、開発環境の構築が可能な機器が構築先に決定されやすくなる。開発環境の構築先の候補におけるストレージ容量の条件については、要求されるストレージ容量を有する機器が構築先に決定されやすくなる。
【0045】
なお、ユーザ400は、開発環境の構築先を指定してもよく、決定部12は、開発環境の構築先をユーザ400に指定された構築先に決定してもよい。
【0046】
また、構築処理サーバ10は、決定された構築先を示す情報を出力する出力部(図示せず)を備えていてもよい。これにより、ユーザ400は、決定された構築先を確認することができる。
【0047】
次に、構築部13は、仮想IF設定情報32を変更することで、決定された構築先に開発環境を構築する(ステップS13)。例えば、仮想IF設定情報32が、仮想デバイス(例えば仮想デバイスA)に対する仮想インタフェースの設定から対象デバイス(例えば実デバイスA300)に対する仮想インタフェースの設定に変更される。これにより、仮想デバイスを制御するソフトウェアによって、対象デバイスを制御できるようになる。仮想IF設定情報32が変更されることで、決定された構築先に開発環境が構築された場合に、対象デバイスを制御可能な状態となっているため、決定された構築先に自動的に開発環境を構築することができる。言い換えると、決定された構築先に開発環境を構築する際に、手動での仮想IF設定情報32の変更が不要となる。
【0048】
そして、試行部14は、構築された開発環境において対象デバイスを制御するソフトウェアを、開発可能か否かを試行し(ステップS14)、提示部15は、試行の結果を提示する(ステップS15)。例えば、提示部15は、試行の結果として、開発可能か否か、言い換えると、開発環境の構築に成功したか否かを提示し、また、成功した場合には、構築先を提示してもよい。例えば、失敗した場合には、成功するまでステップS12からステップS15までの処理が繰り返し行われてもよい。
【0049】
なお、ステップS12において、複数の構築先が決定された場合には、いずれの構築先で開発環境を構築するかがユーザ400に選択されてもよい。
【0050】
また、開発環境の構築先の候補には、優先順位が決められていてもよく、ステップS12からステップS15において、優先順位の高い順に構築先が決定され、開発環境の構築、試行、試行の結果の提示が行われてもよい。例えば、優先順位の高い構築先での開発環境の構築に失敗した場合には、次に優先順位の高い構築先が決定され、開発環境の構築、試行、試行の結果の提示が行われてもよい。
【0051】
ここで、開発環境の構築先としてクライアント210が提示される場合およびクラウド環境100が提示される場合の、開発環境仕様情報20、仮想デバイス情報および構築能力情報に含まれる情報の例、ならびに、構築処理サーバ10の動作の例について説明する。
【0052】
まず、開発環境の構築先としてクライアント210が提示される場合について説明する。
【0053】
例えば、開発環境仕様情報20には、実デバイスA300が存在する場所の情報として、ローカル環境200のグローバルIPアドレス、ならびに、ローカル環境200に紐づけられたクライアントの情報として、クライアント210のローカルIPアドレスおよびクライアント220のローカルIPアドレスが含まれている。なお、開発環境仕様情報20には、図示しないローカル環境についても、ローカル環境200と同様の情報が含まれる。
【0054】
また、例えば、開発環境仕様情報20には、物理デバイス(実デバイス)に関する情報として、実デバイスA300の種類を示す情報(例えばストレージ)と接続されているクライアント(例えばクライアント210)を示す情報との組み合わせが含まれている。
【0055】
例えば、仮想デバイスA情報30aには、デバイスの種類を示す情報(例えばストレージ)と、仮想デバイス設定情報35(例えば必要ストレージ容量が10GB以上)と、応答性能要求情報34(例えば100ms以内)との組み合わせが含まれる。
【0056】
例えば、構築能力情報40aには、クライアント210が開発環境を構築可能であることを示す情報(HVがあることを示す情報)、および、ストレージ残容量が100GBであることを示す情報が含まれる。例えば、構築能力情報40bには、クライアント220が開発環境を構築不可であることを示す情報(HVがないことを示す情報)、および、ストレージ残容量が100GBであることを示す情報が含まれる。例えば、構築能力情報40cには、クライド環境100が開発環境を構築可能であることを示す情報(HVがあることを示す情報)、および、ストレージ残容量が1TBであることを示す情報が含まれる。
【0057】
開発環境仕様情報20、仮想デバイス情報および構築能力情報に上記の情報が含まれている場合に、構築処理サーバ10は、以下のように動作する。
【0058】
決定部12は、物理デバイス(実デバイス)に関する情報で指定された実デバイスA300の種類を示す情報に基づいて、実デバイスA300に対応する仮想デバイスA情報30aを確認し、必要なストレージ容量が10GB以上であり、要求される応答性が100ms以内であることを確認する。決定部12は、構築能力情報40bに基づいて、クライアント220が構築先として不適切と判断する。決定部12は、構築能力情報40aおよび40cに基づいて、クライアント210およびクラウド環境100が共にストレージ残容量が十分であると判断する。
【0059】
構築部13は、クライアント210およびクラウド環境100のそれぞれが存在する場所の情報に基づいて、クライアント210およびクラウド環境100に開発環境を構築する。例えば、構築部13がIPアドレスにアクセスして構築指示を出してもよいし、クラウドと通信してデータを取得するソフトが、クライアント210およびクラウド環境100のそれぞれが存在する場所ごとにあってもよい。
【0060】
試行部14は、クライアント210およびクラウド環境100のそれぞれに構築された開発環境においてソフトウェアを、開発可能か否かを試行する。具体的には、試行部14は、クライアント210およびクラウド環境100のそれぞれで開発環境を動作させて、仮想デバイス設定情報35および応答性能要求情報34が示す要求を満たすかを確認する。例えば、クラウド環境100は応答性が100msを超えたとする。これにより、クラウド環境100は開発環境の構築先として不適切と判断され、提示部15は、試行の結果として、クライアント210を提示する。
【0061】
次に、開発環境の構築先としてクラウド環境100が提示される場合について説明する。
【0062】
例えば、開発環境仕様情報20には、実デバイスA300が存在する場所の情報として、ローカル環境200のグローバルIPアドレス、ならびに、ローカル環境200に紐づけられたクライアントの情報として、クライアント210のローカルIPアドレスおよびクライアント220のローカルIPアドレスが含まれている。なお、開発環境仕様情報20には、図示しないローカル環境についても、ローカル環境200と同様の情報が含まれる。
【0063】
また、例えば、開発環境仕様情報20には、物理デバイス(実デバイス)に関する情報として、実デバイスA300の種類を示す情報(例えばディスプレイ)と接続されているクライアント(例えばクライアント210)を示す情報との組み合わせが含まれている。
【0064】
例えば、仮想デバイスA情報30aには、デバイスの種類を示す情報(例えばディスプレイ)と、仮想デバイス設定情報35(例えば割当CPUコア数が4以上)と、応答性能要求情報34(例えば1s以内)との組み合わせが含まれる。
【0065】
例えば、構築能力情報40aには、クライアント210が開発環境を構築可能であることを示す情報(HVがあることを示す情報)、および、ストレージ残容量が100GBであることを示す情報が含まれる。例えば、構築能力情報40bには、クライアント220が開発環境を構築不可であることを示す情報(HVがないことを示す情報)、および、ストレージ残容量が100GBであることを示す情報が含まれる。例えば、構築能力情報40cには、クライド環境100が開発環境を構築可能であることを示す情報(HVがあることを示す情報)、および、ストレージ残容量が1TBであることを示す情報が含まれる。
【0066】
開発環境仕様情報20、仮想デバイス情報および構築能力情報に上記の情報が含まれている場合に、構築処理サーバ10は、以下のように動作する。
【0067】
決定部12は、物理デバイス(実デバイス)に関する情報で指定された実デバイスA300の種類を示す情報に基づいて、実デバイスA300に対応する仮想デバイスA情報30aを確認し、割当CPUコア数が4以上であり、要求される応答性が1s以内であることを確認する。決定部12は、構築能力情報40bに基づいて、クライアント220が構築先として不適切と判断する。
【0068】
構築部13は、クライアント210およびクラウド環境100のそれぞれが存在する場所の情報に基づいて、クライアント210およびクラウド環境100に開発環境を構築する。例えば、構築部13がIPアドレスにアクセスして構築指示を出してもよいし、クラウドと通信してデータを取得するソフトが、クライアント210およびクラウド環境100のそれぞれが存在する場所ごとにあってもよい。
【0069】
試行部14は、クライアント210およびクラウド環境100のそれぞれに構築された開発環境においてソフトウェアを、開発可能か否かを試行する。具体的には、試行部14は、クライアント210およびクラウド環境100のそれぞれで開発環境を動作させて、仮想デバイス設定情報35および応答性能要求情報34が示す要求を満たすかを確認する。例えば、クライアント210は2つしかCPUコアの割当ができなかったとする。これにより、クライアント210は開発環境の構築先として不適切と判断され、提示部15は、試行の結果として、クラウド環境100を提示する。
【0070】
次に、開発環境がローカル環境200に構築された場合について
図3を用いて説明し、開発環境がクラウド環境100に構築された場合について
図4を用いて説明する。
【0071】
図3は、ローカル環境200に構築された開発環境500の一例を示す構成図である。例えば、ローカル環境200におけるクライアント210に開発環境500が構築されたとする。
図3には、デバイスA向けの開発環境510およびデバイスB向けの開発環境520を示している。
【0072】
開発環境510には、デバイスA制御ソフト511、実デバイスA向け仮想IF設定情報512、仮想デバイスA513および仮想デバイス設定情報515が含まれる。
【0073】
デバイスA制御ソフト511は、
図1に示される仮想デバイスA情報30aに含まれるデバイス制御ソフト指定情報31が示すソフトウェアであり、実デバイスA300を制御するためのソフトウェアである。ただし、デバイスA制御ソフト511は、仮想デバイスA513向けに開発されたソフトであるため、例えば、ユーザ400は、開発環境500を利用してデバイスA制御ソフト511を実デバイスA300に応じて改良していく。
【0074】
実デバイスA向け仮想IF設定情報512は、実デバイスA300に対する仮想インタフェースの設定に変更された、
図1に示される仮想デバイスA情報30aに含まれる仮想IF設定情報32である。実デバイスA向け仮想IF設定情報512は、実デバイスA300に対する仮想インタフェースの設定となっているため、デバイスA制御ソフト511によって実デバイスA300を制御可能となっている。
【0075】
仮想デバイスA513は、
図1に示される仮想デバイスA情報30aに含まれる仮想デバイスソフト指定情報33が示す仮想デバイスである。開発環境510は、実デバイスA300を制御するソフトウェアの開発環境であるため、仮想デバイスA513は用いられなくてもよい。あるいは、状況に応じて、開発環境510においても仮想デバイスA513が用いられてもよい。
【0076】
仮想デバイス設定情報515は、
図1に示される仮想デバイスA情報30aに含まれる仮想デバイス設定情報35である。
【0077】
開発環境520には、デバイスB制御ソフト521、仮想デバイスB向け仮想IF設定情報522、仮想デバイスB523および仮想デバイス設定情報525が含まれる。
【0078】
デバイスB制御ソフト521は、
図1に示される仮想デバイスB情報30bに含まれるデバイス制御ソフト指定情報31が示すソフトウェアであり、仮想デバイスB523を制御するためのソフトウェアである。
【0079】
仮想デバイスB向け仮想IF設定情報522は、仮想デバイスB523に対する仮想インタフェースの設定となっている、
図1に示される仮想デバイスB情報30bに含まれる仮想IF設定情報32である。仮想デバイスB向け仮想IF設定情報522は、仮想デバイスB523に対する仮想インタフェースの設定となっているため、デバイスB制御ソフト521によって仮想デバイスB523を制御可能となっている。
【0080】
仮想デバイスB523は、
図1に示される仮想デバイスB情報30bに含まれる仮想デバイスソフト指定情報33が示す仮想デバイスである。開発環境520は、仮想デバイスB523を制御するソフトウェアの開発環境であるため、仮想デバイスB523が用いられる。このように、開発環境500には、実デバイスA300に関する開発環境510と仮想デバイスB523に関する開発環境520とが混在している。
【0081】
仮想デバイス設定情報525は、
図1に示される仮想デバイスB情報30bに含まれる仮想デバイス設定情報35である。例えば、クライアント210は、HVを含み、このHVは、仮想デバイス設定情報525に応じて、開発環境520に対するCPUコアの割当数を決定している。しかし、このCPUコアの割当数では、CPU性能が低いということが、開発環境500を構築してからわかることがある。そのような場合には、CPU性能が十分となるように仮想デバイス設定情報525が変更されてもよい、つまり、仮想デバイス設定情報525におけるCPUコアの割当数が増やされてもよい。例えば、次回の開発環境の構築時(例えば実デバイスAについての開発環境の構築時であってもよいし、他の実デバイスについての開発環境の構築時であってもよい)に、仮想デバイス設定情報525(仮想デバイス設定情報35)の変更内容が、ユーザ400などに提示されて、適用されてもよい。
【0082】
図4は、クラウド環境100に構築された開発環境600の一例を示す構成図である。
図4には、デバイスA向けの開発環境610およびデバイスB向けの開発環境620を示している。
【0083】
開発環境610には、デバイスA制御ソフト611、実デバイスA向け仮想IF設定情報612、仮想デバイスA613および仮想デバイス設定情報615が含まれる。
【0084】
デバイスA制御ソフト611は、
図1に示される仮想デバイスA情報30aに含まれるデバイス制御ソフト指定情報31が示すソフトウェアであり、実デバイスA300を制御するためのソフトウェアである。ただし、デバイスA制御ソフト611は、仮想デバイスA613向けに開発されたソフトであるため、例えば、ユーザ400は、開発環境600を利用してデバイスA制御ソフト611を実デバイスA300に応じて改良していく。
【0085】
実デバイスA向け仮想IF設定情報612は、実デバイスA300に対する仮想インタフェースの設定に変更された、
図1に示される仮想デバイスA情報30aに含まれる仮想IF設定情報32である。実デバイスA向け仮想IF設定情報612は、実デバイスA300に対する仮想インタフェースの設定となっているため、デバイスA制御ソフト611によって実デバイスA300を制御可能となっている。例えば、実デバイスA向け仮想IF設定情報612には、ローカル環境200に設けられた実デバイスA300までのアクセス情報(例えばクラウド環境100とインターネットなどを介して接続されたローカル環境200に設けられた、クライアント210に接続された実デバイスA300までのアクセス情報)が含まれる。
【0086】
仮想デバイスA613は、
図1に示される仮想デバイスA情報30aに含まれる仮想デバイスソフト指定情報33が示す仮想デバイスである。開発環境610は、実デバイスA300を制御するソフトウェアの開発環境であるため、仮想デバイスA613は用いられなくてもよい。あるいは、状況に応じて、開発環境610においても仮想デバイスA613が用いられてもよい。
【0087】
仮想デバイス設定情報615は、
図1に示される仮想デバイスA情報30aに含まれる仮想デバイス設定情報35である。
【0088】
開発環境620には、デバイスB制御ソフト621、仮想デバイスB向け仮想IF設定情報622、仮想デバイスB623および仮想デバイス設定情報625が含まれる。
【0089】
デバイスB制御ソフト621は、
図1に示される仮想デバイスB情報30bに含まれるデバイス制御ソフト指定情報31が示すソフトウェアであり、仮想デバイスB623を制御するためのソフトウェアである。
【0090】
仮想デバイスB向け仮想IF設定情報622は、仮想デバイスB623に対する仮想インタフェースの設定となっている、
図1に示される仮想デバイスB情報30bに含まれる仮想IF設定情報32である。仮想デバイスB向け仮想IF設定情報622は、仮想デバイスB623に対する仮想インタフェースの設定となっているため、デバイスB制御ソフト621によって仮想デバイスB623を制御可能となっている。
【0091】
仮想デバイスB623は、
図1に示される仮想デバイスB情報30bに含まれる仮想デバイスソフト指定情報33が示す仮想デバイスである。開発環境620は、仮想デバイスB623を制御するソフトウェアの開発環境であるため、仮想デバイスB623が用いられる。このように、開発環境600には、実デバイスA300に関する開発環境610と仮想デバイスB623に関する開発環境620とが混在している。
【0092】
仮想デバイス設定情報625は、
図1に示される仮想デバイスB情報30bに含まれる仮想デバイス設定情報35である。例えば、クラウド環境100は、HVを含み、このHVは、仮想デバイス設定情報625に応じて、開発環境620に対するCPUコアの割当数を決定している。しかし、このCPUコアの割当数では、CPU性能が低いということが、開発環境600を構築してからわかることがある。そのような場合には、CPU性能が十分となるように仮想デバイス設定情報625が変更されてもよい、つまり、仮想デバイス設定情報625におけるCPUコアの割当数が増やされてもよい。例えば、次回の開発環境の構築時(例えば実デバイスAについての開発環境の構築時であってもよいし、他の実デバイスについての開発環境の構築時であってもよい)に、仮想デバイス設定情報625(仮想デバイス設定情報35)の変更内容が、ユーザ400などに提示されて、適用されてもよい。
【0093】
(まとめ)
構築処理サーバ10は、ハードウェアで構成された対象デバイス(実デバイスA300)を制御するソフトウェアの開発環境を構築する開発環境構築システムであって、開発環境には、仮想的に構成された仮想デバイスが含まれており、構築処理サーバ10は、開発環境の仕様を示す開発環境仕様情報20、仮想デバイスに関する仮想デバイス情報、および、開発環境の構築先の候補における開発環境の構築能力を示す構築能力情報を取得する取得部11と、開発環境仕様情報20、仮想デバイス情報および構築能力情報に基づいて、開発環境の構築先を決定する決定部12と、を備える。
【0094】
これによれば、対象デバイス(物理デバイス)と仮想デバイスとが混在する開発環境の仕様、当該開発環境に含まれる仮想デバイスに関する情報、当該開発環境の構築先の候補における開発環境の構築能力に応じて、最適な構築先を決定することができる。したがって、決定された構築先に、物理デバイスと仮想デバイスとが混在する開発環境を構築でき、開発効率の向上を図ることができる。例えば、開発環境の構築には時間を要するが、本開示により構築先の決定が自動化されて、開発効率の向上を図ることができる。
【0095】
例えば、決定部12は、開発環境仕様情報20、仮想デバイス情報および構築能力情報に関する条件に基づいて、構築先を決定してもよい。
【0096】
例えば、開発環境仕様情報20は、対象デバイスの所在を示す情報を含んでいてもよい。
【0097】
これによれば、対象デバイスが存在する場所や接続されている機器などの情報に応じて、最適な構築先を決定することができる。
【0098】
例えば、仮想デバイス情報は、仮想デバイスを制御する際に要求される応答性を示す応答性能要求情報34、または、仮想デバイスを制御する際に要求される計算リソースを示すリソース情報を含んでいてもよい。
【0099】
これによれば、仮想デバイスを制御する際に要求される応答性、または、仮想デバイスを制御する際に要求される計算リソースに応じて、これらの条件を満たす最適な構築先を決定することができる。
【0100】
例えば、構築能力情報は、開発環境の構築の可否を示す情報、または、ストレージ容量を示す情報を含んでいてもよい。
【0101】
これによれば、開発環境の構築先の候補における開発環境の構築の可否、または、ストレージ容量に応じて、開発環境(例えば開発環境に含まれる仮想デバイス)が正しく機能することができる構築先を決定することができる。
【0102】
例えば、仮想デバイス情報は、仮想デバイスに対する入出力インタフェースである仮想インタフェースの設定に関する仮想IF設定情報32を含み、構築処理サーバ10は、さらに、仮想IF設定情報32を変更することで、決定された構築先に開発環境を構築する構築部13を備えていてもよい。
【0103】
これによれば、仮想デバイスに対する入出力インタフェースの設定を対象デバイスに対する入出力インタフェースに変更することで、決定された構築先に開発環境を自動的に構築することができる。
【0104】
例えば、構築処理サーバ10は、さらに、構築された開発環境において対象デバイスを制御するソフトウェアを、開発可能か否かを試行する試行部14と、試行の結果を提示する提示部15と、を備えていてもよい。
【0105】
これによれば、決定された構築先に構築された開発環境が正しく機能しているか否かを確認することができる。
【0106】
例えば、開発環境の構築先の候補は、HVを含んでいてもよい。
【0107】
これによれば、HVによって開発環境の構築や複製が容易となる。
【0108】
(その他の実施の形態)
以上のように、本開示に係る技術の例示として実施の形態を説明した。しかしながら、本開示に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略などを行った実施の形態にも適用可能である。例えば、以下のような変形例も本開示の一実施の形態に含まれる。
【0109】
例えば、対象デバイスの開発初期段階では、対象デバイスの全ての機能が完成していない場合があるため、提示部15は、対象デバイスがサポートしている機能と、仮想デバイスがサポートしている機能との差を提示してもよい。
【0110】
例えば、対象デバイスおよび仮想デバイスが混在した開発環境を構築できない場合には、ユーザ400の承諾を得たうえで、対象デバイスに対応する仮想デバイスを含む開発環境が構築されてもよい。
【0111】
例えば、決定された構築先に開発環境が構築される前に、ユーザ400に、決定された構築先に開発環境を構築してもよいかの問い合わせが行われてもよい。
【0112】
なお、本開示は、開発環境構築システムとして実現できるだけでなく、開発環境構築システムを構成する各構成要素が行うステップ(処理)を含む開発環境構築方法として実現できる。
【0113】
開発環境構築方法は、ハードウェアで構成された対象デバイスを制御するソフトウェアの開発環境を構築する開発環境構築システムにより実行される開発環境構築方法であって、開発環境には、仮想的に構成された仮想デバイスが含まれており、開発環境構築方法は、
図2に示されるように、開発環境の仕様を示す開発環境仕様情報、仮想デバイスに関する仮想デバイス情報、および、開発環境の構築先の候補における開発環境の構築能力を示す構築能力情報を取得する取得ステップ(ステップS11)と、開発環境仕様情報、仮想デバイス情報および構築能力情報に基づいて、開発環境の構築先を決定する決定ステップ(ステップS12)と、を含む。
【0114】
例えば、開発環境構築方法におけるステップは、コンピュータ(コンピュータシステム)によって実行されてもよい。そして、本開示は、開発環境構築方法に含まれるステップを、コンピュータに実行させるためのプログラムとして実現できる。
【0115】
さらに、本開示は、そのプログラムを記録したCD-ROMなどである非一時的なコンピュータ読み取り可能な記録媒体として実現できる。
【0116】
例えば、本開示が、プログラム(ソフトウェア)で実現される場合には、コンピュータのCPU、メモリおよび入出力回路などのハードウェア資源を利用してプログラムが実行されることによって、各ステップが実行される。つまり、CPUがデータをメモリまたは入出力回路などから取得して演算したり、演算結果をメモリまたは入出力回路などに出力したりすることによって、各ステップが実行される。
【0117】
また、上記実施の形態の開発環境構築システムに含まれる各構成要素は、専用または汎用の回路として実現されてもよい。
【0118】
また、上記実施の形態の開発環境構築システムに含まれる各構成要素は、集積回路(IC:Integrated Circuit)であるLSI(Large Scale Integration)として実現されてもよい。
【0119】
また、集積回路はLSIに限られず、専用回路または汎用プロセッサで実現されてもよい。プログラム可能なFPGA(Field Programmable Gate Array)、または、LSI内部の回路セルの接続および設定が再構成可能なリコンフィギュラブル・プロセッサが、利用されてもよい。
【0120】
さらに、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて、開発環境構築システムに含まれる各構成要素の集積回路化が行われてもよい。
【0121】
その他、実施の形態に対して当業者が思いつく各種変形を施して得られる形態、本開示の趣旨を逸脱しない範囲で各実施の形態における構成要素および機能を任意に組み合わせることで実現される形態も本開示に含まれる。
【産業上の利用可能性】
【0122】
本開示は、例えば、車両に搭載されるデバイスを制御するソフトウェアの開発環境を構築するためのシステムなどに適用できる。
【符号の説明】
【0123】
10 構築処理サーバ
11 取得部
12 決定部
13 構築部
14 試行部
15 提示部
20 開発環境仕様情報
30a 仮想デバイスA情報
30b 仮想デバイスB情報
31 デバイス制御ソフト指定情報
32 仮想IF設定情報
33 仮想デバイスソフト指定情報
34 応答性能要求情報
35 仮想デバイス設定情報
40、40b、40c 構築能力情報
100 クラウド環境
200 ローカル環境
210、220 クライアント
300 実デバイスA
400 ユーザ
500、510、520、600、610、620 開発環境
511、611 デバイスA制御ソフト
512、612 実デバイスA向け仮想IF設定情報
513、613 仮想デバイスA
515、525、615、625 仮想デバイス設定情報
521、621 デバイスB制御ソフト
522、622 仮想デバイスB向け仮想IF設定情報
523、623 仮想デバイスB