(57)【要約】【課題】サーバ装置から受信したデータを端末装置に配信するときのセキュリティを向上させる。【解決手段】実施形態の通信装置は、端末装置とサーバ装置と接続し、受信部と実行制御部と設定部とを備える。受信部は、無線ネットワークを識別する識別情報と、端末装置と無線通信するプログラムを実行するためのプログラム情報と、をサーバ装置から受信する。実行制御部は、プログラム情報に基づきプログラムを実行させる。設定部は、プログラムが識別情報で識別される無線ネットワークを用いて端末装置と通信するように、無線ネットワークを設定する。【選択図】図８
2017004220.tif 000002
【特許請求の範囲】
【請求項１】
端末装置とサーバ装置と接続する通信装置であって、
無線ネットワークを識別する識別情報と、前記端末装置と無線通信するプログラムを実行するためのプログラム情報と、を前記サーバ装置から受信する受信部と、
前記プログラム情報に基づき前記プログラムを実行させる実行制御部と、
前記プログラムが前記識別情報で識別される前記無線ネットワークを用いて前記端末装置と通信するように、前記無線ネットワークを設定する設定部と、
を備える通信装置。
【請求項２】
前記プログラムは、前記サーバ装置からデータを受信し、受信した前記データを前記端末装置に送信する機能を有する、
請求項１に記載の通信装置。
【請求項３】
前記プログラムは、前記サーバ装置から指定された優先度が高い前記データを優先して、前記サーバ装置から前記データを受信する、
請求項２に記載の通信装置。
【請求項４】
前記サーバ装置を認証する認証処理部をさらに備え、
前記受信部は、前記サーバ装置が認証された場合に、前記識別情報と前記プログラム情報とを前記サーバ装置から受信する、
請求項１に記載の通信装置。
【請求項５】
前記プログラムは、前記端末装置を認証する機能を有し、前記端末装置が認証された場合に、前記端末装置と通信する、
請求項１に記載の通信装置。
【請求項６】
前記受信部は、第１プログラムを実行するための第１プログラム情報と、第２プログラムを実行するための第２プログラム情報と、を前記サーバ装置から受信し、
前記実行制御部は、前記第１プログラムと前記第２プログラムとを仮想化環境で実行させる、
請求項１に記載の通信装置。
【請求項７】
前記受信部は、第１無線ネットワークを識別する第１識別情報と、第２無線ネットワークを識別する第２識別情報と、を前記サーバ装置から受信し、
前記設定部は、前記第１無線ネットワークおよび前記第２無線ネットワークをそれぞれ独立したネットワークとして設定する、
請求項１に記載の通信装置。
【請求項８】
前記プログラムは、データを前記端末装置から受信し、受信したデータを保存する機能を有する、
請求項１に記載の通信装置。
【請求項９】
複数の通信装置と、サーバ装置と備える通信システムであって、
前記サーバ装置は、
無線ネットワークを識別する識別情報と、前記通信装置と端末装置とが無線通信するプログラムを実行するためのプログラム情報とを、複数の前記通信装置のうち選択された前記通信装置に配信する配信部を備え、
前記通信装置のそれぞれは、
前記識別情報と前記プログラム情報とを前記サーバ装置から受信する受信部と、
前記プログラム情報に基づき前記プログラムを実行させる実行制御部と、
前記プログラムが前記識別情報で識別される前記無線ネットワークを用いて前記端末装置と通信するように、前記無線ネットワークを設定する設定部と、を備える、
通信システム。
【請求項１０】
前記サーバ装置は、
前記端末装置の位置情報に基づいて、複数の前記通信装置のうちいずれかの前記通信装置を選択する選択部を更に備え、
前記送信部は、前記選択部により選択された前記通信装置に、前記識別情報と前記プログラム情報とを送信する、
請求項９に記載の通信システム。
【請求項１１】
端末装置とサーバ装置と接続するコンピュータを、
無線ネットワークを識別する識別情報と、前記端末装置と無線通信するプログラムを実行するためのプログラム情報と、を前記サーバ装置から受信する受信部と、
前記プログラム情報に基づき前記プログラムを実行させる実行制御部と、
前記プログラムが前記識別情報で識別される前記無線ネットワークを用いて前記端末装置と通信するように、前記無線ネットワークを設定する設定部、
として機能させるためのプログラム。
【請求項１２】
端末装置とサーバ装置と接続する通信装置で実行される通信方法であって、
無線ネットワークを識別する識別情報と、前記端末装置と無線通信するプログラムを実行するためのプログラム情報と、を前記サーバ装置から受信する受信ステップと、
前記プログラム情報に基づき前記プログラムを実行させる実行制御ステップと、
前記プログラムが前記識別情報で識別される前記無線ネットワークを用いて前記端末装置と通信するように、前記無線ネットワークを設定する設定ステップと、
を含む通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信装置、通信システム、通信方法およびプログラムに関する。
【背景技術】
【０００２】
車両が止まる場所または車両が減速する場所に設置された複数の路側機が、配信装置から送られてきた送信エージェント（路側機で実行される更新プログラム）を受信し、通信可能な範囲に車両が入ると部分コード（ファームウェア）を無線により送信するデータ配信システムが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１２８９６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
各メーカーや車種ごとに認証方式や配信ファイル形式が異なることが考えられるが、従来技術では認証方式や配信ファイル形式の相違は考慮されていない。また、配信プラットフォームとしては、セキュリティの観点上、ネットワークが分離されていることが望ましい。
【課題を解決するための手段】
【０００５】
実施形態の通信装置は、端末装置とサーバ装置と接続し、受信部と実行制御部と設定部とを備える。受信部は、無線ネットワークを識別する識別情報と、端末装置と無線通信するプログラムを実行するためのプログラム情報と、をサーバ装置から受信する。実行制御部は、プログラム情報に基づきプログラムを実行させる。設定部は、プログラムが識別情報で識別される無線ネットワークを用いて端末装置と通信するように、無線ネットワークを設定する。
【図面の簡単な説明】
【０００６】
【図１】本実施形態にかかる通信システムの全体構成図。
【図２】ＡＰ上で起動されるプログラムの一例を示す図。
【図３−１】仮想化の方式の例を示す図。
【図３−２】仮想化の方式の例を示す図。
【図３−３】仮想化の方式の例を示す図。
【図３−４】仮想化の方式の例を示す図。
【図４】サーバのハードウェア構成図。
【図５】サーバの機能構成例を示すブロック図。
【図６】データの配信方法を説明するための図。
【図７】ＡＰのハードウェア構成図。
【図８】ＡＰの機能構成例を示すブロック図。
【図９】ＡＰにおける仮想ネットワークの構成例を示す図。
【図１０】実行部の詳細な機能構成の一例を示すブロック図。
【図１１】車両のハードウェア構成図。
【図１２】車両の機能構成例を示すブロック図。
【図１３】配信処理の全体の流れの一例を示すシーケンス図。
【図１４】接近情報のデータ構造の一例を示す図。
【図１５】車両から接近情報が送られた場合の処理のフローチャート。
【図１６】ゲストＯＳを起動する処理のフローチャート。
【図１７】配信アプリケーションの処理のフローチャート。
【図１８】データの取得をリクエストされた場合の処理のフローチャート。
【図１９】データのアップロードをリクエストされた場合の処理のフローチャート。
【図２０】更新状態通知を受信した場合の処理のフローチャート。
【図２１】ゲストＯＳの停止指示を受けた場合の処理のフローチャート。
【図２２】車両で実行される各処理のフローチャート。
【図２３】配信データのダウンロード処理のフローチャート。
【図２４】配信データのアップロード処理の一例を示すフローチャート。
【図２５】アップデート処理の一例を示すフローチャートである。
【図２６】データ取得ステータスをリクエストされた場合の処理のフローチャート。
【図２７】経路情報を用いずに取得先を選択する方法を説明する図。
【図２８】経路情報を用いずに取得先を選択する方法を説明する図。
【図２９】経路情報を用いて取得先を選択する方法を説明するための図。
【図３０】認証方式と認証処理で送受信される情報の一例を示す図。
【図３１】変形例のＡＰの機能構成を示すブロック図。
【図３２】接続情報のデータ構造の一例を示す図。
【図３３】実行情報のデータ構造の一例を示す図。
【図３４】データ取得リストのデータ構造の一例を示す図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、この発明にかかる通信装置、通信システム、通信方法およびプログラムの好適な実施形態を詳細に説明する。
【０００８】
本実施形態にかかる通信装置は、端末装置（車両など）にデータ（ファームウェアなど）を配信するプログラムが、対応する無線ネットワークを用いて端末装置と通信するように、無線ネットワークを設定する。プログラムおよび無線ネットワークインタフェース（Ｉ／Ｆ）の少なくとも一方は、例えば仮想化により複数に分離される。ネットワークＩ／Ｆの分離によりセキュリティの向上が実現できる。また、端末装置の種類等に応じたプログラムを用いるように構成すれば、種類等に応じて異なる認証方式および配信ファイル形式を扱うことが可能となる。
【０００９】
図１は、本実施形態にかかる通信システムの全体構成の一例を示す図である。図１に示すように、通信システムは、通信装置としてのアクセスポイント（ＡＰ）１００ａ、１００ｂ、１００ｃと、端末装置としての車両２００ａ、２００ｂ、２００ｃと、サーバ装置としてのサーバ３００ａ、３００ｂ、３００ｃと、サーバ４００と、を備えている。
【００１０】
ＡＰ１００、サーバ３００、および、サーバ４００は、例えばインターネット５００で接続される。インターネット以外のネットワークにより各装置が接続されてもよい。ＡＰ１００と車両２００とは無線ネットワークにより接続される。
【００１１】
ＡＰ１００ａ、１００ｂ、１００ｃは、同様の構成を備えるため、区別する必要がないときは単にＡＰ１００という。同様に車両２００ａ、２００ｂ、２００ｃは単に車両２００といい、サーバ３００ａ、３００ｂ、３００ｃは単にサーバ３００という場合がある。ＡＰ１００、車両２００、および、サーバ３００の個数は３に限れられるものではなく、任意の個数とすることができる。
【００１２】
ＡＰ１００は、車両２００と無線通信する通信装置である。例えば、車両２００が通行する道路の端部等に設けられる路側機（ＩＴＳスポット）としてＡＰ１００を実現できる。
【００１３】
サーバ３００は、車両２００とＡＰ１００とが無線通信するための情報を記憶し、必要に応じてＡＰ１００に送信する。サーバ３００は、例えば車両２００のメーカーごとに設置することができる。例えば、サーバ３００ａ、３００ｂ、および、３００ｃを、それぞれＡ社、Ｂ社、および、Ｃ社に対応するサーバ装置として設定してもよい。
【００１４】
サーバ４００は、各ＡＰ１００の位置情報、および、ＡＰ１００で実行されるプログラムの実行状態などの情報を管理するサーバ装置である。
【００１５】
以下、図１を参照しながら、本実施形態の通信システムによるデータ（ファームウェア）の配信処理の概要を説明する。図１で車両２００ｂは、ファームウェアのアップデートを未実施であるものとする。
【００１６】
車両２００ｂは、移動するに従い、接近したＡＰ１００ａに対して接近情報を送信する。接近情報は、セルラ網の基地局６００を介してセルラ網により送信されてもよい。接近情報の詳細は後述する。ＡＰ１００ａは、接近情報をサーバ３００に送信する。サーバ３００は、接近情報等を参照し、車両２００ｂが移動して通信可能になる可能性の高いＡＰ１００を特定し、ＡＰ１００ａまたはセルラ網の基地局６００を介して車両２００ｂに対して、特定したＡＰ１００（この例ではＡＰ１００ｂ）に車両２００ｂが接続するために必要な情報（接続情報）を送信する。また、サーバ３００は、特定したＡＰ１００（この例ではＡＰ１００ｂ）に対してファームウェアの配信に必要な情報（実行情報、認証情報、ファームウェア）を送信する。各情報の詳細は後述する。
【００１７】
車両２００ｂがＡＰ１００ｂと無線通信できる距離まで接近すると、車両２００ｂは、ＡＰ１００ｂからファームウェアをダウンロードする。１つのＡＰ１００から、ファームウェアの一部をダウンロードするように構成してもよい。また、ＡＰ１００ｂは、既にファームウェアのダウンロードおよび更新（アップデート）が完了した他の車両（この例では車両２００ｃ）からファームウェアを受信してもよい。
【００１８】
ファームウェアの全体のダウンロードが完了した後、検証処理などの実行後、指定されたスケジュールにファームウェアのアップデートが実行される。例えば車両２００は、ファームウェアのデジタル署名の検証後、アップデートのスケジュールを設定し、スケジュールされたアップデート時間にイグニッションキーがオフであればアップデートを実行する。
【００１９】
アップデートが完了した車両２００は、アップデートが完了したことを示す更新完了通知を、ＡＰ１００を介して例えばサーバ４００に送信する。図１では、車両２００ａがＡＰ１００ｃを介して更新完了通知を送信する例が示されている。
【００２０】
図２は、ＡＰ１００上で起動されるプログラムの一例を示す図である。図２に示すようにＡＰ１００は、ハイパーバイザ１０と、ブリッジ２０と、無線通信部３０と、通信制御部４０と、を備える。
【００２１】
通信制御部４０は、例えばイーサネット（登録商標）による通信を制御し、サーバ３００との通信を可能とする。ハイパーバイザ１０は、仮想マシンの実行を制御する。例えばハイパーバイザ１０は、ファームウェアの配信を行うプログラムをそれぞれ実行する仮想マシン１１、１２、１３の実行を制御する。仮想マシン１１、１２、１３は、例えば、それぞれサーバ３００ａ、３００ｂ、および、３００ｃから送信された実行情報等に基づき実行される。プログラムの実行が仮想マシンで分離されるため、セキュリティを高めることができる。また例えばサーバ３００ごとに異なる実行情報を用いることにより、認証方式や配信ファイル形式が異なる車両２００のファームウェアの配信が可能となる。
【００２２】
ブリッジ２０は、仮想マシン１１、１２、１３と無線通信部３０との間のデータの転送を制御する。無線通信部３０は、仮想マシン１１、１２、１３と外部（車両２００など）との間の無線通信を行う。無線通信部３０は、例えばＶＬＡＮ（Virtual  Local  Area  Network）などの技術を用いて、仮想的にネットワークを分離する機能を有する。図２では、仮想マシン１１、１２、１３にそれぞれ対応し、ＳＳＩＤ（Service  Set  Identifier）がそれぞれＡｃｏｍｐａｎｙ、Ｂｃｏｍｐａｎｙ、ＣｃｏｍｐａｎｙであるＶＬＡＮが設定された例が示されている。
【００２３】
このようにネットワークＩ／Ｆを分離することにより、セキュリティを高めることができる。なおネットワークを分離する方法はＶＬＡＮに限られるものではなく、ＶＸＬＡＮ（Virtual  eXtensible  Local  Area  Network）などの他の任意の方法を適用できる。
【００２４】
図３−１から図３−４は、仮想化の方式の例を示す図である。図２のような仮想化環境を実現する方式は任意であるが、例えば図３−１から図３−４に示す方式を適用できる。図３−１から図３−４は、それぞれ、ホストＯＳ（オペレーティングシステム）型、ハイパーバイザ型、コンテナ型、および、ハイパーバイザ・コンテナ型、の仮想化の方式を示す。
【００２５】
ホストＯＳ型仮想化とハイパーバイザ型仮想化は、ホストＯＳ上の仮想化ソフトウェアまたはハイパーバイザ上で仮想マシンを作成し、仮想マシン上でホストＯＳの同一のＯＳまたは、ホストＯＳとは別のゲストＯＳを動かすことができる。コンテナ型仮想化とハイパーバイザ・コンテナ型仮想化では、コンテナ上のゲストＯＳとしてホストＯＳを利用する。このため、ゲストＯＳとホストＯＳが同じ場合にはＣＰＵ負荷やメモリ使用量などを削減することができる。
【００２６】
仮想マシンやコンテナは、それぞれ物理マシンのストレージに相当するものとして、ディスクイメージをファイルで保存することが多い。ホストＯＳ型仮想化とハイパーバイザ型仮想化では、ゲストＯＳとアプリケーションを含んだ形で保存される。一方、コンテナ型仮想化とハイパーバイザ・コンテナ型仮想化では、ゲストＯＳはホストＯＳを使用するため、ゲストＯＳ自体はイメージには含まれない。仮想マシンであってもコンテナであっても、上記のようなディスクイメージは、ゲストＯＳを実行するためのイメージである。このため以下では、ＯＳが含まれているかいないかに係わらず、これらのディスクイメージをゲストＯＳ実行イメージと呼ぶこととする。ゲストＯＳ実行イメージが、車両２００（端末装置）と無線通信するプログラムを実行するためのプログラム情報に相当する。なお、ゲストＯＳ実行イメージには、ゲストＯＳやアプリケーションのほかに、ライブラリや認証情報、各種設定情報など、一般的に仮想化においてディスクイメージに保存される情報を含んでいる。また、アプリケーションやライブラリは、複数のものを保存することができる。アプリケーションは、例えば、後述するデータ配信を行うサーバアプリケーション以外に、ＤＨＣＰサーバアプリケーションや、ＲＡ（Ｒｏｕｔｅｒ  Ａｄｖｅｒｔｉｓｅｍｅｎｔ）サーバアプリケーションを含んでもよい。
【００２７】
以下、図１の各装置のハードウェア構成、および、機能構成について説明する。
【００２８】
図４は、サーバ３００および４００のハードウェア構成例を示す図である。サーバ３００および４００は、ＣＰＵ（Central  Processing  Unit）５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ（Random  Access  Memory）５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、データを記憶するストレージ５５と、各部を接続するバス６１を備えている。
【００２９】
なお、各サーバ３００は、物理的に単一の装置で構成してもよいし、物理的に複数の装置で構成してもよい。また、複数のサーバ３００、および、サーバ４００のうち一部または全部を、物理的に単一の装置で構成してもよい。
【００３０】
図５は、サーバ３００の機能構成例を示すブロック図である。サーバ３００は、通信部３０１と、通信制御部３０２と、判定部３０３と、選択部３０４と、接続情報送信部３０５と、ゲストＯＳ制御部３０６と、実行情報配信部３０７と、データ配信部３０８と、通知処理部３０９と、生成部３１０と、認証処理部３１１と、ＡＰ情報記憶部３２１と、実行情報記憶部３２２と、状態記憶部３２３と、配信データ記憶部３２４と、認証情報記憶部３２５と、車両情報記憶部３２６と、を備えている。
【００３１】
通信部３０１、通信制御部３０２、判定部３０３、選択部３０４、接続情報送信部３０５、ゲストＯＳ制御部３０６、実行情報配信部３０７、データ配信部３０８、通知処理部３０９、生成部３１０、および、認証処理部３１１は、例えば、ＣＰＵなどの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、ＩＣ（Integrated  Circuit）などのハードウェアにより実現してもよいし、ソフトウェアおよびハードウェアを併用して実現してもよい。
【００３２】
各記憶部（ＡＰ情報記憶部３２１、実行情報記憶部３２２、状態記憶部３２３、配信データ記憶部３２４、認証情報記憶部３２５、車両情報記憶部３２６）は、ＳＳＤ（Solid  State  Drive）、ＨＤＤ（Hard  Disk  Drive）、光ディスク、メモリカード、ＲＡＭ（Random  Access  Memory）などの一般的に利用されているあらゆる記憶媒体により構成することができる。また、各記憶部の一部または全部を共通の記憶媒体により構成してもよい。
【００３３】
通信部３０１は、インターネットと接続され、他のサーバ３００、サーバ４００、ＡＰ１００、車両２００、セルラの基地局６００などの外部装置と通信するためのインタフェースである。通信制御部３０２は、通信部３０１を制御して情報（フレームなど）を送受信する。
【００３４】
判定部３０３は、車両２００から受信した接近情報を参照し、当該車両２００が、ファームウェアをダウンロードまたはアップロードまたは状態情報通知送信対象であるか、すなわち、ファームウェアの配信、ファームウェアのアップロード受信、更新状態通知を送受信するためのプログラムをＡＰ１００で実行する対象であるかを判定する。ファームウェアを配信するためのプログラムは、例えば、ゲストＯＳおよび配信アプリケーションである。これらのプログラムは、上記のように仮想化技術によりＣＰＵ、メモリ、ネットワーク、ストレージなどのリソースを独立に使用できるように分離して実行する仮想マシンやコンテナで実行される。以下では、ファームウェアを配信するためのプログラムを、単にゲストＯＳという場合がある。
【００３５】
選択部３０４は、ゲストＯＳを実行するＡＰ１００を選択する。接続情報送信部３０５は、車両２００に接続情報を送信する。ゲストＯＳ制御部３０６は、ＡＰ１００に対してゲストＯＳの起動や停止を指示することにより、ゲストＯＳの実行を制御する。
【００３６】
実行情報配信部３０７は、ＡＰ１００に実行情報を配信する。実行情報は、ＡＰ１００で実行されるゲストＯＳを実行するための情報である。
【００３７】
データ配信部３０８は、ＡＰ１００のゲストＯＳからの要求により配信データ記憶部に記憶されている配信データなどを含む配信情報の送信処理を行う。通知処理部３０９は、車両２００からダウンロード完了時やアップデート完了時に送信される更新状態通知を受信して処理する。
【００３８】
図６は、データの配信方法を説明するための図である。図６に示すように、ファームウェアなどの配信データは固定長の複数の部分データ（チャンク）に分割されて配信される。また、分割された配信データは、各種情報（データ取得リスト、検証データなど）とともに配信される。配信データの分割処理や、ゲストＯＳ用検証データ、データ取得リスト、車両用検証データ、署名は、各社の管理者が配信データをサーバ３００にアップロードした際にサーバで作成してもよいし、予めサーバにアップロードする前に作成しておいてもよい。
【００３９】
サーバ３００からＡＰ１００に対しては、ゲストＯＳ用検証データ、データ取得指示リスト、および、データ取得リストが配信される。ＡＰ１００から車両２００に対しては、データ取得リスト、車両用検証データ、および、データ取得ステータスが配信される。
【００４０】
ゲストＯＳ用検証データ、および、車両用検証データは、データを受信した装置（ＡＰ１００、車両２００）が、受信したデータの正当性を検証するためのデータである。例えば、各チャンクから算出されるハッシュ値を検証データとして用いることができる。ゲストＯＳ用検証データと車両用検証データは異なる算出方法で計算される。それぞれの計算方法は、予めサーバ３００とＡＰ１００の間およびサーバで共有するか、または計算方法を配信して共有する。検証データはハッシュ値に限られるものではなく、データを検証できる情報であればあらゆる情報を用いることができる。
【００４１】
データ取得指示リストは、データ（チャンク）を取得する順序（優先度）を指示する情報である。例えばＡＰ１００は、データ取得指示リストで指定された優先度が高いデータ（チャンク）から順にデータを取得する。
【００４２】
データ取得リストは、各データ（チャンクと署名）の取得先を示す情報である。取得先を示す情報は任意であるが、例えばＵＲＩ（Uniform  Resource  Identifier）を用いることができる。１つのデータに対して複数の取得先を記載することもできる。
【００４３】
データ取得ステータスは、配信元となるＡＰ１００上のゲストＯＳで動作する配信アプリケーションが、該当するデータ（チャンク）を取得しているか否かなどの取得状態を示す情報である。移動等に応じて配信元となるＡＰ１００が変更された場合は、変更後のＡＰ１００上のゲストＯＳで動作する配信アプリケーションからデータ取得ステータスを取得する。
【００４４】
図５に戻り、生成部３１０は、配信データの配信を準備するための配信準備情報を生成する。配信準備情報は、ゲストＯＳへの配信に用いるゲストＯＳ用準備情報と、車両２００への配信に用いる車両用準備情報と、を含む。
【００４５】
認証処理部３１１は、車両２００およびＡＰ１００との認証処理を行う。
【００４６】
ＡＰ情報記憶部３２１は、例えば、ＡＰ１００のメーカーと製造番号から生成されたＩＤごとに、位置情報（経度情報、緯度情報など）、および、ＩＰアドレスなどを記憶する。ＡＰ情報記憶部３２１は、図５に示すようにサーバ３００でそれぞれ情報を記憶して管理してもよいし、例えば、各社で共通して使えるＡＰ情報データベースを提供するサーバからデータを取得してキャッシュするようにして実現してもよい。
【００４７】
実行情報記憶部３２２は、ゲストＯＳを実行するためのイメージ（ゲストＯＳ実行イメージ）、ＡＰ１００でゲストＯＳと接続されるネットワークの設定を行うための情報、および、ゲストＯＳ用準備情報を記憶する。
【００４８】
状態記憶部３２３は、ゲストＯＳごとの状態（起動状態や配信アプリケーションのキャッシュ状態）などを記憶する。配信データ記憶部３２４は、配信データ（ファームウェアデータなど）および検証データなどを記憶する。認証情報記憶部３２５は、車両２００、ＡＰ１００、および、ゲストＯＳ上で動作する配信アプリケーションとの間で認証を行うための認証情報（証明書データ、秘密鍵、公開鍵）などを記憶する。認証情報記憶部３２５は、他の記憶部より安全に情報を記憶するように構成してもよい。
【００４９】
車両情報記憶部３２６は、各車両２００のダウンロード状態、および、アップデート状態を記憶する。
【００５０】
図７は、ＡＰ１００のハードウェア構成例を示す図である。ＡＰ１００は、通信アダプタ６１０、６２０、６３０、６４０と、メモリ６５１と、ＮＶＭｅ（Non-Volatile  Memory  Express）コントローラ６５２と、ＮＡＮＤフラッシュメモリコントローラ６５３と、ＮＡＮＤフラッシュメモリ６５４と、ＣＰＵ６５５と、ＧＰＳ（Global  Positioning  System）６５６と、各部を接続するバス６５８と、を備えている。
【００５１】
通信アダプタ６１０は、例えばＩＥＥＥ８０２．１１ｐに準拠するアダプタである。通信アダプタ６１０は、物理層の制御を行うＰＨＹ６１１と、メディアアクセス制御を行うＭＡＣ６１２と、を備える。
【００５２】
通信アダプタ６２０は、例えばＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘに準拠するアダプタである。通信アダプタ６２０は、物理層の制御を行うＰＨＹ６２１と、メディアアクセス制御を行うＭＡＣ６２２と、を備える。
【００５３】
通信アダプタ６３０は、例えばセルラ方式に準拠した通信を行うアダプタである。
【００５４】
通信アダプタ６４０は、例えばギガビットイーサネットに準拠するアダプタである。通信アダプタ６４０は、物理層の制御を行うＰＨＹ６４１と、メディアアクセス制御を行うＭＡＣ６４２と、を備える。
【００５５】
ＮＡＮＤフラッシュメモリコントローラ６５３は、ＮＡＮＤフラッシュメモリ６５４に対するアクセスを制御する。ＮＶＭｅコントローラ６５２は、メモリ（ＮＡＮＤフラッシュメモリ６５４）に対するＮＶＭｅに準拠したアクセスを制御する。
【００５６】
ＧＰＳ６５６は、複数のＧＰＳ衛星から信号を受信し、自装置の位置情報を取得する。
【００５７】
図８は、ＡＰ１００の機能構成例を示すブロック図である。ＡＰ１００は、通信部７０１、７０２、７０３と、位置取得部７０４と、ホストＯＳ／ハイパーバイザ実行部７１０と、ストレージ７５１と、を備えている。
【００５８】
ホストＯＳ／ハイパーバイザ実行部７１０は、例えば、ＣＰＵ６５５などの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現される。
【００５９】
ストレージ７５１は、ＳＳＤ、ＨＤＤ、光ディスク、メモリカード、ＲＡＭなどの一般的に利用されているあらゆる記憶媒体により構成することができる。図７の例では、例えばメモリ６５１およびＮＡＮＤフラッシュメモリ６５４が、ストレージ７５１に適用できる。
【００６０】
通信部７０１は、車両２００と通信を行って配信データを送受信する。例えば通信部７０１は、通信アダプタ６２０（高速通信用無線ＬＡＮアダプタ）、または、通信アダプタ６１０（車両通信用無線ＬＡＮアダプタ）のサービスチャネル（ＳＣＨ）による通信によって実現される。
【００６１】
通信部７０２は、インターネットバックボーン（インターネット５００）と接続され、サーバ３００およびサーバ４００と通信する。例えば通信部７０２は、通信アダプタ６３０、および、通信アダプタ６４０によって実現される。
【００６２】
通信部７０３は、車両２００との間で、接近情報および接続情報などの情報を送受信する。通信部７０３は、通信アダプタ６２０、または、通信アダプタ６１０の制御チャネル（ＣＣＨ）による通信によって実現される。
【００６３】
位置取得部７０４は、ＡＰ１００の位置情報を取得する。位置取得部７０４は、例えばＧＰＳ６５６により実現される。
【００６４】
ホストＯＳ／ハイパーバイザ実行部７１０は、通信制御部７１１、７１２、７１３と、取得制御部７１４と、検知部７１５と、設定部７１６と、ブリッジ処理部７２１、７２２と、実行部７３１と、記憶制御部７３２と、実行情報送受信部７３３と、実行制御部７３４と、ストレージ制御部７３５と、認証処理部７３６と、を備えている。
【００６５】
通信制御部７１１、通信制御部７１２、および、通信制御部７１３は、それぞれ通信部７０１、７０２、および、７０３を制御してデータ（フレームなど）を送受信する。
【００６６】
取得制御部７１４は、位置取得部７０４を制御する。検知部７１５は、通信部７０３に車両２００が接続し、接近情報を送信してきたことを検知する。
【００６７】
ブリッジ処理部７２１は、ＯＳＩ参照モデルのデータリンク層で、通信制御部７１１との通信を転送する。ブリッジ処理部７２２は、ＯＳＩ参照モデルのデータリンク層で、通信制御部７１２との通信を転送する。
【００６８】
実行部７３１は、ゲストＯＳ実行イメージ（ゲストＯＳ、配信アプリケーションなど）を実行する。実行部７３１は、実行制御部７３４により実行されているゲストＯＳ（および配信アプリケーション）自体を表すとも解釈できる。ゲストＯＳが複数実行される場合は、実行部７３１が複数存在する。実行制御部７３４は、サーバ３００から受信した実行情報に基づきゲストＯＳを実行させる。
【００６９】
実行情報送受信部７３３は、実行情報を送受信する。実行情報送受信部７３３は、ゲストＯＳ実行イメージ（実行情報に含まれる）を受信する受信部に相当する。本実施例では受信機能のみを使うが、後述するようにゲストＯＳ実行イメージを送信する送信部にもなり得る。設定部７１６は、通信制御部７１１、通信制御部７１２、ブリッジ処理部７２１、および、ブリッジ処理部７２２に対してネットワークを設定する。例えば設定部７１６は、ゲストＯＳが、当該ゲストＯＳに対応する無線ネットワークを用いて車両２００と通信するように、通信制御部７１１等による無線ネットワークを設定する。
【００７０】
認証処理部７３６は、サーバ３００との通信においてサーバ認証とクライアント認証を行う。ストレージ制御部７３５は、ストレージ７５１を制御して読み書きを行う。
【００７１】
記憶制御部７３２は、以前に応答のあった接続情報をキャッシュ記憶部に記憶する。キャッシュ記憶部は、例えばメモリ６５１およびストレージ７５１により実現できる。
【００７２】
図９は、ＡＰ１００における仮想ネットワークの構成例を示す図である。図９は、図２のようにＳＳＩＤがそれぞれＡｃｏｍｐａｎｙ、Ｂｃｏｍｐａｎｙ、Ｃｃｏｍｐａｎｙである３つの仮想ネットワークを構成する例を示す。なお図９では通信部７０１およびブリッジ処理部７２１を例に説明するが、例えば通信部７０２およびブリッジ処理部７２２なども同様の方法で仮想ネットワークを構成できる。
【００７３】
通信部７０１とブリッジ処理部７２１は、ＶＬＡＮをサポートし、ＶＬＡＮ  ＩＤ（ＶＬＡＮタグ）を含んだフレームを送受信するトランクポートと、特定のＶＬＡＮ  ＩＤに属したアクセスポートを作成することができる。この例では、通信部７０１のトランクポート（ｗｌａｎ０）とブリッジ処理部のトランクポート（ｂｒ０）が接続されている。通信部７０１は、ＶＬＡＮ  ＩＤ１０１に属したアクセスポート（ｗｌａｎ０．１０１）によって実現される仮想通信部８０１−１、ＶＬＡＮ  ＩＤ１０２に属したアクセスポート（ｗｌａｎ０．１０１）によって実現される仮想通信部８０１−２、ＶＬＡＮ  ＩＤ１０３に属したアクセスポート（ｗｌａｎ０．１０１）によって実現される仮想通信部８０１−３の３つの仮想通信部を備えるように構成される。またブリッジ処理部７２１は、ＶＬＡＮ  ＩＤ１（デフォルトＶＬＡＮ）に属したアクセスポート（ｂｒ０．１）によって実現されるＶＬＡＮ処理部８２０と、ＶＬＡＮ  ＩＤ１０１に属したアクセスポート（ｂｒ０．１０１）によって実現されるＶＬＡＮ処理部８２１−１、ＶＬＡＮ  ＩＤ１０２に属したアクセスポート（ｂｒ０．１０２）によって実現されるＶＬＡＮ処理部８２１−２、ＶＬＡＮ  ＩＤ１０３に属したアクセスポート（ｂｒ０．１０３）によって実現されるＶＬＡＮ処理部８２１−３を備えるように構成される。ＶＬＡＮ処理部８２１−１、８２１−２、８２１−３が、それぞれ仮想通信部８０１−１、８０１−２、８０１−３に接続される。
【００７４】
実行部７３１−１、７３１−２、７３１−３は、例えば図２の仮想マシン１１、１２、１３に対応する、３つのゲストＯＳである。実行部７３１−１、７３１−２、７３１−３は、それぞれ、仮想通信制御部８３１−１、８３１−２、８３１−３を備えている。仮想通信制御部８３１−１、８３１−２、８３１−３は、それぞれＶＬＡＮ処理部８２１−１、８２１−２、８２１−３に接続される。例えば、ＳＳＩＤ（ＥＳＳＩＤ）がＡｃｏｍｐａｎｙとされたＥＳＳでの通信フレームは、仮想通信部８０１−１によって、通信部７０１のトランクポートから出力されるときにＶＬＡＮタグ（ＶＬＡＮ  ＩＤ１０１）が付加される。ブリッジ処理部７２１は、ＶＬＡＮタグ（ＶＬＡＮ  ＩＤ１０１）が付加されたフレームを受信し、ＶＬＡＮ  ＩＤ１０１のアクセスポートであるＶＬＡＮ処理部８２１−１にＶＬＡＮタグを除去して出力する。ＶＬＡＮタグが除去されたフレームは、仮想通信制御部８３１−１に出力される。仮想通信制御部８３１−１から出力される場合は逆の処理が行われる。このようにして、異なるＶＬＡＮ  ＩＤが設定されたネットワークは分離され、ＥＳＳと対応する仮想マシンが独立したネットワークによって接続され、関係のないＥＳＳや関係のない仮想マシンのネットワークの分離が実現できる。
【００７５】
図１０は、実行部７３１のさらに詳細な機能構成の一例を示すブロック図である。図１０に示すように実行部７３１は、仮想通信制御部８３１、９０１と、状態通知部９０２と、配信データ処理部９０３と、認証処理部９０４と、記憶制御部９０５と、検証部９０６と、仮想ストレージ制御部９０７と、設定部９０８と、を備えている。
【００７６】
仮想通信制御部８３１は、ブリッジ処理部７２１と接続され、ＶＬＡＮやＶＸＬＡＮなどにより仮想的に独立したネットワークを構成する。仮想通信制御部８３１は、この機能により、通信部７０１でゲストＯＳ用に構成されるＥＳＳ（Extended  Service  Set）と隔離されたネットワークで接続され、車両２００と通信する。
【００７７】
仮想通信制御部９０１は、ＡＰ１００のブリッジ処理部７２２と接続され、ＡＰ１００の通信部７０２でサーバ３００と通信する。
【００７８】
設定部９０８は、ＡＰ１００のゲストＯＳ実行制御部７３４から伝達されたゲストＯＳのネットワーク設定情報から仮想通信制御部８３１と、仮想通信制御部９０１のネットワーク設定を行う。また、例えば、ネットワーク設定情報にＤＨＣＰやＲＡによるアドレス配布のための情報が含まれる場合には、起動後、ＤＨＣＰサーバやＲＡサーバの機能を提供し、仮想通信制御部８３１や仮想通信制御部９０１からの要求に応答し、ＩＰアドレス、ネットマスク、ＤＮＳサーバ情報などを配布する。
【００７９】
記憶制御部９０５は、車両２００との通信の認証において使用する認証情報をキャッシュ記憶部などに記憶する。キャッシュ記憶部は、例えばメモリ６５１およびストレージ７５１により実現できる。ストレージ７５１をキャッシュ記憶部とする場合は、記憶制御部９０５は、仮想ストレージ制御部９０７を介して、ストレージ７５１と接続されてもよい。
【００８０】
認証処理部９０４は、キャッシュ記憶部やストレージに記憶されている認証情報を使用して、車両２００やサーバ３００との通信の認証処理を行う。
【００８１】
配信データ処理部９０３は、仮想通信制御部９０１を介してサーバ３００や他のＡＰ１００などから配信情報を取得する。配信データ処理部９０３は、仮想通信制御部８３１を介して車両２００へのデータ配信や車両２００からのデータアップロードの受信処理を行う。
【００８２】
検証部９０６は、ゲストＯＳ用検証データを用いて、配信されたデータやアップロードされたデータの検証処理を行う。
【００８３】
仮想ストレージ制御部９０７は、ＡＰ１００のストレージ制御部７３５と接続され、ゲストＯＳにおけるストレージ機能を提供する。例えば、仮想ストレージ制御部は、ＡＰ１００のストレージ制御部７３５を介して、ＡＰ１００のストレージ７５１にファイルとして保存されたディスクイメージをマウントしてアクセスする。
【００８４】
状態通知部９０２は、仮想通信制御部８３１を介して車両２００から更新状態通知を受信し、仮想通信制御部９０１を介してサーバ３００に送信する。
【００８５】
仮想通信制御部８３１と、仮想通信制御部９０１と、仮想ストレージ制御部９０７は、例えばゲストＯＳによって実現される。その他の機能部（状態通知部９０２、配信データ処理部９０３、認証処理部９０４、記憶制御部９０５、検証部９０６）は、例えば配信アプリケーションによって実現される。
【００８６】
図１１は、車両２００のハードウェア構成例を示す図である。車両２００は、通信アダプタ１０１０、１０２０、１０３０と、メモリ１０５１と、ＮＶＭｅコントローラ１０５２と、ＮＡＮＤフラッシュメモリコントローラ１０５３と、ＮＡＮＤフラッシュメモリ１０５４と、ＣＰＵ１０５５と、ＧＰＳ１０５６と、各部を接続するバス１０５８と、を備えている。
【００８７】
通信アダプタ１０１０は、例えばＩＥＥＥ８０２．１１ｐに準拠するアダプタである。通信アダプタ１０１０は、物理層の制御を行うＰＨＹ１０１１と、メディアアクセス制御を行うＭＡＣ１０１２と、を備える。
【００８８】
通信アダプタ１０２０は、例えばＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘに準拠するアダプタである。通信アダプタ１０２０は、物理層の制御を行うＰＨＹ１０２１と、メディアアクセス制御を行うＭＡＣ１０２２と、を備える。
【００８９】
通信アダプタ１０３０は、例えばセルラ方式に準拠した通信を行うアダプタである。このように、車両２００は、ＡＰ１００の通信アダプタ６１０、６２０、６３０に相当する通信アダプタ１０１０、１０２０、１０３０を備え、通信アダプタ６４０に相当するアダプタを備えない点が、ＡＰ１００のハードウェア構成（図７）と異なる。
【００９０】
メモリ１０５１、ＮＶＭｅコントローラ１０５２、ＮＡＮＤフラッシュメモリコントローラ１０５３、ＮＡＮＤフラッシュメモリ１０５４、ＣＰＵ１０５５、ＧＰＳ１０５６、および、バス１０５８は、ＡＰ１００のメモリ６５１、ＮＶＭｅコントローラ６５２、ＮＡＮＤフラッシュメモリコントローラ６５３、ＮＡＮＤフラッシュメモリ６５４、ＣＰＵ６５５、ＧＰＳ６５６、および、バス６５８と同様である。
【００９１】
図１２は、車両２００の機能構成例を示すブロック図である。車両２００は、通信部１１０１、１１０２と、位置取得部１１０３と、プログラム実行部１１１０と、ストレージ１１５１と、経路情報生成部１１５２と、を備えている。
【００９２】
プログラム実行部１１１０は、例えば、ＣＰＵ１０５５などの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現される。
【００９３】
ストレージ１１５１は、ＳＳＤ、ＨＤＤ、光ディスク、メモリカード、ＲＡＭなどの一般的に利用されているあらゆる記憶媒体により構成することができる。図１１の例では、例えばメモリ１０５１およびＮＡＮＤフラッシュメモリ１０５４が、ストレージ１１５１に適用できる。ストレージ１１５１は、例えば、車情報、証明書などの認証情報、および、配信情報などの様々な情報を記憶する。例えば、他の装置とストレージを共用してもよい。
【００９４】
通信部１１０１は、ＡＰ１００と通信を行う。例えば通信部１１０１は、通信アダプタ１０２０（高速通信用無線ＬＡＮアダプタ）、または、通信アダプタ１０１０（車両通信用無線ＬＡＮアダプタ）のサービスチャネル（ＳＣＨ）による通信によって実現される。
【００９５】
通信部１１０２は、インターネットバックボーン（インターネット５００）と接続され、サーバ３００およびサーバ４００と通信する。例えば通信部１１０２は、通信アダプタ１０２０、通信アダプタ１０１０の制御チャネル（ＣＣＨ）による通信、または、通信アダプタ１０３０によって実現される。
【００９６】
位置取得部１１０３は、車両２００の位置情報を取得する。位置取得部１１０３は、例えばＧＰＳ１０５６により実現される。経路情報生成部１１５２は、カーナビゲーションシステム等で実現され、車両２００の移動経路（走行経路）を示す経路情報を生成する。
【００９７】
プログラム実行部１１１０は、通信制御部１１１１、１１１２と、取得制御部１１１３と、送信部１１１４と、受信部１１１５と、署名検証部１１２１と、配信データ処理部１１２２と、配信データ検証部１１２３と、許可設定部１１２４と、スケジュール部１１２５と、アップデート実行部１１２６と、状態通知部１１２７と、ストレージ制御部１１２８と、認証処理部１１２９と、経路情報取得部１１３０と、設定部１１３１と、を備えている。
【００９８】
通信制御部１１１１、１１１２は、それぞれ、通信部１１０１、１１０２を制御してデータ（フレームなど）を送受信する。
【００９９】
取得制御部１１１３は、位置取得部１１０３を制御する。送信部１１１４は、通信制御部１１１２と通信部１１０２を介してサーバ３００に接近情報を送信する。受信部１１１５は、通信部１１０２と通信制御部１１１２を介してサーバ３００から送信された接続情報を受信し、送信部１１１４、設定部１１３１、配信データ処理部１１２２、状態通知部１１２７、認証処理部１１２９に情報を伝達する。
【０１００】
署名検証部１１２１は、ファームウェアのダウンロードが全て完了した場合にサーバ３００のデジタル署名を検証する。
【０１０１】
配信データ処理部１１２２は、通信部１１０１および通信制御部１１１１を介してＡＰ１００上のゲストＯＳで動作する配信アプリケーションと通信を行い、配信データのダウンロードやアップロードを行う。配信データ検証部１１２３は、配信されたデータを検証する。
【０１０２】
許可設定部１１２４は、署名検証部１１２１による検証が成功した場合に、当該ファームウェアによるアップデートの実施を許可する情報をストレージ１１５１に設定する。スケジュール部１１２５は、アップデート実行をスケジュールする。アップデート実行部１１２６は、スケジュールに従いアップデート処理を実行する。
【０１０３】
状態通知部１１２７は、通信部１１０１または通信部１１０２を介してファームウェアのダウンロード完了やアップデートの完了またはアップデートの失敗をサーバ３００に通知する。
【０１０４】
ストレージ制御部１１２８は、ストレージ１１５１を制御して各部からの読み書きを制御する。認証処理部１１２９は、ストレージ１１５１に保存された認証情報を用いて認証処理を行う。経路情報取得部１１３０は、経路情報生成部１１５２から経路情報を取得する。設定部１１３１は、受信部１１１５で受信した接続情報に含まれるネットワーク設定情報から通信部１１０１のネットワーク設定を行う。
【０１０５】
なお、通信部１１０１と通信部１１０２は１つの通信アダプタで構成される通信部であってもよく、その場合、通信制御部１１１１と通信制御部１１１２も１つの通信制御部であってもよい。
【０１０６】
次に、このように構成された本実施形態の通信システムによるデータの配信処理について図１３を用いて説明する。図１３は、本実施形態における配信処理の全体の流れの一例を示すシーケンス図である。
【０１０７】
車両２００は、接近したＡＰ１００（ＡＰ１００ａ）またはセルラの基地局６００に対して接近情報を送信する（ステップＳ１０１）。図１４は、接近情報のデータ構造の一例を示す図である。
【０１０８】
図１４に示すように、接近情報は、通知先情報、車両情報、位置情報、および、経路情報を含む。通知先情報は、接近情報を通知する宛先となるサーバ３００を特定するための情報である。図１４に示すように、例えばサーバ３００のＵＲＬ（Uniform  Resource  Locator）を通知先情報として用いることができる。例えば、ＡＰ１０１ａが車両２００から接近情報を受信し、通知先情報で指定されたサーバ３００へＨＴＴＰＳで接続して残りの接近情報を送信してもよいし、車両２００が直接サーバ３００へ通知してもよい。後者の場合、通知先情報はＨＴＴＰＳで通信する際のＩＰヘッダの宛先として格納される。
【０１０９】
車両情報は、自車両の属性等を含む情報である。車両情報は、例えば、メーカー、車種、製造番号、および、ファームウェア情報を含む。ファームウェア情報は、ファームウェアの種類を特定する情報（部品コード）、ファームウェアバージョン、および、ダウンロード済みデータ情報を含む。ダウンロード済みデータ情報は全てのチャンクの数を表すマスク（長さでもよい）とダウンロード済みを１とした場合の各チャンクデータのビットマップで示される。部品コードは、ファームウェアが車両２００のいずれの部品に対応するか示す情報である。部品コードは、例えばエンジン制御ユニットのファームウェアであるか、カーナビゲーションシステムのファームウェアであるかを識別するために利用される。部品コードには部品の製造メーカーの情報を含んでもよい。このように複数のファームウェアが存在する場合は、ファームウェア情報も複数作成されうる。
【０１１０】
位置情報は、少なくとも車両２００自身の位置情報を含む。ＡＰ１００の位置情報は、ＡＰ１００からサーバ３００に接近情報を送信するときに付加されてもよい。ＡＰ１００の位置が固定されており、サーバ３００がＡＰ１００の位置を予め把握している場合などは、ＡＰ１００の位置情報を接近情報に含めなくてもよい。
【０１１１】
経路情報は、カーナビゲーションシステム等で決定される経路情報が設定される。カーナビから取得できない場合など経路情報は接近情報に含めなくてもよい。
【０１１２】
図１３に戻り、ＡＰ１００ａは、受信した接近情報を、通知先情報で指定された宛先（サーバ３００）に送信する（ステップＳ１０２）。サーバ３００は、接近情報を受信すると、接続情報をＡＰ１００ａまたはセルラの基地局６００に送信する（ステップＳ１０３）。ＡＰ１００ａまたはセルラの基地局６００は、受信した接続情報を車両２００に送信する（ステップＳ１０４）。なお接近情報からダウンロードもアップロードも更新情報も送信する必要がないと判断した場合、サーバ３００は、接続情報を送信しなくてもよいし、しばらく接近情報を送信させないことを通知するメッセージを送信してもよい。
【０１１３】
接続情報は、車両２００が配信データを送受信するときの接続先の情報を含む。以下に接続情報のデータ構造の一例を示す。例えば接続情報は、指示情報、車両用準備情報、認証情報、ネットワーク設定情報、および、ＡＰ情報を含む。接続情報は、ファームウェアごとにそれぞれの情報を含むようにしてもよい。その場合、どのファームウェアの情報であるかを伝達するための部品コードやバージョン情報を含んでもよい。
【０１１４】
指示情報は、データをダウンロードするか、アップロードするかを指示する情報である。車両用準備情報は、データ取得リスト取得先情報、車両用検証データ取得先情報、アップロード先情報、更新状態通知先情報、および、データ取得ステータス取得先情報を含む。
【０１１５】
データ取得リスト取得先情報は、データ取得リストの取得先を示す情報である。車両用検証データ取得先情報は、車両用検証データの取得先を示す情報である。アップロード先情報は、データのアップロード先を示す情報である。更新状態通知先情報は、更新状態通知の通知先を示す情報である。データ取得ステータス取得先情報は、データ取得ステータスの取得先を示す情報である。取得先、アップロード先、および、通知先を示す情報の形式は任意であるが、例えばＨＴＴＰＳでアクセスするためのＵＲＩを用いることができる。
【０１１６】
認証情報は、例えば、配信アプリケーションサーバ証明書と公開鍵を含んでもよい。認証を実行しない場合などは、接続情報に認証情報を含めなくてもよい。
【０１１７】
ネットワーク設定情報は、データの送受信に用いるネットワークの設定に必要な情報である。ネットワーク設定情報は、例えば、無線ネットワークを識別する識別情報（ＥＳＳＩＤ、ＢＳＳＩＤなど）、および、無線ＬＡＮセキュリティ情報（ＷＥＰ／ＷＰＡ／ＷＰＡ２などのパスフレーズなど）などを含む。またネットワーク設定情報は、ＩＰアドレスやネットマスク、プレフィックス長、ＤＮＳサーバアドレスなどのＤＮＳサーバ情報、ルーティング情報などを含んでもよいし、無線ＬＡＮ接続後にこれらの情報をＤＨＣＰサーバやＲＡサーバなどで設定できてもよい。ネットワーク設定情報を予め固定とする場合などは、接続情報にネットワーク設定情報を含めなくてもよい。予め固定とする場合、例えばＳＳＩＤは、メーカー、車種、製造番号（範囲指定ができる）、ファームウェア種別、および、ファームウェアバージョンの全部または一部を使用して生成できるようにしてもよい。
【０１１８】
ＡＰ情報は、通信するＡＰ１００に関する情報であり、例えば、接続可能範囲に入るまでの予測時間、および、接続可能範囲の位置情報などを含む。ＡＰ情報は、接続情報に含めなくてもよい。
【０１１９】
図１３に戻り、サーバ３００は、認証情報をＡＰ１００ｂに送信する（ステップＳ１０５）。ＡＰ１００ｂは、認証情報をサーバ３００に送信する（ステップＳ１０６）。これによりサーバ３００およびＡＰ１００ｂ間で認証処理が実行される。次に、サーバ３００は、実行情報、配信情報（ゲストＯＳ用配信情報）をＡＰ１００ｂに送信する（ステップＳ１０７、ステップＳ１０８）。なおＡＰ１００ｂは、車両２００が配信データを取得する取得先として選択されたＡＰ１００である。ＡＰ１００の選択方法は後述する。
【０１２０】
ここで、実行情報および配信情報のデータ構造の例について説明する。実行情報は、ゲストＯＳを実行するためのイメージ（ゲストＯＳ実行イメージ）、ネットワーク設定情報、および、ゲストＯＳ用準備情報を含む。
【０１２１】
ゲストＯＳを実行するためのイメージは、例えば仮想マシンイメージまたはコンテナイメージである。例えばコンテナ型ではホストＯＳを使用するため、不要な場合はゲストＯＳ自体のイメージは含まなくてもよい。
【０１２２】
ネットワーク設定情報は、例えば、通信部７０１のネットワーク設定情報、通信部７０２のネットワーク設定情報、および、ゲストＯＳのネットワーク設定情報を含む。
【０１２３】
通信部７０１のネットワーク設定情報は、作成する無線ＬＡＮネットワークで使用する無線ＬＡＮネットワークのパラメータとして、ＥＳＳのＩＤであるＥＳＳＩＤ、セキュリティ情報などを含む。セキュリティ情報は、例えば、ＷＥＰパスワード、および、ＷＰＡ／ＷＰＡ２のパスフレーズである。ネットワーク設定情報にさらにサーバ３００で指定したＢＳＳＩＤを含め、ＡＰに設定できるように構成してもよい。
【０１２４】
通信部７０２のネットワーク設定情報は、例えば通信部７０２がギガビットイーサネット通信アダプタ（通信アダプタ６４０）によって実現されていれば、ＶＬＡＮやＶＸＬＡＮの設定情報（ＶＬＡＮ／ＶＸＬＡＮ  ＩＤ）やＶＰＮの設定情報を含む。
【０１２５】
ゲストＯＳのネットワーク設定情報は、例えば、仮想通信制御部８３１のＩＰアドレス、ネットマスク、プレフィックス長、ＤＮＳ（Domain  Name  System）サーバ情報、および、ルーティング情報、仮想通信制御部８３１の通信で使用するアドレス範囲（ＤＨＣＰ（Dynamic  Host  Configuration  Protocol）で提供するＩＰアドレス範囲）、ＲＡ（Router  Advertisement）で広告するＩＰｖ６のプレフィックス情報、並びに、仮想通信制御部９０１のＩＰアドレス、ネットマスク、プレフィックス長、ＤＮＳサーバ情報、および、ルーティング情報を含む。
【０１２６】
ゲストＯＳ用準備情報は、例えば、認証情報取得先情報、データ取得リスト取得先情報、ゲストＯＳ用検証データ取得先情報、車両用検証データ取得先情報、アップロード先情報、更新状態通知先情報、データ取得ステータス取得先情報、および、データ取得指示リスト（データ取得指示リスト取得先情報でもよい）を含む。
【０１２７】
認証情報取得先情報は、認証情報の取得先を示す情報である。例えば、認証情報は車両２００のクライアント認証を行うための証明書や公開鍵を含む。ゲストＯＳ用検証データ取得先情報は、ゲストＯＳ用検証データの取得先を示す情報である。データ取得指示リスト取得先情報は、データ取得指示リストの取得先を示す情報である。
【０１２８】
ＡＰ１００は、実行情報に含まれるこれらの情報を用いることにより、通信部７０１、７０２等を介して配信データを送受信するようにゲストＯＳを実行させることができる。
【０１２９】
サーバ３００からＡＰ１００に送信される配信情報（ゲストＯＳ用配信情報）は、例えば、認証情報（車両２００のクライアント認証の公開鍵）、データ取得リスト、ゲストＯＳ用検証データ、車両用検証データ、データ取得指示リスト、および、配信データ（ファームウェアのチャンクやデジタル署名など）を含む。これらは準備情報に含まれる取得先にアクセスすることで取得できる。
【０１３０】
ＡＰ１００から車両２００に送信される配信情報（車両用配信情報）は、例えば、データ取得リスト、車両用検証データ、データ取得ステータス、および、配信データを含む。
【０１３１】
図１３に戻り、ＡＰ１００ｂは、認証情報を車両２００に送信する（ステップＳ１０９）。車両２００は、認証情報をＡＰ１００ｂに送信する（ステップＳ１１０）。これによりＡＰ１００ｂおよび車両２００間で認証処理が実行される。認証処理に成功すると、ＡＰ１００ｂは、車両２００に対して配信情報を送信する（ステップＳ１１１）。
【０１３２】
次に、サーバ３００においてセルラ網やＡＰ１００を介して車両２００から接近情報が送られた場合の処理について説明する。図１５は、この処理の一例を示すフローチャートである。
【０１３３】
車両２００から送信された接近情報は、セルラ網の基地局６００やＡＰ１００を介して接近情報に含まれる通知先情報に指定されたサーバ３００に送信される。
【０１３４】
サーバ３００では、通信部３０１と通信制御部３０２を介して判定部３０３で接近情報が受信される。判定部３０３は、ゲストＯＳを起動して配信を行うためのＡＰ１００を選択するため、選択部３０４に接近情報を通知してＡＰ１００を選択させる。
【０１３５】
ＡＰ情報記憶部３２１はＡＰ１００の位置情報やＩＰアドレスなどを記憶している。選択部３０４は、与えられた接近情報に含まれる車両２００やＡＰ１００の位置情報、接近情報の経路情報が含まれていればその経路情報、および、ＡＰ情報記憶部３２１に記憶されている各ＡＰ１００の位置情報などを参照して、ゲストＯＳを起動するＡＰ１００を選択する（ステップＳ２０１）。選択部３０４による選択方法の詳細は後述する。
【０１３６】
選択部３０４により、ゲストＯＳを起動するＡＰ１００が選択されると、その結果は判定部３０３に通知される。選択した結果には、選択されたＡＰのＩＤや位置情報、ＩＰアドレスなどの情報が含まれる。判定部３０３は、接近情報を送信した車両２００が処理対象であるかを判定する（ステップＳ２０２）。例えば判定部３０３は、車両２００が、ファームウェアダウンロード指示対象であるか、ファームウェアアップロード指示対象であるか、または、更新状態通知送信動作対象であるか、を判定する。判定部３０３は、例えば以下の情報を参照して判定を行う。
・接近情報に含まれる車両情報
・配信データ記憶部３２４に記憶されるファームウェアのデータ
・車両情報記憶部３２６に記憶される車両情報
・ＡＰ１００の選択結果
・状態記憶部３２３に記憶される、選択されたＡＰ１００における配信データの保持状況
【０１３７】
例えば、配信データ記憶部３２４に保存されている該当車両２００に適用可能なファームウェアの最新バージョン番号が、接近情報に含まれる車両情報のファームウェアバージョン番号よりも大きく、かつ、接近情報の車両情報に含まれるダウンロード済みデータ情報が最新バージョンのファームウェアデータを全てダウンロード完了していることを示していなければ、判定部３０３は、その車両２００はファームウェアダウンロード指示対象であると判定する。
【０１３８】
また判定部３０３は、状態記憶部３２３から選択されたＡＰ１００のゲストＯＳにおけるファームウェアキャッシュ状況、接近情報の車両情報に含まれるファームウェアバージョン、および、ダウンロード済みデータ情報を参照し、選択されたＡＰ１００のゲストＯＳの配信している最新のファームウェアでチャンクが欠落している部分を、車両２００からアップロードできるかどうかを判定する。アップロードできる場合、判定部３０３は、当該車両２００がファームウェアアップロード指示対象であると判定する。このとき、判定部３０３は、該当しないＡＰ１００はゲストＯＳ起動の対象としないようにＡＰ１００の選択結果を修正する。
【０１３９】
また判定部３０３は、接近情報の車両情報のファームウェアバージョン、および、車両情報記憶部３２６に記憶されている現在のバージョン情報を参照し、両者が異なれば、当該車両２００が更新状態通知送信動作対象であると判定する。
【０１４０】
車両２００が、ダウンロード指示対象、アップロード指示対象、および、更新状態通知送信動作対象のいずれかであると判定されなかった場合（ステップＳ２０２：Ｎｏ）、処理が終了する。
【０１４１】
車両２００が処理対象であると判定された場合（ステップＳ２０２：Ｙｅｓ）、判定部３０３は、接近情報、ＡＰ１００の選択結果、および、判定部３０３の判定結果（指示情報）をゲストＯＳ制御部３０６に伝え、ゲストＯＳの起動を指示する（ステップＳ２０３）。ダウンロード指示対象またはアップロード指示対象である場合には、判定部３０３は、ダウンロードまたはアップロードするファームウェアとそのバージョンもゲストＯＳ制御部３０６に伝える。
【０１４２】
ゲストＯＳ制御部３０６は、判定部３０３からの指示を受けると、判定部３０３から伝えられた情報を生成部３１０に伝え、配信準備情報を生成するように指示する。
【０１４３】
生成部３１０は、指示に従い配信準備情報を生成する（ステップＳ２０４）。まず生成部３１０は、配信データ記憶部３２４と認証情報記憶部３２５から、配信準備情報に含めるデータを選択する。生成部３１０は、接近情報の車両情報に含まれる情報（メーカー、車種、製造番号、ファームウェア種別、ファームウェアバージョン）から、ファームウェアを配信するアプリケーションのサーバ証明書の秘密鍵、および、ファームウェアを受信する車両２００のクライアント証明書の公開鍵を探索する。生成部３１０は、これらの鍵にアクセスするための認証情報取得先情報をゲストＯＳ用準備情報に付加する。
【０１４４】
次に、生成部３１０は、配信データ記憶部３２４に保存されている各ファームウェアのデータ取得リスト（ファームウェアのチャンクデータと署名の取得先情報）、ゲストＯＳ用検証データ、および、車両用検証データを探索し、それらにアクセスするためのＵＲＩを取得し、データ取得リスト取得先情報と、ゲストＯＳ用検証データ取得先情報と、車両用検証データ取得先情報とを、ゲストＯＳ用準備情報に追加する。なお、データ取得リストは、例えば、サーバ３００の取得先を他のＡＰ１００で動作するゲストＯＳから取得するようにＡＰ１００のゲストＯＳごとに変更したものを配布してもよい。
【０１４５】
生成部３１０は、データ取得リスト取得先情報と、車両用検証データ取得先情報を車両用準備情報に書き込む。
【０１４６】
生成部３１０は、接近情報に含まれるダウンロード済みデータ情報、ＡＰ情報記憶部３２１に記憶されているＡＰ１００の位置情報、および、状態記憶部３２３に記憶されている各ゲストＯＳにおけるファームウェアのキャッシュ状態を参照し、そのＡＰ１００でキャッシュすべきファームウェアのチャンクを決定する。生成部３１０は、優先度によりダウンロード順序を定義したデータ取得指示リストをゲストＯＳごとに生成し、ゲストＯＳ用準備情報に追加する。ゲストＯＳ用準備情報は、同じチャンクデータの配信が見込まれるゲストＯＳのグループごとに生成してもよい。優先度の算出については後述する。アップロード指示対象の場合、および、更新状態通知送信動作対象の場合は、生成部３１０は、データ取得指示リストは空とするか、または、データ取得指示リストを送信しなくてもよい。
【０１４７】
生成部３１０は、データ取得ステータス取得先情報を生成し、ゲストＯＳ用準備情報と車両用準備情報に追加する。データ取得ステータス取得先情報は、各ＡＰ１００のゲストＯＳ上で実行される配信アプリケーションがファームウェアのいずれのチャンクをキャッシュしているかを確認するためのＵＲＩである。各ＡＰ１００には、このＵＲＩに対応するファイルが必要なわけではなく、このＵＲＩにアクセスしたら処理を行うようなプログラムであってもよい。
【０１４８】
生成部３１０は、配信準備情報の生成が完了したことをゲストＯＳ制御部３０６に伝え、生成したゲストＯＳ用準備情報と車両用準備情報を、ゲストＯＳ制御部３０６に送信する。
【０１４９】
実行情報記憶部３２２は、各ファームウェア配信を行うゲストＯＳを実行するためのイメージであるゲストＯＳ実行イメージと、それに対応するネットワーク設定情報を、ファイルとして予め記憶する。ゲストＯＳ制御部３０６は、配信するファームウェアに合わせたゲストＯＳ実行イメージと、ゲストＯＳ実行イメージに対応するネットワーク設定情報を選択し、さらに生成部３１０で生成したゲストＯＳ用準備情報を実行情報記憶部３２２にファイルとして保存する。
【０１５０】
これらの情報は、例えばＡＰ１００のＩＤとゲストＯＳのＩＤを組み合わせたＩＤによって管理される。ゲストＯＳのＩＤは例えば、メーカー、車種、ファームウェア種別、ファームウェアバージョンなどから生成される。ゲストＯＳ制御部３０６は、実行情報取得先情報を生成する。実行情報取得先情報は、生成された実行情報をＡＰ１００から要求するためのＵＲＩのリストである。このＵＲＩに対するデータ取得リクエストが実行情報配信部３０７で受信されると、実行情報配信部３０７は、選択されたゲストＯＳ実行イメージと、ネットワーク設定情報と、先程作成したゲストＯＳ用準備情報と、を選択されたＡＰ１００に送信する。配信処理が終わるとゲストＯＳ用準備情報のファイルは実行情報記憶部３２２から削除される。
【０１５１】
ゲストＯＳ制御部３０６は、これらの処理が終わると、指示情報、車両用準備情報、認証情報、ネットワーク設定情報、ＡＰ１００の位置情報を含む接続情報を、通信制御部３０２と通信部３０１を介して送信するように接続情報送信部３０５に指示し、車両２００に接続情報が送信される（ステップＳ２０５）。
【０１５２】
次にゲストＯＳ制御部３０６は、各ＡＰ１００に対してＨＴＴＰＳによる接続を行い、サーバ認証とクライアント認証を行う。この後、ゲストＯＳ制御部３０６は、実行情報取得先情報をＡＰ１００の実行制御部７３４に送信し、ＡＰ１００の実行情報送受信部７３３により実行情報をダウンロードさせ、ＡＰ１００の実行部７３１でゲストＯＳを実行させる。ゲストＯＳの実行処理が完了すると、ＡＰ１００の実行制御部７３４は、ゲストＯＳ実行処理が完了したことを示す処理完了通知を送信する。
【０１５３】
サーバ３００のゲストＯＳ制御部３０６は、処理完了通知を受信すると、起動状態になったこと、および、ゲストＯＳの停止時刻を状態記憶部３２３に記録する（ステップＳ２０６）。既にエントリが存在する場合、ゲストＯＳ制御部３０６は、停止時刻までの時間が長い方を優先してデータを書き込む。停止時刻は、例えば到着予想時刻までの時間の２倍の値を設定してもよい。ゲストＯＳ制御部３０６は停止時間になったらＡＰ１００のゲストＯＳ実行制御部７３４に停止を指示する。状態記憶部はゲストＯＳの稼動しているＡＰのＩＰアドレス等を記憶してもよい。なお、ゲストＯＳ用準備情報と車両用準備情報は、前述したようにＵＲＩなどの取得先を含んでもよいし、情報そのものを含む形にしてもよい。
【０１５４】
次に、ＡＰ１００においてサーバ３００のゲストＯＳ制御部３０６から実行情報取得先情報を受け、ゲストＯＳを起動する処理について説明する。図１６は、この処理の一例を示すフローチャートである。
【０１５５】
サーバ３００のゲストＯＳ制御部３０６から通信部７０２を介して実行制御部７３４との通信が確立されると、認証処理部７３６は、サーバ認証とクライアント認証を行った後、サーバ３００のゲストＯＳ制御部３０６から実行情報取得先情報が送信される。実行制御部７３４は、実行情報取得先情報を受信し、実行情報送受信部７３３に通知する。
【０１５６】
実行情報送受信部７３３は、実行情報取得先情報に記載されているＵＲＩに従い、ゲストＯＳ実行イメージ、ネットワーク設定情報、および、ゲストＯＳ用準備情報のそれぞれのファイルのダウンロードを行うため、通信部７０２を介してサーバ３００の実行情報配信部との通信を確立し、認証が成功したか否かを判定する（ステップＳ３０１）。認証処理部７３６による認証処理は、ストレージ７５１などに予め保存されている認証情報により行われる。
【０１５７】
認証が失敗した場合（ステップＳ３０１：Ｎｏ）、認証処理部７３６はエラー処理を行い（ステップＳ３０８）、処理を終了する。
【０１５８】
認証が成功した場合（ステップＳ３０１：Ｙｅｓ）、実行情報送受信部７３３は、ゲストＯＳ実行イメージが既にストレージ７５１にダウンロード済みか否かを判定する（ステップＳ３０２）。ダウンロード済みであれば（ステップＳ３０２：Ｙｅｓ）、実行情報送受信部７３３は、そのファイルはダウンロードしない。ダウンロード済みでなければ（ステップＳ３０２：Ｎｏ）、実行情報送受信部７３３は、ゲストＯＳ実行イメージをダウンロードし、ストレージ制御部７３５を介してストレージ７５１に保存する（ステップＳ３０３）。また、実行情報送受信部７３３は、ネットワーク設定情報とゲストＯＳ用準備情報をダウンロードし、ストレージ制御部７３５を介してストレージ７５１に保存する（ステップＳ３０４）。
【０１５９】
全てのファイルのダウンロードが完了すると、実行情報送受信部７３３は、ダウンロードしたネットワーク設定情報をストレージ７５１から読み出し、設定部７１６にネットワーク設定情報に基づいた設定を行うよう指示する。
【０１６０】
通信部７０１で使用する無線ＬＡＮアダプタは、ＶＬＡＮごとにＥＳＳＩＤを設定できる機能を有している。設定部７１６は、通信部７０１に対し、使用していないＶＬＡＮ  ＩＤを探し、そのＶＬＡＮ  ＩＤを割り当てた仮想的なインタフェースである仮想通信部（図９では仮想通信部８０１）を作成する。そして設定部７１６は、そのインタフェースに対してネットワーク設定情報で指定されたＥＳＳＩＤおよびセキュリティ情報を設定する（ステップＳ３０５）。
【０１６１】
なお、無線ＬＡＮアダプタがマルチＢＳＳＩＤに対応している場合には、仮想通信部８０１ごとに、予め無線ＬＡＮアダプタで使用できるＢＳＳＩＤを順番に使用してもよい。任意のＢＳＳＩＤを設定できる無線ＬＡＮアダプタであれば、サーバ３００がそれぞれ指定してネットワーク設定情報に含ませたＢＳＳＩＤを使用するようにしてもよい。
【０１６２】
このように設定された仮想通信部８０１からは、設定したＶＬＡＮ  ＩＤのタグ（ＶＬＡＮタグ）がついたフレームがブリッジ処理部７２１に出力される。ブリッジ処理部７２１からそれぞれの仮想通信部８０１フレームを送信する場合には、ＶＬＡＮタグをつけてフレームを送信する。
【０１６３】
設定部７１６は、フレームからＶＬＡＮタグを外したりフレームにＶＬＡＮタグを付加したりする機能を備えたポートをブリッジ処理部７２１に対して作成し、後で起動されるゲストＯＳが接続できるようにする。これによりゲストＯＳは、ＶＬＡＮを意識することなく、仮想通信部８０１と独立したネットワークで通信することができる。
【０１６４】
なお、ネットワーク設定情報で設定されたＥＳＳＩＤが既に仮想通信部８０１で使用中である場合には、その仮想通信部８０１で使用しているＶＬＡＮ  ＩＤを取得し、対応するゲストＯＳをそのＶＬＡＮポートに属させて、ＥＳＳＩＤの共通する無線ＬＡＮネットワークを共有させるようにしてもよい。また、設定部７１６は、通信部７０２を用いてＶＰＮによる新たな通信部を生成してサーバ３００とインターネットにおいて独立な通信路を作成することもできるし、ＶＬＡＮやＶＸＬＡＮによってさらに分割したネットワークを形成することもできる。また、ＶＰＮによる新たな通信部にＶＬＡＮタグをつけて送信するようにしてもよい。
【０１６５】
設定部７１６による設定が終わると、ゲストＯＳのネットワーク設定情報が、実行情報送受信部７３３から実行制御部７３４に渡される。ゲストＯＳのネットワーク設定情報に含まれる各情報は、設定部９０８により、ゲストＯＳの起動時に設定される。なお、ゲストＯＳでは、ＤＮＳサーバを実行して、車両２００に対してＤＮＳを提供し、そのＤＮＳサーバにおいては、サーバ３００のＤＮＳのレコードを変更して、サーバ３００でなくゲストＯＳへアクセスさせ、ゲストＯＳ自体のＤＮＳサーバにはレコードの変更されていないＤＮＳサーバを指定してもよい。このようにして共通のデータ取得リストでサーバ３００からのデータ取得とＡＰ１００からのデータ取得を行うことができる。
【０１６６】
ここまでの処理が完了すると、実行制御部７３４は、先程ネットワーク設定によって作成されたブリッジ処理部７２１のポートの情報、ゲストＯＳ実行イメージファイル、ゲストＯＳに設定するネットワーク情報、および、ゲストＯＳ用準備情報を指定し、実行部７３１に対してゲストＯＳの起動を指示する（ステップＳ３０６）。このとき、設定部９０８は、ゲストＯＳのネットワーク設定情報に従い、仮想通信制御部８３１、仮想通信制御部９０１にＩＰアドレス、ネットマスク、プレフィックス長、ＤＮＳサーバ、および、ルーティング情報を設定する。ＶＰＮ情報やＶＬＡＮ情報が渡された場合にも、設定部９０８は、ここで仮想通信制御部８３１、仮想通信制御部９０１に設定を行う。また、仮想通信制御部８３１の通信で使用するアドレス範囲が含まれる場合には、設定部９０８はＤＨＣＰサーバやＲＡサーバに設定を行い、起動後に仮想通信制御部８３１からＤＨＣＰやＲＡの情報の配布を行う。なお、ゲストＯＳのネットワーク設定情報にはＩＰアドレス等の指定を含めず、ＤＨＣＰやＲＡでの設定を行わせることもできる。実行制御部７３４は、サーバ３００のゲストＯＳ制御部３０６に処理が完了したことを通知する（ステップＳ３０７）。ゲストＯＳ用準備情報は、例えばゲストＯＳから予め配信アプリケーションで決められた名前のファイルとして見えるようにストレージ７５１に保存することで情報を伝達してもよいし、他の方法で伝達してもよい。
【０１６７】
次に、ゲストＯＳが起動した後の配信アプリケーションの処理について説明する。図１７は、この処理の一例を示すフローチャートである。
【０１６８】
ゲストＯＳが起動すると、配信データ処理部９０３は、実行制御部７３４から指示されたゲストＯＳ用準備情報を読み出す（ステップＳ４０１）。ゲストＯＳ用配信情報をサーバ３００からダウンロードするため、認証処理部９０４は、サーバ認証とクライアント認証を行い、認証が成功したか否かを判定する（ステップＳ４０２）。
【０１６９】
認証処理が失敗した場合（ステップＳ４０２：Ｎｏ）、認証処理部９０４はエラー処理を行い（ステップＳ４０５）、処理を終了する。
【０１７０】
認証処理が成功した場合（ステップＳ４０２：Ｙｅｓ）、配信データ処理部９０３は、ゲストＯＳ用準備情報に従いゲストＯＳ用配信情報の一部をダウンロードして保存する（ステップＳ４０３）。具体的には、配信データ処理部９０３は、ゲストＯＳ用準備情報に含まれる認証情報取得先情報、データ取得リスト取得先情報、ゲストＯＳ用検証データ取得先情報、および、車両用検証データ取得先情報に従い、それぞれ、認証情報、データ取得リスト、ゲストＯＳ用検証データ、および、車両用検証データをダウンロードする。認証情報は、記憶制御部９０５を介してキャッシュ記憶部に記憶される。他の情報は、仮想ストレージ制御部９０７を介してストレージ７５１に記憶される。
【０１７１】
配信データ処理部９０３は、ゲストＯＳ用準備情報に含まれるアップロード先情報、更新状態通知先情報、および、データ取得ステータス取得先情報と、取得したデータ取得リストの内容と、を読み出し、アップロード時に使用されるＵＲＩ、更新状態通知時に使用されるＵＲＩ、データ取得の際に使用されるＵＲＩ、および、データ取得ステータスを取得する際に使用されるＵＲＩを認識する。配信データ処理部９０３は、以降、車両２００やＡＰ１００からリクエストを受信した場合に、ＵＲＩによる判別を行い、リクエストに応じた処理を実行できるように設定される。なお、これらの情報のうち、認証情報およびゲストＯＳ用検証データは、車両２００に対して配信されない。
【０１７２】
ここまでの処理が完了すると、ゲストＯＳは、車両２００および他のＡＰ１００のゲストＯＳ上で実行される配信アプリケーションからのデータを受け付けられる状態になる。配信データ処理部９０３は、ゲストＯＳ用準備情報に含まれるデータ取得指示リストの優先度に基づいて、データ取得リストに記載されているＵＲＩからファームウェアのチャンクデータのダウンロードを開始する（ステップＳ４０４）。ダウンロードが完了するたびにサーバ３００のゲストＯＳ制御部３０６にキャッシュ状態の変更を通知する。
【０１７３】
次に、ＡＰ１００のゲストＯＳ上で動作する配信アプリケーションが、車両２００や他のＡＰ１００からデータの取得（ダウンロード）をリクエストされた場合の処理について説明する。図１８は、この処理の一例を示すフローチャートである。
【０１７４】
配信データ処理部９０３は、仮想通信制御部８３１および仮想通信制御部９０１を介してデータ取得の要求を受け付ける。例えばこの通信はＨＴＴＰＳを用いて行われる。配信データ処理部９０３へのデータ取得要求は、車両２００が仮想通信制御部８３１を介して送信してくる場合と、他のＡＰ１００のゲストＯＳ上で動作する配信アプリケーションが仮想通信制御部９０１を介して送信してくる場合がある。データ取得要求が送信されると、配信データ処理部９０３がデータ取得要求を受信し、認証処理部９０４にサーバ認証とクライアント認証を行わせる。
【０１７５】
認証処理部９０４は、キャッシュ記憶部またはストレージ７５１に保存されている証明書情報によって正規のサーバ（配信アプリケーション）とクライアント（車両）であることを認証し、認証が成功したか否かを判定する（ステップＳ５０１）。認証が失敗した場合（ステップＳ５０１：Ｎｏ）、配信データ処理部９０３はエラー処理を行い（ステップＳ５０７）、処理を終了する。
【０１７６】
認証が成功した場合（ステップＳ５０１：Ｙｅｓ）、配信データ処理部９０３は、取得を要求されたデータが既にストレージ７５１に保存済みであるか、すなわちキャッシュされているかを判定する（ステップＳ５０２）。既にキャッシュ済みの場合（ステップＳ５０２：Ｙｅｓ）、配信データ処理部９０３は、仮想ストレージ制御部９０７からデータを読み出し、仮想通信制御部８３１または仮想通信制御部９０１を介して要求元へデータを配信する（ステップＳ５０６）。
【０１７７】
キャッシュされていない場合（ステップＳ５０２：Ｎｏ）、配信データ処理部９０３は仮想通信制御部９０１を介してサーバ３００のデータ配信部３０８または他のＡＰ１００のゲストＯＳ上で動作する配信アプリケーションの配信データ処理部９０３に接続し、認証処理部９０４により認証を行う。認証処理部９０４は、キャッシュ記憶部またはストレージ７５１に保存されている証明書情報によって正規のサーバ（配信アプリケーション）とクライアント（配信アプリケーション）であることを認証し、認証が成功したか否かを判定する（ステップＳ５０３）。認証が失敗した場合（ステップＳ５０３：Ｎｏ）、配信データ処理部９０３はエラー処理を行い（ステップＳ５０７）、処理を終了する。
【０１７８】
認証が成功した場合（ステップＳ５０３：Ｙｅｓ）、サーバ３００のデータ配信部３０８または他のＡＰ１００のゲストＯＳ上で動作する配信アプリケーションの配信データ処理部９０３からデータを取得してストレージに保存し、取得したデータを配信する（ステップＳ５０４）。配信データ処理部９０３は、仮想通信制御部９０１を介して、サーバ３００のゲストＯＳ制御部３０６に対してキャッシュ状態が変更されたことを通知する（ステップＳ５０５）。
【０１７９】
このようにして、配信データ処理部９０３は、車両２００および他のＡＰ１００に対して、データ取得リスト、配信データ（ファームウェアのチャンクデータ、デジタル署名など）、車両用検証データを配信することができる。なお、ゲストＯＳのみで使用するゲストＯＳ用検証データ、認証情報、データ取得指示リストは、車両２００に対しては配信しない。また、キャッシュされたデータは、例えば、サーバ３００でそれぞれのファイルごとに設定された期間、および、配信アプリケーションでの判断によって削除される。データを削除した場合、配信データ処理部９０３は、キャッシュ状態の変更をサーバ３００に通知する。
【０１８０】
次に、ＡＰ１００のゲストＯＳ上で動作する配信アプリケーションにおいて車両２００からデータのアップロードをリクエストされた場合の処理について説明する。図１９は、この処理の一例を示すフローチャートである。
【０１８１】
配信データ処理部９０３は、仮想通信制御部８３１を介してデータアップロードの要求を受け付ける。例えばこの通信はＨＴＴＰＳを用いて行われる。車両２００からアップロード要求が送信されると、配信データ処理部９０３がアップロード要求を受信し、認証処理部９０４にサーバ認証とクライアント認証を行わせる。
【０１８２】
認証処理部９０４は、キャッシュ記憶部またはストレージ７５１に保存されている証明書情報によって正規のサーバとクライアントであることを認証し、認証が成功したか否かを判定する（ステップＳ６０１）。認証が失敗した場合（ステップＳ６０１：Ｎｏ）、配信データ処理部９０３はエラー処理を行い（ステップＳ６０８）、処理を終了する。
【０１８３】
認証が成功した場合（ステップＳ６０１：Ｙｅｓ）、配信データ処理部９０３は、要求されたデータが既にストレージ７５１に保存済みであるか、すなわちキャッシュされているかを判定する（ステップＳ６０２）。既にキャッシュ済みの場合（ステップＳ６０２：Ｙｅｓ）、配信データ処理部９０３は、エラー処理を行い（ステップＳ６０８）、処理を終了する。
【０１８４】
キャッシュされていない場合（ステップＳ６０２：Ｎｏ）、配信データ処理部９０３は、車両２００からアップロードされるデータを受信する（ステップＳ６０３）。検証部９０６は、受信されたデータを検証し、検証が成功したか否かを判定する（ステップＳ６０４）。例えば検証部９０６は、ストレージ７５１に保存されているゲストＯＳ用検証データを読み出し、受信されたデータのハッシュ値を計算して、ゲストＯＳ用検証データのハッシュ値と一致するかを判定する。一致しない場合、すなわち、検証に失敗した場合（ステップＳ６０４：Ｎｏ）、配信データ処理部９０３は、車両情報などを含むエラー情報を生成し、仮想通信制御部９０１を介してエラー情報をサーバ３００に送信する（ステップＳ６０７）。
【０１８５】
一致する場合、すなわち、検証に成功した場合（ステップＳ６０４：Ｙｅｓ）、配信データ処理部９０３は、受信したデータをストレージ７５１に保存する（ステップＳ６０５）。配信データ処理部９０３は、仮想通信制御部９０１を介して、キャッシュ状態が変更されたことをサーバ３００のゲストＯＳ制御部３０６に対して通知する（ステップＳ６０６）。このようにして、配信データ処理部９０３は、車両２００から配信データ（ファームウェアのチャンクデータ）を取得することができる。
【０１８６】
次に、ＡＰ１００のゲストＯＳ上で動作する配信アプリケーションにおいて車両２００から更新状態通知を受信した場合の処理について説明する。図２０は、この処理の一例を示すフローチャートである。
【０１８７】
状態通知部９０２は、仮想通信制御部８３１を介して車両２００から更新状態通知を受け付ける。例えばこの通信はＨＴＴＰＳを用いて行われる。車両２００から更新要求通知を受信すると、配信データ処理部９０３が更新要求通知を受信し、認証処理部９０４にサーバ認証とクライアント認証の処理を行わせる。
【０１８８】
認証処理部９０４は、キャッシュ記憶部またはストレージ７５１に保存されている証明書情報によって正規のサーバ（配信アプリケーション）とクライアント（車両２００）であることを認証し、認証が成功したか否かを判定する（ステップＳ７０１）。認証が失敗した場合（ステップＳ７０１：Ｎｏ）、配信データ処理部９０３はエラー処理を行い（ステップＳ７０７）、処理を終了する。
【０１８９】
認証が成功した場合（ステップＳ７０１：Ｙｅｓ）、状態通知部９０２は、サーバ３００の通知処理部３０９と接続する。そして認証処理部９０４は、正規のサーバ（サーバ３００）とクライアント（配信アプリケーション）であることを認証し、認証が成功したか否かを判定する（ステップＳ７０２）。認証が失敗した場合（ステップＳ７０２：Ｎｏ）、配信データ処理部９０３はエラー処理を行い（ステップＳ７０７）、処理を終了する。
【０１９０】
認証が成功した場合（ステップＳ７０２：Ｙｅｓ）、状態通知部９０２は、車両２００から送信された更新状態通知を仮想通信制御部８３１経由で受信し（ステップＳ７０３）、受信した更新状態通知を仮想通信制御部９０１経由でサーバ３００の通知処理部３０９に送信する（ステップＳ７０４）。状態通知部９０２は、サーバ３００の通知処理部３０９から仮想通信制御部９０１経由で更新状態通知完了応答を受信すると（ステップＳ７０５）、受信した更新状態通知完了応答を仮想通信制御部８３１経由で車両２００に送信する（ステップＳ７０６）。
【０１９１】
次に、ＡＰ１００の実行制御部７３４がサーバ３００からゲストＯＳの停止指示を受けた場合の処理について説明する。図２１は、この処理の一例を示すフローチャートである。
【０１９２】
サーバ３００のゲストＯＳ制御部３０６から通信部７０２経由でゲストＯＳの停止指示を受信すると、認証処理部９０４は、正規のサーバとクライアントであることを認証し、認証が成功したか否かを判定する（ステップＳ８０１）。認証が失敗した場合（ステップＳ８０１：Ｎｏ）、実行制御部７３４はエラー処理を行い（ステップＳ８０４）、処理を終了する。
【０１９３】
認証が成功した場合（ステップＳ８０１：Ｙｅｓ）、実行制御部７３４は、ゲストＯＳを停止するよう実行部７３１に指示する（ステップＳ８０２）。そして、ストレージ７５１に保存されているネットワーク設定情報を読み出し、ゲストＯＳを作成した時に設定した通信部７０１およびブリッジ処理部７２１のＥＳＳＩＤやＶＬＡＮなどの情報を削除する（ステップＳ８０３）。処理が完了したら、通信部７０２経由で処理が完了したことをサーバ３００のゲストＯＳ制御部３０６に通知する（ステップＳ８０４）。なお、ゲストＯＳ実行イメージやネットワーク設定情報は即時に削除されず、ＡＰ１００における別のポリシーで管理される。例えば、アクセスされない期間が一定値以上になった場合に削除したり、これらの情報の容量が一定値以上になった場合に古いものから削除してもよい。
【０１９４】
次に、車両２００における処理について説明する。図２２は、車両２００で実行される各処理の一例を示すフローチャートである。
【０１９５】
イグニッションキーのオンなどで車両２００が起動すると、送信部１１１４は、通信部１１０２を介して接近情報を送信する（ステップＳ９０１）。送信部１１１４は、ストレージ１１５１に格納されている車両情報、位置情報取得部から取得した位置情報、および、カーナビゲーションシステム等で生成された経路情報を、予めストレージ１１５１に記憶されているサーバ３００のＵＲＩなどの通知先情報に従って送信する。
【０１９６】
車両２００の代わりにＡＰ１００で接近情報を生成して送る場合には、接近情報を生成するためのデータとして通知先情報を送ってもよい。接近情報を受信したサーバ３００は、車両２００がファームウェアのダウンロード指示対象か、アップロード対象か、更新状態通知送信動作対象かを判定し、処理対象である場合には接続情報を送信する。
【０１９７】
車両２００の受信部１１１５は、一定時間（例えば１５秒）以内に通信部１１０２で接続情報を受信したか否かを判定する（ステップＳ９０２）。一定時間以内に接続情報を受信できなかった場合（ステップＳ９０２：Ｎｏ）、ステップＳ９０１に戻り再度接近情報が送信される。
【０１９８】
一定時間以内に接続情報を受信できた場合（ステップＳ９０２：Ｙｅｓ）、設定部１１３１は、接続情報に含まれるネットワーク設定情報から通信部１１０１のネットワーク設定を行う。
【０１９９】
例えば、ネットワーク設定情報は、無線ＬＡＮのパラメータであるＥＳＳＩＤやＢＳＳＩＤ、ＷＥＰ／ＷＰＡ／ＷＰＡ２のセキュリティ情報などを含む。設定部１１３１は、これらの情報を通信部１１０１に設定し、予め起動されたＡＰ１００と接続できるようにする。また、ネットワーク設定情報は、ＩＰアドレス、ネットマスク、プレフィックス長、ＤＮＳサーバアドレス、および、ルーティング情報などを含んでもよい。この場合、設定部１１３１は、これらの情報を通信部１１０１に設定して通信を行う。なお、これらの情報が含まれない場合には、設定部１１３１は、例えばＡＰ１００から配布されるＤＨＣＰやＲＡの情報を用いて通信部１１０１を設定してもよい。なお、ネットワーク設定情報は接近情報に含ませず予め固定としてもよい。
【０２００】
受信部１１１５は、接続情報に含まれるＡＰ情報から、選択されているＡＰ１００を全て通りすぎるまでの移動距離および経過時間の許容基準を決定する。例えば移動距離は、選択されているＡＰ１００のうち最も遠いＡＰ１００までの距離の２倍とする。また経過時間は、最も遅く到着すると予測されるＡＰ１００までの所要時間の２倍とする。ＡＰ情報を使わずに、例えば予め定められた一定時間（１分など）を許容基準としてもよい。受信部１１１５は、決められた許容基準内（一定時間以内）に、通信部１１０１によりＡＰ１００と接続状態になったか否かを判定する（ステップＳ９０３）。
【０２０１】
一定時間以内に接続状態にならなかった場合（ステップＳ９０３：Ｎｏ）、ステップＳ９０１に戻り送信部１１１４から再度接近情報が送信される。一定時間以内に接続状態になった場合（ステップＳ９０３：Ｙｅｓ）、受信部１１１５から状態通知部１１２７に通知し、状態通知部１１２７は、未送信の更新状態通知があるか否かを判定する（ステップＳ９０４）。未送信の更新状態通知がある場合（ステップＳ９０４：Ｙｅｓ）、認証処理部１１２９によってサーバ認証とクライアント認証を行った後、状態通知部１１２７は、未送信の更新状態通知をサーバ３００に送信し（ステップＳ９０５）、サーバ３００から更新状態通知完了応答を受信する。配信アプリケーションのサーバ証明書と公開鍵は、ファームウェアに含んで配信してもよいし、接続情報に含ませて送信してもよい。また、予めストレージ１１５１に入れて出荷されてもよい。
【０２０２】
未送信の更新状態通知がない場合（ステップＳ９０４：Ｎｏ）、および、ステップＳ９０５で更新状態通知を送信した後、受信部１１１５は、接続情報に含まれる指示情報が、ダウンロード指示であるか、アップロード指示であるか、その他の指示であるかを判定し、配信データ処理部１１２２に通知する（ステップＳ９０６）。ダウンロード処理の指示の場合（ステップＳ９０６：ダウンロード指示）、配信処理部１１２２でダウンロード処理が実行される（ステップＳ９０７）。アップロード処理の指示の場合（ステップＳ９０６：アップロード指示）、配信処理部１１２２でアップロード処理が実行される（ステップＳ９０８）。その他の指示の場合（ステップＳ９０６：その他）は、処理は実行されない。
【０２０３】
送信部１１１４は、イグニッションキーのオフなどにより車両２００の停止命令が発行されたか否かを判定する（ステップＳ９０９）。発行された場合（ステップＳ９０９：Ｙｅｓ）、送信部１１１４は動作を停止し、処理を終了する。発行されていない場合（ステップＳ９０９：Ｎｏ）、送信部１１１４は、自車両の位置情報が一定値以上変化したか、または、一定時間以上の時間が経過したかを判定する（ステップＳ９１０）。位置情報が一定値以上変化していない、かつ、一定時間以上の時間が経過していない場合（ステップＳ９１０：Ｎｏ）、ステップＳ９０９に戻り処理が繰り返される。位置情報が一定値以上変化した場合、または、一定時間以上の時間が経過した場合（ステップＳ９１０：Ｙｅｓ）、ステップＳ９０１に戻り再度接近情報が送信される。
【０２０４】
次に、車両２００においてダウンロード指示を受信した場合に実行される、配信データのダウンロード処理について説明する。図２３は、配信データのダウンロード処理の一例を示すフローチャートである。
【０２０５】
ダウンロード指示を受けた配信データ処理部１１２２は、通信部１１０１を介してＡＰ１００のゲストＯＳ上で動作する配信アプリケーションにデータを送るため、認証処理部１１２９に認証処理を実行させる。認証処理部１１２９は、認証情報をストレージ１１５１から読み出し、サーバ認証およびクライアント認証を行って、認証が成功したか否かを判定する（ステップＳ１００１）。認証が失敗した場合（ステップＳ１００１：Ｎｏ）、配信データ処理部１１２２はエラー処理を行い（ステップＳ１０１５）、処理を終了する。
【０２０６】
認証が成功した場合（ステップＳ１００１：Ｙｅｓ）、配信データ処理部１１２２は、接続情報から、データ取得リストおよび車両用検証データが取得済みであるか否かを判定する（ステップＳ１００２）。取得済みでない場合（ステップＳ１００２：Ｎｏ）、配信データ処理部１１２２は、接続情報の車両用準備情報に含まれるデータ取得リスト取得先情報、および、車両用検証データ取得先情報に記載されているＵＲＩにアクセスし、ＡＰ１００のゲストＯＳ上で動作する配信アプリケーションからデータ取得リストと車両用検証データを取得してストレージ１１５１に保存する（ステップＳ１００４）。
【０２０７】
データ取得リストには、例えばファームウェアのチャンクファイルとデジタル署名を取得するためのＵＲＩが記載されている。車両用検証データには、例えばファームウェアの各チャンクデータのハッシュ値が記録されている。
【０２０８】
データ取得リストおよび車両用検証データが取得済みである場合（ステップＳ１００２：Ｙｅｓ）、配信データ処理部１１２２は、データ取得ステータス取得情報に記載されているＵＲＩにアクセスし、データ取得ステータスを取得する（ステップＳ１００３）。データ取得ステータスは例えば接近情報のダウンロード済みデータ情報のようにビットマップによって表現される。これにより、ＡＰ１００のゲストＯＳ上で動作する配信アプリケーションでキャッシュしているファームウェアのチャンクデータや署名を把握できる。配信データ処理部１１２２は、キャッシュされているチャンクデータを優先するように、データ取得リストに記載されているＵＲＩにアクセスして、ファームウェアのチャンクデータとデジタル署名をダウンロードする（ステップＳ１００５）。
【０２０９】
検証部９０６は、ダウンロードしたチャンクデータのハッシュ値と、車両用検証データに記録されているハッシュ値とが一致するか確認する（ステップＳ１００６）。一致しない場合（ステップＳ１００６：Ｎｏ）、配信データ処理部１１２２は、チャンクデータを廃棄し（ステップＳ１００７）、他のキャッシュされているファイルのダウンロードを試みる（ステップＳ１００５）。この処理をデータ取得リストに記載されているチャンクデータ全てについて行う。なお、検証部９０６によるデータ検証は、ストレージ１１５１に書き込むときにまとめて実行してもよい。
【０２１０】
ハッシュ値が一致する場合（ステップＳ１００６：Ｙｅｓ）、配信データ処理部１１２２は、全てのチャンクデータとデジタル署名のダウンロードが完了したか判定し（ステップＳ１００８）、完了していない場合は（ステップＳ１００８：Ｎｏ）、ステップＳ１００５に戻り処理を繰り返す。
【０２１１】
全てのデータをダウンロードした場合（ステップＳ１００８：Ｙｅｓ）、署名検証部１１２１は、チャンクデータを全て結合したファームウェアデータに対してサーバ３００のサーバ証明書によるデジタル署名を検証する（ステップＳ１００９）。署名検証部１１２１は、デジタル署名が検証されたか否かを判定する（ステップＳ１０１０）。デジタル署名の検証が失敗した場合（ステップＳ１０１０：Ｎｏ）、チャンクデータかデジタル署名ファイルが改竄または破損していたことが考えられるため、配信データ処理部１１２２は、データ取得リストと車両検証用データとダウンロード済みの全てのチャンクデータとデジタル署名を破棄し（ステップＳ１０１１）、処理をやり直す。
【０２１２】
デジタル署名の検証が成功し、データが改竄または破損していないことがわかれば（ステップＳ１０１０：Ｙｅｓ）、配信データ処理部１１２２は、状態通知部１１２７に指示して更新状態通知を送信する（ステップＳ１０１２）。更新状態通知の通知先は、接続情報の車両用準備情報に含まれる更新状態通知先情報に含まれている。更新状態通知は、通信部１１０１を介して送信してもよいし、通信部１１０２を介して送信してもよい。更新状態通知は、車両２００のメーカー、車種、製造番号、各ファームウェアの種別、ダウンロード完了状態、現在実行しているファームウェアのバージョン情報、アップデート試行回数情報、および、エラー情報を含む。
【０２１３】
このフローの場合、状態通知部１１２７は、ダウンロードが完了状態になったがアップデートがまだ行われていないことを通知する。なお、更新状態通知が送信先によって正常に受信されると、更新情報通知完了応答が返信される。従って、状態通知部１１２７は、更新情報通知完了応答を受信するまで、更新状態通知の送信を試みる。
【０２１４】
次に署名検証部１１２１は、許可設定部１１２４に対して、アップデート許可設定を指示する。許可設定部１１２４は、ストレージ１１５１にアクセスし、署名の検証の完了したファームウェアデータをストレージ１１５１の特定領域にコピーし、コピーしたデータを使用してアップデート実行部１１２６によるアップデートの許可を設定する（ステップＳ１０１３）。許可設定部１１２４は、スケジュール部１１２５に指示してアップデート実行時間を設定させる（ステップＳ１０１４）。スケジュール部１１２５は、例えば、図示しないタッチパネル式モニタにアップデートがある旨を表示し、ユーザに日時指定を行わせてもよい。
【０２１５】
次に、車両２００においてアップロード指示を受信した場合に実行される、配信データのアップロード処理について説明する。図２４は、配信データのアップロード処理の一例を示すフローチャートである。
【０２１６】
アップロード指示を受けた配信データ処理部１１２２は、通信部１１０１を介してＡＰ１００のゲストＯＳ上で動作する配信アプリケーションにデータを送るため、認証処理部１１２９に認証処理を実行させる。認証処理部１１２９は、認証情報をストレージ１１５１から読み出し、サーバ認証およびクライアント認証を行って、認証が成功したか否かを判定する（ステップＳ１１０１）。認証が失敗した場合（ステップＳ１１０１：Ｎｏ）、配信データ処理部１１２２はエラー処理を行い（ステップＳ１１０５）、処理を終了する。
【０２１７】
認証が成功した場合（ステップＳ１１０１：Ｙｅｓ）、配信データ処理部１１２２は、データ取得ステータス取得情報に記載されているＵＲＩにアクセスし、データ取得ステータスを取得する（ステップＳ１１０２）。これにより、ＡＰ１００のゲストＯＳ上で動作する配信アプリケーションでキャッシュされていないファームウェアのチャンクデータが把握できる。配信データ処理部１１２２は、キャッシュされていないチャンクデータをアップロード先情報に含まれるＵＲＩにアクセスしてアップロードする（ステップＳ１１０３）。このとき、アップロードするファイルがどのチャンクデータに対応するかを示す情報も送信する。配信データ処理部１１２２は、全てのチャンクのアップロードが完了したか否かを判定する（ステップＳ１１０４）。全てのチャンクのアップロードが完了していない場合（ステップＳ１１０４：Ｎｏ）、ステップＳ１１０３に戻り処理を繰り返す。全てのチャンクのアップロードが完了した場合（ステップＳ１１０４：Ｙｅｓ）、処理を終了する。
【０２１８】
次に、アップデートがスケジュールされた時間になったときにアップデート実行部１１２６により実行されるアップデート処理について説明する。図２５は、アップデート処理の一例を示すフローチャートである。
【０２１９】
アップデート実行部１１２６は、アップデート処理がスケジュールされた時間になったときにスケジュール部１１２５によって処理が開始される。アップデート実行部１１２６は、イグニッションキーがオフになっているか否かを判定する（ステップＳ１２０１）。イグニッションキーがオンであれば（ステップＳ１２０１：Ｎｏ）、アップデート実行部１１２６は、アップデート処理を再スケジュールするようにスケジュール部１１２５に通知する（ステップＳ１２０５）。
【０２２０】
イグニッションキーがオフであれば（ステップＳ１２０１：Ｙｅｓ）、アップデート実行部１１２６は、ファームウェアのアップデートを実行する（ステップＳ１２０２）。例えばアップデート実行部１１２６は、ストレージ制御部１１２８を介してストレージ１１５１からデータを読み出し、更新するファームウェアの格納先にデータを書き込む。アップデート実行部１１２６は、アップデートが成功したか否かを判定する（ステップＳ１２０４）。例えば書き込みが完了し、更新したファームウェアが正常に動作したことが確認されるとアップデート成功とする。
【０２２１】
アップデート実行部１１２６は、アップデートが成功したか否かに係わらず、次に通信部１１０１または通信部１１０２による通信が可能になった時に更新状態通知を送信するように、状態通知部１１２７に指示する（ステップＳ１２０３）。
【０２２２】
アップデートが成功した場合（ステップＳ１２０４：Ｙｅｓ）、アップデート処理を終了する。アップデートが失敗した場合（ステップＳ１２０４：Ｎｏ）、アップデート実行部１１２６は、スケジュール部１１２５に再度スケジュールをするよう指示する（ステップＳ１２０５）。
【０２２３】
車両２００は、後でＡＰ１００のゲストＯＳ上で動作する配信アプリケーションにデータのアップロードを行うために、ファームウェアのチャンクファイルを１バージョン分残しておく。更新状態通知は、ダウンロード完了状態、現在実行しているファームウェアのバージョン情報、アップデート試行回数情報、および、エラー情報を含む。何らかの理由でアップデートが失敗している場合、サーバ３００は異常状態を検出することができる。
【０２２４】
次に、配信アプリケーションにおいて車両２００からデータ取得ステータスの取得をリクエストされた場合の処理について説明する。図２６は、この処理の一例を示すフローチャートである。
【０２２５】
配信データ処理部９０３は、仮想通信制御部８３１を介して、データ取得ステータスの取得要求を受け付ける。例えばこの通信はＨＴＴＰＳを用いて行われる。車両２００からデータ取得ステータス取得要求が送信されると、配信データ処理部９０３がデータ取得ステータス取得要求を受信する。認証処理部９０４は、サーバ認証とクライアント認証を行い、認証が成功したか否かを判定する（ステップＳ１３０１）。認証処理部９０４による認証処理は、キャッシュ記憶部またはストレージ７５１などに予め保存されている認証情報により行われる。
【０２２６】
認証が失敗した場合（ステップＳ１３０１：Ｎｏ）、配信データ処理部９０３はエラー処理を行い（ステップＳ１３０３）、処理を終了する。認証が成功した場合（ステップＳ１３０１：Ｙｅｓ）、配信データ処理部９０３は、ストレージ７５１からキャッシュ状況を読み出して応答を送信する（ステップＳ１３０２）。このようにして、配信データ処理部９０３は、車両２００に対して、データ取得ステータスを伝達することができる。
【０２２７】
次に、配信データの取得先とするＡＰ１００の選択方法について図２７〜図２９を用いて説明する。図２７および図２８は、経路情報を用いずに取得先を選択する方法を説明するための図である。
【０２２８】
選択部３０４は、例えば接近情報を参照し、当該車両２００を中心とする周辺領域に含まれるＡＰ１００を選択する。例えば選択部３０４は、車両２００を中心として基準距離以内（例えば半径１０ｋｍ以内）の領域で、配信範囲に含まれるＡＰ１００を、配信データの取得先のＡＰ１００として選択する。複数の基準距離を定め、基準距離ごとに配信ポリシーを変更してもよい。例えば、半径５ｋｍ以内に配信範囲が含まれるＡＰ１００と、半径５〜１０ｋｍ以内に配信範囲が含まれるＡＰ１００とで、配信するチャンクデータを変更してもよい。これは、範囲ごとに別のデータ取得指示リストを作成して配信することによって実現される。
【０２２９】
車両２００の位置から遠い場所では、近いＡＰ１００（ＡＰ１００ａ〜１００ｃ）で配信されると予測されるチャンクデータを除いてチャンクデータから配信してもよい。図２７では、内側の円内に配信範囲が含まれるＡＰ１００ａ〜１００ｃに対して１〜４番目のチャンクデータを配信させ、外側の円内に配信範囲が含まれるＡＰ１００ｄ〜１００ｆに対して４〜６番目のチャンクデータを配信させる例が示されている。このように、受信できない可能性を考慮して、重複するチャンクデータ（図２７の例では４番目のチャンクデータ）を配信させてもよい。ＧＰＳ、加速度センサ、および、ドップラー効果による周波数の変動計測などにより車速度を検出し、検出した車速度に応じて配信するチャンクデータの個数を決定してもよい。また、接近情報が送信されるたびに車両２００のダウンロード済み情報を参照し、適宜データ取得指示リストを差し替えてもよい。
【０２３０】
図２８では、内側の円内に配信範囲が含まれるＡＰ１００ａ〜１００ｃに対して１〜４番目のチャンクデータを配信させ、外側の円内に配信範囲が含まれるＡＰ１００ｄ〜１００ｆに対して１〜６番目のチャンクデータを配信させる例が示されている。これにより、例えば、現在の車両２００の位置に近いＡＰ１００に接続できない場合であっても、効率的にデータを配信可能となる。また、例えばバックボーンとなるネットワークの伝送速度が低い場合であっても、現在の位置から遠いＡＰ１００まで移動する間に、当該ＡＰ１００でチャンクデータのサーバ３００からの取得が完了する可能性が高まる。
【０２３１】
ＡＰ１００の選択方法は上記方法に限られるものではない。例えば、選択部３０４は、複数のＡＰ１００ではなく、データを配信できる確率が最も高いと予測されるＡＰ１００１つを選択してもよい。
【０２３２】
図２９は、経路情報を用いて取得先を選択する方法を説明するための図である。選択部３０４は、車両２００の経路情報を参照し、車両２００の経路に配信範囲が含まれるＡＰ１００を選択してもよい。選択部３０４は、カーナビゲーションシステムで算出された速度情報を経路情報とともに用いてもよい。例えば選択部３０４は、車両２００の経路、車速、および、到着予測時刻や、通信可能時間によって算出されるダウンロード予測量をもとに、配信するチャンク、および、当該チャンクを配信するＡＰ１００を決定する。ダウンロード予測量は、例えば、ＡＰ１００の最大転送能力の全てを、当該車両２００で利用すると仮定して算出してもよい。
【０２３３】
図２９では、車両２００の経路に従い設置されているＡＰ１００ａ、１００ｂ、１００ｃ、１００ｄにより、それぞれ１〜４番目、４〜６番目、６〜８番目、８〜９番目のチャンクデータを配信する例が示されている。
【０２３４】
図３０は、本実施形態で適用できる認証方式と、認証処理で送受信される情報の一例を示す図である。
【０２３５】
ＡＰ１００、車両２００、および、サーバ３００は、それぞれ他の装置との間の認証処理で用いる認証情報を記憶している。例えばサーバ３００は、サーバ３００のサーバ認証で用いるサーバ証明書の秘密鍵（サーバ  サーバ証明書秘密鍵）、サーバ３００のクライアント認証で用いるクライアント証明書の秘密鍵（サーバ  クライアント証明書秘密鍵）を記憶する。
【０２３６】
図３０では、各装置間で送受信される情報ごとに、利用する認証方式が示されている。例えば、ＡＰ１００と車両２００との間で送受信される接近情報は、サーバ３００のサーバ認証、および、車両２００のクライアント認証が実行されるか、または、認証が実行されないことを示されている。
【０２３７】
配信処理の契機となる通信（接近情報の通知など）の方式、および、データの配信に用いる通信の方式は、様々な組み合わせを適用できる。以下に、契機となる通信方式と、配信に用いる通信方式の組み合わせ（パターン）の一例を説明する。
（パターン１）
契機：セルラ
配信：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
車両に必要な方式：セルラ、ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
ＡＰに必要な方式：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
セルラ基地局が必要
（パターン２）
契機：ＩＥＥＥ８０２．１１ｐ（ＣＣＨ）
配信：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
（パターン２−１）
車両に必要な方式：ＩＥＥＥ８０２．１１ｐ、ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
ＡＰに必要な方式：ＩＥＥＥ８０２．１１ｐ、ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
（パターン２−２）：ＤＳＲＣ（Dedicated  Short  Range  Communications）をサポートしないＡＰ（ＡＰ−１）とサポートするＡＰ（ＡＰ−２）を含むパターン
車両に必要な方式：ＩＥＥＥ８０２．１１ｐ、ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
ＡＰ−１に必要な方式：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
ＡＰ−２に必要な方式：ＩＥＥＥ８０２．１１ｐ
（パターン３）
契機：ＩＥＥＥ８０２．１１ｐ（ＣＣＨ）
配信：ＩＥＥＥ８０２．１１ｐ（ＳＣＨ）
車両に必要な方式：ＩＥＥＥ８０２．１１ｐ
ＡＰに必要な方式：ＩＥＥＥ８０２．１１ｐ
（パターン４）
契機：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ（自宅、ホットスポットなど）
配信：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
車両に必要な方式：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
ＡＰに必要な方式：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
【０２３８】
図８および図１２で説明したＡＰ１００および車両２００の各通信部は、上記各パターンに応じて様々な組み合わせで実現できる。以下に、各通信部の組み合わせの例について説明する。ＡＰ１００の通信部７０１、７０２、７０３は、例えば以下のような組み合わせで構成できる。
【０２３９】
（パターン１）
（パターン１−１）
通信部７０１：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
通信部７０２：セルラ
（パターン１−２）
通信部７０１：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
通信部７０２：ギガビットイーサネット
（パターン２）
（パターン２−１）
通信部７０１：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
通信部７０２：ギガビットイーサネット
通信部７０３：ＩＥＥＥ８０２．１１ｐ
（パターン２−２）
ＡＰ−１の通信部７０１：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
ＡＰ−１の通信部７０２：ギガビットイーサネット
ＡＰ−２の通信部７０１：ＩＥＥＥ８０２．１１ｐ
ＡＰ−２の通信部７０２：ギガビットイーサネットまたはセルラ
（パターン３）
通信部７０１：ＩＥＥＥ８０２．１１ｐ
通信部７０２：ギガビットイーサネット
（パターン４）
通信部７０１：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
通信部７０２：ギガビットイーサネット
【０２４０】
車両２００の通信部１１０１、１１０２は、例えば以下のような組み合わせで構成できる。
【０２４１】
（パターン１）
通信部１１０１：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
通信部１１０２：セルラ
（パターン２）
通信部１１０１：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
通信部１１０２：ＩＥＥＥ８０２．１１ｐ
（パターン３）
通信部１１０１：ＩＥＥＥ８０２．１１ｐ
通信部１１０２：ＩＥＥＥ８０２．１１ｐ
（パターン４）
通信部１１０１：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
通信部１１０２：ＩＥＥＥ８０２．１１ｎ／ａｃ／ａｘ
【０２４２】
例えば、ＩＥＥＥ８０１．１１ｎ／ａｃ／ａｘの方式で通信する場合には、ＡＰはインフラストラクチャモード、車両２００はステーションとして動作し、アソシエーションを実行することにより、通信を実現する。ＩＥＥＥ８０２．１１ｐの方式で通信する場合、ＩＥＥＥ１６０９によって定義される通信により、ワイルドカードＢＳＳＩＤを用いてアソシエーションすることなく、車両２００とＡＰ１００の通信を実現する。
【０２４３】
図３１は、例えば接近情報と接続情報の送受信のみを実行するＡＰ１００−２の機能構成例を示すブロック図である。図３１に示すように、ＡＰ１００−２は、通信部７０２、７０３と、位置取得部７０４と、通信制御部７１２、７１３と、取得制御部７１４と、検知部７１５と、記憶制御部７３２と、を備えている。データ配信を実行しない場合であれば、このようなＡＰ１００−２を利用するように構成することができる。
【０２４４】
ゲストＯＳは、上述した例のようにメーカーごとに実行してもよいし、車種や部品ごと、または、ファームウェアのメーカーごと、ファームウェアバージョンごとに実行してもよい。ファームウェアのデータは、上述の例では固定長のチャンクに分割したが、例えばＨＴＴＰのｒａｎｇｅリクエストなどを用いて１つのファイルの領域を指定してダウンロードしてもよい。
【０２４５】
サーバ３００からＡＰ１００に対してゲストＯＳを実行するためのイメージ、ネットワーク設定情報、および、配信情報を配信し、その後、ゲストＯＳにより、認証情報およびファームウェアをダウンロードする例を示した。配信方法はこれに限らず、例えば、認証情報とネットワーク設定情報やゲストＯＳ用配信情報を、ゲストＯＳを実行するイメージに含めて一緒に配信してもよい。
【０２４６】
ファームウェア配信の例を示したが、映像や音楽等のコンテンツ配信の例にも適用できる。この場合、ファームウェアをコンテンツに置き換え、車両２００をユーザが使用する端末装置（スマートフォンなど）に置き換えればよい。この場合、更新状態通知は省略してもよい。
【０２４７】
仮想化環境（例えば図２の仮想マシン）と、仮想ネットワーク（ＶＬＡＮなど）とを１対１に構成する例を説明したが、両者が多対多、多対１、１対多となるように構成してもよい。
【０２４８】
実行情報や配信データは、サーバ３００から送信する代わりに他のＡＰ１００（近隣のＡＰ１００など）から取得してもよい。これは、サーバ３００が取得リクエストを受けた時に状態記憶部３２３からデータを保持（キャッシュ）しているＡＰ１００を探索し、リクエストをリダイレクトすることによって実現してもよいし、ＡＰ１００同士の間でキャッシュ状況を交換するプロトコルなどによりキャッシュ状況を把握し、他のＡＰ１００にリダイレクトしてもよい。
【０２４９】
位置情報は、車両２００とＡＰ１００が共に備えるＧＰＳを用いてそれぞれ取得してもよい。車両２００のみがＧＰＳを備えていてもよい。この場合、ＡＰ１００が通信した車両２００のＧＰＳ情報を取得し、このＧＰＳ情報からＡＰ１００の位置を推定してもよい。また、ＡＰ１００との接続時および切断時に、車両２００のＧＰＳ情報をサーバ３００またはＡＰ１００に送信してもよい。予めＡＰ１００の位置をサーバ３００のデータベース等に登録し、このデータベースを参照するように構成してもよい。
【０２５０】
ゲストＯＳを実行するときに、ゲストＯＳ実行イメージを残したまま実行してもよい。例えばｕｎｉｏｎｆｓ（ａｕｆｓ）などのファイルシステムでは、元の仮想マシンイメージを残したまま、他のファイルシステムに変更を記録することができる。これにより、元のゲストＯＳイメージが残るため、ＡＰ１００から他の装置に仮想マシンイメージを配信することが可能となる。同様に、データの保存領域を別イメージにする方法を適用してもよい。
【０２５１】
ＡＰ１００は位置が固定されている必要はなく、移動可能なＡＰ１００を用いてもよい。車両２００の移動を予測するとき、車両２００の進行方向を考慮してもよい。
【０２５２】
上述の例では、サーバ３００からＡＰ１００への実行情報取得先情報の送信と、ＡＰ１００からサーバ３００への実行情報の取得を別のセッションで行う例を示したが、これは同じセッションで送信されてもよい。
【０２５３】
接続情報やゲストＯＳ実行情報に含まれるネットワーク設定情報に含まれる無線ＬＡＮのパラメータには、例えば、上述の例で示した以外にもＩＥＥＥ８０２．１１ｐで通信する場合に、ＩＥＥＥ１６０９で定義される情報やさらに上位のサービス固有の情報等を含んでもよい。
【０２５４】
サーバ３００からゲストＯＳ実行情報やゲストＯＳ用配信情報を配信する場合、負荷等の状況に応じて、状態記憶部３２３から要求されたものと同じデータを保持しているゲストＯＳやＡＰ１００を特定し、リダイレクトなどにより、サーバ３００ではなく、ゲストＯＳやＡＰ１００からこれらの情報の配信を行わせてもよい。
【０２５５】
上述の例では説明を省略したが、ＡＰ１００と車両２００の通信は途中で途絶える可能性があるため、送信および受信処理にはタイムアウト時間が設けられる。例えばタイムアウト時間は１５秒と設定し、その間に応答がなければ処理を中断してもよい。
【０２５６】
上述の例では、データ取得リストはゲストＯＳ用と車両２００用に同一のものを使用したが、車両２００用にはゲストＯＳの取得先を記載したリストを生成し、ゲストＯＳ用にはサーバ３００の取得先を記載したリストを生成してもよい。
【０２５７】
図３２〜図３４は、それぞれ接続情報、実行情報、および、データ取得リストのデータ構造の一例を示す図である。なおこれらは一例であり、他のデータ構造としてもよい。
【０２５８】
このように、本実施形態にかかる通信装置では、例えば以下の機能を実現できる。
（１）路側機（ＡＰ）で実行される他のプログラムを仮想マシン単位で隔離し、さらにネットワークを隔離することができる。これにより、各ファームウェア配信に限らず様々なコンテンツの配信プラットフォームを実現できる。
（２）認証を行うことでファームウェアが正しい経路で取得されることを保証できる。また、認証を配信装置（サーバ）ではなく、路側機との間で行うことで認証に要する時間を短縮することができる。
（３）仮想マシンを実行してから部分コードの実行を開始することで、バックボーン回線の速度が低い場合にも、部分的に早く配信処理を開始することができる。
【０２５９】
本実施形態にかかる通信装置で実行されるプログラムは、ＲＯＭ５２やストレージ等に予め組み込まれて提供される。
【０２６０】
本実施形態にかかる通信装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【０２６１】
さらに、本実施形態にかかる通信装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる通信装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０２６２】
本実施形態にかかる通信装置で実行されるプログラムは、コンピュータを上述した通信装置の各部として機能させうる。このコンピュータは、ＣＰＵ５１がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【０２６３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２６４】
１００  ＡＰ
２００  車両
３００  サーバ
４００  サーバ
５００  インターネット
６００  基地局
７０１、７０２、７０３  通信部
７０４  位置取得部
７１０  ホストＯＳ／ハイパーバイザ実行部
７１１、７１２、７１３  通信制御部
７１４  取得制御部
７１５  検知部
７１６  設定部
７２１、７２２  ブリッジ処理部
７３１  実行部
７３２  記憶制御部
７３３  実行情報送受信部
７３４  実行制御部
７３５  ストレージ制御部
７３６  認証処理部
７５１  ストレージ
【図１】
2017004220.tif 000003
【図２】
2017004220.tif 000004
【図３−１】
2017004220.tif 000005
【図３−２】
2017004220.tif 000006
【図３−３】
2017004220.tif 000007
【図３−４】
2017004220.tif 000008
【図４】
2017004220.tif 000009
【図５】
2017004220.tif 000010
【図６】
2017004220.tif 000011
【図７】
2017004220.tif 000012
【図８】
2017004220.tif 000013
【図９】
2017004220.tif 000014
【図１０】
2017004220.tif 000015
【図１１】
2017004220.tif 000016
【図１２】
2017004220.tif 000017
【図１３】
2017004220.tif 000018
【図１４】
2017004220.tif 000019
【図１５】
2017004220.tif 000020
【図１６】
2017004220.tif 000021
【図１７】
2017004220.tif 000022
【図１８】
2017004220.tif 000023
【図１９】
2017004220.tif 000024
【図２０】
2017004220.tif 000025
【図２１】
2017004220.tif 000026
【図２２】
2017004220.tif 000027
【図２３】
2017004220.tif 000028
【図２４】
2017004220.tif 000029
【図２５】
2017004220.tif 000030
【図２６】
2017004220.tif 000031
【図２７】
2017004220.tif 000032
【図２８】
2017004220.tif 000033
【図２９】
2017004220.tif 000034
【図３０】
2017004220.tif 000035
【図３１】
2017004220.tif 000036
【図３２】
2017004220.tif 000037
【図３３】
2017004220.tif 000038
【図３４】
2017004220.tif 000039