IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ジーボ インコーポレーテッドの特許一覧

特表2022-535631異なるオペレーティングシステムのアプリケーション間で再利用可能なコードを有効にするためのシステムおよび方法
<>
  • 特表-異なるオペレーティングシステムのアプリケーション間で再利用可能なコードを有効にするためのシステムおよび方法 図1
  • 特表-異なるオペレーティングシステムのアプリケーション間で再利用可能なコードを有効にするためのシステムおよび方法 図2
  • 特表-異なるオペレーティングシステムのアプリケーション間で再利用可能なコードを有効にするためのシステムおよび方法 図3
  • 特表-異なるオペレーティングシステムのアプリケーション間で再利用可能なコードを有効にするためのシステムおよび方法 図4
  • 特表-異なるオペレーティングシステムのアプリケーション間で再利用可能なコードを有効にするためのシステムおよび方法 図5
  • 特表-異なるオペレーティングシステムのアプリケーション間で再利用可能なコードを有効にするためのシステムおよび方法 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-08-10
(54)【発明の名称】異なるオペレーティングシステムのアプリケーション間で再利用可能なコードを有効にするためのシステムおよび方法
(51)【国際特許分類】
   G06F 15/00 20060101AFI20220803BHJP
   G06F 8/36 20180101ALI20220803BHJP
