(57)【要約】      （修正有）【課題】少ない記憶領域でデータを更新できる更新装置、更新システムを提供する。【解決手段】更新装置は、複数のデータファイルが格納される記憶部と、サーバ装置から更新ファイルを受信する通信部と、記憶部のファイルパスであり複数のデータファイルが含まれる読み込み専用のイメージレイヤ、記憶部のファイルパスであり読み書き可能なコンテナレイヤ、および記憶部のファイルパスであるコンテナマウントを設定するオーバーレイ管理部と、コンテナマウントをイメージレイヤを下位レイヤとしコンテナレイヤを上位レイヤとして重ね合わせたファイル状態とし、コンテナマウントへの書き込み処理はコンテナレイヤへの書き込みとするオーバーレイ処理を実行するオーバーレイ実行部と、更新ファイルを用いてコンテナマウントへの書き込みを行い、複数のデータファイルの少なくとも一部を更新する更新部とを備える。【選択図】図１
2019101917.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータファイルが格納される記憶部と、
サーバ装置から更新ファイルを受信する通信部と、
前記記憶部のファイルパスであり前記複数のデータファイルが含まれる読み込み専用のイメージレイヤ、前記記憶部のファイルパスであり読み書き可能なコンテナレイヤ、および前記記憶部のファイルパスであるコンテナマウントを設定するオーバーレイ管理部と、
前記コンテナマウントを、前記イメージレイヤを下位レイヤとし前記コンテナレイヤを上位レイヤとして重ね合わせたファイル状態とし、前記コンテナマウントへの書き込み処理は前記コンテナレイヤへの書き込みとするオーバーレイ処理を実行するオーバーレイ実行部と、
前記更新ファイルを用いて前記コンテナマウントへの書き込み処理を実行し、前記複数のデータファイルの少なくとも一部を更新する更新部とを備える更新装置。
【請求項２】
請求項１に記載の更新装置において、
前記複数のデータファイルには実行可能ファイルが含まれ、
前記記憶部のファイルパスである実行パスに存在する実行可能ファイルを実行する実行部をさらに備え、
前記更新部は、前記コンテナマウントへの書き込みを行うと、前記実行パスを前記イメージレイヤから前記コンテナマウントへ書き換える更新装置。
【請求項３】
請求項１または請求項２に記載の更新装置において、
前記オーバーレイ実行部は、第１の前記オーバーレイ処理が有効な状態でさらに第２の前記オーバーレイ処理を実行し、
前記第２のオーバーレイ処理における前記イメージレイヤには、前記第１のオーバーレイ処理における前記コンテナマウントに設定されたファイルパスが設定される更新装置。
【請求項４】
請求項３に記載の更新装置において、
前記オーバーレイ実行部は、複数の前記オーバーレイ処理を実行し、
前記複数のオーバーレイ処理ではいずれも、前記イメージレイヤには直前の前記オーバーレイ処理における前記コンテナマウントに設定されたファイルパスが設定され、
前記オーバーレイ実行部が作成した最新の前記オーバーレイ処理における前記コンテナマウントに設定されたファイルパスをコピー元とするコピー処理により前記更新部による複数回の更新をマージするレイヤ合成部をさらに備える更新装置。
【請求項５】
請求項４に記載の更新装置において、
前記記憶部の空き容量が予め定めた値を下回ると前記レイヤ合成部に動作指令を出力するレイヤ合成指令部をさらに備える更新装置。
【請求項６】
請求項１から請求項５までのいずれか一項に記載の更新装置において、
前記更新装置が搭載される車両のイグニッションスイッチの状態を取得するイグニッション受信部と、
前記イグニッション受信部の受信結果に基づき前記更新部に動作指令を出力する更新開始判断部とをさらに備える更新装置。
【請求項７】
請求項１から請求項６までのいずれか一項に記載の更新装置において、
前記サーバ装置から受信する前記更新ファイルは差分データであり、
前記記憶部に格納されている前記データファイルと前記更新ファイルとを用いて更新後のデータファイルを作成する差分更新部をさらに備える更新装置。
【請求項８】
請求項３に記載の更新装置において、
前記コンテナレイヤを削除することで更新前の状態に戻すロールバック部をさらに備える更新装置。
【請求項９】
請求項８に記載の更新装置において、
前記通信部は前記更新ファイルとともに削除の可否を示す削除禁止フラグを受信し、
前記更新部は、前記コンテナレイヤごとに前記削除禁止フラグの有無を管理し、
前記ロールバック部は、前記削除禁止フラグが付された前記コンテナレイヤを削除しない更新装置。
【請求項１０】
ネットワークにより接続されるサーバ装置および更新装置を含む更新システムであって、
前記更新装置は、
複数のデータファイルが格納される記憶部と、
前記サーバ装置から更新ファイルを受信する通信部と、
前記記憶部のファイルパスであり前記複数のデータファイルが含まれる読み込み専用のイメージレイヤ、前記記憶部のファイルパスであり読み書き可能なコンテナレイヤ、および前記記憶部のファイルパスであるコンテナマウントを設定するオーバーレイ管理部と、
前記コンテナマウントを、前記イメージレイヤを下位レイヤとし前記コンテナレイヤを上位レイヤとして重ね合わせたファイル状態とし、前記コンテナマウントへの書き込み処理は前記コンテナレイヤへの書き込みとするオーバーレイ処理を実行するオーバーレイ実行部と、
前記更新ファイルを用いて前記コンテナマウントへの書き込みを行い、前記複数のデータファイルの少なくとも一部を更新する更新部とを備え、
前記サーバ装置は、
前記複数のデータファイルが格納されるサーバ記憶部と、
前記更新装置に送信する前記更新ファイルが格納される更新ファイル記憶部と、
前記更新装置に前記更新ファイルを送信するサーバ通信部と、
前記サーバ記憶部のファイルパスであり前記複数のデータファイルが含まれる読み込み専用のサーバイメージレイヤ、前記サーバ記憶部のファイルパスであり読み書き可能なサーバコンテナレイヤ、および前記サーバ記憶部のファイルパスであるサーバコンテナマウントを設定するサーバオーバーレイ管理部と、
前記サーバコンテナマウントが、前記サーバイメージレイヤを下位レイヤとし前記サーバコンテナレイヤを上位レイヤとして重ね合わせたファイル状態とし、前記サーバコンテナマウントへの書き込み処理は前記サーバコンテナレイヤへの書き込みとするサーバオーバーレイ処理を実行するサーバオーバーレイ実行部と、
前記更新ファイルを用いて前記サーバコンテナマウントへの書き込みを行い、前記複数のデータファイルの少なくとも一部を更新するサーバ更新部とを備え、
前記サーバオーバーレイ実行部は、第１の前記サーバオーバーレイ処理が有効な状態でさらに第２の前記サーバオーバーレイ処理を実行し、
前記第２のサーバオーバーレイ処理における前記サーバイメージレイヤには、前記第１のサーバオーバーレイ処理における前記サーバコンテナマウントに設定されたファイルパスが設定され、
前記サーバオーバーレイ実行部は、複数の前記サーバオーバーレイ処理を実行し、
前記複数のサーバオーバーレイ処理ではいずれも、前記サーバイメージレイヤには直前の前記サーバオーバーレイ処理における前記サーバコンテナマウントに設定されたファイルパスが設定され、
前記サーバ装置は、前記サーバオーバーレイ実行部が作成した最新の前記サーバオーバーレイ処理における前記サーバコンテナマウントに設定されたファイルパスをコピー元とし、所定のファイルパスであるマージパスをコピー先するコピー処理により前記サーバ更新部による複数回の更新をマージするサーバレイヤ合成部をさらに備え、
前記サーバ通信部は、前記サーバレイヤ合成部が前記マージパスにコピーした複数のファイルの情報であるロールアップ情報を前記更新装置に送信し、
前記更新装置は、前記サーバ装置から前記ロールアップ情報を受信すると、前記オーバーレイ処理を解除し前記複数のデータファイルに代えて前記ロールアップ情報を使用する更新システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、更新装置、および更新システムに関する。
【背景技術】
【０００２】
近年、自動車の技術レベルの向上により、自動車の制御が電子制御装置（ＥＣＵ：Electric Control Unit）により自動化され、高度化・ソフトウェア化が進んでいる。それに伴ってソフトウェア不具合に起因するリコ−ルも増加している。特に、ＥＣＵやＩＶＩ（In-Vehicle Infotainment）、ＴＣＵ（Telematics Communication Unit）などのデバイスが多数車両に搭載されるようになってきており、そのソフト更新が重要である。このような状況のなか、これまで整備士が行っていた自動車のＥＣＵやＩＶＩのソフトウェアの更新を、遠隔で更新するサービスへのニーズが高まっている。その中で、無線を用いて車載デバイスのソフトウェアを更新するＯＴＡ（Over The Air）への注目が高まっており、デバイスが高性能化に伴い搭載するソフトウェア規模の増大に対応する必要が生じている。少ないストレージを有効に活用するとともに、走行中にバックグラウンド更新を行うという、システムを停止させずにソフト更新を行うニーズも高い。特許文献１には、最新バージョンのブートローダを保存する更新作業用端末と、制御対象機器を無停止で制御する更新対象装置とを備え、前記更新対象装置は、ブートローダの実行領域である第１および第２のブートローダ領域と、前記第１および第２のブートローダ領域に対応した更新情報を持つブートローダ管理テーブルと、前記更新作業用端末からダウンロードした最新バージョンのブートローダを、前記ブートローダ管理テーブルを参照し前記更新情報に基づいて前回更新していないブートローダ領域に更新するブートローダ管理部とを有することを特徴とするソフトウェア更新システムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１５７７６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されている発明では、データの更新に広い記憶領域が必要となる。
【課題を解決するための手段】
【０００５】
本発明の第１の態様による更新装置は、複数のデータファイルが格納される記憶部と、サーバ装置から更新ファイルを受信する通信部と、前記記憶部のファイルパスであり前記複数のデータファイルが含まれる読み込み専用のイメージレイヤ、前記記憶部のファイルパスであり読み書き可能なコンテナレイヤ、および前記記憶部のファイルパスであるコンテナマウントを設定するオーバーレイ管理部と、前記コンテナマウントを、前記イメージレイヤを下位レイヤとし前記コンテナレイヤを上位レイヤとして重ね合わせたファイル状態とし、前記コンテナマウントへの書き込み処理は前記コンテナレイヤへの書き込みとするオーバーレイ処理を実行するオーバーレイ実行部と、前記更新ファイルを用いて前記コンテナマウントへの書き込みを行い、前記複数のデータファイルの少なくとも一部を更新する更新部とを備える。
本発明の第２の態様による更新システムは、ネットワークにより接続されるサーバ装置および更新装置を含む更新システムであって、前記更新装置は、複数のデータファイルが格納される記憶部と、前記サーバ装置から更新ファイルを受信する通信部と、前記記憶部のファイルパスであり前記複数のデータファイルが含まれる読み込み専用のイメージレイヤ、前記記憶部のファイルパスであり読み書き可能なコンテナレイヤ、および前記記憶部のファイルパスであるコンテナマウントを設定するオーバーレイ管理部と、前記コンテナマウントを、前記イメージレイヤを下位レイヤとし前記コンテナレイヤを上位レイヤとして重ね合わせたファイル状態とし、前記コンテナマウントへの書き込み処理は前記コンテナレイヤへの書き込みとするオーバーレイ処理を実行するオーバーレイ実行部と、前記更新ファイルを用いて前記コンテナマウントへの書き込みを行い、前記複数のデータファイルの少なくとも一部を更新する更新部とを備え、前記サーバ装置は、前記複数のデータファイルが格納されるサーバ記憶部と、前記更新装置に送信する前記更新ファイルが格納される更新ファイル記憶部と、前記更新装置に前記更新ファイルを送信するサーバ通信部と、前記サーバ記憶部のファイルパスであり前記複数のデータファイルが含まれる読み込み専用のサーバイメージレイヤ、前記サーバ記憶部のファイルパスであり読み書き可能なサーバコンテナレイヤ、および前記サーバ記憶部のファイルパスであるサーバコンテナマウントを設定するサーバオーバーレイ管理部と、前記サーバコンテナマウントが、前記サーバイメージレイヤを下位レイヤとし前記サーバコンテナレイヤを上位レイヤとして重ね合わせたファイル状態とし、前記サーバコンテナマウントへの書き込み処理は前記サーバコンテナレイヤへの書き込みとするサーバオーバーレイ処理を実行するサーバオーバーレイ実行部と、前記更新ファイルを用いて前記サーバコンテナマウントへの書き込みを行い、前記複数のデータファイルの少なくとも一部を更新するサーバ更新部とを備え、前記サーバオーバーレイ実行部は、第１の前記サーバオーバーレイ処理が有効な状態でさらに第２の前記サーバオーバーレイ処理を実行し、前記第２のサーバオーバーレイ処理における前記サーバイメージレイヤには、前記第１のサーバオーバーレイ処理における前記サーバコンテナマウントに設定されたファイルパスが設定され、前記サーバオーバーレイ実行部は、複数の前記サーバオーバーレイ処理を実行し、前記複数のサーバオーバーレイ処理ではいずれも、前記サーバイメージレイヤには直前の前記サーバオーバーレイ処理における前記サーバコンテナマウントに設定されたファイルパスが設定され、前記サーバ装置は、前記サーバオーバーレイ実行部が作成した最新の前記サーバオーバーレイ処理における前記サーバコンテナマウントに設定されたファイルパスをコピー元とし、所定のファイルパスであるマージパスをコピー先するコピー処理により前記サーバ更新部による複数回の更新をマージするサーバレイヤ合成部をさらに備え、前記サーバ通信部は、前記サーバレイヤ合成部が前記マージパスにコピーした複数のファイルの情報であるロールアップ情報を前記更新装置に送信し、前記更新装置は、前記サーバ装置から前記ロールアップ情報を受信すると、前記オーバーレイ処理を解除し前記複数のデータファイルに代えて前記ロールアップ情報を使用する。
【発明の効果】
【０００６】
本発明によれば、少ない記憶領域でデータを更新できる。
【図面の簡単な説明】
【０００７】
【図１】第１の実施の形態における更新システムの構成を示す図
【図２】更新装置１０のストレージ４８に格納される情報を示す図
【図３】更新装置１０のハードウエア構成図
【図４】サーバ装置２のハードウエア構成図
【図５】データファイル３３０を示す図
【図６】更新ファイル３０７の構成を示す図
【図７】バイナリファイル３１０の構成を示す図
【図８】差分ファイル３０５の構成を示す図
【図９】差分データ３０６の構成を示す図
【図１０】アーカイブファイル３０８の構成を示す図
【図１１】レイヤイメージファイル３０９の構成を示す図
【図１２】ファイル情報の構成を示す図
【図１３】オーバーレイマウントを説明する図
【図１４】ファイル構成６を示す図
【図１５】オーバーレイ２５１が形成された状態を示す図
【図１６】多重マウントを説明する図
【図１７】管理情報７の一例を示す図
【図１８】図１８（ａ）は動作例の各バージョンにおけるデータファイルの一覧を示す図、図１８（ｂ）は動作例における更新ファイル３０７の内容物を示す図
【図１９】動作例におけるバージョン４への更新後のファイル構成を示す図
【図２０】図１９に示す状態からマージ処理を行った後のデータファイルの構成を示す図
【図２１】動作例におけるソフト実行パス７０、ソフト更新パス７１、およびレイヤ合成パス７２の遷移を示す図
【図２２】データファイル３３０の更新処理を示すフローチャート
【図２３】オーバーレイマウント処理の詳細を示すフローチャート
【図２４】マージ処理の詳細を示すフローチャート
【図２５】ロールバック処理の詳細を示すフローチャート
【図２６】変形例における更新の可否を問い合わせる画面表示の一例を示す図
【図２７】第２の実施の形態における更新システムの構成を示す図
【図２８】管理情報７Ａの一例を示す図
【図２９】第３の実施の形態における更新システムの構成を示す図
【図３０】第３の実施の形態におけるデータファイル３３０の更新処理を示すフローチャート
【図３１】第４の実施の形態における更新システムの構成を示す図
【図３２】差分更新部３６の動作を表すフローチャート
【図３３】第５の実施の形態における管理情報７Ｂの一例を示す図
【図３４】第５の実施の形態におけるロールバック部４７の動作を表すフローチャート
【発明を実施するための形態】
【０００８】
―第１の実施の形態―
以下、図１〜図２５を参照して、本発明にかかる更新装置の第１の実施の形態を説明する。
【０００９】
（システム構成）
図１は、更新装置１０を含む更新システムの構成を示す図である。更新システムは、車両１とサーバ装置２とから構成される。車両１とサーバ装置２は通信ネットワーク５を介して互いに通信する。通信ネットワーク５はインターネットを含んでもよい。更新装置１０は移動する車両１に搭載されるので、通信ネットワーク５そのもの、または更新装置１０から通信ネットワーク５に至る通信経路には無線通信が含まれる。
【００１０】
サーバ装置２は、ストレージ１６５とサーバ通信部２０とを備える。サーバ装置２のストレージ１６５には更新ファイル３０７が格納される。サーバ通信部２０は、通信ネットワーク５を介して更新ファイル３０７を更新装置１０に送信する。
【００１１】
更新装置１０は、その機能として、更新管理部３０と、通信部３１と、更新部３３と、実行部３４と、オーバーレイ実行部３５と、実行レイヤ指定部３７と、更新開始判断部３８と、更新レイヤ指定部３９と、レイヤファイル合成部４０と、合成範囲指定部４１と、更新ファイル保持部４２と、バックアップ部４３と、ストレージ残量検出部４４と、不要レイヤ削除部４５と、管理情報７を有するオーバーレイ管理部４６と、ロールバック部４７と、ＨＭＩ部４９とを備える。更新装置１０はストレージ４８を備える。ストレージ４８に格納される情報は次の図２を参照して後に説明する。ストレージ４８は、不揮発性の記憶装置、たとえばハ−ドディスクドライブ、ＳＳＤ（Solid State Drive）、フラッシュメモリ、光ディスクなどである。
【００１２】
更新管理部３０は、通信部３１を用いてサーバ装置２と通信を行い、更新装置１０に保存されている後述するデータファイル３３０を更新する必要があるか否かを問い合わせる。更新管理部３０は、更新の必要があると判断する場合は、更新ファイル３０７を通信部３１を用いてダウンロードし、更新ファイル保持部４２を用いて記憶部１５１に一時的に記憶する。そして更新管理部３０は、ストレージ４８に格納されたデータファイル３３０を更新ファイル３０７を用いて更新する。本実施の形態では、ＯＭＡ（Open Mobile Alliance）において定義されるＤＭ（Device Management）を想定しており、更新管理部３０はＯＭＡにおいて定義されるＤＭクライアントである。なおＯＭＡ  ＤＭとは、携帯電話のソフト更新で使用される技術の一種であり、ツリ−ＤＢというツリー状のデータベースへのアクセスを介してサーバとクライアント間でソフト更新に必要な情報をやりとりする仕組みである。
【００１３】
通信部３１は、サーバ装置２と通信する情報通信手段である。通信部３１は、サーバ装置２から更新ファイル３０７を受信する。この受信に用いられる通信プロトコルは特に限定されないが、たとえばＴＣＰ／ＩＰ、ＵＤＰ／ＩＰ、ＨＴＴＰ、ＨＴＴＰＳやＦＴＰなどを用いることができる。更新部３３は、後述の更新ファイル保持部４２により記憶部１５１に保持された更新ファイル３０７を用いて、ストレージ４８に格納されるデータファイル３３０を更新する。更新部３３は、後述のソフト更新パス７１に記載されたディレクトリを基点ディレクトリ、すなわちルートディレクトリとし、配下に配置するファイルやディレクトリに対してデータファイル３３０の更新処理を行う。
【００１４】
実行部３４は、データファイル３３０に含まれるプログラムを後述する制御部１５２に実行させる。実行部３４は、後述のソフト実行パス７０に記載されたディレクトリを基点ディレクトリとして、配下に配置するファイルまたはディレクトリに対して実行処理を行う。なお更新部３３と実行部３４は、同時に動作が可能である。オーバーレイ実行部３５は、ＯＳであるＬｉｎｕｘ（登録商標）におけるオーバーレイマウント命令を実行する。具体的な動作は後に図１３を参照して説明する。
【００１５】
実行レイヤ指定部３７は、実行部３４が処理対象とするデータファイル３３０が格納されているディレクトリを指定する。前述の実行部３４は、この指定が行われていることを前提として、実行レイヤ指定部３７が指定するディレクトリ以下に格納されるプログラムを制御部１５２に実行させる。更新レイヤ指定部３９は、更新部３３が処理対象とするデータファイル３３０が格納されているディレクトリを指定する。前述の更新部３３は、この指定が行われていることを前提として、更新レイヤ指定部３９が指定するディレクトリ以下のデータファイル３３０を更新する。
【００１６】
更新開始判断部３８は、更新部３３が動作を開始すべきタイミングを判断し、更新部３３に動作指令を出力する。更新部３３が動作を開始すべきタイミングとは、たとえばサーバ装置２からデータファイル３３０を受信するタイミング、サーバ装置２から指定されたタイミング、ストレージ残量検出部４４から通知を受けたタイミングなどである。また更新部３３が動作を開始すべきタイミングは、車両１のエンジンが始動したタイミングでもよい。
【００１７】
レイヤファイル合成部４０は、合成範囲指定部４１が指定する複数のレイヤを１つのレイヤに統合する。具体的な動作は図２２を参照して後に説明する。合成範囲指定部４１は、レイヤファイル合成部４０が統合するレイヤを指定する。更新ファイル保持部４２は、サーバ装置２から受信したデータファイル３３０をストレージ４８に保存する。バックアップ部４３は、レイヤファイル合成部５２が生成した統合済みのレイヤをストレージ４８に格納する。
【００１８】
ストレージ残量検出部４４は、ストレージ４８の全容量と空き容量を算出し、空き容量があらかじめ定めた閾値よりも少ない場合に更新開始判断部３８に通知を行う。不要レイヤ削除部４５は、レイヤファイル合成部５２で統合され、バックアップ部４３でストレージなどにバックアップされた後、不要になったレイヤをストレージ４８から削除する。
【００１９】
オーバーレイ管理部４６は、後述するオーバーレイを後述する管理情報７を用いて複数管理する。なお以下では、多重オーバーレイを多重マウントとも呼ぶ。オーバーレイ管理部４６の具体的な処理は図２２を参照して説明する。ロールバック部４７は、オーバーレイ管理部４６および不要レイヤ削除部４５を用いて、更新装置１０のデータファイル３３０を初期状態に戻す。具体的にはロールバック部４７は、後述するレコードのうち、一番最初に作成されたレコード以外に記録されたレイヤに含まれるデータファイルをストレージ４８から削除し、さらに２番目以降に作成されたレコードを全て削除する。これにより、簡単に更新装置１０を初期状態に戻すことができる。そのためロールバック部４７は初期化部とも呼ぶことができる。
【００２０】
ＨＭＩ部４９は、更新装置１０で動作するプログラムの出力情報の表示や、ユーザから受け付けた入力をプログラムに受け渡す、ユーザインタフェース機能を提供する。ＨＭＩ部４９は、更新部３３や実行部３４の処理結果やログ情報を後述するＨＭＩに表示する。
【００２１】
（ストレージ４８の保持データ）
図２は、更新装置１０のストレージ４８に格納される情報を示す図である。ストレージ４８には、データファイル３３０、ソフト実行パス７０、ソフト更新パス７１、およびレイヤ合成パス７２が格納される。ソフト実行パス７０、ソフト更新パス７１、およびレイヤ合成パス７２は、更新装置１０の動作に必要なパスの情報が格納される記憶領域である。ソフト実行パス７０には、更新装置１０の工場出荷時にあらかじめ値が格納されており、データファイル３３０の更新に伴って書き換えられる。詳しくは後述する。
【００２２】
（更新装置のハードウエア構成）
図３は、更新装置１０のハードウエア構成図である。更新装置１０は、記憶部１５１と、制御部１５２と、ストレージ４８と、ネットワークＩ／Ｆ１５３とバス１５４とＨＭＩ１５５とを備える。制御部１５２は中央制御装置、すなわちＣＰＵである。制御部１５２は、ストレージ４８に格納されたデータファイル３３０に含まれるプログラムを記憶部１５１に展開して実行する。記憶部１５１は、主記憶装置、たとえばＲＡＭである。記憶部１５１は、制御部１５２が扱う情報を一時的に保存し、バス１５４を介してデータをやり取りする。
【００２３】
ストレージ４８は、前述のとおり不揮発性の記憶装置である。更新装置１０は、ストレージ４８に保存されているデータファイル３３０を更新することにより更新装置１０の動作を変更することが可能である。ネットワークＩ／Ｆ１５３はバスを介して情報を無線で送受信するインタフェ−スであり、たとえばＬＴＥ、３Ｇ、４Ｇ、ＷｉＭａｘ、ＷｉＦｉ、赤外線、ＣＳＭＡ／ＤＡなどの通信規格に対応する。なおネットワークＩ／Ｆ１５３は、車両１の内部で使用されるネットワーク、たとえばＣＡＮ（Controller Area Network）のインタフェースであってもよい。
【００２４】
ＨＭＩ１５５は、情報の入出力が可能なハードウエアであり、たとえば映像の表示とタッチ操作が可能なタッチパネルである。ただし、情報の出力のみが可能な液晶ディスプレイなどと情報の入力のみが可能なボタンなどを組み合わせてＨＭＩ１５５を構成してもよい。なお更新装置１０がＨＭＩ１５５を備えず、バス１５４やネットワークＩ／Ｆ１５３を介して接続される入出力装置をＨＭＩ１５５として使用してもよい。すなわちＨＭＩ１５５がユーザにより操作されるボタンやユーザへ情報を提示するディスプレイなどを備えなくてもよい。
【００２５】
更新装置１０はたとえば、ＥＣＵ、ＴＣＵ、ＩＶＩ、ＭＰＵ（Map Processing Unit）、ゲートウェイ、ディスプレイ、スマートフォン、フィーチャーフォン、タブレット端末、ヘッドマウントディスプレイなどである。なおＩＶＩとはたとえばカーナビゲーション装置であり、ゲートウェイとは車両１に搭載される複数の通信ネットワークを接続し、相互のデータ通信を可能とする装置である。ＭＰＵとは、センサから取得した情報にもとづき走行路周辺の地図を作成する装置である。
【００２６】
（サーバ装置のハードウエア構成）
図４は、サーバ装置２のハードウエア構成図である。サーバ装置２は、記憶部１６１と、制御部１６２と、ストレージ１６５と、ネットワークＩ／Ｆ１６３とバス１６４とを備える。
【００２７】
制御部１６２は、中央制御装置、すなわちＣＰＵである。制御部１６２は、不図示のＲＯＭに格納されたプログラムを不図示のＲＡＭに展開して実行する。記憶部１６１は、主記憶装置、たとえばＲＡＭである。記憶部１６１は制御部１６２が扱う情報を一時的に保存する。ストレージ１６５は、不揮発性の記憶装置、たとえばハードディスクドライブ、ＳＳＤ、フラッシュメモリなどである。ネットワークＩ／Ｆ１６３はバス１６４を介して情報を無線で送受信するインタフェース、たとえばＬＴＥ、３Ｇ、４Ｇ、ＷｉＭａｘ、ＷｉＦｉ、赤外線、ＣＳＭＡ／ＤＡなどである。サーバ装置２は、ストレージ１６５に保存されている更新ファイル３０７をサーバ通信部２０によりネットワークＩ／Ｆ１６３を介して更新装置１０の通信部３１に渡す。
【００２８】
（データファイル３３０）
図５はデータファイル３３０を示す図である。ただし図５に示す構成は一例であり、本実施の形態におけるデータファイル３３０は、少なくとも１つのプログラム、すなわち後述する実行ファイル３１０１を含めばよい。すなわちデータファイル３３０には複数のプログラムが含まれてもよいし、プログラム以外のバイナリデータやテキストファイル３１１が含まれてもよい。またデータファイル３３０には、差分ファイル３０５やアーカイブファイル３０８、およびレイヤイメージファイル３０９が含まれてもよい。
【００２９】
データファイル３３０は、ｌｉｎｕｘやＷｉｎｄｏｗｓ（登録商標）などのＯＳが扱うことができるファイルやディレクトリの集合である。データファイル３３０には、バイナリファイル３１０、テキストファイル３１１、差分ファイル３０５、アーカイブファイル３０８、およびレイヤイメージファイル３０９を含めることができる。なお図５には図示されていないがディレクトリ構造が含まれてもよい。
【００３０】
テキストファイル３１１は、人間が直接読むことができるファイルであり文字コードのみから構成されるファイルである。バイナリファイル３１０は、テキストファイル３１１以外のすべてのファイルであり、ＭＰ３形式やＷＡＶ形式等の音声ファイル、ＰＮＧ形式やＧＩＦ形式、ＩＭＧ形式等の画像ファイル、ＥＬＦ形式やａ．ｏｕｔ形式、ＣＯＦＦ形式のアプリケーションファイルなどである。バイナリファイル３１０の構成は後に図７を参照して説明する。差分ファイル３０５はバイナリファイル３１０の一種であり、先に説明したとおりｂｓｐａｔｃｈやｘｄｅｌｔａやｚｄｅｌｔａなどのプログラムにより生成される、２つのファイルの差をデータ化したファイルである。差分ファイル３０５の構成は後に図８を参照して説明する。
【００３１】
アーカイブファイル３０８は、１つまたは複数のファイルやディレクトリを１つのファイルに纏めたファイルであり、ＺＩＰ形式やｔａｒ形式、ＧＺＩＰ形式等のファイルである。アーカイブファイル３０８の構成は後に図１０を参照して説明する。レイヤイメージファイル３０９は、後述のオーバーレイの仕組みにおいて使用可能なアーカイブファイルの一種であり、ＩＳＯ形式等のファイルを想定している。レイヤイメージファイル３０９の構成は後に図１１を参照して説明する。
【００３２】
（更新ファイル３０７）
図６は更新ファイル３０７の構成を示す図である。ただし図６に示す構成は一例であり、本実施の形態における更新ファイル３０７は、少なくとも１つの実行ファイル３１０１を更新可能であればよい。すなわち更新ファイル３０７は、実行ファイル３１０１そのもの、または実行ファイル３１０１を更新する差分ファイル３０５が含まれればよい。更新ファイル３０７には、バイナリファイル３１０、テキストファイル３１１、差分ファイル３０５、アーカイブファイル３０８、およびレイヤイメージファイル３０９を含めることができる。
【００３３】
（バイナリファイル３１０）
図７はバイナリファイル３１０の構成を示す図である。バイナリファイル３１０は前述のとおりテキストファイル３１１以外の全てのファイルである。バイナリファイル３１０には、実行ファイル３１０１や画像ファイル３１０２、データファイル３１０３、不可視ファイル３１０４、地図データファイル３１０５およびシステムファイル３１０６が含まれる。
【００３４】
実行ファイル３１０１は、ＥＬＦ形式やａ．ｏｕｔ形式、ＣＯＦＦ形式等の、制御部１５２または制御部１６２で読み込んで実行可能なアプリケーションファイル、すなわちプログラムである。画像ファイル３１０２は、ＰＮＧ形式やＧＩＦ形式、ＩＭＧ形式等の静止画ファイル、またはＭＰ４形式やＡＶＩ形式等の動画ファイルである。データファイル３１０３は、バイナリファイル３１０が実行されたときに生成されるデータである。不可視ファイル３１０４は、Ｌｉｎｕｘにおいて’．’（ドット）で始まるファイル名を持つファイルである。地図データファイル３１０５は、ＩＶＩやスマートフォーンなどの情報端末において、地図情報をバイナリデータ化したデータである。システムファイル３１０６は、ＬｉｎｕｘやＷｉｎｄｏｗｓなどのＯＳを構成するファイル群である。
【００３５】
（差分ファイル３０５）
図８は差分ファイル３０５の構成を示す図である。差分ファイル３０５はバイナリファイル３１０の一種であり、ｂｓｐａｔｃｈやｘｄｅｌｔａやｚｄｅｌｔａなどのプログラムにより生成される、２つのファイルの差をデータ化したファイルである。差分ファイル３０５は差分ヘッダ３０５１、オリジナルパス３０５２、および１つ以上の差分データ３０６から構成される。差分ヘッダ３０５１は、差分ファイル３０５を識別する情報やファイルサイズなど、差分更新部３６で使用するデータである。オリジナルパス３０５２は、差分ファイル３０５を生成するときに使用した２つのファイルのうち、差分更新の元になるデータファイル３３０のファイル名である。
【００３６】
図９は差分データ３０６の構成を示す図である。差分データ３０６はオフセット３０６１、サイズ３０６２および更新データ３０６３から構成される。オフセット３０６１は、元になるデータファイルのどのファイル位置を更新するかを表す数値であり、先頭からのバイト数で表される。サイズ３０６２は、オフセット３０６１のファイル位置から何バイト書き換えるのかを示す数値である。更新データ３０６３は、オフセット３０６１とサイズ３０６２で示される範囲に書き込まれるデータ列である。
【００３７】
（アーカイブファイル３０８）
図１０は、アーカイブファイル３０８の構成を示す図である。アーカイブファイル３０８は、複数のファイルを１つのアーカイブファイルにまとめて管理することが可能なファイルであり、ＺＩＰ形式やｔａｒ形式、ＧＺＩＰ形式等のアーカイブファイルを想定している。ヘッダ３２０および１つ以上のデータ３０４から構成される。ヘッダ３２０は、アーカイブファイル３０８の管理するファイルがアーカイブファイル３０８のどこに格納されているかを示す情報やファイル名などの情報が格納されるヘッダである。データ３０４はデータファイル３０３が格納され、圧縮されていてもよい。
【００３８】
（レイヤイメージファイル３０９）
図１１は、レイヤイメージファイル３０９の構成を示す図である。レイヤイメージファイル３０９は、後述のオーバーレイの仕組みにおいて使用可能なアーカイブファイルの一種であり、ＩＳＯ形式等のファイルを想定している。レイヤイメージファイル３０９はヘッダ３２１および１つ以上のファイル情報３００とから構成される。アーカイブファイル３０８との違いは、アーカイブファイルのデータ３０４がファイル情報３００であることであり、単純にファイルのバイナリデータだけでなく、そのファイルのパス３０１や種別３０２、アクセス権限３０３を含む。そのため、実際にレイヤイメージファイル３０９を個別のファイルに展開しなくとも、１つのレイヤイメージファイル内部に仮想的にディレクトリやファイル群がファイル構成６の内部に存在するとみなしてデータファイル３３０へのアクセスが可能である。
【００３９】
（ファイル情報３００）
図１２は、ファイル情報の構成を示す図である。ファイル情報３００はディレクトリやファイルのそれぞれに設定され、パス３０１と種別３０２とアクセス権限３０３とデータ３０４とから構成される。すなわちファイル情報３００は、フォーマット形式のｅｘｔ２などにおけるｉノードに格納される情報と、データそのものとから構成される。ただしディレクトリの場合はデータ３０４は存在しない。
【００４０】
パス３０１は、ファイルまたはディレクトリの絶対パスを示す文字列である。後述する図１４の「７ｆ２０９」を一例とすれば、「４ｄ２０５」の配下に「７ｆ２０９」が存在するので、パス３０１は“／４ｄ／７ｆ”である。種別３０２は、ファイルおよびディレクトリのいずれであるかを表す情報である。たとえば図１４の「７ｆ２０９」であればファイルなので種別３０２は’ｆｉｌｅ’である。ただしあらかじめ定めたビット値、たとえばファイルであれば「０」、ディレクトリであれば「１」を格納してもよい。
【００４１】
アクセス権限３０３はファイルへのアクセス許可を表す情報であり、読み込み権限、書き込み権限、および実行権限の有無を表現する。たとえば伝統的な表記に従い３桁の数字で権限を表現し、読み込み権限があることを「４」で表し、書き込み権限があることを「２」で表し、実行権限があることを「１」で表し、１桁目はファイルやディレクトリの所有者、２桁目は所有者と同一グループに属する者、３桁目はその他のユーザの権限を表す。ただし本実施の形態ではユーザの区別を行わないので、３桁全てが同一の値をとる。
【００４２】
（更新装置１０の動作）
以下では更新装置１０の動作を説明するが、はじめに前提となるオーバーレイについて説明する。次に多重オーバーレイについて説明し、最後に本実施の形態におけるファイル構成の一例、および更新の動作例を説明する。
【００４３】
（オーバーレイ）
図１３〜図１６を参照して、オーバーレイの機能を説明する。本実施の形態では、Ｌｉｎｕｘにおけるオーバーレイマウントを応用して、データファイル３３０を実行しながらそのデータファイル３３０をバックグラウンドで更新する仕組みを実現する。オーバーレイは、複数のディレクトリをいわばレイヤーとして重ね合わせて参照可能であり、書き込みはあるレイヤーに行うことで他のレイヤーに存在するファイルを変更することなく、あたかも書き込みが行われたかのように扱うことができる技術である。なおこのオーバーレイは、たとえばＬｉｎｕｘのカーネルに組み込まれている機能を利用して実現可能である。
【００４４】
図１３を参照して、オーバーレイマウントについて説明する。オーバーレイ５１は、コンテナマウント６１、コンテナレイヤ６２およびイメージレイヤ６３から構成される。コンテナマウント６１、コンテナレイヤ６２およびイメージレイヤ６３はそれぞれ任意のディレクトリを指定でき、コンテナレイヤ６２およびイメージレイヤ６３にはファイルなどが配されるが、コンテナマウント６１にはファイルは配されない。Ｌｉｎｕｘのｍｏｕｎｔコマンドを用いてオーバーレイマウントを作成すると、これら３つのディレクトリが相互に関連付けされてオーバーレイを形成する。オーバーレイが形成されると、コンテナマウント６１へのファイルアクセスが、イメージレイヤ６３を上位レイヤ、コンテナレイヤ６２を下位レイヤとして重ね合わせて形成されるファイル群へのアクセスとして扱われる。以下、具体的に説明する。
【００４５】
イメージレイヤ６３に指定されたディレクトリが「/local/P」であり、このディレクトリにはファイルＡ８０と、ファイルＣ８４とが格納されている。コンテナレイヤ６２に指定されたディレクトリが「/local/Q」であり、このディレクトリにはファイルＢ８２とファイルＣ８５が格納されている。ファイルＣ８４とファイルＣ８５はファイル名が同一であるが内容は異なる。そしてコンテナマウント６１に指定されたディレクトリが「/ol/R」である。オーバーレイを形成した後に「/ol/R」に格納されるファイル一覧を取得すると、図１３に示すように、ファイルＡ８１、ファイルＢ８３，およびファイルＣ８６が得られる。
【００４６】
ファイルＡ８１の実態はファイルＡ８０であり、ファイルＢ８３の実態はファイルＢ８２であり、ファイルＣ８６の実態はファイルＣ８５である。コンテナマウント６１からファイルＣ８４が参照されていない、換言するとファイルＣ８４が隠蔽されているのは、２つのレイヤに同一名称のファイルが存在し、イメージレイヤ６３よりもコンテナレイヤ６２が優先されるからである。またコンテナマウント６１に含まれるファイルＡ８１，ファイルＢ８３、およびファイルＣ８６のいずれを編集した場合も、編集した情報はコンテナレイヤ６２に格納され、イメージレイヤ６３に格納されたファイルはその編集の影響を受けない。以上が、オーバーレイマウントの動作である。
【００４７】
（多重オーバーレイ）
以下ではファイルツリーであるファイル構成６を例として、前述のオーバーレイを前提とする多重オーバーレイを説明する。
【００４８】
図１４はファイル構成６を示す図である。ファイル構成６では、説明の便宜のために、ディレクトリの名称には「ｄ」を付し、ファイルの名称には「ｆ」を付している。図１４に示すように、ファイル構成６はｒｏｏｔ２０１を起点とするツリー構造を有しており、最上層のルートディレクトリには、１ｄ２０２、４ｄ２０５、８ｄ２１０、９ｄ２１１、および１１ｄ２１０の５つのディレクトリが存在する。図１４に示す例ではルートディレクトリにはファイルは存在しない。なおルートディレクトリに存在する複数のディレクトリが図１４では図示左右方向の位置が大きく異なるのは作図上の理由、詳述すると後に示す図との整合のためである。
【００４９】
１ｄ２０２の配下には２ｆ２０３および３ｆ２０４が配置されている。４ｄ２０５配下には、５ｄ２０６および７ｆ２０９が配置されている。５ｄ２０６配下には６ｆ２０７が配置されている。９ｄ２１１配下には１０ｆ２１２が配置されている。また図示していないファイルは存在しない。たとえば８ｄ２１０の配下にはファイルもディレクトリも存在しない。このファイル構成６を例としてオーバーレイマウントの具体的な動作を図１５〜図１６を用いて説明する。
【００５０】
図１５は、オーバーレイ５１が形成された状態を示す図である。オーバーレイ２５１では、コンテナマウント６１に８ｄ２１０が設定され、コンテナレイヤ６２に１ｄ２０２が設定され、イメージレイヤ６３に４ｄ２０５が設定されている。上述したように８ｄ２１０には何らファイルが存在しなかったが、オーバーレイ２５１の形成により４ｄ２０５および１ｄ２０２を合わせたようなファイルおよびフォルダが８ｄ２１０に格納されているように扱われる。すなわち図１５において符号２３０で示すディレクトリ１ｄ２０２の内容物と、符号２３１で示すディレクトリ４ｄ２０５の内容物が、符号２３２で示すディレクトリ８ｄ２１０の内容物のように扱われる。具体的には、８ｄ２１０の配下には２ｆ２０３、３ｆ２０４、５ｄ２０６、６ｆ２０７、および７ｆ２０９が配置されているかのように扱われる。
【００５１】
図１６は、オーバーレイマウントの多重マウントを説明する図である。多重マウントとは複数のオーバーレイの組み合わせであり、一方のコンテナマウントを他方のイメージレイヤとするものである。図１６に示す例では、前述のオーバーレイ２５１に加えてオーバーレイ２５２を形成しており、このオーバーレイ２５２のイメージレイヤ６６に８ｄ２１０を指定し、コンテナレイヤ６５に９ｄ２１１を指定し、コンテナマウント６４に１１ｄ２１３を指定している。そのため、コンテナマウント６４には、あたかも８ｄ２１０の配下のファイル群と９ｄ２１１の配下のファイル群が重ね合わせられて存在しているように扱われる。
【００５２】
具体的には１１ｄ２１３には、１０ｆ２１２、２ｆ２０３、３ｆ２０４、５ｄ２０６、６ｆ２０７および７ｆ２０９が存在するように扱われる。ここで、コンテナマウント６４に含まれる１０ｆ２１２を編集すると、実際には９ｄ２１１配下の１０ｆ２１２が編集される。またコンテナマウント６４の６ｆ２０７を編集すると、４ｄ２０５配下の６ｆ２０７を編集することになるが、オーバーレイマウントの仕組みから、６ｆ２０７と５ｄ２０６が９ｄ２１１にコピーされた上で、コピー後の９ｄ２１１配下の６ｆ２０７が編集される。つまり、コンテナマウント６１への操作では、イメージレイヤ６３の内容は編集されない。ロールバック部４７はこれを利用し、最初の状態を復元することができる。以上が多重マウントの説明である。
【００５３】
（管理情報７）
図１７は、オーバーレイ管理部４６の管理情報７の一例を示す図である。管理情報７は、あらかじめ作成された１８のレコードから構成され、各レコードは処理番号、下位パス、上位パス、およびマウントパスのフィールドを有する。処理番号のフィールドには、１からの連番が格納される。下位パスのフィールドにはイメージレイヤ６３に設定されるパスが格納され、上位パスのフィールドにはコンテナレイヤ６２に設定されるパスが格納され、マウントパスのフィールドにはコンテナマウント６１に設定されるパスが格納される。この１８のレコードは、大きく２つ、すなわち１〜９のグループと１０〜１８のグループに分けられ、順番にそれぞれが対応する。
【００５４】
処理番号１〜９のグループはディレクトリ名が全て「ｓ」であり、処理番号１０〜１８のグループはディレクトリ名が全て「ｔ」である。すなわち処理番号「１」のレコードにおいてディレクトリ名を「ｓ」から「ｔ」に変更したものが処理番号「１０」のレコードである。またそれぞれのグルプにおいて、ある処理番号のマウントパスに格納されるパスと、次の処理番号の下位パスに格納されるパスは同一である。上位パスに格納されるパスは全て異なる。なお図１７に示す例では各グループには９つの処理番号が含まれるが、各グループに含まれる処理番号の数は２以上であればいくつでもよいし、各グループで異なってもよい。また３以上のグループが存在してもよい。
【００５５】
図１７に示す情報を一般化すると、各グループにおいて処理番号「ｋ」の下位パスは、処理番号「ｋ−１」のマウントパスと同一である。ただし「ｋ」は「２」以上かつ各グループのレコード数以下の整数である。
【００５６】
（動作例）
上述した管理情報７を示す図１７に加えて、図１８〜図２１を参照して、更新装置１０の動作を説明する。本動作例では、更新装置１０のデータファイルが、バージョン１からバージョン４まで更新する動作、およびマージする動作を説明する。ただしここでいうバージョンとは便宜的なものであり、リビジョンやビルドなどと呼び変えてもよい。またここで説明する２以上のバージョンの変更をまとめて１つのバージョンの変更としてもよい。また本動作例では簡略化のためにデータファイルにはディレクトリを含めずファイルのみとして説明するが、前述のとおりデータファイルにはディレクトリ構造が含まれてもよい。なおバージョン１は、更新装置１０の初期の、換言すると工場出荷時の構成である。
【００５７】
図１８（ａ）は、動作例の各バージョンにおけるデータファイルの一覧を示す図であり、図１８（ｂ）は、動作例における更新ファイル３０７の内容物を示す図である。全てのバージョンのデータファイルはファイルのみから構成され、先頭の１文字がファイル名を模式的に表し、次の１文字がファイルのバージョンを表す。たとえば「Ａ１」はファイル「Ａ」のバージョン「１」を示し、「Ａ１」と「Ａ２」はファイル名が同一でバージョンが異なるファイルを示す。また図中の丸は、直前のバージョンからの変更点を示す。
【００５８】
図１８（ａ）に示すように、バージョン１のデータファイルはＡ１とＢ１から構成される。バージョン２のデータファイルは、ファイルＣが追加されて、Ａ１とＢ１とＣ１とから構成される。バージョン３のデータファイルは、ファイルＡが更新されて、Ａ２とＢ１とＣ１とから構成される。バージョン４のデータファイルは、ファイルＢが更新されファイルＤが追加されて、Ａ２とＢ２とＣ１とＤ１とから構成される。図１８（ｂ）に示すように、更新装置１０が１番目に受信する更新ファイル３０７の内容物はＣ１、２番目の更新ファイル３０７内容物はＡ２、３番目の更新ファイル３０７内容物はＢ２およびＤ１である。
【００５９】
図１９は、動作例におけるバージョン４への更新後のファイル構成を示す図である。図１９に示すファイル構成には、図１７に示すそれぞれのパス、すなわちディレクトリが含まれる。さらにディレクトリ「／ｓ／ｄｉｆ１−２」の配下にはファイル「Ｃ１」が配され、ディレクトリ「／ｓ／ｄｉｆ２−３」の配下にはファイル「Ａ２」が配され、ディレクトリ「／ｓ／ｄｉｆ３−４」の配下にはファイル「Ｂ２、Ｄ１」が配され、ディレクトリ「／ｓ／ｖｅｒ１」の配下にはファイル「Ａ１，Ｂ１」が配される。他のディレクトリにはファイルが配されていない。
【００６０】
図１９において、ルートディレクトリには「ｓ」と「ｔ」の２つの対称的なディレクトリが存在する。後述するようにいずれか一方のディレクトを使って更新を行い、所定の条件をみたすと使用するディレクトリを変更して更新を継続する。そのため以下では、更新に使用している「ｓ」または「ｔ」のディレクトリを「使用しているサイド」と呼び、他方を「使用していないサイド」、または「逆側のサイド」とも呼ぶ。以下ではまず更新処理を説明し、次にマージ処理を説明する。
【００６１】
（動作例｜更新処理）
図２１は、動作例におけるソフト実行パス７０、ソフト更新パス７１、およびレイヤ合成パス７２の遷移を示す図である。以下では図２１も参照して説明を続ける。更新装置１０の工場出荷時には、ソフト実行パス７０には「／ｓ／ｖｅｒ１」が設定され、管理番号が「１」に設定される。また更新装置１０のデータファイルは、「／ｓ／ｖｅｒ１」の配下にファイル「Ａ１，Ｂ１」が配されているのみで、図１９に示すほかのディレクトリには何らファイルが配されていない。そして更新装置１０の実行部３４は、ソフト実行パス７０に記載の「／ｓ／ｖｅｒ１」以下のファイル、すなわちファイル「Ａ１，Ｂ１」を実行する。
【００６２】
この状態でサーバ装置２から更新ファイル３０７を受信すると、更新装置１０は次のようにオーバーレイマウントを行う。すなわち更新装置１０は、管理情報７の管理番号が「１」のレコードの記載に基づき、下位パスのフィールドに記載の「／ｓ／ｖｅｒ１」をイメージレイヤとし、上位パスのフィールドに記載の「／ｓ／ｄｉｆ１−２」をコンテナレイヤとし、マウントパスのフィールドに記載の「／ｓ／ｖｅｒ２」をコンテナマウントとしてオーバーレイマウントを行う。
【００６３】
そして更新装置１０は、受信した１つ目の更新ファイル３０７をコンテナマウントである「／ｓ／ｖｅｒ２」に書き込む。１つめの更新ファイル３０７の内容物は図１８（ｂ）の１行目に示すようにファイル「Ｃ１」のみである。オーバーレイマウントの機能により、コンテナマウントへの書き込みはコンテナレイヤである「／ｓ／ｄｉｆ１−２」への書き込みとなるので、「／ｓ／ｄｉｆ１−２」にファイル「Ｃ１」が書き込まれる。この書き込みが行われている最中もファイル「Ａ１，Ｂ１」の実行は継続している。換言するとこの書き込みはバックグラウンドで行われるバックグラウンド更新である。
【００６４】
その後、プログラムの実行が終了して更新の反映が可能になると、更新装置１０はソフト実行パス７０を現在のマウントパスである「／ｓ／ｖｅｒ２」に書き換えて、「／ｓ／ｖｅｒ２」に含まれるファイル「Ａ１，Ｂ１，Ｃ１」を実行部３４に実行させる。なおこの３つのファイルのうち、先の２つは「／ｓ／ｖｅｒ１」に実体が存在し、最後の１つは「／ｓ／ｄｉｆ１−２」に実体が存在する。このようにして、図１８（ａ）の２行目に示すようにバージョン２のファイル「Ａ１，Ｂ１，Ｃ１」が実行部３４によって実行される。
【００６５】
その後、更新装置１０がサーバ装置２から２つ目の更新ファイル３０７を受信すると、更新装置１０は次のように２つ目のオーバーレイマウントを行う。すなわち更新装置１０は、管理情報７の番号が「２」のレコードの記載に基づき、下位パスのフィールドに記載の「／ｓ／ｖｅｒ２」をイメージレイヤとし、上位パスのフィールドに記載の「／ｓ／ｄｉｆ２−３」をコンテナレイヤとし、マウントパスのフィールドに記載の「／ｓ／ｖｅｒ３」をコンテナマウントとしてオーバーレイマウントを行う。
【００６６】
そして更新装置１０は、受信した２つ目の更新ファイル３０７をコンテナマウントである「／ｓ／ｖｅｒ３」に書き込む。２つめの更新ファイル３０７の内容物は図１８（ｂ）の２行目に示すようにファイル「Ａ２」のみである。オーバーレイマウントの機能により、コンテナマウントへの書き込みはコンテナレイヤである「／ｓ／ｄｉｆ２−３」への書き込みとなるので、「／ｓ／ｄｉｆ２−３」にファイル「Ａ２」が書き込まれる。この書き込みが行われている最中もファイル「Ａ１，Ｂ１，Ｃ１」の実行は継続している。換言するとこの書き込みはバックグラウンドで行われるバックグラウンド更新である。
【００６７】
その後、イグニッションのオフなどにより更新の反映が可能になると、更新装置１０はソフト実行パス７０を現在のマウントパスである「／ｓ／ｖｅｒ３」に書き換えて、「／ｓ／ｖｅｒ３」に含まれるファイル「Ａ２，Ｂ１，Ｃ１」を実行部３４に実行させる。なおこの３つのファイルは順に、「／ｓ／ｄｉｆ２−３」、「／ｓ／ｖｅｒ１」、「／ｓ／ｄｉｆ１−２」に存在する。なお「／ｓ／ｖｅｒ１」にはファイル「Ａ１」が存在するが、同じファイル名Ａであるファイル「Ａ２」がコンテナレイヤである「／ｓ／ｄｉｆ２−３」に存在するので、ファイル「Ａ１」の存在は隠蔽される。このようにして、図１８（ａ）の３行目に示すようにバージョン３のファイル「Ａ２，Ｂ１，Ｃ１」が実行部３４によって実行される。
【００６８】
その後、更新装置１０がサーバ装置２から３つ目の更新ファイル３０７を受信すると、更新装置１０は３つ目のオーバーレイマウントを行う。動作の詳細は繰り返しになるので省略する。そして更新装置１０は、受信した３つ目の更新ファイル３０７をコンテナマウントである「／ｓ／ｖｅｒ４」に書き込む。これにより、「／ｓ／ｄｉｆ３−４」にファイル「Ｂ２，Ｄ１」が書き込まれ、図１９に示すファイル構成となる。
【００６９】
その後、イグニッションのオフなどにより更新の反映が可能になると、更新装置１０はソフト実行パス７０を現在のマウントパスである「／ｓ／ｖｅｒ４」に書き換えて、「／ｓ／ｖｅｒ４」に含まれるファイル「Ａ２，Ｂ２，Ｃ１，Ｄ１」を実行部３４に実行させる。なおこの３つのファイルは順に、「／ｓ／ｄｉｆ２−３」、「／ｓ／ｄｉｆ３−４」、「／ｓ／ｄｉｆ１−２」、「／ｓ／ｄｉｆ３−４」に存在する。このようにして、図１８（ａ）の４行目に示すようにバージョン３のファイル「Ａ２，Ｂ２，Ｃ１，Ｄ１」が実行部３４によって実行される。以上が更新処理の説明である。次にマージ処理を説明する。
【００７０】
（動作例｜マージ処理）
図２０は、図１９に示す状態からマージ処理を行った後のデータファイルの構成を示す図である。マージ処理とは、複数のレイヤを統合する処理であり、具体的には複数のディレクトリに分散していたファイルを１つのディレクトリに集め、さらに同一ファイル名の古い版のファイルを削除する処理である。図２０において例示するマージ処理は、上述した更新処理によりバージョン４に更新され複数のディレクトリに分散しているファイルを「／ｔ／ｖｅｒ１」に統合している。図１９ではファイルＡの旧バージョンであるファイル「Ａ１」およびファイル「Ｂ１」も存在していたが、図２０ではこれらは削除されている。
【００７１】
このマージ処理は、必要なファイルを１つのディレクトリに集約する第１の処理と、不要なファイルを削除する第２の処理とに分けられる。第１の処理は、処理番号が示すマウントパス、すなわち「／ｓ／ｖｅｒ４」のデータファイルを、逆サイドのバージョン１のディレクトリである「／ｔ／ｖｅｒ１」にコピーすることで行われる。この第１の処理をＯＳへの動作指令を入力するシェルへの入力で表現すると「ｃｐ  ／ｓ／ｖｅｒ４  ／ｔ／ｖｅｒ１」に相当する。すなわちマージ処理においてファイル「Ａ１、Ｂ１」をコピー対象から除外する処理は不要である。この理由は以下のとおりである。すなわちコンテナマウントへのアクセスは、イメージレイヤを上位レイヤ、コンテナレイヤを下位レイヤとして重ね合わせて形成されるファイル群へのアクセスとして扱われ、同一の名称を有するファイルは、イメージレイヤに存在するファイルのみが参照されるからである。
【００７２】
第２の処理は、処理番号が示すサイドに存在するファイルをすべて削除することで行われる。この第２の処理をＯＳへの動作指令を入力するシェルへの入力で表現すると「ｒｍ  −ｒｆ  ／ｓ」に相当する。なお例示したコマンドはディレクトリも削除するものであるが、ファイルだけを削除してもよい。
【００７３】
（フローチャート｜メイン処理）
図２２は更新装置１０が実行するデータファイル３３０の更新処理を示すフローチャートである。以下に説明する各ステップの実行主体は、更新装置１０の制御部１５２である。更新部３３は、更新装置１０が起動すると図２２に示す動作を開始し、図２２に示す動作が終了すると再び図２２に示す動作を開始する。
【００７４】
更新装置１０は、まず更新開始判断部３８を用いて更新を開始すべきか否かを判断する（Ｓ１００１）。まだ更新を開始しないと判断する場合はＳ１００１に留まる。更新を開始すべきと判断する場合は、オーバーレイマウント処理（Ｓ１２００）を実行し、更新処理（Ｓ１０１３）を実行する。オーバーレイマウント処理（Ｓ１２００）の動作フローは後に図２３を参照して説明する。Ｓ１０１３の更新処理とは、受信した更新ファイル３０７のソフト更新パス７１への書き込みである。
【００７５】
次に更新装置１０は、ストレージ４８の未使用領域が所定の割合以下であるか否かを判断し（Ｓ１０１４）、所定の割合以下であると判断するとマージ処理（Ｓ１１００）を実行する。マージ処理（Ｓ１１００）の動作フローは後に図２４を参照して説明する。未使用領域が所定の割合より多いと判断する場合は（Ｓ１０１４：ＮＯ）、更新装置１０は処理番号が規定に達しているか否か、具体的には処理番号が各グループの末尾に達しているか否かを判断する（Ｓ１０１５）。たとえば図１７に示す例では、処理番号が９または１８の場合にＳ１０１５が肯定判断される。処理番号が規定値に達していると判断する場合はマージ処理（Ｓ１１００）を実行し、処理番号が規定値に達していないと判断する場合はＳ１０１６に進む。
【００７６】
Ｓ１０１６では更新装置１０は、マウントパスをソフト実行パス７０に設定し（Ｓ１０１６）、ソフト更新パス７１を無効化する（Ｓ１０１７）。以上がデータファイル３３０の更新処理である。
【００７７】
（フローチャート｜オーバーレイマウント処理）
図２３は、図２２のＳ１２００に示すオーバーレイマウント処理の詳細を示すフローチャートである。更新装置１０はまず、管理情報７における現在の処理番号の下位パスのフィールドに記載されたパスを読み取り、そのパスを読み取り専用に設定する（Ｓ１２０３）。次に管理情報７における現在の処理番号の上位パスのフィールドに記載されたパスを読み取り、そのパスを読み書き可に設定する（Ｓ１２０４）。次に更新装置１０は、管理情報７における現在の処理番号のマウントパスのフィールドに記載されたパスを読み取り、そのパスを読み書き可能に設定する（Ｓ１２０５）。
【００７８】
次に更新装置１０は、Ｓ１２０３、Ｓ１２０４、およびＳ１２０５において属性を設定したそれぞれのパスをイメージレイヤ、コンテナレイヤ、およびコンテナマウントとするオーバーレイを形成する（Ｓ１２０６）。次に更新装置１０は、マウントパス、すなわちＳ１２０５において属性を設定したパスをソフト更新パス７１に設定する（Ｓ１２０７）。最後に更新装置１０は、処理番号をインクリメント、すなわち「１」だけ増加させて（Ｓ１２０８）、図２３に示すオーバーレイマウント処理を終了する。
【００７９】
（フローチャート｜マージ処理）
図２４は、図２２のＳ１１００に示すマージ処理の詳細を示すフローチャートである。まず更新装置１０は、処理番号のマウントパスを取得する（Ｓ１１０１）。次に更新装置１０は、処理番号が１０未満であるか否かを判断し、処理番号が１０未満と判断する場合（Ｓ１１０２：ＹＥＳ）はレイヤ合成パスを「／ｔ／ｖｅｒ１」に設定し、処理番号が１０以上と判断する場合（Ｓ１１０２：ＮＯ）はレイヤ合成パスを「／ｓ／ｖｅｒ１」に設定する。Ｓ１１０２〜Ｓ１１０４の処理は、現在使用しているサイドとは逆側のバージョン１のディレクトリを選択するものである。
【００８０】
Ｓ１１０３またはＳ１１０４の処理によりレイヤ合成パスを設定すると、更新装置１０はマウントパスのデータファイルをレイヤ合成パスにコピーする（Ｓ１１０５）。このコピー処理が、実質的なマージ処理に相当する。次に更新装置１０は、レイヤ合成パス７２をソフト実行パス７０に設定し（Ｓ１１０６）、Ｓ１１０２と同様に処理番号が１０未満であるか否かを判断する（Ｓ１１０７）。
【００８１】
更新装置１０は、処理番号が１０未満であると判断する場合は、現在使用しているサイドに含まれるファイル、すなわち「／ｓ」の配下のファイルを削除し（Ｓ１１０８）、処理番号を１０に設定する（Ｓ１１０９）。更新装置１０は処理番号が１０以上であると判断する場合は、現在使用しているサイドに含まれるファイル、すなわち「／ｔ」の配下のファイルを削除し（Ｓ１１１０）、処理番号を１０に設定する（Ｓ１１１１）。Ｓ１１０９またはＳ１１１１の次に更新装置１０は、レイヤ合成パス７２に設定されていた文字列を削除して（Ｓ１１１２）図２４に示すマージ処理を終了する。
【００８２】
（フローチャート｜ロールバック処理）
図２５はロールバック処理の詳細を示すフローチャートである。ロールバック部４７は、サーバ装置２からの通信部３１を介する指令、または車両１の乗員によるＨＭＩ部４９を介する指令によりロールバック処理を行う。ロールバック処理の指令には、処理番号の何番までロールバックを行うかを示すロールバック番号が含まれる。
【００８３】
ロールバック部４７は、まずロールバック番号を取得し（Ｓ１４０１）、次に現在の処理番号を処理対象に設定する（Ｓ１４０２）。そして管理情報７を参照し、現在の処理番号における上位パスに含まれるファイルを削除し（Ｓ１４０３）、現在の処理番号に対応するオーバーレイを解除する（Ｓ１４０４）。次に処理番号をデクリメント、すなわち処理番号の数値を「１」だけ減少させ（Ｓ１４０５）、ロールバック番号と処理番号の大小関係を評価する（Ｓ１４０６）。ロールバック番号が処理番号よりも大きいと判断する場合はＳ１４０２に戻り、ロールバック番号が処理番号以下であると判断する場合は図２５に示す処理を終了する。
【００８４】
上述した第１の実施の形態によれば、次の作用効果が得られる。
（１）更新装置１０は、複数のデータファイルが格納される記憶部１５１と、サーバ装置２から更新ファイル３０７を受信する通信部３１と、記憶部１５１のファイルパスであり複数のデータファイルが含まれる読み込み専用のイメージレイヤ、記憶部１５１のファイルパスであり読み書き可能なコンテナレイヤ、および記憶部１５１のファイルパスであるコンテナマウントを設定するオーバーレイ管理部４６とを備える。更新装置１０は、コンテナマウントが、イメージレイヤを下位レイヤとしコンテナレイヤを上位レイヤとして重ね合わせたファイル状態とし、コンテナマウントへの書き込み処理はコンテナレイヤへの書き込みとするオーバーレイ処理を実行するオーバーレイ実行部３５と、更新ファイル３０７を用いてコンテナマウントへの書き込みを行い、複数のデータファイルの少なくとも一部を更新する更新部３３とを備える。
【００８５】
更新ファイル３０７の書き込みがコンテナマウントへ行われ、更新対象となるデータファイルの情報のみが新たに記憶部１５１に書き込まれ、変更がないデータファイルは複製が行われない。そのため少ない記憶領域でデータを更新できる。また更新ファイル３０７の書き込みは実質的にはコンテナレイヤへ行われるが、オーバーレイマウントの仕組みにより、更新前の状態はイメージレイヤから参照可能であり、更新後の状態はコンテナマウントから参照可能である。換言すると、余分な記憶領域を消費することなく更新前後の状態を取得可能である。さらにイメージレイヤおよびコンテナレイヤに設定するパスに特段の制限はなく、たとえばあらかじめ分割した異なる領域にそれぞれのパスを設定することなどは不要なので、記憶領域をあらかじめ広く確保する必要もない。
【００８６】
（２）複数のデータファイルには実行可能ファイルが含まれる。更新装置１０は、記憶部１５１のファイルパスであるソフト実行パス７０に存在する実行可能ファイルを実行する実行部３５を備える。更新部３３は、コンテナマウントへの書き込みを行うと、ソフト実行パス７０をイメージレイヤからコンテナマウントへ書き換える。そのため更新装置１０は、イメージレイヤに含まれる実行可能ファイルの実行を中断させることなく、バックグラウンドで更新ができる。
【００８７】
（３）オーバーレイ実行部３５は、第１のオーバーレイ処理が有効な状態でさらに第２のオーバーレイ処理を実行し、第２のオーバーレイ処理におけるイメージレイヤには、図１７の管理情報７に示すように、第１のオーバーレイ処理におけるコンテナマウントに設定されたファイルパスが設定される。そのためオーバーレイ実行部３５は、多重オーバーレイを構成し、複数回の更新に対応できる。
【００８８】
（４）オーバーレイ実行部３５は、複数のオーバーレイ処理を実行し、複数のオーバーレイ処理ではいずれも、イメージレイヤには直前のオーバーレイ処理におけるコンテナマウントに設定されたファイルパスが設定される。更新装置１０は、オーバーレイ実行部３５が作成した最新のオーバーレイ処理におけるコンテナマウントに設定されたファイルパスをコピー元とするコピー処理により更新部３３による複数回の更新をマージするレイヤ合成部４０を備える。そのため更新装置１０は、マージ処理により必要なデータファイルだけを抽出することができる。この抽出はＯＳのコピーコマンドにより実行可能であり、処理が簡便である。
【００８９】
（５）更新装置１０は、記憶部１６１の空き容量が予め定めた値を下回るとレイヤ合成部に動作指令を出力する処理ステップ（図２２のＳ１０１４）を備える。そのため空き容量が少なくなった際にマージ処理を行い、必要なファイルを抽出した後に、従前のファイルを削除（図２４のＳ１１０７〜Ｓ１１１１）することができる。
【００９０】
（６）更新装置１０は、コンテナレイヤを削除することで更新前の状態に戻すロールバック部を備える。そのため不要な更新を削除して、更新前の状態に戻すことができる。
【００９１】
（変形例１）
図２４のＳ１１１２〜Ｓ１７００の処理において、全てのレコードを削除した。しかし最初のレコードは削除せずに残してもよい。この場合はＳ１１１２において最初以外のレコードを取得し、Ｓ１７００において最初のレコード以外を全て削除したか否かを判断する。
【００９２】
（変形例２）
図２４のＳ１１０８およびＳ１１１０において、実行中のプログラムは削除せず、そのプログラムの実行が終了してから削除してもよい。処理系の構成やプログラムの構成によっては、実行中のプログラムを削除することにより不具合が発生する可能性があり、本変形例ではそのようなケースに対応できる。
【００９３】
（変形例３）
ストレージ４８に含まれるデータファイル、および更新ファイル３０７に実行可能ファイルであるプログラムが含まれなくてもよい。この場合は更新装置１０は実行部３４、および実行レイヤ指定部３７を備えなくてもよい。
【００９４】
（変形例４）
管理情報７はあらかじめ作成されていなくてもよく、更新装置１０が必要に応じて生成してもよい。この場合は更新装置１０は、次に作成する処理番号における下位パスは、直前の処理番号におけるマウントパスと同一に設定すればよい。名称が重複しなければディレクトリの名称は特に限定されず、特に図１７に示したように連番にすることは必要ではない。
【００９５】
（変形例５）
更新装置１０は、車両１の乗員による承諾を更新の条件としてもよい。たとえば更新装置１０は、更新が可能な状況になるとＨＭＩ部４９を用いて乗員に更新の可否を問い合わせ、更新が承諾された場合に更新を実行する。
【００９６】
図２６は、乗員への更新の可否を問い合わせる画面表示の一例を示す図である。この表示がＨＭＩ１５５に表示され、乗員が「はい」を選択すると処理が続行される。乗員が「いいえ」を選択すると処理が中断され、再び更新が可能な状況になると同一の画面表示が行われる。ただし乗員が「いいえ」を選択した場合には、次回のイグニッションがＯＮまたはＯＦＦにされた際に、乗員の問い合わせを行うことなく処理を続行してもよい。
【００９７】
（変形例６）
図２２のＳ１０１５の処理は削除してもよい。本実施の形態において管理情報７をあらかじめ作成していたのは説明の便宜上であり、自動生成を行う特段の不利益はないので、記憶領域の制約がなければ管理情報７を適宜書き換えることで対処可能だからである。
【００９８】
（変形例７）
上述した第１の実施の形態では、マージ処理とロールバック処理は個別に実行された。しかしマージ処理を実行する際にロールバック処理を同時に実行してもよい。
【００９９】
―第２の実施の形態―
図２７〜図２８を参照して、本発明にかかる更新装置の第２の実施の形態を説明する。以下の説明では、第１の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第１の実施の形態と同じである。本実施の形態では、主に、サーバ装置が統合処理を行う点で、第１の実施の形態と異なる。
【０１００】
（動作の概要）
サーバ装置２は、第１の実施の形態と同様に更新ファイル３０７を更新装置１０に逐次送信するだけでなく、所定の条件を満たすと、これまでの更新の内容をまとめたレイヤイメージファイル、いわゆるロールアップを作成して更新装置１０に送信する。ただし必ずしも全ての更新内容が含まれていなくてもよく、過去のどの更新が含まれているかを示す情報も同時に送信される。更新装置１０は、削除すべきファイルを削除するとともに、受信したレイヤイメージファイルをコンテナレイヤに適用する。これにより更新装置１０の処理が簡略化され負荷が軽減する。
【０１０１】
（構成）
図２７は、第２の実施の形態における更新システムの構成を示す図である。本実施の形態におけるサーバ装置２は、第１の実施の形態における構成に加えて、更新管理部３０、更新部３３、オーバーレイ実行部３５、更新レイヤ指定部３９、レイヤ合成部４０、合成範囲指定部４１、不要レイヤ削除部４５、オーバーレイ管理部４６、更新用ストレージ４８Ａ、およびフラグ設定部５１を備える。更新用ストレージ４８Ａは、ストレージ１６５と同一のハードウエアによって実現されてもよいし、異なるハードウエアによって実現されてもよい。
【０１０２】
サーバ装置２が備える機能である、更新管理部３０、更新部３３、オーバーレイ実行部３５、更新レイヤ指定部３９、レイヤ合成部４０、オーバーレイ管理部４６の動作は第１の実施の形態と同様である。なお合成範囲指定部４１の動作は、後述するように更新装置１０における動作と異なる。また更新用ストレージ４８Ａには、第１の実施の形態における更新装置１０のストレージ４８と同一の情報が保存される。すなわち本実施の形態では、更新ファイル３０７を用いて更新装置１０だけでなくサーバ装置２においても多重オーバーレイを用いたデータファイルの更新が行われる。また本実施の形態におけるサーバ装置２のストレージ１６５には、これまでにサーバ装置２が更新装置１０に送信した更新ファイル３０７が格納されている。
【０１０３】
更新装置１０は、第１の実施の形態の構成からレイヤファイル合成部４０および合成範囲指定部４１を削除し、レコード更新部５０を追加した構成を有する。ただし更新装置１０は、差分更新部３６、更新ファイル保持部４２、レイヤファイル合成部５２および合成範囲指定部４１のうち少なくとも１つを備えてもよい。また更新装置１０は、管理情報７に代えて管理情報７Ａを有する。
【０１０４】
（管理情報７Ａ）
図２８は管理情報７Ａの一例を示す図である。管理情報７Ａは、第１の実施の形態における管理情報７が備える全てのフィールドに加えて、削除対象フラグのフィールドを有する。削除対象フラグの初期値は「ＮＯ」であり、サーバ装置２から受信する削除対象情報に基づき「ＹＥＳ」に更新される。レコード削除部１４００は、削除対象フラグが「ＹＥＳ」に設定されているレコードの値に基づき削除処理を行う。
【０１０５】
（サーバ装置２の機能構成）
合成範囲指定部４１は、サーバ装置２のオペレータの決定、またはサーバ装置２に内蔵される他のプログラムの決定に従い、サーバ装置２が合成する処理番号の範囲を指定する。フラグ設定部５１は、合成範囲指定部４１の指定に基づき削除対象フラグを付与する対象となる処理番号を決定し、削除対象情報として更新装置１０に伝達する。レイヤファイル合成部４０は、合成範囲指定部４１の指令に基づきレイヤファイルを合成してロールアップ情報とする。具体的な合成の動作は第１の実施の形態と同様である。
【０１０６】
たとえば合成範囲指定部４１が、処理番号１〜３を合成範囲に指定すると、フラグ設定部５１は削除対象情報として「処理番号１〜３」という情報を更新装置１０に出力する。また図２８の例に従えば、サーバ装置２のレイヤファイル合成部５２は、「／ｓ／ｖｅｒ４」をコピー元とし、たとえば「／ｒｏｌｌｕｐ」をコピー先にしたファイルコピーを行う。そしてサーバ装置２は、ロールアップ情報である「／ｒｏｌｌｕｐ」以下をイメージファイル３０９として更新装置１０に送信する。
【０１０７】
（更新装置１０の動作）
更新装置１０は、サーバ装置２から削除対象情報を受信すると管理情報７Ａに削除対象情報を反映させる。具体的には、削除対象情報に基づき管理情報７Ａの削除対象フラグのフィールドを初期値の「ＮＯ」から「ＹＥＳ」に書き換え、削除対象フラグが「ＹＥＳ」である処理番号の上位パスのディレクトリに格納されるデータファイルを削除する。また更新装置１０は、処理番号「１」の下位パスのディレクトリの内容物を削除して、そこにサーバ装置２から受信するロールアップ情報を書き込む。さらに更新装置１０は、管理情報７Ａの削除対象フラグが「ＹＥＳ」である処理番号のオーバーレイマウントを解除し、処理番号「１」のマウントパスを削除対象とならなかった最も若い処理番号の下位パスに書き換えてオーバーレイマウントを形成する。たとえば図２８に示す例では処理番号１のマウントパスを「／ｓ／ｖｅｒ４」に書き換える。
【０１０８】
上述した第２の実施の形態によれば、次の作用効果が得られる。
（７）更新装置１０は少なくとも第１の実施の形態と同様の構成を有する。サーバ装置２は、複数のデータファイルが格納される更新用ストレージ４８Ａと、更新装置１０に送信する更新ファイル３０７が格納されるストレージ３と、更新装置１０に更新ファイル３０７を送信するサーバ通信部２０と、オーバーレイ管理部４６と、オーバーレイ実行部３５と、更新ファイルを用いてサーバコンテナマウントへの書き込みを行い、複数のデータファイルの少なくとも一部を更新する更新部３３とを備える。サーバ装置２のオーバーレイ実行部３５は、第１のサーバオーバーレイ処理が有効な状態でさらに第２のサーバオーバーレイ処理を実行し、第２のサーバオーバーレイ処理におけるイメージレイヤには、第１のオーバーレイ処理におけるコンテナマウントに設定されたファイルパスが設定され、サーバ装置２のオーバーレイ実行部３５は複数のオーバーレイ処理を実行し、これらはいずれも、イメージレイヤには直前のオーバーレイ処理におけるコンテナマウントに設定されたファイルパスが設定される。サーバ装置２は、サーバ装置２のオーバーレイ実行部３５が作成した最新のオーバーレイ処理におけるコンテナマウントに設定されたファイルパスをコピー元とし、所定のファイルパスであるマージパスをコピー先するコピー処理によりサーバ装置２の更新部３３による複数回の更新をマージするレイヤ合成部４０を備える。サーバ通信部２０は、サーバ装置２のレイヤ合成部４０がマージパスにコピーした複数のファイルの情報であるロールアップ情報を更新装置１０に送信する。更新装置１０は、サーバ装置２からロールアップ情報を受信すると、オーバーレイ処理を解除し複数のデータファイルに代えてロールアップ情報を使用する。そのためレイヤの合成処理を更新装置１０ではなくサーバ装置２が行うため、更新装置１０の処理負荷を軽減することができる。
【０１０９】
（第２の実施の形態の変形例１）
更新装置１０は、サーバ装置２から更新ファイル３０７を受信せず、ロールアップ情報のみを受信してもよい。この場合は更新装置１０は、ロールアップ情報を受信すると従前いサーバ装置２から受信した情報を廃棄し、新たに受信したロールアップ情報を代わりに利用する。この場合は更新装置１０は、オーバーレイ実行部３５やオーバーレイ管理部４６を備えなくてもよい。本変形例によれば、更新装置１０は、自ら更新処理を行わないので処理負荷をより軽減することができる。
【０１１０】
―第３の実施の形態―
図２９、図３０を参照して、本発明にかかる更新装置の第３の実施の形態を説明する。以下の説明では、第１の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第１の実施の形態と同じである。本実施の形態では、主に、車両１のイグニッションの状態を更新開始の条件に含める点で、第１の実施の形態と異なる。
【０１１１】
図２９は、第３の実施の形態における更新システムの構成を示す図である。本実施の形態における更新装置１０は、第１の実施の形態における構成に加えて、イグニッション受信部５４を備える。イグニッション受信部５４は、車両１の乗員によるイグニッションスイッチの操作、具体的にはイグニッションスイッチをオンに切り替えた信号、およびオフに切り替えた信号を受信する。この信号の伝達は、専用の信号線が用いられてもよいし、ＣＡＮなどの車載ネットワークが利用されてもよい。本実施の形態では更新開始判断部３８は、イグニッション受信部５４が受信したイグニッションスイッチの状態を判断する。たとえば更新開始判断部３８は、イグニッションスイッチがオフであることを追加の条件とする。
【０１１２】
図３０は、第３の実施の形態における更新装置１０が実行するデータファイル３３０の更新処理を示すフローチャートである。図３０に示すフローチャートは、Ｓ１００２が追加されている点が図２２と異なる。Ｓ１００１において構成判断されると実行されるＳ１００２では更新開始判断部３８は、イグニッションスイッチがオフであるか否かを判断する。更新開始判断部３８はイグニッションスイッチがオフであると判断するとＳ１２００に進んで、第１の実施の形態と同様に処理を継続する。更新開始判断部３８はイグニッションスイッチがオンであると判断するとＳ１００１に戻る。
【０１１３】
上述した第３の実施の形態によれば、次の作用効果が得られる。
（８）更新装置１０は、更新装置が搭載される車両のイグニッションスイッチの状態を取得するイグニッション受信部５４と、イグニッション受信部５４の受信結果に基づき更新部３３に動作指令を出力する更新開始判断部３８とを備える。そのため、車両１の動作への影響が少ない車両１の始動時や停止時に更新を行うことができる。
【０１１４】
―第４の実施の形態―
図３１、図３２を参照して、本発明にかかる更新装置の第４の実施の形態を説明する。以下の説明では、第１の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第１の実施の形態と同じである。本実施の形態では、主に、ファイルの差分を受信してファイルを更新する点で、第１の実施の形態と異なる。
【０１１５】
図３１は、第４の実施の形態における更新システムの構成を示す図である。本実施の形態における更新装置１０は、第１の実施の形態における構成に加えて、差分更新部３６をさらに備える。本実施の形態における更新ファイル３０７は、第１の実施の形態などと同様にファイルそのものが含まれる場合もあるが、ファイルそのものは含まれず従前のバージョンのファイルとの差分を示す情報が含まれる場合がある。後者の情報を使ったデータファイル３３０の更新を、以下では「差分更新」と呼ぶ。なお本実施の形態では、更新ファイル保持部４２が記憶部１５１に一時的に記憶する更新ファイル３０７には前述の差分情報が含まれる場合があるので、更新ファイル保持部４２は差分情報保持部とも呼べる。
【０１１６】
差分更新部３６は、更新部３３の動作指令に基づき差分更新を行う。差分更新部３６は具体的には、ｂｓｐａｔｃｈ、ｘｄｅｌｔａ、またはｚｄｅｌｔａなどである。なおｂｓｐａｔｃｈ、ｘｄｅｌｔａ、およびｚｄｅｌｔａは、オープンソースソフトウエアであり、様々なＬｉｎｕｘディストリビューションにも含まれる。
【０１１７】
差分更新の概要を説明する。旧バージョンのデータファイル３３０と新バージョンのデータファイル３３０の差をデータ化したファイルが差分ファイルである。上述したｂｓｐａｔｃｈなどは、旧バージョンのデータファイル３３０および、差分ファイルを用いて新バージョンのデータファイル３３０を構築するプログラムである。具体的には、ストレージ４８に保持するデータファイル３３０に対して、更新ファイル保持部４２が保持する更新ファイル３０７を用いてストレージ４８の特定のパス、ここではソフト更新パス７１に新しいデータファイル３３０を生成する処理を行う。一般に差分ファイルは、オリジナルのデータファイル３３０のサイズに比べて小さくなるため、サーバ装置２と更新装置１０間の通信量を減らすことが可能となる。
【０１１８】
（フローチャート）
図３２は、差分更新部３６の動作を表すフローチャートである。差分更新部３６は、更新部３３の動作指令に基づき、まず差分ファイルを取得し（Ｓ１３０９）、旧ファイルを取得する（Ｓ１３１０）。そして差分更新部３６は、差分ファイルを用いて旧ファイルを新ファイルに書き換える差分更新処理を行い（Ｓ１３１１）、新ファイルをソフト更新パスに書き込んで（Ｓ１３１２）図３２に示す差分更新処理を終了する。
【０１１９】
上述した第４の実施の形態によれば、次の作用効果が得られる。
（９）サーバ装置２から受信する更新ファイル３０７は差分データである。更新装置１０は、記憶部１５１に格納されているデータファイル３３０と更新ファイル３０７とを用いて更新後のデータファイル３３０を作成する差分更新部３６を備える。そのため更新ファイル３０７のデータ量を削減してサーバ装置２と更新装置１０間の通信量を減らすことができる。
【０１２０】
―第５の実施の形態―
図３３〜図３４を参照して、本発明にかかる更新装置の第５の実施の形態を説明する。以下の説明では、第１の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第１の実施の形態と同じである。本実施の形態では、主に、ロールバックに一定の制限が課せられる点で、第１の実施の形態と異なる。
【０１２１】
（構成）
本実施の形態における更新装置１０は、第１の実施の形態における管理情報７に代えて管理情報７Ｂを備える。また以下に説明するようにロールバック部４７の動作が一部異なる。
【０１２２】
本実施の形態では、更新装置１０がサーバ装置２から受信するロールバック指令は、通常指令と強制指令の２種類がある。通常指令の場合は、以下に説明する制限の範囲内でロールバックが可能である。強制指令の場合は、第１の実施の形態と同様に、任意のバージョンまでロールバックが可能である。
【０１２３】
本実施の形態において更新装置１０が更新装置１０に送信する更新ファイル３０７には、後述する削除禁止フラグが設定されている場合がある。ただし削除禁止フラグは、ＯＮ／ＯＦＦによりフラグの有無を表現してもよいし、削除禁止フラグの付与の有無によりフラグの有無を表現してもよい。更新ファイル３０７に削除禁止フラグを付与するか否かは、更新ファイル３０７の作成者、または更新ファイル３０７をサーバ装置２に格納する者が決定する。削除禁止フラグを付与する基準は様々であるが、たとえば重要な情報の更新、たとえばナビゲーションなどに用いる地図の更新が含まれる場合に削除禁止フラグを付与することが考えられる。
【０１２４】
（管理情報７Ｂ）
図３３は、本実施の形態における管理情報７Ｂの一例を示す図である。管理情報７Ｂは、第１の実施の形態における構成に加えて、削除の禁止を示す削除禁止フラグのフィールドを備える。削除禁止フラグの初期値は「ＮＯ」であり、削除が禁止されない。サーバ装置２から受信する更新ファイル３０７に削除禁止フラグが付与されていた場合には、マウントパスへの書き込みの際に管理情報７Ｂの削除禁止フラグを「ＹＥＳ」に書き換える。
【０１２５】
たとえば図３３に示す例では、処理番号が「２」および「４」の際に受信した更新ファイル３０７に削除禁止フラグが付与されていたので、処理番号「２」および「４」の削除禁止フラグが「ＹＥＳ」に設定されている。
【０１２６】
（ロールバック部４７のフローチャート）
図３４は、本実施の形態におけるロールバック部４７の動作を表すフローチャートである。なおロールバック処理そのものは第１の実施の形態と同様の動作なのでここでは説明を省略し、どの処理番号までロールバックを行うかを決定する処理を説明する。ロールバック部４７は、サーバ装置２からロールバックの指令を受けると、まずその指令が強制指令であるか否かを判断する（Ｓ１４０１）。強制指令であると判断する場合は（Ｓ１４０１：ＹＥＳ）、ロールバック部４７は指定された番号までロールバックを行う。ロールバックの指令が強制指令でないと判断する場合は、管理情報７Ｂを参照して削除禁止フラグが付されている最上位の番号を特定する（Ｓ１４０３）。たとえば図３３に示す例では、処理番号「２」と「４」に削除禁止フラグが付されているので、最上位の番号として「４」を特定する。
【０１２７】
次にロールバック部４７は、サーバ装置２から指定された番号がＳ１４０３において特定した番号よりも大きいか否かを判断する（Ｓ１４０４）。ロールバック部４７は、指定された番号の方が大きいと判断する場合は（Ｓ１４０４：ＹＥＳ）、Ｓ１４０２に進んで指定された番号までロールバックを行う。ロールバック部４７は、指定された番号がフラグ付きの最上位以下であると判断する場合は（Ｓ１４０４：ＮＯ）、フラグ付きの最上位の番号までロールバックを行う（Ｓ１４０５）。Ｓ１４０２またはＳ１４０５の実行が完了するとロールバック部４７は図３４に示す処理を終了する。
【０１２８】
上述した第５の実施の形態によれば、次の作用効果が得られる。
（１０）通信部３１は更新ファイル３０７とともに削除の可否を示す削除禁止フラグを受信する。更新部３３は、管理情報７Ｂを用いてコンテナレイヤごとに削除禁止フラグの有無を管理する。ロールバック部４７は、図３４に示すようにロールバック番号を削除禁止フラグが付された最上位以上の数に制限することで削除禁止フラグが付されたコンテナレイヤを削除しない。そのため強制指令を受けない限りは、削除禁止フラグが付された重要な更新の情報を保持することができる。
【０１２９】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【０１３０】
１…車両
２…サーバ装置
７、７Ａ、７Ｂ…管理情報
１０…更新装置
３０…更新管理部
３１…通信部
３３…更新部
３４…実行部
３５…オーバーレイ実行部
３６…差分更新部
３７…実行レイヤ指定部
３８…更新開始判断部
３９…更新レイヤ指定部
４０…レイヤ合成部
４１…合成範囲指定部
４４…ストレージ残量検出部
４６…オーバーレイ管理部
４７…ロールバック部
５０…レコード更新部
５１…フラグ設定部
５２…レイヤファイル合成部
５４…イグニッション受信部７０…ソフト実行パス
７１…ソフト更新パス
７２…レイヤ合成パス
【図１】
2019101917.tif 000003
【図２】
2019101917.tif 000004
【図３】
2019101917.tif 000005
【図４】
2019101917.tif 000006
【図５】
2019101917.tif 000007
【図６】
2019101917.tif 000008
【図７】
2019101917.tif 000009
【図８】
2019101917.tif 000010
【図９】
2019101917.tif 000011
【図１０】
2019101917.tif 000012
【図１１】
2019101917.tif 000013
【図１２】
2019101917.tif 000014
【図１３】
2019101917.tif 000015
【図１４】
2019101917.tif 000016
【図１５】
2019101917.tif 000017
【図１６】
2019101917.tif 000018
【図１７】
2019101917.tif 000019
【図１８】
2019101917.tif 000020
【図１９】
2019101917.tif 000021
【図２０】
2019101917.tif 000022
【図２１】
2019101917.tif 000023
【図２２】
2019101917.tif 000024
【図２３】
2019101917.tif 000025
【図２４】
2019101917.tif 000026
【図２５】
2019101917.tif 000027
【図２６】
2019101917.tif 000028
【図２７】
2019101917.tif 000029
【図２８】
2019101917.tif 000030
【図２９】
2019101917.tif 000031
【図３０】
2019101917.tif 000032
【図３１】
2019101917.tif 000033
【図３２】
2019101917.tif 000034
【図３３】
2019101917.tif 000035
【図３４】
2019101917.tif 000036