(57)【要約】  位置情報サービスを提供するための分散処理システムは、車両に搭載して提供される位置情報サービスなどのサービスをカスタマイズするためのシステム、方法、およびコンピュータプログラム製品と共に提供される。分散処理システムは、少なくとも１つのエッジデバイスおよび少なくとも１つのクラウドコンピューティングデバイスを含む複数のコンピューティングデバイスを含む。各コンピューティングデバイスは、コアコンポーネントおよび１つ以上のサービスを含む。サービスは、パイプラインとして、または、マイクロサービスとして構成できる。各コンピューティングデバイスのコアコンポーネントは、データ、例えば競合のない複製データ型を有するデータを共有してコアコンポーネントを同期させるために、各コンピューティングデバイスの１つ以上のサービスと、ならびに、他のコンピューティングデバイスの少なくとも１つのコアコンポーネントと、通信するように構成される。【選択図】図１
2021510867.tif 000002
【特許請求の範囲】
【請求項１】
位置情報サービスを提供するための分散処理システムであって、
少なくとも１つのエッジデバイスおよび少なくとも１つのクラウドコンピューティングデバイスを含む複数のコンピューティングデバイスであって、それぞれが、
コアコンポーネントと、
１つ以上のサービスと
を含む、コンピューティングデバイスを含み、
１つのコンピューティングデバイスの前記１つ以上のサービスのインスタンスは、異なるコンピューティングデバイスの前記１つ以上のサービスのインスタンスと異なっており、前記サービスの１つ以上が位置情報サービスを提供するように構成されており、
各コンピューティングデバイスの前記コアコンポーネントは、データを共有して前記コアコンポーネントを同期させるために、前記それぞれのコンピューティングデバイスの前記１つ以上のサービスと、ならびに、前記他のコンピューティングデバイスの少なくとも１つの前記コアコンポーネントと、通信するように構成されている、
分散処理システム。
【請求項２】
前記１つ以上のサービスが、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択される、請求項１に記載の分散処理システム。
【請求項３】
前記パイプラインが、シーケンシャルな方法で実行されて、前記パイプラインの状態として維持される値を生成するように構成されている複数の計算を含む、請求項２に記載の分散処理システム。
【請求項４】
前記パイプラインを含むそれぞれのコンピューティングデバイスの前記コアコンポーネントが、前記パイプラインの前記状態を維持するように構成されている、請求項３に記載の分散処理システム。
【請求項５】
前記１つ以上のサービスがアプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含み、それぞれのコンピューティングデバイスの前記コアコンポーネントが前記ルーティングマイクロサービスの出力を前記ガイダンスマイクロサービスに提供するように構成されている、請求項２から４のいずれか一項に記載の分散処理システム。
【請求項６】
それぞれのコンピューティングデバイスの前記コアコンポーネントが、データを共有して前記パイプラインの実行を調整するために、別のコンピューティングデバイスの前記コアコンポーネントと通信するように構成されている、請求項２から５のいずれか一項に記載の分散処理システム。
【請求項７】
各コンピューティングデバイスの前記コアコンポーネントが前記１つ以上のサービスのためにデータのキャッシュ管理を提供するように構成されている、請求項１から６のいずれか一項に記載の分散処理システム。
【請求項８】
各コンピューティングデバイスの前記コアコンポーネントがサービスの複数のインスタンスの間でデータを同期させるように構成されている、請求項１から７のいずれか一項に記載の分散処理システム。
【請求項９】
それぞれのコンピューティングデバイスの前記コアコンポーネントが別のコアコンポーネントからの１つ以上の機能呼出しに応答するように構成されており、前記それぞれのコンピューティングデバイスの前記コアコンポーネントによって受信された前記機能呼出しがユーザトークンと関連付けられており、前記それぞれのコンピューティングデバイスの前記コアコンポーネントが、ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で前記機能呼出しに応答してデータに１つ以上の動作を実行するようにさらに構成されている、請求項１から８のいずれか一項に記載の分散処理システム。
【請求項１０】
前記複数のコンピューティングデバイスの前記コアコンポーネントが競合のない複製データ型（ｃｏｎｆｌｉｃｔ−ｆｒｅｅ  ｒｅｐｌｉｃａｔｅｄ  ｄａｔａ  ｔｙｐｅ，ＣＲＤＴ）を有するデータを共有するように構成されている、請求項１から９のいずれか一項に記載の分散処理システム。
【請求項１１】
位置情報サービスを提供する装置であって、
１つ以上のサービスのユーザ選択を受信するための手段であって、少なくとも１つのサービスはコアコンポーネントと関連付けられており、そして位置情報サービスを提供するように構成されている、手段と、
データを共有して前記コアコンポーネントを同期させるために、前記１つ以上のサービスと、ならびに別のコンピューティングデバイスのコアコンポーネントと通信するための手段であって、前記装置は前記位置情報サービスが基にしている前記データを取得するために通信させられる、手段と、
選択された前記少なくとも１つのサービスの実行後に選択された前記サービスと関連付けられた前記コアコンポーネントにおいて、選択された前記少なくとも１つのサービスの状態を記憶するための手段と
を含む装置。
【請求項１２】
前記１つ以上のサービスがステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択される、請求項１１に記載の装置。
【請求項１３】
前記パイプラインが、シーケンシャルな方法で実行されて前記パイプラインの状態として維持される値を生成するように構成されている複数の計算を含む、請求項１２に記載の装置。
【請求項１４】
前記パイプラインと関連付けられている前記コアコンポーネントが前記パイプラインの前記状態を維持するように構成されている、請求項１３に記載の装置。
【請求項１５】
前記１つ以上のサービスがアプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含み、前記１つ以上のサービスと関連付けられた前記コアコンポーネントが前記ルーティングマイクロサービスの出力を前記ガイダンスマイクロサービスに提供するように構成されている、請求項１２から１４のいずれか一項に記載の装置。
【請求項１６】
少なくとも１つのサービスの前記状態を記憶するための前記手段が前記１つ以上のサービスのために前記データのキャッシュ管理を提供する、請求項９から１５のいずれか一項に記載の装置。
【請求項１７】
サービスの複数のインスタンスの間でデータを同期させるための手段をさらに含む、請求項１１から１６のいずれか一項に記載の装置。
【請求項１８】
別のコアコンポーネントからの１つ以上の機能呼出しを受信するための手段であって、受信される前記機能呼出しはユーザトークンに関連付けられている、手段と、
前記ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で前記機能呼出しに応答してデータに１つ以上の動作を実行するための手段と
をさらに含む、請求項１１から１７のいずれか一項に記載の装置。
【請求項１９】
前記１つ以上のサービスの少なくともいくつかのために、それぞれのサービスがエッジデバイスによって実行されるか、またはクラウドで実行されるかに関するユーザ選択を受信するための手段と、
前記それぞれのサービスが前記エッジデバイスによって実行されるか、または前記クラウドで実行されるかに基づいてフィードバックを提供するための手段であって、前記フィードバックは、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する１つ以上のパラメータを含む、手段と
をさらに含む、請求項１１から１８のいずれか一項に記載の装置。
【請求項２０】
１つ以上のサービスの実行後に、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する追加のフィードバックを提供するための手段をさらに含む、請求項１１から１９のいずれか一項に記載の装置。
【請求項２１】
位置情報サービスを提供するための方法であって、
１つ以上のサービスのユーザ選択を受信することであって、少なくとも１つのサービスはコアコンポーネントと関連付けられており、そして位置情報サービスを提供するように構成されている、受信することと、
データを共有して前記コアコンポーネントを同期させるために、前記１つ以上のサービスと、ならびに別のコンピューティングデバイスのコアコンポーネントと通信することであって、通信することは前記位置情報サービスが基にしている前記データを取得するために通信することを含む、通信することと、
選択された前記少なくとも１つのサービスの実行後に選択された前記サービスと関連付けられた前記コアコンポーネントにおいて、選択された前記少なくとも１つのサービスの状態を記憶することと
を含む方法。
【請求項２２】
前記１つ以上のサービスがステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択される、請求項２１に記載の方法。
【請求項２３】
前記パイプラインが、シーケンシャルな方法で実行されて前記パイプラインの状態として維持される値を生成するように構成されている複数の計算を含む、請求項２２に記載の方法。
【請求項２４】
前記パイプラインと関連付けられている前記コアコンポーネントが前記パイプラインの前記状態を維持するように構成されている、請求項２３に記載の方法。
【請求項２５】
前記１つ以上のサービスがアプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含み、前記１つ以上のサービスと関連付けられた前記コアコンポーネントが前記ルーティングマイクロサービスの出力を前記ガイダンスマイクロサービスに提供するように構成されている、請求項２２から２４のいずれか一項に記載の方法。
【請求項２６】
前記少なくとも１つのサービスの前記状態を記憶することが、前記１つ以上のサービスのために前記データのキャッシュ管理を提供することを含む、請求項２１から２５のいずれか一項に記載の方法。
【請求項２７】
サービスの複数のインスタンスの間でデータを同期させることをさらに含む、請求項２１から２６のいずれか一項に記載の方法。
【請求項２８】
別のコアコンポーネントからの機能呼出しに応答してデータに１つ以上の動作を実行することをさらに含み、受信される前記機能呼出しがユーザトークンと関連付けられており、前記１つ以上の動作が前記ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で実行される、請求項２１から２７のいずれか一項に記載の方法。
【請求項２９】
前記１つ以上のサービスの少なくともいくつかのために、それぞれのサービスがエッジデバイスによって実行されるか、またはクラウドで実行されるかに関してユーザ選択を受信することと、
前記それぞれのサービスが前記エッジデバイスによって実行されるか、または前記クラウドで実行されるかに基づいてフィードバックを提供することであって、前記フィードバックは、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する１つ以上のパラメータを含む、提供することと
をさらに含む、請求項２１から２８のいずれか一項に記載の方法。
【請求項３０】
１つ以上のサービスの実行後に、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する追加のフィードバックを提供することをさらに含む、請求項２１から２９のいずれか一項に記載の方法。
【請求項３１】
位置情報サービスを提供するように構成されているコンピュータプログラム製品であって、前記コンピュータプログラム製品は、中に記憶されるコンピュータ実行可能プログラムコード命令を有する少なくとも１つの非一時的コンピュータ可読記憶媒体を含み、前記プログラムコード命令は、実行に際して、
１つ以上のサービスのユーザ選択を受信して、少なくとも１つのサービスはコアコンポーネントと関連付けられており、そして位置情報サービスを提供するように構成されており、
データを共有して前記コアコンポーネントを同期させるために、前記１つ以上のサービスとの、ならびに別のコンピューティングデバイスのコアコンポーネントとの通信を生じさせ、前記プログラムコード命令は、実行に際して、前記位置情報サービスが基にしている前記データを取得するために通信を生じさせるように構成されており、
選択された前記少なくとも１つのサービスの状態を、選択された前記少なくとも１つのサービスの実行後に選択された前記サービスと関連付けられた前記コアコンポーネントに記憶されるようにさせる
ように構成されている、コンピュータプログラム製品。
【請求項３２】
前記１つ以上のサービスがステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択される、請求項３１に記載のコンピュータプログラム製品。
【請求項３３】
前記パイプラインが、シーケンシャルな方法で実行されて、前記パイプラインの状態として維持される値を生成するように構成されている複数の計算を含む、請求項３２に記載のコンピュータプログラム製品。
【請求項３４】
前記パイプラインと関連付けられている前記コアコンポーネントが前記パイプラインの前記状態を維持するように構成されている、請求項３３に記載のコンピュータプログラム製品。
【請求項３５】
前記１つ以上のサービスがアプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含み、前記１つ以上のサービスと関連付けられた前記コアコンポーネントが前記ルーティングマイクロサービスの出力を前記ガイダンスマイクロサービスに提供するように構成されている、請求項３２から３４のいずれか一項に記載のコンピュータプログラム製品。
【請求項３６】
前記少なくとも１つのサービスの前記状態を記憶させられるように構成されている前記プログラムコード命令が、前記１つ以上のサービスのために前記データのキャッシュ管理を提供するように構成されているプログラムコード命令を含む、請求項３１から３５のいずれか一項に記載のコンピュータプログラム製品。
【請求項３７】
前記プログラムコード命令がサービスの複数のインスタンスの間でデータを同期させるようにさらに構成されている、請求項３１から３６のいずれか一項に記載のコンピュータプログラム製品。
【請求項３８】
前記プログラムコード命令が別のコアコンポーネントからの機能呼出しに応答してデータに１つ以上の動作を実行するようにさらに構成されており、受信される前記機能呼出しがユーザトークンと関連付けられており、前記１つ以上の動作が前記ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で実行される、請求項３１から３７のいずれか一項に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願に対する相互参照
本出願は２０１８年１月８日に出願の米国仮特許出願第６２／６１４,７８４号に優先権を主張し、その内容全体を完全に本明細書に援用する。
【０００２】
例示の実施形態は、位置情報サービスを提供するための分散処理システム、方法、およびコンピュータプログラム製品に関し、より詳しくは、例えば、パイプラインとして、すなわち、それぞれのコアコンポーネントを介して通信して同期を維持したままとするマイクロサービスとして構成される、１つ以上の分散サービスを位置情報サービスに提供するための分散処理システム、方法、およびコンピュータプログラム製品に関する。
【背景技術】
【０００３】
位置情報サービスは、幅広く利用されている。位置情報サービスの一般的な例には、マップのディスプレイ、ユーザの位置がマップ上に識別されるマップマッチング、位置検索機能、ルーティング、ガイダンスおよび交通関連情報の提供が含まれる。位置情報サービスは、ナビゲーションシステム、スマートフォンおよび他のタイプの携帯端末などを含む多種多様な異なるプラットフォームで利用できる。車両は、ますます位置情報サービスを提供するように設計されつつあり、そしてドライバおよび乗客は、自分の車両により提供される位置情報サービスにますます依存するようになっており、それは、例えば、目的地に最も短いルートを識別すること、車両が目的地に到着すると思われる時間を識別すること、異常な交通状態または渋滞の予告を提供すること、所望の目的地または興味のある地点を位置検出することなどのためである。
【０００４】
車両に搭載された位置情報サービスのいくつかのカスタマイズが提供されてもよく、それは例えば、車両が購入されるかもしくはリースされる時かまたは、その後で、位置情報サービスのベンダからマップデータの更新を取得することに関連して、提供されてもよい。しかしながら、自分のそれぞれの車両と連動してユーザが利用できる位置情報サービスのカスタマイズはいくらか制限されており、それにより、ドライバおよびそれらの乗客による位置情報サービスの利用および享受が対応して制限される。
【発明の概要】
【０００５】
位置情報サービスを提供するための分散処理システムは、車両に搭載して提供される位置情報サービスをカスタマイズするためのシステム、方法、およびコンピュータプログラム製品と共に提供される。したがって、位置情報サービスは、位置情報サービスのタイプならびに位置情報サービスの以降の実行に関して、カスタマイズすることができる。車両のユーザは、その後で、ユーザの希望とより整合している方法で位置情報サービスを利用することができ、それによって、向上したユーザ体験を与える。
【０００６】
例示の実施形態において、位置情報サービスを提供するための分散処理システムが開示される。分散処理システムは、少なくとも１つのエッジデバイスおよび少なくとも１つのクラウドコンピューティングデバイスを含む複数のコンピューティングデバイスを含む。各コンピューティングデバイスは、コアコンポーネントおよび１つ以上のサービスを含む。１つのコンピューティングデバイスの１つ以上のサービスのインスタンスは、異なるコンピューティングデバイスの１つ以上のサービスのインスタンスとは異なる。サービスの１つ以上は、位置情報サービスを提供するように構成される。各コンピューティングデバイスのコアコンポーネントは、データを共有してコアコンポーネントを同期させるために、それぞれのコンピューティングデバイスの１つ以上のサービスと、ならびに、他のコンピューティングデバイスの少なくとも１つのコアコンポーネントと、通信するように構成される。
【０００７】
１つ以上のサービスは、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択することができる。この点に関しては、パイプラインは、シーケンシャルな方法で実行されて、パイプラインの状態として維持される値を生成するように構成される複数の計算を含む。パイプラインを含むそれぞれのコンピューティングデバイスのコアコンポーネントは、パイプラインの状態を維持するように構成することができる。それぞれのコンピューティングデバイスのコアコンポーネントは、データを共有してパイプラインの実行を調整するために、別のコンピューティングデバイスのコアコンポーネントと通信するように構成することができる。例示の実施形態において、１つ以上のサービスは、アプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含む。この例示の実施形態において、それぞれのコンピューティングデバイスのコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。
【０００８】
各コンピューティングデバイスのコアコンポーネントは、１つ以上のサービスのためにデータのキャッシュ管理を提供するように構成することができる。各コンピューティングデバイスのコアコンポーネントは、サービスの複数のインスタンスの間でデータを同期させるように構成することができる。例示の実施形態において、それぞれのコンピューティングデバイスのコアコンポーネントは、別のコアコンポーネントからの１つ以上の機能呼出しに応答するように構成される。この例示の実施形態のそれぞれのコンピューティングデバイスのコアコンポーネントによって受信される機能呼出しは、ユーザトークンに関連付けられており、それぞれのコンピューティングデバイスのコアコンポーネントはさらに、ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で機能呼出しに応答してデータに１つ以上の動作を実行するように構成される。例示の実施形態において、複数のコンピューティングデバイスのコアコンポーネントは、競合のない複製データ型（ｃｏｎｆｌｉｃｔ−ｆｒｅｅ  ｒｅｐｌｉｃａｔｅｄ  ｄａｔａ  ｔｙｐｅ，ＣＲＤＴ）を有するデータを共有するように構成される。
【０００９】
別の例示の実施形態において、位置情報サービスを提供するための装置が開示される。装置は、１つ以上のサービスのユーザ選択を受信するための手段を含む。少なくとも１つのサービスは、コアコンポーネントと関連付けられて、位置情報サービスを提供するように構成される。装置は、データを共有してコアコンポーネントを同期させるために、１つ以上のサービスならびに別のコンピューティングデバイスのコアコンポーネントと通信するための手段も含む。装置は、位置情報サービスが基にしているデータを取得するために通信させられる。装置は、選択された少なくとも１つのサービスの実行後に選択されたサービスと関連したコアコンポーネントにおいて、選択された少なくとも１つのサービスの状態を記憶するための手段をさらに含む。
【００１０】
１つ以上のサービスは、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから、例示の実施形態に従って選択される。この点に関しては、パイプラインは、シーケンシャルな方法で実行されて、パイプラインの状態として維持される値を生成するように構成される複数の計算を含むことができる。パイプラインと関連付けられているコアコンポーネントは、パイプラインの状態を維持するように構成することができる。例示の実施形態において、１つ以上のサービスは、アプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含む。この例示の実施形態の１つ以上のサービスと関連付けられたコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。
【００１１】
少なくとも１つのサービスの状態を記憶するための手段は、１つ以上のサービスのためにデータのキャッシュ管理を提供できる。例示の実施形態の装置は、サービスの複数のインスタンスの間でデータを同期させるための手段をさらに含む。例示の実施形態において、装置は、別のコアコンポーネントからの１つ以上の機能呼出しを受信するための手段をさらに含む。受信される機能呼出しは、ユーザトークンと関連付けられる。この例示の実施形態の装置はまた、ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で機能呼出しに応答してデータに１つ以上の動作を実行するための手段を含む。例示の実施形態の装置は、１つ以上のサービスの少なくともいくつかのために、それぞれのサービスがエッジデバイスによって実行されるか、または、クラウドで実行されるかに関するユーザ選択を受信するための手段、およびそれぞれのサービスがエッジデバイスによって実行されるか、または、クラウドで実行されるかに基づいてフィードバックを提供するための手段をさらに含む。フィードバックは、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する１つ以上のパラメータを含む。例示の実施形態において、装置は、１つ以上のサービスの実行後に、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する追加のフィードバックを提供するための手段をさらに含む。
【００１２】
更なる例示の実施形態において、位置情報サービスを提供するための装置が開示される。装置は、少なくとも１つのプロセッサおよびコンピュータプログラムコードを含む少なくとも１つのメモリを含む。少なくとも１つのメモリおよびコンピュータプログラムコードは、プロセッサによって、装置に１つ以上のサービスのユーザ選択を受信させるように構成される。少なくとも１つのサービスは、コアコンポーネントと関連付けられて、位置情報サービスを提供するように構成される。少なくとも１つのメモリおよびコンピュータプログラムコードはまた、データを共有してコアコンポーネントを同期させるために、プロセッサによって、装置に、１つ以上のサービスと、ならびに、別のコンピューティングデバイスのコアコンポーネントと、通信させるように構成される。少なくとも１つのメモリおよびコンピュータプログラムコードは、位置情報サービスが基にしているデータを取得するために、プロセッサによって、装置に通信させるように構成される。少なくとも１つのメモリおよびコンピュータプログラムコードはさらに、プロセッサによって、装置に、選択された少なくとも１つのサービスの実行後に選択されたサービスと関連付けられたコアコンポーネントにおいて、選択された少なくとも１つのサービスの状態を記憶させるように構成される。
【００１３】
１つ以上のサービスは、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから、例示の実施形態に従って選択される。この点に関しては、パイプラインは、シーケンシャルな方法で実行されて、パイプラインの状態として維持される値を生成するように構成される複数の計算を含むことができる。パイプラインと関連付けられているコアコンポーネントは、パイプラインの状態を維持するように構成することができる。例示の実施形態において、１つ以上のサービスは、アプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含む。この例示の実施形態の１つ以上のサービスと関連付けられたコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。
【００１４】
少なくとも１つのメモリおよびコンピュータプログラムコードは、プロセッサによって、１つ以上のサービスのためにデータのキャッシュ管理を提供するために例示の実施形態の装置に少なくとも１つのサービスの状態を記憶させるように構成される。少なくとも１つのメモリおよびコンピュータプログラムコードは、プロセッサによって、例示の実施形態の装置にサービスの複数のインスタンスの間でデータを同期させるように構成される。例示の実施形態において、少なくとも１つのメモリおよびコンピュータプログラムコードは、プロセッサによって、例示の実施形態の装置に別のコアコンポーネントからの１つ以上の機能呼出しを受信させるようにさらに構成される。受信される機能呼出しは、ユーザトークンと関連付けられる。少なくとも１つのメモリおよびコンピュータプログラムコードは、プロセッサによって、この例示の実施形態の装置にユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で機能呼出しに応答してデータに１つ以上の動作を実行させるように構成される。少なくとも１つのメモリおよびコンピュータプログラムコードは、プロセッサによって、例示の実施形態の装置に、１つ以上のサービスの少なくともいくつかのために、それぞれのサービスがエッジデバイスによって、または、クラウドで実行されるかどうかに関してユーザ選択を受信して、それぞれのサービスがエッジデバイスによって、または、クラウドで実行されるかどうかに基づいてフィードバックを提供させるように構成される。フィードバックは、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する１つ以上のパラメータを含む。例示の実施形態において、少なくとも１つのメモリおよびコンピュータプログラムコードは、プロセッサによって、例示の実施形態の装置に、１つ以上のサービスの実行後に、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する追加のフィードバックを提供させるようにさらに構成される。
【００１５】
別の例示の実施形態において、位置情報サービスを提供するための方法が開示される。方法は、１つ以上のサービスのユーザ選択を受信することを含む。少なくとも１つのサービスは、コアコンポーネントと関連付けられて、位置情報サービスを提供するように構成される。方法は、データを共有してコアコンポーネントを同期させるために、１つ以上のサービスならびに別のコンピューティングデバイスのコアコンポーネントと通信することをさらに含む。この点に関しては、方法は、位置情報サービスが基にしているデータを取得するために通信する。方法はまた、選択された少なくとも１つのサービスの実行後に選択されたサービスと関連したコアコンポーネントにおいて、選択された少なくとも１つのサービスの状態を記憶することを含む。
【００１６】
１つ以上のサービスは、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択することができる。この点に関しては、パイプラインは、シーケンシャルな方法で実行されて、パイプラインの状態として維持される値を生成するように構成される複数の計算を含むことができる。パイプラインと関連付けられているコアコンポーネントは、パイプラインの状態を維持するように構成することができる。例示の実施形態において、１つ以上のサービスは、アプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含む。１つ以上のサービスと関連付けられたこの例示の実施形態のコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。例示の実施形態において、少なくとも１つのサービスの状態を記憶することは、１つ以上のサービスのためにデータのキャッシュ管理を提供することを含む。例示の実施形態の方法は、サービスの複数のインスタンスの間でデータを同期させることをさらに含む。
【００１７】
例示の実施形態の方法は、別のコアコンポーネントからの機能呼出しに応答してデータに１つ以上の動作を実行することをさらに含む。受信される機能呼出しは、ユーザトークンと関連付けられる。１つ以上の動作はユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で実行される。例示の実施形態において、方法は、１つ以上のサービスの少なくともいくつかのために、それぞれのサービスがエッジデバイスによって実行されるか、または、クラウドで実行されるかに関するユーザ選択を受信すること、およびそれぞれのサービスがエッジデバイスによって実行されるか、または、クラウドで実行されるかに基づいてフィードバックを提供することをさらに含む。フィードバックは、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する１つ以上のパラメータを含む。例示の実施形態の方法は、１つ以上のサービスの実行後に、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する追加のフィードバックを提供することをさらに含む。
【００１８】
更なる例示の実施形態において、位置情報サービスを提供するように構成されるコンピュータプログラム製品が開示される。コンピュータプログラム製品は、中に記憶されるコンピュータ実行可能プログラムコード命令を有する少なくとも１つの非一時的コンピュータ可読記憶媒体を含む。プログラムコード命令は、実行されると１つ以上のサービスのユーザ選択を受信するように構成される。少なくとも１つのサービスは、コアコンポーネントと関連付けられて、位置情報サービスを提供するように構成される。プログラムコード命令はまた、データを共有してコアコンポーネントを同期させるために、１つ以上のサービスならびに別のコンピューティングデバイスのコアコンポーネントと通信させるように構成される。この点に関しては、プログラムコード命令は、位置情報サービスが基にしているデータを取得するために通信させるように構成される。プログラムコード命令は、選択された少なくとも１つのサービスの状態が、選択された少なくとも１つのサービスの実行後に選択されたサービスと関連付けられたコアコンポーネントに記憶されるようにさせるようにさらに構成される。
【００１９】
１つ以上のサービスは、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択することができる。この点に関しては、パイプラインは、シーケンシャルな方法で実行されて、パイプラインの状態として維持される値を生成するように構成される複数の計算を含むことができる。パイプラインと関連付けられているコアコンポーネントは、パイプラインの状態を維持するように構成することができる。例示の実施形態において、１つ以上のサービスは、アプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含む。１つ以上のサービスと関連付けられたこの例示の実施形態のコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。
【００２０】
例示の実施形態において、少なくとも１つのサービスの状態を記憶させられるように構成されるプログラムコード命令は、１つ以上のサービスのためにデータのキャッシュ管理を提供するように構成されるプログラムコード命令を含む。例示の実施形態のプログラムコード命令は、サービスの複数のインスタンスの間でデータを同期させるようにさらに構成される。例示の実施形態において、プログラムコード命令は、別のコアコンポーネントからの機能呼出しに応答してデータに１つ以上の動作を実行するようにさらに構成される。受信される機能呼出しは、ユーザトークンと関連付けられる。１つ以上の動作はユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で実行される。
【００２１】
例示の実施形態において、位置情報サービスを提供するための分散処理システムが開示される。分散処理システムは、少なくとも１つのエッジデバイスおよび少なくとも１つのクラウドコンピューティングデバイスを含む複数のコンピューティングデバイスを含む。各コンピューティングデバイスは、コアコンポーネントおよび異なるそれぞれのサービスを実行するように構成される１つ以上のマイクロサービスを含む。１つのコンピューティングデバイスの１つ以上のマイクロサービスは、異なるコンピューティングデバイスの１つ以上のマイクロサービスとは異なる。マイクロサービスの１つ以上は、位置情報サービスを提供するように構成される。各コンピューティングデバイスのコアコンポーネントは、データを共有して複数のマイクロサービスの実行を調整するために、それぞれのコンピューティングデバイスの１つ以上のマイクロサービスと、ならびに、他のコンピューティングデバイスの少なくとも１つのコアコンポーネントと、通信するように構成される。複数のコンピューティングデバイスのコアコンポーネントは競合のない複製データ型（ＣＲＤＴ）を有するデータを共有し、それにより、データのいかなる競合の解決にも数学的確実性を提供して一貫性を成し遂げる。
【００２２】
一実施形態のエッジデバイスは、車両に搭載されている、例えば車両のナビゲーションシステムである。例示の実施形態において、各コンピューティングデバイスのコアコンポーネントは、それぞれのコンピューティングデバイスの１つ以上のマイクロサービスのためにデータのキャッシュ管理を提供するように構成される。例示の実施形態のコアコンポーネントは、別のコンピューティングデバイスのコアコンポーネントからの１つ以上の機能呼出しに応答するように構成される。この例示の実施形態において、コアコンポーネントによって受信される機能呼出しは、ユーザトークンと関連付けられる。したがって、この例示の実施形態のコアコンポーネントは、ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で機能呼出しに応答してデータに１つ以上の動作を実行するようにさらに構成される。
【００２３】
別の例示の実施形態において、車両に搭載して提供される位置情報サービスをカスタマイズするためのシステムが提供される。システムは、少なくとも１つのプロセッサおよびコンピュータプログラムコードを含む少なくとも１つのメモリを含む。少なくとも１つのメモリおよびコンピュータプログラムコードは、プロセッサによって、システムに少なくとも車両を構成する１つ以上のマイクロサービスのユーザ選択を受信させるように構成される。少なくとも１つのマイクロサービスは、位置情報サービスを提供するように構成される。１つ以上のマイクロサービスの少なくともいくつかのために、システムは、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに関して、ユーザ選択を受信させられる。システムはまた、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに基づいて、フィードバックを提供させられる。フィードバックは、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する１つ以上のパラメータを含む。
【００２４】
１つ以上のマイクロサービスの実行後に、例示の実施形態のシステムはまた、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する追加のフィードバックを提供させられる。車両用のルートの確立後に、例示の実施形態のシステムは、ルートと関連付けられたコードまたはリンクを提供して別のデバイスがコードまたはリンクに基づいてルートにアクセスして再構成するのを可能にするようにさせられる。車両の初期構成後に、例示の実施形態のシステムは、さらに車両を構成する１つ以上の追加のマイクロサービスのユーザ選択を受信させられる。この例示の実施形態において、１つ以上の追加のマイクロサービスは、マイクロサービス市場によって提供される。
【００２５】
車両に搭載して提供される位置情報サービスをカスタマイズするための方法も提供される。方法は、車両を構成する１つ以上のマイクロサービスのユーザ選択を受信すること含む。少なくとも１つのマイクロサービスは、位置情報サービスを提供するように構成される。１つ以上のマイクロサービスの少なくともいくつかのために、方法は、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに関してユーザ選択を受信する。方法はまた、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに基づいて、フィードバックを提供する。フィードバックは、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する１つ以上のパラメータを含む。
【００２６】
車両に搭載して提供される位置情報サービスをカスタマイズするためのコンピュータプログラム製品も提供される。コンピュータプログラム製品は、コンピュータ実行可能プログラムコード部分が車両を構成する１つ以上のマイクロサービスのユーザ選択を受信するように構成されるプログラムコード命令を含んでその中で記憶されるコンピュータ実行可能プログラムコード部分を有する、少なくとも１つの非一時的コンピュータ可読記憶媒体を含む。少なくとも１つのマイクロサービスは、位置情報サービスを提供するように構成される。１つ以上のマイクロサービスの少なくともいくつかのために、コンピュータ実行可能プログラムコード部分はまた、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに関してユーザ選択を受信するように構成されるプログラムコード命令を含む。コンピュータ実行可能プログラムコード部分は、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに基づいてフィードバックを提供するように構成されるプログラムコード命令をさらに含む。フィードバックは、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する１つ以上のパラメータを含む。
【００２７】
車両に搭載して提供される位置情報サービスをカスタマイズするための装置も提供される。装置は、車両を構成する１つ以上のマイクロサービスのユーザ選択を受信するための手段を含む。少なくとも１つのマイクロサービスは、位置情報サービスを提供するように構成される。１つ以上のマイクロサービスの少なくともいくつかのために、装置はまた、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに関してユーザ選択を受信するための手段を含む。装置は、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに基づいて、フィードバックを提供するための手段をさらに含む。フィードバックは、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する１つ以上のパラメータを含む。
【００２８】
このように本発明の特定の実施形態を一般用語で説明してきたので、ここで添付図面を参照するが、これらは必ずしも一定の比率で描画されているわけではない。
【図面の簡単な説明】
【００２９】
【図１】本開示の例示の実施形態による位置情報サービスを提供するための分散処理システムを示すブロック図である。
【図２】本開示の例示の実施形態に従って特に構成することができる分散処理システムのコンピューティングデバイスのブロック図である。
【図３】本開示のより詳細な例示の実施形態による位置情報サービスを提供するための分散処理システムを示すブロック図である。
【図４】本開示の例示の実施形態によるデータ記憶マイクロサービスを有するエッジデバイスのブロック図である。
【図５】本開示の例示の実施形態による高度なレンダリングプラットフォームマイクロサービスを有するエッジデバイスのブロック図である。
【図６】本開示の例示の実施形態によるマンマシンインタフェースコントローラのブロック図である。
【図７】本開示の例示の実施形態による分散処理システムの別の表現である。
【図８】本開示の例示の実施形態による、図２のコンピューティングデバイスなどによって実行される動作を示すフローチャートである。
【図９】本開示の例示の実施形態による、車両に搭載して提供される位置情報サービスをカスタマイズするためにユーザが対話することができるシステムの一部の斜視図である。
【発明を実施するための形態】
【００３０】
本発明のいくつかの実施形態はここで添付の図面を参照してより完全に以下に説明され、その中で、すべてではないが本発明のいくつかの実施形態が示される。実際に、本発明の種々の実施形態は、多くの異なる形で具体化することができるものであり、本明細書において記載される実施形態に限定されるように解釈されてはならず、むしろ、本開示が適用できる法的要件を満たすように、これらの実施形態は提供される。全体に、類似の参照数字は類似の要素を参照する。本明細書において使用する場合、用語「データ」、「コンテンツ」、「情報」および類似の用語は互換的に使用されて、本発明の実施形態に従って送信、受信および／または、記憶されることができるデータを指す。したがって、いずれのこのような用語の使用も、本発明の実施形態の精神および範囲を制限すると解されるべきではない。
【００３１】
位置情報サービスを提供するための分散処理システムが開示される。分散処理システムは、マップのディスプレイ、ユーザの位置がマップ上に識別されるマップマッチング、位置検索機能、ルーティング、ガイダンスおよび交通関連情報の提供を含むがこれに限らず、多種多様な位置情報サービスを提供することができる。分散処理システムは、車両に搭載したナビゲーションシステムによるかまたは、それと連動して提供される位置情報サービスなどのように、車両に搭載することを含めて、種々の環境に位置情報サービスを提供することができる。
【００３２】
図１に示すように、位置情報サービスを提供するための分散処理システム１０が表される。示すように、分散処理システムは、位置情報サービスを提供するために協力して作動する複数のコンピューティングデバイスを含む。複数のコンピューティングデバイスは、１つ以上のエッジデバイス１２、すなわち、より集中化したデバイスと比較して呼び出し時間を減らすためにデータのソースにローカルにより近いか近接した処理タスクを実行する、ネットワークのエッジの遠隔であるか非中央のデバイスを含む。エッジデバイスは通常、ローカルに要求されるように計算を実行して、データを収集して、アプリケーションを実行することができ、したがって一般に複数のクライアントからの大規模な要求に応じることは必要でない。エッジデバイスの例は、車両に搭載したナビゲーションシステム、携帯端末、例えばスマートフォン、タブレット型コンピュータ等である。しかしながら、分散処理システムは、自動車の環境に限定されるものではなく、それを超えて拡張することができる。例えば、モノのインターネット（ＩｏＴ）デバイスも、それらがローカルにサービスを実行して、ローカルのハードウェア能力を超えて処理タスクのためのクラウド基盤に依存するように構成することができるので、エッジデバイスと考えることができる。
【００３３】
エッジデバイス１２に加えて、複数のコンピューティングデバイスは、クラウドコンピューティング環境において車両から遠隔で作動している１つ以上のクラウドコンピューティングデバイス１４も含む。例示の実施形態において、クラウドコンピューティングデバイスは、要求当たり、エッジデバイスよりかなり低いコストだが、呼び出し時間および帯域幅要求を代償にして、より多くの要求を処理することができる。図１の実施形態において、分散処理システム１０は、２つのエッジデバイスおよび単一のクラウドコンピューティングデバイスを含む。しかしながら、他の実施形態において、分散処理システムは、異なる数のエッジデバイスおよび／または複数のクラウドコンピューティングデバイスを含むことができる。
【００３４】
より能力があるハードウェアデバイスをネットワークのエッジに導入することで、より多くの計算能力が入手可能になるので、サービスは、集中化したエンティティ、例えばサーバ、クラスタまたは「クラウド」に限定されず、エッジデバイス１２で実行することもできる。使用事例に応じて、いくつかのサービスは、ネットワークのそれぞれの側で実行されることによって性能上の利点を得ることができ、いくつかのサービスはクラウドコンピューティングデバイス１４により実行されることによって性能上の利点を得て、そして他のサービスはエッジデバイスにより実行されることによって性能上の利点を得ることができる。例えば、マップマッチングと連動して、情報エンターテインメントシステムなどのエッジデバイスは、１つのソース、例えば、車両位置プロバイダにより提供されるポジショニングデータから対応する道路セグメントを見つけるために寸法取りすることができるが、集中化したエンティティ、例えばクラウドコンピューティングデバイスは、何千ものソースから位置情報を取り入れて、対応する道路セグメントをすべてのソースに戻すために寸法取りすることができる。
【００３５】
各コンピューティングデバイス１２、１４はコアコンポーネント１６および異なる機能を実行するように構成される１つ以上のサービス１８を含み、そのうち少なくともいくつかは位置情報サービスである。サービスの少なくともいくつか、およびいくつかの実施形態では、サービスの全ては、異なる機能、例えば異なる位置情報サービスを実行するように構成される。後述するように、分散処理システム１０は、望ましくないサービスを含めることによって車両を過度に大きくすることなく、ユーザ、例えば車両の所有者によって所望される複数のサービスを含むように構成することができる。
【００３６】
コンピューティングデバイス１２、１４は種々の方法で構成することができるが、一実施形態のコンピューティングデバイスは、プロセッサ２０およびメモリデバイス２２および任意選択的にユーザインタフェース２４および／または通信インタフェース２６を含むか、それらと関連付けられるかまたは、それらと通信する。いくつかの実施形態では、プロセッサ（および／またはコプロセッサもしくは、プロセッサを支援しているかまたはプロセッサと関連した任意の他の処理回路）は、装置のコンポーネントの間で情報を伝えるためのバスを介して、メモリデバイスと通信してもよい。メモリデバイスは、非一時的でもよくて、例えば、１つ以上の揮発性および／または不揮発性メモリを含んでもよい。言い換えれば、例えば、メモリデバイスは、マシン（例えば、プロセッサ）によよって検索可能でもよいデータ（例えば、ビット）を記憶するように構成されるゲートを含む電子記憶装置（例えば、計算機可読の記憶媒体）でもよい。メモリデバイスは、装置が本発明の例示の実施形態に従って種々の機能を実行することを可能にするための情報、データ、コンテンツ、アプリケーション、命令等を記憶するように構成することができる。例えば、メモリデバイスは、プロセッサによって処理するための入力データをバッファリングするように構成することができる。加えて、または代替的に、メモリデバイスは、プロセッサによる実行のための命令を記憶するように構成することができる。
【００３７】
プロセッサ２０は、多くの異なる方法で実施することができる。例えば、プロセッサは、１つ以上の種々のハードウェア処理手段、例えばコプロセッサ、マイクロプロセッサ、コントローラ、デジタルシグナルプロセッサ（ＤＳＰ）、付随するＤＳＰの有無にかかわらず演算処理要素、または例えば、ＡＳＩＣ（特定用途向け集積回路）、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）、マイクロコントローラーユニット（ＭＣＵ）、ハードウェアアクセラレータ、特殊目的コンピュータチップ等の集積回路を含んでいる種々の他の処理回路として実施することができる。したがって、いくつかの実施形態では、プロセッサは、独立して実行するように構成される１つ以上の処理コアを含むことができる。マルチコアプロセッサは、単一の物理パッケージの中でマルチプロセッシングを可能にすることができる。加えて、または、代替的に、プロセッサは、バスを介してタンデムに構成されて独立した命令の実行、パイプライン化および／またはマルチスレッディングを可能にする１つ以上のプロセッサを含むことができる。
【００３８】
例示の実施形態において、プロセッサ２０は、メモリデバイス２２に記憶されているかプロセッサにアクセス可能な命令を実行するように構成されてもよい。代替的に、または加えて、プロセッサは、ハード符号化機能を実行するように構成することができる。このように、ハードウェアまたはソフトウェア方法によって、または、それらの組み合わせによって構成されるかどうかにかかわらず、プロセッサは、それに応じて構成されると共に、本発明の一実施形態による動作を実行することができるエンティティ（例えば、物理的に回路で実施される）を表すことができる。したがって、例えば、プロセッサがＡＳＩＣ、ＦＰＧＡ等として実施されるときに、プロセッサは本明細書において、記載されている動作を行うための特に構成されたハードウェアでもよい。あるいは、別の例として、プロセッサがソフトウェア命令の実行者として実施されると、命令は具体的には、命令が実行されるときに、本明細書において記載されているアルゴリズムおよび／または動作を実行するようにプロセッサを構成することができる。しかしながら、いくつかの場合では、プロセッサは、本明細書において記載されているアルゴリズムおよび／または動作を実行するための命令によるプロセッサのさらなる構成によって本発明の実施形態を使用するように構成される特定のデバイス（例えば、コンピューティングデバイス）のプロセッサでもよい。プロセッサは、とりわけ、クロック、演算論理ユニット（ＡＬＵ）およびプロセッサの動作をサポートするように構成された論理ゲートを含むことができる。
【００３９】
コンピューティングデバイスのいくつか、例えばエッジデバイス１２の１つ以上はまた、任意選択的にユーザインタフェース２４を含むかまたはそれと通信することができる。ユーザインタフェースは、タッチスクリーンディスプレイ、キーボード、マウス、ジョイスティックまたは他の入出力機構を含むことができる。いくつかの実施形態では、ユーザインタフェース、例えばディスプレイ、スピーカ等は、出力をユーザに提供するように構成することもできる。この例示の実施形態において、プロセッサ２０は、１つ以上の入出力機構の少なくともいくつかの機能を制御するように構成されたユーザインタフェース回路を含むことができる。プロセッサおよび／またはプロセッサを含むユーザインタフェース回路は、プロセッサにアクセス可能なメモリ（例えば、メモリデバイス２２および／または同様のもの）に記憶されるコンピュータプログラム命令（例えば、ソフトウェアおよび／またはファームウェア）を通して１つ以上の入出力機構の１つ以上の機能を制御するように構成することができる。
【００４０】
例示の実施形態のコンピューティングデバイス１２、１４は、他のコンピューティングデバイスとの間でデータを受信および／または送信するように構成されたハードウェアまたはハードウェアとソフトウェアの組合せのいずれかで実施されるデバイスまたは回路などの、いかなる手段であってもよい通信インタフェース２６を、任意選択的に含むこともできる。例えば、クラウドコンピューティングデバイスの通信インタフェースは、各エッジデバイスの通信インタフェースと通信するように構成される。同様に、各エッジデバイスの通信装置は、クラウドコンピューティングデバイスおよび他のエッジデバイスの通信インタフェースと通信するように構成することができる。この点に関しては、通信インタフェースは、例えば、無線通信ネットワークとの通信を可能にするためのアンテナ（または複数のアンテナ）ならびにサポートハードウェアおよび／またはソフトウェアを含むことができる。加えて、または代替的に、通信インタフェースは、アンテナと対話するための回路を含むことができて、アンテナを介して信号の伝送をもたらすかまたはアンテナを介して受信される信号の受信を処理することができる。いくつかの環境において、通信インタフェースは代わりに、またはさらに、有線通信をサポートすることができる。
【００４１】
図１に示すように、各コンピューティングデバイス１２、１４は、コアコンポーネント１６を含む。一実施形態において、各コンピューティングデバイスは、同じコアコンポーネントのそれぞれのインスタンスを含む。一実施形態において、コアコンポーネントは、それぞれのコンピューティングデバイスのメモリデバイス２２によって記憶されて、かつそれぞれのコンピューティングデバイスのプロセッサ２２によって実行される、複数のコンピュータプログラム命令によって定義される。コアコンポーネントは、種々の機能を実行する。
【００４２】
例えば、一実施形態のコアコンポーネント１６は、コンピューティングデバイス１２、１４用の、そして、関連するサービス１８に代わっての、キャッシュ管理を提供する。一実施形態において、サービスに代わってコアコンポーネントによって管理されるキャッシュは、キーと値のデータ記憶でもよい。エッジデバイスの中では、キャッシュはメモリマップされたファイルまたは埋込みのキーと値のデータベースによって支援することができるが、クラウドコンピューティングデバイスでは、キャッシュは分散キャッシュとして実装することができる。コアコンポーネントによって管理されるキャッシュがキー値データ記憶である実施形態において、キャッシュの中に記憶されるオブジェクトは、例えば、それぞれのサービスによって提供されるキーによって読み出される。キーは、それぞれのオブジェクトを一意に識別するのに役立つ。例えば、キーは現在の検索要求、現在のルートおよび現在のアプリケーション設定を識別することができて、対応する値は、それぞれ、現在の検索要求の結果、現在のルートの定義および現在のアプリケーション設定の定義でもよい。
【００４３】
コアコンポーネント１６によって実行される他の機能には、エンティティ状態管理、サービス管理、例えば、サービスディスカバリおよび／もしくはサービスレジストリ、ならびに／またはサービス更新管理を含むことができる。状態管理に関して、コンピューティングデバイス１２、１４などのエンティティの状態は、コンピューティングデバイスについて分かっている情報を記載しているプロパティのセットである。例えば、アプリケーションの状態は、アプリケーションを定義する属性の最小セットである。例示の実施形態の属性は、一次属性、すなわち、他の属性に由来しない属性である。状態は、状態の現在および過去の値がアクセスされ得るように、時間依存情報を含む不変のグローバルにアクセス可能なキーと値のデータベースとしてモデル化することができる。例示の実施形態では、状態更新は、タプル＜タイムスタンプ、エンティティＩＤ、状態＞としてモデル化されて、そこで、タイムスタンプはミリ秒ごとの状態更新のタイムスタンプであり、エンティティＩＤは所与の更新を適用しなければならないコンピューティングデバイスを定めている任意選択のフィールドであり、状態はその状態更新のキーおよび値の両方ともを捕えるメッセージである。コアコンポーネント１６の状態サービスとの対話は、後述するように、１回だけのゲット／セット機能または登録機能のいずれかに従って実行することができる。
【００４４】
コアコンポーネント１６は、それぞれのコンピューティングデバイス１２、１４の状態を維持して、他のコンピューティングデバイスに状態更新をブロードキャストすることができる。例示の実施形態のコアコンポーネントは、状態プロパティ、例えば状態プロパティの作成、問合せおよび更新を管理する状態サービスを提供することができる。一実施形態において、コアコンポーネントの状態サービスは、キーと値のデータベースならびにデータベースと接続機構へのアクセスを管理するアプリケーションプログラミングインタフェース（ＡＰＩ）のセットを含む。状態サービスがクラウドコンピューティングデバイスによって展開される実施形態において、状態サービスデータベースによって含まれるデータは、シャドウイングメカニズムを利用しているエッジデバイスのコアコンポーネントの状態サービスによって提供される。この点に関しては、エッジデバイスのコアコンポーネントの状態サービスは、クラウドコンピューティングデバイスのコアコンポーネントの状態サービスに対する各属性のためのポリシーに従って、更新したプロパティをアップロードする。一実施形態では、状態サービスはまた、作成、要求および更新動作をサポートする。状態は、任意のエンティティＩＤによって作成するかまたは更新できる。存在する場合、エンティティＩＤは、状態に対する更新は登録されることができる他のコンピューティングデバイスから分離されるべきであることを信号で伝える。同様に、エンティティＩＤのない状態更新は、標準的なものとみなされ、すべてのコンピューティングデバイスにアクセス可能である。しかしながら、状態サービスに対する要求は、エンティティＩＤを提供しなければならない。
【００４５】
コアコンポーネント１６は、同じコンピューティングデバイス１２、１４によってサポートされる１つ以上のサービス１８と通信するように構成され、また、複数のサービスの実行を調整するために、かつコアコンポーネントを同期させるために、他のコンピューティングデバイスのコアコンポーネントと通信するように構成される。例えば、各サービスは、サービスを実行するものと同じコンピューティングデバイスによって実行されるコアコンポーネントのそれぞれのインスタンスと通信するように構成することができる。それから、コアコンポーネントのそれぞれのインスタンスは、複数のサービスの実行を編成するために通信することができる。サービスの１つ以上は、位置データに少なくとも部分的に依存する位置情報サービスを提供する。位置データはリアルタイムに生成され、したがって、位置データはまた一般に、受け入れ可能なユーザ体験を提供するためにほぼリアルタイムに消費されなければならない。そうするために、例示の実施形態の分散処理システム１０は、コアコンポーネントがタイムリーに更新された位置データを取得して配布しなければならないように要求されるときはいつでも、複数のデバイスにおいて、一貫したデータへのアクセスを必要とする。一実施形態では、コアコンポーネントは、例えば、ゲット、プット、削除、リスト、登録、通知および停止などの、あらかじめ定義された機能のセット、によって通信するように構成される。
【００４６】
ゲット機能と連動して、コアコンポーネント１６は、別のコアコンポーネントによって維持されるデータ値を取得することができる。取得されるデータ値は、対応するキーによって識別することができる。逆に、プットまたはセット機能と連動して、コアコンポーネントは、新しい値を挿入するかまたは既存の値を変更することなどによって、それぞれのキーと関連付けられたデータ値を更新させることができる。その後、新しい値は、分散処理システム１０の他のコンピューティングデバイスのコアコンポーネントによって、読み出すことができる。登録に関しては、１つのコアコンポーネントが、別のコアコンポーネントによって維持される１つ以上のそれぞれのキーと関連したデータ値に関してすべての変更について通知されるように登録することができる。登録機能によって、コアコンポーネントは特定のキーおよび関連するデータ値に登録することができ、それぞれのコアコンポーネントはコアコンポーネントが登録したデータ値について更新を取得することができる。例えば、ルーティングサービスと関連付けられたコアコンポーネントは、現在の車両位置に登録することができる。既存のキーに新しい値を置くことによって、それぞれのキーに対するすべての登録者は、変更について知らされて、新しい値に適応する。加えて、または代替的に、他のコンピューティングデバイスは、通知によって新しい値を知らされてもよい。この点に関しては、通知機能は、キーと関連付けられたデータ値が変化したインスタンスのコアコンポーネントによる通知を要求する。リスト機能によって、すべてのキーのリストおよび／または特定のディレクトリの関連付けられたデータ値が取得されることが可能である。最後に、停止機能によって、コアコンポーネントがデータの値の変化の通知を提供することになっていた以前の通知機能をキャンセルすることなどで、以前の要求をキャンセルすることができる。
【００４７】
エッジデバイス１２と分散処理システム１０のクラウドコンピューティングデバイス１４の間のデバイス間通信の１つの例が、図３に表される。示すように、エッジデバイスおよびクラウドコンピューティングデバイスのそれぞれは、同じデバイスによって実行されるそれぞれのサービス１８（「サービスインスタンス」と称する）と通信する１つ以上のアプリケーション１９（「クライアント」と称する）および、いくつかの実施形態では、別のデバイスのサービスを含む。エッジデバイスおよびクラウドコンピューティングデバイスはまた、次に、新規であるか更新されたサービスを登録するためのレジストリサービス２７および、デバイスの間の一貫性を維持するために他のデバイスの状態サービスと通信するように構成された状態サービス２８を含む、コアコンポーネント１６を含む。サービスは、それぞれのコアコンポーネントによって維持されるローカルキャッシュ３０と通信する。ローカルデータアクセスを容易にするために、この例示の実施形態のそれぞれのデバイスはまた、それぞれのキャッシュにデータをダウンロードし、および／または更新されたデータを記憶に提供するために位置データベース３２と通信するように構成された、データ記憶サービスインスタンス３１を含む。
【００４８】
複数のコアコンポーネント１６は、コンピューティングデバイス１２、１４の間で共有されるデータと関係しているプライバシーを保つような方法で通信する。本実施形態において、第２のコンピューティングデバイスのコアコンポーネントによって第１のコンピューティングデバイスのコアコンポーネントになされる機能呼出しには、ユーザトークンが付随する。したがって、この例示の実施形態の第１のコンピューティングデバイスは、第２のコンピューティングデバイスから機能呼出し（および、ユーザトークン）を受信するように構成された、プロセッサ２０、通信インタフェース２６または同様のものなどの手段を含む。ユーザトークンは、車両の運転者などのそれぞれのユーザに排他的に割り当てられる。したがって、機能呼出しに基づいて第１のコンピューティングデバイスのコアコンポーネントによって実行されるデータへのすべての動作は、第１のコンピューティングデバイスの安全な領域、例えば、サンドボックスモデルの中でコアコンポーネントによって実行されることができて、したがって、データと関連したプライバシーは分散処理システム１０のすべてのコンピューティングデバイスの全体にわたって守ることができる。この点に関しては、この例示の実施形態の第１のコンピューティングデバイスはまた、ユーザトークンと関連したユーザに排他的に割り当てられる安全な領域における機能呼出しに応答して１つ以上の動作をデータに実行するように構成された、プロセッサ等の手段を含む。
【００４９】
データと関連したプライバシーを保つことに加えて、異なるコンピューティングデバイス１２、１４によって実行されるサービスを提供するように構成された分散処理システム１０は、複数のコンピューティングデバイスの間で交換されるデータを同期させる技術を必要とする。ブリュワーのＣＡＰ定理によれば、分散形コンピュータシステムが３つの保証である一貫性、可用性および分断耐性のうち２つを超えて同時に提供することは不可能である。例示の実施形態の分散処理システムは、すべてのサービスがデータに短時間でアクセスすることができることを保証する可用性、およびシステムが分割されていても動作し続けることを保証する分断耐性の両方を提供する。一貫性の欠如によってもたらされる、分散処理システムの異なるコンピューティングデバイスによって利用されるデータセットの間の不同性、例えば、データの異なるバージョンの影響を緩和するために、複数のコアコンポーネント１６は、競合のない複製データ型（ＣＲＤＴ）を有するデータを共有する。ＣＲＤＴを利用することによって、データの範囲内で現れるいかなる競合も解決されることができるという数学的確実性があり、それによって一貫性も達成する。
【００５０】
例示の実施形態において、ユーザと関連付けられた複数のコンピューティングデバイス１２、１４のコアコンポーネント１６は、コアコンポーネントから同じユーザと関連付けられた他のコアコンポーネントの１つ以上のインスタンスに同期呼び出しを指示することによって同期される。同期呼び出しに応答して、オープンしている双方向性の同期ストリームは、同期すべきコアコンポーネントの間で維持することができる。それから、第１のコアコンポーネントは、そのキーと値のペアのすべてを（各キーと値のペアと関連付けられたタイムスタンプと共に）他のコアコンポーネント、すなわち、第２のコアコンポーネントに送信、例えばフラッシュする。それから、第２のコアコンポーネントは、受信されるキーと値のペアを記憶することによって、両方とも現在第２のコアコンポーネントによって記憶されているものと異なり、かつ現在第２のコアコンポーネントによって記憶されているもののタイムスタンプよりも最近のタイムスタンプと関連付けられている、キーと値のペアを更新する。キーと値のペアが更新されるが、第２のコアコンポーネントの以前のキーと値のペアは、それらのそれぞれのタイムスタンプと共に、そしていくつかの実施形態では、同期呼び出しに応答して確立された同期ストリームと関連付けられた識別子と共に記憶され続ける。例示の実施形態において、第２のコアコンポーネントはまた、更新の前に存在したそのキーと値のペアのすべてを（各キーと値のペアと関連付けられたタイムスタンプと共に）第１のコアコンポーネントに送信、例えばフラッシュし、第１のコアコンポーネントが次に、記載されている方法でそのキーと値のペアを更新する。このように、第１および第２のコアコンポーネントの両方は、最新のキーと値のペアと同期することができると共に、以前のタイムスタンプされたキーと値のペアも維持する。
【００５１】
コンピューティングデバイス１２、１４のコアコンポーネント１８の種々のインスタンスを同期させることによって、データは、サービスの複数のインスタンスの間で同期される。このように、システムは、１つ以上のコンピューティングデバイスがオフラインで動くとしても、オンラインのままである他のコンピューティングデバイスが同一データの最新版を含んでいるという点で、弾力的である。したがって、ユーザは、コンピューティングデバイスがオフラインになるときにシステムが適切に機能しなくなるという懸念なしに、将来オフラインとなり得る１つ以上のコンピューティングデバイスに頼ることができ、それは、他のコンピューティングデバイスがオンラインのままであり、オフラインコンピューティングデバイスによって利用されたはずのものと同じデータの最新版を同じサービスに提供することができるからである。
【００５２】
サービス１８は、単一のプロセスとして、例えば、エッジデバイス１２によって、または、別々のプロセスとして、ただしその間の通信によって同じコンピューティングデバイス上で動作するように実行することができる。またさらに、サービスは、別のコンピューティングデバイス、例えばクラウドコンピューティングデバイス１６によって実行されるプロセスを含むことができる。これらの実施形態では、プロセス間通信が提供されている。ｇＲＰＣ−Ｊａｖａ（登録商標）およびｇＲＰＣ−Ｓｗｉｆｔを含む種々のプロトコルが利用できる一方で、プロセス間通信がフラットバッファを有するｇＲＰＣによって一実施形態に従って提供される。ｇＲＰＣは認証ＳＳＬ／ＴＬＳまたはｏＡｕｔｈ２によるｈｔｔｐ／／２サポートを提供する。ＲＰＣは、双方向ストリーミング、クライアントとサーバ間のフローコントロールならびに同期および非同期ＲＰＣ呼び出しも提供もする。さらに、ｇＲＰＣは、ＲＰＣ（リモートプロシージャコール）呼び出しのキャンセルおよびタイムアウトを提供し、強靭で拡張可能な設計となっている。
【００５３】
例示の実施形態のコンピューティングデバイス１２、１４は、パイプラインおよびマイクロサービスを含む種々のタイプのサービス１８を提供することができる。パイプラインは、プロセッサ２０によって実施することができて、シーケンシャルな方法で実行されて値を生成するように構成された複数の計算を含む。パイプラインは、パイプラインによって生成される値がパイプラインの状態として維持されていることによってステートフルである。パイプラインを含むそれぞれのコンピューティングデバイスのコアコンポーネントは、パイプラインの状態を維持するように構成することができる。パイプラインがそれぞれのコンピューティングデバイスにより提供されるが、パイプラインは、複数のコンピューティングデバイスによってアクセスされることができ、たとえば登録されることができ、このことにより複数のコンピューティングデバイス用の共有リソースとして役立つ。
【００５４】
マイクロサービスに関して、位置情報サービスを含む様々な異なるサービスを提供するように構成された複数のマイクロサービスが利用できてもよい。パイプラインとは異なり、マイクロサービスはステートレスであり、その結果、マイクロサービスによって決定された以前の値の記録を維持せず、そのためマイクロサービスが実行される各時はマイクロサービスによって以前生成された値から独立している。マイクロサービスの１つの実施例は、タイルのキャッシュまたはマップされたデータの区画をエッジデバイス１２にローカルに維持してマップされたデータより高速かつオフラインのアクセスを可能にするように構成されたデータ記憶マイクロサービス３１を含む。図４に示すように、データ記憶マイクロサービスは、位置データベース３２からコンテンツをダウンロードして、キャッシュに登録するように構成されて、種々のアプリケーション３４、例えばマップレンダリング、ルーティング、ガイダンスなどと連動して利用される。
【００５５】
別の例示のマイクロサービスは、例えば、エッジデバイスによって実行されるナビゲーションアプリケーション３６にマップレンダリングサービスを提供する高度なレンダリングプラットフォームマイクロサービス３５である。いくつかの実施形態では、高度なレンダリングプラットフォームマイクロサービスは、点特徴、線特徴、領域特徴、道路、興味のある地点ならびに車両の現在位置を表すマーカーを含むリアルタイムマップを提供することができる。高度なレンダリングプラットフォームマイクロサービスの１つの例は図５において表され、その中で高度なレンダリングプラットフォームマイクロサービスはマップデータベース３７から、例えば後述するようにＮＤＳ（ナビゲーションデータ標準）アクセスマイクロサービス３８を介してマップデータをダウンロードする。マップデータに対する更新および車両の位置に対する更新は、コアマイクロサービス４０から登録ベースで提供することができる。
【００５６】
上記のように、分散型計算システム１０はまた、ＮＤＳデータへの集中化したアクセスを容易にして、ルーティングなどのためのメモリ内キャッシュを提供する、ＮＤＳアクセスマイクロサービス３８を含むこともができる。ＮＤＳデータは、マップレンダリング、マップマッチング、オンラインの速度制限などと関連したものを含む多くの他のマイクロサービスによって利用され得る。マイクロサービスの他の例は、１つ以上の用語に対してのマップまたはマップデータベースの検索などのフルテキストの検索を可能にする検索マイクロサービス、リアルタイム速度制限および気象情報をそれぞれ提供する、オンライン速度制限マイクロサービスおよび外部気象情報マイクロサービスがある。
【００５７】
コンピューティングデバイス１２、１４は、複数のコンピューティングデバイスにより提供される各サービスの位置を定めるためにリゾルバとして機能するように構成することもできる。この点に関しては、リゾルバは、それぞれのコンピューティングデバイスのメモリ２２によって実施することができて、各サービスの識別（例えば、名称）ならびに各サービス位置を記憶することができる。各サービスの位置は、汎用一意識別子（ＵＵＩＤ）として含まれる種々の方法で表すことができる。したがって、リゾルバは、キーおよび関連する値である各サービスの対応位置として役割を果たしている、各サービスの識別を有するキーと値の記憶として実施することができる。リゾルバは他のコンピューティングデバイスに対して各サービスの位置を公開することができるか、または、他のコンピューティングデバイスが各サービスの位置をリゾルバから要求することができる。位置情報に基づいて、各サービスは、サービスの位置がアクセス可能である限り、コンピューティングデバイスによって位置検出することができて、コンピューティングデバイスによって利用することができる。いくつかの実施形態では、ルートリゾルバなどのリゾルバはまた、サービスがオンラインかオフラインであるかどうかを識別する情報を含み、それによってサービスのアクセス可能性に関する追加情報を提供する。
【００５８】
サービスではないが、例示の実施形態の分散型計算システム１０は、マンマシンインタフェース（ＨＭＩ）を実装するために、通常は間接的に追加ビジネスロジックを介して、１つ以上のサービスとインタフェースをとるためにコンピューティングデバイス１２、１４によって実施されるマンマシンインタフェースコントローラを含むこともできる。図６に示すように、例えば、ＨＭＩインタフェース４２は、ビジネスロジック、例えばレンダリングコントローラサービス４８、ルーティングコントローラサービス５０およびガイダンスコントローラサービス５２をそれぞれ介して、高度なレンダリングプラットフォームマイクロサービス３４、ルーティングマイクロサービス４４およびガイダンスマイクロサービス４６と対話することができる。アプリケーションは、任意の追加ビジネスロジックと共にコアコンポーネント１８および１つ以上のサービス、例えばパイプラインおよび／または１つ以上のマイクロサービスによって定義することができる。前述の例において、ルーティングマイクロサービスおよびガイダンスマイクロサービスは、関連するコアコンポーネントと共に、アプリケーションとして配置することができる。この例示の実施形態において、それぞれのコンピューティングデバイスのコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。
【００５９】
分散型計算システム１０の更なる例証として、図７は、パイプラインおよび／またはマイクロサービスなどの複数のサービス１８を表し、それは例えば、マップ、ルーティング、モビリティ、ローカル検索、交通、ガイダンス、ポジショニング、屋内マップおよびコネクテッド車両サービスに加えて、コアコンポーネント１６の上で動作して対話する種々のツールである。サービスは、パイプラインの中などに統合することができて、比較的単純なナビゲーションソリューションから車両内情報エンターテインメント（ＩＶＩ）システムに対するトラッキングソリューションまで、様々な異なる種類のサービスを提供する。コアコンポーネントは、例えば、通信スタックの維持、ＮＤＳデータサーバに対するアクセスを含んだ位置データベースに対するアクセス、状態共有、共有メモリ通信、一時的な状態の確立、グローバル状態キャッシュの持続、維持、データ事前ロード、データアクセス、着信データのフィルタリングおよび／またはデータ融合のうち１つ以上を含む、複数の異なる機能を提供することができる。位置情報サービスのために、コアコンポーネントは、現実インデックスベース（ＲＩＢ）またはＮＤＳを含む種々のベースのいずれかに従って作動することができる。位置データベースへのアクセスを容易にすることに加えて、コアコンポーネントは、１つ以上のネットワーク５４、例えば外部通信のために他のデバイスおよび／または外部リソースなどへのアクセスを容易にすることができる。この点に関しては、種々の外部サービスおよびツール５６が交通、レンダリング、衛星画像化などのために提供されることができ、それは、１つ以上の外部のデータソース５８に依存してもよい。
【００６０】
別の実施形態によれば、車両に搭載して提供される位置情報サービスをカスタマイズするためのシステム、方法およびコンピュータプログラム製品が提供される。システムは、例えば、図２に表すようにコンピューティングデバイスによって実施することができる。図８を次に参照すると、本発明の例示の実施形態に従って車両に搭載して提供される位置情報サービスをカスタマイズするために、例えば図２のコンピューティングデバイスによって実行される動作が、示されている。多くのユーザ選択が、最初に受信されてもよい。ブロック６０に示すように、例えば、コンピューティングデバイスは、車両のハードウェア能力のユーザ選択を受信するための手段、例えばプロセッサ２０、ユーザインタフェース２４などを含む。ハードウェア能力は異なる方法で定めることができるが、一実施形態においては、車両がクラスタ、中級ハードウェアまたは高級ハードウェアを含むかに関するユーザ選択が受信される。図９で表される例示の実施形態において、システム７０は、車両のハードウェア能力のオプションをユーザに示して、それに応じてユーザ選択を受信するために、少なくとも１つのプロセッサによって駆動されるユーザインタフェース、例えばディスプレイ７２を含むことができる。
【００６１】
ハードウェア能力に基づいて、例示の車両のコックピット７４は変化する。クラスタが選択される例では、クラスタディスプレイ７６は車両の速度を示すダイヤルを単に含む。中級のハードウェア能力が選択される例では、コックピットのヘッドユニットディスプレイ７８は適度なサイズであって、クラスタディスプレイは速度および他の車両のパラメータのためのダイヤルの標準セットを含む。高級なハードウェア能力が選択される例では、ヘッドユニットディスプレイはより大きくより高度で、クラスタディスプレイは追加機能によって、よりデジタル化される。したがって、ユーザは、それらの初期選択の結果を短時間で視覚化することができる。
【００６２】
図８のブロック６２に示すように、コンピューティングデバイスは、車両を構成する１つ以上のサービスのユーザ選択を受信するように構成された、プロセッサ２０、ユーザインタフェース２４などの手段を含む。パイプラインまたはマイクロサービスなどのサービスの少なくとも１つは、位置情報サービスを提供するように構成される。例えば、サービスの例には、マップのディスプレイ、ユーザの位置がマップ上に識別されるマップマッチング、位置検索機能、ルーティング、ガイダンスおよび交通関連情報の提供が含まれ得る。前述のように、例示の実施形態のプロセッサは、ディスプレイ７２に、複数の利用できるサービスを提示させ、それからサービスの１つ以上のユーザ選択を受信させることができる。
【００６３】
サービスの少なくとも一部のために、コンピューティングデバイスはまた、それぞれのサービスがエッジデバイス１２によって実行されるか、または、クラウドコンピューティングデバイス１４によって実行されるかに関するユーザ選択を受信するように構成された、プロセッサ２０、ユーザインタフェース２４などの手段を含む。図８のブロック６４を参照する。このことに関しては、例示の実施形態のプロセッサは、ディスプレイ７２にコンピューティングデバイスのユーザ選択が利用できるサービスを列挙させることができる。列挙されたサービスのために、エッジデバイスまたはクラウドコンピューティングデバイスのオプションが提示されてもよく、次に、それぞれのサービスを実行するコンピューティングデバイスのユーザ選択は受信することができる。いくつかの実施形態では、少なくとも１つの、また、より典型的にはすべてのエッジデバイスは、車両に搭載され、例えば、車両に搭載されたナビゲーションシステムによって提供されてもよい。したがって、エッジデバイスによって実行されるサービスのための選択によって、サービスは、同じサービスがクラウドコンピューティングデバイスによって提供される場合よりも、さらに素早く応答して動作することが可能となり得る。しかしながら、車両に搭載されたエッジデバイスによるそれぞれのサービスの実行は、同じサービスがクラウドコンピューティングデバイスによって実行された場合よりも、車両に搭載した処理および／またはメモリリソースなどの追加ハードウェアリソースを一般に必要とする。したがって、中級のハードウェア能力が選択される例では、サービスのいくつかはクラウドコンピューティングデバイスによって実行されることが必要であり得る一方で、限定された数のサービスだけがエッジデバイスによる実行のために選択されることが可能である。
【００６４】
サービスがエッジデバイス１２によって実行されるか、または、クラウドコンピューティングデバイス１４によって実行されるかに関するユーザ選択が一旦受信されていると、コンピューティングデバイスは、それぞれのサービスがエッジデバイスによって実行されるか、または、クラウドコンピューティングデバイスによって実行されるかに基づいてフィードバックを提供するように構成された、プロセッサ２０、ユーザインタフェース２４などの手段含む。ブロック６６を参照する。このことに関しては、フィードバックは、それぞれのサービスがエッジデバイスよって実行されるかクラウドコンピューティングデバイスによって実行されるかに依存する。種々のタイプのフィードバックは、例えば、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する１つ以上のパラメータを含んでいる、ハードウェアコンポーネントの利用およびモバイルデータの消費に関して提供することができる。このことに関しては、プロセッサ使用状況およびメモリ使用状況は、エッジデバイスによって実行されるように選択されるサービスによって消費されるエッジデバイスの、処理リソースおよびメモリリソースのパーセントまたは総量に関連し得る。モバイルデータ消費は、クラウドコンピューティングデバイスに対する１つ以上のサービスの実行をオフロードするために車両とクラウドコンピューティングデバイスの間送信されるデータの総量を指すことができる。種々のパラメータを含むフィードバックをレビューすることによって、ユーザは、ハードウェア使用状況およびデータ消費に関して情報を集めることが可能であり、いくつかの実施形態では、対応するパラメータを変更するために異なるコンピューティングデバイスによって実行される１つ以上のサービスを有するように、それらの選択を変更することができる。
【００６５】
一旦構成されると、ユーザは１つ以上のサービスによって構成された車両のコックピットに入ることができる。図９において、表される例示の実施形態において、ユーザはサンプルコックピット７４に入って、ユーザが構成した車両のシミュレーションされたバージョンをプレビューすることができる。あるいは、ユーザは、それらの選択に従って構成された実際の車両のコックピットに入ることができる。したがって、コンピューティングデバイスはまた、データを共有してコアコンポーネントを同期させるために、１つ以上のサービスならびに他のコンピューティングデバイスのコアコンポーネントと通信するように構成された、プロセッサ２０、通信インタフェース２６などの手段を含む。このことに関しては、例示の実施形態のコンピューティングデバイスは、異なるコンピューティングデバイスによって実装されることができるようなサービスの複数のインスタンスの間でデータを同期させるように構成された、プロセッサ、通信インタフェース２６などの手段を含む。この例示の実施形態のコンピューティングデバイスはまた、ユーザによって選択された少なくとも１つのサービスの状態を記憶するように構成された、プロセッサ、メモリ２２などの手段を含む。状態は、選択された少なくとも１つのサービスの実行後に選択されたサービスと関連したコアコンポーネントに記憶される。例えば、記憶される状態は、パイプラインまたはマイクロサービスなどのサービスの実行によって生成される値でもよい。一旦記憶されると、コアコンポーネントは、他のコアコンポーネントがサービスの状態によって更新されるように、他のコアコンポーネントと同期させることができる。
【００６６】
一旦使用状態となり、位置情報サービスを提供するように構成されたサービスなどのサービスの１つ以上の実行後に、コンピューティングデバイスは、ハードウェア使用状況およびデータ消費に関する追加のフィードバックを提供するように構成されたプロセッサ２０、ユーザインタフェース２４などの手段を含み、一実施形態においては、図８のブロック６６と共に上述した構成プロセスの間に提供される、予想されたか推定された使用状況と対照的に実際の使用状況に基づいた、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する、１つ以上のパラメータを提供することができる。実際の使用状況からのこのフィードバックに基づいて、ユーザは、ハードウェアの消費および／またはデータ使用状況を変更するために、選択されたサービスおよび／またはサービスを実行するコンピューティングデバイスを再構成することができる。
【００６７】
一旦車両の初期構成に続いて使用状態になると、コンピューティングデバイスは、一実施形態において、さらに車両を構成する、パイプラインおよび／またはマイクロサービスなどの１つ以上の追加のサービスのユーザ選択を受信するように構成された、プロセッサ２０、ユーザインタフェース２４、通信インタフェース２６などの手段を含む。例えば、通信インタフェースなどのコンピューティングデバイスは、ユーザによる選択時に、１つ以上の追加のサービスを提供するサービス市場８０へのユーザによるアクセスを可能にしてもよい。このことに関しては、プロセッサは、サービス市場から追加のサービスのリストを取得して、ユーザによる選択のためにディスプレイなどのユーザインタフェースにリストを提示するように構成することができる。１つ以上の追加のサービスの選択に基づいて、コンピューティングデバイスは、ユーザから要求して、サービスを実行するエッジデバイス１２またはクラウドコンピューティングデバイス１４などのコンピューティングデバイスのユーザによる選択を受信するように構成された、プロセッサ、ユーザインタフェースなどの手段を含み、次にユーザ選択に従ってサービスを展開することができる。したがって、位置情報サービスを含んで車両に搭載されて提供されるサービスは、車両の初期構成後にさらに適応することができ、このことによりさらに、車両が位置情報サービスによって構成することができる柔軟性を増加させる。
【００６８】
一実施形態において、ルーティングマイクロサービスは、起点から目的地までのルートを定めるために実行することができる。車両用のルートの確立と同時に、ＱＲコード（登録商標）などのコードまたはユニフォームリソースロケータ（ＵＲＬ）などのリンクが提供され得る。例えば、コードまたはリンクは、マップと共にディスプレイ７８に提示することができる。コードまたはリンクは、別のコンピューティングデバイス、例えば移動電話、タブレット型コンピュータ、スマートウォッチ、スマートグラスなどに提供されてもよい。例えば、ＱＲコード（登録商標）は他のコンピューティングデバイスによってスキャンすることができ、または、リンクは他のコンピューティングデバイスのブラウザに入力することができる。コードまたはリンクに基づいて、他のコンピューティングデバイスは、ルートにアクセスすることができ、そして、ルートを変更すること、目的地を変更すること、中間地点を追加することなどによって、ルートが再構成されるのを可能にすることができる。その後で、再構成されたルートは他のコンピューティングデバイスによってルーティングマイクロサービスに伝えることができて、ルーティングマイクロサービスによって示されるルートはそれに応じて、再構成されたルートと整合した方法で更新することができる。
【００６９】
上述のように、図８は、本発明の例示の実施形態による、システム、方法、およびコンピュータプログラム製品のフローチャートを示す。フローチャートの各ブロックおよびフローチャートのブロックの組合せが種々の手段、例えば、１つ以上のコンピュータプログラム命令を含むソフトウェアの実行と関連したハードウェア、ファームウェア、プロセッサ、回路および／または他の通信装置によって実装され得ることが理解されよう。例えば、上記の手順の１つ以上は、コンピュータプログラム命令によって実施することができる。このことに関しては、上記の手順を実施するコンピュータプログラム命令は、本発明の実施形態を用いたコンピューティングデバイスのメモリデバイス２２によって記憶されることができて、コンピューティングデバイスのプロセッサ２０によって実行することができる。理解されるように、いずれのこのようなコンピュータプログラム命令もコンピュータまたは他のプログラム可能な装置（例えば、ハードウェア）上にロードして、マシンを作ることができ、それにより、結果として得られるコンピュータまたは他のプログラマブルな装置がフローチャートブロックで指定されている機能を実装する。これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能な装置に特定の方法で機能するように指示することができるコンピュータ可読メモリに記憶することもでき、それにより、コンピュータ可読メモリに記憶された命令は、その実行がフローチャートブロックで指定されている機能を実施する製品を作り出す。コンピュータプログラム命令は、コンピュータまたは他のプログラム可能な装置にロードすることもできて、一連の動作がコンピュータまたは他のプログラム可能な装置で実行されるようにして、コンピュータ実施のプロセスを生じさせ、その結果、コンピュータまたは他のプログラム可能なデータ処理装置上で実行する命令が、フローチャートブロックで指定された機能を実施するための動作を提供する。
【００７０】
したがって、フローチャートのブロックは指定された機能を実行するための手段の組み合わせおよび指定された機能を実行するための動作の組み合わせをサポートする。フローチャートの１つ以上のブロックおよびフローチャートのブロックの組合せが、指定された機能を実行する特殊目的ハードウェアベースのコンピュータシステムまたは、特殊目的ハードウェアおよびコンピュータ命令の組合せによって実装されることができることも理解されよう。
【００７１】
いくつかの実施形態では、上記の動作の特定のものは、修正することができるかまたはさらに拡大することができる。さらに、いくつかの実施形態では、追加の任意選択の動作を含めることができて、それのいくつかは上で記載されている。上記の動作に対する修正、追加または拡大は、いかなる順序においても、そして、いかなる組合せでも実行することができる。
【００７２】
本明細書において記載される本発明の多くの修正および他の実施形態は、これらの発明が関係する当業者には、前述の説明および関連する図面に示された教示の利益を有することが思い浮かぶであろう。したがって、本発明が開示される特定の実施形態に限られておらず、修正および他の実施形態が添付の請求の範囲に含まれることを意図することを理解すべきである。更に、前述の説明および関連する図面が要素および／または機能の特定の例示の組合せの前後関係における例示の実施形態を説明するが、異なる要素の組合せおよび／または機能が添付の請求の範囲の要旨を逸脱しない範囲で代替実施形態によって提供されてもよいことが理解されるべきである。このことに関しては、例えば、上記で明示的に説明されたものとは異なる要素および／または機能の組合せも、添付の請求の範囲のいくつかに記載されるように意図されている。特定の用語が本願明細書において使用されていても、それらは一般的および説明的な意味においてだけ使われるものであり、限定の目的ではない。
【図１】
2021510867.tif 000003
【図２】
2021510867.tif 000004
【図３】
2021510867.tif 000005
【図４】
2021510867.tif 000006
【図５】
2021510867.tif 000007
【図６】
2021510867.tif 000008
【図７】
2021510867.tif 000009
【図８】
2021510867.tif 000010
【図９】
2021510867.tif 000011
【国際調査報告】
2021510867.tif 000012
2021510867.tif 000013