【FI】
G06F15/00 470
G06F8/36
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021509897
(86)(22)【出願日】2019-09-12
(85)【翻訳文提出日】2021-04-19
(86)【国際出願番号】 US2019050873
(87)【国際公開番号】W WO2020041804
(87)【国際公開日】2020-02-27
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】518238621
【氏名又は名称】ジーボ インコーポレーテッド
【氏名又は名称原語表記】XEVO INC.
【住所又は居所原語表記】10900 NE 8th Street, Suite 800, Bellevue, WA 98004 United States of America
(74)【代理人】
【識別番号】110002664
【氏名又は名称】特許業務法人ナガトアンドパートナーズ
(72)【発明者】
【氏名】ハーター, グレン アール.
(72)【発明者】
【氏名】スペア, ジュニア, スティーブン ケー.
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC11
5B376BC23
5B376FA13
(57)【要約】
異なるオペレーティングシステムのアプリケーション間で再利用可能なコードセクションの使用を可能にするための方法およびシステム。第1のオペレーティングシステム(「OS」)用に設計された第1のアプリケーションの場合、第1のネイティブコードセクションおよび再利用可能なコードセクションは、第1のアプリケーションの一部として定義される。第2のOS用に設計された第2のアプリケーションの場合、第2のネイティブコードセクションおよび再利用可能なコードセクションは、第2のアプリケーションの一部として定義され、第2のアプリケーションは、第1のOS上で実行できない。第1および第2のネイティブコードセクションは、ウェブサービスサーバと通信し、ウェブサービスサーバは、複数のバックエンドサービスサーバと通信し、複数のバックエンドサービスサーバのうちの少なくとも一部は、異なるエンティティによって制御される。ウェブサービスサーバは、第1および第2のアプリケーションに代わってバックエンドサービスサーバとのサービス要求の実行を調整する。再利用可能なコードセクションは、第1および第2のアプリケーションが実行されたときにユーザインターフェース要素の表示を容易にする。
【選択図】図5
【特許請求の範囲】
【請求項1】
異なるオペレーティングシステムのアプリケーション間で再利用可能なコードの使用を可能にするための方法であって、
第1のオペレーティングシステム用に設計された第1のアプリケーションの場合、第1のネイティブコードセクションを前記第1のアプリケーションの一部として定義することであって、前記第1のネイティブコードセクションが、ウェブサービスサーバと通信するように構成され、前記ウェブサービスサーバが、複数のバックエンドサービスサーバと通信するように構成され、前記複数のバックエンドサービスサーバのうちの少なくとも一部が、異なるエンティティによって制御される、定義することと、
前記第1のアプリケーションの場合、前記第1のアプリケーションの一部として再利用可能なコードセクションを定義することであって、前記再利用可能なコードセクションは、前記第1のアプリケーションが前記第1のオペレーティングシステム上で実行されるときに1つ以上の所定のユーザインターフェース要素の表示を容易にするように構成される、定義することと、
第2のオペレーティングシステム用に設計され、前記第1のオペレーティングシステム上で実行することができない第2のアプリケーションの場合、第2のネイティブコードセクションを前記第2のアプリケーションの一部として定義することであって、前記第2のネイティブコードセクションが、前記ウェブサービスサーバと通信するように構成される、定義することと、
前記第2のアプリケーションの一部として前記第1のアプリケーション用に定義された前記再利用可能なコードセクションを実装することであって、前記再利用可能なコードセクションは、前記第2のアプリケーションが前記第2のオペレーティングシステム上で実行されるときに前記所定のユーザインターフェース要素の前記表示を容易にするように構成される、実装することと、を含む、方法。
【請求項2】
前記第1のアプリケーションと前記ウェブサービスサーバとの間、および前記第2のアプリケーションと前記ウェブサービスサーバとの間の交換のための共通の通信セットを定義することをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のネイティブコードセクションを定義することが、前記第1のアプリケーションと前記ウェブサービスサーバとの間の通信を容易にするように構成された通信セクションを含むように前記第1のネイティブコードセクションを定義することをさらに含む、請求項1に記載の方法。
【請求項4】
前記第1のネイティブコードセクションを定義することが、前記第1のアプリケーションと車両のヘッドユニットとの間の通信を容易にするように構成されたヘッドユニットセクションを含むように前記第1のネイティブコードセクションを定義することをさらに含む、請求項3に記載の方法。
【請求項5】
前記第2のネイティブコードセクションを定義することが、前記第2のアプリケーションと前記ウェブサービスサーバとの間の通信を管理するように構成された通信セクションを含むように前記第2のネイティブコードセクションを定義することをさらに含む、請求項1に記載の方法。
【請求項6】
前記第2のネイティブコードセクションを定義することが、前記第2のアプリケーションと車両のヘッドユニットとの間の通信を容易にするように構成されたヘッドユニットセクションを含むように前記第2のネイティブコードセクションを定義することをさらに含む、請求項5に記載の方法。
【請求項7】
前記再利用可能なコードセクションは、前記第1のアプリケーションが第1のスマートフォンの前記第1のオペレーティングシステム上で実行されたとき、および前記第2のアプリケーションが第2のスマートフォンの前記第2のオペレーティングシステム上で実行されたとき、車両のヘッドユニット上への前記所定の要素の前記表示を容易にするようにさらに構成される、請求項1に記載の方法。
【請求項8】
前記第1のアプリケーションは、ユーザが前記バックエンドサービスサーバのうちの1つ以上によって提供されるサービスを選択できるように構成され、前記選択されたサービスに関連する通信を前記ウェブサービスサーバのみと交換するようにさらに構成される、請求項1に記載の方法。
【請求項9】
前記ウェブサービスサーバが、前記第1のアプリケーションに代わって、前記ウェブサービスサーバ自体と前記バックエンドサービスサーバとの間の前記選択されたサービスに関連する通信の前記交換を管理するように構成される、請求項8に記載の方法。
【請求項10】
通信交換を管理する方法であって、
共通のプロトコルを介して第1のアプリケーションから、1つ以上のバックエンドサービスサーバによって実行されるバックエンドサービスの要求を受信することであって、前記第1のアプリケーションが、製造業者によって制御され、第1のオペレーティングシステム上で実行されるように設計され、前記バックエンドサービスが、前記製造業者が製造した車両の遠隔制御操作に関連する、受信することと、
前記バックエンドサービスの前記第1のアプリケーションからの前記要求の実行を担当する前記バックエンドサービスサーバを識別することと、
前記第1のアプリケーションからの前記要求の前記実行を、前記第1のアプリケーションに代わって前記バックエンドサービスサーバと調整することと、
前記バックエンドサービスに対する前記第1のアプリケーションからの前記要求が完了したかどうかを指示するために、前記共通のプロトコルを介して前記第1のアプリケーションに信号送信することと、
前記共通のプロトコルを介して第2のアプリケーションから、前記バックエンドサービスサーバによって実行される前記バックエンドサービスの要求を受信することであって、前記第2のアプリケーションが、前記製造業者によって制御され、第2のオペレーティングシステム上で実行されるように設計され、前記第2のアプリケーションが、前記第1のオペレーティングシステムと互換性がなく、前記第1のアプリケーションが、前記第2のオペレーティングシステムと互換性がない、受信することと、
前記バックエンドサービスの前記第2のアプリケーションからの前記要求の実行を担当する前記バックエンドサービスサーバを識別することと、
前記第2のアプリケーションからの前記要求の前記実行を、前記第2のアプリケーションに代わって前記バックエンドサービスサーバと調整することと、
前記バックエンドサービスに対する前記第2のアプリケーションからの前記要求が完了したかどうかを指示するために、前記共通のプロトコルを介して前記第2のアプリケーションに信号送信することと、を含む、方法。
【請求項11】
前記第2のアプリケーションからの前記要求の前記実行を前記バックエンドサービスサーバと調整することが、前記第2のアプリケーションからの前記要求の前記実行を、前記第2のアプリケーションに代わって前記バックエンドサービスサーバと調整することと同時に、前記第1のアプリケーションからの前記要求の前記実行を、前記第1のアプリケーションに代わって前記バックエンドサービスサーバと調整することをさらに含む、請求項10に記載の方法。
【請求項12】
前記共通のプロトコルが、前記製造業者に専有の1つ以上の拡張を含む、請求項10に記載の方法。
【請求項13】
前記バックエンドサービスサーバが、互いに異なり、前記共通のプロトコルとは異なる通信のためのプロトコルに依存する、請求項10に記載の方法。
【請求項14】
前記第1のアプリケーションからの前記要求の前記実行を、前記第1のアプリケーションに代わって前記バックエンドサービスサーバと調整することが、前記第1のアプリケーションからの前記要求の前記実行を、前記第1のアプリケーションに代わって前記バックエンドサービスサーバの前記異なるプロトコルを介して前記バックエンドサービスサーバと調整することをさらに含み、
前記第2のアプリケーションからの前記要求の前記実行を、前記第2のアプリケーションに代わって前記バックエンドサービスサーバと調整することが、前記第2のアプリケーションからの前記要求の前記実行を、前記第2のアプリケーションに代わって前記バックエンドサービスサーバの前記異なるプロトコルを介して前記バックエンドサービスサーバと調整することを含む、請求項13に記載の方法。
【請求項15】
前記第1のアプリケーションは、前記第1のアプリケーションが前記第1のオペレーティングシステム上で実行されるときに、前記製造業者に関連する1つ以上の所定のユーザインターフェース要素の表示を容易にするように構成された再利用可能なコードセクションを備え、
前記第2のアプリケーションが、前記再利用可能なコードセクションを備え、前記再利用可能なコードセクションは、前記第2のアプリケーションが前記第2のオペレーティングシステム上で実行されるときに、前記製造業者に関連する前記所定のユーザインターフェース要素の前記表示を容易にするように構成される、請求項10に記載の方法。
【請求項16】
前記第1のアプリケーションが、前記バックエンドサービスに対する前記第1のアプリケーションからの前記要求の生成を前記バックエンドサービスサーバによって実行させるように構成された第1のネイティブコードセクションをさらに備え、
前記第2のアプリケーションが、前記バックエンドサービスに対する前記第2のアプリケーションからの前記要求の生成を前記バックエンドサービスサーバによって実行させるように構成された第2のネイティブコードセクションをさらに備える、請求項15に記載の方法。
【請求項17】
製造業者によって製造された車両の遠隔制御操作に関連するバックエンドサービスの要求を容易にするためのシステムであって、
第1のオペレーティングシステム上で実行するように設計された複数のアプリケーションおよび第2のオペレーティングシステム上で実行するように設計された複数のアプリケーションから前記バックエンドサービスの要求を受信するように構成されたネットワークインターフェースカードであって、
前記第1のオペレーティングシステムの前記アプリケーションが、前記第2のオペレーティングシステムと互換性がなく、前記第2のオペレーティングシステムの前記アプリケーションが、前記第1のオペレーティングシステムと互換性がなく、
前記ネットワークインターフェースカードが、共通のプロトコルを介して前記第1のオペレーティングシステムの前記アプリケーションおよび前記第2のオペレーティングシステムの前記アプリケーションからの前記要求を受信するようにさらに構成されており、
前記第1のオペレーティングシステムの前記アプリケーションおよび前記第2のオペレーティングシステムの前記アプリケーションが、前記製造業者に関連する共通のユーザインターフェース要素の前記表示を容易にするように構成された再利用可能なコードセクションを共有する、ネットワークインターフェースカードと、
前記ネットワークインターフェースカードに通信可能に結合されたプロセッサであって、
第1のプロトコルを介して第1のバックエンドサービスサーバと通信することと、
第2のプロトコルを介して第2のバックエンドサービスサーバと通信することであって、前記第1のプロトコルおよび前記第2のプロトコルが、互いに異なり、前記共通のプロトコルとも異なる、通信することと、
前記第1のオペレーティングシステムの前記アプリケーションからの前記要求の実行を、前記第1のプロトコルを介して前記第1のバックエンドサービスサーバと、および前記第2のプロトコルを介して前記第2のバックエンドサービスサーバと調整することと、
前記第2のオペレーティングシステムの前記アプリケーションからの前記要求の実行を、前記第1のプロトコルを介して前記第1のバックエンドサービスサーバと、および前記第2のプロトコルを介して前記第2のバックエンドサービスサーバと調整することと、
前記共通のプロトコルを介して前記第1のオペレーティングシステムの前記アプリケーションに、前記バックエンドサービスの要求のステータスの指示を信号送信することと、
前記共通のプロトコルを介して前記第2のオペレーティングシステムの前記アプリケーションに、前記バックエンドサービスの要求の前記ステータスの指示を信号送信することと、を行うように構成された、プロセッサと、を備える、システム。
【請求項18】
前記第1のオペレーティングシステムの前記アプリケーションが、前記共通のプロトコルを介して前記システムによって受信されるように前記バックエンドサービスの前記要求を生成するように構成された第1のネイティブコードセクションを含み、
前記第2のオペレーティングシステムの前記アプリケーションが、前記共通のプロトコルを介して前記システムによって受信されるように前記バックエンドサービスの前記要求を生成するように構成された第2のネイティブコードセクションを含む、請求項17に記載のシステム。
【請求項19】
前記共通のプロトコルが、前記製造業者に専有の拡張を含む、請求項17に記載のシステム。
【請求項20】
前記第1のバックエンドサービスサーバまたは前記第2のバックエンドサービスサーバからの情報をキャッシュするように構成されたメモリをさらに備え、前記プロセッサが、前記第1のオペレーティングシステムの前記アプリケーション、または前記メモリから前記キャッシュされた情報を取得することによる前記第2のオペレーティングシステムの前記アプリケーションからの前記要求のうちのいくつかに応答するようにさらに構成されている、請求項17に記載のシステム。
【請求項21】
製造業者によって製造された車両の遠隔制御操作に関連するバックエンドサービスの要求を容易にするためのシステムであって、
第1のオペレーティングシステム上で実行するように設計された複数のアプリケーション、および前記第1のオペレーティングシステムと互換性のない第2のオペレーティングシステム上で実行するように設計された複数のアプリケーションから前記バックエンドサービスの要求を受信するための手段であって、
前記第1のオペレーティングシステムの前記アプリケーションおよび前記第2のオペレーティングシステムの前記アプリケーションからの前記要求が、共通のプロトコルを介して受信され、
前記第1のオペレーティングシステムの前記アプリケーションおよび前記第2のオペレーティングシステムの前記アプリケーションが、前記製造業者に関連する共通のユーザインターフェース要素の表示を容易にするように構成された再利用可能なコードセクションを共有する、受信するための手段と、
第1のプロトコルを介して第1のバックエンドサービスサーバと通信し、第2のプロトコルを介して第2のバックエンドサービスサーバと通信するための手段であって、前記第1のプロトコルおよび前記第2のプロトコルが、互いに異なり、前記共通のプロトコルとも異なる、通信するための手段と、
前記第1のオペレーティングシステムの前記アプリケーションからの前記要求の実行を、前記第1のプロトコルを介して前記第1のバックエンドサービスサーバと、および前記第2のプロトコルを介して前記第2のバックエンドサービスサーバと調整し、前記第2のオペレーティングシステムの前記アプリケーションからの前記要求の実行を、前記第1のプロトコルを介した前記第1のバックエンドサービスサーバと、および前記第2のプロトコルを介した前記第2のバックエンドサービスサーバと調整するための手段と、
前記共通のプロトコルを介して前記第1のオペレーティングシステムの前記アプリケーションに、前記バックエンドサービスの要求のステータスの指示を信号送信し、前記共通のプロトコルを介して前記第2のオペレーティングシステムの前記アプリケーションに、前記バックエンドサービスの要求の前記ステータスの指示を信号送信するための手段と、を備える、システム。
【請求項22】
前記第1のオペレーティングシステムの前記アプリケーションが、前記共通のプロトコルを介して前記システムによって受信されるように前記バックエンドサービスの前記要求を生成するように構成された第1のネイティブコードセクションを含み、
前記第2のオペレーティングシステムの前記アプリケーションが、前記共通のプロトコルを介して前記システムによって受信されるように前記バックエンドサービスの前記要求を生成するように構成された第2のネイティブコードセクションを含む、請求項21に記載のシステム。
【請求項23】
前記第1のバックエンドサービスサーバまたは前記第2のバックエンドサービスサーバからの情報をキャッシュするための手段と、前記キャッシュされた情報を取得することによって、前記第1のオペレーティングシステムの前記アプリケーションまたは前記第2のオペレーティングシステムの前記アプリケーションからの前記要求に応答するための手段と、をさらに備える、請求項21に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、アプリケーションとバックエンドサービスとの間の通信をサポートするシステムに関する。
【背景技術】
【0002】
多くの自動車製造業者は、製造業者または関連する第三者が提供するバックエンドサービスにアクセスするために顧客がアプリをダウンロードできるようにするために、アプリケーションまたはアプリを顧客に提供している。例えば、車の所有者は、所有者のスマートフォンを介してそのようなアプリにアクセスし、所有者の車両のロック解除を遠隔ですることができる。これらのモバイルアプリは一般に、2つの異なるオペレーティングシステム(「OS」)(1)カリフォルニア州CupertinoのApple Inc.によって作成されたiOS(IOS(登録商標))および(2)カリフォルニア州Mountain ViewのGoogle Inc.によって開発されたAndroid(商標)のうちの1つで機能するように設計されている。
【0003】
この設定でのモバイルアプリの設計は、所有者が開始したタスクを実行するために、各々が異なる会社によって運営されている複数のバックエンドサービスと通信する必要がある場合があるため、複雑になることがよくある。さらに、製造業者は、iOSアプリ専用の開発チームとAndroidアプリ用の別個の開発チームを維持する必要がある。この複雑さとスタッフの増員の必要性は、バックエンドサービスの量、およびそれらを提供するために協力して運営している会社の数が増加するにつれて、さらに悪化する。複数のブランド(または型)の車両を提供する製造業者は、この非効率的な構成によってさらに負担をかけられる。
【発明の概要】
【0004】
本明細書では、異なるオペレーティングシステム(「OS」)のアプリケーション間で再利用可能なコードの使用を可能にするための方法が説明される。第1のOS用に設計された第1のアプリケーションの場合、第1のネイティブコードセクションを第1のアプリケーションの一部として定義し、第1のネイティブコードセクションをウェブサービスサーバと通信するように構成することができる。ウェブサービスサーバは、複数のバックエンドサービスサーバと通信するように構成することができ、そのうちの少なくとも一部は、異なるエンティティによって制御され得る。再利用可能なコードセクションはまた、第1のアプリケーションの一部として定義することもでき、再利用可能なコードセクションは、第1のアプリケーションが第1のOS上で実行されるときに、1つ以上の所定のユーザインターフェース(「UI」)要素の表示を容易にするように構成することができる。
【0005】
第2のOS用に設計され、第1のOS上で実行できない第2のアプリケーションの場合、第2のネイティブコードセクションを第2のアプリケーションの一部として定義し、第2のネイティブコードセクションは、ウェブサービスサーバと通信するように構成することができる。第1のアプリケーション用に定義された再利用可能なコードセクションは、第2のアプリケーションの一部として実装できる。再利用可能なコードセクションは、第2のアプリケーションが第2のオペレーティングシステム上で実行されるときに、所定のUI要素の表示を容易にするように構成されてもよい。オプションとして、第1のアプリケーションとウェブサービスサーバとの間、および第2のアプリケーションとウェブサービスサーバとの間の交換用に、共通の通信セットを定義できる。
【0006】
一実施形態では、第1のネイティブコードセクションは、第1のアプリケーションとウェブサービスサーバとの間の通信を管理するように構成された通信セクションを有してもよく、第1のアプリケーションと車両のHUとの間の通信を容易にするように構成されたヘッドユニット(「HU」)セクションを含むことができる。第2のネイティブコードセクションは、第2のアプリケーションとウェブサービスサーバとの間の通信を管理するように構成された通信セクションを含むことができ、第2のアプリケーションと車両のHUとの間の通信を容易にするように構成されたHUセクションを有することができる。
【0007】
一実施形態では、再利用可能なコードセクションは、第1のアプリケーションが第1のスマートフォンの第1のOS上で実行されるとき、および第2のアプリケーションが第2のスマートフォンの第2のOS上で実行されるとき、車両のHU上の所定のUI要素の表示を容易にするように構成できる。第1のアプリケーションは、ユーザがバックエンドサービスサーバのうちの1つ以上によって提供されるサービスを選択できるように構成でき、選択したサービスに関連する通信をウェブサービスサーバのみと交換するようにさらに構成できる。さらに、ウェブサービスサーバは、第1のアプリケーションに代わって、それウェブサービスサーバ自体とバックエンドサービスサーバとの間の選択されたサービスに関連する通信の交換を管理するように構成されてもよい。
【0008】
通信交換を管理する方法もまた、本明細書に説明される。この方法では、1つ以上のバックエンドサービスサーバによって実行されるバックエンドサービスの要求を、共通のプロトコルを介して第1のアプリケーションから受信できる。第1のアプリケーションは製造業者によって制御されてもよく、第1のOS上で実行するように設計できる。バックエンドサービスは、製造業者が製造した車両の遠隔制御操作に関連し得る。バックエンドサービスの第1のアプリケーションからの要求の実行を担当するバックエンドサービスサーバを識別でき、第1のアプリケーションからの要求の実行を、第1のアプリケーションに代わってバックエンドサービスサーバと調整できる。第1のアプリケーションは、共通のプロトコルを介して信号送信され、バックエンドサービスに対する第1のアプリケーションからの要求が完了したかどうかを指示することができる。
【0009】
また、バックエンドサービスサーバによって実行されるバックエンドサービスに対する要求は、共通のプロトコルを介して第2のアプリケーションから受信できる。第1のアプリケーションと同様に、第2のアプリケーションは、製造業者によって制御される場合があるが、第2のOS上で実行するように設計されてもよい。第2のアプリケーションは第1のOSと互換性がなく、第1のアプリケーションは第2のOSと互換性がない。バックエンドサービスに対する第2のアプリケーションからの要求の実行を担当するバックエンドサービスサーバを識別でき、第2のアプリケーションからの要求の実行を、第2のアプリケーションに代わってバックエンドサービスサーバと調整できる。第2のアプリケーションは、共通のプロトコルを介して信号送信され、バックエンドサービスに対する第2のアプリケーションからの要求が完了したかどうかを指示することもできる。一構成では、バックエンドサービスサーバとの第2のアプリケーションからの要求の実行の調整は、第1のアプリケーションに代わってバックエンドサービスサーバとの第1のアプリケーションからの要求の実行の調整と同時に行うことができる。
【0010】
一例として、共通のプロトコルには、製造業者に専有の1つ以上の拡張が含まれる場合があるが、バックエンドサービスサーバは、互いに異なる通信用のプロトコル、および共通のプロトコルに依存する場合がある。別の例として、バックエンドサービスサーバとの第1のアプリケーションからの要求の実行の調整は、第1のアプリケーションに代わってバックエンドサービスサーバの異なるプロトコルを介して行うことができる。同様に、バックエンドサービスサーバとの第2のアプリケーションからの要求の実行の調整は、第2のアプリケーションに代わってバックエンドサービスサーバの異なるプロトコルを介して行うことができる。
【0011】
一構成では、第1のアプリケーションは、第1のアプリケーションが第1のOS上で実行されるときに、製造業者に関連する1つ以上の所定のUI要素の表示を容易にするように構成された再利用可能なコードセクションを含むことができる。また、第2のアプリケーションは、再利用可能なコードセクションを含むことができ、再利用可能なコードセクションは、第2のアプリケーションが第2のOS上で実行されるときに、製造業者に関連する所定のUI要素の表示を容易にするように構成される。第1のアプリケーションはまた、バックエンドサービスに対する第1のアプリケーションからの要求の生成をバックエンドサービスサーバによって実行させるように構成された第1のネイティブコードセクションを含むことができる。同様に、第2のアプリケーションは、バックエンドサービスに対する第2のアプリケーションからの要求の生成をバックエンドサービスサーバによって実行させるように構成された第2のネイティブコードセクションを含むことができる。
【0012】
製造業者によって製造された車両の遠隔制御操作に関連するバックエンドサービスの要求を容易にするためのシステムもまた、本明細書に説明される。このシステムは、第1のOS上で実行するように設計された複数のアプリケーションおよび第2のOS上で実行するように設計された複数のアプリケーションからバックエンドサービスの要求を受信するように構成された1つ以上のネットワークインターフェースカード(「NIC」)を含むことができる。第2のOSのアプリケーションは、第1のOSと互換性がない。NICは、共通のプロトコルを介して、第1のOSのアプリケーションおよび第2のOSのアプリケーションからの要求を受信するようにさらに構成される。第1のOSのアプリケーションおよび第2のOSのアプリケーションは、製造業者に関連する共通のUI要素の表示を容易にするように構成された再利用可能なコードセクションを共有してもよい。
【0013】
このシステムには、1つ以上のプロセッサを含むこともできる。プロセッサは、NICに通信可能に結合でき、第1のプロトコルを介して第1のバックエンドサービスサーバと通信し、第2のプロトコルを介して第2のバックエンドサービスサーバと通信するように構成できる。第1のプロトコルおよび第2のプロトコルは、互いに異なり、共通のプロトコルである。
【0014】
プロセッサは、第1のOSのアプリケーションからの要求の実行を、第1のプロトコルを介して第1のバックエンドサービスサーバと、および第2のプロトコルを介して第2のバックエンドサービスサーバと調整するように構成できる。プロセッサはまた、第2のOSのアプリケーションからの要求の実行を、第1のプロトコルを介して第1のバックエンドサービスサーバと、および第2のプロトコルを介して第2のバックエンドサービスサーバと調整するように構成できる。プロセッサは、バックエンドサービスに対する要求のステータスを示す共通のプロトコルを介して、第1のOSのアプリケーションおよび第2のOSのアプリケーションに信号送信するようにさらに構成できる。
【0015】
一例として、第1のOSのアプリケーションは、共通のプロトコルを介してシステムによって受信されるためのバックエンドサービスの要求を生成するように構成された第1のネイティブコードセクションを含む。第2のOSのアプリケーションはまた、共通のプロトコルを介してシステムによって受信されるためのバックエンドサービスの要求を生成するように構成された第2のネイティブコードセクションを含むこともできる。
【0016】
一実施形態では、共通のプロトコルは、製造業者に専有の拡張を含むことができる。システムは、第1のバックエンドサービスサーバまたは第2のバックエンドサービスサーバからの情報をキャッシュするように構成されたメモリをさらに含むことができる。プロセッサは、メモリからキャッシュされた情報を取得することによって、第1のOSのアプリケーションまたは第2のOSのアプリケーションからの要求うちのいくつかに応答するようにさらに構成できる。
【0017】
製造業者によって製造された車両の遠隔制御操作に関連するバックエンドサービスの要求を容易にするためのシステムもまた、本明細書に説明される。このシステムは、第1のOS上で実行するように設計された複数のアプリケーションおよび第2のOS上で実行するように設計された複数のアプリケーションからバックエンドサービスの要求を受信するための手段を含む。このような手段に対応する構造は、ウェブサービスサーバのNICである。第1のOSのアプリケーションは第2のOSと互換性がなく、第2のOSのアプリケーションは第1のOSと互換性がない。加えて、第1のOSのアプリケーションおよび第2のOSのアプリケーションからの要求は、共通のプロトコルを介して受信される。第1のOSのアプリケーションおよび第2のOSのアプリケーションは、製造業者に関連する共通のUI要素の表示を容易にするように構成された再利用可能なコードセクションを共有してもよい。
【0018】
システムはまた、第1のプロトコルを介して第1のバックエンドサービスサーバと通信するための手段、および第2のプロトコルを介して第2のバックエンドサービスサーバと通信するための手段を含むこともできる。第1のプロトコルおよび第2のプロトコルは、互いに異なってもよいし、共通のプロトコルであってもよい。
【0019】
システムは、第1のOSのアプリケーションからの要求の実行を、第1のプロトコルを介して第1のバックエンドサービスサーバと、および第2のプロトコルを介して第2のバックエンドサービスサーバと調整し、第2のOSのアプリケーションからの要求の実行を、第1のプロトコルを介して第1のバックエンドサービスサーバと、および第2のプロトコルを介して第2のバックエンドサービスサーバと調整するための手段をさらに含むことができる。システムはまた、バックエンドサービスの要求のステータスを指示する共通のプロトコルを介して第1のOSのアプリケーションに信号送信する手段、およびバックエンドサービスの要求のステータスを指示する共通のプロトコルを介して第2のOSのアプリケーションに信号送信する手段を有することもできる。通信、調整、および信号送信のためのそのような手段に対応する構造は、本明細書に記載のプロセスおよびステップを実施するように構成され、特別にプログラムされたウェブサービスサーバのプロセッサである。
【0020】
一例として、第1のOSのアプリケーションは、共通のプロトコルを介してシステムによって受信されるためのバックエンドサービスの要求を生成するように構成された第1のネイティブコードセクションを含むことができる。この例の一部として、第2のOSのアプリケーションには、共通のプロトコルを介してシステムによって受信されるバックエンドサービスの要求を生成するように構成された第2のネイティブコードセクションを含むことができる。システムはまた、第1のバックエンドサービスサーバまたは第2のバックエンドサービスサーバから情報をキャッシュするための手段、およびキャッシュされた情報を取得することによって第1のOSのアプリケーションまたは第2のOSのアプリケーションからの要求に応答するための手段を含むこともできる。キャッシュおよび応答のためのそのような手段に対応する構造は、本明細書に記載のプロセスおよびステップを実施するように構成および特別にプログラムされたウェブサービスサーバのプロセッサ、および本明細書に記載のウェブサービスサーバのメモリを互いに組み合わせたものである。
【図面の簡単な説明】
【0021】
以下の図面を参照して、非限定的かつ非網羅的な実施形態を説明する。図面において、同様の参照番号は、特に明記しない限り、様々な図全体を通して同様の部分を指す。
【0022】
本明細書に記載されている主題をよりよく理解するために、以下の「発明を実施するための形態」と題されたセクションを参照する。これは、添付の図面と併せて読むべきである。
【0023】
図1】アプリケーションとバックエンドサービスサーバとの間の通信をサポートする従来技術のシステムを示す。
図2】アプリケーション、ウェブサービスサーバ、およびバックエンドサービスサーバ間の通信をサポートするシステムの一例を示す。
図3】ウェブサービスサーバの一例およびいくつかのバックエンドサービスサーバの例を示す。
図4】通信交換の管理方法の一例を示す。
図5】異なるオペレーティングシステムのアプリケーション間で再利用可能なコードセクションの使用を可能にする方法の一例を示す。
図6】いくつかのクライアントの例を示す。
【発明を実施するための形態】
【0024】
前述のように、アプリケーション(「アプリ」)の設計は、ユーザが開始したタスクを実行するために、各々が異なる会社によって運営されている複数のバックエンドサービスと通信する必要がある場合があるため、複雑になることがよくある。さらに、特定のオペレーティングシステム(「OS」)用に設計されたアプリごとに、個別の開発チームを配置する必要がある。この現在の構成は簡単に拡張できず、ユーザに追加のサービスを効率的に提供することを妨げる。
【0025】
この非効率的な構成を克服するために、異なるOSのアプリ間で再利用可能なコードの使用を可能にするための方法およびシステムを本明細書に提示する。第1のOS用に設計された第1のアプリの場合、第1のネイティブコードセクションは、第1のアプリの一部として定義され、第1のネイティブコードセクションは、ウェブサービスサーバと通信するように構成される。ウェブサービスサーバは、複数のバックエンドサービスサーバと通信するように構成されており、そのうちの少なくとも一部は、異なるエンティティによって制御される。第1のアプリの場合、再利用可能なコードセクションもまた、第1のアプリの一部として定義される。再利用可能なコードセクションは、第1のアプリが第1のOS上で実行されるときに、1つ以上の所定のユーザインターフェース(「UI」)要素の表示を容易にするように構成される。
【0026】
加えて、第2のOS用に設計され、第1のOS上で実行できない第2のアプリの場合、第2のネイティブコードセクションが、第2のアプリの一部として定義される。第2のネイティブコードセクションは、ウェブサービスサーバと通信するように構成される。さらに、第1のアプリ用に定義された再利用可能なコードセクションは、第2のアプリの一部として実装される。第1のアプリと同様に、再利用可能なコードセクションは、第2のアプリが第2のOS上で実行されたときに、所定のUI要素の表示を容易にするように構成される。このスキームでは、ウェブサービスサーバは、バックエンドサービスサーバと調整して、第1および第2のアプリからのバックエンドサービスの要求を処理し、したがって、第1および第2のアプリからそのような複雑なステップを軽減することができる。
【0027】
通常、第1および第2のアプリに関連する複雑さの多くがウェブサービスサーバに課せられているため、車両製造業者などのエンティティのアプリを様々なOS間で構築および維持するために必要な個体数が大幅に削減される。さらに、この大幅な改善は、アプリの機能が失われるという結果にはならない。実際、この構成は非常に拡張可能であり、アプリの追加の機能につながり得、より多くのバックエンドサービスプロバイダが参加する機会を提供する。
【0028】
詳細な実施形態が本明細書に開示されている。しかしながら、開示された実施形態は、本質的に例示的なものである。したがって、本明細書に開示される特定の構造的および機能的詳細は、限定的であると解釈されるべきではなく、単に請求項の代表的な基礎として、および実質的に任意の適切に詳細な構造で本明細書の態様を様々に使用することを当業者に教示するためのものである。さらに、本明細書で使用される用語および句は、限定することを意図するのではなく、可能な実装の理解可能な説明を提供することを意図する。様々な実施形態が図1図6に示されているが、実施形態は、示された構造または用途に限定されない。
【0029】
ここで適用できるいくつかの定義を次に示す。「再利用可能」という用語は、アプリケーションに他と互換性がない環境を含む様々な環境に関連する場合など、複数回使用、共有、実装、統合、配布、コピー、インストール、ロード、処理、またはさもなければリサイクルできるとして定義される。「再利用可能なコードセクション」という用語は、再利用可能または少なくとも90%再利用可能な、人間または機械の形式のコンピュータコードまたは命令として定義される。「ネイティブコードセクション」という用語は、OSまたはプロセッサなどの特定のシステム用に設計された、人間または機械の形式のコンピュータコードまたは命令として定義される。「オペレーティングシステム」という用語は、コンピュータの操作を指示または制御するソフトウェアとして定義される。「サーバ」とは、コンピュータプログラムまたは他のコンピュータに機能を提供するソフトウェアでプログラムされたコンピュータとして定義される。「バックエンドサービス」という用語は、個別に、または任意の数の他のサーバまたはコンピュータと組み合わせて、サーバまたは他のコンピュータによって提供される任意のサービスまたは機能として定義される。
【0030】
「容易にする」という言葉は、行動、コマンド、命令、またはプロセスを支援、可能化、有効化、迅速化、加速、前進、促進、またはサポートすることとして定義される。「調整する」という言葉は、1つ以上の行動またはプロセスを管理、有効化、監視、調和、同期、規制、または編成することとして定義される。「制御する」という言葉は、直接、もしくは1つ以上の媒介または他のエンティティを介することを含む、権限または影響力を持つものとして定義される。「互換性がない」という言葉は、設計または意図されたとおりに機能、操作、運転、または実行できない、またはそのような機能、操作、運転、または実行が妨げられているとして定義される。「同時」という言葉は、存在、発生、または操作全体の間に、またはそのような存在、発生、または操作の一部のみに対して、同時に存在、発生、または操作することとして定義される。「専有」という言葉は、1つ以上のエンティティに属しているか、もしくは所有、制御、または独占的に保持されているとして定義される。「アプリケーションの一部としてのコードセクションの定義」という句は、静的または動的にリンクされたコンポーネントを含む、アプリケーションの少なくとも一部のコンピュータコードの設計、モデリング、開発、記述、実装、確立、またはテスト(または前述の任意の組み合わせ)として定義される。
【0031】
「ヘッドユニット」は、車両内または車両上のヒューマンツーマシン(HMI)ハードウェアインターフェースとして定義される。「車両」は、人間、動物、または貨物(またはそれらの任意の組み合わせ)を輸送するための可動構造として定義され、例には、車、トラック、バス、列車(または他の鉄道ベースの機械、飛行機もしくは他の形態の飛行、またはボートもしくは他の形態の水上移動)が含まれる。「プロトコル」は、事前定義されたルール、手順、プロセス、命令、コマンド、呼び出し、または通信のセット、もしくは確立された基準、標準、または要件として定義される。「共通のプロトコル」という用語は、その全体または少なくとも半分で、2つ以上のエンティティ、デバイス、プロセス、機械、またはアプリケーションに後続、実践、使用、受容、採用、順守、または使用、または固執、または準拠されるプロトコルとして定義される。一例として、2つのプロセスによるプロトコルの少なくとも50%の共有使用により、プロトコルはプロセスに関して共通になる。「ネットワークインターフェースカード」(NIC)という用語は、コンピュータがネットワークに接続できるように構成されたコンピュータハードウェアコンポーネントとして定義される。
【0032】
「プロセッサ」は、いくつかの回路を備えたコンポーネント、もしくは命令を実行するように構成された回路を備えた、または本明細書に記載のプロセスを実行するまたは容易にするための実行命令(またはその両方)をプログラムされた、それらのうちの少なくとも一部を備えたコンポーネントのグループとして定義される。例には、シングルコアおよびマルチコアプロセッサまたはコプロセッサが含まれる。「メモリ」または「メモリ要素」という用語は、少なくともいくつかの回路を含み(おそらく操作用のサポートソフトウェアまたはファイルシステムとともに)、一時的または永続的にデータを格納するように構成された構造として定義される。「通信回路」は、任意の数およびタイプの通信プロトコルに従って、有線または無線通信(またはその両方)をサポートまたは容易にするように構成された回路ベースのコンポーネントとして定義される。「通信可能に結合」という句は、信号が単方向、双方向、または多方向に基づいて異なるコンポーネントの間またはコンポーネントの中で交換される可能性がある状態として定義され、有線または無線(または両方)の直接または間接接続を含む。
【0033】
「本明細書に」という言葉は、本出願の明細書、特許請求の範囲、および図面を意味する。「a」および「an」という用語は、1つまたは2つ以上として定義される。「複数」という用語は、2つまたは3つ以上として定義される。「別の」という用語は、少なくとも二番目以上として定義される。「含む」および「有する」という用語は、備える(すなわち、オープンランゲージ)として定義される。「…および…のうちの少なくとも1つ」および「…または…のうちの少なくとも1つ」という句は、1つ以上の関連するリストされたアイテムのすべての可能な組み合わせを包含するように定義される。一例として、「A、BおよびCのうちの少なくとも1つ」という句は、Aのみ、Bのみ、Cのみ、またはそれらの任意の組み合わせ(例えば、AB、AC、BCまたはABC)を含む。追加の定義を以下に提示する。
【0034】
図1を参照すると、既存のアプリとバックエンドサービスサーバとの間の相互作用を示す従来技術のシステム100が提示される。システム100は、モバイルOS上で実行するように設計されたアプリ105と、異なるモバイルOS上で実行するように構成された第2のアプリ110とを含む。アプリ105は、第1のスマートフォン115にインストールされ、第2のアプリ110は、第2のスマートフォン120にインストールされる。システム100はまた、バックエンドサービスサーバ125、バックエンドサービスサーバ130、およびバックエンドサービスサーバ135などの複数のバックエンドサービスサーバを含み、これらのサーバは各々、様々なネットワーク(図示せず)を介して第1のスマートフォン115および第2のスマートフォン120に接続される。
【0035】
これらの接続を介して、バックエンドサービスサーバ125、バックエンドサービスサーバ130、およびバックエンドサービスサーバ135は、第1のアプリ105および第2のアプリ110にサービスを提供する。例えば、バックエンドサービスサーバ125は、自動車製造業者によって操作され得、バックエンドサービスサーバ130、135は、第三者によって管理され得、その両方は、製造業者に代わって第1のアプリ105および第2のアプリ110にサービスを提供するために製造業者と契約している。重要なことに、第三者と製造業者の両方が独立したエンティティであり、そのため、バックエンドサービスサーバ125、130、135の各々と通信するプロセスは、非常に複雑になる可能性がある。
【0036】
これらのコンポーネント間の相互作用の一例は、車両を遠隔でロック解除する要求である(図示せず)。特に、車両の所有者は、第1のアプリ105を介して要求を開始することができ、第1のアプリ105は、車両の製造業者によって維持されるバックエンドサービスサーバ125、およびバックエンドサービスサーバ130との通信を確立し、これは、第三者によって制御され、遠隔ロック解除コマンドを車両に送信する。第1のアプリ105、バックエンドサービスサーバ125、およびバックエンドサービスサーバ130の間の通信の交換は、異なるプロトコルにわたる複数のコマンドおよび確認応答を含み、これは、システム100を複雑にする。したがって、第1のアプリ105は、バックエンドサービスサーバ125およびバックエンドサービスサーバ130の両方の実装およびそれらの相互運用性を説明するように記述されなければならない。さらに悪いことに、バックエンドサービスの数と種類が増えるにつれて、新しい機能をサポートするために、第1のアプリと第2のアプリ105、110の両方を絶えず更新する必要がある。そうするために、そのような更新を提供し、第1および第2のアプリ105、110をデバッグするために、別個の開発チームを維持する必要がある。
【0037】
図2を参照すると、図1の従来技術のシステム100の深刻な非効率性を克服するシステム200の一例が示されている。システム200は、デバイス上でのユーザの相互作用をサポートするために、各々がアプリの形態であり得る1つ以上のクライアント202を含むことができる。例えば、システム200は、第1のアプリ205、第1のアプリ205がインストールされている第1のスマートフォン210、第2のアプリ215、および第2のアプリ215がインストールされている第2のスマートフォン220を含むことができる。一実施形態では、第1および第2のアプリ205、215は、モバイル動作環境で動作するように設計されたモバイルアプリである。例えば、第1のスマートフォン210は、iOS(IOS(登録商標))のような第1のモバイルOSを備えていてもよく、第1のアプリ205は、このOS上で実行するように設計されている。この例を続けると、第2のスマートフォン220は、アンドロイド(商標)などの第2のモバイルOSで構成され得、第2のアプリ215は、このOSのために特別に開発される。第1のアプリ205および第2のアプリ215の両方は、それが設計されたモバイルOSのみと互換性があり得、すなわち、第1のアプリ205は、第2のモバイルOSを動かすデバイス上で実行され得ず、逆もまた同様である。それにもかかわらず、以下で説明するように、第1のアプリ205および第2のアプリ215は、コードベースを共有することができ、これにより、各々の複雑さが軽減される。
【0038】
システム200はまた、ウェブサービスサーバ225および複数のバックエンドサービスサーバ230を含むことができる。一例として、バックエンドサービスサーバ230の1つは、車両製造業者などの製造業者によって制御され、バックエンドサービスサーバ230の1つ以上は、製造業者の顧客などの特定のユーザにサービスを提供する第三者によって制御される。この例では、製造業者によって制御されるバックエンドサービスサーバ230は、製造業者バックエンドサービスサーバ235または製造業者サーバ235と呼ばれる。加えて、第三者によって制御される2つのバックエンドサービスサーバ230は、(それぞれ)第三者バックエンドサービスサーバ240および第三者バックエンドサービスサーバ245、またはは第三者サーバ240および第三者サーバ245と呼ばれる。
【0039】
バックエンドサービスサーバ230は、ユーザにバックエンドサービスを提供するように構成される。例えば、ユーザは、車両(図示せず)を所有、リース、または運転することができ、1つ以上のバックエンドサービスサーバ230は、1つ以上の機能を実施することができ、時には、車両に対して、互いに連携して操作することができる。これらのサービスのいくつかの例を以下に提示する。
【0040】
多くのサービスが複数のバックエンドサービスサーバ230間の相互作用を必要とし得るので、ウェブサービスサーバ225は、バックエンドサービスサーバ230に関してユーザからの要求の実行を調整するように構成される。一例として、ユーザは、ウェブサービスサーバ225が受信することができる、第1のアプリ205を介してサービスを要求することができる。それに応答して、ウェブサービスサーバ225は、1つ以上のバックエンドサービスサーバ230とのいくつかの交換を通じて、第1のアプリ205に代わって要求の実行を管理することができる。要求されたサービスが完了すると、ウェブサービスサーバ225は、第1のアプリ205を介してユーザに通知することができる。したがって、バックエンドの相互作用の観点から要求を実行するために必要な論理は、第1のアプリ205とは対照的に、ウェブサービスサーバ225に含まれている。
【0041】
この態様を容易にするために、ウェブサービスサーバ225は、それが参加しているバックエンドサービスサーバ230の各々と信号を登録および交換することを可能にするために必要な論理で構成される。この信号の登録および交換は、必要な認証データおよび参加しているバックエンドサービスサーバ230の各々のメッセージングプロトコルを提供されるウェブサービスサービサーバ225を含むことができる。認証データは、これらのバックエンドサービスサーバ230の完全性を維持することができ、ウェブサービスサーバ225は、サーバ230のプロトコルに適応するので、これらのサーバ230の既存のメッセージング構造に変更を加える必要はない。したがって、ウェブサービスサーバ225の実装は、バックエンドサービスサーバ230を制御するエンティティが、バックエンドサービスを提供するための現在のアプリケーションプログラミングインターフェース(「API」)または他のソフトウェアインターフェースまたはコネクタを維持することを可能にする。さらに、バックエンドサービスサーバ230に関連するAPIの追加または削除を含む、既存のメッセージング構造への任意の変更は、クライアント202を再適応させるのではなく、単一のプラットフォーム、ウェブサービスサーバ225に容易に統合することができ、それらの配布を可能にする。
【0042】
ウェブサービスサーバ225はまた、サービスを提供するときに、様々なバックエンドサービスサーバ230間(またはそれらの中)の相互運用性に対応するようにプログラムすることができる。例えば、いくつかのサービスは、複数のサーバ230の関与を必要とし得、ウェブサービスサーバ225は、複数のサーバ230の各々によって実施される操作を説明するように構成され得る。この構成により、ウェブサービスサーバ225は、利用可能なすべてのバックエンドサービスの実行を効率的に調整することができる。さらに、この設定により、システム200は大いに拡張可能になり、多数の(無関係の)エンティティによって制御され得る多くの異なるバックエンドサービスサーバ230が、必要に応じてウェブサービスサーバ225を再構成するだけでシステム200に統合できる。このプロセスはまた、クライアント202を実質的に再構成する必要なしに、ユーザに提供することができるサービスの数およびタイプを増加させることができる。
【0043】
ウェブサービスサーバ225は、バックエンドサービスの実行を調整する責任を負っているので、サーバ225とクライアント202との間のメッセージングプロトコルは、単純で均一であり得る。特に、クライアント202は、共通のプロトコルを介してウェブサービスサーバ225と通信することができる。例えば、APIまたは他のメッセージングスキームの標準セットを実装して、第1のアプリ205とウェブサービスサーバ225との間、および第2のアプリ215とサーバ225との間の通信を容易にすることができる。したがって、第1のアプリ205および第2のアプリ215が異なるOS用に開発され得るとしても、これらのクライアント202は、ウェブサービスサーバ225とメッセージを交換するために同じプロトコルに依存し得る。この均一性に加えて、クライアント202とウェブサービスサーバ225との間のAPIの複雑さは、サーバ225がクライアント202に代わってサービスの実行を調整する機能を任されているので、大幅に減らすことができる。
【0044】
一実施形態では、クライアント202がウェブサービスサーバ225と通信するために使用するプロトコルの共通性のパーセンテージは、100%または同一の使用法から、少なくとも50%までの範囲であり得る。例えば、共通のプロトコルがAPIのセットを含む場合、クライアント202は、それらの少なくとも半分からすべてまでのどこでも共有することができる。さらに、共通のプロトコルは拡張可能であり得、これにより、開発者は、クライアント202に追加の機能を実装することができる。例えば、APIの場合、拡張を共通のプロトコルの1つ以上のAPIに追加して、機能を向上させることができる。拡張は共有することができ、つまり、参加しているクライアント202は、ウェブサービスサーバ225との呼び出しに追加のデータを埋め込む機能を利用できる。このデータは、適切なバックエンドサービスサーバ230によって処理できる。
【0045】
別の場合では、拡張機能の少なくとも一部またはすべてが1つ以上のエンティティに専有であり得、これらのエンティティによって制御または関連するクライアント202のみが、これらの拡張機能を使用するか、使用できる。これらのエンティティによって制御されないまたは関連していないクライアント202の場合、無関連のクライアント202、ウェブサービスサーバ225、および関連するバックエンドサービスサーバ(複数可)230は、それらが無関連のクライアント202に関して着信または発信呼び出しの一部であるかどうかにせよ、処理を防止するか、または専有の拡張を無視することができる。この説明の目的のために、APIが共有または専有であるかどうかにかかわらず拡張を含む場合、APIは、クライアント202が、拡張を使用することを意図されているか許可されているかに関係なく、共通のプロトコルの一部としてAPIを使用するクライアント202に共通であると見なされる。
【0046】
一実施形態では、第1のスマートフォン210および第2のスマートフォン220の両方は、車両のヘッドユニット(「HU」)250と相互作用するように構成され得る。HU250は、プロセッサ255、メモリ260、およびディスプレイ265を含むことができ、プロセッサ255は、メモリ260およびディスプレイ265に通信可能に結合されている。一構成では、HU250はまた、ハードウェアインターフェース270、第1のトランシーバ275、および第2のトランシーバ280を含み得、これらの各々は、プロセッサ255に通信可能に結合され得る。したがって、プロセッサ255は、HU250のこれらのコンポーネントの各々の動作を管理することができる。
【0047】
一例として、ハードウェアインターフェース270は、HU250と、第1のスマートフォン210または第2のスマートフォン220などの別のデバイスとの間の有線接続を可能にする接続構造とすることができる。有線接続は、あらゆる世代のユニバーサルシリアルバス(「USB」)など、任意の好適な業界標準に基づくことができる。加えて、第1のトランシーバ275は、ネットワークの支援なしに、第1のスマートフォン210または第2のスマートフォン220などの別のデバイスとの無線通信を確立するように構成された短距離無線トランシーバであり得る。ワイヤレス接続は、Bluetoothまたは任意のWi-Fiプロトコルなどの任意の業界標準に準拠できる。この設定では、第1のスマートフォン210または第2のスマートフォン220は、そのような交換をサポートする第1のスマートフォン210または第2のスマートフォン220のトランシーバ(図示せず)との、HU250と、セルラーネットワークなどの無線ネットワークとの間の通信を可能にする導管として機能し得る。この構成に加えて、またはこの構成の代わりに、HU250の第2のトランシーバ280は、セルラーネットワークなどの任意の好適な長距離無線ネットワークと通信するように構成された長距離無線トランシーバであり得る。そのため、HU250は、スマートフォンの支援を用いずに長距離通信を確立および維持できる可能性がある。
【0048】
一構成では、第1のスマートフォン210、第2のスマートフォン220、およびHU250は、スマートフォン210、220がHU250と相互作用してHU250の機能を向上させることを可能にするように構成することができる。例えば、第1のスマートフォン210は、HU250をスマートフォン210の外部ディスプレイとしてサーバ化するように構成することができ、これにより、スマートフォン210にインストールされたサポートされるアプリを、HU250のディスプレイ265上に表示し、そのディスプレイを介してアクセスできるようにすることができる。サポートされるアプリの例には、ナビゲーション、音楽再生、メッセージング、音声通話、ウェブ検索用のアプリが含まれる。音量および再生用のソフトボタンまたは音声コマンドを有効にするためのコンポーネントなどのHU250に関連する制御もまた、第1のスマートフォン210または第2のスマートフォン220の動作を操作するために使用され得る。
【0049】
このスキームを通じて、クライアント202はまた、HU250上でミラーリングすることもでき、これにより、ユーザは、HU250を介してクライアント202と相互作用することができる。これらの相互作用は、例えば、ディスプレイ265を介して、またはHU250によって受信された音声コマンドを介して実施することができ、ユーザが1つ以上のバックエンドサービスを要求することを可能にすることができる。他のクライアント(またはアプリ)も、ユーザにアクセスを提供するためにHU250上でミラーリングされる場合がある。
【0050】
クライアント202はまた、1つ以上の所定のユーザインターフェース(「UI」)要素を、HU250のディスプレイ265または他の何らかのデバイス上に出現させるように構成され得る。例えば、第1のアプリ205および第2のアプリ215の両方は、HU250を含む車両の製造業者に関連付けることができ、実行されると、製造業者に関連するUI要素を、ディスプレイ265または他の何らかのデバイス上に出現させ得る。これらの要素の一部には、製造業者のロゴ、または製造業者を識別する他のマーク、色、または背景デザインが含まれる場合がある。これらのUI要素はまた、製造業者が生産した車両のタイプに固有の場合もある。一実施形態では、第1のアプリ205および第2のアプリ215が異なるOS用に設計されている場合でも、第1のアプリ205によって表示されるようにされる所定のUI要素は、第2のアプリ215に由来するものと同一または少なくとも実質的に同様であり得る。
【0051】
別の場合では、クライアント202は、スマートフォンによって投影される代わりに、HU250にインストールされ、直接実行され得る。この例では、ユーザは、HU250を介して第1のアプリ205または第2のアプリ215と相互作用することができ、上記のUI要素はまた、ディスプレイ265または他のいくつかのコンポーネント上に表示することもできる。そのようにインストールされるクライアント202は、HU250のOSのために特別に設計され得、すなわち、それらは、HU250上でネイティブに動き得る。スマートフォンまたはHUに加えて、クライアント202は、ラップトップもしくはタブレット、またはインフォテインメントシステムの後部座席ディスプレイなどの車両の他のコンポーネントなどの他の好適なデバイス上にインストールおよび実行することができる。さらに、ユーザは、HU250の存在なしに、クライアント202と相互作用することができる。例えば、ユーザは、車外またはHUを有さない車内で、第1のスマートフォン210上の第1のアプリ205にアクセスしてもよい。
【0052】
クライアント202がどのようにユーザに利用可能にされても、ユーザは、バックエンドサービスの要求を開始することができる。前述のように、一部のバックエンドサービスは、車両に向けられる場合がある。例えば、サービスのうちのいくつかは、車両のロック解除またはロック、エンジンの開始または停止、ヘッドライトまたは警笛のアクティブ化または非アクティブ化、気候システムの開始または停止(またはその開始または停止のスケジューリング)、またはバッテリ充電の開始、停止、スケジューリング、または駐車料金の支払いなど、遠隔でトリガされる車両によって実行されるアクションである場合がある。
【0053】
別の例として、一部のサービスは、燃料レベル、給油計算(給油までに何マイルまたはどのくらいの時間が必要か)、エンジン診断、燃費、走行距離計の読み取り値、車両識別番号(「VIN」)、メンテナンス履歴、有料駐車スペースの残り時間、現在の車両の場所、またはガソリンスタンドもしくは充電ステーションもしくはディーラーの場所など、車両またはその周辺地域に関するデータの要求を満たす場合がある。条件またはイベントによってプロンプトが表示されるサービスなどの他のサービスは、必ずしもユーザによって要求されるとは限らない場合がある。例としては、リコール通知、定期メンテナンス、もしくはブレーキ、バッテリ、またはタイヤなどのコンポーネントの既存または潜在的な故障または劣化など、車両に関する通知または警告を提供することが含まれる。
【0054】
バックエンドサービスはまた、バックエンドサービスサーバ230の1つなどの他のプラットフォームからも要求され得る。例えば、製造業者サーバ235は、車両に関連する操作データまたはユーザに関連する消費データなど、ユーザの車両からデータを取得しようとするサービスを要求することができる。このスキーム下で、製造業者サーバ235は、ユーザの車両の現在の走行距離計の読み取りを要求することができ、次いでこれを使用して、ユーザに配信されるメンテナンスリマインダを生成することができる。一例として、消費データは、給油停止の頻度を含むことができ、そこから、製造業者サーバ235は、ユーザを特定のブランドの燃料に誘導するための金銭的誘因を生成することができる。バックエンドサービスの配信は、どのコンポーネントまたはエンティティがそれらを開始するかに関係なく、共通のプロトコルを介してウェブサービスサーバ225によって調整され得る。
【0055】
ユーザに配信できるバックエンドサービスは他にもたくさんあるが、ここに記載されている例は限定的なものを意図するものではない。実際、他の機械または構造がこの構成を利用できるため、バックエンドサービスは、必ずしも車両に向けられたものに限定されない場合がある。
【0056】
オプションとして、バックエンドサービスが車両用である場合、ユーザは、そのようなサービスを受けるために複数の車両を登録してもよい。例えば、ユーザは、クライアント202にアクセスし、ユーザの車両およびユーザの家族のメンバーが所有する1つ以上の他の車両を登録してもよい。クライアント202は、ユーザが登録された車両を切り替えることを可能にするスイッチング機能を含むようにさらに構成することができ、それにより、サービスを各車両に選択的に与えることができる。家族の各メンバーはまた、スマートフォン上のクライアント202を介して自分の車両(および他の車両)を登録してもよい。
【0057】
共通のプロトコルは構造化されるが、1つのオプションとして、バックエンドサービスの標準セットを実装してもよい。例えば、共通のプロトコルがAPIの標準セットで構成されている場合、これらのAPIは、上記のバックエンドサービスまたは他の好適なサービスのいずれかを実装するように設計できる。そのため、アプリが異なるOS用に構成されている場合でも、事前定義された均一のメッセージングスキームを、様々な車両製造業者などの様々なエンティティのアプリで容易に使用可能であり得る。一例として、第1の製造業者のiOSおよびアンドロイドアプリならびに第2の製造業者のiOSおよびアンドロイドアプリはすべて、共通のプロトコルを利用して、ウェブサービスサーバ225と信号を交換し、ユーザまたはいくつかの他のエンティティが多種多様なバックエンドサービスをリクエストすることを可能にし得る。このプロセスは、そのようなサービスを開始するために通常必要なすべての論理でアプリに負担をかけることなく実行できる。
【0058】
共通のプロトコルはまた、異なるOSの存在から生じるあらゆるバリエーションに対応するように構成することもできる。例えば、ほとんどすべてのモバイルデバイスは、プッシュ通知を処理する必要があり、あるOSで処理するためのスキームは、別のOSのスキームとは異なる場合がある。共通のプロトコルは、これらのプラットフォーム固有のバリエーションを考慮に入れて、ウェブサービスサーバ225が異なるクライアント202にプッシュ通知を配信できるようにすることができる。
【0059】
一実施形態では、共通のプロトコルは、クライアント202がバックエンドサービスを実行するために必要となる可能性があるデータを供給することを要求するように設計できる。例えば、共通のプロトコルがAPIで構築されている場合、APIは、車両に関する特定の情報(VIN、現在地、またはアカウント識別(「ID」)など)、またはサービスの要求の一部として送信される所有者を要求する場合がある。このデータは、可能であれば、クライアント202またはウェブサービスサーバ225を含めてキャッシュして、待ち時間を短縮することができ、一構成では、データフィールドの選択は、プロトコルの均一性を増加させるために車両の製造業者に関して依存しない場合がある。先に述べたように、共通のプロトコルは拡張可能(専有または共有)である可能性があるため、拡張は、1つ以上の製造業者または製造業者のブランドの、もしくは製造業者の特定のクライアント202の特定のデータフィールドに対応するように実装され得る。(このようなデータフィールドの一例は、車両のブランドまたはバージョンであり得る。)さらに、特定の製造業者のクライアント202によってのみ使用され得る共通のプロトコルのAPIのセットなど、共通のプロトコルの一部は、1つ以上の製造業者に制限される場合がある。
【0060】
図3を参照すると、ウェブサービスサーバ225およびいくつかのバックエンドサービスサーバ230が示されている。この図では、バックエンドサービスサーバ230の1つは、製造業者サーバ235であり、別のサーバ230は、第三者サーバ240であるが、他の構成も可能である。一例として、製造業者サーバ235は、車両の製造業者によって制御され、第三者サーバ240は、そのような車両に衛星ベースの娯楽サービスを提供する第三者によって制御される。
【0061】
一実施形態では、ウェブサービスサーバ225は、プロセッサ305、メモリ310、第1のネットワークインターフェースカード(「NIC」)315、第2のNIC320、および分析エンジン325を含むことができる。プロセッサ305は、メモリ310、第1のNIC315、第2のNIC320、および分析エンジン325のそれぞれに通信可能に結合され、その動作を管理することができる。
【0062】
メモリ310は、命令を含む様々なデータを格納して、ウェブサービスサーバ225が本明細書に記載のプロセスを実施できるようにすることができる。一例として、メモリ310はまた、クライアント202またはバックエンドサービスサーバ230からの情報をキャッシュするための1つ以上のキャッシュ330を含むことができる。一構成では、第1のNIC315は、ウェブサービスサーバ225とクライアント202との間の有線または無線(または両方の)通信を容易にするように構成することができ、第2のNIC320は、バックエンドサービスサーバ230との交換のために同じことを行うように構成することができる。そうするために、第1のNIC315および第2のNIC320の両方は、有線または無線信号(またはその両方)を送受信するための回路およびソフトウェアを含むことができる。しかしながら、別個のNICは必要とされない場合があり、一実施形態では、ウェブサービスサーバ225は、単一のNICを有することができる。
【0063】
分析エンジン325は、クライアント202、ウェブサービスサーバ225、およびバックエンドサービスサーバ230またはこれらのコンポーネントの任意の他の好適なセットの間の相互作用に基づいてデータを分析し、この分析に基づいてレポートを生成するように構成することができる。分析エンジン325は、このデータを分析することを可能にするための回路およびソフトウェアを含むことができ、一例として、機械学習(「ML」)または人工知能(「AI」)モデルが、そのソフトウェアの一部であり得る。これらのモデルは、収集されたデータを処理し、レポートの一部となり得る傾向または他の基準を識別することができる。傾向または基準の例には、車両の診断またはパフォーマンス、およびバックエンドサービスの使用に関連するユーザの習慣が含まれ得る。これらのモデルはまた、他の車両など、他のコンポーネントにインストールされている他のAIまたはMLソフトウェアを更新するために使用できる。別のオプションでは、分析エンジン325は、車両またはいくつかの他のサーバなどのいくつかの他のデバイス上にインストールすることができるが、ウェブサービスサーバ225は、依然としてユーザまたはその車両に関連するデータを、遠隔に位置する分析エンジン325に提供することができる。
【0064】
一構成では、製造業者サーバ235は、プロセッサ335、メモリ340、およびNIC345を含むことができ、プロセッサ335は、メモリ340およびNIC345の両方に通信可能に結合され、その動作を制御することができる。ここには示されていないが、第三者サーバ240は、同様の構成を含むことができる。一例として、メモリ340は、製造業者サーバ235の動作を可能にするデータを記憶することができ、このデータの一部は、製造業者が販売またはリースした車両の所有者、借手、またはユーザに関する情報を含むことができる。第三者サーバ240の場合、そのメモリが格納するデータの一部は、サーバ240を制御する第三者から衛星ベースの娯楽サービスを受信またはサブスクライブする製造業者の車両の所有者、借手、またはユーザに関する情報を含むことができる。NIC345は、製造業者サーバ235とウェブサービスサーバ225との間、および製造業者サーバ235と第三者サーバ240との間の通信交換をサポートするように構成することができる。一実施形態では、製造業者サーバ235および第三者サーバ240の両方は、デバイス上に1つ以上のクライアント202をインストールしたユーザが、製造業者サーバ235または第三者サーバ240と直接データを交換することを可能にし得るNICまたはいくつかの他のインターフェースを含むことができる。
【0065】
図4を参照すると、通信交換を管理する方法400が示されている。方法400のステップは、ここでは時系列順で提示されているが、本明細書で説明される方法400および他の概念は、必ずしもこの順序に限定されない。さらに、方法400は、図4に示されているものと比較して、追加のまたはさらに少ないステップを含むように変更してもよい。方法400の一般的な概要が最初に提示され、その後、ステップおよびいくつかの例のより詳細な(ただし、非限定的な)説明が続く。方法400は他のシステムまたはコンポーネントで実施することができるが、方法400を説明するのを助けるために図2および図3を参照する。
【0066】
ステップ405で、ユーザは、クライアントを登録してバックエンドサービスを要求することができ、ステップ410で、ユーザは、クライアントを起動し、クライアントを介して1つ以上のサービスを要求することができる。ステップ415で、要求は、共通のプロトコルを介して送信することができ、ステップ420で、要求は、ウェブサービスサーバによって受信することができる。ステップ425で、ウェブサービスサーバは、サービス要求を実行するために必要な任意のバックエンドサービスサーバを識別でき、ステップ430に示されるように、識別されたバックエンドサービスサーバと、この要求の実行を調整することができる。決定ブロック435で、バックエンドサービスの要求に対する応答が受信された場合、ウェブサービスサーバは、ステップ440に示されるように、共通のプロトコルを介してクライアントに指示を送信することができる。ステップ445で、方法400は、共通のプロトコルを使用する第2のクライアントを介して第2のユーザに対して繰り返すことができる。
【0067】
第1のスマートフォン210上に第1のアプリ205をインストールしたユーザが所有する車両のロックを遠隔で解除する要求の次の例を考察する。最初に、ユーザは、第1のアプリ205を起動してもよく、これにより、一意の識別(「ID」)を生成し、ウェブサービスサーバ225に対してユーザのアカウントの登録および認証を容易にすることができる。このアカウントは、ユーザの車両の製造業者に関連付けることができる。この例では、ユーザは、ユーザの車両を介して第三者から衛星ベースの娯楽サービスを受信するようにサブスクライブすることができる。一実施形態では、第1のアプリ205は、ウェブサービスサーバ225を介して、第三者に関するユーザのアカウントの登録および認証を可能にすることもできる。次に、ウェブサービスサーバ225は、製造業者サーバ235を用いて製造業者に関連するユーザのアカウント、および第三者サーバ240を用いて第三者に関連付けられたユーザのアカウントを登録および認証することができる。
【0068】
他の構成は、ここで可能である。例えば、第1のアプリ205とは異なる可能性がある第三者に関連するアプリは、第三者サーバ240を用いて第三者へのユーザのアカウントの登録および認証を可能にすることができる。別の例として、ユーザは、第1のアプリ205を使用して、製造業者サーバ235を用いて製造業者へのユーザのアカウントを最初に登録および認証することができる。これらの場合、製造業者サーバ235および第三者サーバ240は、ウェブサービスサーバ225を用いて製造業者および第三者へのユーザのアカウントを(それぞれ)登録および認証することができる。別のオプションでは、第1のアプリ205および第三者のアプリ(必要な場合)を車両(またはいくつかの他のデバイス)のHU250上にインストールしてもよく、そこから登録および認証を始めることができる。登録および認証ステップの一部として、ユーザは、製造年、モデル、型、現在の走行距離、VIN、アカウント番号、または他の関連情報など、ユーザおよびユーザの車両に関する関連情報を提供できる。
【0069】
登録および認証プロセスに続いて、ユーザは、第1のスマートフォン210上の第1のアプリ205を介して、ユーザの車両を遠隔でロック解除するバックエンドサービスを要求してもよい。一構成では、第1のアプリ205およびウェブサービスサーバ225は、セッションを認証することができ、この認証を使用して、製造業者サーバ235および第三者サーバ240の任意の検証要件を普遍的に満たすことができる。第1のアプリ205とウェブサービスサーバ225との間の交換は、それらの使用のために確立された共通のプロトコルを介して行われ得る。一例として、第1のアプリ205は、車両の遠隔ロック解除をトリガするように特別に設計されたAPIを介して、ウェブサービスサーバ225に信号送信することができる。要求は、VINおよびアカウントIDなど、それを実行するために必要な任意のデータを含み得、ウェブサービスサーバ225のプロセッサ305は、それがキャッシュされている場合、メモリ310からこのデータの少なくとも一部を取得し得る。
【0070】
ウェブサービスサーバ225は、製造業者サーバ235および第三者サーバ240の実装詳細で構成されているので、ウェブサービスサーバ225がサービス要求を受信すると、ウェブサービスサーバ225のプロセッサ305は、第1のアプリ205に代わって製造業者サーバ235および第三者サーバ240と、この要求の実行を調整することができる。例えば、プロセッサ305は、製造業者サーバ235と通信して、ロック解除要求について製造業者サーバ235から許可を受信することができる。この信号の交換は、製造業者サーバ235用に確立された既存のプロトコルに準拠できる。つまり、このサービスを実施するために製造業者サーバ235のAPIを変更する必要はない。製造業者サーバ235との通信のためのプロトコルは、主に、製造業者プロトコルが製造業者に専有または固有であり得るため、共通のプロトコルとは異なる。
【0071】
許可に続いて、ウェブサービスサーバ225のプロセッサ305は、第三者サーバ240と通信して、遠隔ロック解除コマンドを開始することができる。この交換の一部として、ウェブサービスサーバ225は、第三者サーバ240に、製造業者サーバ235からの要求に対する許可、および遠隔ロック解除を実行するために必要な任意のデータを提供することができる。
【0072】
第三者サーバ240がサービスを実施している間、ウェブサービスサーバ225のプロセッサ305は、応答についてサーバ240をポーリングし得、遠隔ロック解除が完了すると、サーバ240は、プロセッサ305に適切な指示で信号送信し得る。車両に接触できなかった場合など、第三者サーバ240が要求を処理できなかった場合、サーバ240は、ウェブサービスサーバ225のプロセッサ305にエラー状態を返すことができる。いずれの場合も、製造業者サーバ235のように、遠隔ロック解除サービス(または任意の他の既存のサービス)のために第三者サーバ240のAPIに変更を加える必要はない。また、サーバ240のプロトコルが第三者に専有または固有であり得るため、第三者サーバ240との通信のためのプロトコルもまた、共通のプロトコルとは異なり、製造業者サーバ235に関連するプロトコルとは異なる可能性がある。
【0073】
第三者サーバ240からどちらの指示を受信しても、ウェブサービスサーバ225のプロセッサ305は、結果の指示で製造業者サーバ235に信号送信し得る。加えて、ウェブサービスサーバ225のプロセッサ305は、共通のプロトコルを介して第1のアプリ205に信号送信し、バックエンドサービスが正常に完了したかどうかなどの要求のステータスを指示することができる。クライアント202から発信される交換と同様に、(共通のプロトコルを介した)ウェブサービスサーバ225からのメッセージは、様々な製造業者に関連する複数のクライアント202に対して均一であり得る。したがって、ウェブサービスサーバ225のプロセッサ305は、様々なバックエンドサービスサーバ230からの多様なメッセージを変換し、それらをクライアント202が期待する形式に変換することができる。それに応答して、第1のアプリ205は、ユーザのための指示を生成することができる。
【0074】
別の例では、第2のユーザは、クライアント202、この場合、第2のスマートフォン220上にインストールされた第2のアプリ215のための登録および認証プロセスを完了した可能性がある。次に、第2のユーザは、第2のアプリ215を介してバックエンドサービスの要求を開始し得る。この例では、サービスは、第2のユーザの車両の遠隔ロック解除のためのものであり、上記のプロセスは、第2のユーザの車両に関して繰り返すことができる。このプロセスの一部として、ウェブサービスサーバ225は、第1のアプリ205の場合と同様に、共通のプロトコルを介して第2のアプリ215と信号を交換することができる。実際、ウェブサービスサーバ225は、第1のユーザおよび第2のユーザに対する両方の遠隔ロック解除要求の実行を互いに同時に調整することができる。したがって、バックエンドサービスは、ユーザが使用するクライアント202が異なるOS用に設計されている場合でも、共通のプロトコルを使用して、複数のユーザに対して同時に(または少なくとも時間的にいくらか重複して)実行することができる。この原理は、他のバックエンドサービスが関与する場合、ユーザが異なるブランドの車両を所有する場合、またはユーザの車両が異なる製造業者によって製造され、各々が独自の製造業者サーバ235を制御する場合など、追加の状況に拡張される。
【0075】
前の例では、ユーザは、クライアント202を介してバックエンドサービスを開始した。しかしながら、バックエンドサービスはまた、バックエンドサービスサーバ230またはウェブサービスサーバ225から始めてもよい。例えば、製造業者は、その車両のグループに対してリコール通知を発行することを望む場合があり、製造業者サーバ235は、通知を生成し、それをウェブサービスサーバ225に送信してもよい。通知は、ウェブサービスサーバ225が影響を受ける車両を識別するために使用できる関連データを含み得、必要に応じて、サーバ225は、それ自体のメモリ310からデータを検索するか、または様々なクライアント202に追加情報をポーリングすることができる。
【0076】
次に、通知に応答して、ウェブサービスサーバ225は、影響を受ける車両に関連付けられたクライアント202に(共通のプロトコルを介して)信号送信することができ、クライアント202は、リコール通知をユーザのために人間が知覚できる形式でレンダリングさせることができる。ウェブサービスサーバ225はまた、影響を受けた車両へのリコール通知の配信の成功(または失敗)を示す1つ以上のリターンを用いて製造業者サーバ235に信号送信することができる。この例では、製造業者は、製造業者サーバ235に関連するAPIを変更する必要なしに、単純な通知を生成し、それを多種多様のプラットフォーム上にインストールされた多数のクライアント202に首尾よく配布するタスクをウェブサービスサーバ225に引き渡すことができる。
【0077】
上記のように、ウェブサービスサーバ225は、バックエンドサービスサーバ230から受信したデータをキャッシュし得る。例えば、ユーザが、クライアント202を介してエンジン診断レポートを要求した可能性があり、このデータは、第三者サーバ240によって生成され得る。ウェブサービスサーバ225が第三者サーバ240から診断データを受信すると、サーバ225は、この情報をキャッシュすることができる。
【0078】
この方法でデータをキャッシュすることにより、ウェブサービスサーバ225は、そのようなサービスが利用可能であり得る場合に、バックエンドサービスの要求に応答することを可能にし得る。例えば、製造業者は、特定のクライアント202について、エンジン診断レポートの生成を30分ごとに1回に制限してもよい。これは、製造業者が、このサービスの過度の使用について第三者サーバ240を制御するエンティティによって課金される可能性があるためである。したがって、30分の期間が満了する前にユーザが別の診断レポートを要求する場合、ウェブサービスサーバ225のプロセッサ305は、キャッシュされたデータを単に検索することができ、サーバ225は、データを要求するクライアント202に向けることができる。ウェブサービスサーバ225は、第三者サーバ240(または任意の他のバックエンドサービスサーバ230)に信号送信する必要なしに、この応答を実行することができる。
【0079】
30分の期間が満了すると、ウェブサービスサーバ225は、通常の方法で診断レポートの新しい要求に応答することができる。このキャッシング手順は、他のバックエンドサービスに適用することができ、バックエンドサービスサーバ230のいずれも、キャッシュされたデータを取得することによってウェブサービスサーバ225に要求に応答するように強制し得る制限を実装し得る。このキャッシング機能はまた、ウェブサービスサーバ225とクライアント202との間の相互作用に適用されるルールの開発を可能にし、これらのルールは、バックエンドサービスサーバ230によって設定された任意のルールから逸脱し得る。
【0080】
上に提示された例では、バックエンドサービスは、複数のバックエンドサービスサーバ230または単一のサーバ230の参加を含み得る。したがって、ウェブサービスサーバ225は、それらがすべて異なるエンティティによって制御され、各々が異なるAPIのセットを公開している場合でも、多くの異なるバックエンドサービスサーバ230へのサービスの配信を調整するように構成することができる。さらに、システム200は、ユーザの増加に対応するため、またはユーザに新しいサービスを提供するために新しいバックエンドサービスサーバ230を実装することができるので、容易に拡張可能である。ウェブサービスサーバ225と複数のバックエンドサービスサーバ230との間の構成がどれほど複雑であり得るかに関係なく、クライアント202は、共通のプロトコルを介してサービスの利益を受け取り続けることができる。したがって、複数のバックエンドサービスサーバ230との相互作用とは対照的に、共通のプロトコルを介したクライアント202のウェブサービスサーバ225への通信を制限することにより、クライアント202の複雑さを軽減することができる。
【0081】
一実施形態では、クライアント202は、ウェブサービスサーバ225とのみ通信を交換することに限定され得、これは、バックエンドサービスを要求(または受信)するときに、他のデバイスと通信できないことを意味する。(HU250のような特定のコンポーネントに対して、ただし、特に相互作用がHU250への投影に限定されている場合、例外を実施することができる。)この制限は、クライアント202のセキュリティを強化し、それらをさらに開発しやすくすることができる。
【0082】
上で説明したように、バックエンドサービスを調整することでウェブサービスサーバ225にタスクを課すことは、クライアント202がそのようなサービスを受信することを可能にし、複数のバックエンドサービスサーバ230と相互作用する負担からクライアントを解放する。さらに、クライアント202は、サービスのための共通のプロトコルに依存しているので、クライアント202は、それらが異なるOS用に設計されている場合でも、コードのかなりの部分を共有するように開発することができる。
【0083】
図5を参照すると、異なるOSのアプリ間で再利用可能なコードベースの使用を有効にするための方法500が示されている。方法500のステップは、ここでは時系列順で提示されているが、本明細書で説明される方法500および他の概念は、必ずしもこの順序に限定されない。さらに、方法500は、図5に示されているものと比較して、追加のまたはさらに少ないステップを含むように変更されてもよい。方法500の一般的な概要が最初に提示され、その後、ステップおよびいくつかの例のより詳細な(ただし、非限定的な)説明が続く。
【0084】
ステップ505で、ネイティブコードセクションを第1のアプリの一部として定義することができる。ステップ510で、再利用可能なコードセクションもまた、第1のアプリの一部として定義することができる。ステップ515で、ステップ520に示されるように、第2のネイティブコードセクションを第2のアプリの一部として定義することができ、再利用可能なコードセクションを第2のアプリの一部として実装することができる。ステップ525で、サーバとの交換のための第1および第2のアプリに対して共通の通信セットを定義することができる。
【0085】
図6を参照すると、ブロック図形式の2つのクライアント202の例が示されている。方法500を説明するのを助けるために図2図3、および図6を参照するが、方法500は、他のシステム、コンポーネント、またはオブジェクトを用いて実施してもよい。この例では、クライアント202のうちの1つは、第1のスマートフォン210上にインストールすることができる第1のアプリ205であり、他のクライアント202は、第2のスマートフォン220上にあり得る第2のアプリ215である。第1のスマートフォン210は、第1のアプリ205が設計された第1のOSをロードされ得、第2のスマートフォン220は、その上にインストールされた第2のOSを有し得、そのために第2のアプリ215は開発されている。また、この例では、第1のアプリ205は第2のOSと互換性がなく、第2のアプリ215は第1のOSと互換性がない。
【0086】
クライアント202の部分は、それらがクライアント202の最終的な構成において互いに静的にリンクされているように埋め込まれ得る。代替的に、任意の数の部分が、クライアント202に関連して個別のアイテムとして配信またはアクセスされ得、それらは、クライアント202が実行されるときに動的にリンクされ得る。
【0087】
一構成では、第1のアプリ205は、ネイティブコードセクション605および再利用可能なコードセクション610を含むことができ、ネイティブコードセクション605は、通信モジュール615、ヘッドユニット(「HU」)モジュール620、デバイス仕様モジュール625、およびユーザインターフェース(「UI」)仕様モジュール630などのいくつかのセクションまたはモジュールから構成することができる。同様に、第2のアプリ215は、ネイティブコードセクション635および再利用可能なコードセクション640を含むことができ、ネイティブコードセクション635は、通信モジュール645、HUモジュール650、デバイス仕様モジュール655、およびUI仕様をモジュール660を有することができる。
【0088】
ネイティブコードセクション605およびネイティブコードセクション635は、クライアント202の対応するOSにネイティブであるコードを用いて開発され得る。具体的には、ネイティブコードセクション605のコードは、第1のOSにネイティブであり得、ネイティブコードセクション635のコードは、第2のOSにネイティブであり得る。一実施形態では、ネイティブコードセクション605、635の開発および構造は、共通のプロトコルに基づき得る。すなわち、ネイティブコードセクション605、635は、共通のプロトコルの均一性、したがって、ウェブサービスサーバ225との相互作用を利用するように設計され得る。ネイティブコードセクション605の基礎となるネイティブコードは第2のOSと互換性がないが、ネイティブコードセクション605のすべてまたは少なくとも実質的な部分は、第1のOS上で実行される任意のクライアント202に実装され得る。同じ原理が、ネイティブコードセクション635に適用され、なぜなら、それは、第2のOS上で実行される任意のクライアント202に統合され得るからである。
【0089】
しかしながら、再利用可能なコードセクション610は、クロスプラットフォームコード、または異なるOSを含む異なるプラットフォーム上で実行可能であるかまたは異なるプラットフォームに依存しないコードを用いて開発され得る。したがって、再利用可能なコードセクション610は、第1のOSおよび第2のOSの両方と互換性があり、第1のアプリ205用に開発され得るが、再利用可能なコードセクション640として第2のアプリ215に再利用および実装することができる。例として、React-Nativeのようなクロスプラットフォーム開発ツールを使用して、再利用可能なコードセクションを開発できる。一実施形態では、再利用可能なコードセクション610は、第1のアプリ205の全コードの約90%を構成し得、残りの10%は、ネイティブコードセクション605の一部として開発される。第2のアプリ215に対するネイティブコードセクション635および再利用可能なコードセクション640の比率は同等であり得る。したがって、クライアント202のかなりのシェアが、異なるOS間で再利用可能であり得る。
【0090】
一構成では、再利用可能なコードセクション610、640は、対応するクライアント202が実行されるときに表示するための所定のUI要素の生成を担当することができる。一例として、UI要素は、第1のスマートフォン210、第2のスマートフォン220、HU250のディスプレイ265、またはいくつかの他の好適なデバイス上に表示することができる。例えば、第1のアプリ205が車両製造業者に関連する場合、再利用可能なコードセクション610は、第1のアプリ205が実行されたとき、製造業者またはそのブランドのいずれかに関連付けられた、もしくはそれを示す1つ以上のUIが第1のスマートフォン210またはディスプレイ265上に表示されるように構成することができる。一例として、第1のアプリ205のために表示されるUI要素は、第2のアプリ215のために提示されるものと同一であり得る。これは、単一の組織が第1のアプリ205および第2のアプリ215の操作または配布を担当または制御する場合、または複数の組織が同様のUIを提示したい場合に有用であり得る。この概念はまた、クライアント202が実行されるときに、ブロードキャストされるオーディオまたはトリガされるハプティックスなど、人間が知覚できる他の任意の要素にも適用することができる。
【0091】
ローカル通知がどのようにレンダリングされるかなど、主に第1のOSと第2のOSとの違いに基づいて、再利用可能なコードセクション610と再利用可能なコードセクション640との間に若干のバリエーションが存在し得る。それにもかかわらず、異なるOS用に設計されたクライアント202間で再利用可能なコードの量はかなりのものであり、典型的に、少なくとも90%または95%である。
【0092】
ネイティブコードセクション605、635に戻ると、通信モジュール615、645は、ウェブサービスサーバ225との交換を容易にし、それらの対応する車両に関するデータを維持するように構成され得る。さらに、HUモジュール620、650は、例えば、HU250との交換を容易にし、HU250との接続データを維持し、場合によっては、モバイルネットワークと、HU250上に投影されるアプリとの間の交換を管理するように設計され得る。デバイス仕様モジュール625、655は、例えば、第1のスマートフォン210および第2のスマートフォン220の特定の特性を(それぞれ)維持するように開発することができる。UI要素を表示するときにアクセスできるこれらの特性の例には、デバイスの確立された場所(北米またはアジアなど)、選択した言語(英語またはフランス語など)、または画面サイズおよび解像度が挙げられる。UI仕様モジュール630、660は、第1のスマートフォン210または第2のスマートフォン220、もしくはHU250またはいくつかの他のデバイスのディスプレイ265上に(それぞれ)提示される、スキンまたはテーマなどのUIのタイプを指定するように設計することができる。一例として、この選択は、車両の製造業者または製造業者の特定のブランドの同一性に基づく。オプションとして、この選択機能により、異なる製造業者または他のエンティティに関連する再利用可能なコードを再利用可能なコードセクション610、640の一部にすることができ、選択されていない製造業者(またはエンティティ)のコードは単に無視できる。ネイティブコードセクション605およびネイティブコードセクション635は、上記の各モジュールを含まない場合があるか、またはここに提示されていない他のモジュールを含む場合があるため、必ずしもこの構成に限定されない。
【0093】
この例示的な構造を考慮すると、クライアント202は用途が広く、効率を改善する機会を提供する。例えば、ネイティブコードセクション605は、第1のOSのために第1のアプリ205を配信したい異なる組織のために開発された複数のクライアント202に統合され得、なぜなら、それは、ウェブサービスサーバ225、または共通のプロトコルとの交換のための共通の通信セットのために設計され得るからである。同様に、ネイティブコードセクション635は、第2のOSで動作するアプリをリリースしたいこれらの組織の第2のアプリ215に実装され得る。様々なクライアント202に統合され得るネイティブコードセクション605、635は、各エンティティの特定の要件に対応するように構成され得る。それにもかかわらず、各ネイティブコードセクション605、635の90%以上のようなコードのかなりの部分は、それぞれのOSの異なるクライアント202間で再利用(または共有)され得る。
【0094】
この利点はまた、組織が複数の部門で構成されており、各部門が第1のOSと第2のOSの両方のクライアント202をリリースする場合にも実現できる。一例として、製造業者は、いくつかの部門を有し、各々が1つ以上の異なるブランドの車両を提供している場合がある。各部門は、その車両ブランドごとに、第1のOSおよび第2のOSのクライアント202をリリースし得る。この場合、ネイティブコードセクション605は、(もしあれば)最小限の変更で、各ブランド用の第1のOSのクライアント202間で共有され得、この構成は、部門によってリリースされる第2のOSのクライアント202のために複製され得る。クライアント202のためにネイティブコードセクション605、635を再利用するという概念は、同じ組織の部門に限定されないが、それらは、互いに独立している企業を含む異なる組織間でリサイクルされ得る。
【0095】
クライアント202の設計はまた、再利用可能なコードセクション610、640に関して同等の利点を提供する。複数の部門を持つ車両製造業者に関する上記の例を考察する。ここで、再利用可能なコードセクション610、640は、部門に表示されるUI要素の違いによって必要とされるものを除いて、セクション610、640に実際に変更を加えることなく、これらの部門のクライアント202間で共有され得る。製造業者が実質的に同様のUIを表示したい場合には、部門のUIのバリエーションに起因する変更でさえ最小限に抑えることができる。(前に説明したように、OS要件に基づいて、再利用可能なコードセクション610と再利用可能なコードセクション640の間にはわずかなバリエーションが存在し得る。)この同じ原理は、製造業者が合弁事業またはプロジェクトの一部であった場合など、いくつかの製造業者にさえも適用できる。
【0096】
クライアント202によって提供される多様性は、クライアント202からウェブサービスサーバ225へのバックエンドサービスの実行を容易にするために必要な論理を再配置するプロセスから実現することができる。クライアント202とウェブサービスサーバ225との間の交換のために共通のプロトコルを採用することもまた、この適応性に寄与できる。他の利点は、クライアント202間の共通性および複雑さの低減から生じ得る。例えば、品質保証(「QA」)テストを含む、アプリ開発に必要なリソースが少なくてすむ可能性があるため、組織はアプリ(更新またはアップグレードを含む)をはるかに迅速に市場に配信できる可能性がある。実際、この設計は、クライアント202の均一性のために、重大な欠陥を検出するための1つ以上の「スモークテスト」のような標準の自動化されたテストの実装を可能にし得る。このようなテストでは、QAプロセスに人間が関与する前に欠陥を検出できる。ただし、ここで概説する利点は、組織のアプリに関連する機能の数または品質を低下させることはない。
【0097】
上記のように、図2図6のシステム、デバイス、方法、プロセス、およびオブジェクトは、本明細書に記載の機能を実現するために、1つ以上のプロセッサおよびメモリ要素を使用し得るか、またはそれに依存し得る。任意の数のプロセッサは、他のデバイスおよびシステムの動作を監視し、デバイスおよびシステムのすべてまたは任意の数のコンポーネント間のプロセスを調整するように特別にプログラムされ得る。プロセッサには、任意の好適なアーキテクチャまたは設計を使用してもよい。例えば、プロセッサは、1つ以上のシングルコアまたはマルチコアアーキテクチャ(またはその両方)で実装されてもよい。
【0098】
本明細書で使用できるプロセッサの例には、マイクロプロセッサ、マイクロコントローラ、デジタルシグナルプロセッサ(「DSP」)、およびソフトウェアを実行するか、またはソフトウェアを実行させることができる他の回路(または前述の任意の組み合わせ)が挙げられる。好適なプロセッサのさらなる例には、中央処理装置(「CPU」)、アレイプロセッサ(またはベクトルプロセッサ)、グラフィックス処理ユニット(「GPU」)、機械学習プロセッサ(「MLP」)、フィールドプログラマブルゲートアレイ(「FPGA」)、プログラマブル論理アレイ(「PLA」)、特定用途向け集積回路(「ASIC」)、およびプログラマブル論理回路が挙げられる。プロセッサは、プログラムコードに含まれる命令を実行するように構成された少なくとも1つのハードウェア回路(例えば、集積回路)を含むことができる。
【0099】
一構成では、プロセッサは、車両の一部であり得るか、またはスマートフォンに含まれ得るか、もしくはスマートフォンまたは車両から遠隔に配置されているものを含む、ネットワークまたはいくつかの他のシステムのいくつかのコンポーネントの一部として含まれ得る。プロセッサが車両の一部である場合、プロセッサは、例えば、HUまたは車両のいくつかの他のコンポーネントに統合することができる。別の構成では、システムまたはデバイスは、車両、スマートフォン、またはネットワーク(またはそれらの任意の組み合わせ)などの別々の場所に複数のプロセッサを含むことができ、システムまたはデバイスのための処理は、ともに動作するこれらのプロセッサの任意の組み合わせによって処理することができる。別の例として、車両は、ラップトップまたはいくつかの他の機械のような携帯型デバイスの一部であり得る補助プロセッサのプラグインを受け入れるように構成された1つ以上のコネクタまたはインターフェースを有することができる。本明細書に記載のプロセッサのいずれも、特定のタスク(ビデオデータの処理など)に専用であり得るか、または同時か否かにかかわらず、複数の機能を処理するように設計され得る。
【0100】
メモリ(またはメモリ要素)は、システムまたはデバイスの任意のコンポーネントが1つ以上の機能を実施できるようにするための命令などの、データを格納するための任意の数の構造を含むことができる。メモリは、本質的に揮発性または非揮発性(またはその両方)であり得、メモリの例には、ランダムアクセスメモリ(「RAM」)、フラッシュメモリ、読み取り専用メモリ(「ROM」)、プログラム可能な読み取り専用メモリ(「PROM」)、消去可能なプログラム可能な読み取り専用メモリ(「EPROM」)、電気的に消去可能なプログラム可能な読み取り専用メモリ(「EEPROM」)、レジスタ、キャッシュ、磁気ディスク、光ディスク、ハードドライブ、他の記憶媒体(例えば、半導体、磁気、または光学ベース)、またはそれらの任意の組み合わせが含まれる。
【0101】
プロセッサおよびメモリのいずれも、有線または無線ネットワークを介して他のデバイスに相互に通信可能に結合されてもよい。例えば、有線ネットワークの場合、プロセッサまたはメモリは、ローカルエリアネットワーク(コントローラエリアネットワーク(「CAN」)バスなど)を介して通信可能に結合されてもよい。別の例として、プロセッサまたはメモリは、BluetoothまたはWiFiリンク、あるいは専有仕様に基づくものを介して通信可能に結合されてもよい。
【0102】
本出願は、2018年8月21日に出願された米国非仮出願第16/107,731号に対する優先権の利益を主張し、この出願は、参照によりその全体が本明細書に組み込まれる。
図1
図2
図3
図4
図5
図6
【国際調査報告】