(57)【要約】【課題】ソフトウェアの依存関係を満たしたままソフトウェアを更新することができる。【解決手段】ソフトウェア更新装置は、１以上の他のソフトウェア更新装置及びサーバとネットワークを介して接続され、サーバから更新用データを受信する受信部と、更新用データを用いてソフトウェアの更新を行う更新部と、他のソフトウェア更新装置と通信する通信部と、更新トリガの受信を含むソフトウェアを更新する条件が記載された更新契機をサーバから受信する更新契機受信部と、他のソフトウェア更新装置に更新トリガを送信する条件を含む通知情報をサーバから受信する通知情報受信部と、通知情報に基づき他のソフトウェア更新装置に更新トリガを送信する更新トリガ通知部と、他のソフトウェア更新装置から更新トリガを受信する更新トリガ受信部と、更新契機に記述されているすべての条件が満たされたと判断すると更新部にソフトウェアの更新を実行させる更新開始判断部とを備える。【選択図】図１
2018106461.tif 000002
【特許請求の範囲】
【請求項１】
１以上の他のソフトウェア更新装置及びサーバとネットワークを介して接続されるソフトウェア更新装置であって、
前記サーバから更新用データを受信する受信部と、
前記更新用データを用いてソフトウェアの更新を行う更新部と、
前記他のソフトウェア更新装置と通信する通信部と、
更新トリガの受信を含む前記ソフトウェアを更新する条件が記載された更新契機を前記サーバから受信する更新契機受信部と、
前記他のソフトウェア更新装置に前記更新トリガを送信する条件を含む通知情報を前記サーバから受信する通知情報受信部と、
前記通知情報に基づき前記他のソフトウェア更新装置に前記更新トリガを送信する更新トリガ通知部と、
前記他のソフトウェア更新装置から前記更新トリガを受信する更新トリガ受信部と、
前記更新契機に記述されているすべての条件が満たされたと判断すると前記更新部に前記ソフトウェアの更新を実行させる更新開始判断部とを備えるソフトウェア更新装置。
【請求項２】
１以上の他のソフトウェア更新装置及びサーバとネットワークを介して接続されるソフトウェア更新装置であって、
前記サーバから更新用データを受信する受信部と、
前記更新用データを用いてソフトウェアの更新を行う更新部と、
前記他のソフトウェア更新装置と通信する通信部と、
更新トリガの受信を含む前記ソフトウェアを更新する条件が記載された更新契機を前記サーバから受信する更新契機受信部と、
前記他のソフトウェア更新装置から前記更新トリガを受信する更新トリガ受信部と、
前記更新契機に記述されているすべての条件が満たされたと判断すると前記更新部に前記ソフトウェアの更新を実行させる更新開始判断部とを備えるソフトウェア更新装置。
【請求項３】
１以上の他のソフトウェア更新装置及びサーバとネットワークを介して接続されるソフトウェア更新装置であって、
前記サーバから更新用データを受信する受信部と、
前記更新用データを用いてソフトウェアの更新を行う更新部と、
前記他のソフトウェア更新装置と通信する通信部と、
前記ソフトウェアを更新する条件が記載された更新契機を前記サーバから受信する更新契機受信部と、
前記他のソフトウェア更新装置に更新トリガを送信する条件を含む通知情報を前記サーバから受信する通知情報受信部と、
前記通知情報に基づき前記他のソフトウェア更新装置に前記更新トリガを送信する更新トリガ通知部と、
前記更新契機に記述されているすべての条件が満たされたと判断すると前記更新部に前記ソフトウェアの更新を実行させる更新開始判断部とを備えるソフトウェア更新装置。
【請求項４】
請求項１または請求項３に記載のソフトウェア更新装置であって、
前記通知情報には、前記ソフトウェアが更新されると前記更新トリガが送信されることが含まれ、
前記更新トリガ通知部は、前記更新部が前記ソフトウェアの更新を完了すると前記更新トリガを送信するソフトウェア更新装置。
【請求項５】
請求項１または請求項３に記載のソフトウェア更新装置であって、
前記通知情報には、前記受信部が前記更新用データを受信すると前記更新トリガが送信されることが含まれ、
前記更新トリガ通知部は、前記受信部が前記更新用データを受信すると前記更新トリガを送信するソフトウェア更新装置。
【請求項６】
請求項１から請求項３までのいずれか一項に記載のソフトウェア更新装置であって、
前記ソフトウェア更新装置は車両に搭載され、
前記更新契機には前記車両のイグニッションのオンまたはオフが含まれ、
前記更新開始判断部は、前記イグニッションのオンまたはオフを検知可能なソフトウェア更新装置。
【請求項７】
請求項１から請求項３までのいずれか一項に記載のソフトウェア更新装置であって、
前記ソフトウェア更新装置はインターネットに接続される車両に搭載され、
前記更新契機には前記インターネットとの接続の切断が含まれ、
前記更新開始判断部は前記接続の切断を検知可能なソフトウェア更新装置。
【請求項８】
請求項１または請求項２に記載のソフトウェア更新装置であって、
記憶部をさらに備え、
前記更新トリガ受信部は受信した前記更新トリガを前記記憶部に記憶させ、
前記更新開始判断部は、前記記憶部に記憶されている前記更新トリガを含めて更新開始の判断を行うソフトウェア更新装置。
【請求項９】
請求項１から請求項３までのいずれか一項に記載のソフトウェア更新装置において、
前記ソフトウェア更新装置は制御装置に接続され、
前記更新部は、前記ソフトウェア更新装置のソフトウェア、および前記制御装置のソフトウェアの少なくとも一方を更新するソフトウェア更新装置。
【請求項１０】
複数のソフトウェア更新装置およびサーバを含むソフトウェア更新システムであって、
前記サーバは、ソフトウェアを更新するための更新用データを配信する配信部を備え、
前記複数のソフトウェア更新装置の各々は、
前記サーバから前記更新用データを受信する受信部と、
前記更新用データを用いて前記ソフトウェアの更新を行う更新部と、
前記サーバおよび他のソフトウェア更新装置と通信する通信部と、
更新トリガの受信を含む前記ソフトウェアを更新する条件が記載された更新契機を前記サーバから受信する更新契機受信部と、
前記他のソフトウェア更新装置に前記更新トリガを送信する条件を含む通知情報を前記サーバから受信する通知情報受信部と、
前記通知情報に基づき前記他のソフトウェア更新装置に前記更新トリガを送信する更新トリガ通知部と、
前記他のソフトウェア更新装置から前記更新トリガを受信する更新トリガ受信部と、
前記更新契機に記述されているすべての条件が満たされたと判断すると前記更新部に前記ソフトウェアの更新を実行させる更新開始判断部とを備えるソフトウェア更新システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア更新装置、およびソフトウェア更新システムに関する。
【背景技術】
【０００２】
近年は自動車の制御に電子制御装置（ＥＣＵ：Ｅｌｅｃｔｒｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）が多用されている。ＥＣＵの動作を司るソフトウェアは、従来は整備士により更新されていたが、このソフトウェアを遠隔で更新するサービスへのニーズが高まっている。例えば、特許文献１には、組み込まれた前記所定のソフトウェアが更新された場合、更新された前記所定のソフトウェアのバージョンを前記通信部から前記他のネットワークデバイスに送信し、更に、前記他のネットワークデバイスからの要求に応じて、更新された前記所定のソフトウェアを前記他のネットワークデバイスに提供し、他方で、前記通信部が前記他のネットワークデバイスに組み込まれた前記所定のソフトウェアのバージョンを受信し、前記判定部が組み込むべき前記所定のソフトウェアの変更を判定した場合、前記他のネットワークデバイスから前記所定のソフトウェアを取得し、組み込まれている前記所定のソフトウェアに替えて、取得した前記所定のソフトウェアを組み込む制御部と、を備えるネットワークデバイスが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−９５９５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されている発明では、ソフトウェアの依存関係を満たしたままソフトウェアを更新することができない。
【課題を解決するための手段】
【０００５】
本発明の第１の態様によるソフトウェア更新装置は、１以上の他のソフトウェア更新装置及びサーバとネットワークを介して接続されるソフトウェア更新装置であって、前記サーバから更新用データを受信する受信部と、前記更新用データを用いてソフトウェアの更新を行う更新部と、前記他のソフトウェア更新装置と通信する通信部と、更新トリガの受信を含む前記ソフトウェアを更新する条件が記載された更新契機を前記サーバから受信する更新契機受信部と、前記他のソフトウェア更新装置に前記更新トリガを送信する条件を含む通知情報を前記サーバから受信する通知情報受信部と、前記通知情報に基づき前記他のソフトウェア更新装置に前記更新トリガを送信する更新トリガ通知部と、前記他のソフトウェア更新装置から前記更新トリガを受信する更新トリガ受信部と、前記更新契機に記述されているすべての条件が満たされたと判断すると前記更新部に前記ソフトウェアの更新を実行させる更新開始判断部とを備える。
本発明の第２の態様によるソフトウェア更新装置は、１以上の他のソフトウェア更新装置及びサーバとネットワークを介して接続されるソフトウェア更新装置であって、前記サーバから更新用データを受信する受信部と、前記更新用データを用いてソフトウェアの更新を行う更新部と、前記他のソフトウェア更新装置と通信する通信部と、更新トリガの受信を含む前記ソフトウェアを更新する条件が記載された更新契機を前記サーバから受信する更新契機受信部と、前記他のソフトウェア更新装置から前記更新トリガを受信する更新トリガ受信部と、前記更新契機に記述されているすべての条件が満たされたと判断すると前記更新部に前記ソフトウェアの更新を実行させる更新開始判断部とを備える。
本発明の第３の態様によるソフトウェア更新装置は、１以上の他のソフトウェア更新装置及びサーバとネットワークを介して接続されるソフトウェア更新装置であって、前記サーバから更新用データを受信する受信部と、前記更新用データを用いてソフトウェアの更新を行う更新部と、前記他のソフトウェア更新装置と通信する通信部と、前記ソフトウェアを更新する条件が記載された更新契機を前記サーバから受信する更新契機受信部と、前記他のソフトウェア更新装置に更新トリガを送信する条件を含む通知情報を前記サーバから受信する通知情報受信部と、前記通知情報に基づき前記他のソフトウェア更新装置に前記更新トリガを送信する更新トリガ通知部と、前記更新契機に記述されているすべての条件が満たされたと判断すると前記更新部に前記ソフトウェアの更新を実行させる更新開始判断部とを備える。
本発明の第４の態様によるソフトウェア更新システムは、複数のソフトウェア更新装置およびサーバを含むソフトウェア更新システムであって、前記サーバは、ソフトウェアを更新するための更新用データを配信する配信部を備え、前記複数のソフトウェア更新装置は、前記サーバから前記更新用データを受信する受信部と、前記更新用データを用いて前記ソフトウェアの更新を行う更新部と、前記サーバおよび他のソフトウェア更新装置と通信する通信部と、更新トリガの受信を含む前記ソフトウェアを更新する条件が記載された更新契機を前記サーバから受信する更新契機受信部と、前記他のソフトウェア更新装置に前記更新トリガを送信する条件を含む通知情報を前記サーバから受信する通知情報受信部と、前記通知情報に基づき前記他のソフトウェア更新装置に前記更新トリガを送信する更新トリガ通知部と、前記他のソフトウェア更新装置から前記更新トリガを受信する更新トリガ受信部と、前記更新契機に記述されているすべての条件が満たされたと判断すると前記更新部に前記ソフトウェアの更新を実行させる更新開始判断部とを備える。
【発明の効果】
【０００６】
本発明によれば、ソフトウェアの依存関係を満たしたままソフトウェアを更新することができる。
【図面の簡単な説明】
【０００７】
【図１】第１の実施の形態におけるソフトウェア更新システムの構成、および機能ブロックを示す図
【図２】第１更新装置のハードウェア構成を示す図
【図３】サーバのハードウェア構成を示す図
【図４】第１クライアントツリーＤＢの構成を示す図
【図５】第２クライアントツリーＤＢの構成を示す図
【図６】サーバツリーＤＢの構成を示す図
【図７】第１クライアントツリーＤＢに含まれる更新契機の構成を示す図
【図８】第２クライアントツリーＤＢに含まれる更新契機の構成を示す図
【図９】第１クライアントツリーＤＢに含まれる通知情報の構成を示す図
【図１０】第２クライアントツリーＤＢに含まれる通知情報の構成を示す図
【図１１】ソフトウェア更新に係るシーケンス図の前半
【図１２】ソフトウェア更新に係るシーケンス図の後半
【図１３】ＨＭＩがユーザへ更新の可否を問い合わせる表示の一例を示す図
【図１４】ＨＭＩがＨＭＩ制御部として動作する場合に、ユーザへ更新の可否を問い合わせる表示の一例を示す図
【図１５】サーバから通知情報を受信した際の動作を表すフローチャート
【図１６】サーバから更新契機を受信した際の動作を表すフローチャート
【図１７】サーバから更新実行指示を受信した際の動作を表すフローチャート
【図１８】サーバからダウンロード実行指示を受信した際の動作を表すフローチャート
【図１９】第２の実施の形態におけるソフトウェア更新システムの構成を示す図
【図２０】第１ＥＣＵのハードウェア構成を示す図
【図２１】第２の実施の形態における第１クライアントツリーＤＢの概略を示す図
【発明を実施するための形態】
【０００８】
―第１の実施の形態―
以下、図１〜図１８を参照して、ソフトウェア更新システムＳの第１の実施の形態を説明する。
図１は、第１の実施の形態におけるソフトウェア更新システムＳの構成、および機能ブロックを示す図である。ソフトウェア更新システムＳは、広域ネットワーク、たとえばインターネット５により相互に接続される車両１とサーバ２とを含む。
【０００９】
車両１は、第１更新装置１０と、第２更新装置１１と、ＬＡＮネットワーク１８とを備える。第１更新装置１０は、ＬＡＮネットワーク１８を介して第２更新装置１１と通信する。また、第１更新装置１０および第２更新装置１１は、サーバ２と通信する。第１更新装置１０および第２更新装置１１は同一のハードウェア構成を有し、同一の機能を有する。ただし第１更新装置１０および第２更新装置１に格納されるデータおよび更新対象のソフトウェアが異なる。以下では主に第１更新装置１０の構成について説明し、第２更新装置１１については第１更新装置１０との相違点を説明する。
【００１０】
本実施の形態では、第１更新装置１０は第１更新装置１０にインストールされているソフトウェア「ＡＢＣ」を更新し、第２更新装置１１は第２更新装置１１にインストールされているソフトウェア「ＰＱＲ」を更新する。ソフトウェア「ＡＢＣ」やソフトウェア「ＰＱＲ」は、ＯＳ上で動作する１つのプログラムでもよいし、複数のプログラム群であってもよい。また、カーネルなどＯＳの一部でもよいし、ＯＳ全体でもよい。
【００１１】
（第１更新装置の機能構成）
第１更新装置１０は、更新管理部３０と更新部３１とＨＭＩ３４と通信部３３とを備える。更新部３１は、サーバ２から受信する更新用データを用いて第１更新装置１０内の不図示のソフトウェアを更新する。ＨＭＩ３４はヒューマンマシンインタフェース、すなわちユーザとのインタフェース部であり、ユーザへの音や映像を用いた情報の提示、およびユーザからの入力を受け付ける。ただしＨＭＩ３４は、ユーザとの物理的なインタフェースを備えず、ユーザとのインタフェースを備える装置を制御するインタフェース制御部として機能してもよい。通信部３３は、サーバ２、第２更新装置１１、および車両１に備えられる不図示のＥＣＵと通信する。
【００１２】
更新管理部３０は、第１制御部７１と、第１クライアントツリーＤＢ７２と、更新データ取得部７３と、更新開始判断部４０と、更新契機受信部４１と、通知情報受信部４２と、更新完了検知部４３と、更新トリガ受信部４４と、更新トリガ通知部４５と、イグニッション受信部４６と、回線状態検知部４７と、を備える。
第１制御部７１は、更新管理部３０の各構成要素に動作指令を出力する。第１クライアントツリーＤＢ７２は、第１更新装置１０に関する情報が格納されたツリー状のデータベースである。第１クライアントツリーＤＢ７２の構成は後に図を用いて説明する。更新データ取得部７３は、サーバ２から第１更新装置１０のソフトウェアの更新に必要なデータである更新用データを取得して、後述するストレージに格納する。
【００１３】
更新開始判断部４０は、更新契機受信部４１が受信する後述する更新契機に基づき、更新部３１がソフトウェアの更新を開始する状況にあると判定すると更新部３１を動作させる。更新契機にはソフトウェアを更新する条件が記載されており、更新開始判断部４０はこの条件を満たしているか否かを、後述する更新トリガの受信、および車両の状態などから判断する。
更新契機受信部４１は、サーバ２から更新契機を受信する後述するストレージに格納する。通知情報受信部４２は、サーバ２から後述する通知情報を受信して後述するストレージに格納する。更新完了検知部４３は、更新部３１によるソフトウェアの更新が完了したことを検知し、更新トリガ通知部４５に伝達する。更新トリガ受信部４４は、第１更新装置１０および第２更新装置１１が送信する更新トリガを受信する。すなわち本実施の形態では、第１更新装置１０が自分自身に更新トリガを送信することもある。更新トリガ受信部４４は、受信した更新トリガを後述するストレージに格納する。更新トリガ通知部４５は、後述する通知情報の記載に基づき更新トリガを送信する。
【００１４】
イグニッション受信部４６は、車両１のエンジンの稼働状態、またはイグニッションスイッチの設定状態を取得し、更新開始判断部４０および更新トリガ通知部４５に通知する。イグニッション受信部４６は、所定時間ごとにその状態を通知してもよいし、状態に変化があった場合、たとえばイグニッションがオンやオフに操作された場合や、エンジンが停止した場合などに通知してもよい。
回線状態検知部４７は、第１更新装置１０のインターネット５への接続状態を取得し、更新開始判断部４０および更新トリガ通知部４５に通知する。回線状態検知部４７は、所定時間ごとにその状態を通知してもよいし、状態に変化があった場合に通知してもよい。ただし回線状態検知部４７は、インターネット５への接続可否に代えて、特定のＵＲＩへのアクセス可否を判断して通知してもよい。たとえば所定のオンラインサービスの提供に必要なリソースが格納されたＵＲＩへのアクセス可否を判断してもよい。
【００１５】
（第２更新装置の機能構成）
第２更新装置１１は、その機能として、更新管理部８０と、更新部８１と、通信部８３と、ＨＭＩ８４とを備える。更新管理部８０、更新部８１、通信部８３、およびＨＭＩ８４は、第１更新装置１０の更新管理部３０、更新部３１、通信部３３、およびＨＭＩ３４にそれぞれ対応する。更新管理部８０は、第２制御部９１、および第２クライアントツリーＤＢ９２を含む。第２制御部９１、および第２クライアントツリーＤＢ９２は、第１更新装置１０の第１制御部７１、および第１クライアントツリーＤＢ７２にそれぞれ対応する。図１では更新管理部８０の構成として第２制御部９１および第２クライアントツリーＤＢ９２のみを記載しているが、更新管理部８０は更新管理部３０が備える全ての機能を備える。各機能の説明は、第１更新装置１０と同様なので省略する。
【００１６】
（サーバの機能構成）
サーバ２は、その機能として、サーバ制御部６１と、サーバツリーＤＢ６２と、データ提供部６３とを備える。
サーバ制御部６１は、第１制御部７１や第２制御部９１と規定のメッセージをやり取りし、第１制御部７１や第２制御部９１によるソフトウェア更新の処理を実現する。具体的な処理および手順は後述する。
【００１７】
サーバ制御部６１は、ＯＭＡ（Open Mobile Alliance）において定義されるＤＭ（Device Management）サーバであり、一方、第１制御部７１および第２制御部９１はＯＭＡにおいて定義されるＤＭクライアントである。ＯＭＡ  ＤＭとは、携帯電話のソフトウェア更新で使用される技術の一種であり、ツリー状のデータベースへのアクセスを介してサーバとクライアント間でソフトウェア更新に必要な情報をやりとりする仕組みである。データ提供部６３は、サーバ制御部６１からの動作指令、第１更新装置１０からの要求、および第２更新装置１１からの要求に基づきソフトウェア更新に必要な各種の情報を第１更新装置１０、および第２更新装置１１に提供する。ソフトウェア更新に必要な各種の情報とは、後述する更新契機、通知情報、および更新データである。これらの情報は、ＨＴＴＰやＦＴＰなどの通信プロトコルを用いて送信される。
【００１８】
（第１更新装置のハードウェア構成）
図２は、第１更新装置１０のハードウェア構成を示す図である。第１更新装置１０は、記憶部１５１と、ＣＰＵ１５２と、ストレージ１５９と、ＷＡＮ  Ｉ／Ｆ１５４と、ＣＡＮ  Ｉ／Ｆ１５５と、ＬＡＮ  Ｉ／Ｆ１５７と、バス１５６と、ＨＭＩ１５８とを備える。
ＣＰＵ１５２は、第１更新装置１０が扱う情報を制御し、記憶部１５１に保存されているソフトウェアの記述に従い動作する。記憶部１５１は、ＣＰＵ１５２が扱う情報を一時的に保存し、バス１５６を介してデータをやり取りするメモリーである。ストレージ１５９は、ソフトウェアなどが保存される不揮発性の記憶装置であり、ファイルシステムを搭載するハードディスクやＳＳＤなどであってもよいしファイルシステムを搭載しないフラッシュＲＯＭなどの記憶素子であってもよい。記憶部１５１、ＣＰＵ１５２およびストレージ１５９は、図１の更新管理部３０および更新部３１に対応する。
【００１９】
ＷＡＮ  Ｉ／Ｆ１５４はインターネット５を介してサーバ２への情報を無線で送受信するインタフェースであり、様々な無線通信規格、たとえばＬＴＥ，３Ｇ，４Ｇ，ＩＥＥＥ８０２．１６，ＩＥＥＥ８０２．１１，赤外線などを用いることができる。ＣＡＮ  Ｉ／Ｆ１５５は、車両１で使用される専用のネットワークであるＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）のインタフェースであり、車両１に搭載される不図示のＥＣＵから車両１に関する情報、たとえばイグニッションの状態などを取得する。ＬＡＮ  Ｉ／Ｆ１５７は、ＬＡＮネットワーク１８と接続するインタフェースである。ＷＡＮ  Ｉ／Ｆ１５４、ＣＡＮ  Ｉ／Ｆ１５５およびＬＡＮ  Ｉ／Ｆ１５７は、図１の通信部３３に対応する。ＨＭＩ１５８は、液晶ディスプレイなどユーザへ情報を提示する装置、およびタッチパネルなどユーザからの入力を受け付ける装置から構成される。ＨＭＩ１５８はＣＰＵ１５２の動作指令に基づきユーザへ情報を提示し、ユーザからの入力をＣＰＵ１５２に伝達する。ＨＭＩ１５８は、図１のＨＭＩ３４に対応する。
以上が第１更新装置１０のハードウェア構成である。前述のとおり第２更新装置１１は第１更新装置１０と同一のハードウェア構成なので、説明を省略する。
【００２０】
（サーバのハードウェア構成）
図３は、サーバ２のハードウェア構成を示す図である。サーバ２は、記憶部１８０と、ＣＰＵ１８１と、ストレージ１８３と、ＷＡＮ  Ｉ／Ｆ１８４と、バス１８２とから構成される。
サーバ２のＣＰＵ１８１は、サーバ２で扱う情報の出入りを制御し、記憶部１８０に保存されているソフトウェアの記述に従い動作する。記憶部１８０は、ＣＰＵ１８１が扱う情報を一時的に保存し、バス１８２を介してデータをやり取りするメモリーである。ストレージ１８３は、第１更新装置１０および第２更新装置１１のソフトウェアを保存し、記憶部１８０に保持されている情報を電源切断後も保持する不揮発性の記憶装置である。ストレージ１８３は、ファイルシステムを搭載するハードディスクやＳＳＤやホログラフドライブなどであってもよい。記憶部１８０、ＣＰＵ１８１およびストレージ１８３は、図１のサーバ制御部６１およびサーバツリーＤＢ６２に対応する。ＷＡＮ  Ｉ／Ｆ１８４はバス１８２を介して情報を無線で送受信するインタフェースであり、たとえばＬＴＥ，３Ｇ，４Ｇ，ＩＥＥＥ８０２．１６，ＩＥＥＥ８０２．１１，赤外線などを用いることができる。ＷＡＮ  Ｉ／Ｆ１８４は、図１のデータ提供部６３に対応する。
【００２１】
（第１クライアントツリーＤＢ）
図４は、第１更新装置１０に備えられる第１クライアントツリーＤＢ７２の構成を示す図である。第１クライアントツリーＤＢ７２はツリー構造を有するデータベースであり、複数のノードから構成される。ノードは情報を包含できるが、ノードが包含する情報だけでなくノードの存在の有無やノードの名称が後述する制御に使われる場合もある。
【００２２】
第１クライアントツリーＤＢ７２におけるツリー構造の頂点はｒｏｏｔ１０１であり、ｒｏｏｔ１０１は配下に３つのノード、すなわちＤｅｖＩｎｆｏ１０２，ＤｅｖＤｅｔａｉｌ１０４，および１ｓｔＳＣＭ１０５を有する。ＤｅｖＩｎｆｏ１０２は、車両１の識別子である１ｓｔＶＩＮ１０３のようなデバイスの特徴情報が配下に配置される。ＤｅｖＤｅｔａｉｌ１０４は車両の付属情報が配下に格納されるが図４ではＤｅｖＤｅｔａｉｌ１０４の配下のノードは省略している。１ｓｔＳＣＭ１０５は、ソフトウェア更新で使用するノードを配下に持つ。以下では１ｓｔＳＣＭ１０５の配下のノードを詳しく説明する。１ｓｔＳＣＭ１０５は、配下にダウンロードに関するノードであるＤｏｗｎｌｏａｄ１０６、およびソフトウェアを更新するためのノードであるＩｎｖｅｎｔｏｒｙ１１０を有する。
【００２３】
Ｄｏｗｎｌｏａｄ１０６はダウンロード対象であるパッケージを示すＡＢＣｖ２ｓ１０７を配下に有する。このノード名はたとえば、「ＡＢＣ」というソフトウェアのバージョン２の安定版（Ｓｔａｂｌｅ）である「ＡＢＣｖ２ｓ」というパッケージ名を意味する。なお第１更新装置１０がダウンロード対象とするソフトウェアが他にもある場合は、Ｄｏｗｎｌｏａｄ１０６の配下にＡＢＣｖ２ｓ１０７と並列に置かれる。
【００２４】
ＡＢＣｖ２ｓ１０７は、パッケージのダウンロード先ＵＲＬが格納されるＰｋｇＵＲＬ１０８、ダウンロードに関する状態が格納されるＳｔａｔｕｓ１０９、動作指令を配下のノードとして有するＯｐｅｒａｔｉｏｎ１１０を配下に有する。サーバ２の指令に基づきＯｐｅｒａｔｉｏｎ１１０の配下にＤｏｗｎｌｏａｄ１１１が配置されると、更新データ取得部７３を動作してＰｋｇＵＲＬ１０８により示されるＵＲＬから「ＡＢＣｖ２ｓ」というパッケージをダウンロードする。なおＡＢＣｖ２ｓ１０７以下のノードはサーバ２からインターネット５を介して追加されたものである。
【００２５】
１ｓｔＳＣＭ１０５の配下にＤｏｗｎｌｏａｄ１０６と並列に配置されるＩｎｖｅｎｔｏｒｙ１１０は、Ｄｅｌｉｖｅｒｅｄ１２１およびＤｅｐｌｏｙｅｄ１３０のノードを配下に有する。
Ｄｅｌｉｖｅｒｅｄ１２１以下には、ダウンロードしたパッケージを用いてソフトウェアの更新を行うための情報が格納される。Ｄｅｌｉｖｅｒｅｄ１２１は配下に、ダウンロードしたパッケージの名称を有するＡＢＣｖ２ｓ１２２のノードを有する。ＡＢＣｖ２ｓ１２２は、更新に関する状態が格納されるＳｔａｔｕｓ１２３と、動作指令を配下のノードとして有するＯｐｅｒａｔｉｏｎ１２４とを配下に有する。Ｏｐｅｒａｔｉｏｎ１２４は、サーバ２の指令に基づき配置され、存在することが更新を実行する条件の１つであるＩｎｓｔａｌｌ１２５と、更新を実行する付加的な条件を格納するＥｘｔ１２６を配下に有する。Ｅｘｔ１２６の配下に存在する更新契機１９１には更新を実行する付加的な条件が格納される。すなわちＩｎｓｔａｌｌ１２５というノードが存在し、更新契機１９１に格納されるすべての条件が満たされると、ダウンロード済みのパッケージである「ＡＢＣｖ２ｓ」のインストール、すなわちソフトウェア「ＡＢＣ」の更新が開始される。更新契機１９１の構成については後述する。
【００２６】
Ｄｅｐｌｏｙｅｄ１３０以下には、ソフトウェアの現在の情報が格納される。Ｄｅｐｌｏｙｅｄ１３０は配下に、ソフトウェアの名称を有するノード、すなわちＡＢＣ１３１を有する。ＡＢＣ１３１は配下に、入手可能な最新のバージョン番号が格納されるＡｖａｉｌａｂｌｅＶｅｒｓｉｏｎ１３２と、現在のバージョン番号が格納されるＶｅｒｓｉｏｎ１３３と、通知情報１９５を配下に有するＥｘｔ１３７とを有する。通知情報１９５については後述する。
【００２７】
（第２クライアントツリーＤＢ）
図５は、第２更新装置１１に備えられる第２クライアントツリーＤＢ９２の構成を示す図である。第２クライアントツリーＤＢ９２はツリー構造を有するデータベースであり、複数のノードから構成される。第２クライアントツリーＤＢ９２の構成は、第１クライアントツリーＤＢ７２と概ね同じである。すなわち原則として、第１クライアントツリーＤＢ７２を構成する各ノードの符号の１００の位を「１」から「２」に変更したものが第２クライアントツリーＤＢ９２の各ノードである。
【００２８】
ただし、第１更新装置１０と第２更新装置１１に備えられるソフトウェアは異なりバージョン番号も異なるとすると、たとえばＤｏｗｎｌｏａｄ２０６の配下にはＰＱＲｖ３ｓ２０７が置かれる。このノード名は「ＰＱＲ」というソフトウェアのバージョン３の安定版である「ＰＱＲｖ３ｓ」というパッケージ名を意味する。また、ダウンロードしたパッケージを用いてソフトウェアの更新を行うための情報が格納されるＤｅｌｉｖｅｒｅｄ２２１の配下には、ダウンロードするパッケージ名と同一の名称のＰＱＲｖ３ｓ２２２が置かれる。さらにソフトウェアの現在の情報が格納されるＤｅｐｌｏｙｅｄ２３０の配下には、ソフトウェアの名称を有するノードであるＰＱＲ２３１が置かれる。
【００２９】
（サーバツリーＤＢ）
図６は、サーバ２に備えられるサーバツリーＤＢ６２の構成を示す図である。サーバツリーＤＢ６２はツリー構造を有するデータベースであり、複数のノードから構成される。サーバツリーＤＢ６２には、複数の車両に搭載された複数の更新装置に関する情報が格納される。更新装置に関する情報は、それぞれの更新装置に備えられるデータベースの一部を通信を介して複製することにより得られる。すなわちサーバツリーＤＢ６２には、第１クライアントツリーＤＢ７２の一部のノードと、第２クライアントツリーＤＢ９２の一部のノードが含まれる。
サーバツリーＤＢ６２におけるツリー構造の頂点はｒｏｏｔ１００１であり、配下に各車両を示すノードである１ｓｔＶＩＮ１０１０、２ｎｄＶＩＮ１０２０、・・を有する。これらのノードの配下には車両ごとの情報が格納される。１ｓｔＶＩＮ１０１０は配下に車両１の情報を格納するノードである、ＤｅｖＩｎｆｏ１００２、ＤｅｖＤｅｔａｉｌ１００４、１ｓｔＳＣＭ１１０５、および２ｎｄＳＣＭ１２０５を有する。
【００３０】
ＤｅｖＩｎｆｏ１００２以下のノードは、第１クライアントツリーＤＢ７２におけるＤｅｖＩｎｆｏ１０２以下のノード、および第２クライアントツリーＤＢ９２におけるＤｅｖＩｎｆｏ２０２以下のノードに対応する。ＤｅｖＤｅｔａｉｌ１００４は、第１クライアントツリーＤＢ７２におけるＤｅｖＤｅｔａｉｌ１０４、および第２クライアントツリーＤＢ９２におけるＤｅｖＤｅｔａｉｌ２０４に相当する。１ｓｔＳＣＭ１１０５以下の各ノードは、第１クライアントツリーＤＢ７２における１ｓｔＳＣＭ１０５以下の各ノードに相当する。すなわちサーバツリーＤＢ６２における符号「１１ｘｘ」は第１クライアントツリーＤＢ７２における符号「１ｘｘ」に相当する。２ｎｄＳＣＭ１２０５以下の各ノードは、第２クライアントツリーＤＢ９２における２ｎｄＳＣＭ２０５以下の各ノードに相当する。すなわちサーバツリーＤＢ６２における符号「１２ｘｘ」は第２クライアントツリーＤＢ９２における符号「２ｘｘ」に相当する。
【００３１】
（更新契機）
第１クライアントツリーＤＢ７２に含まれる更新契機１９１、および第２クライアントツリーＤＢ９２に含まれる更新契機２９１を図７および図８を用いて説明する。前述のとおり更新契機には更新を実行する付加的な条件が格納される。更新契機１９１と更新契機２９１の構成は似ているので主に更新契機１９１を説明し、更新契機２９１は更新契機１９１との相違点を説明する。
【００３２】
図７に示すように、更新契機１９１は、配下に３つのノード、すなわち車両状態１９１１、第１更新装置１９１４Ａ、および第２更新装置１９１４Ｂを有する。車両状態１９１１以下には全般的な更新の条件が格納され、第１更新装置１９１４Ａ以下には第１更新装置１０に関する更新の条件が格納され、第２更新装置１９１４Ｂ以下には第２更新装置１１に関する更新の条件が格納される。ただし子ノードが存在しない場合は親ノードは省略してもよく、たとえば第１更新装置１０に関する更新の条件がない場合は第１更新装置１９１４Ａがなくてもよい。
【００３３】
車両状態１９１１は、ＩＧＮ情報１９１２とユーザ許諾１９１３とを配下に有する。ＩＧＮ情報１９１２は「オン」または「オフ」の値をとり、イグニッションが「オン」または「オフ」に操作されることが更新の条件の１つであることを示す。ユーザ許諾１９１３は、ユーザから更新の許諾を受けることが更新の条件の１つであることを示す。
第１更新装置１９１４Ａは配下に直列に接続される３つのノードである、ＡＢＣ１９１５Ａ、Ｄｏｗｎｌｏａｄ１９１６Ａ，およびＶｅｒｓｉｏｎ１９１７Ａを有する。これらのノードは、第１更新装置１０において「ＡＢＣ」という名称のソフトウェアのＶｅｒｓｉｏｎ１９１７Ａにより示されるバージョンが「ダウンロード」されることが更新の条件の１つであることを示す。
【００３４】
第２更新装置１９１４Ｂは配下に直列に接続される３つのノードである、ＰＱＲ１９１５Ｂ、Ｉｎｓｔａｌｌ１９１６Ｂ，およびＶｅｒｓｉｏｎ１９１７Ｂを有する。これらのノードは、第２更新装置１１において「ＰＱＲ」という名称のソフトウェアのＶｅｒｓｉｏｎ１９１７Ｂにより示されるバージョンが「インストール」されることが更新の条件の１つであることを示す。
【００３５】
図７に示されていることをまとめると、更新契機１９１以下に格納される情報から、更新を実行する付加的な条件は、車両１のイグニッションが所定の状態であり、ユーザから許諾が得られ、ソフトウェア「ＡＢＣ」の所定のバージョンが第１更新装置１０でダウンロード済みであり、ソフトウェア「ＰＱＲ」の所定のバージョンが第２更新装置１１にインストールされていることである。図４に示したように更新契機１９１はＡＢＣｖ２ｓ１２２の配下に存在するので、更新契機１９１は、ＡＢＣｖ２ｓ１２２をインストールする付加的な条件、換言するとソフトウェア「ＡＢＣ」をバージョン「２」に更新するための付加的な条件である。
【００３６】
図８に示すように、更新契機２９１は、配下に３つのノード、すなわち車両状態２９１１、第１更新装置２９１４Ａ、および第２更新装置２９１４Ｂを有する。車両状態２９１１は、回線状態２９１２を配下に有する。回線状態２９１２は、インターネット５との接続が切断されたことが条件であることを示す。第１更新装置２９１４Ａ、および第２更新装置２９１４Ｂの構成は、図７において説明した第１更新装置１９１４Ａと同様なので省略する。
【００３７】
図８に示されていることをまとめると、更新契機２９１以下に格納される情報から、更新を実行する付加的な条件は、インターネット５との接続が切断され、ソフトウェア「ＡＢＣ」の所定のバージョンが第１更新装置１０でダウンロード済みであり、ソフトウェア「ＰＱＲ」の所定のバージョンが第２更新装置１１でダウンロード済みであることである。図５に示したように更新契機２９１はＰＱＲｖ３ｓ２２２の配下に存在するので、更新契機２９１は、ＰＱＲｖ３ｓ２２２をインストールする付加的な条件、換言するとソフトウェア「ＰＱＲ」をバージョン「３」に更新するための付加的な条件である。
【００３８】
（通知情報）
第１クライアントツリーＤＢ７２に含まれる通知情報１９５、および第２クライアントツリーＤＢ９２に含まれる通知情報２９５を図９および図１０を用いて説明する。通知情報１９５には更新トリガ通知部４５が更新トリガを送信する条件、送信先、および送信内容の情報が含まれる。
図９に示すように、通知情報１９５は、Ｄｏｗｎｌｏａｄ完了１９５１ＡとＩｎｓｔａｌｌ完了１９５１Ｂの２つのノードを有する。Ｄｏｗｎｌｏａｄ完了１９５１Ａ以下は、パッケージのダウンロード完了が条件となって通知される更新トリガに関する情報が格納される。Ｄｏｗｎｌｏａｄ完了１９５１Ａは、配下に第１更新装置１９５２Ａと第２更新装置１９５２Ｂを有する。ただし本実施の形態では、第１更新装置１９５２Ａおよび第２更新装置１９５２Ｂはノードの名称自体に意味はない。
【００３９】
第１更新装置１９５２Ａは配下に、宛先１９５３Ａ、パッケージ１９５４Ａ、Ｖｅｒｓｉｏｎ１９５５Ａの３つのノードを有する。宛先１９５３Ａには更新トリガの送信先を示す情報、たとえば第１更新装置１０のＩＰアドレスやループバックアドレス（１２７．０．０．１）が格納される。パッケージ１９５４Ａは、更新トリガにパッケージの名称を含めることを示す。Ｖｅｒｓｉｏｎ１９５５Ａは、更新トリガに更新後のバージョン情報を含めることを示す。第２更新装置１９５２Ｂの構成は第１更新装置１９５２Ａと同様である。
Ｉｎｓｔａｌｌ完了１９５１Ｂは配下に、インストール完了が条件となって通知される更新トリガに関する情報が格納される。ただし図９に示す例ではインストール完了が条件となる更新トリガが存在しないので配下にノードを有しない。
【００４０】
図９に示されていることをまとめると、パッケージ「ＡＢＣｖ２ｓ」のダウンロードが完了すると、宛先１９５３Ａおよび宛先１９５３Ｂに対してパッケージの名称とバージョンの情報を含む更新トリガを送信する。
図１０に示すように、通知情報２９５には第２更新装置１１の更新トリガ通知部が更新トリガを送信する条件、送信先、および送信内容の情報が含まれる。通知情報２９５は、通知情報１９５と比較すると、ノードの有無、およびノードに格納される値は異なるが、構成は通知情報１９５と同様なので構成の説明を省略する。
図１０に示されていることをまとめると、次の２点が示されている。１点目はパッケージ「ＰＱＲｖ３ｓ」のダウンロードが完了すると、宛先２９５３Ａおよび宛先２９５３Ｂに対してダウンロードしたパッケージの名称とバージョンの情報を含む更新トリガを送信することである。２点目はパッケージ「ＰＱＲｖ３ｓ」のインストールが完了すると、宛先２９５３Ｃに対してインストールしたパッケージの名称とバージョンの情報を含む更新トリガを送信することである。
【００４１】
（処理シーケンス）
サーバ２、第１更新装置１０、および第２更新装置１１におけるソフトウェア更新に係るメッセージのやり取りを図１１〜図１２のシーケンス図を用いて説明する。いずれのシーケンス図も図示上方から下方に向かって時間が経過しており、図１１の下部から図１２の上部に時間が連続している。なお図１１ではサーバ２と第１更新装置１０におけるメッセージのやり取りを詳細に説明し、図１２ではサーバ２と第２更新装置１１におけるメッセージのやり取りは簡略して記載する。
【００４２】
以下の説明するシーケンスが開始される時点では、第１更新装置１０に備えられるソフトウェア「ＡＢＣ」のバージョンは「１」であり、第２更新装置１１に備えられるソフトウェア「ＰＱＲ」のバージョンは「２」である。シーケンスが開始される時点では、第１クライアントツリーＤＢ７２は、Ｄｏｗｎｌｏａｄ１０６の配下にノードを有さず、Ｄｅｌｉｖｅｒｅｄ１２１の配下にもノードを有しない。シーケンスが開始される時点では、第２クライアントツリーＤＢ９２は、Ｄｏｗｎｌｏａｄ２０６の配下にノードを有さず、Ｄｅｌｉｖｅｒｅｄ２２１の配下にもノードを有しない。
【００４３】
始めに第１更新装置１０の第１制御部７１が、サーバ制御部６１に車両を識別するＶＩＮ情報を送信する（Ｓ３０１）。これによりサーバ２は通信対象の車両が車両１であることを識別し、不図示のデータベースから車両１に備えられるソフトウェアの最新バージョンの情報を取得する。最新バージョンの情報とはたとえば、ソフトウェア「ＡＢＣ」の最新バージョンが「２」であり、ソフトウェア「ＰＱＲ」の最新バージョンが「３」であることである。次にサーバ制御部６１は、取得した最新バージョンの情報およびバージョン情報取得要求を第１制御部７１に送信する（Ｓ３０２）。
【００４４】
第１制御部７１は、受信した最新バージョンの情報を第１クライアントツリーＤＢ７２に格納する（Ｓ３５０）。詳述すると、第１クライアントツリーＤＢ７２におけるＤｅｐｌｏｙｅｄ１３０の配下のＡＢＣ１３１の配下のＡｖａｉｌａｂｌｅＶｅｒｓｉｏｎ１３２のノードに「２」という値が格納される。なお、サーバ２から受信した最新バージョンの情報にはソフトウェア「ＰＱＲ」の情報も含まれるが、第１クライアントツリーＤＢ７２にはソフトウェア「ＰＱＲ」についての情報が格納されていないので、ソフトウェア「ＰＱＲ」の情報は破棄される。続いて第１制御部７１は、第１クライアントツリーＤＢ７２からＤｅｐｌｏｙｅｄ１３０以下の全てのノードの情報を取得し（Ｓ３５１）、サーバ制御部６１に送信する（Ｓ３０３）。
【００４５】
サーバ制御部６１は、受信したＤｅｐｌｏｙｅｄ１３０以下のノードの情報を、サーバツリーＤＢ６２に１ｓｔＳＣＭ１１０５のＤｅｐｌｏｙｅｄ１１３０以下の情報として保存する。そして保存したＤｅｐｌｏｙｅｄ１１３０以下のノードの情報に基づきソフトウェアの更新の要否を判断する。すなわちサーバ制御部６１は、ＡｖａｉｌａｂｌｅＶｅｒｓｉｏｎ１１３２とＶｅｒｓｉｏｎ１１３３を比較し、ＡｖａｉｌａｂｌｅＶｅｒｓｉｏｎ１１３２の方が新しい場合に更新が必要であると判断する（Ｓ３５２）。
【００４６】
次にサーバ制御部６１は、サーバ２に備えられるストレージ１８３から通知情報１９５およびソフトウェア更新情報を取得する（Ｓ３６１）。ソフトウェア更新情報とは、具体的には、図４のＤｏｗｎｌｏａｄ１０６以下のノードであってＤｏｗｎｌｏａｄ１１１を除くノードである。そしてサーバ制御部６１は、ソフトウェア更新情報と通知情報１９５を第１制御部７１に送信する（Ｓ３０４）。
第１制御部７１は、受信した情報を第１クライアントツリーＤＢ７２に格納する。具体的には、通知情報１９５をＥｘｔ１３７の配下に追加し（Ｓ３６２）、ソフトウェア更新情報を１ｓｔＳＣＭ１０５の配下にＤｏｗｎｌｏａｄ１０６として追加する（Ｓ３５３）。そして、サーバ制御部６１に更新情報を設定した旨の応答を返す（Ｓ３０５）。
【００４７】
サーバ制御部６１は、第１更新装置１０にＡＢＣｖ２ｓ１０７というパッケージをダウンロードさせるために、第１制御部７１にダウンロード実行指示を送信する（Ｓ３０８）。この指示は第１クライアントツリーＤＢ７２のＯｐｅｒａｔｉｏｎ１１０の配下にＤｏｗｎｌｏａｄ１１１を作成させるものである。第１制御部７１は、第１クライアントツリーＤＢ７２のＯｐｅｒａｔｉｏｎ１１０の配下にＤｏｗｎｌｏａｄ１１１が作成されると、更新データ取得部７３にダウンロードの実行を指示する（Ｓ３５６）。更新データ取得部７３は、ＰｋｇＵＲＬ１０８に記載されたＵＲＬから更新データを取得する。ここで、ＰｋｇＵＲＬ１０８に記載されたＵＲＬがサーバ２の内部であるとすると、更新データ取得部７３はデータ提供部６３にＡＢＣｖ２ｓというパッケージを要求し（Ｓ３０９）、パッケージを取得する（Ｓ３１０）。更新データ取得部７３は、パッケージの取得が完了すると第１制御部７１にダウンロードが終了したことを通知する（Ｓ３５７）。ここで第１制御部７１は、後述する更新トリガ通知送信処理を実行する（Ｓ３６８）。第１制御部７１は、ダウンロードが終了したことをサーバ制御部６１に送信する（Ｓ３１１）。
【００４８】
次にサーバ制御部６１は、ソフトウェア更新を実行してもよいかをユーザに確認するためのソフトウェア更新許可要求メッセージを第１制御部７１に送信する（Ｓ３０６）。第１制御部７１は、ＨＭＩ３４にソフトウェアの更新許可を求めるメッセージを表示させる（Ｓ３５４）。ＨＭＩ３４は要求されたメッセージを表示し、ユーザからの応答を受け取って第１制御部７１に返す（Ｓ３５５）。第１制御部７１は、許可か不許可かの情報をサーバ制御部６１に送信する（Ｓ３０７）。ただしここではユーザが許可したとして、以下は図１２を参照して説明を続ける。
次にサーバ制御部６１は、ストレージ１８３から更新契機１１９１を取得し（Ｓ３６０）、ソフトウェア更新の実行を指示するメッセージとともに第１制御部７１に送信する（Ｓ３１４）。ただし更新契機１１９１はサーバツリーＤＢ６２から読みだされてもよい。
【００４９】
第１制御部７１は、受信した更新契機を更新契機１９１として第１クライアントツリーＤＢ７２に保存し（Ｓ３６３）、ソフトウェア更新の実行を指示するメッセージに基づきＯｐｅｒａｔｉｏｎ１２４の配下にノードＩｎｓｔａｌｌ１２５を作成する。そして第１制御部７１は、更新契機１９１を解釈して更新トリガを待ち（Ｓ３６５）、所定時間ごとに全ての更新トリガが揃っているかを判断する（Ｓ３６６）。ここでは、すべての更新トリガが揃っていないので更新トリガ待ち（Ｓ３６５）を継続する。具体的には、図７に示した更新契機１９１において第２更新装置１１におけるソフトウェア「ＰＱＲ」のバージョン「３」のインストール完了を示す更新トリガを待つ。
【００５０】
第２更新装置１１による、ＶＩＮ送信（Ｓ３０１Ａ）から、更新契機２９１の第２クライアントツリーＤＢ９２への保存（Ｓ３６３Ａ）までの処理は第１更新装置１０によるＳ３０１〜Ｓ３６３の処理と同様である。更新契機２９１は図８に示したように回線状態２９１２がオフラインであり、第１更新装置１０においてソフトウェア「ＡＢＣ」のダウンロードが完了し、第２更新装置１１においてソフトウェア「ＰＱＲ」のダウンロードが完了することなので、Ｓ３６３Ａが実行された時点で全ての条件が満たされている。そのため第２制御部９１は、更新部８１に更新開始の指令を送信し（Ｓ３１７）、更新部８１にソフトウェア更新処理（Ｓ３９０）を実行させる。更新部８１は更新処理が終了すると第２制御部９１に通知する（Ｓ３１８）。第２制御部９１は、更新処理が終了した旨の通知を受信すると、通知情報２９５に基づき更新トリガを送信する（Ｓ３６８、Ｓ３６９）。通知情報２９５は、図１０に示すように宛先４７２に対して更新が完了したパッケージの名称とバージョン番号とを通知することを示している。そのため第２制御部９１は、宛先４７２が第１更新装置１０を示していることから、更新が完了したパッケージの名称である「ＰＱＲｖ３ｓ」およびバージョン番号である「３」を含みインストールが完了したことを示す更新トリガを第１更新装置１０に送信する。
【００５１】
更新トリガを受信した第１制御部７１は、全ての更新トリガが揃っていると判断し（Ｓ３６６）て更新部３１に更新開始させる（Ｓ３１７）。更新部３１はソフトウェア更新処理３９０を実行し、更新処理が終了すると終了した旨の通知を第１制御部７１に出力する（Ｓ３１８）。
以上説明した動作により、複数のソフトウェア更新装置が存在するシステムにおいて、ソフトウェア同士の依存関係を保持したままソフトウェアを更新することができる。
【００５２】
（画面表示）
図１３は、図１１のＳ３５４においてＨＭＩ３４がユーザへ更新の可否を問い合わせるメッセージの一例を示す図である。図１３に示す表示は、第１更新装置１０が備えるＨＭＩ３４に表示されている。図１３に示す例では第１更新装置１０はカーナビゲーション機能を兼ね備えており、カーナビゲーションに用いられるインタフェース画面に重畳して、更新の可否を問い合わせるメッセージが表示される。
図１４は、ＨＭＩ３４がＨＭＩ制御部として動作する場合に、第１更新装置１０以外の装置に表示されるユーザへ更新の可否を問い合わせるメッセージの一例を示す図である。図１４に示す例では、ユーザの所持する携帯端末に表示される。
【００５３】
（フローチャート）
第１更新装置１０がサーバ２から通知情報１９５、更新契機１９１、更新実行指示、およびダウンロード実行指示を受信した際の動作を図１５〜図１８を参照して説明する。以下に説明するフローチャートの各ステップの実行主体は、第１更新装置１０のＣＰＵ１５２である。なお第２更新装置１１も第１更新装置１０と同様な処理を行う。
図１５は、第１更新装置１０がサーバ２から通知情報１９５を受信した際の処理を表すフローチャートである。ステップＳ２１０３では、ＣＰＵ１５２は受信した通知情報１９５を格納する第１クライアントツリーＤＢ７２のノードを検索する。続くステップＳ２１０４では、ＣＰＵ１５２は受信した通知情報１９５をステップＳ２１０３において特定したノードに保存し、図１５に示す処理を終了する。
【００５４】
図１６は、第１更新装置１０がサーバ２から更新契機１９１を受信した際の処理を表すフローチャートである。ステップＳ２１０７では、ＣＰＵ１５２は受信した更新契機１９１を格納する第１クライアントツリーＤＢ７２のノードを検索する。続くステップＳ２１０８では、ＣＰＵ１５２は受信した更新契機１９１をステップＳ２１０７において特定したノードに保存し、図１６に示す処理を終了する。
【００５５】
図１７は、第１更新装置１０がサーバ２から更新実行指示を受信した際の処理を表すフローチャートである。サーバ２から更新実行指示を受信することにより、前述のとおりＩｎｓｔａｌｌ１２５ノードが作成され更新を実行する条件の一つが満たされるが、ここではＩｎｓｔａｌｌ１２５ノードの作成についての説明は省略する。
【００５６】
ステップＳ２１１０では、ＣＰＵ１５２は第１クライアントツリーＤＢ７２から更新契機１９１を取得する。ＣＰＵ１５２は、続くステップＳ２１１１では更新トリガを待ち受けるとともに車両条件が満たされることを待機し、続くステップＳ２１２０では受信した更新トリガをストレージ１５９または記憶部１５１に保存する。続くステップＳ２１１２では、ＣＰＵ１５２は更新契機１９１に記載されたすべての更新トリガが揃ったか、換言すると更新を実行する付加的な条件がすべて満たされたか否かを判断する。ＣＰＵ１５２は、全ての更新トリガが揃ったと判断する場合はステップＳ２１１３に進み、１つでも満たされない条件があると判断する場合はステップＳ２１１１に戻る。
【００５７】
ステップＳ２１１３では、ＣＰＵ１５２はソフトウェア更新処理を実行する。続くステップＳ２１１４では、ＣＰＵ１５２は更新が完了したか否かを判断し、更新が完了したと判断するまでステップＳ２１１４に留まり、更新が完了したと判断するとステップＳ２１１５に進む。
ステップＳ２１１５では、ＣＰＵ１５２は第１クライアントツリーＤＢ７２から通知情報１９５を読み込む。続くステップＳ２１１７では、通知情報１９５から更新が完了した際に通知すべき情報を抽出し、更新が完了した旨の通知、すなわち更新トリガを送信する。ただし通知情報１９５が図９に示す例の場合はＩｎｓｔａｌｌ完了１９５１Ｂの配下にノードが存在しないため、本ステップを実行せずに図１７に示す処理を終了する。続くステップＳ２１１８では、対象となるすべての宛先に更新トリガを送信したか否かを判断し、全ての対象に送信したと判断する場合は図１７に示す処理を終了し、送信していない対象があると判断する場合はステップＳ２１１７に戻る。
【００５８】
図１８は、第１更新装置１０がサーバ２からダウンロード実行指示を受信した際の処理を表すフローチャートである。
ステップＳ２２０１では、ＣＰＵ１５２は更新データ取得部７３を用いて更新データを取得させる。ダウンロードは更新データ取得部７３およびデータ提供部６３との間で実行され、プロトコルはＨＴＴＰあるいはＦＴＰなどのデータを転送することができるものであればどのようなプロトコルを用いてもよい。更新データの取得先は、第１クライアントツリーＤＢ７２にたとえばＰｋｇＵＲＬ１０８として格納されている。続くステップＳ２２０２では、ＣＰＵ１５２は更新データのダウンロードが完了したか否かを判断する。この判断はたとえば、更新データ取得部７３からダウンロード完了の通知を受けたか否かにより判断できる。ダウンロードが完了したとする場合はステップＳ２２０３に進み、ダウンロードが完了していないと判断する場合はステップＳ２２０２に留まる。
【００５９】
ステップＳ２２０３では、ＣＰＵ１５２は第１クライアントツリーＤＢ７２から通知情報１９５を読み込む。続くステップＳ２２０４では、通知情報１９５からダウンロードが完了した際に通知すべき情報を抽出し、ダウンロードが完了した旨の通知、すなわち更新トリガを送信する。通知情報１９５が図９に示す例の場合は、２つの装置に更新トリガを送信し、その更新トリガにはダウンロードが完了したパッケージの名称とバージョンが含まれる。続くステップＳ２２０５では、対象となるすべての宛先に更新トリガを送信したか否かを判断し、全ての対象に送信したと判断する場合は図１８に示す処理を終了し、送信していない対象があると判断する場合はステップＳ２２０４に戻る。
【００６０】
なお、第１更新装置１０のインターネット５との接続の切断がステップＳ２１１０以降で発生したとしても、更新契機１９１および通知情報１９５は第１クライアントツリーＤＢ７２から取得できるので、ソフトウェアの更新に支障はない。この場合も更新契機１９１により定められた条件が満たされなければ更新が実行されないので、サーバ２との接続が切断されていても更新契機１９１を適切に設定することにより、ソフトウェア同士の依存関係を維持したままソフトウェアを更新することができる。
【００６１】
上述した第１の実施の形態によれば、次の作用効果が得られる。
（１）ソフトウェア更新装置である第１更新装置１０は、１以上のソフトウェア更新装置、すなわち第２更新装置１１及びサーバ２とインターネット５を介して接続される。第１更新装置１０は、サーバ２から更新用データを受信する更新データ取得部７３と、更新用データを用いてソフトウェアの更新を行う更新部３１と、他のソフトウェア更新装置と通信する通信部３３と、更新トリガの受信を含むソフトウェアを更新する条件が記載された更新契機１９１をサーバ２から受信する更新契機受信部４１と、他のソフトウェア更新装置に通知を行う条件を含む通知情報１９５をサーバ２から受信する通知情報受信部４２と、通知情報１９５に基づき他のソフトウェア更新装置に更新トリガを送信する更新トリガ通知部４５と、他のソフトウェア更新装置から更新トリガを受信する更新トリガ受信部４４と、更新契機１９１に記述されているすべての条件が満たされたと判断すると更新部３１にソフトウェアの更新を実行させる更新開始判断部４０とを備える。
【００６２】
更新開始判断部４０は、サーバ２から受信した更新契機１９１に記載された条件がすべて満たされるとソフトウェアの更新を実行させるので、ソフトウェアの依存関係を満たしたままソフトウェアを更新することができる。たとえば、第１更新装置１０にインストールされるソフトウェア「ＡＢＣ」と第２更新装置１１にインストールされるソフトウェア「ＰＱＲ」に依存関係がある場合に、適切に設定された更新契機１９１を用いることでソフトウェアの依存関係を満たしたままソフトウェアを更新することができる。すなわち図７に示したように、第２更新装置１１に所定のバージョンのソフトウェア「ＰＱＲ」がインストールされたことを条件として、第１更新装置１０のソフトウェア「ＡＢＣ」を更新させることができる。
【００６３】
また第１更新装置１０は更新トリガ通知部４５を備えるので、通知情報１９５に基づき他のソフトウェア更新装置に更新トリガを送信することができる。すなわち他のソフトウェア更新装置に更新トリガの受信に基づきソフトウェアを更新させることができる。さらに第１更新装置１０は、サーバ２から更新契機１９１、通知情報１９５、および更新データを受信した後であれば、サーバ２との接続が切断されても受信済みの情報を用いてソフトウェアの更新を行うことができる。
【００６４】
（２）通知情報１９５には、ソフトウェアが更新されると更新トリガが送信されることが含まれる。更新トリガ通知部４５は、更新部３１がソフトウェアの更新を完了すると更新トリガを送信する。
そのため第１更新装置１０は、他のソフトウェア更新装置に第１更新装置１０におけるソフトウェアの更新を通知することができる。すなわちソフトウェアの依存関係を満たしたまま、他のソフトウェア更新装置にソフトウェアを更新させることができる。
【００６５】
（３）通知情報１９５には、更新データ取得部７３が更新用データを受信すると更新トリガが送信されることが含まれる。更新トリガ通知部４５は、更新データ取得部７３が更新用データを受信すると更新トリガを送信する。
そのため第１更新装置１０は、他の装置が更新データを受信済みであること、換言すると他の装置が更新を実行するための事前準備の少なくとも一部が完了していることを条件として更新を開始することができる。
【００６６】
（４）第１更新装置１０は車両１に搭載される。更新契機１９１には車両１のイグニッションのオンまたはオフが含まれる。更新開始判断部４０は、イグニッションのオンまたはオフを検知可能である。
イグニッションのオフを更新開始の条件とすることで、車両１の走行に係るソフトウェアを安全に更新することができる。また一般にユーザがイグニッションをオフに操作するとその後しばらくはユーザは車両１を使用しないので、長時間の処理を要する更新を実行してもユーザの妨げとならない。イグニッションのオンを更新開始の条件とすることで、ユーザがタイミングを選択可能なわかりやすい時に更新を実行できる。
【００６７】
（５）第１更新装置１０はインターネット５に接続される車両１に搭載される。更新契機１９１にはインターネット５との接続の切断が含まれる。更新開始判断部４０は接続の切断を検知可能である。
インターネット５との接続の切断を更新開始の条件とすることで、ソフトウェアの更新による可用性の低下を低減することができる。詳述すると以下のとおりである。すなわち、動作にインターネット５との接続が必要なソフトウェアは、インターネット５との接続が切断されている間は動作できない。またソフトウェアの更新を開始すると更新が終了するまではソフトウェアを使用できない。そこで、インターネット５との接続が切断されたことによりソフトウェアを使用できない時間に更新によりソフトウェアを使用できない時間を重複させることで、ソフトウェアの更新による可用性の低下を低減する。
【００６８】
（６）第１更新装置１０は記憶部１５１およびストレージ１５９を備える。更新トリガ受信部４４は受信した更新トリガを記憶部１５１またはストレージ１５９に記憶させる。更新開始判断部４０は、記憶部１５１またはストレージ１５９に記憶されている更新トリガを含めて更新開始の判断を行う。
そのため、更新条件のそれぞれが異なるタイミングで成立した場合でも、更新を開始することができる。
【００６９】
（変形例１）
更新契機１９１には車両状態１９１１以下のノードが含まれなくてもよいし、車両状態１９１１の配下に異なるノードが配置されてもよい。たとえば時刻に関する条件や車両１のエンジンの状態に関する条件を表すノードが配置されてもよい。
【００７０】
（変形例２）
更新契機１９１には、第１更新装置１０および第２更新装置１１についての条件が格納されたが、いずれか一方についての条件のみが格納されてもよい。また１つの更新装置について２以上のソフトウェアに関する条件が格納されてもよいし、各ソフトウェアについて「Ｄｏｗｎｌｏａｄ」や「Ｉｎｓｔａｌｌ」以外の条件、たとえば削除されたことを示す「Ｒｅｍｏｖｅ」が設定されてもよい。
【００７１】
（変形例３）
通知情報１９５の配下には、Ｄｏｗｎｌｏａｄ完了１９５１ＡやＩｎｓｔａｌｌ完了１９５１Ｂ以外のノードが存在してもよい。たとえば、イグニッションがオンになったことを示す「ＩＧＮオン」や、ユーザから更新の許諾が得られたことを示す「更新許諾」などのノードが通知情報１９５の配下に存在してもよい。すなわち更新トリガ通知部４５が、イグニッションがオンにされた際やユーザから更新の許諾を得られた際に更新トリガを送信してもよい。この構成は、他の更新管理装置がイグニッションの情報やユーザの許諾の情報を直接得ることができない場合に有効である。
【００７２】
（変形例４）
第１の実施の形態では、第１クライアントツリーＤＢ７２、第２クライアントツリーＤＢ９２、およびサーバツリーＤＢ６２をツリー状のデータベース、すなわち階層型データベースとして表現したが、これらデータベースの形式はこれに限定されない。ネットワーク型データベースやリレーショナル型データベースなど他の形式であってもよい。
【００７３】
（変形例５）
第１更新装置１０は、更新トリガの送信および受信を行ったが、更新トリガの送信のみを行い受信を行わなくてもよいし、更新トリガの受信のみを行い送信を行わなくてもよい。たとえば第１更新装置１０が更新トリガの送信のみを行い受信を行わない場合は、第１更新装置１０は更新トリガ受信部４４を備えなくてよい。また第１更新装置１０が更新トリガの受信のみを行い送信を行わない場合は、通知情報受信部４２および更新トリガ通知部４５を備えなくてよい。
【００７４】
本変形例によれば、以下のソフトウェア更新装置も本発明に含まれる。
（１）ソフトウェア更新装置は、１以上のソフトウェア更新装置及びサーバとネットワークを介して接続される。ソフトウェア更新装置は、サーバから更新用データを受信する受信部と、更新用データを用いてソフトウェアの更新を行う更新部と、他のソフトウェア更新装置と通信する通信部と、更新トリガの受信を含むソフトウェアを更新する条件が記載された更新契機をサーバから受信する更新契機受信部と、他のソフトウェア更新装置から更新トリガを受信する更新トリガ受信部と、更新契機に記述されているすべての条件が満たされたと判断すると更新部にソフトウェアの更新を実行させる更新開始判断部とを備える。
【００７５】
（２）ソフトウェア更新装置は、１以上のソフトウェア更新装置及びサーバとネットワークを介して接続される。ソフトウェア更新装置は、サーバから更新用データを受信する受信部と、更新用データを用いてソフトウェアの更新を行う更新部と、他のソフトウェア更新装置と通信する通信部と、ソフトウェアを更新する条件が記載された更新契機をサーバから受信する更新契機受信部と、他のソフトウェア更新装置に通知を行う条件を含む通知情報をサーバから受信する通知情報受信部と、通知情報に基づき他のソフトウェア更新装置に、受信することがソフトウェアを更新する条件の１つとなる更新トリガを送信する更新トリガ通知部と、更新契機に記述されているすべての条件が満たされたと判断すると更新部にソフトウェアの更新を実行させる更新開始判断部とを備える。
【００７６】
（変形例６）
第１更新装置１０に格納される通知情報１９５には、宛先として第１更新装置１０が記載されず、第１更新装置１０から第１更新装置１０への更新トリガが送信されなくてもよい。この場合は、更新トリガ通知部４５や更新トリガ受信部４４を介さずに、ダウンロードが完了した旨の情報が更新開始判断部４０に伝達される。
【００７７】
―第２の実施の形態―
図１９〜図２１を参照して、ソフトウェア更新システムＳの第２の実施の形態を説明する。以下の説明では、第１の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第１の実施の形態と同じである。本実施の形態では、主に、第１更新装置および第２更新装置が他の装置のソフトウェアを更新する点で、第１の実施の形態と異なる。
【００７８】
（システム構成）
図１９は、第２の実施の形態におけるソフトウェア更新システムＳの構成を示す図である。車両１は、第１更新装置１０と、第２更新装置１１と、ＬＡＮネットワーク１８と、第１ＥＣＵ５１１と、第２ＥＣＵ５１２と、第３ＥＣＵ５１３と、第１ＣＡＮネットワーク５０１と、第２ＣＡＮネットワーク５０２とを備える。第１更新装置１０、および第２更新装置１１は、ＬＡＮネットワーク１８により接続される。第１更新装置１０、第１ＥＣＵ５１１、および第２ＥＣＵ５１２は、第１ＣＡＮネットワーク５０１により接続される。第２更新装置１１、および第３ＥＣＵ５１３は、第２ＣＡＮネットワーク５０２により接続される。
第１ＥＣＵ５１１にはソフトウェア「ＤＥＦ」が備えられ、第２ＥＣＵ５１２にはソフトウェア「ＧＨＩ」が備えられ、第３ＥＣＵ５１３にはソフトウェア「ＳＴＵ」が備えられる。第１更新装置１０は、第１ＥＣＵ５１１および第２ＥＣＵ５１２のソフトウェアを更新する。第２更新装置１１は、第３ＥＣＵ５１３のソフトウェアを更新する。
【００７９】
（ＥＣＵのハードウェア構成）
第１ＥＣＵ５１１、第２ＥＣＵ５１２、および第３ＥＣＵ５１３のハードウェア構成は同様なので、ここでは代表して第１ＥＣＵ５１１のハードウェア構成を説明する。
図２０は、第１ＥＣＵ５１１のハードウェア構成を示す図である。第１ＥＣＵ５１１は、記憶部１７０と、ＣＰＵ１７１と、ストレージ１７３と、ＣＡＮ  Ｉ／Ｆ１７４と、バス１７２とを備える。
【００８０】
第１ＥＣＵ５１１のＣＰＵ１７１は、第１ＥＣＵ５１１で扱われる情報の出入りを制御し、ストレージ１７３に保存されているソフトウェアの記述に従い動作する。記憶部１７０は、ＣＰＵ１７１が扱う情報を一時的に保存し、バス１７２を介してＣＰＵ１７１とデータをやり取りする。ストレージ１７３には、第１ＥＣＵ５１１のソフトウェアが格納される不揮発性の記憶装置である。第１ＥＣＵ５１１は、ストレージ１７３に保存されているソフトウェアで動作し、このソフトウェアを更新することにより第１ＥＣＵ５１１の動作を変更することが可能である。ＣＡＮ  Ｉ／Ｆ１７４は、車両１で使用される専用のネットワークであるＣＡＮ用インタフェースであり、第１ＣＡＮネットワーク５０１を介して第１更新装置１０と通信する。このインタフェースを介してソフトウェアを受信し、ストレージ１７３に格納されているソフトウェアを書き換えることが可能である。
【００８１】
（第１クライアントツリーＤＢ）
第２の実施の形態における第１クライアントツリーＤＢ７２は、第１の実施の形態における第１クライアントツリーＤＢ７２の構成において、「ＡＢＣ」を「ＤＥＦ」および「ＧＨＩ」で置き換えたものである。
図２１は、第２の実施の形態における第１クライアントツリーＤＢ７２の概略を示す図である。Ｄｏｗｎｌｏａｄ１０６の配下には、ダウンロードする２つのパッケージの情報が格納される、「ＤＥＦｖ２ｓ」のノードと、「ＧＨＩｖ４ｓ」のノードが置かれる。これと同様にＤｅｌｉｖｅｒｅｄ１２１、およびＤｅｐｌｏｙｅｄ１３０のノードの配下にも２つのソフトウェアの情報が格納される。すなわちＤｅｌｉｖｅｒｅｄ１２１の配下には各ソフトウェアに対応する更新契機が配され、Ｄｅｐｌｏｙｅｄ１３０の配下には各ソフトウェアに対応する通知情報が配される。
第２クライアントツリーＤＢ９２の構成は、第１の実施の形態における構成からソフトウェアおよびパッケージの名称を変更したものなので説明を省略する。
【００８２】
上述した第２の実施の形態によれば、次の作用効果が得られる。
（１）第１更新装置１０は第１ＥＣＵ５１１および第２ＥＣＵ５１２に接続され、更新部３１は、第１ＥＣＵ５１１および第２ＥＣＵ５１２のソフトウェアを更新する。そのため、第１ＥＣＵ５１１および第２ＥＣＵ５１２がソフトウェアの更新に係る制御を実行できない場合でも第１更新装置１０が第１ＥＣＵ５１１および第２ＥＣＵ５１２に代わって、ソフトウェアの依存関係を満たしたまま、第１ＥＣＵ５１１および第２ＥＣＵ５１２にソフトウェアを更新させることができる。
【００８３】
（第２の実施の形態の変形例）
第１更新装置１０は、第１ＥＣＵ５１１および第２ＥＣＵ５１２のソフトウェアだけでなく、第１更新装置１０のソフトウェアも更新してよい。また第２更新装置１１は、第３ＥＣＵ５１３のソフトウェアだけでなく、第２更新装置１１のソフトウェアも更新してよい。
【００８４】
第１更新装置１０のプログラムはストレージ１５９に格納されるとしたが、第１更新装置１０が不図示の入出力インタフェースを備え、必要なときに入出力インタフェースと第１更新装置１０が利用可能な媒体を介して、他の装置からプログラムが読み込まれてもよい。ここで媒体とは、例えば入出力インタフェースに着脱可能な記憶媒体、または通信媒体、すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号、を指す。また、プログラムにより実現される機能の一部または全部がハードウェア回路やＦＰＧＡにより実現されてもよい。
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【００８５】
１  …  車両
２  …  サーバ
Ｓ  …  ソフトウェア更新システム
１０  …  第１更新装置
１１  …  第２更新装置
３１  …  更新部
３３  …  通信部
４０  …  更新開始判断部
４１  …  更新契機受信部
４２  …  通知情報受信部
４４  …  更新トリガ受信部
４５  …  更新トリガ通知部
１９１  …  更新契機
１９５  …  通知情報
４５１  …  通知情報
【図１】
2018106461.tif 000003
【図２】
2018106461.tif 000004
【図３】
2018106461.tif 000005
【図４】
2018106461.tif 000006
【図５】
2018106461.tif 000007
【図６】
2018106461.tif 000008
【図７】
2018106461.tif 000009
【図８】
2018106461.tif 000010
【図９】
2018106461.tif 000011
【図１０】
2018106461.tif 000012
【図１１】
2018106461.tif 000013
【図１２】
2018106461.tif 000014
【図１３】
2018106461.tif 000015
【図１４】
2018106461.tif 000016
【図１５】
2018106461.tif 000017
【図１６】
2018106461.tif 000018
【図１７】
2018106461.tif 000019
【図１８】
2018106461.tif 000020
【図１９】
2018106461.tif 000021
【図２０】
2018106461.tif 000022
【図２１】
2018106461.tif 000023