(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-04
(45)【発行日】2023-12-12
(54)【発明の名称】コンテントの出力制御装置、出力制御方法及び出力制御プログラム
(51)【国際特許分類】
G06F 3/04842 20220101AFI20231205BHJP
G09G 5/00 20060101ALI20231205BHJP
B60R 16/02 20060101ALN20231205BHJP
【FI】
G06F3/04842
G09G5/00 555M
G09G5/00 555P
G09G5/00 550X
B60R16/02 640K
(21)【出願番号】P 2021028655
(22)【出願日】2021-02-25
【審査請求日】2023-02-01
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】110000567
【氏名又は名称】弁理士法人サトー
(72)【発明者】
【氏名】角田 悠花里
(72)【発明者】
【氏名】手嶋 健太郎
(72)【発明者】
【氏名】川嶋 大義
(72)【発明者】
【氏名】近藤 卓哉
【審査官】佐賀野 秀一
(56)【参考文献】
【文献】特開2020-106992(JP,A)
【文献】特開2009-229172(JP,A)
【文献】特開2000-056826(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/04842
G09G 5/00
B60R 16/02
(57)【特許請求の範囲】
【請求項1】
エリア又はゾーンにコンテントを割り当てる場合の基本的な調停を定義した調停ポリシーと、制約式とを含むルール定義を記憶する記憶部(12)と、
アプリケーションからの出力要求を受け付けると、前記ルール定義にしたがってルールベース調停を満たすようにコンテントの調停を行う調停部(13)と、
前記調停部によりコンテントの調停が行われたことで前記エリア又は前記ゾーンに割り当てられたコンテントの出力を制御する出力制御部(14)と、を備え、
前記調停部は、エリア又はゾーンの再調停を行った場合に、その再調停を行ったことによって影響を与えた影響エリアとして特定したエリア又は影響ゾーンとして特定したゾーンの再調停を行うコンテントの出力制御装置。
【請求項2】
前記調停部は、制約式を評価した評価結果を解析し、前記影響エリア又は前記影響ゾーンを特定する請求項1に記載したコンテントの出力制御装置。
【請求項3】
前記調停部は、アプリケーションからの出力要求を受け付ける前に、制約式を評価した評価結果を解析し、前記影響エリア又は前記影響ゾーンを特定しておく請求項2に記載したコンテントの出力制御装置。
【請求項4】
前記調停部は、前記影響エリアとして特定したエリア又は前記影響ゾーンとして特定したゾーンの再調停を1回のみ行う請求項1から3の何れか一項に記載したコンテントの出力制御装置。
【請求項5】
エリア又はゾーンにコンテントを割り当てる場合の基本的な調停を定義した調停ポリシーと、制約式とを含むルール定義を記憶する記憶部(12)を備えるコンテントの出力制御装置(10)において、
アプリケーションからの出力要求を受け付けると、前記ルール定義にしたがってルールベース調停を満たすようにコンテントの調停を行う調停手順と、
前記調停手順によりコンテントの調停が行われたことで前記エリア又は前記ゾーンに割り当てられたコンテントの出力を制御する出力制御手順と、
エリア又はゾーンの再調停を行った場合に、その再調停を行ったことによって影響を与えた影響エリアとして特定したエリア又は影響ゾーンとして特定したゾーンの再調停を行う再調停手順と、を行うコンテントの出力制御方法。
【請求項6】
エリア又はゾーンにコンテントを割り当てる場合の基本的な調停を定義した調停ポリシーと、制約式とを含むルール定義を記憶する記憶部(12)を備えるコンテントの出力制御装置(10)に、
アプリケーションからの出力要求を受け付けると、前記ルール定義にしたがってルールベース調停を満たすようにコンテントの調停を行う調停手順と、
前記調停手順によりコンテントの調停が行われたことで前記エリア又は前記ゾーンに割り当てられたコンテントの出力を制御する出力制御手順と、
エリア又はゾーンの再調停を行った場合に、その再調停を行ったことによって影響を与えた影響エリアとして特定したエリア又は影響ゾーンとして特定したゾーンの再調停を行う再調停手順と、を実行させるコンテントの出力制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンテントの出力制御装置、出力制御方法及び出力制御プログラムに関する。
【背景技術】
【0002】
ルールベース調停(参考文献:調停ロジック仕様書、ルールベース構文定義書)では、ワンパスロジックによりエリア又はゾーンの価値の高い順に調停対象とし、エリア毎又はゾーン毎にコンテントを割り当てていく。コンテントを割り当てた後に制約式を評価し、全ての制約式が真となれば、コンテントの割り当てが成功となり、何れかの制約式が偽であれば、次のコンテントを割り当てて制約式を評価し直す。エリア又はゾーンでコンテントが割り当たる、又は割り当てられるコンテントがなかった場合は、次のエリア又はゾーンに移る。これでは右辺と左辺に重みがなく、「左辺が成立した後で、右辺を成立させたい」という仕様開発者の意図通りの結果を得られない場合がある。一方、特許文献1では、制約式の左辺が成立しており、右辺が決定済みの場合に、右辺のエリア又はゾーンの再調停を行うロジックを用いている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に開示されている調停ロジックでは、依然として仕様開発者の意図通りの結果を得られない場合がある。なぜならば、再調停を行ったことによってエリア又はゾーンの状態が変化した時に、その再調停を行ったエリア又はゾーンの再調停前の状態によって制約を受けていたエリア又はゾーンは制約が解消されることになるが、その解消された制約を加味した結果を得ることができないからである。このような事情から、再調停を行ったことによってエリア又はゾーンの状態が変化した時に、その再調停を行ったエリア又はゾーンの再調停前の状態によって制約を受けていたエリア又はゾーンを再調停する仕組みが必要である。
【0005】
本発明は、上記した事情に鑑みてなされたもので、その目的は、再調停を行ったことによってエリア又はゾーンの状態が変化した時に、仕様開発者の意図通りの結果を適切に得ることができるコンテントの出力制御装置、出力制御方法及び出力制御プログラムを提供することにある。
【課題を解決するための手段】
【0006】
請求項1に記載した発明によれば、記憶部(12)は、エリア又はゾーンにコンテントを割り当てる場合の基本的な調停を定義した調停ポリシーと、制約式とを含むルール定義を記憶する。調停部(13)は、アプリケーションからの出力要求を受け付けると、ルール定義にしたがってルールベース調停を満たすように調停を行う。出力制御部(14)は、調停部により調停が行われたことでエリア又はゾーンに割り当てられたコンテントの出力を制御する。調停部は、エリア又はゾーンの再調停を行った場合に、その影響エリアとして特定したエリア又は影響ゾーンとして特定したゾーンの再調停を行う。
【0007】
エリア又はゾーンの再調停を行うと、その再調停を行ったことによって影響を与えた影響エリアとして特定したエリア又は影響ゾーンとして特定したゾーンの再調停を行うことで、再調停前の状態によって制約を受けていたエリア又はゾーンは制約が解消され、更に解消された制約を加味した結果を得ることができる。これにより、再調停を行ったことによってエリア又はゾーンの状態が変化した時に、仕様開発者の意図通りの結果を適切に得ることができる。
【図面の簡単な説明】
【0008】
【
図1】一実施形態における表示制御装置の構成を示す機能ブロック図
【
図5】エリアのZオーダーと優先度との関係を示す図
【
図9】制約式の左辺が偽の場合に評価結果が真となる真理値を示す図
【
図11】制約式が仕様開発者の意図と異なる例を示す図
【
図12】調停ロジック全体の振る舞いを示すフローチャート
【
図15】一のエリアにコンテントを割り当てる場合を説明する図
【
図16】複数のエリアにコンテントを割り当てる場合を説明する図
【
図17】エリアとコンテントと制約式の定義を示す図
【
図22】調停中エリア登録処理を示すフローチャート(その1)
【
図23】調停中エリア登録処理を示すフローチャート(その2)
【発明を実施するための形態】
【0009】
以下、一実施形態について図面を参照して説明する。本実施形態では、コンテントをエリアに表示する態様について説明するが、コンテントをゾーンに音声出力する態様についても適用することができる。即ち、コンテントの出力とは、コンテントの表示と音声出力との両方の概念を含み、出力されるコンテントは、表示されるコンテントと音声出力されるコンテントとの両方の概念を含む。
図2に示すように、車両の車室1内には運転席2と助手席3とが配置されており、それらの前方にインストルメントパネル4が配置されている。インストルメントパネル4の前端にはフロントガラス5が立ち上がるように実装されている。インストルメントパネル4には第1表示装置6及び第2表示装置7が配置され、フロントガラス5には第3表示装置8が配置されている。
【0010】
第1表示装置6は、例えばフルカラーの液晶表示装置から構成されるセンターディスプレイであり、基本的に車両走行制御に関係しない非走行系のコンテントを表示する表示部として機能する。非走行系のコンテントは、例えばナビゲーション用の地図情報、オーディオ情報、電話情報等である。又、第1表示装置6は、車両の後進時にリアカメラにより撮像された車両後方の映像を表示する表示部としても機能する。
【0011】
第2表示装置7は、例えばフルカラーの液晶表示装置から構成されるメータディスプレイであり、基本的に車両走行制御に関係する走行系のコンテントを表示する表示部として機能する。走行系のコンテントは、例えば車速、エンジン回転数、シフトポジション、燃料の残量等である。
【0012】
第3表示装置8は、インストルメントパネル4に配置されている表示ユニット9からフロントガラス5に映像が投影されるヘッドアップディスプレイであり、第2表示装置7と同様に、基本的に走行系のコンテントを表示する表示部として機能する。各表示装置6~8にはコンテントを表示するエリアが1つ又は複数設定されている。このような構成では、各表示装置6~8にコンテントが表示されることで、走行系のコンテントや非走行系のコンテントから構成される各種情報が乗員に提供される。
【0013】
図1に示すように、表示制御装置10は、制御部11を有し、各表示装置6~8に設定されたエリアにコンテントを表示する。制御部11は、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、I/O(Input/Output)等を含むマイクロコンピュータを有しており、非遷移的実体的記憶媒体に格納されている表示制御プログラムを実行する。表示制御装置10は、コンテントの出力制御装置に相当する。
【0014】
表示制御装置10には複数のアプリケーションA~Cが予め記憶されている。各アプリケーションA~Cは、一つ又は複数の表示装置6~8の所定のエリアに対するコンテントの表示要求が発生すると、表示対象の表示装置、エリア及びコンテントを示すAPP(application)要求を制御部11に割り込み出力する。
【0015】
制御部11は、記憶部12と、調停部13と、表示制御部14とを備える。表示制御部14は、出力制御部に相当する。制御部11は、出力制御プログラムを実行することにより、表示制御装置10の動作を制御する。記憶部12は、ルール定義を記憶している。ルール定義は、エリアにコンテントに割り当てる場合の基本的な調停を定義した調停ポリシーと、例外的に満たすべき性質を記述した制約式とを含む。
【0016】
調停ポリシーは、後述するように優先度調停/後勝ち調停/価値ベース調停の何れかで必ず設定される。制約式は、1つに限定されることはなく、仕様開発者の意図に応じて設けられない場合もあるし複数設けられる場合もある。
【0017】
調停部13は、アプリケーションからの表示要求を受け付けると、ルール定義にしたがってルールベース調停を満たすようにコンテントの調停を行う。表示制御部14は、入出力I/F15を介して各種ECU16、各種センサ17、各種スイッチ18、自動運転装置19等と例えばCAN(Controller Area Network)等の車載ネットワーク20により接続されている。表示制御部14は、調停部13により所定のエリアに割り当てられたコンテントの表示を制御する。調停ロジックはライブラリとして作成することができ、ルール定義をライブラリに登録又は変更することによりルールベース調停を任意に設定することができる。
【0018】
エリアにコンテントを割り当てる場合、異なるアプリケーションが同時にAPP要求を出力する場合があり、このような場合に調停が必要となる。尚、「同時」とは時間的に同時という意味ではなく、アプリケーションからAPP要求が出力された場合に、他のアプリケーションのコンテントが既に表示されている状態、即ち、2つのアプリケーションからのAPP要求が同時にオンとなった状態を意味する。
【0019】
APP要求が同時にオンとなった場合には、エリアに表示するコンテントを調停する必要がある。何れのコンテントを何れのエリアに表示するのかという全ての振る舞いを定義する構成では、コンテントの数が多くなると、振る舞いの全てを定義することが困難となる。このような事情から、本実施形態では、何れのコンテントを何れのエリアに表示するかを抽象化して表したルールベース調停を採用している。以下、ルールベース調停について説明する。
【0020】
1.ルールベース調停
(1)ルール定義
ルールベース調停は、与えられた一定のルールに基づいてコンテントを調停して任意のエリアに割り当てる調停方法を記述している。ルールベース調停におけるルールの定義としては、エリア定義、コンテント定義、制約式が必要である。
【0021】
(1-1)エリア定義
エリア定義では、表示場所、表示場所の価値、調停ポリシーが定義される。調停はエリア毎に行われるので、エリア毎に調停ポリシーを定義する。
エリアでは表示装置6~8の表示画面にコンテントを表示させる枠を定義する。1つのエリアには高々1つのコンテントのみが割り当てられる。
エリアは以下の定義とする。
(a)エリアは、割り当てられたコンテントを表示する。
(b)エリアは、調停ポリシーを持つ。
(c)エリアは、表示させることが可能なコンテントを参照する。
(d)エリアは、1つ以上のサイズを持つ。
各エリアはプロパティを有している。プロパティとして、優先度、Zオーダー、調停ポリシー、サイズが設定されている。
(a)優先度
優先度は、エリア自体の価値を示す値(0~100%)である。この値が大きいエリアから順に調停を行う。
(b)Zオーダー
Zオーダーは、高さに関する座標である。この値が高いほど前面に表示される。優先度が同じエリアがある場合、この値が高い順に調停を行う。
【0022】
(c)調停ポリシー
調停ポリシーは、優先度調停/後勝ち調停/価値ベース調停の何れかである。
(c-1)優先度調停
優先度調停は、エリア単位の調停ポリシーであり、
図3に示すように、エリアに表示可能なコンテントの中で最も優先度の高いコンテントを表示する調停である。
(c-2)後勝ち調停
後勝ち調停は、エリア単位の調停ポリシーであり、
図4に示すように、エリアで最後に要求が発生したコンテントを表示し、そのコンテントの表示が終了した場合は残っている中で最後に要求が発生したコンテントを表示する調停である。
(c-3)価値ベース調停
価値ベース調停は、エリア全体での調停ポリシーであり、コンテントの価値を数値化した数値とエリアの価値を数値化した数値とを乗じた演算値が最大となるコンテントを表示する調停である。
(d)サイズ
サイズは、エリアのサイズで縦×横となる。複数定義されていた場合、コンテントのサイズに応じて決定される。エリアのZオーダーと優先度との関係は
図5に示す通りになる。
【0023】
(1-2)コンテント定義
コンテント定義では表示可能エリア、コンテントの状態、コンテントの状態の価値が定義される。コンテントは状態を複数持つことが可能であり、コンテントがエリアに割り当てられ、コンテントの状態が表示される。コンテントは自分が表示可能なエリアを定義して参照する。
コンテントでは表示装置6~8の表示画面に定義されたエリアに表示するコンテントを定義する。1つのエリアには1つのコンテントのみが割り当てられる。
コンテントは以下の定義とする。
(a)コンテントは、エリアに対して割り当てられる。
(b)コンテントは、自らが表示可能なエリアを1つ以上参照する。
(c)コンテントは、必ず1つ以上の状態を持つ。
(d)コンテントは、1つ以上のサイズを持つ。
【0024】
表示可能なエリアが複数ある場合、どちらも表示可能であることを示し、1つのコンテントを複数エリアに同時に表示することもできる。1つのコンテントに複数の状態を持つことができ、複数持っている場合、それぞれの状態は排他的であり必ず1つの状態でしか一度に表示することができない。コンテントはサイズを複数持つことができ、複数ある場合、表示先のエリアのサイズに応じて最も近いサイズを表示させる。
コンテントと状態とエリアの関係性は
図6に示すように紐づけられる。
【0025】
コンテントはプロパティを有しており、プロパティとして、優先度、サイズ調停負けした場合、APP要求を取り下げるか否か(goodloser)が設定されている。
(a)優先度
優先度とはエリアの調停ポリシーが「優先度調停」の場合に使われる値であり、優先度の高いコンテントが先にエリアに割り当てられる。
(b)サイズ
サイズとは、コンテントの表示のサイズで縦×横となる。複数定義されていた場合は、エリアのサイズに応じて決定される。
【0026】
(1-3)制約式
制約式は、調停中又は調停後において、例外的に満たすべき性質を記述したルールである。調停の状態を制約式で抑制することで、そのままの調停ポリシーでは表現しきれない状態を表したり、調停後の調停結果の判定に用いたりすることができる。即ち、例えば車両の走行状態等の状況に応じては、調停ポリシーにて割り当てられたコンテントであっても表示しない方が良い場合があるからである。制約式では、調停結果が満たすべき条件であるコンテント抑制やエリア抑制の条件が定義される。
【0027】
制約式で扱える論理式は、コンテントの状態、エリアの状態、エリアに表示中のコンテント、エリアとコンテントの集合、シーンの状態、論理演算、量化記号である。シーンとは、例えば手動運転シーン又は自動運転装置19による自動運転シーンであり、自動運転シーンでは手動運転用コンテントグループのコンテントは表示しないという出力制御が可能となる。
(a)コンテントの状態は、アクティブ/非アクティブ、表示中/非表示中の何れかである。
(b)エリアの状態は、表示中/非表示中の何れかである。
(c)論理演算は、NOT(!)、AND、OR、含意(->)、等号(=)である。
量化記号は、∀(For All:集合の要素全てに対して条件が成立する)、∃(Exists:集合に条件を満たす要素が少なくとも一つ存在する)である。
(d)制約式
制約式は、調停ロジックの結果に影響を及ぼし、調停ロジックは全ての制約を満たすように振る舞う。
(e)後処理
後処理は、特定のコンテントにおいて、調停後にAPP要求の待機を規定するプロパティ(goodloser)である。調停後のコンテントの待機状態のみ変化するので、調停ロジックの結果には影響しない。
【0028】
(1-4)コンテント抑制
例えばコンテントc1の表示中はコンテントc2を表示しないという制約式として、「中心エリア.displaying Content()=c1 -> !c2.is Visible()」を例示する。この制約式は、中心エリアにコンテントc1を表示していれば、コンテントc2を表示しないという抑制を記述している。
【0029】
(1-5)優先度調停と後勝ち調停
優先度調停と後勝ち調停とが混在する場合は、エリアの調停ポリシーを後勝ちにしておき、優先度が関わるコンテント間の関係のみを制約式で記述することで対応可能である。
このような制約式として、「TEL.is Active() -> For All MM系割り込み(TEL以外){x|!x.is Visible()}」を例示する。調停ポリシーが後勝ち調停のエリアであるが、この制約式を加えることでTELという優先度の高いコンテントがアクティブであれば、全てのMM系割り込み(TEL以外)を表示しないという抑制を記述している。
【0030】
2.調停ロジック
調停ロジックは、与えられたルールに基づき、エリアの調停ポリシーに基づいた形で制約式を満たすようにコンテントを割り当てる方法を定義したアルゴリズムである。基本的にはエリア毎に優先度順に調停していくが、演算子が含意で定義された制約式で仕様開発者の意図と異なったと判定した場合、以前のエリアに戻り再調停を行う。
調停ロジックには、エリア内の調停とエリア全体の調停とがある。
【0031】
(2-1)エリア内の調停
(a)エリア内の調停は、優先度調停及び後勝ち調停のエリアを優先度の高い順に調停する。
(b)各エリアについて以下を評価する。
最も優先されるコンテントを仮に割り当て、制約式の評価結果が真であれば、仮に割り当てたコンテントを確定する。制約式の評価結果が偽であれば、次に優先されるコンテントを再評価する。制約式を満たすコンテントが無ければ、そのエリアにはコンテントを表示しない。
【0032】
(2-2)エリア全体の調停
エリア全体の調停(価値ベース調停)は、ベストフィットロジック及びワンパスロジックがある。
(a)ベストフィットロジックは、制約式を満たすコンテントとエリアとの全ての組み合わせの中から価値の総和が最も高いものを選択する。
(b)ワンパスロジックは、優先度の高いエリアから順に優先度の高いコンテントをエリアに割り当て、既に他のエリアに割り当てられたコンテントは対象外にする。本実施形態ではワンパスロジックを採用するが、ベストフィットロジックを採用しても良い。
【0033】
(2-3)制約式における含意
調停ロジックにおいて制約式における「含意」は再調停の条件としての意味を持つので、以下に含意について説明する。
命題論理における含意はP→Qと記述することができ、左辺を前提部とすると共に右辺を結論部とし「前提が成立しているならば結論が成立している」となる。真理値の定義(真理値表)は
図7に示す通りである。
尚、命題論理における公理系ではP→Q≡¬P∨Qとなる。
又、制約式オブジェクトのデータ構造は、
図8に示すように、構文木(シンタックスツリー)となっているので、含意の左辺及び右辺の判定が可能である。
【0034】
(2-4)含意の意図と論理値での差異
P→Qが真となるのは、PもQも真のときである。換言すれば、Qに関わらずPが偽であれば制約式は真となる。
制約式で含意を用いた場合、仕様開発者は「左辺が成り立った後で、右辺を判定した場合」と意図していることが多い。即ち、暗黙の意図としては、順番が存在し、左辺が成立してから右辺を成立させたいということである。しかしながら、論理的には含意は右辺の真偽を決めた後に、その真偽に関係なく左辺を偽にすれば結果として真であり、これは論理学的、即ち含意の意味論上は何も問題はない。このことは、調停ロジックで制約式を満たすためならば、
図9に示すように、含意の左辺を全て強制的に偽とすれば制約式を満たせることを意味する。ワンパスロジックではエリアの優先度順にしたがってエリアに割り当てるコンテントを確定していく。即ち、含意の左辺及び右辺は関係ない。それに対し、含意の制約式の意図は「左辺が成り立った後で、右辺を判定した場合」であり、含意の左辺及び右辺が関係する。この問題を解決しようというのが、再調停の狙いである。
【0035】
次に、含意の制約式の再調停について説明する。
制約式P→Qがあり、
図10に示すように、Pに関係するエリアp、Qに関係するエリアqがあるとする。尚、エリアの優先度はp<qとする。
制約式の具体例は「p.is Display() -> q.is Hidden()」であり、意味は「p表示中はqを表示しない」である。
エリアpに関係するコンテントCp、エリアqに関係するコンテントCqがあり、APP要求が同時に発生した場合の調停ロジックを説明する。
(1)ワンパスロジックにより、最初にエリアqのコンテントを決める。その結果、エリアqにコンテントCqが割り当てられる。この場合、制約式の評価は、左辺に未割り当てエリアがあるので、エリアpをスキップする。
(2)ワンパスロジックにより、次のエリアであるエリアpのコンテントを次のように決める。エリアpにCpを仮割り当てしてから、制約式「p.is Display()->q.is Hidden()」を評価する。この場合、真→偽となるので、制約式の評価結果は偽となる。含意の右辺(エリアq)が調停済みであるので、エリアqを再調停する。具体的には、コンテントCp割り当てを是とし、エリアqでコンテントの割り当てをやり直す。
(3)再調停を行ったことによって次のエリアであるエリアqのコンテントを次のように決める。エリアqにコンテントCqを仮割り当てすると、真→偽となり、制約式の評価結果は偽となることから、コンテントCqの仮割り当てを解除し、エリアqの割り当てコンテントは無しで終了する。
以上の動作の結果、エリアPにコンテントCpが表示中、エリアqのコンテント割り当てがなくなり、制約式の意図通りの結果となる。
【0036】
調停ロジックは、優先度の高いエリアから順番に調停して制約式を評価していくので、制約式の含意の記述の仕方とエリアの優先度の高さにより、含意の右辺(結論部)が先に決定し、その後に含意の左辺(前提部)が決定する場合がある。このような場合に左辺を全て偽にすれば、論理的には正しいが、前述の「左辺が成り立った後で」という仕様開発者の意図とのギャップが発生してしまう。このような例として、
図11に示すように、エリアAはコンテントa1を表示可能で後勝ち、エリアBはコンテントb1を表示可能で後勝ち、エリア同士の優先度の関係はエリアA>エリアB、制約式はb1.is Visible() -> !a1.is Visibleを例示する。APP要求がコンテントa1、コンテントb1の順にオンすると、後勝ちの調停ポリシーによりエリアAにコンテントa1を表示してからエリアBにコンテントb1を表示することになる。この場合、優先度の高いエリアAのコンテントa1を先に判定することから、制約式の右辺を先に判定することになり、制約式の右辺が先に偽となる。この場合、制約式の左辺を強制的に偽とすれば制約式の評価結果は真となるので、論理的にそのまま解釈すると、コンテントa1は表示判定、コンテントb1は非表示判定となる。
【0037】
しかしながら、仕様開発者の意図は、コンテントb1が表示判定となった後にコンテントa1を非表示判定することであるので、仕様開発者の意図を反映していないことになる。即ち、調停ロジックとしては、限りなく仕様開発者の意図と調停振る舞いとのギャップを排除すべきである。その結果、一方通行で優先度の高いエリアから順に調停を適用していくのではなく、制約式が前述したような意図しない状態になった場合に、調停を再びやり直す再帰的な調停ロジックが必要となる。このような事情から、本実施形態では再帰的な調停ロジックを採用している。
【0038】
(2-5)振る舞い
再帰的な調停ロジックには、エリアにコンテントを割り当てる調停処理と、調停処理の後に要求の状態を変化させる後処理がある。又、調停処理に成功したかを確認するために全制約式の評価も行う。
【0039】
(a)調停ロジック全体の振る舞い
図12に示すように、表示制御装置10は、調停処理を行い、エリアにコンテントを割り当て(S1)、全制約式を評価し、調停処理に成功したかチェックする(S2)。表示制御装置10は、全制約式を満たしたと判定し、調停処理に成功したと判定すると(S3:YES)、結果に調停成功を設定し、割り当てを確定する(S4)。表示制御装置10は、何れか1つでも制約式を満たしていないと判定し、調停処理に失敗したと判定すると(S3:NO)、結果に調停失敗を設定する(S5)。表示制御装置10は、後処理を行い、要求の状態を変化させる(S6)。
【0040】
(b)調停処理の動作
図13に示すように、表示制御装置10は、優先度の高い順に調停対象エリアとし(S11)、調停対象エリアがある場合は(S12)、エリアの調停に移行する。表示制御装置10は、エリアの調停では、調停ポリシーに基づきエリア内の調停対象のコンテントの順序を決める(S13)。尚、調停対象エリアがない場合は、ループ終了となる。表示制御装置10は、エリア内に調停対象のコンテントがある場合は(S14)、エリアにコンテントを割り当てる(S15)。尚、調停対象エリアがない場合は、ループ終了となる。
【0041】
表示制御装置10は、制約式を評価し(S16)、制約式を満たしたか否かを判定し(S17)、制約式を満たしたと判定すると(S17:YES)、エリアの調停から抜け出る。表示制御装置10は、制約式を満たさなかったと判定すると(S17:NO)、含意の右辺が既に決定していて次に左辺を決定するケースがあったか否かを判定する(S18)。表示制御装置10は、ケースがあったと判定すると(S18:YES)、含意の右辺に関わるエリアが既に再調停済みであるか否かを判定する(S19)。
【0042】
表示制御装置10は、ケースがなかったと判定すると(S18:NO)、又はケースがあったが、含意の右辺に関わるエリアが既に再調停済みであると判定すると(S19:YES)、コンテントの割り当てを解除し(S21)、次のエリア内の調停対象のコンテントへ移行し(S22)、エリアの調停から抜け出る。
【0043】
一方、表示制御装置10は、含意の右辺に関わるエリアが未だ再調停済みでないと判定すると(S19:NO)、含意の右辺に関わるエリアを調停対象エリアの次の順に追加する(S20)。表示制御装置10は、次の調停対象エリアに移行するループが全て終わり、調停対象エリアがなくなったと判定すると(S23)、最後に全部のエリアを再調停せず1回のみ調停する(S24)。
【0044】
3.APP要求
APP要求は、
図14に示すように、アプリケーションからの要求として、コンテント×状態の値を調停ロジックに渡す。要求は同時には発生することは無く必ず順番を伴う。又、調停後に要求の状態を変化させる後処理の影響を受ける。調停ロジックでは、APP要求が発生したコンテント(及び状態)に対して調停を行う。したがって、表示されたコンテントは少なくともAPP要求を出力していなければならない。
【0045】
APP要求はコンテントに対するAPP要求であり、APP要求が発生すると、対応するコンテントが調停され、制約式を満たした上でエリアに表示される。具体的には、APP要求が行われ、エリアの優先度が高い順に調停するエリアを選択する。次に、各エリアの調停ポリシーにしたがって調停を行う。即ち、コンテントリストは調停ポリシーにしたがってソートされ、優先度調停なら優先度順、後勝ちなら後勝ち順にソートされる。
【0046】
次に、コンテントリストのコンテントと制約式とを比較し、表示可能なコンテントであるか否かを判定する。表示否のコンテントはリストから除去する。即ち、コンテントを割り当てて制約式を評価する。この場合、制約式は比較ではなく評価であるので、全て真であればコンテントの割り当てはOKとなる。再調停は、制約式評価が偽になりコンテントの割り当てが認められなかったために意図通りでなかった可能性があるときに行う。次に、ソートされたコンテントリスト順に、表示エリアを割り当て、調停するエリアがなくなるまで上記した処理を繰り返す。
【0047】
コンテントリストをソートするタイミングは各エリアに割り当てる前に行う。コンテントリストは各エリア割り当てに先立って作成する。ここで、エリア内毎に表示可能なコンテントは決まっている。そのため、コンテントリストは毎回、エリア割り当てに先立って、ソート及び制約式によるフィルタをかける。即ち、そのエリアに割り当て可能か否かを判定する。
【0048】
次に、一のエリアに割り当てられたコンテントを調停する場合について説明する。
図15に示すように、マルチメディア(MM)系の割り込みとスイッチ(SW)操作系のAPP要求の割り込みを想定する。後勝ち調停と優先度調停が混在する場合では、基本的に後勝ち調停を優先するが、MM系割り込みの中ではTELを優先する。
【0049】
制約式は、「TEL.isActive() -> For All MM系割り込み(TEL以外){x|!x.isVisible()}」を例示する。これは、TELがアクティブであれば、全てのMM系割り込み(TEL以外)を表示しないという制約である。TELコンテントは「発信中」「着信表示」「TELリスト」の3つの状態を持つことができ、それぞれの状態で優先度を変更しておく。優先度の低いコンテントの優先度は、コンテントA>コンテントB>コンテントCとする。
【0050】
コンテント抑制は、コンテントCの通常表示中は割り込み通知しないである。制約式は、「中心.displayingContent()=C.->!C通知.isVisible()」を例示する。これは、中心表示エリアにコンテントCを表示していれば、コンテントC通知を表示しないという制約である。以上のようにして、一のエリアに対して仕様開発者が意図するコンテントを表示することが可能となる。
【0051】
次に、複数のエリアに割り当てられたコンテントを調停する場合について説明する。
図16に示すように、エリアAはコンテントa1、エリアBはコンテントb1、エリアCはコンテントc1、エリアDはコンテントd1を表示可能であり、全て後勝ちの調停ポリシーである。エリア同士の優先度はエリアA>エリアB>エリアC>エリアDとする。
【0052】
エリアとコンテントと制約式の定義について説明する。
図17に示すように、エリア毎に名前、調停ポリシー、優先度が設定されている。又、コンテント毎に名前、表示可能エリアが設定されている。制約式は、c1.is Visible()->!a1.is Visible() AND D.is Hidden()を例示する。Is Hidden()はエリアに割り当て可能なコンテントがあってもエリアを表示していない状態を意味している。この制約式は、コンテントc1(即ちエリアC)が表示中は、コンテントa1を表示しない、且つ(エリアCと干渉する)エリアDは隠蔽されている抑制を記述している。
【0053】
APP要求がコンテントa1、コンテントb1、コンテントc1、コンテントd1の順にオンすると、エリアAから順に調停する。調停ポリシーによりエリアAにコンテントa1を割り当てるが、制約式を判定不能であるので、仮割り当てとする。同様に、エリアBにコンテントb1を仮割り当てする。
【0054】
エリアCにおける調停では、調停ポリシーによりエリアCにコンテントc1が割り当てられるが、制約式における含意の右辺が先に偽の判定となる。即ち、AND演算子は一方が偽ならば何をもっても偽となるためである。
【0055】
そこで、エリアCにコンテントc1を仮割り当てた状態で再調停を行い、エリアAで制約式の評価結果が真となるように再調停する。制約式の評価結果が真となる結果パターンは2つある。結果パターン1は、コンテントc1を表示した場合は、コンテントa1を表示せず、かつエリアDを隠すとなる。結果パターン2は、コンテントc1が非表示であれば制約式の評価結果は真となる。結果パターン1は仕様開発者の意図通りとなるが、結果パターン2の場合は仕様開発者の意図を反映していない可能性が高い。
【0056】
この場合、含意の右辺が先に決まっており、左辺を決定する場合であるので、再調停する。エリアCにコンテントc1を割り当てるのを是とし、右辺のエリアにて再調停する。再調停後、元の調停の順に戻り未調停のエリアDを調停する。この場合、制約式の右辺が真となるにはエリアDが非表示(未割り当て)とする必要がある。その後、最後に1回のみ再調停せずに調停を行う。これは主に未割り当てのエリアに対して行う調停である。以上のようにして、複数のエリアに対して仕様開発者が意図するコンテントを表示することが可能となる。
【0057】
ところで、再調停を行ったことによってエリアの状態が変化した時に、その再調停を行ったエリアの再調停前の状態によって制約を受けていたエリアは制約が解消されることになるが、その解消された制約を加味した結果を得ることができず、仕様開発者の意図通りの結果を得られない場合がある。このような事情から、本実施形態では、再調停を行ったことによってエリアの状態が変化した時に、その再調停を行ったエリアの再調停前の状態によって制約を受けていたエリアを調停する仕組みを採用している。
【0058】
調停部13は、アプリケーションからの表示要求を受け付けると、ルール定義にしたがってルールベース調停を満たすようにコンテントの調停を行う(調停手順に相当する)。表示制御部14は、調停部13によりコンテントの調停が行われたことでエリアに割り当てられたコンテントの表示を制御する(出力制御手順に相当する)。調停部13は、エリアの再調停を行った場合に、その再調停を行ったことによって影響を与えた影響エリアとして特定したエリアの再調停を行う(再調停手順に相当する)。以下、調停ロジックフローについて例示する。
【0059】
(1)調停ロジックフローの例1
定義、エリア同士の視認性の関係、制約式、要求発生順序を以下に示す条件とした場合を例示する。
定義:
エリアAはコンテントaを表示可能、
エリアBはコンテントbを表示可能、
エリアCはコンテントcを表示可能
エリア同士の視認性の関係:
エリアA>エリアB>エリアC
制約式:
1.A.isDisplayed() -> B.isHidden()「Aを表示中はBを表示しない」
2.C.isDisplayed() -> A.isHidden()「Cを表示中はAを表示しない」
要求発生順序:
コンテントa、コンテントb、コンテントcの表示要求が同時に発生
【0060】
この場合、
図18に示すように、エリアCの調停を行った後、制約式2が偽となる。制約式2の右辺(エリアA)が決定済みなので、エリアAの再調停を行う。エリアAの再調停を行うと、エリアAは隠蔽されるので、制約式1でエリアAにより制約を受けていたエリアBは制約が解消され、エリアBにコンテントbが割り当たるのが期待値である。しかしながら、その後にエリアBの調停が行われないので、エリアBは隠蔽されたままである。このような事情から、エリアの状態が変化した後に、再調停したエリアの再調停前の状態によって制約を受けていたエリアを特定し、調停する仕組みが必要であり、本実施形態では、以下の調停ロジックを行う。
1.影響を与えたエリアを特定するために評価結果を保存する。
2.評価結果を解析し、影響エリアを特定する。
3.エリアは自身の影響エリアのリストを保存する。
4.再調停を行ったことによって調停された後に、影響エリアを再調停する。
【0061】
影響エリアを以下のように定義する。影響エリアとは、あるエリアが状態に影響を与えたエリア、又はあるエリアの状態が影響を受けたエリアである。例えば
A.isDisplayed() -> !B.isHidden()
の制約式では、エリアAがエリアBの表示を抑制した場合、エリアAは影響を与えたエリアであり、エリアBは影響を受けたエリアである。即ち、「コンテントAオン要求、且つコンテントBオン要求」があるときは、影響エリアはエリアAとエリアBとなり、逆に、「コンテントAオン要求、且つコンテントBオン要求」でないときは、影響エリアは存在しない。
【0062】
影響エリアを以下のように特定する。例えば
A.isDisplayed() AND !B.isDisplayed() -> !C.isDisplayed()
の制約式では、
図19に示すツリー構造となり、エリアCの調停時にコンテント1を割り当て、制約式を評価したとき、制約式の評価結果がfalseとなり、影響エリアの特定を行う。
手順1:->の左辺をtrueにしたエリア(評価結果がtrueの構文の対象エリア)を走査する。
手順2:エリアAを抽出する。
手順3:否定により走査対象を反転させ、評価結果がfalseの構文の対象エリアを走査する。
手順4:エリアBを抽出する。
【0063】
図18に例示したモデルでは、以下に示す影響エリアの再調停を行う。
手順1:ワンパスロジックにより、最初のエリアであるエリアAのコンテントを決める。その結果、エリアAにコンテントaが割り当てられる。制約式の評価は右辺に未割当エリアがあるので、スキップする。
【0064】
手順2:ワンパスロジックにより、次のエリアであるエリアBのコンテントを決める。
2-1.エリアBにコンテントbを仮割り当てる。
2-2.制約式1「A.isDisplayed() -> !B.isDisplayed()」を評価する。
2-3.制約式は真→偽となり、制約式の評価結果は偽となる。
2-4.制約式の評価結果が偽となったので、影響を与えたエリアAに調停中のエリアBを登録する。
2-5.コンテントCの割り当てを解除し、エリアBの割り当てコンテントは無しで終了する。
【0065】
手順3:ワンパスロジックにより、次のエリアであるエリアCのコンテントを決める。
3-1.エリアCにコンテントCを仮割り当てる。
3-2.制約式2「C.isDisplayed() -> !A.isDisplayed()」を評価する。
3-3.制約式は真→偽となり、制約式の評価結果は偽となる。
3-4.含意の右辺(エリアA)が調停済みだったので、エリアAを再調停する。具体的には、コンテントCの割り当てを是とし、エリアAでコンテントの割り当てをやり直す。
【0066】
手順4:次のエリアであるエリアAのコンテントを決める(再調停)。
4-1.エリアAにコンテントaを仮割り当てる。
4-2.制約式は真→偽となり、制約式の評価結果は偽となる。
4-3.制約式の評価結果が偽になったので、影響を与えたエリアCに調停中のエリアAを登録する。
4-4.コンテントaの仮割り当てを解除し、エリアAの割り当てコンテントは無しで終了する。この段階で、エリアA、エリアBはコンテント未割当、エリアCはコンテントcが割り当たっている。エリアAを再調停したので、エリアAの影響を受けているエリアBの再調停を行う。具体的には、エリアAのコンテントの未割り当てを是とし、エリアBでコンテントの割り当てをやり直す。
【0067】
手順5:次のエリアであるエリアBのコンテントを決める(影響エリアの再調停)。
5-1.エリアBにコンテントbを仮割り当てる。
5-2.制約式は偽→偽となり、制約式の評価結果は真となる。
5-3.結果、エリアBにコンテントbが割り当たる
【0068】
以上に説明したように、
図20に示すように、エリアAの調停、エリアBの調停、エリアCの調停、エリアAの再調停、影響エリアであるエリアBの再調停を順次行う。その結果、
図21に示すように、エリアCにコンテントcが表示中にエリアAのコンテントの割り当てはなくなり、エリアAの制約がなくなったことで、エリアBにコンテントbが割り当たり、仕様開発者の意図通りの結果を得ることができる。
【0069】
表示制御装置10は、
図22及び
図23に示す調停中エリア登録処理を行い、影響エリアを調停中エリアに登録する。表示制御装置10は、調停中エリア登録処理を開始すると、調停対象エリアの調停済みフラグをクリアする(S31)。表示制御装置10は、調停済みフラグが未調停のエリアであるか否かを判定し(S32)、調停済みフラグが未調停のエリアでないと判定すると(S32:NO)、調停中エリア登録処理を終了する。
【0070】
一方、表示制御装置10は、調停済みフラグが未調停のエリアであると判定すると(S32:YES)、エリアにコンテントを割り当て(S33)、コンテント割り当てに関する制約式のリストにしたがって制約式を評価する制約式評価処理に移行する。(S34)。
【0071】
表示制御装置10は、制約式評価処理を開始すると、制約式を評価し(S41)、制約式の評価結果がtrueであるか否かを判定する(S42)。表示制御装置10は、制約式の評価結果がtrueであると判定すると(S42:YES)、影響エリアを特定し(S43)、影響エリアに調停中エリアを登録し(S44)、制約式評価処理を終了する。
【0072】
表示制御装置10は、制約式評価処理を終了すると、制約式の評価結果がtrueであるか否かを判定する(S35)。表示制御装置10は、制約式の評価結果がtrueでなく、falseであると判定すると(S35:NO)、ステップS33に戻り、ステップS33以降を繰り返す。表示制御装置10は、制約式の評価結果がtrueであると判定すると(S35:YES)、調停中エリアの隠蔽状態を更新し(S36)、隠蔽状態に関する制約式のリストにしたがって制約式を評価する制約式評価処理に移行する(S37)。
【0073】
表示制御装置10は、制約式評価処理を開始すると、制約式を評価し(S41)、制約式の評価結果がtrueであるか否かを判定する(S42)。表示制御装置10は、制約式の評価結果がtrueであると判定すると(S42:YES)、影響エリアを特定し(S43)、影響エリアに調停中エリアを登録し(S44)、制約式評価処理を終了する。
【0074】
表示制御装置10は、制約式評価処理を終了すると、制約式の評価結果がtrueであるか否かを判定する(S38)。表示制御装置10は、制約式の評価結果がtrueでなく、falseであると判定すると(S38:NO)、ステップS36に戻り、ステップS36以降を繰り返す。表示制御装置10は、制約式の評価結果がtrueであると判定すると(S38:YES)、調停により調停中のエリアが変化したか否かを判定する(S39)。
【0075】
表示制御装置10は、調停により調停中のエリアが変化しなかったと判定すると(S39:NO)、ステップS36に戻り、ステップS36以降を繰り返す。表示制御装置10は、調停により調停中のエリアが変化したと判定すると(S39:YES)、影響エリアを更新し(S40)、ステップS32に戻り、ステップS32以降を繰り返す。尚、上記した調停中エリア登録処理において、アプリケーションからの表示要求を受け付ける前に、制約式を評価した評価結果を解析し、影響エリアを特定しておいても良い。
【0076】
(2)調停ロジックフローの例2
定義、エリア同士の視認性の関係、制約式、要求発生順序を以下に示す条件とした場合を例示する。
定義:
エリアAはコンテントa1を表示可能、
エリアBはコンテントb1を表示可能、
エリアCはコンテントc1,c2を表示可能、
エリアDはコンテントd1を表示可能
エリア同士の視認性の関係:
エリアA>エリアB>エリアC>エリアD
制約式
1.A.isDisplayed() -> !c2.isVisible()「Aを表示中はc2を表示しない」
2.c1.isVisible() -> B.isHidden()「c1を表示中はBを表示しない」
3.D.isDisplayed() -> A.isHidden()「Dを表示中はAを表示しない」
要求発生順序:
コンテントa1、コンテントb1、コンテントc1、コンテントc2、コンテントd1の順序で表示要求が発生
【0077】
この場合は、
図24に示すように、エリアAの調停、エリアBの調停、エリアCの調停、エリアBの再調停、エリアDの調停、エリアAの再調停、影響エリアであるエリアCの再調停、影響エリアであるエリアBの再調停を順次行う。
【0078】
図25及び
図26に示すように、無限ループを発生させないために再調停中において同一エリアは一度しか再調停を行わない。
定義、エリア同士の視認性の関係、制約式、要求発生順序を以下に示す条件とした場合を例示する。
定義:
エリアAはコンテントaを表示可能、
エリアBはコンテントbを表示可能、
エリアCはコンテントcを表示可能、
エリア同士の視認性の関係:
エリアA>エリアB>エリアC
制約式
1.A.isDisplayed() -> B.isHidden()「Aを表示中はBを表示しない」
2.B.isDisplayed() -> C.isHidden()「Bを表示中はCを表示しない」
3.C.isDisplayed() -> A.isHidden()「Cを表示中はAを表示しない」
要求発生順序:
コンテントa、コンテントb、コンテントcの順序で表示要求が発生
再調停元のエリアであるエリアAが、調停中のエリアであるエリアCに影響を受けたエリアとなった場合は、そのエリアAを再調停の対象から除外して影響エリアの再調停を行う。即ち、影響エリアとして特定したエリアの再調停を1回のみ行う。
【0079】
本実施形態によれば、以下に示す作用効果を得ることができる。表示制御装置10において、エリアの再調停を行うと、その再調停を行ったことによって影響を与えた影響エリアとして特定したエリアの再調停を行うようにした。再調停前の状態によって制約を受けていたエリアは制約が解消され、更に解消された制約を加味した結果を得ることができる。これにより、再調停を行ったことによってエリアの状態が変化した時に、仕様開発者の意図通りの結果を適切に得ることができる。
【0080】
アプリケーションからの表示要求を受け付ける前に、制約式を評価した評価結果を解析し、影響エリアを特定すれば、アプリケーションからの表示要求を受け付けてからの処理時間を短縮することができる。
影響エリアとして特定したエリアの再調停を1回のみ行うようにした。再調停が終わらない状況を回避することができ、無限ループの発生を回避することができる。
【0081】
本開示は、実施形態に準拠して記述されたが、当該実施形態や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、更には、それらに一要素のみ、それ以上、或いはそれ以下を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に入るものである。
車両用に限らず、車両用以外の用途のコンテントの表示制御装置に適用しても良い。
本開示に記載の制御部及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することにより提供された専用コンピュータにより実現されても良い。或いは、本開示に記載の制御部及びその手法は、一つ以上の専用ハードウェア論理回路によりプロセッサを構成することにより提供された専用コンピュータにより実現されても良い。若しくは、本開示に記載の制御部及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウェア論理回路により構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより実現されても良い。又、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていても良い。
【符号の説明】
【0082】
図面中、10はコンテントの表示制御装置(出力制御装置)、12は記憶部、13は調停部、14は表示制御部(出力制御部)である。