(本開示の基礎となった知見)
本願発明者らが本開示に至るまでの経緯を説明する。アクチュエータ及び/又は加熱器を有する家庭用電化製品等において、多様なユーザの望みに合わせて制御プログラムを開発するためには、開発環境のオープン化が求められる。すなわち、制御プログラムの開発の難度を低下させて、サードパーティが制御プログラムの開発に容易に参加できる環境が求められる。このような環境では、例えば、アパレル企業が、自社の販売する衣服を洗濯するための洗濯機の制御プログラムを開発することも可能となる。
そこで、本発明者らは、製品に含まれるアクチュエータ及び/又は加熱器の制御を抽象化した機能ブロックを用いて、安全面の担保を維持しながら、制御プログラムを開発可能な環境を構築し、複数の機能ブロックの組み合わせからなる制御プログラムをパッケージ化してアプリケーションとして配信可能な仕組みを検討した。これにより、多種多彩なアプリケーションの配信が可能となり、より多様なユーザの望みに応えて製品をカスタマイズ及びアップデートすることが可能となる。しかしながら、このような環境では、危険なアプリケーション(つまり、製品を安全に制御することができないアプリケーション)が配信される可能性があり、製品の安全性が低下する。
例えば、家庭用電化製品等に含まれるプログラムは、アクチュエータ及び/又は加熱器を直接制御するための機器に組込まれ、かつ、製造者により開発されたプログラムと、サードパーティにより開発されたプログラムとを互いに入り交じった状態で含むことが想定される。このとき、製造者は、サードパーティに、ノウハウを含む全ての家庭用電化製品等の情報を公開しない可能性が高い。例えば、アクチュエータ及び/又は加熱器を駆動するパラメータ又はタイミングは、製造者の家庭用電化製品等の性能に関わるノウハウである。よって、競争力の低下につながる恐れがあるため、製造者は、サードパーティに、家庭用電化製品等を自在に駆動できるようにノウハウをオープンにする可能性は低い。
そのため、サードパーティは、家庭用電化製品等の情報不足により、製造者が想定しない制御の組み合わせ、又はパラメータ範囲を含むアプリケーション、すなわち、安全性が担保されないアプリケーションを作成する可能性がある。このようなアプリケーションがユーザに提供されることは、ユーザに望ましくない。
また、家庭用電化製品等の製造者は、新たな制御プログラムを提供することで、ユーザのくらしのアップデートを試みることが考えられる。しかしながら、多種多様な新たな制御プログラムの開発には、パラメータの調整、またはハードの性能評価などの膨大な工数がかかる。家庭用電化製品等は、アクチュエータ及び/又は加熱器のハードが物理的に駆動するため、家庭用電化製品等のプログラムは、スマートフォンのプログラムと比較して、性能評価などの工数が大きくなることが容易に予想される。しかし、大量生産ではなく、ユーザ一人一人の生活に応じたオンデマンド開発が求められる時代において、スマートフォンのプログラムと同様に、家庭用電化製品等の多種多様な制御プログラム開発することが求められる。そのため、製造者は、膨大な工数を低減した上で、製品の安全性を担保する多種多様なアプリケーションを作成しなければならない。
さらに、製造者は、サードパーティが提供するアプリケーションを用いて家庭用電化製品等が動作した場合でも、安全に動作することを保証することを望むことが考えられる。このとき、多種多様なアプリケーションを家庭用電化製品等で実際に駆動させて安全性を検証する作業の量を低減することが望まれる。
そこで、本開示は、アクチュエータ及び/又は加熱器を駆動する複数の機能ブロックで規定された多種多彩なアプリケーションを、より簡単かつ安全に実行することができる装置等を提供する。
以下、実施の形態について、図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、請求の範囲を限定する主旨ではない。
また、各図は、必ずしも厳密に図示したものではない。各図において、実質的に同一の構成については同一の符号を付し、重複する説明は省略又は簡略化する。
(実施の形態1)
[1.1 ハードウェア構成]
本実施の形態におけるシステム1のハードウェア構成について、図1~図2Cを参照しながら説明する。図1は、実施の形態1におけるシステム1のハードウェア構成図である。図2Aは、実施の形態1におけるクラウドサーバ10のハードウェア構成図である。図2Bは、実施の形態1における装置20のハードウェア構成図である。図2Cは、実施の形態1における端末30のハードウェア構成図である。
図1に示すように、本実施の形態におけるシステム1は、クラウドサーバ10と、施設2a~2dで用いられる装置20a~20hと、端末30a~30dと、を備える。施設2a~2dは、例えば住宅であるが、これに限定されない。施設2a~2dは、例えばマンション、店舗、オフィス等であってもよい。
クラウドサーバ10は、コンピュータネットワーク(例えばインターネット)を介して提供される仮想的なサーバである。クラウドサーバ10は、コンピュータネットワークを介して、装置20a~20h及び端末30a~30dに接続される。なお、クラウドサーバ10の代わりに物理サーバが用いられてもよい。
図2Aに示すように、クラウドサーバ10は、仮想的に、プロセッサ11と、プロセッサ11に接続されたメモリ12と、を備える。プロセッサ11は、メモリ12に格納されたインストラクション又はソフトウェアプログラムが実行されたときに、後述するシーケンスマネージャ及びデバイスマネージャとして機能する。
装置20a~20hは、施設2a~2dで利用される電気機械器具である。なお、図1では、施設2b~2dで利用される装置20c~20hの図示が省略されている。以下において、装置20a~20hの区別が不要な場合には装置20と記載する。
装置20としては、家庭用電化製品(家電)及び住宅設備等を用いることができる。家庭用電化製品(家電)及び住宅設備等は、住宅内で使用される機器に限られず、事業に用いられる機器も含む。なお、本開示では、家庭用電化製品及び住宅設備等を家庭用電化製品等と省略して記載することがある。家電としては、例えば、電子レンジ、炊飯器、ミキサー(Blender)、電気オーブン、電気トースター、電気ポット、ホットプレート、IH(Induction heating)調理器、ロースター、ベーカリー、電気圧力調理なべ、電気無水調理なべ、マルチクッカー、コーヒーメーカー、冷蔵庫、洗濯機、食洗器、掃除機、エアコン、空気清浄機、加湿器、ドライヤー、扇風機、及びイオン発生器等が用いられる。住宅設備としては、例えば、電動シャッター、電子ロック、及び浴槽用の電気湯沸し器等が用いられる。なお、装置20は、これに限定されない。
図2Bに示すように、装置20は、筐体21と、アクチュエータ22と、加熱器23と、制御部24と、を備える。なお、装置20は、アクチュエータ22及び加熱器23の少なくとも1つを備えればよく、アクチュエータ22及び加熱器23の両方を備えなくてもよい。
筐体21は、アクチュエータ22と、加熱器23と、制御部24と、を収容する。また、筐体21は、対象物を処理するための内部空間を有してもよい。例えば、洗濯機の洗濯槽、電子レンジの加熱室、及び炊飯器の内釜等が、対象物を処理するための内部空間に相当する。
アクチュエータ22は、電気信号に基づいて入力エネルギーを物理的運動に変換する機械要素である。アクチュエータ22としては、例えば電気モータ、油圧シリンダ及び空気圧アクチュエータ等を用いることができるが、これらに限定されない。
加熱器23は、電気エネルギーを熱エネルギーに変換する電気加熱器である。加熱器23は、例えばジュール加熱、誘導加熱及び誘電加熱等により対象物を加熱する。加熱器23としては、例えば、ニクロム線、コイル及びマグネトロン等を用いることができる。
ここで、本開示の装置20が、アクチュエータ22及び/又は加熱器23を備える理由の一例を説明する。家庭用電化製品等の製造者が、アクチュエータ22及び加熱器23を駆動するパラメータ、駆動の組み合わせを全て自由に制御可能な開発環境をサードパーティに提供した場合を考える。このとき、サードパーティは、製造者が想定しているアクチュエータ22及び/又は加熱器23を安全に駆動できるパラメータ範囲、又はアクチュエータ22及び/又は加熱器23の駆動制限を逸脱して制御するプログラムを作成することが可能になる。特に、物理的に運動するアクチュエータ22、又は熱エネルギーを出力する加熱器23の、製造者の想定していない駆動は、安全性の担保の課題が大きい。製造者の想定していない駆動としては、例えば、アクチュエータの一例である電気モータの高速回転、及び、加熱器23への過電流の供給が挙げられる。本願発明者らは、過度に安全面を考慮することで、ユーザに多種多様なアプリケーションを提供できる環境の構築を阻害しないことを目指した。そこで、物理的に運動するアクチュエータ22、又は熱エネルギーを出力する加熱器23に特化して、安全面を担保することを想定し、本開示の装置20を対象としている。
制御部24は、アクチュエータ22及び/又は加熱器23を制御するコントローラであり、後述するデバイスとして機能する。制御部24は、例えば、集積回路で構成される。
端末30a~30dは、施設2a~2dでそれぞれ利用され、ユーザインタフェースとして機能する。なお、図1では、施設2b~2dで利用される端末30b~30dの図示が省略されている。以下において、端末30a~30dの区別が不要な場合には端末30と記載する。
端末30は、コンピュータネットワークを介してクラウドサーバ10及び装置20に接続され、後述するユーザインタフェース(UI)として機能する。端末30としては、スマートフォン及びタブレットコンピュータ等の持ち運び可能な情報端末を用いることができる。なお、端末30は、施設2a~2dの壁、床又は天井に固定された端末であってもよい。また、端末30は、装置20に含まれてもよい。例えば、端末30は、各装置20a~20hに内蔵されたディスプレイ等を有する表示端末として実現されてもよい。
図2Cに示すように、端末30は、ディスプレイ31と、入力デバイス32と、を備える。ディスプレイ31としては、例えば液晶ディスプレイ及び有機ELディスプレイを用いることができる。入力デバイス32としては、例えばタッチパネル、キーボード、マウス及び機械式ボタン等を用いることができる。また、入力デバイス32として、音声入力デバイスが用いられてもよい。ディスプレイ31と入力デバイス32とは、タッチスクリーンとして一体で実装されてもよい。または、入力デバイス32として、ジェスチャー入力デバイスが用いられてもよい。ジェスチャー入力デバイスは、例えば、カメラと認識部とを有する。カメラはジェスチャーを含む画像を撮像し、認識部は画像を用いてジェスチャーを認識する。
[1.2 機能構成]
次に、本実施の形態におけるシステム1の機能構成について、図3を参照しながら説明する。図3は、実施の形態1におけるシステム1の機能構成図である。
クラウドサーバ10は、シーケンスマネージャ100と、デバイスマネージャ200と、を備える。装置20a~20hは、デバイス300a~300hをそれぞれ備える。端末30a~30dは、UI400a~400dをそれぞれ備える。
以下において、デバイス300a~300hの区別が不要な場合にはデバイス300と記載する。また、UI400a~400dの区別が不要な場合にはUI400と記載する。
シーケンスマネージャ100は、複数のアプリケーションを管理している。複数のアプリケーションは、例えばユーザの操作によって、アプリケーション配信プラットフォームからシーケンスマネージャ100にダウンロードされる。または、アプリケーション配信プラットフォームに含まれるアプリケーションは、シーケンスマネージャ100にダウンロードされなくてもよい。その場合、シーケンスマネージャ100のデータベースに、アプリケーション配信プラットフォームに含まれるアプリケーションが紐づけていることを示す情報が記録されてもよい。アプリケーションの詳細については後述する。
デバイスマネージャ200は、複数の施設2a~2d及び各施設2a~2dで利用されるデバイス300及びUI400を管理するためのデータベースを有する。デバイスマネージャ200は、データベースに、施設2a~2dに紐づくデバイス情報及びUI情報を記録することにより、デバイス300及びUI400を管理する。デバイス情報及びUI情報は、例えば、制御機能及び駆動機能、並びに稼働状況などを含む。例えば、デバイスマネージャ200は、デバイス300の稼働状況を管理して、デバイス300の稼働スケジュールを把握することができる。また、デバイスマネージャ200は、デバイス300のログ情報を管理してもよい。
なお、このようなデータベースは、デバイスマネージャ200の代わりにシーケンスマネージャ100が有してもよく、シーケンスマネージャ100及びデバイスマネージャ200の両方が有してもよい。
デバイス300は、装置20の制御機能及び駆動機能を有する。デバイス300は、デバイスマネージャ200からの指示に従って装置20を駆動することができる。
UI400は、ユーザに情報を提供し、ユーザから入力を受け付ける。
ここで、アプリケーションについて説明する。本実施の形態では、アプリケーション(以下、略してアプリということもある)とは、アクチュエータ22及び/又は加熱器23を駆動する複数の機能ブロック(以下、略してブロック)で規定される制御プログラムを意味する。複数のブロックの各々は、アクチュエータ22又は加熱器23を駆動するためのパラメータを含むことができる。具体的には、複数のブロックの各々は、アクチュエータ22又は加熱器23の制御を抽象化したものである。なお、アプリケーションは、アクチュエータ22及び/又は加熱器23を駆動する複数のブロックに加えて、アクチュエータ22及び/又は加熱器23を駆動しないブロックを含んでもよい。アクチュエータ22及び/又は加熱器23を駆動しないブロックの一例は、デバイス300の有するインタフェースを用いた情報表示、デバイス300の有するブザーを用いた音声出力、デバイス300の有するランプの点灯または消灯などを含む。また、ブロックは、アクチュエータ22又は加熱器23の駆動を開始する条件を含んでもよい。例えば、第1のブロック、第2のブロックを含むアプリケーションを例に説明する。ここで、第1のブロックの実行中に、第2のブロックに切り替える際に、第2のブロックに含まれる開始条件を満たしたときに、第1のブロックから第2のブロックに切り替える。また、ブロックは、開始条件ではなく、終了条件を含んでいてもよい。第1のブロックの実行中に、第2のブロックに切り替える際に、第1のブロックに含まれる終了条件を満たしたときに、第1のブロックから第2のブロックに切り替える。
図4は、実施の形態1におけるアプリケーションを規定するブロックの一例を示す。図4に示すブロック1000は、洗濯機の攪拌動作を制御するブロックであり、パラメータ1001~1006を含む。パラメータ1001は、攪拌の種類を示す情報(例えば、通常、ダンシング、揺り)を含む。パラメータ1001は、機能の種類を示すとも言い換えることができる。パラメータ1002は、ドラムの回転数を示す値を含む。パラメータ1002は、アクチュエータ22及び/又は加熱器23の駆動の強度を示すとも言い換えることができる。パラメータ1003は、ドラム内への給水量を給水後の水位で示す値を含む。パラメータ1003は、アクチュエータ22及び/又は加熱器23の駆動後の状態を示すとも言い換えることができる。パラメータ1004は、循環ポンプのオン/オフを示す値を含む。パラメータ1004は、アクチュエータ22及び/又は加熱器23を駆動するか否かを示すとも言い換えることができる。パラメータ1005は、攪拌間隔を段階的に示す情報(例えば、短、中、長)を含む。パラメータ1006は、攪拌時間を示す値を含む。
アプリケーションを規定するために、このようなブロックが複数用いられる。例えば、図5~図7に示すような複数のブロックが用いられる。
図5は、実施の形態1における洗濯機のための複数のブロックを示す。図6は、実施の形態1における電子レンジのための複数のブロックを示す。図7は、実施の形態1における炊飯器のための複数のブロックを示す。なお、図5~図7に示す複数のブロックは例示であり、洗濯機、電子レンジ及び炊飯器のためのブロックは、これらに限定されない。例えば、複数のブロックは、抽象化レベルによって階層化されてもよい。
例えば、製造者向けの階層と製造者以外向けの階層とで抽象化レベルを変更してもよい。製造者以外の例は、他の製造者向けの階層、サードパーティ向けの階層である。
この時、製造者向けの階層は、製造者以外向けの階層より抽象度が低い。抽象度が低いことは、アクチュエータ及び加熱器を駆動するパラメータに近い内容が制御されることを意味する。
一方、制作者は、ノウハウ及び安全性を担保する最小の抽象化レベルを有するブロックを製造者以外向けに提供することで、製造者以外がアプリケーションを開発可能にする。製造者は、一般ユーザに、さらに高い抽象化レベルを有するブロックを提供することで、より多くの人がアプリケーションを開発可能にできる。さらに高い抽象化レベルは、例えば、一般ユーザ自身が専門的な知識がなくても理解できる用語で規定されたブロックに対応する。専門的な知識がなくても理解できる用語は、例えば、家庭用電化製品等の機能自体に対応する内容である。具体的には、洗濯機においての「洗い」ブロック中の水量に関するパラメータとして「たっぷり」を選択した場合に、一つの具体化されたレイヤーにおいては、給水ブロックにおける水位パラメータを60mmから100mmに上げ、攪拌ブロックにおける回転数パラメータを120rpmから100rpmに下げるなどの変更が行われる。上記より、抽象度の高いレベルにおけるブロックの並べ替え及びパラメータ変更は、より抽象度の低いブロックで実現することができる。また、洗濯機、電子レンジ及び炊飯器以外の装置でも、図5~図7と同様に複数のブロックを定義することができる。これらのブロックにより、アクチュエータ及び加熱器の駆動に関する安全性、秘匿性を担保しながら、その組替、パラメータ調整によって自由にアプリケーション開発を行うことができる。
なお、製造者が他の製造者に、ノウハウ及び安全性を担保する最小の抽象化レベルを有するブロックを提供することで、他の製造者は、提供されたブロックを実現するために、さらに高い具体化レベルを有するブロックを独自で規定し実装を行うことができる。これにより、各製造者がそれぞれのノウハウ及び安全性を担保しながら、アプリのみを開発するサードパーティに対して、各製造者のアクチュエータ及び加熱器の駆動に関するアプリ開発を自由に行うことができる。
この時、他の製造者は、製造者が提供するノウハウ及び安全性を担保する最小の抽象化レベルを有するブロックに合わせた、さらに高い具体化レベルを有するブロックを開発せず、エラーを返し、製造者が提供するブロックが使用できない、または制限されたパラメータ範囲で動作することをアプリ開発者ならびにユーザに提示してもよい。具体的には、洗濯機においての「攪拌」ブロック中のモータ回転に関するパラメータとして、「高速」を選択した場合に、製造者の洗濯機では、「高速」を実現するための150rpmというパラメータが実現可能であるのに対し、他の製造業者の洗濯機ではモータの特性上、120rpmまでしか回転できない場合に、エラーまたは限界値の120rpmで実現する旨をアプリ開発者又はユーザに提示する。
[1.3 処理]
次に、以上のように構成されたシステム1の処理について図8を参照しながら説明する。図8は、実施の形態1におけるシステム1のシーケンス図である。
[1.3.1 準備フェーズF100]
まず、準備フェーズF100について説明する。
(ステップS110)
シーケンスマネージャ100は、デバイスマネージャ200にシーケンスマネージャ情報を送信する。このシーケンスマネージャ情報の送信は、例えばシステム管理者の命令により行われる。デバイスマネージャ200は、受信したシーケンスマネージャ情報を例えばシーケンスマネージャデータベースに登録する。なお、シーケンスマネージャ情報がシーケンスマネージャデータベースに予め登録されている場合は、このステップはスキップされてもよい。
シーケンスマネージャ情報は、例えばシーケンスマネージャ100の識別子及び/又はアドレス(例えばURL(Uniform Resource Locator)、IP(Internet Protocol)アドレス等)を含む。さらに、シーケンスマネージャ情報は、任意の情報を含んでもよい。
(ステップS112)
デバイス300は、デバイスマネージャ200にデバイス情報1101を送信する。このデバイス情報1101の送信は、例えばデバイス300がコンピュータネットワークに接続されたときに行われる。デバイスマネージャ200は、受信したデバイス情報1101をデバイスデータベース1100に登録する。なお、デバイス情報1101がデバイスデータベース1100に予め登録されている場合は、このステップはスキップされてもよい。
なお、デバイス情報1101は、UI400に送信されてから、UI400を介してデバイスマネージャ200に登録されてもよい。
デバイス情報1101は、デバイス300の識別子及び/又はアドレスを含む。さらに、デバイス情報1101は、任意の情報を含んでもよい。図9は、実施の形態1におけるデバイスデータベースの一例を示す。図9のデバイスデータベース1100には、デバイス情報1101を含む複数のデバイス情報が登録されている。各デバイス情報は、デバイスIDと、アドレスと、種別と、製造者名と、型番と、アクチュエータ/加熱器と、劣化レベルと、を含む。アクチュエータ/加熱器は、デバイス300を構成するアクチュエータ22及び/又は加熱器23の識別情報である。劣化レベルは、デバイス300を構成するアクチュエータ22及び/又は加熱器23が劣化しているか否かを示す劣化情報の一例である。ここでは、劣化レベルは、値が増加すればより劣化していることを示す。デバイス情報1101に、実行可能なブロックの情報が含まれていてもよい。実行可能なブロックに関する情報とは、データベースに含まれるブロックが実行可能又は実行不可能が対応付けられた情報でもよいし、実行可能なブロックのみの情報でもよい。また、ブロックが実行可能か否かは、デバイス情報1101に含まれるアクチュエータ/加熱器などの情報に基づいて予め準備され得る。
なお、デバイス情報1101は、施設2a~2dを特定可能な情報を含んでもよい。
(ステップS114)
UI400は、デバイスマネージャ200にUI情報を送信する。このUI情報の送信は、例えばユーザの指示により行われる。デバイスマネージャ200は、受信したUI情報を例えばUIデータベースに登録する。なお、UI情報がUIデータベースに予め登録されている場合は、このステップはスキップされてもよい。
UI情報は、例えばUI400の識別子及び/又はアドレスを含む。さらに、UI情報は、任意の情報を含んでもよい。
なお、UI情報は、施設2a~2dを特定可能な情報を含んでもよい。
以上の処理により、シーケンスマネージャ100、デバイスマネージャ200、デバイス300及びUI400は、互いに紐づけられ、互いに接続を確立することができる。このより、準備フェーズF100が終了する。
[1.3.2 アプリ実行前フェーズF200]
次に、アプリ実行前フェーズF200について説明する。なお、アプリ実行前フェーズF200の前には、UI400を介したユーザからの指示に従って、アプリケーション配信プラットフォームからシーケンスマネージャ100にアプリケーションがダウンロードされている。このようにシーケンスマネージャ100にアプリケーションがダウンロードされた状態で以下の処理が行われる。
(ステップS210)
UI400は、ユーザからアプリ実行要求を受け付け、アプリケーションの識別情報を含むアプリ実行要求をシーケンスマネージャ100に送信する。例えば、ユーザは、UI400を介して、シーケンスマネージャ100にダウンロードされている複数のアプリケーションの中からアプリケーションを選択し、選択したアプリケーションの実行を指示する。
なお、UI400からシーケンスマネージャ100に送信されるアプリ実行要求は、施設2a~2dを特定可能な情報とセットで送信される。
なお、アプリ実行要求は、ユーザから明示的に受け付けられなくてもよい。例えば、ユーザの行動又は状態を検出し、検出結果に基づいて自動的にアプリ実行要求がシーケンスマネージャ100に送信されてもよい。
(ステップS212)
シーケンスマネージャ100は、アプリ実行要求によって識別されたアプリケーションの実行内容宣言をデバイスマネージャ200に送信する。実行内容宣言は、実行するアプリケーションを規定する複数のブロックの情報及び施設2a~2dを特定可能な情報を含む。
図10は、実施の形態1における実行内容宣言の一例を示す図である。図10には、図5に示す洗濯機のための複数のブロックを組み合わせて規定されたアプリケーションのための実行内容宣言1200が表されている。実行内容宣言1200は、複数のブロック1201、及び、各ブロック1201の実行に必要なデバイスに関する情報1202、及び、各ブロック1201が実行される順番の情報1203を含む。
なお、実行内容宣言1200は、デバイスに関する情報1202を含まなくてもよい。その場合、複数のブロック1201の情報から、受け取った施設情報が示す施設で該当ブロックを実行可能なデバイスを、デバイスマネージャ200が検索してデバイス割付けを行う必要がある。
なお、図10では、デバイスに関する情報1202は、デバイス300の型番を示しているが、これに限定されない。デバイスに関する情報1202は、ブロックに割付可能なデバイス300の条件を示すことができれば、どのような情報であってもよい。例えば、デバイスに関する情報1202は、複数の型番を含んでもよいし、デバイスの種別、使用目的、配置場所、又は、これらの任意の組み合わせのみを含んでもよい。
(ステップS214)
デバイスマネージャ200は、実行内容宣言に含まれる各ブロックに対して、施設2a~2dを特定可能な情報を基にして、デバイスマネージャ200に紐付けられているデバイス300を割り付ける。例えば、デバイスマネージャ200は、図10に示す複数のブロック1201の各々に、図9のデバイスデータベース1100に、受け取った施設情報が示す施設に接続済として登録されている、型番WM-0001を有するデバイスDEV001を割り付ける。なお、デバイス300の稼働状態又はクラウドへの接続状態が管理されている場合には、稼働中のデバイス300の割り付けが禁止されてもよい。
なお、例えば図10に示す複数のブロックが、受け取った施設情報が示す施設に接続済として登録されていない場合、すなわち、該当施設において対象デバイスが存在していない場合、デバイスマネージャ200は実行内容宣言されたアプリケーションの実行が不可であることをシーケンスマネージャ100に通知する。
(ステップS215)
デバイスマネージャ200は、デバイス割り付けの結果をデバイス300に通知する。これにより、アプリケーションに含まれる複数のブロックが、それぞれ割り付けられたデバイス300に送信される。
(ステップS216)
デバイス300は、ブロックの実行前にブロックを確認する。つまり、デバイス300は、ブロックを実行する前に、ブロックが実行されたときにデバイス300で問題が生じないかをチェックする。例えばデバイス300は、安全及び/又は効率上の問題をチェックする。
そして、デバイス300は、確認結果に基づいて、ブロックを変更する。これにより、問題が生じないようにブロックが修正される。
このような実行前確認処理について、図11を参照しながら、さらに詳細に説明する。図11は、実施の形態1における実行前確認処理のフローチャートを示す。
(ステップS2165)
デバイス300は、アプリケーションに対応するルールを取得する。ここでは、ルールは、所定の2以上のブロックの1つが実行される場合に当該所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止する。例えば、デバイス300は、ルールデータベースを参照して、所定の2以上のブロックの組み合わせを取得する。ルールデータベースは、例えばデバイス300に含まれてもよいし、シーケンスマネージャ100又はデバイスマネージャ200に含まれてもよい。
ルールとしては、例えば、第2のブロックが実行される前に第1のブロックが実行されないこと禁止するルールを用いることができる。より具体的には、ルールとして、例えば、アプリケーションの開始から第2のブロックが実行される前までに第1のブロックが実行されないことを禁止するルールを用いることができる。このような第1のブロックには、例えば、第2のブロックを実行可能な環境に設定するためのブロックを用いることができる。具体的には、第1のブロックとして、第2のブロック(例えば脱水ブロック)が実行される前に禁水環境を実現するための排水ブロックを用いることができる。
また、ルールとしては、例えば、第2のブロックが実行された後に第3のブロックが実行されないことを禁止するルールを用いることもできる。より具体的には、ルールとして、例えば、第2のブロックが実行された後からアプリケーションの終了までに第3のブロックが実行されないことを禁止するルールを用いることができる。このような第3のブロックには、例えば、第2のブロックの実行により変化した環境を第2のブロックの実行前の環境に戻すためのブロックを用いることができる。具体的には、第3のブロックとして、第2のブロック(例えば乾燥ブロック)の実行により上昇した温度を当該第2のブロックの実行前の温度に戻すための送風ブロックを用いることができる。
図12は、実施の形態1におけるルールデータベースの一例を示す。図12のルールデータベース1300には、ルール1301及び1302が登録されている。ルール1301及び1302の各々は、所定の2以上のブロックの組み合わせの情報を有する。例えば、ルール1301は、脱水ブロックが実行される前に排水ブロックが実行されないことが禁止されることを示す。また例えば、ルール1302は、乾燥ブロックの後に送風ブロックが実行されないことが禁止されることを示す。
このような所定の2以上のブロックの組み合わせとしては、例えば筐体21の内部空間、アクチュエータ22又は加熱器23を耐久温度に到達させないためのブロックの組み合わせが予め定められる。耐久温度とは、定格温度を意味し、許容される最大温度を示す。したがって、所定の2以上のブロックの組み合わせを用いてアクチュエータ22又は加熱器23が駆動されれば、筐体21の内部空間、アクチュエータ22又は加熱器23の温度は、許容されない温度に到達しない。つまり、ルールは、筐体21の内部空間、アクチュエータ22又は加熱器23を耐久温度に到達させないために所定の2以上のブロックが組み合わせて実行されることを担保するためのルールである。
なお、図12では、ルール1301及び1302の各々は、2つのブロックの組み合わせを示しているが、これに限定されない。例えば、ルールは、2つのブロックの組み合わせに加えて、当該2つのブロックの少なくとも一方のパラメータの範囲を示してもよい。さらには、ルールは、多種多様なアプリケーションの開発に向けて広い範囲でブロックを利用可能に規定される。
例えば、アクチュエータ22又は加熱器23は、筐体21の内部空間などのデバイス300の環境に応じて安全に駆動できるルールが変わり、ルールはアクチュエータ22又は加熱器23自体の性能のみに依存しない場合がある。したがって、いずれの環境でも安全に駆動するために、安全性を考慮する比重の高いルールになり、多種多様なアプリケーションの開発の余地が低減することになる。そこで、ルールは、アプリケーションと独立して、デバイス300等の情報と対応付けられてもよい。そのようなルールが用いられることで、安全性及び多種多様なアプリケーションの開発を両立できる。
ルールは、アクチュエータ22又は加熱器23が安全に駆動できる範囲に関連する。安全に駆動できる範囲は、ブロックの開始条件又は終了条件を考慮された範囲であってもよい。第1のブロックと、第1のブロックの後に実行される第2のブロックを例に考える。第2のブロックの開始条件に達するまで、第1のブロックを実行することで、アクチュエータ22又は加熱器23の安全性に影響がある負荷かかる場合を想定したルールが設定され得る。つまり、ルールは、アクチュエータ22又は加熱器23の性能、ブロックの開始条件又は終了条件などに依存する。
ルール1301及び1302の各々は、さらに、種別と、製造者名と、を有する。これにより、デバイス300は、ルールデータベース1300から、ブロックで駆動されるアクチュエータ22又は加熱器23に対応するルールを取得することができる。例えば、デバイス300は、図12のルールデータベース1300を参照して、WM-0001のためのルール1301及び1302を取得する。
(ステップS2166)
デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当するか否かを判定する。
例えば、ルールが第2のブロックが実行される前に第1のブロックが実行されないことを禁止する場合、アプリケーションが第2のブロックを含み、かつ、当該第2のブロックの前に第1のブロックを含まなければ、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当すると判定する。具体的には、アプリケーションが第2のブロックを含み、かつ、第1のブロックを含まない場合に、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当すると判定する。また、アプリケーションが第2のブロックを含み、かつ、当該第2のブロックの後のみに第1のブロックを含む場合に、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当すると判定する。一方、アプリケーションが第2のブロックを含み、かつ、当該第2のブロックの前に第1のブロックを含む場合に、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当しないと判定する。また、アプリケーションが第1のブロック及び第2のブロックをともに含まない場合に、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当しないと判定する。また、アプリケーションが第1のブロックを含み、かつ、第2のブロックを含まない場合に、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当しないと判定する。
また例えば、ルールが第2のブロックが実行された後に第3のブロックが実行されないことを禁止する場合、アプリケーションが第2のブロックを含み、かつ、当該第2のブロックの後に第3のブロックを含まなければ、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当すると判定する。具体的には、アプリケーションが第2のブロックを含み、かつ、第3のブロックを含まない場合に、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当すると判定する。また、アプリケーションが第2のブロックを含み、かつ、当該第2のブロックの前のみに第3のブロック含む場合に、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当すると判定する。一方、アプリケーションが第2のブロックを含み、かつ、当該第2ブロックの後に第3のブロックを含む場合に、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当しないと判定する。また、アプリケーションが第2のブロック及び第3のブロックをともに含まない場合に、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当しないと判定する。また、アプリケーションが第3のブロックを含み、かつ、第2のブロックを含まない場合に、デバイス300は、アプリケーションに含まれる複数のブロックがルールに該当しないと判定する。
ここで、複数のブロックがルールに該当しないと判定された場合(S2166のNo)、デバイス300は、以降のステップS2167をスキップして実行前確認処理を終了する。一方、複数のブロックがルールに該当すると判定された場合(S2166のYes)、デバイス300は、次のステップS2167に進む。
(ステップS2167)
デバイス300は、アプリケーションを変更して実行前確認処理を終了する。アプリケーションの変更とは、(i)複数のブロックに新たなブロックを追加すること、(ii)複数のブロックの順番を変更すること、(iii)複数のブロックのいずれかを削除すること、又は、(iv)それらの任意の組み合わせを意味する。これらのアプリケーションの変更方法は、ルールに定義されてもよい。
このようなアプリケーションの変更の具体例について図13及び図14を参照しながら説明する。
図13は、実施の形態1におけるアプリケーションの変更の一例を示す。図13では脱水ブロック(第2のブロック)の前に排水ブロック(第1のブロック)が追加されている。これにより、脱水ブロックが実行される前に洗濯機内から水を排出することができ、脱水時におけるアクチュエータ22の安全な駆動を実現することができる。
図14は、実施の形態1におけるアプリケーションの変更の一例を示す。図14では、乾燥ブロック(第2のブロック)の後に送風ブロック(第3のブロック)が追加されている。これにより、乾燥によって洗濯機の温度が上昇した後に送風によって洗濯機の温度を低下させることができ、ユーザが洗濯機でやけどすることを抑制することができ、洗濯機の安全性を向上させることができる。
なお、ここでは、洗濯機のためのアプリケーションの変更について説明したが、他の装置についても同様にアプリケーションを変更することができる。
例えば、炊飯器のためのアプリケーションに、スチーム機能を活用する蒸らしブロック(第2のブロック)が含まれ、かつ、当該蒸らしブロックの前にスチームあたためブロック(第1のブロック)が含まれていない場合、蒸らしブロックが実行される10分前に該当するブロックの前にスチームあたためブロックが追加されてもよい。これにより、蒸らしブロックの実行前にスチームヒータを温めることができ、蒸らしブロックの実行時にスチーム照射をスムーズに行うことが可能となる。
また例えば、電子レンジのためのアプリケーションに、蒸すブロック(第2のブロック)が含まれ、かつ、当該蒸すブロックの前にスチームあたためブロック(第1のブロック)が含まれていない場合、蒸すブロックが実行される10分前に該当するブロックの前に、スチームあたためブロックが追加されてもよい。これにより、蒸すブロックの実行前にスチームヒータを温めることができ、蒸すブロックの実行時にスチーム照射をスムーズに行うことが可能となる。また、電子レンジのためのアプリケーションに、オーブンブロック(第2のブロック)が含まれ、かつ、当該オーブンブロックの後に送風ブロック(第3のブロック)が含まれていない場合、オーブンブロックの後に送風ブロックが追加されてもよい。これにより、オーブンブロックの実行によって非常に熱くなった庫内を送風ブロックの実行によって冷ますことができ、次のブロック実行を早めることができる。
(ステップS217)
デバイス300は、実行前確認の結果をデバイスマネージャ200に送信する。ブロックが変更されている場合には、変更されたブロックがデバイスマネージャ200に送信されてもよい。
(ステップS218)
デバイスマネージャ200は、デバイス割り付けの結果をシーケンスマネージャ100に回答する。また、実行前確認においてブロックが変更されている場合には、変更されたブロックを含むアプリケーションがシーケンスマネージャ100に送信されてもよい。
(ステップS220)
シーケンスマネージャ100は、デバイスマネージャ200からの割付結果通知を受けて、UI400を介してユーザに実行準備完了を通知する。
(ステップS222)
UI400は、アプリケーションが実行されるデバイスの一覧を表示するとともに、ユーザからアプリケーション実行の確認の入力を受け付けるためのグラフィカルユーザインタフェース(GUI)を表示する。なお、UI400は、ユーザからデバイスの割り付けの変更を受け付けてもよい。また、UI400は、デバイスの一覧を表示しなくてもよい。
(ステップS224)
UI400は、ユーザから実行確認の入力を受けて、デバイスマネージャ200にアプリ開始指示を送信する。デバイスマネージャ200は、アプリ開始指示をシーケンスマネージャ100に転送する。
なお、ステップS220、S222、及びS224は、アプリケーションが実行される前にユーザに改めて情報を提供しているが、ユーザの作業が増える可能性があるため、省略されてもよい。
以上により、アプリ実行前フェーズF200が終了する。
[1.3.3 アプリ実行フェーズF300]
次に、アプリ実行フェーズF300について説明する。
(ステップS310)
シーケンスマネージャ100は、アプリ開始指示を受けて、アプリケーションに含まれる複数のブロックの中から最初のブロック(第1ブロック)を選択する。そして、シーケンスマネージャ100は、選択した第1ブロックの実行指示をデバイスマネージャ200に送信する。
なお、複数のブロックが連続して動作される場合、シーケンスマネージャ100は、複数のブロックの実行指示をまとめてデバイスマネージャ200に送信してもよい。
デバイスマネージャ200は、シーケンスマネージャ100から受信した第1ブロックの実行指示に基づいて、第1ブロックに割り付けられたデバイス300に第1ブロックの実行指示を送信する。
(ステップS312)
デバイスマネージャ200は、第1ブロックの実行指示を受けて、各デバイスのスケジュール(使用予定時間)を更新する。
(ステップS314)
デバイス300は、第1ブロックの実行指示を受けて、第1ブロックを実行する。
(ステップS316)
デバイス300は、第1ブロックの実行が完了したときに、完了通知をデバイスマネージャ200に送信する。なお、第1ブロックの実行中にエラーが発生した場合には、デバイス300は、エラー情報をデバイスマネージャ200に送信してもよい。また、デバイス300は、第1ブロックの実行中に、イベント情報をデバイスマネージャ200に送信してもよい。イベント情報としては、例えば、センサの出力値又は機器操作等を用いることができるが、これに限定されない。デバイスマネージャ200は、デバイス300から受信した完了通知及び/又は各種情報をシーケンスマネージャ100に転送する。
(ステップS318)
シーケンスマネージャ100は、第1ブロックの完了通知を受けて、アプリケーションの進捗を更新し、次のブロック(第2ブロック)を選択する。また、シーケンスマネージャ100は、エラー情報を受信した場合に、エラー情報に対応する処理(例えば、1つ前のブロックに戻る、最初のブロックに戻る、待機等)を実行する。エラー情報に対応する処理の情報は、例えば、シーケンスマネージャ100に予め保持されてもよいし、UI400を介してユーザから受け付けられてもよい。また、シーケンスマネージャ100は、イベント情報を受信した場合に、イベント情報に対応する処理を実行する。例えば、イベント情報に水位センサの出力値が含まれる場合、シーケンスマネージャ100は、実行中のブロックに含まれる水位を表示するための水位パラメータを更新する。
(ステップS320)
シーケンスマネージャ100は、選択した第2ブロックの実行指示をデバイスマネージャ200に送信する。
なお、第2ブロックの実行指示は、第1ブロックの実行指示(S310)と同一のデバイスに対する指示でもよいし、異なるデバイスへの指示でもよい。
なお、第2ブロックの実行指示は、第1ブロックの実行指示と同様に、複数のブロックの実行指示をまとめてデバイスマネージャ200に送信してもよい。
以降の処理は第1ブロックのための処理(S312~S318)と同様であるので、図示及び説明を省略する。アプリケーションに含まれるブロックが順に実行され、最後のブロックの実行が完了すれば、アプリ実行フェーズF300が終了する。
なお、ここでは、ブロックの実行は1つずつ順に指示されているが、これに限定されない。例えば、同一のデバイスが割り付けられた複数のブロックの実行は、まとめて指示されてもよい。その場合、あらかじめ各ブロックが機能実行のパラメータ範囲を満たすかの確認を行ったり、変更に対応するブロックを実行前にデバイス側にダウンロードしたりしてもよい。また、例えば、複数のデバイスに対して各々のブロック実行指示を行ってもよい。
[1.4 効果など]
以上のように、ブロックを含むアプリケーションとルールデータベースとにより、多様多種なアプリケーションを開発可能な環境を提供し、その環境下で自由に開発したアプリケーションに対して、物理的に運動するアクチュエータ22、又は熱エネルギーを出力する加熱器23を安全に駆動することを可能にしている。言い換えると、アプリケーションを自由に開発可能な環境を提供するとともに、アプリケーションと独立して安全性を担保するための機能を提供できる。その結果、例えば、自由度の高い多様多種なアプリケーションの開発と、安全性を担保するためのルールデータベースの開発とを並行して作成することが可能になり、多様多種なアプリケーションを早期に開発することを可能にすることができる。
また、アプリケーションの提供後においても、ルールデータベースを変更することで、より安全性を担保したアプリケーションへの変更も可能になる。また、事前に製造者が想定しない状況の改善が必要になった場合においても、多様多種なアプリケーション自体を変更せずとも、アプリケーションとは独立して、ルールデータベースを規定していることで、ルールデータベースを更新することで、全てのアプリケーションへの対応が可能になる。
アプリケーション自体を変更せずに、アプリケーションが実行されたときの状態を検知することでエラー処理のルールデータベースを保持する対処方法も考えられる。しかし、この対処方法は、常にエラーの状態になった後に対処することになり、家電に負荷がかかる状況、又は安全性が担保できない状況になることを許容することを意味する。そこで、アプリケーションとは独立にルールデータベースを保有し、ルールデータを参照してアプリケーションの内容を変更することで、安全性を担保することを可能にしている。
本実施の形態における装置20は、アクチュエータ22及び加熱器23の少なくとも1つと、アクチュエータ22及び加熱器23の少なくとも1つを制御する制御部24と、を備え、制御部24は、アクチュエータ22及び加熱器23の少なくとも1つを駆動する複数のブロックで規定されたアプリケーションを取得し、所定の2以上のブロックの1つが実行される場合に所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止するルールを参照して、アプリケーションに含まれる複数のブロックがルールに該当する場合、アプリケーションを変更し、変更されたアプリケーションに基づいて、アクチュエータ22及び加熱器23の少なくとも1つを駆動する。
これによれば、複数のブロックで規定されたアプリケーションに基づいてアクチュエータ22及び/又は加熱器23を駆動することができる。したがって、装置20の制御を抽象化したブロックを用いたアプリケーションの開発が可能となり、多種多彩なアプリケーションを製造者だけではなく、サードパーティも開発することができ、これらのアプリケーションを装置20で簡単に実行することが可能となる。さらに、アプリケーションが、所定の2以上のブロックの1つが実行される場合に所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止するルールに該当する場合に、アプリケーションに基づいてアクチュエータ22及び/又は加熱器23が駆動される前に、アプリケーションを変更することができる。したがって、所定の2以上のブロックの1つが所定の2以上のブロックの残りの少なくとも1つと組み合わせて実行されることを担保することができる。つまり、もしアプリケーション開発者が誤って単独での実行が許容されないブロックを単独で実行するよう指示を行った場合でも、装置20を安全に制御することができないアプリケーションが実行されることを抑制することができる。したがって、アプリケーション開発者は、アクチュエータ22及び/又は加熱器23の安全性の担保よりもユーザに適することを重視したアプリケーションを作成した場合でも、アプリケーションで制御される装置20の安全性を向上させることができる。
また例えば、本実施の形態における装置20において、制御部24は、(a)複数のブロックに新たなブロックを追加し、(b)複数のブロックの順番を変更し、又は、(c)複数のブロックのうちいずれかのブロックを削除することで、アプリケーションを変更してもよい。
より具体的には、例えば、本実施の形態における装置20において、アプリケーションは、複数のブロックのそれぞれが実行される順番の情報を含み、所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、ルールは、第2のブロックが実行される前に、第1のブロックが実行されないことを禁止し、制御部24は、アプリケーションが第2のブロックを含み、かつ、第2のブロックの前に第1のブロックを含まない場合に、第2のブロックの前に、第1のブロックを追加することで、アプリケーションを変更してもよい。
また例えば、本実施の形態における装置20において、アプリケーションは、複数のブロックのそれぞれが実行される順番の情報を含み、所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、ルールは、第2のブロックが実行される前に、第1のブロックが実行されないことを禁止し、制御部24は、アプリケーションが、第1のブロック及び第2のブロックを含み、かつ、第2のブロックの前に第1のブロックを含まない場合に、第1のブロックの順番を第2のブロックの順番よりも前に変更することで、アプリケーションを変更してもよい。
また例えば、本実施の形態における装置20において、アプリケーションは、複数のブロックのそれぞれが実行される順番の情報を含み、所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、ルールは、第2のブロックが実行される前に、第1のブロックが実行されないことを禁止し、制御部24は、アプリケーションが第2のブロックを含み、かつ、第2のブロックの前に第1のブロックを含まない場合に、第2のブロックを削除することで、アプリケーションを変更してもよい。
これらによれば、アプリケーションが実行される前に、新たなブロックを追加、ブロックの順番を変更、又は、ブロックを削除することで、第2のブロックの前に第1のブロックが実行されることを担保することができる。したがって、アプリケーションの開発者は、アクチュエータ22及び加熱器23が安全に駆動することを考慮する優先度を下げて自由にアプリケーションを開発ができる。さらに、アクチュエータ22及び加熱器23を制御する装置20に組み込まれるソフトウェアの開発者は、アプリケーション一つ一つの安全性を毎回チェックすることなくブロックの実行を許可することができる。
また例えば、本実施の形態における装置20において、アプリケーションは、複数のブロックのそれぞれが実行される順番の情報を含み、所定の2以上のブロックは、第2のブロック及び第3のブロックを含み、ルールは、第2のブロックが実行された後に、第3のブロックが実行されないことを禁止し、制御部24は、アプリケーションが第2のブロックを含み、かつ、第2のブロックの後に第3のブロックを含まない場合に、第2のブロックの後に、第3のブロックを追加することで、アプリケーションを変更してもよい。
また例えば、本実施の形態における装置20において、アプリケーションは、複数のブロックのそれぞれが実行される順番の情報を含み、所定の2以上のブロックは、第2のブロック及び第3のブロックを含み、ルールは、第2のブロックが実行された後に、第3のブロックが実行されないことを禁止し、制御部24は、アプリケーションが、第2のブロック及び第3のブロックを含み、かつ、第2のブロックの後に第3のブロックを含まない場合に、第3のブロックの順番を第2のブロックの順番よりも後に変更することで、アプリケーションを変更してもよい。
また例えば、本実施の形態における装置20において、アプリケーションは、複数のブロックのそれぞれが実行される順番の情報を含み、所定の2以上のブロックは、第2のブロック及び第3のブロックを含み、ルールは、第2のブロックが実行された後に、第3のブロックが実行されないことを禁止し、制御部24は、アプリケーションが第2のブロックを含み、かつ、第2のブロックの後に第3のブロックを含まない場合に、第2のブロックを削除することで、アプリケーションを変更してもよい。
また例えば、本実施の形態における装置20において、アプリケーションは、複数のブロックの情報とそれぞれが実行される順番の情報を含み、ルールは、複数のブロックの中で少なくとも一つのブロックが実行できない情報を含む場合に、エラー情報として、本アプリケーションが開発できないこと、または、実行できないブロックの情報を開発者に提示してもよい。
これらによれば、アプリケーションが実行される前に、新たなブロックを追加、ブロックの順番を変更、又は、ブロックを削除することで、第2のブロックの後に第3のブロックが実行されることを担保することができる。したがって、アプリケーションの開発者は、アクチュエータ22及び加熱器23が安全に駆動することを考慮する優先度を下げて自由にアプリケーションを開発ができる。さらに、アクチュエータ22及び加熱器23を制御する装置20に組み込まれるソフトウェアの開発者は、アプリケーション一つ一つの安全性を毎回チェックすることなくブロックの実行を許可することができる。
また例えば、本実施の形態における装置20において、ルールは、アクチュエータ22及び加熱器23の少なくとも1つを耐久温度に到達させないために所定の2以上のブロックが組み合わせて実行されることを担保するためのルールであってもよい。
これによれば、アプリケーションが実行されたときにアクチュエータ22及び/又は加熱器23が耐久温度に到達することを抑制することができ、アプリケーションで制御される装置20の安全性を向上させることができる。
また例えば、本実施の形態における装置20は、内部空間を有する筐体21を備えてもよく、第1のルールは、内部空間を耐久温度に到達させないために所定の2以上のブロックが組み合わせて実行されることを担保するためのルールであってもよい。
これによれば、アプリケーションが実行されたときに筐体21の内部空間が耐久温度に到達することを抑制することができ、アプリケーションで制御される装置20の安全性を向上させることができる。
(実施の形態1の変形例)
なお、上記実施の形態1では、システム1の処理について図8を参照しながら説明したが、処理の流れについてはこれに限定されない。特に、詳細に説明している実行前確認(S216)について、実行前確認が行われるタイミング及び主体となるモジュールはこれに限定されない。そこで、システム1のシーケンス図のいくつかの変形例について、図15A~図15Eを参照しながら具体的に説明する。
図15Aは、実施の形態1の変形例1におけるシステム1のシーケンス図である。図15Aでは、実行前確認(S216)は、デバイス300が実行指示を受けて(S310)ブロックを実行する(S314)直前に、デバイス300によって行われる。
これにより、デバイス300に組み込まれるソフトウェアは、ブロックの実行直前に実行前確認を行うというシンプルな構成とすることができる。すなわち、ステップS215及びS217を省略することができる。その結果、それらの処理を行うための機能及び通信APIをデバイス300に組み込む必要がなくなり、デバイス300に搭載されるマイコンの使用メモリ等を低減することが可能となる。
なお、実行前確認の結果がデバイスマネージャ200及び/又はUI400に通知されてもよい。例えば、実行前確認を行った結果としてパラメータの変更又はブロックの実行停止指示が行われた場合に、デバイスマネージャ200又はUI400に確認結果が通知されてもよい。
図15Bは、実施の形態1の変形例2におけるシステム1のシーケンス図である。図15Bでは、実行前確認(S216)は、デバイスマネージャ200が割付結果通知(S218)を行う際に、そのままデバイスマネージャ200によって行われる。
これにより、デバイス300に組み込まれるソフトウェアは、実行前確認(S216)の機能を含まなくてもよい。したがって、デバイス300が有するメモリの使用を抑えることができ、デバイス300のコストダウンにつながる。
また、上記実施の形態1では、デバイス300によるブロック実行(S314)について、クラウドサーバ10に実装されたシーケンスマネージャ100からの指示によって行われる処理の流れを説明したが、ブロック実行(S314)が行われる形態についても、これに限定されない。
例えば、シーケンスマネージャ100からの通知内容を、デバイス300内のメモリに保存し、装置20が有するUI又は端末30が有するUI400を通じたユーザからの直接の指示により、ブロックが実行されてもよい。すなわち、アプリケーションをデバイス内にダウンロードしておいて、ユーザが任意のタイミングでアプリケーションを実行する形態としてもよい。
図15Cは、実施の形態1の変形例3におけるシステム1のシーケンス図である。図15Cでは、アプリ実行フェーズF300において、シーケンスマネージャ100からデバイス300に、デバイス300で実行される1以上のブロックが通知される(S310C)。そして、デバイス300は、通知された1以上のブロックをメモリに保存する(S311C)。
その後、デバイス300は、ユーザから、保存された1以上のブロックの実行の指示を受け付け(S312C)、1以上のブロックを第1ブロックから順に実行する(S314)。
以上のように、ブロックをデバイス300に保存することで、デバイスマネージャ200とデバイス300との通信を介さずにデバイス300の制御が行えるため、クラウドサーバ10と装置20間の通信が不安定になることによってデバイス300の動作が停止したり遅延が生じたりするリスクを低減することができる。そのため、本変形例は、クラウドサーバ10との通信の信頼性が低い環境において、及び/又は、アプリケーション実行中のデバイスの動作停止や遅延が許容されないデバイス300において、より効果的である。
なお、変形例3においても、実施の形態1と同様に、実行前確認(S216)は重要な意味を有するが、実行前確認(S216)が行われるタイミングや主体となるモジュールは図15Cに限定されない。すなわち、変形例3は、変形例1又は2と組み合わされてもよい。
図15Dは、実施の形態1の変形例4におけるシステム1のシーケンス図である。変形例4は、変形例1と変形例3との組み合わせに相当する。変形例4では、図15Dに示すように、実行前確認(S216)は、デバイス300が実行指示を受けて(S312C)ブロックを実行する(S314)直前にデバイス300によって行われる。
ブロックをデバイス300にダウンロードしておいて、ユーザが任意のタイミングでブロックを実行する場合、ブロックをダウンロードするタイミングと実行するタイミングが大きくずれる可能性が高まる。すなわち、ブロックをデバイス300にダウンロードしてから数日後、数か月後、又は数年後等にブロックが実行される場合が考えられる。その場合、ブロックがダウンロードされてからブロックが実行されるまでの間にデバイス300の劣化レベル等が変わる恐れもある。そのため、ブロックの実行が劣化レベルの影響を受けるデバイス300では、ブロックが実行される直前にデバイス300によって実行前確認が行われることで、劣化レベルに応じた実行前確認が可能となる。
図15Eは、実施の形態1の変形例5におけるシステム1のシーケンス図である。変形例5は、変形例2と変形例3との組み合わせに相当する。変形例5では、図15Eに示すように、実行前確認(S216)は、デバイスマネージャ200が割付結果通知(S218)を行う際に、そのままデバイスマネージャ200によって行われる。
(実施の形態2)
次に、実施の形態2について説明する。本実施の形態では、アプリケーションが認証済みである場合に実行前確認がスキップされる点が上記実施の形態1と主として異なる。以下に、上記実施の形態1と異なる点を中心に本実施の形態について説明する。
なお、本実施の形態におけるシステム1のハードウェア構成及び機能構成は、上記実施の形態1と同様であるので、図示及び説明を省略する。
[2.1 処理]
本実施の形態では、上記実施の形態1における実行前確認のステップS216がステップS216Aに代わる点を除いて、上記実施の形態1の処理と同様である。したがって、実行前確認処理のステップS216Aについて図16を参照しながら説明する。
図16は、実施の形態2における実行前確認処理のフローチャートを示す。
(ステップS2161A)
デバイス300は、アプリ認証情報を取得する。アプリ認証情報は、アプリケーションが認証済みである場合に認証済みであることを示す情報を含む。
アプリケーションの認証は、例えばアプリケーションの品質を保証するための仕組みであり、アプリケーションの安全性及び/又は同一性(改ざんされていないこと)などの確認を可能とする。認証情報の付与されているアプリケーションの一例を説明する。アプリケーションのコードの変更履歴がパラメータ範囲の変更が行われなかったことを示す場合、アプリケーションに認証済みであることを示す情報が対応付けられている。
(ステップS2162A)
デバイス300は、取得されたアプリ情報に基づいて、アプリケーションが認証済みであるか否かを判定する。ここで、アプリケーションが認証済みであると判定された場合(S2162AのYes)、デバイス300は、以降のステップS2165~ステップS2167をスキップして実行前確認処理を終了する。一方、アプリケーションが認証済みではないと判定された場合(S2162AのNo)、デバイス300は、次のステップS2165に進む。
[2.2 効果など]
以上のように、本実施の形態における装置20は、アクチュエータ22及び加熱器23の少なくとも1つと、アクチュエータ22及び加熱器23の少なくとも1つを制御する制御部24と、を備え、制御部24は、アクチュエータ22及び加熱器23の少なくとも1つを駆動する複数のブロックで規定され、かつ認証済みか否かを示す情報を含むアプリケーションを取得し、アプリケーションが認証済みであることを示す情報を含まない場合、所定の2以上のブロックが組み合わせて実行されることを示すルールを参照して、アプリケーションに含まれる複数のブロックがルールに該当しない場合、アプリケーションを変更し、変更されたアプリケーションに基づいて、アクチュエータ22及び加熱器23の少なくとも1つを駆動する。
これによれば、実施の形態1と同様の効果を実現することができる。さらに、アプリケーションが認証済みでない場合に、アプリケーションの変更を伴う処理を行うことができ、アプリケーションが認証済みである場合に処理負荷の軽減を図ることができる。したがって、全てのアプリケーションに対するブロックの組み合わせに対する判定処理を行う必要は無く、認証を行うことによる管理によって、処理負荷の軽減とともに、ブロックの組み合わせに関する設計の基準ができ、アプリケーション開発者にとっては、より容易かつ安全な設計が可能となる。
また例えば、本実施の形態における装置20において、アプリケーションが認証済みであることを示す情報を有する場合、第1のルールを参照せずに、アプリケーションを変更しなくてもよい。
これによれば、アプリケーションが認証済みである場合に、ブロックを変更するための処理をスキップすることができ、処理負荷を軽減することができる。
(実施の形態3)
次に、実施の形態3について説明する。本実施の形態では、アプリケーションの制作者と装置の製作者とが同一である場合に実行前確認がスキップされる点が上記実施の形態1と主として異なる。以下に、上記実施の形態1と異なる点を中心に本実施の形態について説明する。
なお、本実施の形態におけるシステム1のハードウェア構成及び機能構成は、上記実施の形態1と同様であるので、図示及び説明を省略する。
[3.1 処理]
本実施の形態では、上記実施の形態1における実行前確認のステップS216がステップS216Bに代わる点を除いて、上記実施の形態1の処理と同様である。したがって、実行前確認処理のステップS216Bについて図17を参照しながら説明する。
図17は、実施の形態3における実行前確認処理のフローチャートを示す。
(ステップS2161B)
デバイス300は、アプリ制作者情報を取得する。アプリ制作者情報は、アプリケーションの制作者を示す。制作者は、アプリケーションを制作した会社、個人又は団体等を意味し、開発者又は著者と呼ばれる場合もある。
(ステップS2163B)
デバイス300は、デバイス製造者情報を取得する。デバイス製造者情報は、デバイスの製作者を示す。製作者は、デバイス300(つまり装置20)を製作した会社、個人又は団体等を意味し、製造者と呼ばれる場合もある。
(ステップS2164B)
デバイス300は、アプリケーションの制作者とデバイス300の製作者とが異なるか否かを判定する。アプリケーションの制作者が個人であり、デバイス300の製作者が会社である場合、デバイス300は、アプリケーションの制作者が属する会社とデバイス300の製作者とが一致すれば、アプリケーションの制作者とデバイス300の製作者とが同じであると判定してもよい。また、デバイス300は、アプリケーションの制作者がデバイス300の製作者の開発委託先であれば、アプリケーションの制作者とデバイス300の製作者とが同じであると判定してもよい。
ここで、アプリケーションの制作者とデバイス300の製作者とが同じである場合(S2164BのNo)、デバイス300は、以降のステップS2165~ステップS2167をスキップして実行前確認処理を終了する。一方、アプリケーションの制作者とデバイス300の製作者とが異なる場合(S2164BのYes)、デバイス300は、次のステップS2165に進む。
[3.2 効果など]
以上のように、本実施の形態における装置20は、アクチュエータ22及び加熱器23の少なくとも1つと、アクチュエータ22及び加熱器23の少なくとも1つを制御する制御部24と、を備え、制御部24は、アクチュエータ22及び加熱器23の少なくとも1つを駆動する複数のブロックで規定され、かつ制作者を示す情報を含むアプリケーションを取得し、装置20の製作者を示す情報を取得し、アプリケーションの制作者と装置20の製作者とが異なる場合、所定の2以上のブロックが組み合わせて実行されることを示すルールを参照して、アプリケーションに含まれる複数のブロックがルールに該当しない場合、アプリケーションを変更し、変更されたアプリケーションに基づいて、アクチュエータ22及び加熱器23の少なくとも1つを駆動する。
これによれば、実施の形態1と同様の効果を実現することができる。さらに、アプリケーションの制作者と装置20の製造者とが異なる場合に、アプリケーションの変更を伴う処理を行うことができ、アプリケーションの制作者と装置20の製造者とが同じ場合には、処理負荷の軽減を図ることができる。
(実施の形態4)
次に、実施の形態4について説明する。本実施の形態では、装置の劣化レベルに対応するルールを用いて実行前確認が行われる点が上記実施の形態1と主として異なる。以下に、上記実施の形態1と異なる点を中心に本実施の形態について説明する。
なお、本実施の形態におけるシステム1のハードウェア構成及び機能構成は、上記実施の形態1と同様であるので、図示及び説明を省略する。
[4.1 処理]
本実施の形態では、上記実施の形態1における実行前確認のステップS216がステップS216Cに代わる点を除いて、上記実施の形態1の処理と同様である。したがって、実行前確認処理のステップS216Cについて図18を参照しながら説明する。
図18は、実施の形態4における実行前確認処理のフローチャートを示す。
(ステップS2163C)
デバイス300は、デバイス劣化情報を取得する。デバイス劣化情報は、装置20に含まれるアクチュエータ22及び/又は加熱器23の劣化レベルを示す。劣化レベルの検出方法は、特に限定されず、例えばセンサによって検出されればよい。
(ステップS2165C)
デバイス300は、劣化レベルに対応するルールを取得する。例えば、デバイス300は、ルールデータベースを参照して、ブロックが駆動するアクチュエータ22又は加熱器23の劣化レベルに対応するルールを取得する。
なお、劣化レベルを決定する項目は、例えば、デバイス300に含まれるアクチュエータ22及び/又は加熱器23の使用回数、使用時間、又は稼働開始から現在まで使用日数である。これらの項目は、ユーザの使用に対して概ね比例関係で増えると想定される。よって、項目に対応する値が大きくなるごとに、劣化レベルが大きくなるようにルールが決定される。
また、劣化レベルを決定する項目は、例えば、加熱器23の温度の加算値、又はアクチュエータ22及び/又は加熱器23の入力及び出力の再現度合である。加熱器23の温度の加算値とは、加熱器23が駆動されたときの温度を加算した値である。例えば、ブロック実行時の加熱器23の平均温度、中間温度、又は最大温度が用いられる。加熱器23の温度は、加熱器23の限界温度に対する実行温度の割合、加熱器23の限界温度に対する実行温度の差分であってもよい。
アクチュエータ22及び/又は加熱器23の入力及び出力の再現度合とは、アクチュエータ22及び/又は加熱器23を駆動するための入力値とアクチュエータ22及び/又は加熱器23の出力との関係を参照して求められる。所定の入力に対する実際の出力値と、関係に規定された出力値との割合が用いられる。
[4.2 効果など]
以上のように、本実施の形態における装置20は、アクチュエータ22及び加熱器23の少なくとも1つと、アクチュエータ22及び加熱器23の少なくとも1つを制御する制御部24と、を備え、制御部24は、アクチュエータ22及び加熱器23の少なくとも1つを駆動する複数のブロックで規定されたアプリケーションを取得し、アクチュエータ22及び加熱器23の少なくとも1つが劣化しているか否かを示す劣化情報を取得し、劣化情報に対応するルールであって所定の2以上のブロックが組み合わせて実行されることを示すルールを参照して、アプリケーションに含まれる複数のブロックがルールに該当しない場合、アプリケーションを変更し、変更されたアプリケーションに基づいて、アクチュエータ22及び加熱器23の少なくとも1つを駆動する。
これによれば、実施の形態1と同様の効果を実現することができる。さらに、装置20の劣化情報に対応するルールを用いることができ、ブロックを用いることで、経年劣化していくデバイスのパフォーマンスを考慮しながら、アプリケーション側からのアクチュエータ22及び/又は加熱器23への駆動指示を実行し、アプリケーションで制御される装置20の安全性をより向上させることができる。
(実施の形態5)
上記実施の形態1~4では、既に配信されているアプリケーションに含まれるブロックが、そのアプリケーションが実行される前に変更される。本実施の形態では、そのアプリケーションが変更されるタイミングが、アプリケーションが配信される前、つまり、そのアプリケーションが開発または制作される段階であって、その点で本実施の形態は上記実施の形態1~4とは異なる。以下、本実施の形態について、上記実施の形態1~4と異なる点を中心に、詳細に説明する。なお、本実施の形態は、アプリケーションの変更のタイミング以外については、上記実施の形態1~4と同様であってもよい。また、本実施の形態における各構成要素のうち、実施の形態1~4と同一の構成要素については、実施の形態1~4と同一の符号を付し、詳細な説明を省略する。
[5.1 構成]
図19は、アプリケーションの開発に用いられる情報処理システムの構成例を示す図である。
情報処理システム2000は、ブロックデータベース41と、ルールデータベース42と、開発ツール50と、複数の装置20および複数の端末30と、アプリ提供サーバ60と、シーケンスマネージャ100とを備える。例えば、情報処理システム2000に備えられるこれらの構成要素は、インターネットなどの通信ネットワークを介して接続される。
ブロックデータベース41は、ブロックDBとも呼ばれ、複数の機能ブロックを含むブロック一覧を格納している記録媒体である。なお、これらの機能ブロックは、実施の形態1~4と同様、ブロックとも呼ばれる。ルールデータベース42は、ルールDBとも呼ばれ、複数のルールを格納している記録媒体である。なお、ルールデータベース42は、例えば図12に示すルールデータベース1300と同様であってもよい。また、これらの記録媒体は、ハードディスク、RAM(Random Access Memory)、ROM(Read Only Memory)、または半導体メモリなどである。なお、このような記録媒体は、揮発性であっても不揮発性であってもよい。
開発ツール50は、例えば、プロセッサ51と、メモリ52と、ディスプレイ53と、入力部54とを備えるコンピュータシステムである。プロセッサ51は、例えばメモリ52に格納されたインストラクション又はソフトウェアプログラムを実行することによって後述の各処理を実行し、ディスプレイ53に文字または画像などを表示する。ディスプレイ53は、例えば液晶ディスプレイ、プラズマディスプレイ、有機EL(Electro-Luminescence)ディスプレイなどであるが、これらに限定されない。入力部54は、例えばキーボード、タッチセンサ、タッチパッドまたはマウスなどとして構成されている。このような開発ツール50は、例えばアプリケーションの開発者によって利用され、複数の機能ブロックを含むシーケンスまたはアプリケーションを生成する。なお、本実施の形態では、この開発ツール50は、情報処理装置の一例である。
アプリ提供サーバ60は、開発ツール50によって生成されたアプリケーションを、その開発ツール50から通信ネットワークを介して取得して保持する。そして、アプリ提供サーバ60は、端末30に備えられているUI400からの指示に応じて、保持しているアプリケーションをシーケンスマネージャ100にダウンロードする。
図20は、ブロックデータベース41およびルールデータベース42のそれぞれに格納されている情報の一例を示す図である。
ブロックデータベース41は、図20の(a)に示すように、複数種の装置20のそれぞれについて、その種別の装置20を駆動するための機能ブロックの一覧を、上述のブロック一覧として格納している。例えば、ブロック一覧41a~41eが格納されている。ブロック一覧41aは、オーブンレンジを駆動するための機能ブロックFB11~FB14などを含む。ブロック一覧41bは、マルチクッカーを駆動するための機能ブロックFB21~FB24などを含む。これらの機能ブロックは、上記実施の形態1~4のブロックと同一または類似であってもよい。
ルールデータベース42は、図20の(b)に示すように、複数種の装置20のそれぞれについて、その種別の装置20に適用される少なくとも1つのルールからなるルール群を格納している。例えば、ルール群42a~42eが格納されている。ルール群42aは、オーブンレンジに適用されるルールR100およびR11~R13などを含む。ルール群42bは、マルチクッカーに適用されるルールR200およびR21~R23などを含む。また、ルール群42dは、洗濯機に適用されるルールR400およびR41~R43などを含む。これらのルールは、上記実施の形態1~4のルールと同一または類似であってもよい。
ここで、オーブンレンジのルールR11~R13のそれぞれは、例えば、所定のメーカによって製造された所定の型式のオーブンレンジに適用される専用ルールである。同様に、マルチクッカーのルールR21~R23のそれぞれは、例えば、所定のメーカによって製造された所定の型式のマルチクッカーに適用される専用ルールである。同様に、洗濯機のルールR41~R43のそれぞれは、所定のメーカによって製造された所定の型式の洗濯機に適用される専用ルールである。具体的には、その専用ルールR41~R43のそれぞれは、例えば図12に示すルール1301または1302であってもよい。
一方、オーブンレンジのルールR100は、例えば、複数種のオーブンレンジのそれぞれに適用可能な、オーブンレンジの汎用ルールである。同様に、マルチクッカーのルールR200は、例えば、複数種のマルチクッカーのそれぞれに適用可能な、マルチクッカーの汎用ルールである。
図21は、ルールデータベース42に含まれる汎用ルールの一例を示す図である。
ルールデータベース42に格納されている洗濯機のルール群42dには、例えば図21の(a)に示す汎用ルールR400が含まれている。この汎用ルールR400は、複数種の洗濯機のそれぞれに適用可能なルールであって、所定の2以上のブロックの1つが実行される場合にその所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止する。つまり、ルールは、上記実施の形態1~4と同様、所定の2以上のブロックの組み合わせに関する要件を示す。以下、所定の2以上のブロックの組み合わせは、単に、組み合わせとも呼ばれ、その組み合わせに関する要件は、組み合わせルールとも呼ばれる。汎用ルールR400は、複数の組み合わせルールを示していてもよい。例えば、汎用ルールR400は、第1の組み合わせルールと、第2の組み合わせルールとを示す。第1の組み合わせルールは、第1のブロックである排水の機能ブロックと、第2のブロックである脱水の機能ブロックに対する要件である。つまり、その第1の組み合わせルールは、脱水ブロックが実行される前に排水ブロックが実行されないことが禁止されることを示す。また、第2の組み合わせルールは、第2のブロックである乾燥の機能ブロックと、第3のブロックである送風の機能ブロックに対する要件である。つまり、その第2の組み合わせルールは、乾燥ブロックの後に送風ブロックが実行されないことが禁止されることを示す。
なお、排水ブロックは、機能として排水を洗濯機に実行させる機能ブロックであり、脱水ブロックは、機能として脱水を洗濯機に実行させる機能ブロックである。同様に、乾燥ブロックは、機能として乾燥を洗濯機に実行させる機能ブロックであり、送風ブロックは、機能として送風を洗濯機に実行させる機能ブロックである。
また、汎用ルールR400が適用される複数種の洗濯機は、複数の製造業者から提供されている洗濯機を含む。また、各製造業者が複数の型式の洗濯機を提供していれば、その複数種の洗濯機は、その複数の型式の洗濯機を含む。つまり、汎用ルールR400に示される組み合わせは、製造業者および型式を問わず、どのような洗濯機にも適用される。
また、その洗濯機の汎用ルールR400は、図21の(b)に示すように、複数の製造業者のそれぞれの洗濯機に適用される組み合わせルールを示していてもよい。例えば、汎用ルールR400は、製造業者「A社」から提供される複数の型式の洗濯機に適用される組み合わせルールと、製造業者「B社」から提供される複数の型式の洗濯機に適用される組み合わせルールとなどを示す。
このように、本実施の形態におけるルールは、実施の形態1~4と同様、所定の2以上のブロックの1つが実行される場合にその所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止するルールである。そして、その所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、ルールは、第2のブロックが実行される前に、第1のブロックが実行されないことを禁止する。すなわち、ルールは、アプリケーションの開始から第2のブロックが実行される前までに、第1のブロックが実行されないことを禁止する。このような第1のブロックは、実施の形態1~4と同様、第2のブロックを実行可能な環境に設定するためのブロックである。
あるいは、所定の2以上のブロックは、第2のブロック及び第3のブロックを含み、ルールは、第2のブロックが実行された後に、第3のブロックが実行されないことを禁止する。すなわち、ルールは、第2のブロックが実行された後からアプリケーションの終了までに、第3のブロックが実行されないことを禁止する。このような第3のブロックは、実施の形態1~4と同様、第2のブロックの実行により変化した環境を第2のブロックの実行前の環境に戻すためのブロックである。
なお、本実施の形態におけるルールは、実施の形態1~4と同様、例えば筐体21の内部空間、アクチュエータ22又は加熱器23を耐久温度に到達させないために所定の2以上のブロックが組み合わせて実行されることを担保するためのルールであってもよい。
[5.2 処理]
図22は、情報処理システム2000のシーケンス図である。
(ステップS11)
まず、開発ツール50は、1つ以上の機能ブロックをインストールする。具体的には、開発ツール50は、ブロックデータベース41から1つ以上の機能ブロックをダウンロードによって取得する。例えば、開発ツール50は、オーブンレンジのブロック一覧41aを取得してもよく、そのブロック一覧41aの一部の機能ブロックのみを取得してもよい。そして、開発ツール50は、その取得された1以上の機能ブロックを、シーケンスの生成に利用可能な状態にする。
ここで、ブロックデータベース41に格納されている各機能ブロックには、その機能ブロックに対応するデバイス情報が付加されていてもよい。このデバイス情報は、そのデバイス情報に対応する機能ブロックに応じて駆動する例えば装置20の製造業者、種別、型式、または型番などを示す。したがって、開発ツール50は、それらのデバイス情報に基づいて、1つ以上の機能ブロックをダウンロードしてもよい。例えば、開発ツール50は、同一の製造業者から提供されている各装置20を駆動するための1つ以上の機能ブロックをダウンロードしてもよく、調理の温めに用いられる各装置20を駆動するための1つ以上の機能ブロックをダウンロードしてもよい。
(ステップS12)
次に、開発ツール50は、シーケンスを生成する。具体的には、開発ツール50は、操作者による入力部54への入力操作に応じて、ダウンロード済みの1以上の機能ブロックを用いてシーケンスを生成する。なお、操作者は、シーケンスであるアプリケーションの開発者であってもよい。本実施の形態では、開発ツール50は、このステップS12において、上述のルールを参照し、そのルールに基づいてアプリケーションを変更する。
(ステップS13)
次に、開発ツール50は、生成されたシーケンスのアップロードを行う。具体的には、開発ツール50は、操作者による入力部54への入力操作に応じて、生成されたシーケンスをアプリ提供サーバ60に送信するための送信情報を、そのシーケンスの内容に基づいて生成し、その送信情報をアプリ提供サーバ60に送信する。この送信情報は、例えばJSON(JavaScript Object Notation)などであってもよい。これにより、そのシーケンスがアプリ提供サーバ60に送信されて、アプリケーションとしてアプリ提供サーバ60に格納される。
(ステップS14)
次に、端末30のユーザは、その端末30のUI400を操作することによって、アプリ提供サーバ60にアクセスし、アプリ提供サーバ60に格納されているアプリケーションの一覧を閲覧する。そして、UI400は、そのユーザによる操作に応じて、一覧からアプリケーションを選択し、そのアプリケーションのダウンロードをアプリ提供サーバ60に要求する。
(ステップS15)
アプリ提供サーバ60は、UI400からのダウンロードの要求を受け付けると、そのユーザに紐づくシーケンスマネージャ100に、選択されたアプリケーションをダウンロードする。
図23は、開発ツール50の全体的な処理動作を示すフローチャートである。具体的には、図23に示すフローチャートは、図22のシーケンスにおけるステップS11およびS12の詳細な処理動作を示す。
(ステップS21)
開発ツール50は、まず、例えば洗濯機などの装置20を駆動するための複数の機能ブロックをインストールする。
(ステップS22)
次に、開発ツール50は、操作者による入力部54への入力操作に応じて、機能ブロックの配置処理を行う。すなわち、開発ツール50は、ステップS21でインストールされた複数の機能ブロックをディスプレイ53に表示し、操作者による入力部54への入力操作に応じて、その表示されている複数の機能ブロックから、1つの機能ブロックを選択する。そして、開発ツール50は、操作者による入力部54への入力操作に応じて、その機能ブロックをディスプレイ53上のシーケンス生成画面における選択ブロック領域に配置する。シーケンス生成画面については、図26を用いて後述する。つまり、操作者は、複数の機能ブロックのうちの1つの機能ブロックをその選択ブロック領域にドラッグ&ドロップする。
(ステップS23)
次に、開発ツール50は、操作者による入力部54への入力操作に応じて、ステップS22で配置された機能ブロックのパラメータ設定処理を行う。すなわち、開発ツール50は、上述のシーケンス生成画面におけるパラメータ設定領域に、その機能ブロックに用いられるパラメータの内容を受け付けるための受付画像を表示する。そして、開発ツール50は、操作者による入力部54への入力操作に応じて、そのパラメータの内容を受け付けて、そのパラメータの内容をパラメータ設定領域に表示する。これにより、その機能ブロックに対してパラメータが設定される。
(ステップS24)
次に、開発ツール50は、洗濯機などの装置20に適用されるパラメータルールを参照し、そのステップS23で設定されたパラメータが、そのパラメータルールに示されるパラメータ範囲外、すなわち非許容範囲外であるか否かを判定する。
(ステップS25)
開発ツール50は、ステップS24でパラメータが非許容範囲外ではないと判定すると(ステップS24のNo)、パラメータ設定サポート処理を行う。このパラメータ設定サポート処理では、開発ツール50は、操作者にエラーを提示するエラー提示処理、または、パラメータの自動修正処理を行う。パラメータの自動修正処理では、開発ツール50は、非許容範囲のパラメータを許容範囲内のパラメータに変更することによって、その機能ブロックを変更する。エラー提示処理では、開発ツール50は、例えば、直前のステップS23で設定されたパラメータが非許容範囲内であることを示すメッセージをエラーとしてディスプレイ53に表示し、そのパラメータの変更を操作者に促す。そして、開発ツール50は、ステップS25の処理が行われた後には、ステップS23からの処理を繰り返し行う。
なお、ステップS25においてパラメータの自動修正処理が行われた後に、ステップS23の処理が行われる場合には、そのステップS23では、開発ツール50は、その自動修正処理によって変更された後のパラメータをパラメータ設定領域に表示する。一方、ステップS25においてエラー提示処理が行われた後に、ステップS23の処理が行われる場合には、そのステップS23では、開発ツール50は、上述と同様、再び、操作者による入力部54への入力操作に応じて、そのパラメータの内容を受け付ける。これにより、その機能ブロックに対してパラメータが変更される。つまり、機能ブロックが変更される。
(ステップS26)
開発ツール50は、ステップS24でパラメータが非許容範囲外であると判定すると(ステップS24のYes)、さらに、そのステップS22で配置された機能ブロックの接続が許可されている否かを判定する。例えば、ステップS22では、選択ブロック領域に既に配置されている他の機能ブロックである既存ブロックの直前または直後に、機能ブロックが配置される。その結果、機能ブロックは、その既存ブロックに接続された状態で配置される。つまり、機能ブロックによる装置20の処理と、既存ブロックによる装置20の処理とが連続して実行されるように、その機能ブロックが配置される。この場合、開発ツール50は、洗濯機などの装置20に適用される接続ルールを参照することによって、その機能ブロックと既存ブロックとの接続が許可されているか否かを判定する。
(ステップS27)
開発ツール50は、ステップS26で接続が許可されていないと判定すると(ステップS26のNo)、接続サポート処理を行う。この接続サポート処理では、開発ツール50は、操作者にエラーを提示するエラー提示処理、または、接続の自動修正処理を行う。そして、開発ツール50は、ステップS22からの処理を繰り返し行う。
なお、ステップS27において接続の自動修正処理が行われた後に、ステップS22の処理が行われる場合には、そのステップS22では、開発ツール50は、その自動修正処理によって接続し直された2以上の機能ブロックを選択ブロック領域に表示する。一方、ステップS27においてエラー提示処理が行われた後に、ステップS22の処理が行われる場合には、そのステップS22では、開発ツール50は、上述と同様、再び、操作者による入力部54への入力操作に応じて、機能ブロックを配置し直す。また、ステップS27からステップS22の処理が繰り返される場合には、開発ツール50は、機能ブロックのパラメータは既に許容範囲内に設定されているため、ステップS22以降のステップS23~S25の処理をスキップしてもよい。
(ステップS28)
開発ツール50は、ステップS26で接続が許可されていると判定すると(ステップS26のYes)、さらに、操作者による入力部54への入力操作に応じて、シーケンスの生成が完了したか否かを判定する。ここで、開発ツール50は、シーケンスの生成が完了していないと判定すると(ステップS28のNo)、ステップS22からの処理を繰り返し行う。このときには、開発ツール50は、ステップS21でインストールされた複数のブロックから新たなブロックを、操作者による入力部54への入力操作に応じて選択して、上述の選択ブロック領域に配置する。
(ステップS29)
開発ツール50は、ステップS28でシーケンスの生成が完了したと判定すると(ステップS28のYes)、さらに、生成されたシーケンス全体の流れが許可されているか否かを判定する。例えば、そのシーケンスの中で、第1の機能ブロックよりも前または後に第2の機能ブロックが配置されている。一方、洗濯機などの装置20に適用される組み合わせルールでは、その第1の機能ブロックと第2の機能ブロックとの組み合わせは、許可されていない。このような場合、開発ツール50は、その生成されたシーケンス全体の流れが許可されていないと判定する。あるいは、洗濯機などの装置20に適用される組み合わせルールでは、その第1の機能ブロックよりも前または後には、第2の機能ブロックが配置されていることが求められている。このような場合、開発ツール50は、その生成されたシーケンス全体の流れが許可されていると判定する。
つまり、開発ツール50は、洗濯機などの装置20に適用されるルールを参照し、そのステップS28で生成されたシーケンス、すなわちアプリケーションに含まれる複数の機能ブロックがそのルールに該当するか否かを判定する。そして、開発ツール50は、その複数の機能ブロックがルールに該当していれば、ステップS28で生成されたシーケンス全体の流れが許可されていないと判定する。一方、開発ツール50は、その複数の機能ブロックがルールに該当していなければ、ステップS28で生成されたシーケンス全体の流れは許可されていると判定する。なお、ステップS29で参照されるルールは、装置20に適用される上述の汎用ルールまたは専用ルールであり、より具体的には、そのルールに含まれる組み合わせルールである。また、ルールに該当するか否かの判定方法は、上記実施の形態1~4と同様である。
(ステップS30)
開発ツール50は、ステップS29でシーケンス全体の流れが許可されていないと判定すると(ステップS29のNo)、配置サポート処理を行う。この配置サポート処理では、開発ツール50は、操作者にエラーを提示する配置のエラー提示処理、または、機能ブロックの配置の自動修正処理を行う。そして、開発ツール50は、ステップS22からの処理を繰り返し行う。
なお、ステップS30において配置の自動修正処理が行われた後に、ステップS22の処理が行われる場合には、そのステップS22では、開発ツール50は、その自動修正処理によって配置し直された2以上の機能ブロックを選択ブロック領域に表示する。また、ステップS30からステップS22の処理が繰り返される場合には、開発ツール50は、機能ブロックのパラメータは既に許容範囲内に設定されているため、ステップS22以降のステップS23~S25の処理をスキップしてもよい。また、開発ツール50は、機能ブロックの接続は既に許可されているため、ステップS26およびS27の処理をスキップしてもよい。さらに、開発ツール50は、ステップS28の処理もスキップしてもよい。
図24は、配置の自動修正処理の一例を示すフローチャートである。
(ステップS41)
開発ツール50は、操作者による入力部54への入力操作に応じて、例えば洗濯機などの装置20を駆動するためのN個(Nは2以上の整数)の機能ブロックからM個(Mは2以上かつN以下の整数)の機能ブロックを選択する。つまり、開発ツール50は、制御対象機器である装置20に備えられているアクチュエータ22及び加熱器23の少なくとも1つを駆動するためのN個の機能ブロックから、操作者による入力部54への入力操作に応じて、M個の機能ブロックのそれぞれを選択ブロックとして選択する。
(ステップS42)
次に、開発ツール50は、選択されたM個の機能ブロックのそれぞれを、上述の選択ブロック領域に順序付けて配置することによって、シーケンス、すなわちアプリケーションを生成する。つまり、開発ツール50は、少なくともM個の選択ブロックのそれぞれが実行される順番を、操作者による入力部54への入力操作に応じて設定することで、少なくともM個の選択ブロックを含むアプリケーションを生成する。なお、このアプリケーションに含まれるM個の選択ブロックのそれぞれは、アクチュエータ22及び加熱器23の少なくとも1つを駆動するためのパラメータを含んでいてもよい。
(ステップS43)
次に、開発ツール50は、M個の機能ブロックのそれぞれが洗濯機を駆動するためのブロックであれば、洗濯機に適用されるルールを参照する。例えば、開発ツール50は、ステップS42で生成されたアプリケーションが複数種の洗濯機に適用される場合には、汎用ルールR400を参照する。また、開発ツール50は、ステップS42で生成されたアプリケーションが所定の型式の洗濯機に適用される場合には、専用ルールR41~R43のうちのその型式の洗濯機に対応付けられているルールを参照する。つまり、開発ツール50は、ステップS42で生成されるアプリケーションが、制御対象機器専用のアプリケーションか、その制御対象機器と、その制御対象機器以外の機器とに適用される汎用のアプリケーションかを判定する。そして、開発ツール50は、所定の2以上のブロックの1つが実行される場合にその所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止する複数のルール候補のうちの、そのアプリケーションの判定結果に応じたルール候補を、上述のルールとして参照する。
(ステップS44)
そして、開発ツール50は、ステップS42で設定されたM個の機能ブロックが、上述のルールに該当するか否かを判定する。つまり、開発ツール50は、アプリケーションに含まれるM個の機能ブロックが、そのルールに含まれる組み合わせルールに該当するか否かを判定する。
(ステップS45)
ここで、開発ツール50は、そのM個の機能ブロックがルールに該当すると判定すると(ステップS44のYes)、そのアプリケーションを変更する。つまり、開発ツール50は、所定の2以上のブロックの1つが実行される場合にその所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止するルールを参照して、アプリケーションに含まれるM個の選択ブロックがそのルールに該当する場合、そのアプリケーションを変更する。具体的には、開発ツール50は、(1)M個の選択ブロックに新たなブロックを追加し、(2)M個の選択ブロックの順番を変更し、又は、(3)M個の選択ブロックのうちいずれかのブロックを削除することで、そのアプリケーションを変更する。これらのアプリケーションの変更方法は、ルールに定義されていてもよい。
(ステップS46)
そして、開発ツール50は、変更したアプリケーションを出力する。
図25は、配置のエラー提示処理の一例を示すフローチャートである。
(ステップS41~S44)
開発ツール50は、図24に示す例と同様、ステップS41~S44の処理を実行する。
(ステップS51)
開発ツール50は、ステップS44でM個の機能ブロックがルールに該当すると判定すると(ステップS44のYes)、そのアプリケーションを自動的に変更することなく、ディスプレイ53にエラーを表示する。これにより、操作者にエラーが提示される。つまり、ステップS43、S44およびS51の処理では、開発ツール50は、ルールを参照することによって、エラーを提示する。具体的には、開発ツール50は、所定の2以上のブロックの1つが実行される場合に所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止するルールを参照して、そのアプリケーションに含まれるM個の選択ブロックがそのルールに該当する場合、操作者に対してエラーを提示する。
なお、開発ツール50は、エラーを提示するとともに、操作者に対して、複数の対処法を示し、操作者に対して対処法の選択を促しても良い。その際、開発ツール50は、複数の対処法のそれぞれについて、出力性能の違いを操作者に対して提示してもよい。また、その際、開発ツール50は、新たな機能ブロックの追加による第1の対処法と、M個の選択ブロックの順番を変更する第2の対処法と、何れかの機能ブロックを削除するする第3の対処法のうち、少なくとも二つ以上の対処法を提示してもよい。これにより、それらの対処法が、例えばアプリケーション開発者である操作者に提示される。その結果、それらの対処法を見たアプリケーション開発者である操作者は、開発ツール50の入力部54への入力操作を行うことによって、ステップS42で生成されたアプリケーションを、その対処法にしたがって容易に変更することができる。
(ステップS52)
そのエラーを見た操作者は、開発ツール50の入力部54への入力操作を行うことによって、ステップS42で生成されたアプリケーションを変更する。また、操作者に対して複数の対処法のそれぞれが選択肢として提示されている場合は、操作者は、入力操作を行うことによって、それらの選択肢の中から任意の対処法を選択する。その結果、開発ツール50は、アプリケーションを変更する。つまり、開発ツール50は、エラーの提示を受けた操作者による入力操作に応じて、アプリケーションを変更する。そして、開発ツール50は、ステップS43からの処理を繰り返し実行する。
(ステップS46)
開発ツール50は、ステップS44において、M個の機能ブロックがルールに該当していないと判定すると(ステップS44のNo)、アプリケーションを出力する。このとき、ステップS52でアプリケーションが変更されていれば、変更されたアプリケーションが出力される。一方、ステップS52でアプリケーションが変更されていなければ、ステップS42で生成されたアプリケーションが出力される。
なお、ステップS51の処理が繰り返される場合に、開発ツール50は、その繰り返しの回数に応じて、エラーへの対処法を提示してもよい。例えば、開発ツール50は、エラーの提示回数がK回(Kは2以上の整数)以上の場合には、そのエラーに対する複数の対処法を提示してもよい。つまり、開発ツール50は、エラーの提示回数がK回以上の場合には、上述の第1の対処法、第2の対処法、および第3の対処法のうちの少なくとも2つを操作者に提示する。
[5.3 表示例]
図26は、シーケンス生成画面の一例を示す図である。
開発ツール50は、上述のシーケンス生成画面をディスプレイ53に表示する。シーケンス生成画面は、パラメータ設定領域D1と、ブロック一覧領域D2と、対象装置領域D3と、選択ブロック領域D4とを含む。
パラメータ設定領域D1には、機能ブロックに用いられるパラメータの内容を受け付けるための受付画像が表示される。
ブロック一覧領域D2には、複数種の装置20のそれぞれのブロック一覧が表示される。これらのブロック一覧は、ブロックデータベース41からダウンロードされて開発ツール50にインストールされた機能ブロックを含む。
対象装置領域D3には、複数種の装置20から選択された装置20の種別名が表示される。
選択ブロック領域D4には、ブロック一覧領域D2に表示されるブロック一覧から選択された機能ブロックが配置されて表示される。その機能ブロックは、例えばアイコンとして表示される。
例えば、操作者は、開発ツール50の入力部54に対する入力操作を行うことによって、アプリケーションが適用される装置20の種別名を決定する。開発ツール50は、その決定された種別名を対象装置領域D3に表示する。例えば、その決定された種別名「炊飯器」が表示される。続いて、操作者は、入力操作を行うことによって、ブロック一覧領域D2に表示されるブロック一覧から、決定された種別名「炊飯器」の装置20を駆動するための機能ブロックを選択する。そして、操作者は、入力操作を行うことによって、選択された機能ブロック、すなわち選択ブロックを選択ブロック領域D4に配置する。この機能ブロックの選択および配置は、ドラッグ&ドロップによって行われてもよい。この選択ブロック領域D4に配置される1つ以上の機能ブロックは、その配置されている順に実行されてもよい。例えば、図26における左側から右側に向かって、それらの機能ブロックが順に実行される。つまり、アプリケーションは、その選択ブロック領域D4に配置されるM個の選択ブロックのそれぞれが実行される順番の情報と、そのM個の選択ブロックのそれぞれが実行されるタイミングの情報とを含む。
機能ブロックが選択ブロック領域D4に配置されると、開発ツール50は、パラメータ設定領域D1に、その機能ブロックに用いられるパラメータの受付画像を表示する。
図27は、ブロック一覧の表示例を示す図である。
操作者は、図26に示すブロック一覧領域D2に表示されている複数の装置20のそれぞれの種別名のうち、これから生成するアプリケーションが適用される装置20の種別名を、入力部54に対する入力操作を行うことによって選択する。開発ツール50は、その選択された種別名の装置20に対応するブロック一覧を、例えば図27の(a)および(b)に示すように表示する。例えば、図27の(a)に示すように、オーブンレンジが選択されると、開発ツール50は、そのオーブンレンジのブロック一覧を表示する。例えば、そのブロック一覧は、焼き、レンジ加熱、オーブン、グリル、蒸し、予熱、および過熱水蒸気のそれぞれの機能を実現する機能ブロックを含む。また、図27の(b)に示すように、マルチクッカーが選択されると、開発ツール50は、そのマルチクッカーのブロック一覧を表示する。例えば、そのブロック一覧は、予熱、保温、炒め、圧力調理、炊き、蒸し、煮込み、混ぜる、および、ゆでるのそれぞれの機能を実現する機能ブロックを含む。
操作者は、入力部54への入力操作を行うことによって、このように表示されるブロック一覧から機能ブロックを選択し、その選択された機能ブロックを、図26に示す選択ブロック領域D4に配置する。つまり、開発ツール50は、このような入力操作に応じて、図23に示すステップS22の処理、すなわち機能ブロックの配置処理を行う。
図28Aは、機能ブロックの配置処理と、配置の自動修正処理の一例を示す図である。
開発ツール50は、例えば図28Aの(a)に示すように、ブロック一覧からドラッグ&ドロップされて選択ブロック領域D4に配置された機能ブロックを例えばアイコンとして表示する。具体的には、開発ツール50は、操作者による入力部54に対する入力操作に応じて、脱水の機能ブロックFB42を含むM個の機能ブロックを選択ブロック領域D4に配置する。このように、開発ツール50は、操作者の入力操作に応じて、図23に示すステップS22の機能ブロックの配置処理を行う。
また、開発ツール50は、機能ブロックの配置処理の結果、アプリケーションが生成されると、図23のステップS29のように、そのアプリケーション全体の流れが許可されているか否かを判定する。すなわち、開発ツール50は、選択ブロック領域D4に配置されているM個の機能ブロックに対する判定を、ルールを用いて行う。そして、開発ツール50は、その配置の自動修正処理を行う。
具体的には、開発ツール50は、まず、それらのM個の機能ブロックに対応する洗濯機のルールを参照する。例えば、開発ツール50は、図20の(b)に示すルールデータベース42のうちの、洗濯機のルール群42dを特定し、そのルール群42dに含まれる何れか1つのルールを参照する。そのルールは、汎用ルールR400であっても、専用ルールR41などであってもよい。例えば、ルールは、第2のブロックである脱水の機能ブロックFB42が実行される前に、第1のブロックである排水の機能ブロックFB41が実行されないことを禁止する組み合わせルールを含む。
そして、開発ツール50は、配置されているM個の機能ブロックがそのルールに該当すると判定すると、アプリケーションを変更する。例えば、開発ツール50は、図28Aの(b)に示すように、機能ブロックFB42の前に排水の機能ブロックFB41を追加することによって、洗濯機のアプリケーションを変更する。
このように、本実施の形態では、開発ツール50は、アプリケーションが第2のブロックを含み、かつ、第2のブロックの前に第1のブロックを含まない場合に、第2のブロックの前に、第1のブロックを追加することで、そのアプリケーションを変更する。このような変更によって、M個の機能ブロックはルールに該当しない状態になる。
また、機能ブロックの配置処理によって、第1のブロックである排水の機能ブロックFB41が第2のブロックである脱水の機能ブロックFB42よりも後に配置されている場合には、開発ツール50は、その排水の機能ブロックFB41を前に移動させてもよい。つまり、開発ツール50は、アプリケーションが、第1のブロック及び第2のブロックを含み、かつ、第2のブロックの前に第1のブロックを含まない場合に、その第1のブロックの順番を第2のブロックの順番よりも前に変更することで、アプリケーションを変更する。このような変更によっても、M個の機能ブロックはルールに該当しない状態になる。
また、開発ツール50は、第2のブロックである脱水の機能ブロックFB42を削除してもよい。つまり、開発ツール50は、アプリケーションが第2のブロックを含み、かつ、第2のブロックの前に第1のブロックを含まない場合に、その第2のブロックを削除することで、アプリケーションを変更する。このような変更によっても、M個の機能ブロックはルールに該当しない状態になる。
図28Bは、機能ブロックの配置処理と、配置の自動修正処理の他の例を示す図である。
開発ツール50は、例えば図28Bの(a)に示すように、ブロック一覧からドラッグ&ドロップされて選択ブロック領域D4に配置された機能ブロックを例えばアイコンとして表示する。具体的には、開発ツール50は、操作者による入力部54に対する入力操作に応じて、乾燥の機能ブロックFB44を含むM個の機能ブロックを選択ブロック領域D4に配置する。このように、開発ツール50は、操作者の入力操作に応じて、図23に示すステップS22の機能ブロックの配置処理を行う。
また、開発ツール50は、機能ブロックの配置処理の結果、アプリケーションが生成されると、図23のステップS29のように、そのアプリケーション全体の流れが許可されているか否かを判定する。すなわち、開発ツール50は、選択ブロック領域D4に配置されているM個の機能ブロックに対する判定を、ルールを用いて行う。そして、開発ツール50は、その配置の自動修正処理を行う。
具体的には、開発ツール50は、まず、それらのM個の機能ブロックに対応する洗濯機のルールを参照する。例えば、開発ツール50は、図20の(b)に示すルールデータベース42のうちの、洗濯機のルール群42dを特定し、そのルール群42dに含まれる何れか1つのルールを参照する。そのルールは、汎用ルールR400であっても、専用ルールR41などであってもよい。例えば、ルールは、第2のブロックである乾燥の機能ブロックFB44が実行された後に、第3のブロックである送風の機能ブロックFB45が実行されないことを禁止する組み合わせルールを含む。
そして、開発ツール50は、配置されているM個の機能ブロックがそのルールに該当すると判定すると、アプリケーションを変更する。例えば、開発ツール50は、図28Bの(b)に示すように、機能ブロックFB44の後に送風の機能ブロックFB45を追加することによって、洗濯機のアプリケーションを変更する。
このように、本実施の形態では、開発ツール50は、アプリケーションが第2のブロックを含み、かつ、第2のブロックの後に第3のブロックを含まない場合に、第2のブロックの後に、第3のブロックを追加することで、アプリケーションを変更する。このような変更によって、M個の機能ブロックはルールに該当しない状態になる。
また、機能ブロックの配置処理によって、第3のブロックである送風の機能ブロックFB45が第2のブロックである乾燥の機能ブロックFB44よりも前に配置されている場合には、開発ツール50は、その送風の機能ブロックFB45を後に移動させてもよい。つまり、開発ツール50は、アプリケーションが、第2のブロック及び第3のブロックを含み、かつ、第2のブロックの後に第3のブロックを含まない場合に、第3のブロックの順番を第2のブロックの順番よりも後に変更することで、そのアプリケーションを変更する。このような変更によっても、M個の機能ブロックはルールに該当しない状態になる。
また、開発ツール50は、第2のブロックである乾燥の機能ブロックFB44を削除してもよい。つまり、開発ツール50は、アプリケーションが第2のブロックを含み、かつ、第2のブロックの後に第3のブロックを含まない場合に、第2のブロックを削除することで、そのアプリケーションを変更する。このような変更によっても、M個の機能ブロックはルールに該当しない状態になる。
図28Aおよび図28Bのように、本実施の形態では、配置の自動修正処理が行われる。したがって、アプリケーション開発者である操作者が、M個の機能ブロックを誤ってルールに該当するように配置しても、そのM個の機能ブロックは、ルールに該当しないように自動的に配置し直される。したがって、洗濯機の安全性を担保することができる。
図29は、配置のエラー提示処理の一例を示す図である。
開発ツール50は、図28Aの例と同様、図29に示すように、脱水の機能ブロックFB42を含むM個の機能ブロックを選択ブロック領域D4に配置する。また、開発ツール50は、その配置の結果、アプリケーションが生成されると、図23のステップS29のように、そのアプリケーション全体の流れが許可されているか否かを判定する。すなわち、開発ツール50は、選択ブロック領域D4に配置されているM個の機能ブロックに対する判定を、ルールを用いて行う。例えば、ルールは、第2のブロックである脱水の機能ブロックFB42が実行される前に、第1のブロックである排水の機能ブロックFB41が実行されないことを禁止する組み合わせルールを含む。
そして、開発ツール50は、そのM個の機能ブロックがルールに該当すると判定すると、エラー提示処理を行う。具体的には、開発ツール50は、図29に示すように、エラーメッセージE1をエラーとして表示する。このエラーメッセージE1には、脱水の機能ブロックFB42に対応する機能ブロックが前に配置されていないことが記されている。つまり、このエラーメッセージE1は、第2のブロックである脱水の機能ブロックFB42が実行される前に、第1のブロックである排水の機能ブロックFB41が実行されないことを禁止するルールに、M個の機能ブロックが該当していることを、通知している。このようなエラー提示処理は、例えば図25のステップS51において行われる。
このように、本実施の形態では、開発ツール50は、所定の2以上のブロックの1つが実行される場合にその所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止するルールを参照して、そのアプリケーションに含まれるM個の選択ブロックがルールに該当する場合、操作者に対してエラーを提示する。そして、開発ツール50は、そのエラーの提示を受けた操作者による入力操作に応じて、M個の選択ブロックのそれぞれが実行される順番を変更することでアプリケーションを変更する。
このようなエラーが提示されることによって、アプリケーション開発者である操作者は、ルールに該当するM個の機能ブロックを、そのルールに該当しないように、容易に配置し直すことができる。したがって、洗濯機の安全性を担保することができる。
また、開発ツール50は、エラー提示処理では、さらに、そのエラーメッセージE1によって示されるエラーに対処するための対処法C1およびC2を表示してもよい。この対処法C1には、脱水の機能ブロックの前に、排水の機能ブロックを追加することによってエラーが解消されることが記されている。つまり、対処法C1は、M個の選択ブロックに新たなブロックを追加する上述の第1の対処法である。さらに、開発ツール50は、その対処法C1を行うことによって受ける影響を、その対処法C1と共に表示してもよい。例えば、開発ツール50は、洗濯の全行程にかかる処理時間が長くなるが、脱水が適切に行われることを影響として表示してもよい。
また、対処法C2には、脱水の機能ブロックを削除することによってエラーが解消されることが記されている。つまり、対処法C2は、M個の選択ブロックのうちいずれかのブロックを削除する第3の対処法である。さらに、開発ツール50は、その対処法C2を行うことによって受ける影響を、その対処法C2と共に表示してもよい。例えば、開発ツール50は、脱水を行うことができないが、洗濯機の安全性を担保することができることを影響として表示してもよい。
図30は、接続のエラー提示処理の他の例を示す図である。
開発ツール50は、図28Bの例と同様、図30に示すように、乾燥の機能ブロックFB44を含むM個の機能ブロックを選択ブロック領域D4に配置する。また、開発ツール50は、その配置の結果、アプリケーションが生成されると、図23のステップS29のように、そのアプリケーション全体の流れが許可されているか否かを判定する。すなわち、開発ツール50は、選択ブロック領域D4に配置されているM個の機能ブロックに対する判定を、ルールを用いて行う。例えば、ルールは、第2のブロックである乾燥の機能ブロックFB44が実行された後に、第3のブロックである送風の機能ブロックFB45が実行されないことを禁止する組み合わせルールを含む。
そして、開発ツール50は、そのM個の機能ブロックがルールに該当すると判定すると、エラー提示処理を行う。具体的には、開発ツール50は、図30に示すように、エラーメッセージE2をエラーとして表示する。このエラーメッセージE2には、乾燥の機能ブロックFB44に対応する機能ブロックが後に配置されていないことが記されている。つまり、このエラーメッセージE2は、第2のブロックである乾燥の機能ブロックFB44が実行された後に、第3のブロックである送風の機能ブロックFB45が実行されないことを禁止するルールに、M個の機能ブロックが該当していることを、通知している。このようなエラー提示処理は、例えば図25のステップS51において行われる。
このようなエラーが提示されることによって、アプリケーション開発者である操作者は、ルールに該当するM個の機能ブロックを、そのルールに該当しないように、容易に配置し直すことができる。したがって、洗濯機の安全性を担保することができる。
また、開発ツール50は、エラー提示処理では、さらに、そのエラーメッセージE2によって示されるエラーに対処するための対処法C3~C5を表示してもよい。この対処法C3には、乾燥の機能ブロックの後に、送風の機能ブロックを追加することによってエラーが解消されることが記されている。つまり、対処法C3は、M個の選択ブロックに新たなブロックを追加する上述の第1の対処法である。さらに、開発ツール50は、その対処法C3を行うことによって受ける影響を、その対処法C3と共に表示してもよい。例えば、開発ツール50は、洗濯の全行程にかかる処理時間が長くなるが、洗濯機の安全性を担保することができることを影響として表示してもよい。
また、対処法C4には、乾燥の機能ブロックの前に配置されている送風の機能ブロックを、乾燥の機能ブロックの後に移動させることによってエラーが解消されることが記されている。つまり、対処法C4は、M個の選択ブロックの順番を変更する上述の第2の対処法である。さらに、開発ツール50は、その対処法C4を行うことによって受ける影響を、その対処法C4と共に表示してもよい。例えば、開発ツール50は、洗濯機の安全性を担保することができることを影響として表示してもよい。
また、対処法C5には、乾燥の機能ブロックを削除することによってエラーが解消されることが記されている。つまり、対処法C5は、M個の選択ブロックのうちいずれかのブロックを削除する第3の対処法である。さらに、開発ツール50は、その対処法C5を行うことによって受ける影響を、その対処法C5と共に表示してもよい。例えば、開発ツール50は、乾燥を行うことができないが、洗濯機の安全性を担保することができることを影響として表示してもよい。
このように、本実施の形態では、開発ツール50は、エラーに対する複数の対処法を提示する。そして、開発ツール50は、そのエラーおよび複数の対処法の提示を受けた操作者による入力操作に応じて、アプリケーションを変更する。
例えば、その複数の対処法は、上述の第1の対処法、第2の対処法および第3の対処法のうちの少なくとも2つを含む。さらに、本実施の形態では、開発ツール50は、複数の対処法のそれぞれが行われた場合における、アクチュエータ22又は加熱器23の駆動によって作用される物体への影響、またはアプリケーションへの影響を提示する。
このような複数の対処法と、それらの対処法による影響とが提示されることによって、アプリケーション開発者である操作者は、ルールに該当するM個の機能ブロックを、そのルールに該当しないように、さらに容易に配置し直すことができる。したがって、洗濯機の安全性を担保することができる。
なお、エラーメッセージE1およびE2と、対処法C1~C5とは、シーケンス生成画面のうちの何れの領域に表示されてもよい。また、これらのエラーメッセージE1およびE2と、対処法C1~C5とはそれぞれ、組み合わせルールに対応付けて示されていてもよい。また、上述の例では、エラーメッセージE1およびE2と、対処法C1~C5とが表示されるが、それらの提示形態はこれらの例に限らず、どのような形態であってもよい。例えば、音声でエラーなどが提示されてもよい。
また、開発ツール50は、エラーの提示回数がK回(Kは2以上の整数)以上の場合には、エラーに対する複数の対処法を操作者に提示してもよい。つまり、開発ツール50は、図25に示すステップS51の処理が繰り返される場合には、開発ツール50は、その繰り返しの回数に応じて、エラーの提示形態を変更してもよい。具体的には、開発ツール50は、エラーの提示回数がK回未満の場合には、エラーを提示して対処法を提示せず、エラーの提示回数がK回以上の場合には、エラーと共に対処法も表示する。
図31は、対処法の他の提示例を示す図である。
上述の例では、対処法はメッセージとして提示されるが、開発ツール50は、図31に示すように、他の態様で対処法を提示してもよい。例えば、開発ツール50は、エラーを回避するために追加すべき機能ブロックがブロック一覧から容易に選択され得る態様で、その対処法を提示する。つまり、開発ツール50は、組み合わせルールに示される第2のブロックの前に第1のブロックが配置されていないと判定すると、図32に示すように、ブロック一覧を表示する。このブロック一覧では、その第2のブロックの前に配置されるべき第1のブロックである機能ブロックのみが、そのブロック一覧に含まれる他の機能ブロックと異なる態様で表示される。具体的には、洗濯機のブロック一覧のうち、脱水の機能ブロックの前に追加すべき排水の機能ブロックのみが明るく表示され、他の機能ブロックは暗く表示される。これにより、アプリケーション開発者である操作者は、その排水の機能ブロックを容易に選択して選択ブロック領域D4に追加することができ、アプリケーションの変更の操作性を高めることができる。
図32は、対処法のさらに他の提示例を示す図である。
上述の例では、対処法はメッセージのみで提示されるが、開発ツール50は、図32に示すように、矢印などのオブジェクトを用いて対処法を提示してもよい。例えば、開発ツール50は、機能ブロックFB34と機能ブロックFB37とがルールに該当すると判定すると、それらの機能ブロックの順番を逆にする第2の対処法を、メッセージと矢印とで提示する。これにより、アプリケーション開発者である操作者は、それらの機能ブロックの順番を逆にしてエラーを容易に回避することができ、アプリケーションの変更の操作性を高めることができる。
[5.4 効果など]
以上のように、本実施の形態では、ブロックを含むアプリケーションとルールデータベースとにより、多様多種でかつ安全なアプリケーションを開発可能な環境を提供することができる。したがって、その環境下で自由に開発したアプリケーションに対して、物理的に運動するアクチュエータ22、又は熱エネルギーを出力する加熱器23の安全な駆動することを可能にしている。その結果、例えば、自由度の高い多様多種なアプリケーションの開発と、安全性を担保するためのルールデータベースの開発とを並行して作成することが可能になり、多様多種でかつ安全なアプリケーションを早期に開発することを可能にすることができる。
また、本実施の形態と、実施の形態1~4のうちの何れかの形態とを組み合わせれば、アプリケーションの提供後においても、ルールデータベースを変更することで、より安全性を担保したアプリケーションへの変更も可能になる。また、事前に製造者が想定しない状況の改善が必要になった場合においても、多様多種なアプリケーション自体を変更せずとも、アプリケーションとは独立して、ルールデータベースが規定されているため、そのルールデータベースを更新することで、全てのアプリケーションへの対応が可能になる。
具体的には、本実施の形態における情報処理方法は、開発ツール50のようなコンピュータシステムによって実行される情報処理方法である。そして、この情報処理方法では、(a)制御対象機器である装置20に備えられているアクチュエータ22及び加熱器23の少なくとも1つを駆動するためのN個(Nは2以上の整数)のブロックから、操作者による入力操作に応じて、M個(Mは1以上かつN以下の整数)のブロックのそれぞれを選択ブロックとして選択し、(b)少なくともそのM個の選択ブロックのそれぞれが実行される順番を、操作者による入力操作に応じて設定することで、少なくともそのM個の選択ブロックを含むアプリケーションを生成し、(c)所定の2以上のブロックの1つが実行される場合にその所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止するルールを参照して、そのアプリケーションに含まれるM個の選択ブロックが上記ルールに該当する場合、そのアプリケーションを変更し、(d)変更したアプリケーションを出力する。
これによれば、M個のブロックで規定されたアプリケーションに基づいてアクチュエータ22及び/又は加熱器23を駆動することができる。したがって、装置20の制御を抽象化したブロックを用いたアプリケーションの開発が可能となり、多種多彩なアプリケーションを製造者だけではなく、サードパーティも開発することができ、これらのアプリケーションを装置20で簡単に実行することが可能となる。さらに、この開発時には、上述のルールに該当するM個の選択ブロックを含むアプリケーションが自動的に変更される。その結果、そのアプリケーションを、ルールに該当しないM個の選択ブロックを含むアプリケーションに自動的に変更することができる。したがって、所定の2以上のブロックのうちの1つのブロックが残りの少なくとも1つのブロックと組み合わせて実行されることを担保することができる。つまり、もし、アプリケーション開発者である操作者が、単独での実行が許容されないブロックを単独で実行するように、アプリケーションを誤って生成した場合でも、装置20を安全に制御することができないアプリケーションが生成されることを抑制することができる。したがって、アプリケーション開発者が、アクチュエータ22及び/又は加熱器23のユーザに適することを重視したアプリケーションを作成または生成した場合でも、そのアプリケーションで制御される装置20の安全性を担保することができ、その安全性を向上させることができる。
また、上記(c)では、(1)M個の選択ブロックに新たなブロックを追加し、(2)M個の選択ブロックの順番を変更し、又は、(3)M個の選択ブロックのうちいずれかのブロックを削除することで、アプリケーションを変更してもよい。
より具体的には、その所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、ルールは、第2のブロックが実行される前に、第1のブロックが実行されないことを禁止する。そして、上記(c)では、アプリケーションが第2のブロックを含み、かつ、第2のブロックの前に第1のブロックを含まない場合に、第2のブロックの前に、第1のブロックを追加することで、アプリケーションを変更してもよい。
また、上記(c)では、アプリケーションが、第1のブロック及び第2のブロックを含み、かつ、第2のブロックの前に第1のブロックを含まない場合に、第1のブロックの順番を第2のブロックの順番よりも前に変更することで、アプリケーションを変更してもよい。
また、上記(c)では、アプリケーションが第2のブロックを含み、かつ、第2のブロックの前に第1のブロックを含まない場合に、第2のブロックを削除することで、アプリケーションを変更してもよい。
これらによれば、アプリケーションの開発時に、新たなブロックを追加、ブロックの順番を変更、又は、ブロックを削除することで、第2のブロックの前に第1のブロックが実行されることを担保することができる。したがって、アプリケーションの開発者、または、アクチュエータ22及び加熱器23を制御する装置20に組み込まれるソフトウェアの開発者は、アプリケーション一つ一つの安全性を毎回チェックすることなく、装置20の安全性を担保することができる。
また、具体的には、上記ルールは、アプリケーションの開始から第2のブロックが実行される前までに、第1のブロックが実行されないことを禁止してもよい。さらに、第1のブロックは、第2のブロックを実行可能な環境に設定するためのブロックであってもよい。
また、上述の所定の2以上のブロックは、第2のブロック及び第3のブロックを含み、ルールは、第2のブロックが実行された後に、第3のブロックが実行されないことを禁止してもよい。この場合、上記(c)では、アプリケーションが第2のブロックを含み、かつ、第2のブロックの後に第3のブロックを含まない場合に、第2のブロックの後に、第3のブロックを追加することで、アプリケーションを変更してもよい。
また、上記(c)では、アプリケーションが、第2のブロック及び第3のブロックを含み、かつ、第2のブロックの後に第3のブロックを含まない場合に、第3のブロックの順番を第2のブロックの順番よりも後に変更することで、アプリケーションを変更してもよい。
また、上記前記(c)では、アプリケーションが第2のブロックを含み、かつ、第2のブロックの後に第3のブロックを含まない場合に、第2のブロックを削除することで、アプリケーションを変更する。
これらによれば、アプリケーションの開発時に、新たなブロックを追加、ブロックの順番を変更、又は、ブロックを削除することで、第2のブロックの後に第3のブロックが実行されることを担保することができる。したがって、アプリケーションの開発者、または、アクチュエータ22及び加熱器23を制御する装置20に組み込まれるソフトウェアの開発者は、アプリケーション一つ一つの安全性を毎回チェックすることなく、装置20の安全性を担保することができる。
また、具体的には、上記ルールは、第2のブロックが実行された後からアプリケーションの終了までに、第3のブロックが実行されないことを禁止してもよい。また、第3のブロックは、第2のブロックの実行により変化した環境を第2のブロックの実行前の環境に戻すためのブロックであってもよい。
また、ルールは、アクチュエータ22及び加熱器23の少なくとも1つを耐久温度に到達させないために上記所定の2以上のブロックが組み合わせて実行されることを担保するためのルールであってもよい。
これによれば、アプリケーションが実行されたときにアクチュエータ22及び/又は加熱器23が耐久温度に到達することを抑制することができ、アプリケーションで制御される装置20の安全性を向上させることができる。
また、制御対象機器である装置20は、内部空間を有する筐体21を備え、ルールは、その内部空間を耐久温度に到達させないために上記所定の2以上のブロックが組み合わせて実行されることを担保するためのルールであってもよい。
これによれば、アプリケーションが実行されたときに筐体21の内部空間が耐久温度に到達することを抑制することができ、アプリケーションで制御される装置20の安全性を向上させることができる。
また、上記(c)では、生成されるアプリケーションが、制御対象機器専用のアプリケーションか、その制御対象機器と、その制御対象機器以外の機器とに適用される汎用のアプリケーションかを判定し、所定の2以上のブロックの1つが実行される場合にその所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止する複数のルール候補のうちの、そのアプリケーションの判定結果に応じたルール候補を、ルールとして参照してもよい。
これによれば、専用のアプリケーションと汎用のアプリケーションのように、アプリケーションのバリエーションを増やすことができる。さらに、それらのバリエーションに適したルールが参照されるため、それらのバリエーションのそれぞれで、そのバリエーションのアプリケーションを適切に変更することができる。
また、本実施の形態における情報処理方法は、開発ツール50のようなコンピュータシステムによって実行される情報処理方法であって、エラーを提示してもよい。つまり、情報処理方法は、(a)制御対象機器である装置20に備えられているアクチュエータ22及び加熱器23の少なくとも1つを駆動するためのN個(Nは2以上の整数)のブロックから、操作者による入力操作に応じて、M個(Mは2以上かつN以下の整数)のブロックのそれぞれを選択ブロックとして選択し、(b)少なくともそのM個の選択ブロックのそれぞれが実行される順番を、操作者による入力操作に応じて設定することで、少なくともそのM個の選択ブロックを含むアプリケーションを生成し、(c)所定の2以上のブロックの1つが実行される場合にその所定の2以上のブロックの残りの少なくとも1つが実行されないことを禁止するルールを参照して、アプリケーションに含まれるM個の選択ブロックがそのルールに該当する場合には、操作者に対してエラーを提示し、(d)そのエラーの提示を受けた操作者による入力操作に応じて、アプリケーションを変更し、(e)その変更したアプリケーションを出力する。
これによれば、アプリケーション開発者である操作者が、単独での実行が許容されないブロックを単独で実行するように、アプリケーションを誤って生成した場合には、エラーが提示されるため、装置20を安全に制御することができないアプリケーションが生成されることを抑制することができる。つまり、上述のようにアプリケーションが自動的に変更される場合と同様の効果を奏することができる。
また、上記(c)では、さらに、エラーに対する複数の対処法を提示し、上記(d)では、そのエラーおよび複数の対処法の提示を受けた操作者による入力操作に応じて、M個の選択ブロックのそれぞれが実行される順番を変更することでアプリケーションを変更してもよい。つまり、本実施の形態における情報処理方法は、開発ツール50のようなコンピュータシステムによって実行される情報処理方法であって、エラーを提示すると同時に複数の対処法を提示しても良い。
これによれば、エラー提示を確認した操作者が、アプリケーションを変更する手間を低減することが出来る。
また、その複数の対処法は、M個の選択ブロックに新たなブロックを追加する第1の対処法と、M個の選択ブロックの順番を変更する第2の対処法と、M個の選択ブロックのうちいずれかのブロックを削除する第3の対処法とのうちの少なくとも2つを含んでもよい。
これにより、操作者は、複数の対処法のうちの何れか1つの対処法にしたがって、エラーを適切に回避しながら、アプリケーションを変更することができる。また、操作者が対処法を選択する際に、操作者がアプリケーションを作成する意図を満たす選択肢(すなわち対処法)を選択することができる。
また、上記(c)では、さらに、複数の対処法のそれぞれが行われた場合における、アクチュエータ22又は加熱器23の駆動によって作用される物体への影響、またはそのアプリケーションへの影響を提示してもよい。つまり、本実施の形態における情報処理方法は、開発ツール50のようなコンピュータシステムによって実行される情報処理方法であって、エラーに対する対処法を提示するとともに、その対処法を実施することによってアプリケーションに及ぼす影響を同時に提示しても良い。
これによれば、操作者が対処法を選択する際に、操作者がアプリケーションを作成する意図に沿って直観的に選択することが出来る。
また、この情報処理方法では、上記(d)の後に、上記(c)および(d)を繰り返し実行し、エラーの提示回数がK回(Kは2以上の整数)以上の場合に、エラーに対する複数の対処法を操作者に提示してもよい。
これによれば、エラーの提示が繰り返される場合には、複数の対処法が提示されるため、操作者は、M個の選択ブロックのそれぞれが実行される順番を、それらの対処法にしたがって簡単に変更することができ、安全なアプリケーションをより簡単に生成することができる。
(実施の形態5の変形例)
装置20のハードウェアがアプリケーションによって安全に動くか否かは、そのハードウェアの環境条件に依存する。したがって、そのアプリケーションのルールは、最も厳しい環境条件に合わせて決定されるべきである。そのため、ある環境条件では、ハードウェアの機能を最大限に活かすことができない可能性がある。
そこで、本変形例における開発ツール50は、アプリ制作者がデバイス製造者である場合には、そのアプリ制作者が製造した装置20に用いられるアプリケーションの開発および制作を、ルールを利用せずに行う。その理由は、アプリ制作者であれば、そのアプリ制作者によって製造された装置20を安全に動かすための環境条件を理解しているからである。なお、アプリ制作者は、アプリケーションの開発または制作を行う者、団体、または企業であって、アプリケーションの開発者とも呼ばれる。また、デバイス製造者は、装置20などの機器の製作または製造を行う者、団体、または企業であって、装置20の製作者または製造業者とも呼ばれる。
つまり、本変形例における開発ツール50は、アプリ制作者とデバイス製造者とが異なる場合には、ルールを利用したアプリケーションの開発を行い、アプリ制作者とデバイス製造者とが同じ場合には、ルールを利用せずに、アプリケーションの開発を行う。
より具体的には、実施の形態5では、上述のように、アプリケーションが開発または制作される段階で、そのアプリケーションがルールにしたがって変更される。本変形例では、この段階でも、実施の形態3のように、アプリ制作者とデバイス製造者とが同一である場合には、アプリケーションの変更をスキップする。
図33は、本変形例における開発ツール50の処理動作を示すフローチャートである。
(ステップS51)
まず、開発ツール50は、機能ブロックの配置処理およびパラメータ設定処理を行うことによって、アプリケーションを生成する。つまり、開発ツール50は、制御対象機器である装置20に備えられているアクチュエータ及び加熱器の少なくとも1つを駆動するための1以上の機能ブロックを含むアプリケーションを生成する。例えば、開発ツール50は、このステップS51において、図23のステップS21~23の処理を実行する。
その後、開発ツール50は、実施の形態3と同様に、ステップS2161B、S2163B、S2164B、S2165、S2166およびS2167を実行する。具体的には、開発ツール50は、以下のように動作する。
(ステップS2161B)
開発ツール50は、アプリ制作者情報を取得することによって、アプリケーションの制作者(すなわちアプリ制作者)を特定する。
(ステップS2163B)
開発ツール50は、デバイス製造者情報を取得することによって、制御対象機器である装置20の製造者(すなわちデバイス製造者)を特定する。
(ステップS2164B)
開発ツール50は、アプリ制作者とデバイス製造者とが異なるか否かを判定する。言い換えれば、開発ツール50は、アプリケーションの制作者と、上述の制御対象機器の製造者とが一致しているか否かを判定する。
(ステップS2165)
開発ツール50は、アプリ制作者とデバイス製造者とが一致していない場合には(ステップS2164BのYes)、アプリケーションに含まれる1以上のブロックに関するルールを取得する。
(ステップS2166)
開発ツール50は、アプリケーションに含まれる1以上の機能ブロックがルールに該当するか否かを判定する。
(ステップS2167)
開発ツール50は、それらの1以上の機能ブロックがルールに該当すると判定すると(ステップS2166のYes)、そのルールにしたがってアプリケーションを変更する。
(ステップS52)
開発ツール50は、アプリ制作者とデバイス製造者とが一致している場合には(ステップS2164BのNo)、アプリケーションに情報を付加する付加処理を行う。付加処理では、開発ツール50は、第1付加情報と、第2付加情報および第3付加情報のうちの少なくとも一方の情報とを、アプリケーションに付加する。第1付加情報は、そのアプリケーションにルールが適用されていないことを示す情報である。第2付加情報は、そのアプリケーションが生成された時期を示す情報である。例えば、第2付加情報は、アプリケーションが生成された日付を示す。その日付は、以下、アプリ作成日とも呼ばれる。また、第3付加情報は、アプリ制作者が機器の製造者である場合に、その製造者を識別するための製造者識別情報である。
(ステップS53)
開発ツール50は、ステップS2167の処理の後には、変更されたアプリケーションを出力する。一方、開発ツール50は、ステップS52の処理の後には、付加処理済みのアプリケーションを出力する。つまり、開発ツール50は、アプリ制作者とデバイス製造者とが一致している場合には(ステップS2164BのNo)、ルールをアプリケーションに適用することなく、情報が付加されたアプリケーションを出力する。
このように、本変形例における情報処理方法は、開発ツール50のようなコンピュータシステムによって実行される情報処理方法である。そして、この情報処理方法では、制御対象機器に備えられているアクチュエータ及び加熱器の少なくとも1つを駆動するための1以上のブロックを含むアプリケーションを生成し、そのアプリケーションの制作者を特定し、その制御対象機器の製造者を特定し、そのアプリケーションの制作者と、その制御対象機器の製造者とが一致しているか否かを判定し、(a)アプリケーションの制作者と、制御対象機器の製造者とが一致していない場合には、そのアプリケーションに含まれる1以上のブロックに関するルールを取得し、そのルールにしたがってアプリケーションを変更し、変更されたアプリケーションを出力し、(b)アプリケーションの制作者と、制御対象機器の製造者とが一致している場合には、ルールをアプリケーションに適用することなくそのアプリケーションを出力する。
したがって、本変形例では、アプリ制作者とデバイス製造者とが異なる場合には、アプリケーションへのルールの適用によって、そのアプリケーションが変更されるため、実施の形態5と同様の効果を実現することができる。さらに、アプリ制作者とデバイス製造者とが同じ場合には、実施の形態3と同様に、ルールの適用とアプリケーションの変更が省かれるため、処理負荷の軽減を図ることができる。さらに、その場合には、ルールが適用されていないアプリケーションによって、制御対象機器である装置20のハードウェアが動作するため、そのハードウェアの機能を有効に活用することができる。
また、本変形例における情報処理方法の上述の(b)では、さらに、第1付加情報と、第2付加情報および第3付加情報のうちの少なくとも一方の情報とを、そのアプリケーションに付加する付加処理を行う。そのアプリケーションの出力では、付加処理済みのアプリケーションを出力する。ここで、第1付加情報は、アプリケーションにルールが適用されていないことを示す情報であり、第2付加情報は、そのアプリケーションが生成された時期を示す情報である。また、第3付加情報は、そのアプリケーションの制作者が機器の製造者である場合に、その製造者を識別するための情報である。
したがって、本変形例では、アプリケーションにルールが適用されていない場合には、制御対象機器である装置20のデバイス300は、情報が付加されたアプリケーションを取得する。
例えば、アプリケーションに第1付加情報および第2付加情報が付加されている場合、デバイス300は、その第1付加情報がアプリケーションに付加されているため、そのアプリケーションに対してルールを適用するか否かを判定することができる。具体的には、デバイス300は、そのアプリケーションに付加されている第2付加情報に基づいて、ルールの適用の判定を適切に行うことができる。例えば、デバイス300は、ルールの更新日を特定し、その更新日が、第2付加情報によって示されるアプリ作成日以前であれば、アプリケーションに対してルールを適用しないと判定することができる。その結果、デバイス300は、ルールの適用とアプリケーションの変更とを省くことができる。つまり、開発ツール50と同様に、デバイス300でも、処理負荷の軽減を図ることができる。
一方、デバイス300は、その更新日がアプリ作成日よりも後であれば、アプリケーションに対して更新後のルールを適用すると判定することができる。つまり、生成されたアプリケーションが古い場合に、その古いアプリケーションによって装置20が動作すると、その装置20の安全性を担保することが難しい場合がある。しかし、このような場合には、第2付加情報によって、その古いアプリケーションに対してルールが適用されて、アプリケーションが変更される。したがって、装置20の安全性を容易に担保することができる。
また、例えば、アプリケーションに第1付加情報および第3付加情報が付加されている場合でも、デバイス300は、その第1付加情報がアプリケーションに付加されているため、そのアプリケーションに対してルールを適用するか否かを判定することができる。具体的には、デバイス300は、そのアプリケーションに付加されている第3付加情報に基づいて、ルールの適用の判定を適切に行うことができる。例えば、デバイス300は、そのデバイス300を含む装置20の製造者が、第3付加情報である製造者識別情報によって識別される製造者と一致するか否かを判別する。そして、デバイス300は、それらの製造者が一致すると判別すると、アプリケーションに対してルールを適用しないと判定することができる。その結果、デバイス300は、ルールの適用とアプリケーションの変更とを省くことができる。つまり、開発ツール50と同様に、デバイス300でも、処理負荷の軽減を図ることができる。
一方、デバイス300は、それらの製造者が一致しないと判別すると、アプリケーションに対してルールを適用すると判定することができる。例えば、生成されたアプリケーションは、アプリ制作者によって製造された制御対象機器である装置20だけでなく、他のデバイス製造者によって製造された装置20にも用いられる場合がある。他のデバイス製造者によって製造された装置20が、そのアプリケーションによって動作すると、その装置20の安全性を担保することが難しい場合がある。しかし、このような場合には、第3付加情報によって、そのアプリケーションに対してルールが適用されて、アプリケーションが変更される。したがって、他のデバイス製造者によって製造された装置20の安全性を容易に担保することができる。
なお、上述の例では、デバイス300が、アプリケーションに付加されている情報に基づいて、ルールの適用およびアプリケーションの変更を行う。しかし、実施の形態1~4と同様に、デバイス300の代わりにデバイスマネージャ200などが、アプリケーションに付加されている情報に基づくルールの適用およびアプリケーションの変更を行ってもよい。
(他の実施の形態)
以上、本開示の1つまたは複数の態様に係るシステムについて、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本開示の1つまたは複数の態様の範囲内に含まれてもよい。
また、上記各実施の形態において、シーケンスマネージャ100及びデバイスマネージャ200は、クラウドサーバ10に含まれていたが、これに限定されない。シーケンスマネージャ100及び/又はデバイスマネージャ200は、装置20に含まれてもよい。また、UI400は、端末30に含まれていたが、装置20に含まれてもよい。
また、上記各実施の形態において、劣化情報に基づいて、アプリケーションが変更されてもよい。例えば、デバイス300は、複数の劣化レベルと複数のパラメータの変換方法とが対応付けられたパラメータ変換情報を参照して、劣化レベルに対応する変換方法を取得し、取得した変換方法を用いてブロックに含まれるパラメータを変換してもよい。変換方法としては、例えば、変換後の値で定義されてもよいし、変換前の値に適用される係数で定義されてもよい。
また、上記各実施の形態では、実行前確認においてアプリケーションを変更し、その後アプリケーションが実行されていたが、これに限ったものではない。例えば、デバイス300の状態が想定と異なっていたときは、アプリケーションを変更せず、デバイスマネージャ200及び/又はシーケンスマネージャ100に実行中止(エラー)が通知されてもよい。