(57)【特許請求の範囲】
【請求項１】
各々が表示装置を有する複数のＨＭＩ装置の送信先情報を記憶する記憶部と、
前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部と、
車載装置のソフトウェアを更新する更新部と、
前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択されたＨＭＩ装置に転送する転送部と、
を備え、
前記選択部は、前記複数のＨＭＩ装置のうちのいずれか１つのソフトウェアが更新される場合、更新対象のＨＭＩ装置とは別の１つのＨＭＩ装置を選択するソフトウェア更新装置。
【請求項２】
各々が表示装置を有する複数のＨＭＩ装置の送信先情報を記憶する記憶部と、
前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部と、
車載装置のソフトウェアを更新する更新部と、
前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択されたＨＭＩ装置に転送する転送部と、
ユーザが前記ＨＭＩ装置に触れたことを検知する接触検知部と、
を備え、
前記選択部は、前記複数のＨＭＩ装置のうち、前記接触検知部によりユーザが触れたことが検知されたＨＭＩ装置を選択するソフトウェア更新装置。
【請求項３】
各々が表示装置を有する複数のＨＭＩ装置の送信先情報を記憶する記憶部と、
前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部と、
車載装置のソフトウェアを更新する更新部と、
前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択されたＨＭＩ装置に転送する転送部と、
前記複数のＨＭＩ装置の各々が使用可能な状態であることを検知する状態検知部と、
を備え、
前記選択部は、前記複数のＨＭＩ装置のうち、前記状態検知部により使用可能な状態であると検知された１つのＨＭＩ装置を選択するソフトウェア更新装置。
【請求項４】
各々が表示装置を有する複数のＨＭＩ装置の送信先情報を記憶する記憶部と、
前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部と、
車載装置のソフトウェアを更新する更新部と、
前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択されたＨＭＩ装置に転送する転送部と、
前記複数のＨＭＩ装置の各々が配置されている場所と前記ソフトウェア更新装置が配置されている場所との間の距離を取得する距離取得部と、
を備え、
前記選択部は、前記選択された１つのＨＭＩ装置について前記距離取得部により取得された距離が所定距離以上になったとき、前記選択されていない複数のＨＭＩ装置のうちの１つのＨＭＩ装置を選択するソフトウェア更新装置。
【請求項５】
各々が表示装置を有する複数のＨＭＩ装置の送信先情報を記憶する記憶部と、
前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部と、
車載装置のソフトウェアを更新する更新部と、
前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択されたＨＭＩ装置に転送する転送部と、
前記車載装置が搭載された車両の状態を取得する車両状態取得部と、
を備え、
前記選択部は、前記車両状態取得部により取得された前記車両の状態が変化したとき、前記複数のＨＭＩ装置の中から１つのＨＭＩ装置を選択するソフトウェア更新装置。
【請求項６】
各々が表示装置を有する複数のＨＭＩ装置の送信先情報を記憶する記憶部と、
前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部と、
車載装置のソフトウェアを更新する更新部と、
前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択されたＨＭＩ装置に転送する転送部と、
前記選択された１つのＨＭＩ装置において、前記通知メッセージに対するユーザからの応答の有無を確認する応答確認部と、
を備え、
前記選択部は、前記転送部により前記通知メッセージが前記選択された１つのＨＭＩ装置に転送された後、所定時間内に前記応答が確認されなかった場合、前記選択されていない複数のＨＭＩ装置のうちの１つのＨＭＩ装置を選択し直し、
前記転送部は、前記選択部により選択し直された前記１つのＨＭＩ装置に、前記通知メッセージを再び転送するソフトウェア更新装置。
【請求項７】
請求項１から６のいずれか１項に記載のソフトウェア更新装置において、
前記選択部は、前記更新部により前記更新が行われるとき、前記複数のＨＭＩ装置のいずれか１つのＨＭＩ装置を選択するソフトウェア更新装置。
【請求項８】
所定のソフトウェアを実行する車載装置と、
前記車載装置のソフトウェアを配信する配信部を有するサーバと、
各々が表示装置を有する複数のＨＭＩ装置と、
前記サーバから前記ソフトウェアを受信する受信部、前記複数のＨＭＩ装置の送信先情報を記憶する記憶部、前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部、前記車載装置のソフトウェアを前記受信したソフトウェアに更新する更新部、および、前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択された１つのＨＭＩ装置に転送する転送部、を有するソフトウェア更新装置と、
を備え、
前記選択部は、前記複数のＨＭＩ装置のうちのいずれか１つのソフトウェアが更新される場合、更新対象のＨＭＩ装置とは別の１つのＨＭＩ装置を選択するソフトウェア更新システム。
【請求項９】
所定のソフトウェアを実行する車載装置と、
前記車載装置のソフトウェアを配信する配信部を有するサーバと、
各々が表示装置を有する複数のＨＭＩ装置と、
前記サーバから前記ソフトウェアを受信する受信部、前記複数のＨＭＩ装置の送信先情報を記憶する記憶部、前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部、前記車載装置のソフトウェアを前記受信したソフトウェアに更新する更新部、前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択された１つのＨＭＩ装置に転送する転送部、および、ユーザが前記ＨＭＩ装置に触れたことを検知する接触検知部、を有するソフトウェア更新装置と、
を備え、
前記選択部は、前記複数のＨＭＩ装置のうち、前記接触検知部によりユーザが触れたことが検知されたＨＭＩ装置を選択するソフトウェア更新システム。
【請求項１０】
所定のソフトウェアを実行する車載装置と、
前記車載装置のソフトウェアを配信する配信部を有するサーバと、
各々が表示装置を有する複数のＨＭＩ装置と、
前記サーバから前記ソフトウェアを受信する受信部、前記複数のＨＭＩ装置の送信先情報を記憶する記憶部、前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部、前記車載装置のソフトウェアを前記受信したソフトウェアに更新する更新部、前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択された１つのＨＭＩ装置に転送する転送部、および、前記複数のＨＭＩ装置の各々が使用可能な状態であることを検知する状態検知部、を有するソフトウェア更新装置と、
を備え、
前記選択部は、前記複数のＨＭＩ装置のうち、前記状態検知部により使用可能な状態であると検知された１つのＨＭＩ装置を選択するソフトウェア更新システム。
【請求項１１】
所定のソフトウェアを実行する車載装置と、
前記車載装置のソフトウェアを配信する配信部を有するサーバと、
各々が表示装置を有する複数のＨＭＩ装置と、
前記サーバから前記ソフトウェアを受信する受信部、前記複数のＨＭＩ装置の送信先情報を記憶する記憶部、前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部、前記車載装置のソフトウェアを前記受信したソフトウェアに更新する更新部、および、前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択された１つのＨＭＩ装置に転送する転送部、を有するソフトウェア更新装置と、
を備え、
前記ソフトウェア更新装置は、前記複数のＨＭＩ装置の各々が配置されている場所と前記ソフトウェア更新装置が配置されている場所との間の距離を取得する距離取得部を有し、
前記選択部は、前記選択された１つのＨＭＩ装置について前記距離取得部により取得された距離が所定距離以上になったとき、前記選択されていない複数のＨＭＩ装置のうちの１つのＨＭＩ装置を選択するソフトウェア更新システム。
【請求項１２】
所定のソフトウェアを実行する車載装置と、
前記車載装置のソフトウェアを配信する配信部を有するサーバと、
各々が表示装置を有する複数のＨＭＩ装置と、
前記サーバから前記ソフトウェアを受信する受信部、前記複数のＨＭＩ装置の送信先情報を記憶する記憶部、前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部、前記車載装置のソフトウェアを前記受信したソフトウェアに更新する更新部、前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択された１つのＨＭＩ装置に転送する転送部、および、前記車載装置が搭載された車両の状態を取得する車両状態取得部、を有するソフトウェア更新装置と、
を備え、
前記選択部は、前記車両状態取得部により取得された前記車両の状態が変化したとき、前記複数のＨＭＩ装置の中から１つのＨＭＩ装置を選択するソフトウェア更新システム。
【請求項１３】
所定のソフトウェアを実行する車載装置と、
前記車載装置のソフトウェアを配信する配信部を有するサーバと、
各々が表示装置を有する複数のＨＭＩ装置と、
前記サーバから前記ソフトウェアを受信する受信部、前記複数のＨＭＩ装置の送信先情報を記憶する記憶部、前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部、前記車載装置のソフトウェアを前記受信したソフトウェアに更新する更新部、前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択された１つのＨＭＩ装置に転送する転送部、および、前記選択された１つのＨＭＩ装置において、前記通知メッセージに対するユーザからの応答の有無を確認する応答確認部、を有するソフトウェア更新装置と、
を備え、
前記選択部は、前記転送部により前記通知メッセージが前記選択された１つのＨＭＩ装置に転送された後、所定時間内に前記応答が確認されなかった場合、前記選択されていない複数のＨＭＩ装置のうちの１つのＨＭＩ装置を選択し直し、
前記転送部は、前記選択部により選択し直された前記１つのＨＭＩ装置に、前記通知メッセージを再び転送するソフトウェア更新システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア更新装置およびソフトウェア更新システムに関する。
【背景技術】
【０００２】
自身のソフトウェア更新処理中にユーザにテキスト形式のフィードバックを行う携帯無線通信機器が知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００８−５０８６２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来技術は、ソフトウェアの更新対象である機器自身によるフィードバックしか考慮していなかった。
【課題を解決するための手段】
【０００５】
本発明の態様によると、例えば、ソフトウェア更新装置は、各々が表示装置を有する複数のＨＭＩ装置の送信先情報を記憶する記憶部と、前記複数のＨＭＩ装置から少なくとも１つのＨＭＩ装置を選択する選択部と、車載装置のソフトウェアを更新する更新部と、前記選択されたＨＭＩ装置の前記送信先情報を前記記憶部から取得し、前記更新に関する通知メッセージを前記選択されたＨＭＩ装置に転送する転送部と、を備え、前記選択部は、前記複数のＨＭＩ装置のうちのいずれか１つのソフトウェアが更新される場合、更新対象のＨＭＩ装置とは別の１つのＨＭＩ装置を選択する。
【発明の効果】
【０００６】
本発明によれば、更新に関するメッセージを適切なＨＭＩ装置に転送することができる。
【図面の簡単な説明】
【０００７】
【図１】ソフトウェア更新システムの構成を模式的に示す図
【図２】ソフトウェア更新装置のハードウェア構成を模式的に示す図
【図３】サーバのハードウェア構成を模式的に示す図
【図４】スマートフォン４のハードウェア構成を模式的に示す図
【図５】第１制御装置および第２制御装置のハードウェア構成を模式的に示す図
【図６】ナビゲーション装置のハードウェア構成を模式的に示す図
【図７】ソフトウェア更新システムのソフトウェア構成を模式的に示す図
【図８】デバイス管理クライアントツリーＤＢの構造を模式的に示す図
【図９】デバイス管理サーバツリーＤＢの構造を模式的に示す図
【図１０】ソフトウェア更新管理ＤＢの構造を模式的に示す図
【図１１】ソフトウェア更新処理におけるメッセージのやり取りを示すシーケンス図
【図１２】ナビゲーション装置の表示部に表示されるイメージ
【図１３】ソフトウェア更新処理におけるメッセージのやり取りを示すシーケンス図
【図１４】スマートフォンの表示部に表示されるイメージ
【図１５】パッケージの構造を模式的に示す図
【図１６】更新部の動作の一例を示すシーケンス図
【図１７】更新部の動作の一例を示すシーケンス図
【図１８】ＨＭＩ管理ＤＢの構造を模式的に示す図
【図１９】ＨＭＩ選択部の動作を示すフローチャート
【図２０】転送部の動作を示すフローチャート
【図２１】ソフトウェア更新システムのソフトウェア構成を模式的に示す図
【図２２】ソフトウェア更新システムのソフトウェア構成を模式的に示す図
【図２３】ソフトウェア更新システムのソフトウェア構成を模式的に示す図
【図２４】ソフトウェア更新システムのソフトウェア構成を模式的に示す図
【図２５】ソフトウェア更新システムのソフトウェア構成を模式的に示す図
【図２６】ソフトウェア更新システムのソフトウェア構成を模式的に示す図
【発明を実施するための形態】
【０００８】
（第１の実施の形態）
図１は、第１の実施の形態に係るソフトウェア更新システムの構成を模式的に示す図である。ソフトウェア更新システム１は、車両２、サーバ３、およびスマートフォン４を含む。車両２、サーバ３、およびスマートフォン４は、ネットワーク５を介して相互に接続される。なお、図１では車両２およびスマートフォン４を１台ずつ図示しているが、ソフトウェア更新システム１は複数の車両２およびスマートフォン４を含んでいてよい。
【０００９】
車両２には、ソフトウェア更新装置２１、第１制御装置２２、第２制御装置２３、およびナビゲーション装置２４が搭載される。ソフトウェア更新装置２１、第１制御装置２２、および第２制御装置２３は、ＣＡＮネットワーク２５を介して相互に接続される。ソフトウェア更新装置２１およびナビゲーション装置２４は、ＵＳＢネットワーク２６を介して相互に接続される。
【００１０】
ソフトウェア更新装置２１は、第１制御装置２２、第２制御装置２３、およびナビゲーション装置２４において動作するソフトウェアを、サーバ３により配信された新しいソフトウェアに更新する。第１制御装置２２および第２制御装置２３は、例えば車両２のエンジンなどを制御する、車両２のいわゆるＥＣＵ（車載装置）である。ナビゲーション装置２４は、出発地から目的地までの経路を、例えば画面に表示した道路地図や音声等により運転者に案内する装置である。
【００１１】
サーバ３は、内部の記憶装置に車両２で動作するソフトウェアを保持する。サーバ３は、ネットワーク５を介して車両２およびスマートフォン４とデータ通信を行い、車両２にソフトウェアを配信する。スマートフォン４は、ユーザにより入力される種々の情報に基づき、ネットワーク５を介して車両２やサーバ３とデータ通信を行う。なお、スマートフォン４は、例えばフィーチャーフォンやタブレット端末など、他のＨＭＩ（Human Machine Interface）端末であってもよい。ネットワーク５は、例えばインターネット等の電気通信網である。
【００１２】
図２は、ソフトウェア更新装置２１のハードウェア構成を模式的に示す図である。ソフトウェア更新装置２１は、記憶部２１１、制御部２１２、時刻管理部２１３、WAN I/F２１４、CAN I/F２１５、USB I/F２１７、BT（Bluetooth（登録商標）） I/F２１８、およびストレージ２１９を有する。記憶部２１１、制御部２１２、時刻管理部２１３、WAN I/F２１４、CAN I/F２１５、USB I/F２１７、BT I/F２１８、およびストレージ２１９は、バス２１６により相互に接続される。
【００１３】
制御部２１２は、ソフトウェア更新装置２１で扱う情報の出入りを制御し、記憶部２１１に保存されているソフトウェアの記述に従い動作する中央処理装置（CPU）である。記憶部２１１は、制御部２１２が扱う情報を一時的に保存し、バス２１６を介してデータをやり取りするメモリーである。時刻管理部２１３は、ソフトウェア更新装置２１の動作を制御する時刻情報を管理する。ストレージ２１９は、ソフトウェア更新装置２１のソフトウェアを保存し、記憶部２１１に保持されている情報を電源を切っても保持し続ける記憶装置である。ストレージ２１９は、例えばファイルシステムを搭載するハードディスクやSSD、または、ファイルシステムを搭載しないフラッシュメモリなどの記憶素子である。ソフトウェア更新装置２１は、ストレージ２１９に保存されているソフトウェアで動作する。このソフトウェアを更新することにより、ソフトウェア更新装置２１の動作を変更することが可能である。
【００１４】
WAN I/F２１４は、情報を無線で送受信するインタフェースである。無線による情報の送受信は、例えばLTE、Wi-Fiなどの規格に則って行われる。CAN I/F２１５は、車両２で使用される専用のネットワークであるCAN（Controller Area Network）のインタフェースである。CAN I/F２１５は、ＣＡＮネットワーク２５と接続して車両２内の他の装置（例えば第１制御装置２２や第２制御装置２３）と通信する。USB I/F２１７はUSB規格のインタフェースであり、ＵＳＢネットワーク２６を介してナビゲーション装置２４と通信する。
【００１５】
図３は、サーバ３のハードウェア構成を模式的に示す図である。サーバ３は、記憶部３１、制御部３２、ストレージ３４、およびWAN I/F３５を有する。記憶部３１、制御部３２、ストレージ３４、およびWAN I/F３５は、バス３６により相互に接続される。
【００１６】
制御部３２は、サーバ３で扱う情報の出入りを制御し、記憶部３１に保存されているソフトウェアの記述に従い動作する中央処理装置（CPU）である。記憶部３１は、制御部３２が扱う情報を一時的に保存し、バス３６を介してデータをやり取りするメモリーである。ストレージ３４は、ソフトウェア更新装置２１のソフトウェアを保存し、記憶部２１１に保持されている情報を電源を切っても保持し続ける記憶装置である。ストレージ３４は、例えばファイルシステムを搭載するハードディスク、SSD、ホログラフィックディスクなどである。サーバ３は、ストレージ３４に保存されているソフトウェアで動作する。WAN I/F３５は、情報を無線で送受信するインタフェースである。無線による情報の送受信は、例えばLTE、Wi-Fiなどの規格に則って行われる。
【００１７】
図４は、スマートフォン４のハードウェア構成を模式的に示す図である。スマートフォン４は、記憶部４１、制御部４２、入力部４３、表示部４４、ストレージ４５、WAN I/F４６、およびBT I/F４７を有する。記憶部４１、制御部４２、入力部４３、表示部４４、ストレージ４５、WAN I/F４６、およびBT I/F４７は、バス４８により相互に接続される。
【００１８】
制御部４２は、スマートフォン４で扱う情報の出入りを制御し、記憶部４１に保存されているソフトウェアの記述に従い動作する中央処理装置（CPU）である。記憶部４１は、制御部４２が扱う情報を一時的に保存し、バス４８を介してデータをやり取りするメモリーである。入力部４３は、スマートフォン４のユーザからの入力を受ける入力デバイスである。入力部４３は、例えばタッチペンや指接触型タッチパネル、キーボード等の入力装置である。表示部４４は、スマートフォン４の情報をユーザに表示する表示装置である。表示部４４は、例えば液晶パネルやタッチパネル等の、デジタル情報を表示できる表示デバイスである。ストレージ４５は、スマートフォン４のソフトウェアを保存し、記憶部４１に保持されている情報を電源を切っても保持し続ける記憶装置である。ストレージ４５は、例えばファイルシステムを搭載するハードディスクやSSD、または、ファイルシステムを搭載しないフラッシュメモリなどの記憶素子である。スマートフォン４は、ストレージ４５に保存されているソフトウェアで動作する。このソフトウェアを更新することにより、スマートフォン４の動作を変更することが可能である。
【００１９】
WAN I/F４６は情報を無線で送受信するインタフェースである。無線による情報の送受信は、例えばLTE、Wi-Fiなどの規格に則って行われる。BT I/F４７は、情報を無線で送受信するインタフェースである。BT I/F４７は、無線による情報の送受信に加えて、他のBT I/Fとの間で無線を用いて距離を測定することができる。
【００２０】
図５は、第１制御装置２２および第２制御装置２３のハードウェア構成を模式的に示す図である。以下、第１制御装置２２について説明する。なお、第２制御装置２３は、第１制御装置２２と同一の構成を有しているので、説明を省略する。
【００２１】
第１制御装置２２は、記憶部２２１、制御部２２２、ストレージ２２３、およびCAN I/F２２４を有する。記憶部２２１、制御部２２２、ストレージ２２３、およびCAN I/F２２４は、バス２２５により相互に接続される。
【００２２】
制御部２２２は、第１制御装置２２で扱う情報の出入りを制御し、記憶部２２１に保存されているソフトウェアの記述に従い動作する中央処理装置（CPU）である。記憶部２２１は、制御部２２２が扱う情報を一時的に保存し、バス２０２５を介してデータをやり取りするメモリーである。ストレージ２２３は、第１制御装置２２のソフトウェアを保存し、記憶部２２１に保持されている情報を電源を切っても保持し続ける記憶装置である。ストレージ２２３は、例えばファイルシステムを搭載するハードディスクやSSD、または、ファイルシステムを搭載しないフラッシュメモリなどの記憶素子である。第１制御装置２２は、ストレージ２２３に保存されているソフトウェアで動作する。このソフトウェアを更新することにより、ソフトウェア更新装置２１の動作を変更することが可能である。
【００２３】
CAN I/F２１５は、車両２で使用される専用のネットワークであるCAN（Controller Area Network）のインタフェースであり、ＣＡＮネットワーク２５と接続してソフトウェア更新装置２１と通信する。このインタフェースを介してソフトウェアを受信し、ストレージ２２３に格納されているソフトウェアを書き換えることが可能である。制御部２２２は、車両におけるＥＣＵである。
【００２４】
図６は、ナビゲーション装置２４のハードウェア構成を模式的に示す図である。
ナビゲーション装置２４は、記憶部２４１、制御部２４２、入力部２４４、表示部２４５、ストレージ２４６、およびUSB I/F２４７を有する。記憶部２４１、制御部２４２、入力部２４４、表示部２４５、ストレージ２４６、およびUSB I/F２４７は、バス２４８により相互に接続される。
【００２５】
制御部２４２は、ナビゲーション装置２４で扱う情報の出入りを制御し、記憶部２４１に保存されているソフトウェアの記述に従い動作する中央処理装置（CPU）である。記憶部２４１は、制御部２４２が扱う情報を一時的に保存し、バス２４８を介してデータをやり取りするメモリーである。入力部２４４は、ナビゲーション装置２４のユーザからの入力を受ける入力デバイスである。入力部２４４は、例えばタッチペンや指接触型タッチパネル、キーボード、コマンダー等の入力装置である。表示部２４５は、ナビゲーション装置２４の情報をユーザに表示する表示装置である。表示部２４５は、例えば液晶パネルやタッチパネルなどのデジタル情報を表示できる表示デバイスである。
【００２６】
ストレージ２４６は、ナビゲーション装置２４のソフトウェアを保存し、記憶部２４１に保持されている情報を電源を切っても保持し続ける記憶装置である。ストレージ２４６は、例えばファイルシステムを搭載するハードディスクやSSD、または、ファイルシステムを搭載しないフラッシュメモリなどの記憶素子である。ナビゲーション装置２４は、ストレージ２４６に保存されているソフトウェアで動作する。このソフトウェアを更新することにより、ナビゲーション装置２４の動作を変更することが可能である。USB I/F２４７は情報をUSBで送受信するインタフェースであり、ソフトウェア更新装置２１と通信する。
【００２７】
図７は、ソフトウェア更新システム１のソフトウェア構成を模式的に示す図である。
スマートフォン４は、第２映像出力部４０４、第２接触入力部４０５、および第６通信部４０１を有する。第２映像出力部４０４は、例えば液晶やブラウン管、電子ペーパーなど、映像を表示するデバイスである。第２接触入力部４０５は、例えばタッチパネルなど、人間の接触を検知する入力デバイスである。
【００２８】
サーバ３は、配信部３０１、転送部３０３、第４通信部３０４、および第５通信部３０５を有する。配信部３０１は、サーバ３のストレージ３４に格納されているパッケージ８０を、第４通信部３０４およびネットワーク５を介してソフトウェア更新装置２１に配信する。ここで、パッケージ８０とは、第１制御装置２２やナビゲーション装置２４などの他デバイス用のソフトウェアである。
【００２９】
転送部３０３は、ソフトウェア更新装置２１、第１制御装置２２、第２制御装置２３、ナビゲーション装置２４、およびスマートフォン４が出力する各種の情報を、第４通信部３０４および第５通信部３０５を用いて他のデバイスに転送する。ここで、各種の情報とは、例えばメッセージ、映像、接触情報などである。第４通信部３０４は、無線・有線などの通信ネットワークへのインタフェースである。第４通信部３０４は、ソフトウェア更新装置２１と接続して通信を行う。第５通信部３０５は、無線・有線などの通信ネットワークへのインタフェースである。第５通信部３０５は、スマートフォン４と接続して通信を行う。
【００３０】
ソフトウェア更新装置２１は、受信部２０１、更新部２０２、ＨＭＩ管理部２００、車両管理部２０８、第１通信部２０４、第２通信部２０５、および第３通信部２０６を有する。
【００３１】
受信部２０１は、配信部３０１により送出されるパッケージ８０を、第２通信部２０５を経て受信する。受信部２０１により受信されたパッケージ８０は、ストレージ２１９に保存される。更新部２０２は、パッケージ８０に含まれる更新情報８３に基づき、ナビゲーション装置２４のソフトウェアを更新する。
【００３２】
ＨＭＩ管理部２００は、ソフト更新を契機にＨＭＩデバイスを選択する判断を行う。ＨＭＩ管理部２００は、ソフトウェア更新装置２１、第１制御装置２２、第２制御装置２３、およびナビゲーション装置２４が出力するメッセージや映像などの情報を、第２通信部２０５を介して転送部３０３に転送する。ＨＭＩ管理部２００は、ＨＭＩ登録部２５１、ＨＭＩ管理ＤＢ２５２、ＨＭＩ選択部２５３、および転送部２５４を有する。ＨＭＩ管理部２００が有するこれらの各部については後に詳述する。
【００３３】
車両管理部２０８は、第１通信部２０４を介して、車両情報を第１制御装置２２または第２制御装置２３から取得する。車両管理部２０８は、取得した車両情報を保持するとともに、車両情報の状態に応じて受信部２０１、更新部２０２、およびＨＭＩ管理部２００の動作を制御する。例えば、車両管理部２０８は、車両２のエンジンがかかったり、イグニッションがオンになったことに応じて、受信部２０１を動作させ、パッケージ８０のダウンロードを開始する。例えば、車両管理部２０８は、車両２のイグニッションがオフになったことに応じて更新部２０２を動作させ、第１制御装置２２、第２制御装置２３、およびナビゲーション装置２４のソフトウェアの更新を開始する。
【００３４】
ナビゲーション装置２４は、第１映像出力部２４３および第１接触入力部２４９を有する。第１映像出力部２４３は、例えば液晶やブラウン管、電子ペーパーなどの映像を表示するデバイスである。第１接触入力部２４９は、例えばタッチパネルなど人間の接触を検知する入力デバイスである。
【００３５】
配信部３０１は、デバイス管理サーバ部６１、デバイス管理サーバツリーＤＢ（データベース）６２、ソフトウェア更新管理ＤＢ６４、およびダウンロードサーバ部６３を有する。受信部２０１は、デバイス管理クライアント部７１、デバイス管理クライアントツリーＤＢ７２、およびダウンロードクライアント部７３を有する。ソフトウェアの車両２へのダウンロード動作は、配信部３０１を構成する各部の働きと、受信部２０１を構成する各部の働きにより実現される。
【００３６】
デバイス管理サーバ部６１は、デバイス管理クライアント部７１と規定のメッセージをやり取りし、所定の手順を実施することでサーバ３と車両２との間でソフトウェア更新の処理を実現する。具体的なやり取りについては後に詳述する。デバイス管理サーバ部６１は、例えばＯＭＡ（Open Mobile Alliance）において定義されるＤＭ（Device Management）サーバである。デバイス管理クライアント部７１は、例えばＯＭＡにおいて定義されるＤＭクライアントである。なお、ＯＭＡ  ＤＭとは、携帯電話のソフトウェア更新で使用される技術であり、ツリーＤＢと呼ばれるツリー状のデータベースへのアクセスを介してサーバとクライアント間でソフトウェア更新に必要な情報をやりとりする仕組みである。デバイス管理サーバツリーＤＢ６２、デバイス管理クライアントツリーＤＢ７２、およびソフトウェア更新管理ＤＢ６４については後に詳述する。
【００３７】
ダウンロードサーバ部６３は、ネットワーク５を介して、ソフトウェア更新に使用するソフトウェアの情報を一塊にしたパッケージ８０を提供する。ダウンロードサーバ部６３は、例えばＨＴＴＰ、ＦＴＰ等のプロトコルによりパッケージ８０を提供する。ダウンロードクライアント部７３は、ダウンロードサーバ部６３に接続し、ネットワーク５を介してパッケージ８０を受信するクライアントである。
【００３８】
更新部２０２は、シーケンス実行部７６、更新情報処理部７７、およびプロトコル処理部７８を含む。これらの各部については、パッケージ８０の構造と併せて後に詳述する。
【００３９】
図８は、デバイス管理クライアントツリーＤＢ７２の構造を模式的に示す図である。デバイス管理クライアントツリーＤＢ７２は、情報をツリー構造に従って格納するデータベースである。デバイス管理クライアントツリーＤＢ７２は、ツリー構造を構成する複数の要素を格納している。それら複数の要素には、root要素１０１、DevInfo要素１０２、VIN1要素１０３、DevDetail要素１０４、SCOMO要素１０５、Download要素１０６、Package3要素１０７、PkgURL要素１０８、Status要素１０９、Operation要素１１０、Download要素１１１、Inventory要素１２０、Delivered要素１２１、Package3要素１２２、Status要素１２３、Operation要素１２４、Install要素１２５、Deployed要素１３０、第１制御装置要素１３１、Status要素１３２、Version要素１３３、第２制御装置要素１３４、Status要素１３５、version要素１３６、ナビゲーション装置要素１３７、Status要素１３８、およびVersion要素１３９の各要素が含まれる。
【００４０】
DevInfo要素１０２の配下には、車両の識別子であるVIN1要素１０３のようなデバイスの特徴情報が配置される。DevDetail要素１０４の配下には、車両２の付属情報が配置される。SCOMO要素１０５の配下には、ソフトウェア更新で使用する要素が配置される。
【００４１】
Download要素１０６の配下には、ダウンロードに関する要素が配置される。図８の例では、Download要素１０６とその配下の要素が、Package3要素１２２により示されるソフトウェアをPkgURL要素１０８により示されるＵＲＬからダウンロードせよ、という指示を示している。Status要素１０９は、ダウンロード中の状態を保持する要素である。Operation要素１１０の配下のDownload要素１１１をサーバ側から指定することにより、クライアント側のダウンロードクライアント部７３を動作させ、サーバ側からパッケージ８０のダウンロードを指示することができる。
【００４２】
なお、このPackage3要素１０７の配下の要素は、すべてデバイス管理サーバ部６１側からネットワーク５を介してデバイス管理クライアントツリーＤＢ７２に追加されたものである。この追加のシーケンスについては後述する。
【００４３】
Inventory要素１２０は、ダウンロードされたパッケージ８０を展開してソフトウェア更新処理を行うための要素である。Delivered要素１２１の配下の要素には、ダウンロードサーバ部６３から取得したパッケージ８０の情報が格納される。Package3要素１２２はダウンロードされたパッケージ８０の名称を示す。Status要素１２３はインストール時のステータスを示す。Operation要素１２４の配下のInstall要素１２５をサーバ側から指定することにより、クライアント側の更新部２０２を動作させ、パッケージ８０に指定されたデバイスのソフトウェアのインストールを開始する。
【００４４】
Deployed要素１３０の配下の要素には、インストールされたソフトウェアの情報が格納される。第１制御装置要素１３１はインストールしたソフトウェアの名称を示す。Status要素１３２はインストール動作のステータスを示す。Version要素１３３は第１制御装置２２が保持しているソフトウェアのバージョン番号（例えば１．０）を示す。同様に、第２制御装置要素１３４はインストールしたソフトウェアの名称を示し、Status要素１３５はインストール動作のステータスを示し、Version要素１３６は第２制御装置２３が保持しているソフトウェアのバージョン番号（例えば１．１）を示す。同様に、ナビゲーション装置要素１３７はインストールしたソフトウェアの名称を示し、Status要素１３８はインストール動作のステータスを示し、Version要素１３９はナビゲーション装置２４が保持しているソフトウェアのバージョン番号（例えば１．４）を示す。
【００４５】
図９は、デバイス管理サーバツリーＤＢ６２の構造を模式的に示す図である。デバイス管理サーバツリーＤＢ６２は、情報をツリー構造に従って格納するデータベースである。デバイス管理サーバツリーＤＢ６２は、複数の車両２についての情報を保持する。デバイス管理サーバツリーＤＢ６２は、ツリー構造を構成する複数の要素を格納している。それら複数の要素には、root要素１５０、VIN1要素１５１、DevInfo要素１５４、VIN1要素１８０、DevDetail要素１５５、SCOMO要素１５６、その他情報要素１５８、Download要素１５７、Package1要素１５９、PkgURL要素１６０、Status要素１６１、Operation要素１６２、Download要素１６３、VIN2要素１５２、DevInfo要素１６４、DevDetail要素１６５、SCOMO要素１６６、およびその他情報要素１６７の各要素が含まれる。
【００４６】
VIN1要素１５１およびVIN2要素１５２は、それぞれ異なる車両２の識別子を示す。VIN1要素１５１、VIN2要素１５２それぞれの配下には、図８で説明したデバイス管理クライアントツリーＤＢ７２のroot要素１０１の配下の情報が格納される。つまり、VIN要素で指定される車両２のソフトウェア更新状況がすべてVIN要素の配下の要素に格納される構造となっている。このように、デバイス管理クライアント部７１およびデバイス管理サーバ部６１の間で、データが同期制御されているので、サーバ３は、複数の車両２のソフトウェア更新状況を把握することができる。
【００４７】
図１０は、ソフトウェア更新管理ＤＢ６４の構造を模式的に示す図である。ソフトウェア更新管理ＤＢ６４は、車両２のソフトウェア更新をどのように行うかを、車両２のベンダーが設定するためのデータベースである。ソフトウェア更新管理ＤＢ６４は、複数のレコードを有する。各々のレコードは、車両ＩＤ１８１、ＥＣＵＩＤ１８２、Version１８３、Package１８４、およびPkgURL１８５の各項目を有する。
【００４８】
車両ＩＤ１８１は、ソフトウェア更新の対象となる車両２の識別子を示す。ECUID１８２は、車両ＩＤ１８１により特定される車両２の第１制御装置２２、第２制御装置２３、またはナビゲーション装置２４を示す識別子である。Version１８３は、各装置に対して適用されるべき更新ソフトウェアのバージョン番号である。例えば第１制御装置２２の場合は１．０、第２制御装置２３の場合は１．１、ナビゲーション装置２４の場合は１．５のバージョンのソフトウェアに更新することを示す。Package１８４は、ソフトウェア更新する場合に、更新先のパッケージ８０の名称を示す。PkgURL１８５は、そのパッケージ８０をどのサーバからどのようにしてダウンロードをするかを決定するURL情報である。図８および図１０の例では、ナビゲーション装置２４のVersion１８３が１．５であるのに対し、デバイス管理クライアントツリーＤＢ７２のナビゲーション装置要素１３７のVersion１３９が１．４である。これは、ナビゲーション装置２４のソフトウェアをバージョン１．４からバージョン１．５に更新すべきであることを示している。
【００４９】
図１１は、ソフトウェア更新処理におけるメッセージのやり取りを示すシーケンス図である。ソフトウェア更新を行うとき、デバイス管理クライアント部７１はデバイス管理サーバ部６１にVIN情報を送信し（ステップ３０１）、ソフト更新管理ＤＢ６４の車両ＩＤ１８１（図１０）を参照する。VIN情報とは、車両２を識別する情報である。デバイス管理サーバ部６１は、デバイス管理サーバツリーＤＢ６２のVIN要素１８０に受信したVIN情報を格納する。
【００５０】
次に、デバイス管理サーバ部６１は、デバイス管理クライアント部７１に対しバージョン情報取得要求を送信する（ステップ３０２）。デバイス管理クライアント部７１は、バージョン情報をデバイス管理クライアントツリーＤＢ７２のツリー構造から取得して（ステップ３５１）、デバイス管理サーバ部６１にバージョン情報を送信する（ステップ３０３）。ここで言うバージョン情報とは、Deployed要素１３０配下のVersion要素１３２、Version要素１３６、Version要素１３９といった、ソフトウェアのバージョン情報のことである。デバイス管理サーバ部６１では、受け取ったバージョン情報と、ソフトウェア更新管理ＤＢ６４のバージョン情報とを比較して、どのデバイスのソフトウェアを更新するかを判断する（ステップ３５２）。
【００５１】
次にデバイス管理サーバ部６１は、ソフトウェア更新情報をデバイス管理クライアント部７１に送信する（ステップ３０４）。ソフトウェア更新情報とは、具体的には、図９のDownload要素１５７以下のツリー構造全体を指し、どこからパッケージ８０をダウンロードするかを示すPkgURL要素１６０などの情報を含む。このPackage3要素１５９やPkgURL要素１６０は、あらかじめソフトウェア更新管理ＤＢ６４のPackage要素１８４やPkgURL要素１８５から取得された情報である。デバイス管理クライアント部７１は、受信したソフトウェア更新情報をデバイス管理クライアントツリーＤＢ７２に追加する（ステップ３５３）。具体的には、受信したソフトウェア更新情報を図９のデバイス管理サーバツリーＤＢ６２の配下のSCOMO要素２０５の配下にDownload要素１０６として追加する。その後、デバイス管理クライアント部７１は、デバイス管理サーバ部６１に応答を返す（ステップ３０５）。
【００５２】
デバイス管理サーバ部６１は、ユーザにソフトウェア更新をしてよいかどうかを問い合わせるため、ソフトウェア更新許可要求メッセージＡをデバイス管理クライアント部７１に送信する（ステップ３０６）。デバイス管理クライアント部７１は、ＨＭＩ管理部２００に入力要求を送信する（ステップ３５４）。ＨＭＩ管理部２００は、現在選択されているＨＭＩデバイス（例えばナビゲーション装置２４）にメッセージを表示し、第１接触入力部２４３からユーザからの応答を受け取る。このとき、ナビゲーション装置２４の表示部２４５に表示されるイメージを図１２に例として示す。ＨＭＩ管理部２００は、応答をデバイス管理クライアント部７１に返す（ステップ３５５）。デバイス管理クライアント部７１は、許可か不許可かの情報をデバイス管理サーバ部６１に送信する（ステップ３０７）。
【００５３】
デバイス管理サーバ部６１は、ソフトウェア更新装置２１にパッケージ８０をダウンロードさせるために、デバイス管理クライアント部７１にダウンロード実行指示を送信する（ステップ３０８）。デバイス管理クライアント部７１は、デバイス管理クライアントツリーＤＢ７２に更新中であることを設定して（ステップ３６１）、ダウンロードクライアント部７３に対し、ダウンロードの実行を指示する（ステップ３５６）。このとき、ダウンロード先のURLは、ステップ３５３で設定したソフト更新情報に含まれるPkgURL要素１６０である。またデバイス管理クライアント部７１は、同時に、デバイス管理サーバ部６１に更新中であることを通知する（ステップ３６４）。デバイス管理サーバ部６１は、デバイス管理サーバツリーＤＢ６２に更新中であることを設定する（ステップ３５９）。
【００５４】
ダウンロードクライアント部７３は、ダウンロード先のURLを指定してダウンロードサーバ部６３にパッケージ８０を要求し（ステップ３０９）、パッケージ８０をダウンロードする（ステップ３１０）。ダウンロードクライアント部７３は、デバイス管理クライアント部７１にダウンロードが終わったことを通知する（ステップ３５７）。デバイス管理クライアント部７１は、ダウンロードが終了したことをデバイス管理サーバ部６１に送信する（ステップ３１１）。また、デバイス管理クライアントツリーＤＢ７２のStatus要素１０９にダウンロード状況（ここではダウンロードが正常終了したこと）を設定する（ステップ３５８）。デバイス管理サーバ部６１は、デバイス管理サーバツリーＤＢ６２にダウンロードが終了したことを設定する（ステップ３６０）。
【００５５】
図１３は、図１１から引き続き、ソフトウェア更新処理におけるメッセージのやり取りを示すシーケンス図である。デバイス管理サーバ部６１は、本当にソフトウェア更新してもよいかをユーザに確認するためのソフトウェア更新許可要求メッセージＢをデバイス管理クライアント部７１に送信する（ステップ３１２）。デバイス管理クライアント部７１は、ＨＭＩ管理部２００に対し入力要求を送信する（ステップ３５９）。ＨＭＩ管理部２００は、現在選択されているＨＭＩデバイス（例えばナビゲーション装置２４）にメッセージを表示し、第１接触入力部２４９からユーザからの応答を受け取る。ＨＭＩ管理部２００は、応答をデバイス管理クライアント部７１に返すステップ（３６０）。デバイス管理クライアント部７１は、許可か不許可かの情報をデバイス管理サーバ部６１に送信する（ステップ３１３）。
【００５６】
デバイス管理サーバ部６１は、ソフトウェア更新の実行を指示するメッセージをデバイス管理クライアント部７１に送信する（ステップ３１４）。デバイス管理クライアント部７１は、デバイス管理クライアントツリーＤＢ７２のStatus要素（例えばStatus要素１３８）を更新する（ステップ３６３）。デバイス管理クライアント部７１は、後述のソフトウェア更新処理３９０を実行するため、更新部２０２に更新開始メッセージを送信する（ステップ３１７）。デバイス管理クライアント部７１は、同時に、デバイス管理サーバ部６１に更新を開始した旨を送信する（ステップ３６６）。このとき、ソフトウェア更新処理３９０からＨＭＩ管理部２００に、ソフトウェアの更新を開始したことを通知するが、この処理については図１７および図１８で後述する。このタイミングで、メッセージが表示されるＨＭＩデバイスがナビゲーション装置２４からスマートフォン４に変更される。
【００５７】
デバイス管理サーバ部６１は、デバイス管理サーバツリーＤＢ６２のStatus要素（例えばStatus要素１３８）を更新する（ステップ３５９）。ソフトウェア更新処理３９０が終了すると、デバイス管理クライアント部７１は、デバイス管理サーバ部６１にソフト更新が完了したことを通知し（ステップ３１５）、デバイス管理クライアントツリーＤＢ７２のStatus要素（例えばStatus要素１３８）を設定する（ステップ３６１）。デバイス管理サーバ部６１は、ソフトウェア更新が終了したことを保存するため、デバイス管理サーバツリーＤＢ６２のStatus要素（例えばStatus要素１３８）を更新する（ステップ３６２）。デバイス管理サーバ部６１は、ソフトウェア更新が完了したことをユーザに通知するためのメッセージをデバイス管理クライアント部７１に送信する（ステップ３１６）。デバイス管理クライアント部７１は、ＨＭＩ管理部２００に対して完了通知を送り（ステップ３６３）、ユーザにソフトウェア更新が終わったことを報知する。このとき、スマートフォン４の表示部４４に表示されるイメージを図１４に例として示す。以上の処理の流れにより、ソフト更新処理のメッセージのやり取りが完了する。
【００５８】
図１５は、パッケージ８０の構造を模式的に示す図である。パッケージ８０は、ソフトウェア更新の際、ダウンロードサーバ部６３からダウンロードクライアント部７３へ受け渡される。
【００５９】
パッケージ８０は、ヘッダ部８１、シーケンス情報８２、および更新情報８３を含む。ヘッダ部８１は、後述のシーケンス情報８２と更新情報８３が、どのようにパッケージ内に格納されているかを記述する情報である。ヘッダ部８１は、例えばシーケンス情報８２のサイズおよび更新情報８３のサイズなどの情報を含む。ヘッダ部８１には更に、車両２を識別するVIN情報や、シーケンス情報８２および更新情報８３の圧縮形式を示す情報、シーケンス情報８２および更新情報８３を復号するための鍵情報などが含まれていてもよい。
【００６０】
シーケンス情報８２は、更新部２０２の動作を規定するスクリプトである。このスクリプトは、後述の図１６、図１７に示す更新部２０２での処理を、どの順序で実行し、どの順序で判断するかをプログラムとして記述する。シーケンス情報８２は、例えばJavaScript（登録商標）やRubyのようなプログラム言語、シェルやバッチのようなジョブ制御言語、ISO 13209に規定されるＯＴＸ（Open Test sequence eXchange format）などにより記述される。以下の説明では、シーケンス情報８２はＯＴＸにより記述されることを想定する。
【００６１】
更新情報８３は、第１制御装置２２、第２制御装置２３、およびナビゲーション装置２４を動かしているソフトウェアのバイナリコード情報、ソフトウェア更新で使用している手続き情報、車両２の診断情報などを含む。更新情報８３は、例えばISO 22901に既定されるＯＤＸ（Open Diagnostics data eXchange）により表現される。手続き情報には、例えばソフトウェアのバージョン情報などが含まれる。
【００６２】
図７に示した更新部２０２の各部とパッケージ８０との関係について説明する。更新部２０２は、シーケンス実行部７６、更新情報処理部７７、およびプロトコル処理部７８を含む。シーケンス実行部７６は、シーケンス情報８２を解釈し、インタプリタとしてスクリプトを実行する。更新情報処理部７７は、更新情報８３から作成したバイナリコードを、ソフトウェア更新の対象となるデバイスに送信する。プロトコル処理部７８は、更新情報処理部７７でデバイスに送ったバイナリコードをデバイスのストレージに格納するための手続きを実行する。
【００６３】
図１６は、更新部２０２の動作の一例を示すシーケンス図である。なお、前述の通り、図１５に示したシーケンス情報８２の内容により、更新部２０２の動作は変化する。以下の説明では、第１制御装置２２のソフトウェア更新を行う場合のシーケンスについて述べる。
【００６４】
デバイス管理サーバ部６１は、デバイス管理クライアント部７１にソフトウェア更新の実行を指示するメッセージを送信する（ステップ３１４）。デバイス管理クライアント部７１は、更新部２０２のシーケンス実行部７６に対し、更新処理の開始を指示する（ステップ４００）。シーケンス実行部７６は、更新情報処理部７７に対して、更新処理の開始を通知し（ステップＸ１）、その後、シーケンス情報８２を読み込んでプログラムとして解釈し（ステップ２７４）、シーケンスとして実行する。更新情報処理部７７は、パッケージ８０のヘッダ部８１に含まれる車両２のVIN情報を読み出して（ステップＸ２）、シーケンス実行部７６に送信する（ステップＸ３）。シーケンス実行部７６は、ステップＸ３で受信したVIN情報と、ステップ３０１で取得したVIN１とが一致するかどうかを調べ（ステップ４０１）、一致しなければ更新処理を中断し（ステップ４０２）、ＨＭＩ管理部２００に異常である旨を送信する（ステップ４１２）。他方、一致した場合には第１制御装置２２と通信して、バージョンを要求し（ステップ４０４）、バージョンを取得する（ステップ４０５）。更新情報処理部７７は、パッケージ８０の更新情報８３に含まれるバージョン情報を読み出して（ステップＸ４）、シーケンス実行部７６に送信する（ステップＸ５）。シーケンス実行部７６は、ステップＸ５で受信したバージョン情報が、ステップ４０５で取得したバージョンと一致するかどうかを調べ（ステップ４０５）、一致しない場合には更新処理を中断し（ステップ４０７）、ＨＭＩ管理部２００に異常である旨を送信する（ステップ４１２）。他方、一致した場合には、車両管理部２０８に車両情報を要求し（ステップ４０８）、車両２から各種情報を取得する（ステップ４０９）。ここでいう各種情報とは、例えば、イグニッションの状態やエンジンの状態を示す情報である。車両管理部２０８は、第１制御装置２２および第２制御装置２３などと通信して取得した上記の車両情報を保持している。
【００６５】
シーケンス実行部７６は、ステップ４０９で取得した車両情報を調べて（ステップ４１０）、ソフトウェア更新に問題がある状態であれば更新処理を中断し（ステップ４１１）ＨＭＩ管理部２００に異常である旨を送信する（ステップ４１２）。他方、問題がなければ、シーケンス実行部７６は第１制御装置２２と通信し、DTC情報を要求し（ステップ４１３）、DTC情報を取得する。DTC情報とは、車両２の診断情報の一種であり、Diagnostic Trable Codeの略である。DTC情報を調査することにより、車両２に何らかの問題の有無を調査することができる。シーケンス実行部７６はDTC情報を調査し（ステップ４１５）、問題がある場合には（ステップ４１６）その旨をＨＭＩ管理部２００に送信し異常表示を行う（ステップ４１７）。異常表示４１２および異常表示４１７をデバイス管理クライアント部７１が受け取ったときには、デバイス管理サーバ部６１に異常終了した旨の応答を送信する（ステップ４１８）。
【００６６】
ステップ４１５で異常がなかった場合、更新部２０２は、第１制御装置２２のソフト更新をするために認証処理を実行する。認証処理において、シーケンス実行部７６は、第１制御装置２２に認証要求を送信し（ステップ４１９）応答としてチャレンジ情報を受け取る（ステップ４２０）。シーケンス実行部７６は、決められた方法に従いチャレンジ情報からレスポンス情報を生成し（ステップ４２１）、第１制御装置２２に送信する。シーケンス実行部７６は、第１制御装置２２から認証情報を受け取り（ステップ４２３）、認証に失敗したならば（ステップ４２４）、デバイス管理クライアント部７１は、ＨＭＩ管理部２００にその旨を送信し異常表示を行う（ステップ４２５）。デバイス管理クライアント部７１は、同時に、デバイス管理サーバ部６１に認証に失敗した旨の応答を送信する（ステップ４２６）。
【００６７】
図１７は、図１６から引き続き、更新部２０２の動作の一例を示すシーケンス図である。認証に成功したならば、シーケンス実行部７６は、更新情報処理部７７に対して、パッケージ８０に基づくソフトウェア更新を行うよう指示する（ステップＸ７）。更新情報処理部７７は、第１制御装置２２が固有に保持する学習値を退避する設定になっているかどうかを調べ（ステップ４３０）、退避しないならば中断し（ステップ４３１）、デバイス管理クライアント部７１はＨＭＩ管理部２００にその旨を送信し異常表示を行う（ステップ４３２）。デバイス管理クライアント部７１は、同時に、デバイス管理サーバ部６１に学習値を退避しない旨の応答を送信する（ステップ４３３）。更新情報処理部７７は、第１制御装置２２と通信して学習値を要求し（ステップ４３４）、学習値を取得して（ステップ４３５）、ストレージ２１９に取得した学習値を保存する（ステップ４３６）。
【００６８】
更新情報処理部７７は、第１制御装置２２のソフト更新のために、Block消去を要求し（ステップ４３７）、パッケージ８０の更新情報８３に含まれるバイナリコードの書き込みを要求する（ステップ４３８）。複数回のソフトウェア更新、あるいは別のBlockのソフトウェア更新を行う場合には（ステップ４３９）、ステップ４３７に戻る。
【００６９】
更新処理がすべて終了したら、更新情報処理部７７は、ステップ４３６で保持した学習値を第１制御装置２２に書き戻すために学習値書き込み要求を送信する（ステップ４４２）。更新情報処理部７７は、第１制御装置２２にリセットを要求し（ステップ４４０）、デバイス管理クライアント部７１にソフトウェア更新の終了を通知する（ステップ４４１）。デバイス管理クライアント部７１は、デバイス管理サーバ部６１にソフトウェア更新が完了した旨を通知する（ステップ３１５）。デバイス管理サーバ部６１は、ソフトウェア更新が完了した旨のメッセージを表示する指示をデバイス管理クライアント部７１に送信し（ステップ３１６）、デバイス管理クライアント部７１はＨＭＩ管理部２００にそのメッセージを送信して表示する（ステップ３６３）。以上の動作により、第１制御装置２２のソフトウェア更新が実行される。
【００７０】
なお、ソフトウェア更新の対象となるデバイスは、第１制御装置２２ではなく、第２制御装置２３やナビゲーション装置２４であってもよい。その場合には、上記説明内の第１制御装置２２をそれぞれ第２制御装置２３やナビゲーション装置２４に置き換えればよい。
【００７１】
ＨＭＩ管理部２００について、図７を参照して説明する。ＨＭＩ管理部２００は、ＨＭＩ登録部２５１、ＨＭＩ管理ＤＢ２５２、ＨＭＩ選択部２５３、および転送部２５４を有する。
【００７２】
ＨＭＩ登録部２５１は、ソフトウェア更新システム１に接続するＨＭＩデバイスの各種情報を、後述のＨＭＩ管理ＤＢ２５２に登録する機能である。ソフトウェア更新システム１に接続するＨＭＩデバイスには、例えばナビゲーション装置２４のように車両２に取り付けられソフトウェア更新装置２１とＵＳＢネットワーク１７で接続する装置や、スマートフォン４のようにネットワーク５を介して車両２のソフトウェア更新装置２１と通信する装置が含まれる。
【００７３】
登録方法は、例えばナビゲーション装置２４の第１映像出力部２４３および第１接触入力部２４９を用いて実現したユーザインタフェースを用いる方法や、スマートフォン４がネットワーク５を介して車両２に接続したことを契機にする方法がある。前者の方法では、例えば第１映像出力部２４３の画面上に登録するＨＭＩデバイスの一覧を表示して、第１接触入力部２４９でユーザの入力を受け付けてＨＭＩデバイスを選択し、選択されたＨＭＩデバイスをＨＭＩ管理ＤＢ２５２に登録する。後者の方法では、例えばスマートフォン４が車両２に接続したときに、スマートフォン４が自身の各種情報をＨＭＩ管理部２００に送信し、ＨＭＩ登録部２５１がスマートフォン４をＨＭＩデバイスとしてＨＭＩ管理ＤＢ２５２に登録する。
【００７４】
ＨＭＩ管理ＤＢ２５２は、ＨＭＩ登録部２５１により収集したＨＭＩデバイスの情報を管理するデータベースである。ＨＭＩ管理ＤＢ２５２の詳細については後述する。ＨＭＩ選択部２５３は、ＨＭＩ管理ＤＢ２５２が保持しているＨＭＩデバイスの情報の中から、ソフトウェア更新などを契機として１つのＨＭＩデバイスを選択し、転送部２５４に転送先として設定する。例えば、ステップ４９２で入手したＨＭＩデバイスのIPアドレスをＨＭＩ選択部２５３に設定する。転送部２５４は、ＨＭＩ管理部２００が受信する情報を、ＨＭＩ選択部２５３が選択したＨＭＩデバイスへ転送する。ＨＭＩ管理部２００が受信する情報とは、例えばソフトウェア更新装置２１、第１制御装置２２、第２制御装置２３、ナビゲーション装置２４などが出力するメッセージや映像などである。例えば転送部２５４は、メッセージや映像を、第２通信部２０５を介してサーバ３の転送部３０３に転送したり、第３通信部２０６を介してナビゲーション装置２４に転送したりする。
【００７５】
図１８は、ＨＭＩ管理ＤＢ２５２の構造を模式的に示す図である。ＨＭＩ管理ＤＢ２５２は、０個以上の複数のレコードから構成されるデータベースである。１つのレコードは、１つのＨＭＩデバイスに関する情報を示す。すなわち、１つのレコードは１つのＨＭＩデバイスに対応している。各々のレコードは、デバイス種別５２０、送信先アドレス５３０、入力デバイスフラグ５４０、使用中フラグ５５０、および車外フラグ５６０を含む。
【００７６】
デバイス種別５２０は、ＨＭＩデバイスがどのようなものかを一意に示す情報である。デバイス種別５２０は、例えばＩＶＩ（ナビゲーション装置やスマートフォン）、ＨＭＤ（ヘッドマウントディスプレイ）、ＨＵＤ（ヘッドアップディスプレイ）などを示す情報である。送信先アドレス５３０は、このＨＭＩデバイスに情報を表示するためには、どこに情報を送ればよいかを示すあて先情報である。送信先アドレス５３０は、例えばＩＰアドレスやＭＡＣアドレスである。送信先アドレス５３０により示されるあて先に情報を送信することにより、対応するＨＭＩデバイスに情報が表示される。
【００７７】
入力デバイスフラグ５４０は、ＨＭＩデバイスが入力デバイスである、あるいは入力デバイスの機能を持つか否かを示すフラグである。使用中フラグ５５０は、ＨＭＩデバイスが現在使用中であるか否かを示すフラグである。車外フラグ５６０は、ＨＭＩデバイスが車外にあるデバイスであるか、車内にあるHMIデバイスかを示すフラグである。
【００７８】
図１８の例では、ＨＭＩ管理ＤＢ２５２には３つのＨＭＩデバイスが登録されている。１つ目のＨＭＩデバイスはＩＶＩ５２１であり、送信先アドレス５３１は「192.168.0.5」というＩＰアドレス、入力デバイスフラグ５４１は「○」つまり入力デバイスであり、使用中フラグ５５１は「×」つまり使用中ではなく、車外フラグ５６１は「×」つまり車内にある。２つ目のＨＭＩデバイスはスマホ５２２であり、送信先アドレス５３２は「192.168.1.5」というＩＰアドレス、入力デバイスフラグ５４２は「○」つまり入力デバイスであり、使用中フラグ５５１は「○」つまり使用中であり、車外フラグ５６３は「○」つまり車外にある。３つ目のＨＭＩデバイスはＨＭＤ５２３であり、送信先アドレス５３３は「192.168.2.5」というＩＰアドレス、入力デバイスフラグ５４３は「×」つまり入力デバイスではなく、使用中フラグ５５１は「×」つまり使用中ではなく、車外フラグ５６３は「×」つまり車内にある。
【００７９】
複数のＨＭＩデバイスに対応して、ソフト更新時出力されるメッセージを、適切なＨＭＩデバイスに転送することにより表示する仕組みを実現する動作について、図７を用いて説明する。
【００８０】
スマートフォン４の第６通信部４０１は、前述のデバイス種別４２０、送信先アドレス４３０、および入力デバイスフラグ４４０を第２通信部２０５を介してＨＭＩ管理部２００のＨＭＩ登録部２５１に送信する。ＨＭＩ登録部２５１は、受信したデバイス種別５２０、送信先アドレス５３０、および入力デバイスフラグ５４０からレコードを生成してＨＭＩ管理ＤＢ２５２に登録する。ナビゲーション装置２４も同様に、前述のデバイス種別４２０、送信先アドレス４３０、および入力デバイスフラグ４４０を第３通信部２０６を介してソフトウェア更新装置２１のＨＭＩ登録部２５１に送信する。ＨＭＩ登録部２５１は、受信したデバイス種別５２０、送信先アドレス５３０、および入力デバイスフラグ５４０からレコードを生成してＨＭＩ管理ＤＢ２５２に登録する。以上のような動作により、複数のＨＭＩデバイスをソフトウェア更新システム１に登録することができる。
【００８１】
サーバ３は、第４通信部３０４を介して配信部３０１と受信部２０１との間で通信を行い、パッケージ８０を配信する。ソフトウェア更新装置２１の更新部２０２は、パッケージ８０を読み込み、第１通信部２０４を介して第１制御装置２２、第２制御装置２３、およびナビゲーション装置２４のソフトウェアを更新する。このとき、更新部２０２は、ＨＭＩ管理部２００のＨＭＩ選択部２５３に対し、ソフトウェアを更新した旨を伝える。ＨＭＩ選択部２５３は、これを契機に、ＨＭＩ管理ＤＢ２５２に登録されているレコードの中から適合したレコードを選択し、選択したレコードから送信先アドレス５３０を取得する。ＨＭＩ選択部２５３は、取得した送信先アドレス５３０を転送部２５４に設定する。転送部２５４は、ＨＭＩ管理部２００に到達したメッセージや映像などの情報を送信先アドレス５３０に送信して、転送処理を行う。
【００８２】
図１１、図１３、図１６、図１７の各シーケンス内において、ＨＭＩ管理部２００が送受信するデータ、具体的には、図１１の入力要求３５４、応答３５５、図１３の入力要求３５９、応答３６０、および完了通知３６３、図１６の異常表示４１２、異常表示４１７、および異常表示４２５、図１７の異常表示４３２および完了通知３６３は、転送部２５４によりＨＭＩ管理部２００が選択した送信先アドレス４３０に送信される。
【００８３】
図１９は、ＨＭＩ管理ＤＢ２５２に登録されているレコードの中から適合したレコードを選択するＨＭＩ選択部２５３の動作のフローチャートである。ＨＭＩ選択部２５３は、ＨＭＩデバイスを切り替える必要が生じたかどうかを調べる（ステップ１００７）。例えばソフトウェア更新などにより、ＨＭＩデバイスを切り替える必要が生じたならば、切り替える必要が生じたＨＭＩデバイスのＩＰアドレスを取得する（ステップ１００８）。本実施の形態では、ＩＰアドレスは更新部２０２から得ることができる。ＨＭＩ選択部２５３は、ＨＭＩ管理ＤＢ２５２のレコードを検索し、そのＩＰアドレスに一致するレコードを取得する（ステップ１００９）。もし、そのレコードの使用中フラグ５５０が「×」、つまりＨＭＩデバイスが使用中ではなかった場合、ＨＭＩ選択部２５３は処理をステップ１０００に進める。他方、レコードの使用中フラグ５５０が「○」、つまりＨＭＩデバイスが使用中だった場合、その使用中フラグ５５０を暫定的に「△」にし（ステップ１０１１）、マーキングを行う。
【００８４】
ＨＭＩ選択部２５３は、ＨＭＩ管理ＤＢ２５２のレコードを検索し、使用フラグ５５０が「×」であるレコードを選択する（ステップ１０１２）。使用フラグ５５０が「×」であるレコードが複数見つかった場合、ＨＭＩ選択部２５３はさらに入力デバイスフラグ５４０を調べ、「○」であるレコードを選択する（ステップ１０１２）。ＨＭＩ選択部２５３は、選択したレコードの使用中フラグ５５０を「○」に変更し（ステップ１０１３）、選択したレコードから送信先アドレス５３０を取得する（ステップ１０１４）。ＨＭＩ選択部２５３は、取得した送信先アドレス５３０を転送部２５４に設定する（ステップ１０１５）。ＨＭＩ選択部２５３は、使用フラグ５５０が「△」であるレコードを検索し（ステップ１０１６）、そのレコードの使用フラグ５５０を「×」に変更し、処理をステップ１０００に進める。
【００８５】
図２０は、転送部２５４の動作を示すフローチャートである。転送部２５４は、ＨＭＩ選択部２５３からＨＭＩデバイスを切り替える必要が生じたことを指示されたかどうかを調べる（ステップ２００１）。例えばソフトウェア更新などに起因して、ＨＭＩデバイスを切り替える必要が生じたことが指示される。ＨＭＩデバイスを切り替える必要が生じたことが指示されていないならば、転送部２５４はステップ２００４を実行する。ＨＭＩデバイスを切り替える必要が生じていたならば、転送部２５４は、切り替える必要があるＨＭＩデバイスのＩＰアドレスを取得する（ステップ２００２）。次に転送部２５４は、そのＩＰアドレスを記憶部２１１のメモリに保存する（ステップ２００３）。
【００８６】
転送部２５４は、ＨＭＩ管理部２００にメッセージや映像が送られてきたかどうかを調べ（ステップ２００４）、送られていなければステップ２００１を実行する。送られていた場合には、このメッセージを受信し（ステップ２００５）、ステップ２００３で保存した送信先のＩＰアドレスを第２通信部２０５または第３通信部２０６に設定する（ステップ２００６）。転送部２５４は、到着したメッセージを第２通信部２０５または第３通信部２０６に設定してメッセージを送信する。その後、転送部２５４はステップ２００１を実行する。
【００８７】
以上のような動作により、ソフトウェア更新の際に出力されるメッセージは、適切なＨＭＩデバイスに転送され、そのＨＭＩデバイスにより表示される。
【００８８】
上述した実施の形態によれば、次の作用効果が得られる。
（１）ＨＭＩ選択部２５３は、複数のＨＭＩデバイスから１つのＨＭＩデバイスを選択する。転送部２５４は、ＨＭＩ管理部２００に送られてきたソフトウェア更新に関するメッセージや映像を、ＨＭＩ選択部２５３により選択されたＨＭＩデバイスに転送する。このようにしたので、更新に関するメッセージを適切なＨＭＩデバイスに転送することができる。
【００８９】
（２）ＨＭＩ選択部２５３は、例えばソフトウェア更新などに起因して、ＨＭＩデバイスを切り替える必要が生じたとき、複数のＨＭＩデバイスから１つのＨＭＩデバイスを選択する。このようにしたので、常に更新に関するメッセージを転送するにふさわしいＨＭＩデバイスを選択することができる。
【００９０】
（３）転送部２５４は、車両１の診断情報の一種であるＤＴＣ情報を、ＨＭＩ選択部２５３により選択されたＨＭＩデバイスに転送する。このようにしたので、車両２の状態をユーザに確実に通知することができる。
【００９１】
（４）転送部２５４は、ＨＭＩ選択部２５３からＨＭＩデバイスを切り替える必要が生じたかどうかを調べ、例えばソフトウェア更新などに起因して、ＨＭＩデバイスを切り替える必要が生じた場合、ＨＭＩ選択部２５３は、複数のＨＭＩデバイスから１つのＨＭＩデバイスを選択する。すなわち、ＨＭＩ選択部２５３は、複数のＨＭＩデバイスのうちのいずれか１つのソフトウェアが更新される場合、更新対象のＨＭＩデバイスとは別の１つのＨＭＩデバイスを選択する。このようにしたので、ソフトウェア更新のタイミングでＨＭＩデバイスを切替え、ソフトウェア更新システムの発するメッセージを、適切なＨＭＩデバイスに表示することが可能になる。
【００９２】
（第２の実施の形態）
図２１は、第２の実施の形態に係るソフトウェア更新システム１ａのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム１ａは、図７に示した第１の実施の形態に係るソフトウェア更新システム１と同様の構成を有しているが、更にソフトウェア更新装置２１に接触確認部３００１が追加されている。
【００９３】
接触確認部３００１は、スマートフォン４の第２接触入力部４０５にユーザが触れたことを検知する。換言すると、接触確認部３００１は、第２接触入力部４０５の入力情報が変化したことを検知する。接触確認部３００１は、スマートフォン４においてユーザの接触が検知されたことを検知すると、ＨＭＩ管理部２００にそのスマートフォンのＩＰアドレスを通知する。この通知を契機に、図１９のステップ１００７において肯定判定が為され、ＨＭＩ選択部２５３が動作して新しいＨＭＩデバイスを選択する動作が開始される。
【００９４】
以上の動作により、ユーザが接触したことを契機にユーザが使用するＨＭＩデバイスを切り替える仕組みを実現することができる。
【００９５】
上述した実施の形態によれば、第１の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
（１）ＨＭＩ選択部２５３は、複数のＨＭＩデバイスのうち、接触確認部３００１によりユーザが触れたことが検知された１つのＨＭＩデバイスを選択する。このようにしたので、ユーザが接触している、すなわち使用中であるＨＭＩデバイスに対し、ソフトウェア更新時のメッセージを表示することが可能となる。
【００９６】
（第３の実施の形態）
図２２は、第３の実施の形態に係るソフトウェア更新システム１ｂのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム１ｂは、図７に示した第１の実施の形態に係るソフトウェア更新システム１と同様の構成を有しているが、更にスマートフォン４にＨＭＩ設定部３００２が追加されている。
【００９７】
ＨＭＩ設定部３００２は、第２映像出力部４０４および第２接触入力部４０５を使って、使用するＨＭＩデバイスを設定する。ＨＭＩ設定部３００２は、第２映像出力部４０４および第２接触入力部４０５により実現されるＧＵＩ（グラフィカルユーザインタフェース）により、ユーザに対して、使用するＨＭＩデバイスを設定するインタフェースを提供する。例えば、ＨＭＩ設定部３００２によって、第２映像出力部４０４に、使用可能なＨＭＩデバイスが一覧表示される。ユーザが第２接触入力部４０５により特定のＨＭＩデバイスを選択（指定）すると、ＨＭＩ設定部３００２は、選択（指定）されたＨＭＩデバイスのＩＰアドレスをソフトウェア更新装置２１のＨＭＩ管理部２００に通知する。この通知を契機に、図１９のステップ１００７において肯定判定が為され、ＨＭＩ選択部２５３が動作して新しいＨＭＩデバイスを選択する動作が開始される。
【００９８】
以上の動作により、ユーザがＧＵＩを用いて明示的にＨＭＩデバイスを選択したことを契機に、ユーザが使用するＨＭＩデバイスを切り替える仕組みを実現することができる。
【００９９】
上述した実施の形態によれば、第１の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
（１）ＨＭＩ選択部２５３は、複数のＨＭＩデバイスのうち、ユーザにより指定された１つのＨＭＩデバイスを選択する。このようにしたので、ユーザが指定したＨＭＩデバイスに対し、ソフトウェア更新時のメッセージを表示することが可能となる。
【０１００】
（第４の実施の形態）
図２３は、第４の実施の形態に係るソフトウェア更新システム１ｃのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム１ｃは、図７に示した第１の実施の形態に係るソフトウェア更新システム１と同様の構成を有しているが、更にソフトウェア更新装置２１にＨＭＩ生存確認部３００３が追加されている。
【０１０１】
ＨＭＩ生存確認部３００３は、現在メッセージを表示可能なＨＭＩデバイスを検出する。ＨＭＩ生存確認部３００３は、ソフトウェア更新システム１ｃに接続するすべてのＨＭＩデバイスに対し、現在メッセージを表示可能かどうかを問い合わせる。ＨＭＩ生存確認部３００３は、表示不可能であるＨＭＩデバイスを検知したことを契機に、ＨＭＩ管理部２００のＨＭＩ管理ＤＢ２５２を調べ、現在使用できるＨＭＩデバイスを検出する。ＨＭＩ生存確認部３００３は、現在使用できるＨＭＩデバイスのＩＰアドレスをＨＭＩ管理部２００に通知する。この通知を契機に、図１９のステップ１００７において肯定判定が為され、ＨＭＩ選択部２５３が動作して新しいＨＭＩデバイスを選択する動作が開始される。
【０１０２】
以上の動作により、例えばソフトウェア更新中である、あるいはユーザが使用中である、などの理由でＨＭＩデバイスが使用できないことを検知したことを契機、ユーザが使用するＨＭＩデバイスを切り替える仕組みを実現することができる。
【０１０３】
上述した実施の形態によれば、第１の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
（１）ＨＭＩ選択部２５３は、ＨＭＩデバイスのソフトウェアが更新中である場合、他のＨＭＩデバイスを選択する。このようにしたので、ユーザが利用可能なＨＭＩデバイスのみを確実に選択することができる。
【０１０４】
（２）ＨＭＩ選択部２５３は、複数のＨＭＩデバイスのうち、ＨＭＩ生存確認部３００３により使用可能な状態であると検知された１つのＨＭＩデバイスを選択する。このようにしたので、ＨＭＩデバイスから明示的に使用できないことを通知する必要なく、現在使用可能なＨＭＩデバイスに対し、ソフトウェア更新時のメッセージを表示することが可能となる。
【０１０５】
（第５の実施の形態）
図２４は、第５の実施の形態に係るソフトウェア更新システム１ｄのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム１ｄは、図７に示した第１の実施の形態に係るソフトウェア更新システム１と同様の構成を有しているが、更にスマートフォン４に距離測定部３００４が追加されている。また、ソフトウェア更新装置２１に距離判断部３００５が追加されている。
【０１０６】
距離測定部３００４は、スマートフォン４と車両２との距離を測定する。例えば、距離測定部３００４は車両２との間で常に（または間欠的に）無線通信を行い、その電波強度からスマートフォン４と車両２との距離を測定する。
【０１０７】
距離判断部３００５は、距離測定部３００４により測定された距離が一定以上になったことを検知する。換言すると、距離判断部３００５は、スマートフォン４を持ったユーザが、車両２から一定以上の距離だけ離れたことを検知する。距離判断部３００５は、スマートフォン４と車両２との距離が一定以上になったことを検知すると、ＨＭＩ管理部２００にそのスマートフォンのＩＰアドレスを通知する。この通知を契機に、図１９のステップ１００７において肯定判定が為され、ＨＭＩ選択部２５３が動作して新しいＨＭＩデバイスを選択する動作が開始される。
【０１０８】
以上の動作により、ユーザが車両２から一定距離以上離れたことを契機に、ユーザが使用するＨＭＩデバイスを切り替える仕組みを実現することができる。
【０１０９】
なお、距離測定部３００４による距離の測定は、上述した無線通信の電波強度を用いる方法とは異なる方法により為されてもよい。また、距離測定部３００４による距離の測定は、スマートフォン４と車両２との距離が予め定められた距離以上になったか否かを判断できる程度の精度であればよい。
【０１１０】
上述した実施の形態によれば、第１の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
（１）ＨＭＩ選択部２５３は、距離判断部３００５により車両２から一定以上の距離だけ離れたことが検知されたＨＭＩデバイスとは異なるＨＭＩデバイスを選択する。このようにしたので、ユーザが確実に利用可能なＨＭＩデバイスにソフトウェア更新に関する通知メッセージを表示することができる。例えばユーザが車両２内にいるときにはナビゲーション装置２４に、ユーザが車両２から距離を取ったときにはスマートフォン４にメッセージを表示することが可能となる。
【０１１１】
（第６の実施の形態）
図２５は、第６の実施の形態に係るソフトウェア更新システム１ｅのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム１ｅは、図７に示した第１の実施の形態に係るソフトウェア更新システム１と同様の構成を有しているが、更にソフトウェア更新装置２１に車両状態判断部３００６が追加されている。
【０１１２】
車両状態判断部３００６は、車両管理部２０８から車両状態を取得し、車両２のエンジンがかかっているか否かを検知する。車両状態判断部３００６は、車両状態の変化を検知すると、ＨＭＩ管理部２００のＨＭＩ管理ＤＢ２５２を調べ、新しいＨＭＩデバイスのＩＰアドレスをＨＭＩ管理部２００に通知する。この通知を契機に、図１９のステップ１００７において肯定判定が為され、ＨＭＩ選択部２５３が動作して新しいＨＭＩデバイスを選択する動作が開始される。
【０１１３】
以上の動作により、車両２の車両状態の変化を契機にユーザが使用するＨＭＩデバイスを切り替える仕組みを実現することができる。
【０１１４】
なお、車両状態判断部３００６は、車両２のエンジンがかかっているか否かではなく、例えば、イグニッションのオンオフを検知してもよい。
【０１１５】
上述した実施の形態によれば、第１の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
（１）ＨＭＩ選択部２５３は、車両状態判断部３００６により車両状態が変化したことが検知されたとき、１つのＨＭＩデバイスを選択する。このようにしたので、車両状態の変化に伴いユーザが使用するＨＭＩデバイスを切り替えることができる。例えば、車両２の電源がオンのときにはナビゲーション装置２４に、車両２の電源がオフのときにはスマートフォン４にメッセージを表示することが可能となる。
【０１１６】
（第７の実施の形態）
図２６は、第７の実施の形態に係るソフトウェア更新システム１ｆのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム１ｆは、図７に示した第１の実施の形態に係るソフトウェア更新システム１と同様の構成を有しているが、更にソフトウェア更新装置２１にＨＭＩ応答確認部３００７が追加されている。
【０１１７】
ＨＭＩ応答確認部３００７は、ＨＭＩ管理部２００の転送部２５４がＨＭＩデバイスに送信したメッセージに対し、応答が一定時間以内に返ってきているか否かを検出する。ＨＭＩ応答確認部３００７は、ＨＭＩデバイスにより送信されたメッセージに対して、一定時間以内に応答を返さなかった場合、ＨＭＩ管理部２００のＨＭＩ管理ＤＢ２５２を調べて現在使用できるＨＭＩデバイスを検出する。ＨＭＩ応答確認部３００７は、使用できるＨＭＩデバイスのＩＩＰアドレスをＨＭＩ管理部２００に通知する。この通知を契機に、図１９のステップ１００７において肯定判定が為され、ＨＭＩ選択部２５３が動作して新しいＨＭＩデバイスを選択する動作が開始される。
【０１１８】
転送部２５４は、ＨＭＩデバイスに直近に送信したメッセージを保持する機能を有する。ＨＭＩ選択部２５３が新しいＨＭＩデバイスを選択したタイミングで、転送部２５４は、保持しておいた直近のメッセージを新しいＨＭＩデバイスに送信する。なお、ＨＭＩ応答確認部３００７は、一定時間応答がないことを検出するために、時刻管理部２１３をタイマーとして使用する。
【０１１９】
以上の動作により、ＨＭＩデバイスにメッセージを送信し、ユーザがそのメッセージに対する応答を一定時間返さなかった場合、ユーザが使用するＨＭＩデバイスを切り替え、そのＨＭＩデバイスに改めてメッセージを再送する仕組みを実現することができる。
【０１２０】
上述した実施の形態によれば、第１の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
（１）ＨＭＩ選択部２５３は、転送部２５４により通知メッセージがＨＭＩデバイスに転送された後、一定時間内に応答が確認されなかった場合、他のＨＭＩデバイスを選択し直し、転送部２５４は、ＨＭＩ選択部２５３により選択し直されたＨＭＩデバイスに、通知メッセージを再び転送する。このようにしたので、ＨＭＩデバイスがメッセージを表示したが、ユーザが一定時間反応しなかった場合に、別のＨＭＩデバイスに同じ通知メッセージを表示し直すことが可能となる。
【０１２１】
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【０１２２】
１、１ａ、１ｂ、１ｃ、１ｄ、１ｅ、１ｆ…ソフトウェア更新システム、２…車両、３…サーバ、４…スマートフォン、２０２…更新部、２５１…ＨＭＩ登録部、２５２…ＨＭＩ管理ＤＢ、２５３…ＨＭＩ選択部、２５４…転送部
【図１】
0006754622.tif 000002
【図２】
0006754622.tif 000003
【図３】
0006754622.tif 000004
【図４】
0006754622.tif 000005
【図５】
0006754622.tif 000006
【図６】
0006754622.tif 000007
【図７】
0006754622.tif 000008
【図８】
0006754622.tif 000009
【図９】
0006754622.tif 000010
【図１０】
0006754622.tif 000011
【図１１】
0006754622.tif 000012
【図１２】
0006754622.tif 000013
【図１３】
0006754622.tif 000014
【図１４】
0006754622.tif 000015
【図１５】
0006754622.tif 000016
【図１６】
0006754622.tif 000017
【図１７】
0006754622.tif 000018
【図１８】
0006754622.tif 000019
【図１９】
0006754622.tif 000020
【図２０】
0006754622.tif 000021
【図２１】
0006754622.tif 000022
【図２２】
0006754622.tif 000023
【図２３】
0006754622.tif 000024
【図２４】
0006754622.tif 000025
【図２５】
0006754622.tif 000026
【図２６】
0006754622.tif 000027