(57)【要約】本発明は、アプリケーションの別々のコンポーネントが、別々の処理装置で常時実行な可能な、ダイナミックなアプリケーション環境を提供する。ホスト装置は、自動車のヘッドユニットのような計算装置と関連し、そして、一つ以上のアプリケーションの、どのコンポーネントが計算装置で実行されるか、及びどのコンポーネントがホスト装置（もしあれば）で実行されるか、のそれらの特性の選択に基いて、現在の動作特性をモニタする。ホスト装置は、計算装置で実行するために選択されたコンポーネントを計算装置に提供し、計算装置で実行されない他のコンポーネントを実行する。ホスト装置は、計算装置と関連する現在の動作特性をモニタし、現在の動作特性の変更に基いて、どのコンポーネントがどの装置で実行されいるかの選択を変更する。【選択図】図２Ｂ
2019510404.tif 000002
【特許請求の範囲】
【請求項１】
自動車のヘッドユニットから遠隔するホスト装置で実行する方法であって、
前記ヘッドユニットと現在の動作特性とを特定することと、
一つ以上のビューコンポーネント、一つ以上のモデルコンポーネント、及び一つ以上のコントローラコンポーネントを含むアプリケーションのビューコンポーネントを前記ヘッドユニットで実行するために前記ヘッドユニットに提供することと、
前記現在の動作特性に基いて、前記アプリケーションのモデルコンポーネントを、前記ヘッドユニットで実行するために、リアルタイムでダイナミックに選択することと、
前記現在の動作特性に基いて、前記アプリケーションのコントローラコンポーネントを、前記ヘッドユニットで実行するために、リアルタイムでダイナミックに選択することと
前記現在の動作特性が時間と共に変化したときに、前記ヘッドユニットで実行するために、前記選択されたモデルコンポーネント及び前記選択されたコントローラコンポーネントを前記ヘッドユニットにダイナミックに提供することと、
前記アプリケーションの選択されなかったモデルコンポーネント及び前記アプリケーションの選択されなかったコントローラコンポーネントをホスト装置で実行することと、
を備える方法。
【請求項２】
前記現在の動作特性に基いて、複数のアプリケーションから前記アプリケーションを選択すること、を更に備える請求項１に記載の方法。
【請求項３】
前記現在の動作特性は、前記自動車の位置、前記ヘッドユニットの現在の負荷、前記ヘッドユニットと対話しているユーザー、前記ユーザーによる複数のアプリケーションの利用、ネットワークの接続性、及び前記アプリケーションによるデータ利用、のうち、少なくとも一つを含む、請求項１に記載の方法。
【請求項４】
前記現在の動作特性の変化を特定することと、
前記現在の動作特性の特定された変化に応じて、前記アプリケーションの前記モデルコンポーネントの選択を変更することと、
前記現在の動作特性の特定された変化に応じて、前記アプリケーションの前記コントローラコンポーネントの選択を変更することと、を更に備える請求項１に記載の方法。
【請求項５】
前記アプリケーションの前記モデルコンポーネントをダイナミックに選択することは、
前記ヘッドユニットにより実行される前記アプリケーションのすべてのモデルコンポーネントを選択することと、
前記ホスト装置上で前記アプリケーションのすべてのコントローラコンポーネントを実行することと、を含む請求項１に記載の方法。
【請求項６】
前記アプリケーションの前記モデルコンポーネントをダイナミックに選択することは、
前記ヘッドユニットにより実行される前記アプリケーションのすべてのコントローラコンポーネントを選択することと、
前記ホスト装置上で前記アプリケーションのすべてのモデルコンポーネントを実行することと、を含む請求項１に記載の方法。
【請求項７】
前記アプリケーションの前記モデルコンポーネントをダイナミックに選択することは、
前記ヘッドユニットにより実行される前記アプリケーションのすべてのコントローラコンポーネントを選択することと、
前記ヘッドユニットにより実行される前記アプリケーションのすべてのモデルコンポーネントを選択することと、
前記ホスト装置では、前記アプリケーションのいずれのコンポーネントも実行しないことと、を含む請求項１に記載の方法。
【請求項８】
第１段階において、前記現在の動作特性に基づいて、前記ヘッドユニットにより実行される前記アプリケーションの複数のコントローラコンポーネントのサブセットを選択することと、
前記第１段階の後の第２段階において、前記現在の動作特性の変化に応じて、前記コントローラコンポーネントの前記サブセットの実行を中断するように、前記ヘッドユニットへ通知することと、前記ホスト装置上で前記コントローラコンポーネントの前記サブセットを実行することと、をさらに備える請求項１に記載の方法。
【請求項９】
第１段階において、前記現在の動作特性に基いて、前記ヘッドユニットにより実行される前記アプリケーションの複数のモデルコンポーネントのサブセットを選択することと、
前記第１段階の後の第２段階において、前記現在の動作特性の変更に応じて、前記モデルコンポーネントの前記サブセットの実行を中断するように、前記ヘッドユニットへ通知することと、前記ホスト装置上で前記モデルコンポーネントの前記サブセットを実行することと、をさらに備える請求項１に記載の方法。
【請求項１０】
ホスト装置を備えるシステムであって、
前記ホスト装置は、命令を格納するためのメモリと、前記命令を実行するプロセッサと、を含み、当該命令は、
ユーザーの計算装置に関連する現在の動作特性を特定し、
前記現在の動作特性に基づいて、前記計算装置の前記ユーザーのためのアプリケーションを選択し、
前記現在の動作特性に基づいて、前記選択されたアプリケーションの複数のコンポーネントから、コンポーネントのセットを選択し、
前記計算装置で実行するために、前記コンポーネントのセットを、前記計算装置に提供し、
前記ホスト装置上で、前記選択されたアプリケーションの前記複数のコンポーネントから選択されなかったコンポーネントを実行することを含み、
前記システムは、前記計算装置をさらに備え、
前記計算装置は、命令を格納するためのメモリと、前記命令を実行するプロセッサと、を含み、当該命令は、前記ホスト装置により前記計算装置に提供された、前記選択されたアプリケーションの前記コンポーネントのセットを実行する命令であるシステム。
【請求項１１】
前記現在の動作特性は、前記計算装置の位置、前記計算装置の現在の負荷、前記計算装置と対話するユーザー、前記ユーザーによる複数のアプリケーションの利用、ネットワークの接続性、及び前記アプリケーションによるデータ利用、のうち、少なくとも一つを含む、請求項１０に記載のシステム。
【請求項１２】
前記アプリケーションの前記複数のコンポーネントは、少なくとも一つのビューコンポーネント、少なくとも一つのモデルコンポーネント、及び少なくとも一つのコントローラコンポーネントを含む、請求項１０に記載のシステム。
【請求項１３】
前記コンポーネントのサブセットは、少なくとも一つのビューコンポーネントを含む、請求項１２に記載のシステム。
【請求項１４】
前記ホスト装置の前記プロセッサは、
前記現在の動作特性の変化を特定し、
前記現在の動作特性の前記特定された変更に基づいて、前記複数のコンポーネントから、コンポーネントの新しいセットを選択し、
前記計算装置により実行させるために、前記計算装置に、前記コンポーネントの新しいセットを提供する、命令を更に実行する請求項１０に記載のシステム。
【請求項１５】
前記計算装置の前記プロセッサは、
前記計算装置による前記コンポーネントの前記セットの実行を中断し、
前記ホスト装置により、前記計算装置に提供された前記コンポーネントの新しいセットを実行する、命令を更に実行する請求項１４に記載のシステム。
【請求項１６】
命令を格納するためのメモリと、前記命令を実行するプロセッサと、を含む計算装置であって、当該命令は、
自動車のヘッドユニットに関連する現在の動作特性を特定し、
前記現在の動作特性に基づいて、前記ヘッドユニットで実行されるアプリケーションの複数のコンポーネントから、コンポーネントの第１のセットを選択し、
前記現在の動作特性に基づいて、前記計算装置で実行されるアプリケーションの複数のコンポーネントから、コンポーネントの第２のセットを選択し、
前記ヘッドユニットにより実行するために、前記コンポーネントの第１のセットを、前記ヘッドユニットに提供し、
前記計算装置で、前記コンポーネントの第２のセットを実行する、
命令である計算装置。
【請求項１７】
前記第１のセットは、前記アプリケーションの前記複数のコンポーネントを含み、前記第２のセットは、コンポーネントの空のセットである、請求項１６に記載の計算装置。
【請求項１８】
前記プロセッサは、
前記現在の動作特性に基づいて、複数の利用可能なアプリケーションから、複数のアプリケーションを選択し、
前記現在の動作特性に基いて、前記ヘッドユニットで実行される、選択された各々のアプリケーションの複数のコンポーネントから、前記コンポーネントの第１のセットを選択し、
前記現在の動作特性に基いて、前記計算装置で実行される、選択された各々のアプリケーションの複数のコンポーネントから、前記コンポーネントの第２のセットを選択する、請求項１６に記載の計算装置。
【請求項１９】
前記アプリケーションの前記複数のコンポーネントは、少なくとも一つのビューコンポーネント、少なくとも一つのモデルコンポーネント、及び少なくとも一つのコントローラコンポーネントを含む、請求項１６に記載の計算装置。
【請求項２０】
前記現在の動作特性の変化を特定し、
前記現在の動作特性の前記特定された変化に応じて、前記コンポーネントの第１のセットの前記選択を変更し、
前記現在の動作特性の前記特定された変化に応じて、前記コンポーネントの第２のセットの前記選択を変更する、ことを更に備える請求項１６に記載の計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
＜優先権の主張＞
この出願は、米国特許法１１９条（ｅ）に基き、２０１８年２月１９日に出願された米国非仮出願第１５／０１８，３８５号明細書の出願日の利益を主張し、参照のためその全体を本出願明細書に組み入れる。
【０００２】
本発明は、一般的に、ヘッドユニットで実行するアプリケーションコンポーネントのダイナミックなリアルタイムの選択に関し、このアプリケーションの他のコンポーネントは別のホスト装置又はクラウドで実行されているものに関する。
【背景技術】
【０００３】
自動車は、ますます使いやすく、インタラクティブなものとなってきている。多くの新車は、現在、ヘッドユニットと呼ばれる、ユーザーが様々な態様で自動車を制御できるユーザーインターフェイスを搭載して製造されている。例えば、ユーザーは、ヘッドユニットを、ラジオ局を変える、自動車室内の温度を変える、地図や衛星測位システムにアクセスする、インターネットにアクセスする、及び他のヘッドユニットアプリケーションにアクセスするために使用することができる。
【０００４】
しかし、これらのアプリケーションは、ユーザーのモバイル機器のセルラーデータに、しばしば頼っている。ここに記載される実施形態がなされたのは、これらと他の考慮点に関することである。
【発明の概要】
【課題を解決するための手段】
【０００５】
ここに開示される原理によれば、アプリケーションが動作している一方で、コンピュータアプリケーションの様々なコンポーネントが、別々の処理装置で実行するために、ダイナミックに割り当てられる。たとえ、コンピュータアプリケーションの様々なコンポーネントが、一つ以上の別々の装置で実行されていたとしても、アプリケーションと対話するためにユーザーにより使用される装置は、アプリケーションを実行中の当該装置であると考えてもよい。
【０００６】
例えば、あるコンピュータ上で走っているアプリケーションがそのコンピュータで実行中のコンポーネントを有しており、一方、そのアプリケーションの他のコンポーネントはそのとき、モバイル機器又はクラウドのような他の装置で実行されている。
【０００７】
同様に、アプリケーションの他のコンポーネントが、クラウド、又は、たとえ他のコンピュータで実行されているとしても、その一方で、アプリケーションは、そのモバイル機器で実行中であるいくつかのコンポーネントを有するモバイル機器で実行される。
【０００８】
アプリケーションが、それらアプリケーションの組み合わせ実行と関連する様々な特性に基いて動作する一方で、それぞれ別々のコンピュータで実行されているアプリケーションのコンポーネントは、ダイナミックに変更される。この様々な特性としては、アプリケーションコンポーネントそれら自身の特性、アプリケーションコンポーネントを実行するコンピュータの特性、及びそれらの装置間の通信ネットワークの特性を含むことができる。
【０００９】
ある特定の実行されるアプリケーションコンポーネントは、そのすべての例、又はほとんどすべての例において、単一の装置で実行される。第２のコンピュータ又はクラウドコンピューティングリソースがそれらのコンポーネントを実行し且つ第１の装置と通信する場合、第１の装置で実行中のアプリケーションと同じものが、コンピュータ又はクラウドにより実行される、上記それらのコンポーネントを有していることは利点である。これは、アプリケーションが動作するときに、コンポーネントはダイナミックに割り当てられ、一つの装置から、アプリケーションの実行と関連した特性に基いた他の装置へ移動又は交換することができることである。
【００１０】
実施形態の一つのセットは、別々のアプリケーションのコンポーネントが、自動車のヘッドユニットで動作できる、又は、ホスト装置又は自動車から遠隔する一つ以上の他のコンピュータで実行するために割りあてられる、ダイナミックなアプリケーション環境を提供することに向けられる。
【００１１】
そのような遠隔装置の例として、クラウドのサーバー、スマートフォン又は他のモバイル機器、又は他のコンピュータがある。これらは、アプリケーションの一部を実行でき、且つヘッドユニット又は他のコンピュータで実行されるアプリケーションの他の部分の実行と調整できる。このように、実行のためのダイナミックな環境の割り当てが新しく作成される。
【００１２】
ホスト装置は、ヘッドユニットの様々な動作特性に基いて、ヘッドユニットのユーザーにどのアプリケーションを提供するかを選択する。そのような特性として、ヘッドユニットを使用するユーザー、アプリケーションの利用、地理的位置、消費される電力、バッテリー残量などがある。但し、これらに限定されるものではない。
【００１３】
現在の動作特性に基いて、ホスト装置は、前記選択されたアプリケーションのどのコンポーネントをヘッドユニットで実行し、及び、もしあれば、どのコンポーネントを様々なホスト装置で実行するかを選択する。
【００１４】
ホスト装置は、ヘッドユニットでの実行のため、選択されたコンポーネントをヘッドユニットに提供し、そして、ホスト装置や他の装置は、ヘッドユニットでは実行されないその他のコンポーネントのいずれをも実行する。
【００１５】
ホスト装置は、動作特性の変化が発生したかどうかを判定するために、ヘッドユニットに関連する現在の動作特性をモニタする。そして、それらの変化に基いて、どのコンポーネントをヘッドユニットで動作させるか、どのコンポーネントをホスト装置で動作させるか、どのコンポーネントを他のコンピュータで動作させるか、の選択を変更する。
【００１６】
ここに記載された実施形態は、アプリケーションコンポーネントの実行中に、ダイナミックに変更することができるので、ユーザーエクスペリエンスを向上させることができる。異なるアプリケーションは、コンピューティングリソースや通信データを異なる態様で利用し、異なるユーザーは異なる方法でアプリケーションを体験する。所定の時刻にどこで異なるコンポーネントを実行するかをダイナミックに変更することにより、ヘッドユニットのより良いユーザーエクスペリエンスを実現ことができる。
【００１７】
例えば、アプリケーションが、ホスト装置であるクラウドでその全体が実行されると、ホスト装置とヘッドユニットとの間で伝送されるデータ量は増加する、それは表示及びヘッドユニットでのアプリケーションの応答性の遅れを引き起こし、アプリケーションのユーザーの楽しみやエクスペリエンスを中断させる。
【００１８】
これに対して、アプリケーションが、ヘッドユニットでその全体が実行されると、ヘッドユニットは、コンピューティングリソースの制限やヘッドユニットの制約により、アプリケーションの特定のタイプやアプリケーションの同じ数を一度にサポートすることができなくなり、アプリケーションのユーザーの楽しみやエクスペリエンスを減少させることになる。どこでアプリケーションコンポーネントが実行するかをヘッドユニットとホスト装置の間でダイナミックに変更すことにより、ホスト装置とヘッドユニットの間のネットワークトラフィックを最小にすると共に、アプリケーションの実行速度を増大させることができる。
【図面の簡単な説明】
【００１９】
限定的でもなく網羅的でもない、実施形態が下記の図面に記載される。図の中で、特に明記しない限り、種々の図面を通して同様な部分は同様な符号で参照される。
【００２０】
本発明をより良く理解するために、下記の発明を実施する形態で、下記の関連する図面を参照する。
【００２１】
【図１Ａ】異なる動作可能ユニットに分けられたコンポーネントによる、アプリケーションの実行の一実施形態の概略図。
【図１Ｂ】異なる動作可能ユニットに分けられたコンポーネントによる、アプリケーションの実行の他の実施形態の概略図。
【図２Ａ】図１Ａ及び図１Ｂのアプリケーションの様々なコンポーネントを実行することができるハードウェアコンポーネントの概略図。
【図２Ｂ】ここに記載された実施形態による、ヘッドユニットで実行されるアプリケーションを管理するための、自動車のヘッドユニットの遠隔地にあるホスト装置で利用される、自動車環境のコンテキストダイアグラム。
【図３Ａ】ここに記載された実施形態による、ユーザーモバイル機器、ヘッドユニット、及び様々なアクセサリーを含む自動車システムの使用事例を示す図。
【図３Ｂ】ここに記載された実施形態による、ホスト装置及びヘッドユニットを例示するシステムダイアグラム。
【図３Ｃ】ここに記載された実施形態による、ホスト装置及びヘッドユニットを例示するシステムダイアグラム。
【図３Ｄ】ここに記載された実施形態による、ホスト装置及びヘッドユニットを例示するシステムダイアグラム。
【図３Ｅ】ここに記載された実施形態による、ホスト装置及びヘッドユニットを例示するシステムダイアグラム。
【図４】ここに記載された実施形態による、どのアプリケーションコンポーネントがヘッドユニットで実行されていて、コンポーネントがホスト装置で実行されていかをダイナミックに変更すための、概要プロセスの一実施形態を一般的に示している論理フローダイアグラム。
【図５】ここに記載された実施形態による、どのアプリケーション又はコンポーネントがヘッドユニットで実行されているかの変更をするかどうかに影響する変更を特定するための、ヘッドユニット環境の動作特性をモニタするための概要プロセスの一実施形態を一般的に示している論理フローダイアグラム。
【図６】ここに記載された実施形態を実施するためのコンピュータシステムの一実施例を記載するシステムダイアグラム。
【発明を実施するための形態】
【００２２】
さまざまな実施形態の完全な理解を提供するために、以下の説明では、添付の図面に沿って、特定の具体的な詳細を説明する。しかしながら、記載された実施形態は、様々な組み合わせ、例えば、これらの特定の詳細の一つ以上が欠落していても、又は、他の方法、構成要素、装置、材料、その他を用いても、実施化されてもよいことは、関連する技術の知識がある者は理解できるであろう。他方、本発明の動作環境と関連する周知の構造や構成要素は、通信システムとネットワークと自動車の動作環境を含むが、これに限定されず、実施形態に必要のない不明瞭な説明を避けるために、それらは示されず、又、記載されていない。
【００２３】
従って、様々な実施形態は、方法、システム、媒体、又は装置であってよい。更に、様々な実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、又はハードウェアの態様とソフトウェアの態様を組み合わせた実施形態であってよい。
【００２４】
明細書、特許請求の範囲、及び図面を通して、下記の用語は、文脈上別段の意味を有することが明確に解読される場合を除き、これらに明示的に関連する意味を有するものとする。「ここに」との文言は、現在の出願に関連する明細書、特許請求の範囲、及び図面を参照するものである。「ある実施形態では」、「もう一つの実施形態では」、「様々な実施形態において」、「他の実施形態では」のフレーズ及び他のバリエーションは、本記載の一つ以上の特徴、構造、機能、限定、又は特性を参照し、文脈上で別段の意味を有すると明確に解読される場合を除き、同じ実施形態、又は異なる実施形態に限定されるものではない。ここで用いられたように、「又は」は、インクルーシブな「又は」であって、Ａ又はＢ、又は両方、あるいは、Ａ又はＢまたはＣ、又はそれらのいずれかの組み合わせであり、追加要素があるリストでも同様に扱われる。「基づいて」の文言は排他的ではなく、文脈上別段の意味を有すると明確に解読される場合を除き、記載されていない追加の特徴、機能、態様、又は限定に基いていてもよい。加えて、明細書を通して、「ａ」、「ａｎ」及び「ｔｈｅ」のに意味するところは、単数及び複数の引用を含む。
【００２５】
図１Ａは、動作可能なユニット、オブジェクト、又はフィーチャーに分けられたコンポーネントを有するアプリケーション１０を例示する。アプリケーション１０のこの実施形態によれば、動作可能なユニットは、ビューコンポーネント１２、コントローラコンポーネント１４、及びモデルコンポーネント１６を含む。
【００２６】
この特定のプログラミング構造は周知の技術で、ＭＶＣのイニシャルを有するモデル−ビュー−コントローラ (Model-View-Controller) アーキテクチャー、又は構造パターンと呼ばれている。ＭＶＣパターンによると、アプリケーションは、ビューコンポーネント１２、コントローラコンポーネント１４、及びモデルコンポーネント１６を含む複数のコンポーネントである。一つのタイプのコンポーネントは、他のタイプのコンポーネントから完全に独立に実行することができ、互いに、完全に異なるコード、異なる構造、及び異なるタイプで動作する。
【００２７】
ビューコンポーネント１２は、アプリケーション１０の動作の視覚的描写を提供するための一つ以上のコンポーネントを含む。ビューコンポーネント１２のコードは、ユーザーインターフェイスを描く方法、及びエンドユーザーとの対話を処理する方法を知っている。このユーザーインターフェイスは、特定のユーザーが理解してそれと対話するアプリケーションの一部である。
【００２８】
ビューコンポーネント１２は、アプリケーション１０の他のコンポーネントの影響与えること無しに、それ自身を変更ことがしばしば可能である。特に、ビューコンポーネント１２は、スマートフォンのある特定のモデル、例えば、アップルやサムスンのアンドロイドベースの機器、タブレット、ローカルコンピュータ等の特定のユーザーインターフェイスが適用された他のいかなるハードウェア機器、に対して変更すことができる。ビューコンポーネント１２のコードは、新しいハードウェア装置が利用できるようになるときのように、異なるハードウェア装置サポートするために、頻繁に変更することができる。
【００２９】
モデルコンポーネント１６は、アプリケーション１０のデータ及び動作コードを一定の構造に規格化する一つ以上のコンポーネントを含み、アプリケーション１０でデータ操作及び処理するために使用される論理や計算を定義する。モデルコンポーネント１６は、データの格納を提供するだけではなく、多くの例では、アプリケーション１０の命令セットもまた提供する。
【００３０】
コントローラコンポーネント１４は、アプリケーション１０の論理や通信を提供する、一つ以上のコンポーネントを含む。コントローラコンポーネント１４は、ビューコンポーネント１２及びモデルコンポーネント１６と対話する。コントローラコンポーネント１４は、ビューコンポーネント１２により提供されるユーザーインターフェイスからモデルコンポーネント１６のデータを切り離すブリッジを提供する。
【００３１】
このアプリケーションプログラミングパターンによると、ビューコンポーネント１２及びその中で動作するコードは、モデルコンポーネント１６と、直接対話をしたりデータを交換したりは決してしない。コントローラコンポーネント１４は、それぞれのビューコンポーネント１２に情報を提供し、それぞれのビューコンポーネント１２から情報を受領するためのインターフェイスを有する。同様に、コントローラコンポーネント１４は、それぞれのモデルコンポーネント１６に情報を提供し、それぞれのモデルコンポーネント１６から情報を受領するためのインターフェイスを有する。
【００３２】
更に、アプリケーション１０の異なる部分をこのプログラミングパターン内の異なる位置で実行することができる。いくつかの部分は、一つ以上のコントローラコンポーネント１４により実行することができ、それらのコントローラコンポーネント１４と一つ以上のそれぞれのビューコンポーネント１２又はモデルコンポーネント１６との間で情報を交換することができる。上記のいくつかの部分が一つ以上のビューコンポーネント１２内で単独で実行される一方で、アプリケーションの他の部分が、一つ以上のモデルコンポーネント１６により実行され、そして、一つ以上のコントローラコンポーネント１４を通って、一つ以上のそれぞれのビューコンポーネント１２に達する。
【００３３】
ＭＶＣパターンによると、各々のビューコンポーネント１２及びモデルコンポーネント１６は、他について関知することなく、独立して変更することができる。ある状況では、コントローラコンポーネント１４は、変更されたビューコンポーネント１２又はモデルコンポーネント１６に応じて、変更される必要はなくてもよい。他の状況では、それらがアップデートされ変更されるように、一つ以上のコントローラコンポーネント１４は、それぞれの変更されたモデルコンポーネント１６又はビューコンポーネント１２と接続されて更新されそして変更されてもよい。
【００３４】
一般的に、ビューコンポーネント１２は、コントローラコンポーネント１４だけと対話し、モデルコンポーネント１６とは対話しない。コントローラコンポーネント１４はビューコンポーネント１２及びモデルコンポーネント１６と対話する。そして、モデルコンポーネント１６は、コントローラコンポーネント１４とだけ対話し、ビューコンポーネント１２とは対話しない。
【００３５】
様々な実施形態では、あるコンポーネントは、同じタイプの他のコンポーネントとは対話し、異なるタイプの他のコンポーネントとは対話しない。例えば、第１のコントローラコンポーネントは、第１のビューコンポーネントと対話してよく、そして、第２のコントローラコンポーネントは、第２のビューコンポーネントと対話してよい。この方式で、第１のコントローラコンポーネントは、第２のコントローラコンポーネントを介して、第２のビューコンポーネントと対話することができるが、第２のビューコンポーネントと直接対話することはできない。
【００３６】
あるアプリケーションは、必ずしもＭＶＣパターンに固執しないけれども、アプリケーションは、ここに記載された実施形態を用いて、異なる装置で実行することができる別個のコンポーネントを、有していてもよい。
【００３７】
図１Ａに示された例は、別々のコンピュータで実行可能な別個のコンポーネントのプログラミングパターンの一例である。
【００３８】
もう一つのプログラミングパターンを図１Ｂに示した。それは、図１Ａに示されたものと、概念及び動作でいくつかの違いがある。図１Ｂの概略図に示したように、アプリケーション１８は、オペレーションコンポーネント２０、ビューコンポーネント２６、モデルコンポーネント２２及びイベント２４を含むプログラミングパターンで動作する。イベント２４は、オペレーションコンポーネント２０、モデルコンポーネント２２、及びビューコンポーネント２６の間で交換される。
【００３９】
この特定のプログラミングパターンは、モデル、オペレーション、ビュー、及びイベントを意味する頭文字ＭＯＶＥを有する。この特定のプログラミングパターンによると、ビューコンポーネント２６は、ユーザーインターフェイスを提供する。ユーザーが見ることができ対話することができるすべては、ビューコンポーネント２６により電力を供給される。
【００４０】
これは、アプリケーション１８の状態の、ユーザーが理解できる表示を提供するだけではなく、ユーザーから情報を受け取り、他のコンポーネントにイベント２４を伝達するために、有意な方法でユーザーインテラクションが入ってくる経路もまた提供する。ビューコンポーネント２６は、オペレーションコンポーネント２０又はモデルコンポーネント２２にイベント２４を送り出し、そして、モデルコンポーネント２２又はオペレーションコンポーネント２０からイベント２４を探すことにより、変更を待つ。
【００４１】
イベント２４は、ユーザーがビューコンポーネント２６と対話するたびに送り出される。イベント２４を監視しイベント２４と対話することにより、オペレーションコンポーネント２０及びモデルコンポーネント２２は、ビューとの対話を特定することができ、これらのコンポーネントは、互いに干渉することなく接続することができる。オペレーションコンポーネント２０は、命令セットを提供でき、データを交換でき、そして、様々なタイプのコンポーネントの間で交換されるイベント２４に基いて、計算能力の配分を提供することができる。
【００４２】
図１Ｂのこのアプリケーションは、図１Ａに示されたものとは異なるプログラミングパターンであり、ここに記載された発明の実施形態が非常に異なるプログラミングパターンで使用される実例として提供される。
【００４３】
プログラミングパターンには、現存するものや将来作成されて使用されるものなど多くの異なるタイプがある。発明の実施形態が、互いに独立な別々の装置で実行することができるコンポーネントを有する様々なプログラミングパターンにより実行可能なことを示す実例として、２つのプログラミングパターンの例が提供される。
【００４４】
ここに記載された実施形態には、様々な他のプログラミングパターンの例が適用でき、そして、これらの様々なプログラミングパターンは当業者にとって公知となるので、それは、ここに更に記載されなくでも当業者にとって明白なものとなる。
【００４５】
図２Ａに、図１Ａのアプリケーション１０又は図１Ｂのアプリケーション１８のようなアプリケーション内のハードウェアシステム１５を示した。ハードウェアシステム１５は、モバイル機器２６、計算装置２８、及びクラウドリソース３０を含む。ある実施形態では、システム１５は、モバイル機器２６及び計算装置２８を含むが、クラウドリソース３０は含まないと認められるべきである。同様に、他の実施形態では、システム１５は、計算装置２８及びクラウドリソース３０を含むが、モバイル機器２６は含まなくてよい。更なる他の実施形態では、システム１５は、モバイル機器２６及びクラウドリソース３０を含むが、計算装置２８は含まなくてよい。
【００４６】
モバイル機器２６は、アプリケーションの少なくとも一部を実行可能ないかなるモバイル機器も含む。モバイル機器２６の例は、ラップトップコンピュータ、スマートフォン、タブレットコンピュータ、スマートウオッチ、他のスマート機器、又は他のハンドヘルドコンピュータを含む。しかし。これに限定されるものではない。
【００４７】
通常理解されるように、モバイル機器２６は、電池で駆動され、電池の容量には限りがある。モバイル機器２６は、処理や記憶能力も制限されていてもよい。そして、例えばアプリケーションを実行するためのプロセッサは一つかもしれないし、大きなグラフィック容量や複雑な数学の方程式を高速で計算する能力はないかもしれないし、また消費電力を抑制するために、処理能力は削減されるかもしれない。
【００４８】
計算装置２８は、モバイル機器２６から分離されている一つ以上のコンピュータである。計算装置２８は、パーソナルコンピュータ、他のモバイル機器、又は追加の処理能力がある他のソースであってもよい。例えば、ある実施形態では、計算装置２８は、図２Ｂ及び図３Ａ−３Ｅに記載されたような自動車のヘッドユニットである。他の実施形態では、計算装置２８はモバイル機器２６のユーザーのホームコンピュータである。
【００４９】
計算装置２８の態様の一つは、更なる電源を有する。その電源は、電力線又は送電網に接続されるもの、発電機で補われる電源を有するもの、又はヘッドユニットに電力供給するときに自動車のバッテリーに充電するために使用される交流発電機を含んでいてよい。それにより、計算装置２８が使用できる電力量は一定又は無制限と考えることができ、そして、計算装置２８は、少なくともモバイル機器２６との対比において電源を失うことは決してないと考えることができる。
【００５０】
その上、計算装置２８は、モバイル機器２６を上回る、更なるメモリ及び処理能力を含む。例えば、計算装置２８は、複雑なコードを実行する非常に高い能力及び複数のプロセスを並行して実行することができる能力を有する、一つ以上の先進のプロセッサを有していてよい。しかし、計算装置２８のメモリ及び処理能力は、ある状況においてはそれでも制限されるかもしれない。
【００５１】
クラウドリソース３０は、サーバーコンピュータのような一つ以上のコンピュータを含み、それは、モバイル機器２６及び計算装置２８から遠隔地にあり、複数の装置により使用される処理能力及び記憶容量を供給または割り当てる。クラウド３０との対話は、無線、インターネット、有線、又は他の伝送線のような様々な接続経路でなされる。クラウド３０は、少なくとも計算装置２８及びモバイル機器２６との対比において、無制限の処理能力、無制限の記憶容量、決して供給が停止しない一定の電力を有すると考えることができる。
【００５２】
アプリケーションは、これらの装置のうちの１台にその全体が備えられていてよく、又、アプリケーションは、いずれのタイプの装置であっても周囲のいろいろな装置に分散させることができる。特に、あるアプリケーションでは、一台の計算装置２８に単独で存在し、アプリケーションのすべてのコンポーネントは、その一台の計算装置２８内に格納されて、単独で実行される。同様に、あるアプリケーションでは、一台のモバイル機器２６に単独で存在し、アプリケーションのすべての部分は、その一台のモバイル機器２６内に格納されて、単独で実行される。
【００５３】
他の実施形態では、計算装置２８は、アプリケーションを動作させるために、モバイル機器２６又はクラウド３０、若しくはその両方と対話をしてよい。
【００５４】
この例では、アプリケーションのいくつか（全てではない）のコードが計算装置２８で実行されている。そして、残りのコードは、モバイル機器２６、クラウド３０、又はモバイル機器２６とクラウド３０の間で分散させて実行させている。このように、アプリケーションのいくつかのコンポーネントは、アプリケーションの他のコンポーネントが、モバイル機器２６又はクラウド３０で実行されている一方で、計算装置２８で実行されている。
【００５５】
同様に、他の実施形態では、モバイル機器２６は、アプリケーションを動作させるために、計算装置２８又はクラウド３０、若しくはその両方と対話をしてよい。
【００５６】
この例では、アプリケーションのいくつか（全てではない）のコードがモバイル機器２６で実行されている。そして、残りのコードは、計算装置２８、クラウド３０、又は計算装置２８とクラウド３０の間で分散させて実行させている。このように、アプリケーションのいくつかのコンポーネントは、アプリケーションの他のコンポーネントが、計算装置２８又はクラウド３０で実行されていて、その一方では、モバイル機器２６で実行されている。
【００５７】
アプリケーションの異なる部分又はコンポーネントを、モバイル機器２６、計算装置２８、クラウド３０、又はそれらの組み合わせのうちの、ある特定のハードウェア機器の一つで動作させるためにダイナミックに割り当てることができる。いくつかの実施形態では、これらの装置のうちの一つが、異なるアプリケーションコンポーネントをこれらのいくつかの装置に割り当てて分配するために使用される。
【００５８】
この装置は、ホスト装置と呼ばれることがあり、前記いくつかの装置の動作特性をモニタしてもよいし、どのコンポーネントをどの装置で実行しているかを変更する方法を決定するためのアプリケーションの実行をモニタしてもよい。
【００５９】
上記のように、計算装置２８、モバイル機器２６、及びクラウド３０は、異なる処理、メモリ、及び電力の性能を有している。同様に、装置及びシステムの間のネットワーク通信の性能及び帯域幅が異なっていることも可能である。
【００６０】
例えば、モバイル機器２６及び計算装置２８は、Bluetooth（登録商標）のような無線のローカルエリアネットワークを通して互いに通信してもよい。また、モバイル機器２６及びクラウド３０はセルラーネットワークを通して互いに通信してもよい。そして、計算装置２８及びクラウド３０は、セパレートセルラーネットワーク、インターネット、又は他のネットワーク技術のような、他の通信ネットワークを通して、互いに通信してよい。
【００６１】
処理、メモリ、電力、及びネットワークのそれぞれの性能は、装置で実行されているアプリケーションの数、ネットワークの混雑又は遅い伝達時間、小さいバッテリー残量のような電力供給の減少、アプリケーションの使用法、その他により、時間と共に変化させることができる。これらの特性及び性能が変化するように、コンポーネントを実行している場所も変えることができる。
【００６２】
例えば、モバイル機器２６に供給可能な電力は、バッテリーが満充電状態から放電しきる寸前まで時間と共に変動してもよい。モバイル機器２６がバッッテリー切れ寸前のとき、その内部動作は、どのアプリケーション、又は特定のアプリケーションのどの部分をそこでさせるかを制限してよい。これは、モバイル機器２６の他の部分がアクティブであることを維持するために、バッテリーの残量を節約するためである
【００６３】
この例では、アプリケーションの一部は、モバイル機器２６から、計算装置２８又はクラウド３０に移動して、そこで実行してよい。このように、モバイル機器２６は、アプリケーションの一部そのものを実行するモバイル機器２６よりも、そのアプリケーションの一部を実行している他のシステムからデータを受信することにより、消費電力を削減してよい。
【００６４】
同様に、モバイル機器２６のバッテリーが充電されているならば、前もって移動されたアプリケーションの一部を、モバイル機器２６により実行するためにモバイル機器２６へ戻してもよい。
【００６５】
別の例では、計算装置２８がセルラーネットワークを通してクラウド３０と通信していれば、月々のデータプランの通信の上限に近付いているとき、クラウド３０で実行されているアプリケーションの一部は計算装置２８の戻してもよい。このように、処理の多くは、計算装置２８自身で実行されており、コンピュータシステムのデータプラン上限を超えないように、セルラーネットワークで伝送されるデータ量を減少させることができる。
【００６６】
同様に、モバイル機器２６が、無線ローカルエリアネットワークを通して計算装置２８にデータを伝送できるところへは、処理のいくつかをモバイル機器２６に移動してよい。それにより、少なくともアプリケーションの一部のために追加の処理能力を供給されている一方で、コンピューティングシステムのデータプランを用いて、セルラーネットワークから伝送されるデータ量を再度減少させることができる。
【００６７】
アプリケーションとしての、いろいろな装置における、メモリ、電力、ネットワーク性能、又は他の動作性能等の処理においての変更のあらゆる組み合わせは、アプリケーションコンポーネントが、常時、どの装置で実行しているかを、ダイナミックに変更、割り当て、分配する方法を判断するために使用することができる動作であると認められるべきである。前記装置のいずれかにおける、処理、メモリ、電力、ネットワーク性能、又は他の動作性能の、アプリケーションの実行中の変更のあらゆる組み合わせは、どのアプリケーションコンポーネントをどの装置で実行するかを、ダイナミックに変更、割り当て、分配する方法を決定するために使用することができるのは当然である。
【００６８】
いろいろな実施形態が、ここで図２Ａに示されたハードウェアが異なる動作環境について説明される中で、記載される。
【００６９】
一つの可能な環境は自動車である。この自動車は、計算装置２８としてのヘッドユニットを含み、ここでは、ユーザーは、モバイル機器２６を持っていたり、持っていなかったりする。もう一つの環境は、ホテルセッティングである。このホテルでは、個々のユーザー又は宿泊客により提供される、計算装置２８及び一つ以上のモバイル機器２６を含む。
【００７０】
他の可能な環境には、船舶、航空機、家庭、又は他の状況がある。この他の状況とは、その中に別々の電源及びコンピューティングリソースを有するが、互いに対話することができる計算装置２８、モバイル機器２６、又はクラウド３０を含んでいる。互いの対話は、装置が、まるで、すべてのアプリケーションが、ユーザーが使用する一つの装置で実行されるかのようなエクスペリエンスをユーザー提供するために、アプリケーションの異なる部分を実行しているダイナミックな変更のために行われる。
【００７１】
図２Ｂは、ここに記載される実施形態によるヘッドユニットで実行されるアプリケーションを管理するために、自動車のヘッドユニットから遠くに分離されているホスト装置を利用する、自動車環境のコンテキストダイアグラムを例示する。
【００７２】
システム１００は、自動車１０２とホスト装置１２４を含む。ある実施形態では、システム１００は、複数のモバイル機器１１４−１１６及びリモートデータサービス１２６を含む。
【００７３】
自動車１０２は、実際には、ヘッドユニット１０４を有するどんな車両をも含む。この記載は、まず自動車に言及するけれども、航空機、船舶、鉄道車両、及び、ヘッドユニットを含む他の方式の輸送手段、若しくは、家、ホテル、又は他の建物のような他の非輸送環境で利用される類似の実施形態であってもよい。
【００７４】
ヘッドユニット１０４は、インタラクティブな制御及び自動車のユーザーや乗員にユーザーインターフェイスを提供する自動車内のコンピュータである。ここで用いられるように、ユーザー及び乗員の文言は相互交換可能であって、ヘッドユニット１０４や自動車１０２と対話をするすべての人である。ヘッドユニット１０４は、一つ以上のアプリケーションにアクセスするために、又は、一つ以上のアクセサリー１０８−１１０と対話するために利用される。
【００７５】
ある実施形態では、ヘッドユニット１０４は、図２Ａの計算装置２８の実施形態である。様々な実施形態においては、ヘッドユニット１０４は、アクセサリーデータを表示でき、アクセサリーデータをモバイル機器１１４−１１６や他のアクセサリー等の他の装置に供給できる。
【００７６】
様々な実施形態において、ヘッドユニット１０４は、一つ以上のアプリケーションにアクセスすることや、ヘッドユニットアプリケーションとして参照されることを可能とするユーザーインターフェイスを含む。
【００７７】
ある実施形態では、これらのアプリケーションは、一つ以上のアクセサリー１０８−１１０である。各アプリケーションは複数のコンポーネントを含み、これらのコンポーネントは互いに対話して全体としてそのアプリケーションの機能を実行する。
【００７８】
ある実施形態では、コンポーネントの少なくとも一つのサブセットは、移動可能で、同一のアプリケーションの他のコンポーネントを実行している装置から分離された別の装置で実行することができる。
【００７９】
ある実施形態では、一つ以上のアプリケーションが、少なくとも一つのビューコンポーネント、少なくとも一つのモデルコンポーネント、及び少なくとの一つのコントローラコンポーネントで、図１Ａに記載のアプリケーション１０にようにモデル−ビュー−コントローラ構造に構成される。
【００８０】
他のアプリケーションは、図１Ｂのアプリケーション１８により例示されたモデル、オペレーション、ビュー、及びイベント構造のような他の構成、独立したコンポーネントよりなるアプリケーションの他のタイプの構成、又は分離不可能なアプリケーションの他のタイプの構成を含んでもよい。
【００８１】
ある実施形態では、一つのアプリケーションの全体が、ヘッドユニット１０４で実行されている。他の実施形態では、アプリケーションコンポーネントの全部ではなくサブセットだけが、ヘッドユニット１０４で実行され、残余のアプリケーションコンポーネントは、ホスト装置１２４で実行される。
【００８２】
例えば、一つのアプリケーションのビューコンポーネントは、ヘッドユニット１０４で実行され、その間に、モデルコンポーネントやコントローラコンポーネントは、ヘッドユニット１０４に関連する現在の動作特性に応じて、ヘッドユニット１０４、ホスト装置１２４、又はそれらの組合わせで実行される。
【００８３】
前記動作特性は、例えば、自動車の位置、ヘッドユニットの現在の負荷、ヘッドユニットと対話するユーザー、ユーザーによる複数のアプリケーションの利用、ネットワークの接続性、アプリケーションによるデータ利用、及びヘッドユニットのその他の動作の態様を含んでよい。しかし、これに限定されるものではない。アプリケーションが、別々の装置で実行できるコンポーネントを有さないときは、当然ながら、アプリケーションは、一つのヘッドユニット１０４又は一つのホスト装置１２４でその全体を実行してよい。
【００８４】
現在の動作特性が時間と共に変化するとき、ヘッドユニット１０４で実行されているコンポーネントセットは、この、現在の動作特性の変化に応じて変更されてよい。例えば、自動車が最初にオンされるとき、ホスト装置１２４は、自動車の運転手は誰か、のような、現在の動作特性の最初のセットを決定する。そして、ホスト装置１２４は、決定されたそれらの動作特性に基いて、一つ以上のアプリケーションを選択して運転手に提供する。
【００８５】
この例として、ホスト装置１２４が、以下のコンポーネント：ＶＣ＿Ａ、ＶＣ＿Ｂ、ＭＣ＿Ａ、ＭＣ＿Ｂ、ＣＣ＿Ａ及びＣＣ＿Ｂを有するアプリケーション＿Ａを選択すると仮定する。ここで、ＶＣコンポーネントはビューコンポーネント、ＭＣコンポーネントはモデルコンポーネント、そしてＣＣコンポーネントはコントローラコンポーネントのことである。ホスト装置１２４は、動作特性に基いて、ＶＣ＿Ａ、ＶＣ＿Ｂ、及びＣＣ＿Ａを選択して、ヘッドユニット１０４で実行するためにヘッドユニット１０４に提供してよく、ＭＣ＿Ａ、ＭＣ＿Ｂ、及びＣＣ＿Ｂはホスト装置１２４に残って、ホスト装置１２４で実行される。
【００８６】
時間の経過とともに、ヘッドユニット１０４に関連した現在の動作特性は変更されてよい。この変更に応じて、ホスト装置１２４は、ホスト装置１２４でＣＣ＿Ａの実行を開始できるときに、ＣＣ＿Ａを停止するためにヘッドユニット１０４に通知してよい。この時点では、ヘッドユニット１０４がＶＣ＿Ａ及びＶＣ＿Ｂを実行していて、ホスト装置１２４が、ＭＣ＿Ａ、ＭＣ＿Ｂ、ＣＣ＿Ａ、及びＣＣ＿Ｂを実行している。
【００８７】
又、動作特性では、別の変更が生じてもよく、ホスト装置１２４は、アプリケーションのすべてのコンポーネントをヘッドユニット１０４に提供してもよい。その結果、ヘッドユニット１０４が、ＶＣ＿Ａ、ＶＣ＿Ｂ、ＭＣ＿Ａ、ＭＣ＿Ｂ、ＣＣ＿Ａ及びＣＣ＿Ｂを実行していて、ホスト装置１２４はいずれのコンポーネントも実行していない。
【００８８】
どのコンポーネントをヘッドユニット１０４で実行するか、そして、どのコンポーネントホスト装置１２４やさらには他の装置で実行するかの選択は、ヘッドユニット１０４に関連する動作特性が時間と共に変化するのに合わせてリアルタイムでダイナミックに変更されてよい。
【００８９】
ホスト装置１２４は、サーバーコンピュータ、クラウドリソース、スマートフォン又は他のモバイル機器、及び他の計算装置のような、自動車と遠隔しているいかなるコンピュータでもあってよく、ヘッドユニット環境と関連する動作特性をモニタし、どのアプリケーションコンポーネントがヘッドユニット１０４又は他の計算装置で動作してものであるかをダイナミックに変更することができる。
【００９０】
様々な実施形態では、ホスト装置１２４は、図２Ａに示されたモバイル機器２６、クラウドリソース３０、又は別の計算装置２８であってよい。ここに記載されたように、ヘッドユニット１０４で実行されていないアプリケーションコンポーネントは、ホスト装置１２４又はホスト装置１２４により選択された他の装置で実行されている。
【００９１】
ホスト装置１２４は、一つの装置として例示されているが、実施形態は、そこまで限定するものではない。もしろ、ホスト装置１２４は、ヘッドユニットアプリケーションコンポーネントを、リアルタイムでダイナミックに管理する機能を集約して実行する、一つ以上のコンピュータ装置であり得る。
【００９２】
様々な実施形態では、ホスト装置１２４は、インターネットをからアクセスできるクラウドコンピューティング技術を含んでよい。
【００９３】
リモートデータサービス１２６は、データ又は他の情報を、ヘッドユニット１０４又はホスト装置１２４で実行しているアプリケーション又はアプリケーションコンポーネントに供給する、一つ以上のアプリケーションデータサービスを含んでいてよい。
【００９４】
例えば、ヘッドユニット１０４で実行されているコンポーネントは、リモートデータサービス１２６から、音楽データをリクエストしてもよく、リモートデータサービス１２６は、リクエストされたデータをヘッドユニット１０４に返す。
【００９５】
別の例では、ホスト装置１２４で実行されているコンポーネントが、リモートデータサービス１２６から、音楽データをリクエストしてもよく、リモートデータサービス１２６は、リクエストされたデータをホスト装置１２４に返す。そして、ホスト装置１２４は、そこでアプリケーションを実行するのにそのデータを利用し、又は、ヘッドユニット１０４で実行されているコンポーネントによる使用のためにそれをヘッドユニット１０４に提供する。
【００９６】
リモートデータサービス１２６の事例は、地図データの維持、音楽又は他のコンテンツ、ゲームデータ、並びに、アプリケーションからリクエストされるかもしれない他のタイプの情報を含んでいてもよい。
【００９７】
ホスト装置１２４、ヘッドユニット１０４、及びリモートデータサービス１２６は通信ネットワーク１２２を通して、互いに通信する。通信ネットワーク１２２は、一つ以上の装置から一つ以上の他の装置にデータを伝送するために、様々な計算装置を結合して構成される。
【００９８】
通信ネットワーク１２２は、通信技術及びトポロジーの様々な形式を使用して採用される様々な無線ネットワークを含む。ここで、通信技術及びトポロジーは、セルラーネットワーク、メッシュネットワーク等を含んでよい。しかし、これらに限定されるものではない。
【００９９】
様々な実施形態において、アプリケーションコンポーネントは、それがヘッドユニット１０４又はホスト装置１２４で実行されてるかにかかわらず、通信ネットワーク１２２を使用して、リモートデータサービス１２６からデータをリクエストしてよい。そして、リモートデータサービス１２６は、通信ネットワークを通して、ホスト装置１２４又はヘッドユニット１０４にリクエストされたデータを提供してよい。
【０１００】
ヘッドユニット１０４は、アクセサリー１０８−１１０へのユーザーアクセスを提供することもできる。アクセサリー１０８−１１０は、ユーザーによって制御可能ないかなる自動車のユーティリティ又は装置をも含むことができる。これらのアクセサリーは、例えば、アジャスタブルシート、サンルーフ、サイドミラー、バックミラー、エアーコンディショナー、パワーウィンドウ、又は自動車１０２の他の制御可能な機能を含む。しかし、それらに限定されるものではない。
【０１０１】
アクセサリー１０８−１１０は、さらに、情報やデータをユーザーに提供するいかなる自動車ユーティリティや装置を実質的に含む。これらのアクセサリーは、速度計、積算距離計、油圧ゲージ、温度ゲージ、又は自動車のユーザーに情報を提供する他の自動車センサを含む。しかし、それらに限定されるものではない。
【０１０２】
アクセサリー１０８−１１０はヘッドユニットアプリケーションを更に含む。これらのアクセサリーは、ナビゲーション、オーディオやラジオ調整機能、テレビや音楽アプリケーション、環境制御アプリケーション、自動車性能アプリケーションやメンテナンスアプリケーション、又は他のアプリケーションを含む。しかし、これらに限定されるものではない。
【０１０３】
ここで、いくつかのアクセサリーはデータを出力するだけでもよく、いくつかのアクセサリーはアクセサリーを操作するための制御情報を受け取るだけでよく、又、いくつかのアクセサリーはデータを入出力することができる。例えば、速度計は現在の自動車の速度を出力するだけでよく、パワーウィンドウはウインドウを上下に動かす制御信号を受け取るだけで、ヘッドユニットに何ら情報を返さなくてよく。又、ナビゲーションシステムは、目的地の指示を受け取り、目的地への提案された旅行ルートを返してもよい。但し、これらの例はすべてを網羅しているわけではなく、他のタイプのアクセサリーを採用してもよい。
【０１０４】
ヘッドユニット１０４は、アクセサリー通信ネットワーク１０６を通して、アクセサリー１０８−１１０と通信する。アクセサリー通信ネットワーク１０６は、アクセサリー１０８−１１０とヘッドユニット１０４の間でコンテンツやデータを伝送するために、アクセサリー１０８−１１０をヘッドユニット１０４に結合するように構成される。装置間で伝送される情報は、現在のアクセサリーの状態やデータ、アクセサリー制御データ、動画データ、音声データ、画像データ、テキストデータ、又は他のコンテンツ、データ、情報を含んでよい。
【０１０５】
アクセサリー通信ネットワーク１０６は、一つ以上の物理的なネットワーク、一つ以上の無線通信ネットワーク、一つ以上のアプリケーションプログラムインターフェイス、又は、データ伝送が可能な他のネットワークを含んでいてもよく、これらは、ヘッドユニット１０４と通信するアクセサリーのタイプに応じて、一つのアクセサリーから他のアクセサリーへ又は一つのアクセサリーからヘッドユニット１０４へ、ヘッドユニット１０４から一つのアクセサリーへ、又はこれらの組み合わせによりデータを転送することができる。
【０１０６】
例えば、アクセサリー通信ネットワーク１０６は、有線制御のエリアネットワークのような自動車の車体通信ネットワーク、Bluetooth Low Energy（登録商標）を利用するパーソナルエリアネットワークのような近距離無線通信ネットワーク、又は他のタイプのネットワークを含んでよい。
【０１０７】
ある実施形態では、ユーザーは、ヘッドユニット１０４又はアクセサリー１０８−１１０と対話するため、モバイル機器１１４−１１６のようなモバイル機器を利用できてもよい。
【０１０８】
ある実施形態では、モバイル機器１１４−１１６は、図２Ａのモバイル機器２６の実施形態であって良い。モバイル機器１１４−１１６は、自動車１０２のヘッドユニット１０４との通信が可能な、いかなるモバイル機器も含む。又、モバイル機器１１４−１１６は、ヘッドユニット１０４へ／から、コンテンツと制御信号を送信／受信するように構築されている。
【０１０９】
モバイル機器１１４−１１６の例として、ラップトップコンピュータ、スマートフォン、タブレットコンピュータ、ウェアラブルコンピューティング機器、他のスマート機器、又は他のハンドヘルドコンピューティング機器を含むが、ただし、これらに限定はされない。
【０１１０】
ヘッドユニット１０４は、モバイル機器通信ネットワーク１２０を通して、モバイル機器１１４−１１６と通信する。モバイル機器通信ネットワーク１２０は、コンテンツやデータをモバイル機器１１４−１１６とヘッドユニット１０４の間で伝送するために、モバイル機器１１４−１１６をヘッドユニット１０４の結合するように構成される。
【０１１１】
装置間で通信される情報は、現在のアクセサリーの状態、アクセサリーデータにアクセスするためのリクエスト、アクセサリーを制御又は変更するためのリクエスト、動画データ、音声データ、画像データ、テキストデータ、又は他のタイプのコンテンツ、データ、又は情報を含んでもよい。
【０１１２】
通信ネットワーク１２０は、classic Bluetooth又はBluetooth Low Energyプロトコルを利用するパーソナルエリアネットワークのような、いろいろな近距離無線通信ネットワークや、ＩＲ光ネットワーク、又は、モバイル機器１１４−１１６の間の通信を可能とするネットワーク１２０を含んでよい。
【０１１３】
様々な実施形態において、通信ネットワーク１２２、モバイル機器通信ネットワーク１２０、及びアクセサリー通信ネットワーク１０６は、別々の通信ネットワークである。ここに記載するように、ホスト装置１２４及びヘッドユニット１０４は、モバイル機器１１４−１１６を利用することなしに、通信ネットワーク１２２を通して互いに直接通信することが可能である。
【０１１４】
しかし、ヘッドユニット１０４が通信ネットワーク１２２へのアクセスを有していない実施形態では、モバイル機器１１６が、ヘッドユニット１０４とホスト装置１２４又はリモートデータサービス１２６の間の中間的な装置として利用されてもよい。このような実施形態では、ヘッドユニット１０４は、モバイル機器通信ネットワークを通してモバイル機器１１６と通信してよく、そして、モバイル機器１１６は、通信ネットワーク１２２を通して、ホスト装置１２４及びリモートデータサービス１２６と通信することができる。
【０１１５】
他のある実施形態では、ホスト装置１２４は、どのコンポーネントがヘッドユニット１０４で実行され、どのコンポーネントがホスト装置１２４で実行されるかを選択することについて、ここに記載したように同じ機能を実行することができるが、この場合、ホスト装置１２４は、ヘッドユニット１０４での実行ために選択されたコンポーネントを、モバイル機器１１６に提供し、モバイル機器１１６がそれらのコンポーネントがヘッドユニット１０４に転送してよい。
【０１１６】
ある実施形態では、ホスト装置１２４はモバイル機器１１４−１１６の一つであってよく、この場合、このモバイル機器は、どのコンポーネントがヘッドユニット１０４で実行され、どのコンポーネントが携帯電話で実行されるのか、を選択する計算装置となる。他の実施形態においては、ここに記載される技術は、ホスト装置１２４とモバイル機器１１６との間で採用されてもよい。
【０１１７】
そのような少なくとも一つの実施形態においては、ホスト装置１２４がモバイル機器１１６に関連する動作特性をモニタし、ヘッドユニット１０４よりもむしろモバイル機器１１６上のアプリケーションについてここに記載された実施形態に従って、どのアプリケーションコンポーネントがモバイル機器１１６で実行しているかをダイナミックに変更することができる。
【０１１８】
更に別の実施形態では、ここに記載された技術もまた、どのコンポーネントがヘッドユニット、モバイル機器、及びホスト装置の組み合わせたものの上で実行するかを決定するために採用することができる。
【０１１９】
ある実施形態では、アプリケーションの少なくとも一つのコンポーネントを実行している各々の機器は、別々の装置で実行されているコンポーネントの間の通信を調整するために専門化したアプリケーションやオペレーティングシステムを含んでよい。
【０１２０】
図３Ａは、自動車システムの使用事例を示す。システムは、自動車１０２、ヘッドユニット１０４、及び複数の異なるアクセサリーを含む。図示されたアクセサリーは、図２Ｂのアクセサリー１０８−１１０の例である。アクセサリーは、ボディアクセサリー１０８ａ−１０８ｄ、インフォテインメントアクセサリー１１０ａ−１１０ｆ、及び無線アクセサリー１０９を含む。
【０１２１】
ボディアクセサリー１０８ａ−１０８ｄは、自動車の車体通信ネットワーク２１８を通してヘッドユニット１０４と通信するアクセサリーである。自動車の車体通信ネットワーク２１８は、ボディアクセサリー１０８ａ−１０８ｄをヘッドユニット１０４に物理的に接続するコントローラエリアネットワークバスであってよい。
【０１２２】
ボディアクセサリー１０８ａ−１０８ｄの例として、エアーコンディショナー１０８ａ、アジャスタブルミラー１０８ｂ、アジャスタブルシート１０８ｃ、及びサンルーフ１０８ｄを含む。しかし、これらに限定されるものではない。
【０１２３】
インフォテインメントアクセサリー１１０ａ−１１０ｆは、ソフトウェアプログラム及び機能のように、ヘッドユニット１０４に埋め込まれるか、又はヘッドユニット１０４で実行されるアクセサリーであり、そして、インフォテインメントネットワーク２１６を通してヘッドユニット１０４と通信する。インフォテインメントネットワーク２１６は、ヘッドユニット１０４を様々なインフォテインメントアクセサリー１１０ａ−１１０ｆと通信することを可能とする一つ以上のアプリケーションプログラムインターフェイスであってよい。
【０１２４】
インフォテインメントアクセサリー１１０ａ−１１０ｆの例として、ラジオ１１０ａ、ナビゲーション１１０ｂ、オーディオ制御器１１０ｃ、アプリケーション（Ａｐｐｓ）１１０ｄ、音楽１１０ｅ、及びテレビ１１０ｆ、又は図示されていない他のアプリケーションを含む。しかし、それらに限定されるものではない。
【０１２５】
無線アクセサリー１０９は、無線ネットワーク２２０を通して、Bluetooth Low Energyや他の近距離無線プロトコルのような、ヘッドユニット１０４と通信をする他のアクセサリーを含む。無線アクセサリー１０９は、自動車１０２のバックシートに図示されているが、実施形態ではそれに限定するものではない。無線アクセサリー１０９は、車の中の他に位置に置くことでき、他のアクセサリーの制御を提供してよい。
【０１２６】
様々な実施形態において、無線アクセサリー１０９との通信のための自動車の車体通信ネットワーク２１８、インフォテインメントネットワーク２１６、及び無線ネットワーク２２０は、図１のアクセサリー通信ネットワーク１０６の一部である。
【０１２７】
モバイル機器１１４−１１６は、一つ以上のボディアクセサリー１０８ａ−１０８ｄ、インフォテインメントアクセサリー１１０ａ−１１０ｆ、無線アクセサリー１０９、又はそれらの組み合わせに、アクセス又は制御するためのリクエストを、ヘッドユニット１０４に提供することができる。
【０１２８】
ある実施形態では、モバイル機器１１４−１１６は、アクセサリーデータをヘッドユニット１０４にリクエストを送信すること無しに受信することができる。このような実施形態では、ヘッドユニット１０４は、アクセサリーから放送されたか、ヘッドユニット１０４によりアクセサリーからリクエストされたか、無線ネットワーク２２０を通して放送又は伝送された、アクセサリーデータを得るかもしれない。モバイル機器１１４−１１６は、ヘッドユニット１０４からのこの放送データを聴くことができる。
【０１２９】
図３Ａ〜３Ｅは、ここに記載された実施形態によるホスト装置及びヘッドユニットのシステム図の例を示す。図３Ａ〜３Ｅは、ホスト装置１２４及びヘッドユニット１０４を含む。ホスト装置１２４及びヘッドユニット１０４は、通信ネットワーク１２２を通して通信する。
【０１３０】
図３Ｂに図示されたように、ホスト装置１２４は、複数のアプリケーション３０８を格納する。それぞれのアプリケーション３０８は、複数のコンポーネント３３０−３３２を含む。ここに記載するように、アプリケーション３０８は、一つ以上のビューコンポーネント３３０、一つ以上のモデルコンポーネント３３１、及び一つ以上のコントローラコンポーネント３３２を有するビュー−モデル−コントローラ構造で構成されてよい。
【０１３１】
しかしながら、実施形態はビュー−モデル−コントローラ構造で設計されたアプリケーションに限定されるものではない。むしろ、他のアプリケーション設計もまた、いくつかコンポーネントが互いに自律している限り利用することができ、別々の装置で実行することができる。
【０１３２】
様々な実施形態では、アプリケーションは、同じ装置で実行される必要があるコンポーネント、ホスト装置１２４で実行される必要があるコンポーネント、又、ヘッドユニット１０４で実行される必要があるコンポーネント、又はこれらの組み合わせ、のような他のコンポーネントを含んでよい。
【０１３３】
ここに記載されたように、ホスト装置１２４は、どのアプリケーションがヘッドユニット１０４に提供されるか、それらのアプリケーションのどのコンポーネントが、ヘッドユニット１０４で実行され、そしてホスト装置１２４で実行されるのかを、ヘッドユニット１０４に関連した現在の動作特性に基づいて、ダイナミックに決定する。
【０１３４】
図３Ｃに図示された例では、第１のユーザー３２０はヘッドユニットを１０４使用中である。ここに記載する実施形態を採用すると、ホスト装置１２４は、第１のユーザーのために実行するアプリケーション３１０を決定する。この事例では、アプリケーション３１０は、アプリケーション３０２−３０４を含む。
【０１３５】
ホスト装置１２４は、ヘッドユニット１０４に提供されるアプリケーション３０２−３０４を選択する。それらの選択されたアプリケーションのうち、ホスト装置１２４は、アプリケーション３０２のビューコンポーネント、アプリケーション３０３のビューコンポーネント、モデルコンポーネント、及びコントローラコンポーネント、並びに、アプリケーション３０４のビューコンポーネント及びコントローラコンポーネント、を選択してヘッドユニット１０４に提供する。
【０１３６】
ヘッドユニット１０４はこれらのコンポーネントの各々を実行し、一方、ホスト装置１２４が、アプリケーション３０２のモデルコンポーネント及びコントローラコンポーネント、アプリケーション３０４のモデルコンポーネントを実行する。図示した実施形態では、コンポーネントの異なるタイプのそれぞれは、同じ装置で実行される。例えば、アプリケーション３０３のすべてのコントローラコンポーネントは、ヘッドユニット１０４で実行される。
【０１３７】
実施形態では、与えられたタイプの一つ以上のコンポーネントが、ヘッドユニット１０４により実行され、与えられたタイプの他のコンポーネントは、図３Ｄに記載されたような、ホスト装置１２４により実行される。
【０１３８】
ここに記載されたように、ホスト装置１２４は、ヘッドユニット１０４の現在の動作特性の変更を特定してよい。それらの変更に応じて、ホスト装置１２４は、どのコンポーネントがヘッドユニット１０４で実行されるか、どのコンポーネントがホスト装置１２４で実行されるか、の選択を変更することができる。
【０１３９】
図３Ｄに図示したとおり、ホスト装置１２４は、アプリケーション３０２−３０４を再度選択してヘッドユニット１０４へ提供する。しかし、動作特性の変更により、ホスト装置１２４は、アプリケーション３０２のコントローラコンポーネントの実行を、ホスト装置１２４からヘッドユニット１０４に移動する。そして、アプリケーション３０４のコントローラコンポーネント、アプリケーション３０３のモデルコンポーネント、アプリケーション３０３のコントローラコンポーネントのいくつか（全てではない）の実行をヘッドユニット１０４からホスト装置１２４へ移動する。
【０１４０】
その結果、ホスト装置１２４は、アプリケーション３０２のビューコンポーネント及びコントローラコンポーネント、アプリケーション３０３のビューコンポーネント、モデルコンポーネント、及びコントローラコンポーネントのサブセット、並びにアプリケーション３０４のビューコンポーネントを選択してヘッドユニット１０４に提供する。
【０１４１】
ヘッドユニット１０４は、これらのコンポーネントのそれぞれを実行し、一方、ホスト装置１２４がアプリケーション３０２のモデルコンポーネント、アプリケーション３０３のコントローラコンポーネントの上記とは異なるサブセット、アプリケーション３０４のモデルコンポーネント及びコントローラコンポーネントを実行する。
【０１４２】
この事例では、アプリケーション３０３のコントローラコンポーネントは異なる装置で実行される。いくつかはヘッドユニット１０４により実行され、その他はホスト装置１２４により実行される。
【０１４３】
図３Ｅは、ヘッドユニット１０４、ホスト装置１２４、又はヘッドユニット１０４の動作特性の変更の結果としてのそれらの組み合わせ、で実行されているアプリケーションのコンポーネントの他の例を図示する。この事例では、ヘッドユニット１０４のユーザーは、第１のユーザーから第２のユーザー３２２に変更される。
【０１４４】
ユーザーの変更についてここに記載された実施形態を採用することにより、ホスト装置１２４は、第１のユーザーのための実行するアプリケーション３１２を決定する。この事例では、アプリケーション３１２は、アプリケーション３０３及びアプリケーション３０５を含む。
【０１４５】
ホスト装置１２４は、ヘッドユニット１０４に提供されるアプリケーション３０３及び３０５を選択する。それらの選択されたアプリケーションは、ホスト装置１２４が、アプリケーション３０３のビューコンポーネント、並びにアプリケーション３０５のビューコンポーネント、モデルコンポーネント、及びコントローラコンポーネント、を選択してヘッドユニット１０４に提供する。
【０１４６】
ヘッドユニット１０４は、これらのコンポーネントのそれぞれを実行し、一方でホスト装置１２４がアプリケーション３０３のモデルコンポーネント及びコントローラコンポーネントを実行する。
【０１４７】
自動車環境の上述の事例は、限定として解釈されるものではない。そして、ここで記載れた、複数の計算装置の間でダイナミックにアプリケーションコンポーネントを割り当てる実施形態を採用することにおいて、他の動作可能な環境を使用してもよい。
【０１４８】
又、上述の事例におけるビュー、モデル、コントローラコンポーネントの使用もまた、限定として解釈されるものではない。そして、別々の装置で実行されそしてダイナミックに変更される、上述とは異なるコンポーネントを有する他の構成パターンも、また、ここに記載される実施形態を採用することにおいて、使用することができる。
【０１４９】
当該開示のある態様の動作を、図４及び図５を参照して説明する。様々な実施形態の少なくとも一つにおいて、図４及び図５に記載されるプロセス４００及び５００は、それぞれホスト装置１２４、計算装置１２８、又はクラウド３０のような一つ以上の計算装置で実行されてよい、又、それにより実施されてもよい。
【０１５０】
図４は、ここに記載された実施形態にしたがって、どのアプリケーションコンポーネントをヘッドユニット１０４のようなヘッドユニットで実行するか、及び、どのアプリケーションコンポーネントをホスト装置で実行するか、をダイナミックに変更するためのプロセスの概要の一実施形態を一般的に示している論理フローダイアグラムである。
【０１５１】
開始ブロックの後、プロセス４００はブロック４０２から始まる。ブロック４０２ではヘッドユニットに関連する一つ以上の現在の動作特性が特定される。この動作特性は、ヘッドユニットがどのように動作しているか、誰がヘッドユニットを使用しているかに関わる、ヘッドユニットのいくつかの態様を含む。
【０１５２】
この動作特性は、自動車の位置、ヘッドユニットの現在の負荷、ヘッドユニットと対話中のユーザー、ユーザーによる複数のアプリケーションの利用、ネットワークの接続性、ネットワークの混雑や待ち時間、アプリケーションによる使用データ、電力の利用や容量、ヘッドユニットやアプリケーションのその他の動作態様、を含む。しかし、これらに限定されるものではない。
【０１５３】
一つ以上の複数の動作特性、又は、動作特性のある組み合わせを、ヘッドユニットの現在の動作特性を特定するために、常時利用することができる。
【０１５４】
プロセス４００は、ブロック４０４に進む。ここでは、一つ以上のアプリケーションが、ヘッドユニットへ提供するための複数のアプリケーションから選択される。様々な実施形態では、ブロック４１０において、選択されたコンポーネントの第１のセットが、ヘッドユニットに提供されたときに、アプリケーションはヘッドユニットに提供される。
【０１５５】
それでも、選択されたアプリケーションは、そのユーザーにより使用されるヘッドユニットで現在利用可能なアプリケーションであり、選択されなかったアプリケーションは、そのユーザーによるヘッドユニットでの使用は、現在利用不可である。
【０１５６】
現在利用可能なアプリケーションは、まるで、アプリケーション全体が、ヘッドユニットで実行されているようにユーザーが対話できるアプリケーションである。様々な実施形態では、ホスト装置は複数のアプリケーションを格納してよい。しかし、それらのアプリケーションのサブセットだけがヘッドユニットに提供されてよく、いつでもユーザーがアクセス可能であってよい。これらのアクセス可能なアプリケーションは、ユーザーにとって現在利用可能なアプリケーションである。
【０１５７】
様々な実施形態では、アプリケーションは、ブロック４０２で関連付けられた現在の動作特性に基づいて選択される。例えば、ユーザーＡは、自動車を始動するためにユーザーＡの識別名に関連したキーフォブを使用してよい。ヘッドユニットは、ホスト装置に識別名を提供してよい。ホスト装置は、ユーザーＡのプロフィールを選択するために識別名を使用することができる。プロフィールは、第１アプリケーション、第２アプリケーション、第３アプリケーション、及び第４アプリケーションのうち、ユーザーＡは、第２アプリケーションと第４アプリケーションを好むことを指し示してよい。従って、ホスト装置は、第２アプリケーションと第４アプリケーションを選択し、ヘッドユニットに提供する。
【０１５８】
いろいろな他の現在の動作特性や、動作特性の組み合わせは、一つ以上のアプリケーションを選択するために使用されてよい。例えば、ある実施形態では、ヘッドユニットで使用するためか、ヘッドユニットから消去するための、一つ以上のアプリケーションを、ユーザーは手動で選択してよい。
【０１５９】
プロセス４００は、ブロック４０６へ続く。ここでは、選択されたアプリケーションのコンポーネントの第１のセットが、ヘッドユニットで実行されるために選択される。それぞれのアプリケーションは、複数のコンポーネントを含む。ある実施形態では、いくつかのコンポーネントが、互いに別々の計算装置で実行することを許可されてよい。
【０１６０】
他の実施形態では、あるコンポーネントが、同じ計算装置にあることが要求されうる。更なる他の実施形態では、あるコンポーネントが、ユーザーへ最終画像のレンダリングをする計算装置で実行することが要求されうる。
【０１６１】
様々な実施形態では、アプリケーションは、一つ以上のビューコンポーネント、一つ以上のモデルコンポーネント、一つ以上のコントローラコンポーネントと共に、ビュー−モデル−コントローラ構造で構成されてよい。
【０１６２】
ある実施形態では、選択されたコンポーネントは、選択されたアプリケーションのビューコンポーネントの少なくとも一つ又はすべてを含み、各々の選択されたアプリケーションのモデルコンポーネント及びコントローラコンポーネントのすべて又は一部を含み、若しくは、いずれも含まなくてもよい。
【０１６３】
ホスト装置は、どのコンポーネントがヘッドユニットで実行されるか、を決定し選択するために現在の動作特性を利用してよい。前の例に続いて、第２アプリケーションが非常に計算中心的で、第４アプリケーションがデータ中心的であると仮定する。
【０１６４】
この状況では、第４アプリケーションのモデルコンポーネント、並びに、第２アプリケーションのコントローラコンポーネント及びモデルコンポーネントは選択されていないときに、第４アプリケーションのビュー及びコントローラコンポーネント及び第２アプリケーションのビューコンポーネントが、ヘッドユニットで実行される第１のセットから選択されてよい。このように、計算が重いコンポーネントの多くは、ヘッドユニットよりは、むしろホスト装置で実行される。
【０１６５】
実行のために選択されたコンポーネントは、現在の動作特性の複数の異なるパラメータに依存してよい。例えば、複数の異なる閾値が、ホスト装置とヘッドユニットとの間のネットワーク帯域幅に基いて、どのコンポーネントが選択されるかを決定するために利用されてよい。
【０１６６】
例えば、帯域幅が低くなればなるほど、ヘッドユニットで実行されるために選択されたコンポーネントの数は増える。このことにより、処理がホスト装置及びヘッドユニットで並行実行されている際のホスト装置及びヘッドユニット間のデータの転送量を低減することができる。これらの例は限定するものではなく、コンポーネントの第１のセットを選択するために他の測定基準やパラメータが利用されてよい。
【０１６７】
プロセス４００は、ブロック４０８へ続き、ここでは、選択されたアプリケーションのコンポーネントの第２のセットが、ホスト装置で実行されるために選択される。ブロック４０６にて記載したのと同様に、どのコンポーネントがホスト装置で実行されるかを、決定し選択するためにホスト装置は現在の動作特性を利用してよい。
【０１６８】
様々な実施形態では、コンポーネントの第２のセットは、選択されたアプリケーションの、ブロック４０６で選択されなかったものであるすべてのコンポーネントを含む。そこで、上記の例では、第４アプリケーションのモデルコンポーネントと、第２アプリケーションのコントローラコンポーネント及びモデルコンポーネントが、ホスト装置で実行される第２のセットから選択される。
【０１６９】
ある実施形態では、アプリケーションは、ヘッドユニットで必ず実行される、又はホスト装置で必ず実行されるコンポーネントを含んでよい。例えば、あるビューコンポーネントは、ヘッドユニットで画像をレンダリングする実際のハードウェアと対話することにより、ヘッドユニットそれ自身で実行するために要求されてよい。そして、それはホスト装置での実行のためには選択することができない。
【０１７０】
少なくとも一つの実施形態では、選択されたアプリケーションのすべてのコンポーネントは、ヘッドユニットで実行されるためのコンポーネントの第１のセットにある。一方、コンポーネントの第２のセットは、ホスト装置で実行するために選択されたアプリケーションのコンポーネントを全く含まない空集合を含む。
【０１７１】
他のある実施形態では、ホスト装置は、ここに記載されたモバイル機器２６や他の計算装置２８のような他の計算装置で実行される第３のセットを選択する。ブロック４０６で上述されたことと同様に、ホスト装置は、現在の動作特性を、どのコンポーネントを、当該他の計算装置で実行するか、を決定し選択するために利用してよい。
【０１７２】
プロセス４００は、次のブロック４１０に続き、ここでは、コンポーネントの第１のセットが、ヘッドユニットによる実行のために、ヘッドユニットへ提供される。様々な実施形態では、ホスト装置は、これらのコンポーネントをヘッドユニットに提供するために、プッシュする、ダウンロードする、又は他の対話をヘッドユニットと行う。
【０１７３】
様々な実施形態では、ヘッドユニットのオペレーションシステムは、まるで、すべてのアプリケーションがヘッドユニットで実行されているかのようなユーザーエクスペリアンスとなるように、ヘッドユニットで実行されるコンポーネントの、ホスト装置で実行されているコンポーネントとの対話を調整する。
【０１７４】
ある実施形態では、ヘッドユニットは、ホスト装置がブロック４０４で選択することができる複数のアプリケーションの各々の、すべてのコンポーネントを格納してよい。少なくとも、一つのそのような実施形態では、ホスト装置は、どのコンポーネントをヘッドユニットが実行するのか、どのコンポーネントをホスト装置が実行するのか、をヘッドユニットに通知する。
【０１７５】
他のある実施形態では、コンポーネントの第３のセットがもう一つの計算装置で実行するために選択されるとき、ホスト装置は、その計算装置による実行のため当該他の計算装置に、それらのコンポーネントを提供する。
【０１７６】
ある実施形態では、ヘッドユニットで実行されているコンポーネントの第１のセットは、他の計算装置で実行されているコンポーネントの第３のセットと、アプリケーションを組合わせて調整された実行を促進するために対話してよい。
【０１７７】
プロセス４００は、次のブロック４１２へ進む。そこでは、ヘッドユニットで実行されているコンポーネントの第１のセットに関連して、ホスト装置はコンポーネントの第２のセットを実行する。ここに記載されたように、アプリケーションは、少なくともいくつかのアプリケーションコンポーネントが、互いに異なる装置から、自律して実行することができるように設計されている。このように、アプリケーションは、コンポーネントがどの装置、すなわち、ヘッドユニット、ホスト装置、又は他の装置で、それらが実行されているかに気付かず、知らないままである。
【０１７８】
様々な実施形態では、選択されたアプリケーションが、アプリケーションが設計されたように正しく機能することを可能とするために、ホスト装置で実装されているコンポーネントの第２のセットは、ヘッドユニットで実行されているコンポーネントの第１のセットと対話してよい。
【０１７９】
ある実施形態では、コンポーネントの第３のセットがもう一つの計算装置で実行するために選択されるとき、選択されたアプリケーションが、アプリケーションが設計されたように正しく機能することを可能とするために、ホスト装置で実行されているコンポーネントの第２のセットは、他の計算装置で実行されているコンポーネントの第３のセットと対話してよい。
【０１８０】
プロセス４００は、ブロック４１４へ進み、これについては、図５に関して、更に詳細に記載される。しかし簡単にいれば、ホスト装置は、選択されたアプリケーションの実行、並びに、アプリケーションの少なくとも一部を実行しているヘッドユニット、ホスト装置、及び他のいかなる装置、に関連する現在の動作特性をモニタする。
【０１８１】
ホスト装置は、ヘッドユニットでコンポーネントの第１のセットを実行していることに関連してコンポーネントの第２のセットもまた実行する一方で、動作特性を継続的にモニタできる。
【０１８２】
様々な実施形態では、所定の時間において、又、情報や状態が変更されたとき、ヘッドユニットは、情報や状態の最新版を提供してよい。例えば、ヘッドユニットは、その物理的な位置をホスト装置に毎分１回提供してよい。しかし、新しいユーザーがヘッドユニットにより選択されるか、又は特定されたとき、ヘッドユニットは、ホスト装置の現在のユーザーの変更を提供することができる。
【０１８３】
ホスト装置に提供されたこの情報は、どのコンポーネントがヘッドユニットによる実行のために選択されるかをダイナミックに変更するために、モニタされる。
【０１８４】
プロセス４００は、変更が現在の動作特性で生じたかどうかを決定するために、決定ブロック４１６に進む。様々な実施形態において、動作特性の値があらかじめ決められたしきい値を超えて変化するとき、その変更が生じてもよい。
【０１８５】
例えば、自動車の位置が１キロメートル以上移動した、又はヘッドユニットの負荷が３０％増加したならば、そのとき、そしてアプリケーションの分担した実行に影響するかもしれない変更が生じたとする。これらの例は、なんら限定するものではなく、ヘッドユニットによる実行のためのヘッドユニットに提供されるアプリケーション又はコンポーネントの選択の変更に使用されうる現在の動作特性に変更があることを判定するために、他のパラメータが使用されてよい。
【０１８６】
現在の動作特性の変更が特定されたら、プロセス４００はブロック４０４にループし、ブロック４０６及び４０８においてヘッドユニット又はホスト装置で実行される、他のアプリケーション又はコンポーネントの新しいセットを選択する。あるいは、プロセス４００はブロック４１４にループし、動作特性の変更に対応するため動作特性のモニタを継続する。種々の実施形態では、ホスト装置が動作特性をモニタする間、選択されたアプリケーションは実行し続けることができる。
【０１８７】
図５は、ヘッドユニット環境の動作特性をモニタするプロセスの一実施形態を一般的に示している論理フローダイアグラムである。このプロセスは、ここで記載される実施形態に従って、どのアプリケーション又はコンポーネントをヘッドユニットで実行するかについて変更するべきか否かに影響する変更を特定するためのものである。
【０１８８】
プロセス５００は、スタートブロックの後のブロック５０２で始まり、そこでは、自動車の位置がモニタされる。様々な実施形態では、自動車の位置の変更は、ヘッドユニットで実行されるコンポーネントの変更を促す動作特性の変更を示すものであってもよい。
【０１８９】
例えば、自動車が、限定された又はセルラーネットワークがカバーしない領域の方向へ移動していると、ホスト装置は、ネットワークへの接続を失う前に、アプリケーションの追加のコンポーネントをヘッドユニットへ提供しようとしてもよい。ヘッドユニットで実行されているコンポーネントは、ホスト装置で実行されているコンポーネントと調和しているので、ヘッドユニットがセルラーネットワークアクセスを失ったならば、その調和が一時中断され、アプリケーションの機能を減らすことや一時停止をするかも知れない。
【０１９０】
しかし、ホスト装置からヘッドユニットへ追加コンポーネントが提供されることにより、ヘッドユニットは、ホスト装置で実行されているコンポーネントと調和するために、セルラーネットワークの接続性に頼ることなく、アプリケーションを実行することができる。自動車の位置の他のタイプの変更もまた、モニタされてよい。
【０１９１】
プロセス５００は、ブロック５０４に進む。そこでは、ホスト装置とヘッドユニットの間のネットワーク接続性がモニタされる。様々な実施形態において、ヘッドユニットはホスト装置にハートビートメッセージを周期的に送信し、ネットワーク接続がまだ存在することを表示してもよい。他の実施形態では、他の動作特性の情報や状態の最新版を受信することもまた、ネットワークの接続性を示している。ある他の実施形態では、ホスト装置は、メッセージをヘッドユニットに送ることによって、ネットワークの接続性をテストし、ホスト装置は、メッセージが返るのに要する時間を計算してよい。
【０１９２】
ネットワークの接続性が連続的に悪化するときは、ホスト装置が、コンポーネントをヘッドユニットへ更に移してもよい。しかし、ネットワークの接続性が改善したら、ホスト装置は、いくつかのコンポーネントの実行をヘッドユニットから取り戻してよい。
【０１９３】
プロセス５００は、ブロック５０６に進む。そこでは、ネットワークデータの利用がモニタされる。様々な実施形態では、ホスト装置は、ホスト装置とヘッドユニットとの間での双方向で伝送されたデータ量を算出する。ある実施形態では、ヘッドユニットは、ヘッドユニットと一つ以上の、図１のリモートデータサーバ１２６のようなデータサーバー間での双方向で伝送されたデータ量を調べてよい。
【０１９４】
ホスト装置が、ヘッドユニットにより使用されているネットワーク帯域幅の総量を決定できるように、ヘッドユニットは、この調査データをホスト装置に提供してよい。ある実施形態では、利用されるネットワークデータの量が増加するとき、ホスト装置で実行されているコンポーネントとヘッドユニットで実行されているコンポーネントとの調和に使用されるネットワークデータの量を減少させるために、更なるコンポーネントが、ヘッドユニットでの実行のためにヘッドユニットに提供してよい。
【０１９５】
プロセス５００は、アプリケーション毎にそれらのアプリケーションの使用をモニタするための次のブロック５０８に進む。ヘッドユニットは、アプリケーション利用についての様々な測定基準をホスト装置に提供してよい。そのような測定基準は、ユーザーがアプリケーションを使用する時間の長さ、アプリケーションに使用されるコンピューティングリソースの量、使用頻度、自動車の位置と使用の相関関係、使用時刻、又は、ユーザーがどのようにアプリケーションを使用するかの他の測定可能な基準も、含んでいてよい。
【０１９６】
このモニタされた利用は、ユーザーが、いつ、どの程度アプリケーションを使用するかを予測したり、どのアプリケーションが選択されるかを変更したりするのに用いられ、所望の時間ユーザーに提供される。
【０１９７】
例えば、高速道路上で運転するときに、ユーザーが特定の音楽アプリケーションだけを使用すると仮定する。ホスト装置が、自動車が市街地で運転されていることを、図４のブロック４０２で最初に特定すれば、そのアプリケーションはブロック４０４で選択されなくてよい。その結果、その音楽アプリケーションは、現在、ユーザーが利用できない状態となる。
【０１９８】
ホスト装置が、自動車を高速道路上にあると特定すれば、ここに記載されるように、音楽アプリケーションのどのコンポーネントがヘッドユニットで実行されるか、そして、音楽アプリケーションのどのコンポーネントがホスト装置で実行されるか、を選択することにより、その音楽アプリケーションを選択し、ヘッドユニットにその音楽アプリケーションを提供することができる。
【０１９９】
プロセス５００は、次のブロック５１０に進む。そこで、ヘッドユニットのユーザーの変更が特定される。ある実施形態では、自動車の搭乗者は、ヘッドユニットの異なるユーザーを選択するために、ヘッドユニットのユーザーインターフェイスを利用してよい。他の実施形態では、自動車のアクセサリーへのアクセスを開始するモバイル機器は、異なるユーザーを指し示してよい。ヘッドユニットは、新しいユーザーのプロフィールを選択し、ヘッドユニットに提供するための他のアプリケーションを選択することができるように、新しいユーザーの識別名をホスト装置に提供することができる。
【０２００】
プロセス５００は、ブロック５１２に続く。そこでは、ヘッドユニットの負荷が、モニタされる。ここでモニタされた負荷は、プロセッサ利用のパーセンテージ、使用された又は利用可能なメモリ量、他のコンピューティングリソースの能力の利用を含んでよい。
【０２０１】
現在の負荷が、あらかじめ決められたしきい値を超えて増加する時は、いくつかのコンポーネント、特に計算負荷が重いコンポーネントは、ヘッドユニットよりも、むしろホスト装置で実行されるべきであることを、ヘッドユニットの現在の負荷の変更は指し示してよい。その結果、ここで記載されたように、ホスト装置は、ヘッドユニットで実行されているコンポーネントの選択を変更ことができる。
【０２０２】
ブロック５１２の後、プロセス５００は終了するか、他の実行をするためのプロセスを呼び出すために戻るか、のいずれかとなる。
【０２０３】
様々な実施形態において、一つ以上の現在の動作特性は、その動作特性の変更があるかを決定するために、単独で又は組む合わせで、モニタされて利用されてよいが、このような動作特性の変更とは、ヘッドユニットに提供されるアプリケーションの変更、又は、ヘッドユニットでどのコンポーネントを実行するのか及びホスト装置でどのコンポーネントを実行するのかの選択の変更をもたらすような変更である。
【０２０４】
これらの変更は、ヘッドユニットが用いられている間、リアルタイム又はほぼリアルタイムで生じる可能性がある。そのように、ホスト装置は、ヘッドユニットに関連する現在の動作特性に基づいて、どこでそのアプリケーションのコンポーネントを実行するのかを、ダイナミックにモニタし調整する。加えて、上述の動作特性に限定するものではなく、ユーザーエクスペリエンス又はヘッドユニットの動作環境に影響を与える他の動作特性が、モニタされてもよい。
【０２０５】
ヘッドユニットのユーザーのためにヘッドユニットで実行されるアプリケーションに関して、図４のプロセス４００及び図５のプロセス５００が記載されているが、実施形態はそれに限定されるものではない。
【０２０６】
他の実施形態においては、プロセス４００及びプロセス５００は、どのアプリケーションコンポーネントを他の計算装置で実行するかをダイナミックに変更するよう実行されてよい。このような他の計算装置は、図２Ａにおいて記載された計算装置２８やモバイル機器２６であり、それらは、ここに記載された実施形態のアプリケーションを実行するためにユーザーが使用するものである。
【０２０７】
ある実施形態では、プロセス４００及びプロセス５００は、ホスト装置よりもむしろ、ヘッドユニットや他の計算装置で実行されてよい。
【０２０８】
そのような少なくとも一つの一つの実施形態では、ヘッドユニットが、ヘッドユニット上でそのユーザーに提供するための一つ以上のアプリケーションを選択し、どのコンポーネントをヘッドユニットで実行するかを選択し、どの他のコンポーネントをホスト装置や他の装置で実行するかを選択する。そして、それらの他の機器に他のコンポーネントを提供し、動作特性に変更があるかを決定するために自分自身の現在の動作特性モニタし、それらの動作特性の変更に基いて、どのコンポーネントをそれぞれの装置で実行するかをダイナミックに変更する。
【０２０９】
様々なフローチャートに記載された実施形態は、その文脈から明らかに違ったものであると指示されない限り、並列に、直列に、又それらの組み合わせで実行されてよいのは、勿論である。
【０２１０】
従って、いろいろなフローチャートの中の、一つ以上のブロック又はブロックの組み合わせが、他のブロック又はブロックの組み合わせと平行して実施されてよい。また、一つ以上のブロック又はブロックの組み合わせが、そのフローチャートで図示された手順とは異なる手順で実施されてもよい。
【０２１１】
図６は、ここに記載される実施形態のコンピューティングシステムの一実施例を記載するシステム図である。システム６００は、ヘッドユニット１０４、ホスト装置１２４、アクセサリー１０８−１１１、及びモバイル機器１１４−１１６を含む。
【０２１２】
ここに記載されるとおり、どのアプリケーションコンポーネントをヘッドユニット１０４で実行するのか、どのコンポーネントをホスト装置１２４で実行するのかをホスト装置１２４にダイナミックに選択させため一つ以上の特殊用途コンピュータシステムが使用される。
【０２１３】
従って、ここに記載される様々な実施形態は、ソフトウェア、ハードウェア、ファームウェア、又はそれらの組み合わせで実行されてよい。ホスト装置１２４は、メモリ６４４、一つ以上の中央処理装置（ＣＰＵｓ）６６２、Ｉ／Ｏインターフェイス６６６、コンピュータが読み出し可能な媒体６６８、ネットワークインターフェイス６７０を含む。
【０２１４】
メモリ６４４は、不揮発性及び／又は揮発性の格納技術の、一つ以上のいろいろなタイプを含む。例えば、メモリ６４４は、フラッシュメモリ、ハードディスクドライブ、光ドライブ、ソリッドステートドライブ、様々なタイプのランダムアクセスメモリ（ＲＡＭ）、様々なタイプのリードオンリーメモリ（ＲＯＭ）、その他のコンピュータが読み出し可能な格納媒体（プロセッサが読み出し可能な格納媒体も含む）、又は、他のメモリ技術、又はこれらのあらゆる組み合わせを含む。しかし、これらに限定されるものではない。
【０２１５】
メモリ６４４は、動作を実施するためのＣＰＵ６６２で利用可能なコンピュータが読み出し可能な命令を含み、少なくとも、ここに記載されたある実施形態を含む、情報を格納するために利用される。
【０２１６】
メモリ６４４は、その中に、ダイナミックアプリケーション管理モジュール６４６を含む、いろいろなモジュールを格納したものであって良い。ダイナミックアプリケーション管理モジュール６４６は、ヘッドユニット１０４に関連する動作特性をモニタし、どのコンポーネントをヘッドユニット１０４で実行するか、どのコンポーネントをホスト装置１２４で実行するか、を決定する。
【０２１７】
ダイナミックアプリケーション管理モジュール６４６は、選択されたコンポーネントを、通信ネットワーク１２２をとおして、ヘッドユニット１０４に提供する。ダイナミックアプリケーション管理モジュール６４６は、ヘッドユニット１０４に関連した動作特性を特定したり、ヘッドユニット１０４で実行するコンポーネントの選択をダイナミックに変更するために使用される動作特性の変更を特定したりするために、通信ネットワーク１２２をとおして、ヘッドユニット１０４からの、様々なデータや情報を受信することができる。
【０２１８】
メモリ６４４には、アプリケーション６４８も格納されている。アプリケーション６４８は、一つ以上のアプリケーションの複数のコンポーネントを含む。ここに記載されたように、ホスト装置１２４は、どのコンポーネントをヘッドユニット１０４で実行するか、どのコンポーネントをホスト装置１２４で実行するか、を決定する。このように、アプリケーション６４８のいくつかのコンポーネントは、ホスト装置１２４のＣＰＵ６６２により実行されてよく、そして、いくつかはアプリケーション６１４としてヘッドユニット１０４に提供され、ヘッドユニット１０４のＣＰＵ６２２により実行されてよい。
【０２１９】
メモリ６４４は、他のプログラム６５０及び他のデータ６５２も格納してよい。他のデータ６５２は、ヘッドユニット１０４を使用するユーザーの一つ以上のユーザープロフィールを含んでよい。例えば、多くの人々がヘッドユニット１０４を含む自動車を運転している場合、プロフィールは、各々の異なるドライバー毎に格納されてよい。プロフィールは、一人以上の搭乗者についても、格納されてよい。
【０２２０】
それぞれのプロフィールは、ユーザーが最も頻繁に使用するアプリケーションのリスト、直近使用されたアプリケーションの特定、ユーザーの好み、及び他の情報を含んでいてよい。これらのプロフィールは、ヘッドユニット１０４の動作特性を決定するために、ホスト装置１２４に利用されてよい。例えば、ある実施形態では、ユーザーは、ヘッドユニット１０４のユーザー識別名を選択又は入力することができ、又、ヘッドユニットは、自動車の起動に使用されるキー又はキーフォブに基づいてユーザー識別名を決定してよい。
【０２２１】
ヘッドユニット１０４は、ホスト装置１２４にユーザー識別名を提供する。ホスト装置１２４は、他のデータ６５２の中の一致するユーザープロフィールを探索するためにユーザー識別名を使用する。ユーザープロフィールの情報は、少なくともヘッドユニットに関連する現在の動作特性の初期設定として使用することができる。
【０２２２】
Ｉ／Ｏインターフェイス６６６は、いろいろな他の入力又は出力装置、例えば、オーディオインターフェイス、表示インターフェイス、他の動画インターフェイス、ＵＳＢインターフェイス等のインターフェイスを含んでいてよい。他のコンピュータで読み出し可能な媒体６６８は、他のタイプの読み出し専用、又は消去可能なコンピュータが読み出し可能な媒体、例えば、消去可能なフラッシュドライブ、外部ハードドライブ等のインターフェイスを含んでいてよい。
【０２２３】
ネットワークインターフェイス６７０は、他の計算装置と、例えば、通信ネットワーク１２２を通してヘッドユニット１０４と、通信するように構成される。
【０２２４】
ここに記載されるとおり、一つ以上の特殊用途コンピュータシステムが、アプリケーションコンポーネントを実行し、ホスト装置１２４と通信するためのヘッドユニット１０４を実施するために使用される。従って、ここに記載される様々な実施形態は、ソフトウェア、ハードウェア、ファームウェアを単独で、又はこれらの組み合わせで、実施されてよい。このヘッドユニット１０４は、メモリ６０４、一つ以上の中央処理装置（ＣＰＵｓ）６２２、ディスプレイ６２４、Ｉ／Ｏインターフェイス６２６、他のコンピュータが読み出し可能な媒体６２８、及びネットワークインターフェイス６３０を含む。
【０２２５】
メモリ６０４は、不揮発性及び／又は揮発性の格納技術の、一つ以上のいろいろなタイプを含む。例えば、メモリ６０４は、フラッシュメモリ、ハードディスクドライブ、光ドライブ、ソリッドステートドライブ、様々なタイプのランダムアクセスメモリ（ＲＡＭ）、様々なタイプのリードオンリーメモリ（ＲＯＭ）、その他のコンピュータが読み出し可能な格納媒体（プロセッサが読み出し可能な格納媒体も含む）、又は、他のメモリ技術、又はこれらのあらゆる組み合わせを含む。しかし、これらに限定されるものではない。
【０２２６】
メモリ６０４は、動作を実施するためのＣＰＵ６２２で利用可能なコンピュータが読み出し可能な命令を含む情報を格納するために利用され、少なくとも、ここに記載された実施形態のいくつかを含む。
【０２２７】
メモリ６０４は、ユーザー装置管理モジュール６０８及びアクセサリー管理モジュール６１０を含むいろいろなモジュールを、その中に格納してよい。
【０２２８】
ユーザー装置管理モジュール６０８は、一つ以上のモバイル機器１１４−１１６と、モバイル機器通信ネットワーク１２０をとおして、通信してよい。このユーザー装置管理モジュール６０８は、アクセサリー１０８−１１０を制御するため、モバイル機器１１４−１１６からコマンドリクエスト受信することができ、アクセサリーデータや情報をモバイル機器１１４−１１６へ送信することができる。
【０２２９】
アクセサリー管理モジュール６１０は、通信ネットワーク１０６をとおして、一つ以上のアクセサリー１０８−１１０と対話をすることができる。このアクセサリー管理モジュール６１０は、アクセサリー１０８−１１０からのアクセサリーデータや情報を受信することと、アクセサリー１０８−１１０を制御するためのコマンドリクエストを送信することができる。
【０２３０】
メモリ６０４は、その中にアプリケーション６１４も格納していてよい。ここに記載されるように、アプリケーション６１４は、ホスト装置１２４によりヘッドユニット１０４に提供され、ヘッドユニット１０４で実行される、一つ以上のアプリケーションの一つ以上のコンポーネントを含む。
【０２３１】
このアプリケーション６１４は、一つ以上のアクセサリーを含んでいてよい。これらのアクセサリーは、例えば、ナビゲーションアプリケーション、ラジオ及びオーディオアプリケーション、自動車環境制御アプリケーション、自動車性能や整備アプリケーション、又は他の自動車関連のアプリケーションを含む。
【０２３２】
メモリ６０４は、他のプログラム６１８及び他のデータ６２０も含んでよい。他のデータ６２０は、アクセサリーデータやいろいろなアクセサリー１０８−１１０に関連する他のデータ６１８も格納する。例えば、他のデータ６２０は、音楽のプレイリストやラジオ局の好み、地図の経由地、ユーザーコンタクト情報、ヘッドアップディスプレイ及びレイアウトに関するユーザーの好みを格納していてよい。
【０２３３】
ディスプレイ６２４は、コンテンツや情報をユーザーにレンダリングすることができる表示装置である。例えば、ディスプレイ６２４は、地図、ラジオ局情報、アプリケーション、自動車の環境制御、他のユーザーインターフェイスを表示してよい。ディスプレイ６２４は、液晶ディスプレイ、ＬＥＤ、又は他のタイプの表示装置、及びユーザーの手、タッチペンや、その他のものからの入力を受け付けることができるタッチスクリーンであってよい。
【０２３４】
Ｉ／Ｏインターフェイス６２６は、オーディオインターフェイス、他の動画インターフェイス、ＵＳＢインターフェイス等、種々の入出力インターフェイスを含んでいてよい。
【０２３５】
他のコンピュータが読み出し可能な媒体６２８は、消去可能なフラッシュドライブ、外部ハードドライブ、その他のような、他のタイプの読み出し専用、又は消去可能なコンピュータが読み出し可能な媒体を含んでよい。
【０２３６】
ネットワークインターフェイス６３０は、例えば、通信ネットワーク１２２をとおしてホスト装置１２４と、モバイル通信ネットワーク１２０をとおしてモバイル機器１１４−１１６と、アクセサリー通信ネットワークをとおしてアクセサリー１０８−１１０と、のように、他のコンピュータ装置と対話するように構成される。
【０２３７】
説明を容易にするために、システム６００は、ヘッドユニット１０４を参照して記載されている。しかし、上述の通り、他の計算装置２８又はモバイル機器２６は、別々の処理装置で実行されるダイナミックに割り当てられたアプリケーションコンポーネントの実施に際して使用されてもよい。そして、それらのシステムは、ヘッドユニット１０４に関して図示されたように、同様なコンピューティングリソース、例えば、処理装置、ディスプレイ、ネットワークインターフェイス、メモリ、他のインターフェイス等を含んでもよい。
【０２３８】
上述の様々な実施形態は、更なる実施形態を提供するために組み合わせることができる。これらと他の変更は、上述の発明の詳細な説明の観点で実施形態を作成することができる。一般に、下記の請求項において、使用された文言は、請求の範囲を、明細書や請求の範囲に記載された、ある特定の実施形態に限定されるべきものではなく、そのような請求項が、名称を与えられる等価物のすべての可能な実施形態を含むと理解されるべきものである。従って、請求項の範囲は、上記開示によって、なんら限定されるものではない。
【図１Ａ】
2019510404.tif 000003
【図１Ｂ】
2019510404.tif 000004
【図２Ａ】
2019510404.tif 000005
【図２Ｂ】
2019510404.tif 000006
【図３Ａ】
2019510404.tif 000007
【図３Ｂ】
2019510404.tif 000008
【図３Ｃ】
2019510404.tif 000009
【図３Ｄ】
2019510404.tif 000010
【図３Ｅ】
2019510404.tif 000011
【図４】
2019510404.tif 000012
【図５】
2019510404.tif 000013
【図６】
2019510404.tif 000014
【国際調査報告】
2019510404.tif 000015