以下図面について、本発明の一実施の形態を詳述する。
(1)第1の実施の形態
(1−1)車載ソフトウェア配信システム1の構成
図1は、本発明の第1の実施の形態に係る車載ソフトウェア配信システムの構成例を示す図である。図1に示す車載ソフトウェア配信システム1は、車両20の位置情報を確認しながら車両20にソフトウェアを配信するシステムであって、サーバであるテレマティクスセンタ10と、車両20に搭載されたソフトウェア更新装置210と、テレマティクスセンタ10に対して入出力を行う端末30とを備える。なお、図1に示したように、テレマティクスセンタ10、ソフトウェア更新装置210、及び端末30は、ネットワーク40を介して互いに通信可能に接続される。
図1に示したように、テレマティクスセンタ10は通信部130を介してネットワーク40に接続され、ソフトウェア更新装置210は車両20の通信部220を介してネットワーク40に接続され、端末30は通信部340を介してネットワーク40に接続されている。この結果、テレマティクスセンタ10、ソフトウェア更新装置210、及び端末30は、ネットワーク40を介して相互に通信可能に接続される。ネットワーク40は、例えば、携帯電話網、インターネット網、無線LAN(Local Area Network)等の近距離無線通信、あるいはそれらの組合せによって構成することができる。
なお、図1では、ソフトウェア更新装置210を搭載した車両20が1台だけ示されているが、本実施の形態における構成はこれに限定されるものではなく、それぞれにソフトウェア更新装置210を搭載した複数台の車両20が、ネットワーク40を介してテレマティクスセンタ10及び端末30と通信可能に接続される構成であってもよい。また、テレマティクスセンタ10と端末30は同一の機器によって実現されてもよい。
(1−1−1)テレマティクスセンタ10
テレマティクスセンタ10は、サーバであって、ネットワーク40を介して、端末30からソフトウェア配信指示を受信し、車両20に対してソフトウェアを配信する。テレマティクスセンタ10は、中央演算処理装置110と、記憶装置120と、通信部130とを備える。
中央演算処理装置110は、例えばCPU(Central Processing Unit)やRAM(Random Access Memory)等から構成され、所定のプログラムを実行することによって、テレマティクスセンタ10の各機能を実現する。中央演算処理装置110は、これらの機能別の構成として、車両管理部111、キャンペーン管理部112、更新用ソフトウェア配信部113、ジオコーディング処理部114、及び配信開始日時変更部115を備える。なお、配信開始日時変更部115は、本発明の第2の実施の形態に係る車載ソフトウェア配信システムが有する機能を実現するための構成である。
車両管理部111は、記憶装置120の車両DB121及び車両構成DB122に格納されている各情報を管理し、必要に応じて各情報の登録、変更、及び削除を行う。
キャンペーン管理部112は、記憶装置120のメインキャンペーンDB123、テストキャンペーンDB124、及び配信キャンペーンDB125に格納されている各情報を管理し、端末30からのソフトウェアの配信指示や、車両20(ソフトウェア更新装置210)からのソフトウェアのインストール結果の通知等に応じて、各情報の登録、変更、及び削除を行う。
更新用ソフトウェア配信部113は、端末30からの指示に応じて、車両20にとって適切な更新用ソフトウェアを記憶装置120のソフトウェアDB127から取り出し、通信部130及びネットワーク40を介して車両20に配信する。
ジオコーディング処理部114は、車両20の位置測位装置216(詳細は後述する)によって取得された車両20の位置情報(緯度情報及び経度情報)を受信し、記憶装置120の地図DB128を用いて当該位置情報から住所を特定することにより、車両20がどの国や地域(リージョン)に位置しているかを認識する。
配信開始日時変更部115は、後述する第2の実施の形態で実現される機能のための構成であり、ソフトウェア配信の完遂状況に基づいて、記憶装置120の配信キャンペーンDB125に格納されている各情報を変更する。
記憶装置120は、例えばHDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ、またはROM(Read Only Memory)等から構成される。記憶装置120には、中央演算処理装置110が実行するプログラムのほか、当該プログラムの実行に必要なデータ群等が格納される。
図1に示したように、記憶装置120に格納されるデータ群として、記憶装置120は、車両DB121、車両構成DB122、メインキャンペーンDB123、テストキャンペーンDB124、配信キャンペーンDB125、更新進捗状況DB126、ソフトウェアDB127、及び地図DB128等を備える。
なお、本説明において「キャンペーン」とは、あるECUの同一機能を更新するために配信しようとする更新用ソフトウェアに対して、配信先である1以上の車両20の情報を紐付けして管理するための情報の単位を意味する。より詳しくは、新しく更新用ソフトウェアを配信してソフトウェアをアップデートしようとするとき、当該更新用ソフトウェアの全体的な配信を「メインキャンペーン」と称する。また、「メインキャンペーン」に従属する単位として、テスト(検証)用途に限定された特定の車両20に対する更新用ソフトウェアの配信テストを「テストキャンペーン」と称する。さらに、「メインキャンペーン」及び「テストキャンペーン」に従属する単位として、「テストキャンペーン」による更新用ソフトウェアの配信テストの成功の結果をもって行われる、全世界に存在する車両20への更新用ソフトウェアの配信を「配信キャンペーン」と称する。キャンペーンの具体例としては例えばリコール対応が挙げられ、キャンペーンによって、当該リコールの原因を解消するための更新用ソフトウェアが配信され、更新用ソフトウェアが対象のECUにインストールされることによって、機能のアップデートが行われる。
車両DB121は、1以上の車両20のそれぞれ(各車両20)について、車種、利用状況、及びソフトウェア配信時の制約条件となり得る情報等から構成される「車両情報」を蓄積する。「車両情報」は、後述する図2で具体例が示される。
車両構成DB122は、各車両20について、搭載されているECUの種別、及びインストールされているソフトウェアのバージョンを管理するための情報等から構成される「車両構成情報」を蓄積する。「車両構成情報」は、後述する図3で具体例が示される。
メインキャンペーンDB123は、メインキャンペーンにおいてソフトウェアのアップデート対象となるECUの種別、更新用ソフトウェアの配信時における制約条件、及び更新対象となる車両台数を管理するための情報等から構成される「メインキャンペーン情報」を蓄積する。「メインキャンペーン情報」は、後述する図4で具体例が示される。
テストキャンペーンDB124は、上述したように、配信キャンペーンの前に、テスト用途に限定された特定の車両20に対して行われる「テストキャンペーン」のために必要な情報から構成される「テストキャンペーン情報」を蓄積する。「テストキャンペーン情報」は、「メインキャンペーン情報」に従属する情報であり、後述する図5で具体例が示される。
配信キャンペーンDB125は、上述したように、テストキャンペーンが成功した結果をもって全世界に存在する車両20に対して行われる「配信キャンペーン」のために必要な情報から構成される「配信キャンペーン情報」を蓄積する。「配信キャンペーン情報」は、「メインキャンペーン情報」及び「テストキャンペーン情報」に従属する情報であり、後述する図6で具体例が示される。
更新進捗状況DB126は、各車両20における更新用ソフトウェアのインストールの進捗状況を管理するための情報である「更新進捗状況情報」を蓄積する。「更新進捗状況情報」は、後述する図7で具体例が示される。
ソフトウェアDB127は、車両20に配信する更新用ソフトウェアを蓄積する。また、地図DB128は、車両20が走行する国や地域の「地図データ」を蓄積する。地図データは、具体的には例えば、交差点、道路、国境等の情報が点や線などで表現される。
通信部130は、ネットワーク40で用いられる通信規格に準拠したネットワークカード等から構成され、ネットワーク40を介して、車両20及び端末30との間で、各種プロトコルに基づいてデータを送受信する。ネットワークカードは、有線LAN等の有線通信や無線LAN等の無線通信、あるいはその両方に必要な通信規格に準拠する。
(1−1−2)車両20
車両20は、ソフトウェア更新装置210と、通信部220と、ナビゲーション端末230と、各種ECU(エンジンECU241、自動運転ECU242、…)とを備える。車両20の各機器は、CAN(Controller Area Network)等の車内ネットワークで接続される。
ソフトウェア更新装置210は、中央演算処理装置211と、記憶装置215と、位置測位装置216とを備える。
中央演算処理装置211は、例えばCPUやRAM等から構成され、所定のプログラムを実行することによって、ソフトウェア更新装置210の各機能を実現する。中央演算処理装置211は、これらの機能別の構成として、キャンペーン確認部212、更新用ソフトウェア要求部213、及びECUソフトウェア更新部214を備える。
キャンペーン確認部212は、車両20のエンジン始動をトリガとして、テレマティクスセンタ10に問い合わせを行い、自車両のECUにソフトウェアアップデートを実施するためのキャンペーン情報がないかを確認する。
更新用ソフトウェア要求部213は、キャンペーン確認部212による確認の結果、自車両のECUを対象とするキャンペーンがあった場合に、テレマティクスセンタ10に対して当該キャンペーンの更新用ソフトウェアを要求し、ダウンロードする。
ECUソフトウェア更新部214は、更新用ソフトウェア要求部213がダウンロードした更新用ソフトウェアを用いて、更新対象のECUをアップデートする。
記憶装置215は、例えばHDD、SSD、フラッシュメモリ、またはROM等から構成される。記憶装置215には、中央演算処理装置211が実行するプログラムのほか、当該プログラムの実行に必要なデータ群等が格納される。
位置測位装置216は、例えばGPS(Global Positioning System)センサ等で構成され、車両20の現在位置を特定する位置情報(緯度情報及び経度情報)を取得する。
通信部220は、ネットワーク40で用いられる通信規格に準拠したネットワークカード等から構成され、ネットワーク40を介して、テレマティクスセンタ10及び端末30との間で、各種プロトコルに基づいてデータを送受信する。ネットワークカードは、例えば無線LAN等の無線通信に準拠する。
ナビゲーション端末230は、車両20の走行時に現在位置や目的地への経路案内を行うナビゲーション機能を有する一般的なカーナビゲーション装置で構成される。ナビゲーション端末230は、中央演算処理装置231と、記憶装置233と、入出力装置234とを備える。
中央演算処理装置231は、例えばCPUやRAM等から構成され、所定の動作プログラムを実行することで、ナビゲーション端末230によるナビゲーション機能を実現する。中央演算処理装置231は、その機能構成として更新情報表示部232備える。更新情報表示部232は、ナビゲーション機能に基づく表示画面や、テレマティクスセンタ10から送信された更新用ソフトウェアの情報に基づく表示画面を、入出力装置234に表示させる。
記憶装置233は、例えばHDD、SSD、フラッシュメモリ、またはROM等から構成される。記憶装置233には、中央演算処理装置231が実行するプログラムのほか、当該プログラムの実行に必要なデータ群等が格納される。
入出力装置234は、タッチパネル、キーボード、またはマウス等を組み合わせて構成され、ナビゲーション端末230やソフトウェア更新装置210に対する入力部及び出力部(表示部)として機能する。
なお、本実施の形態の車両20において、ソフトウェア更新装置210とナビゲーション端末230は同一の機器によって実現されても良い。また、ナビゲーション端末230が車両20に搭載された構成に限定されるものではなく、例えば、ナビゲーション端末230の代わりに、ナビゲーション端末230と同様の機能を発揮するスマートフォン等の携帯端末を用いるようにしてもよい。この場合、通信部220を携帯端末と通信可能な近傍に配置し、ソフトウェア更新装置210が例えばOBD(On Board Diagnostics)等のコネクタを用いることによって、ソフトウェア更新装置210が携帯端末と通信することが考えられる。
エンジンECU241は、車両20におけるエンジン動作を管理するECUである。自動運転ECU242は、車両20における自動運転の動作制御を管理するECUである。図1に示すように、これらのECUはバス型CANネットワークに接続され、ソフトウェア更新装置210がこれらのバス型ネットワークのハブ機能を有する。
なお、図1では、各種ECUの一例としてエンジンECU241と自動運転ECU242を示したが、車両20に搭載される各種ECUはこれらに限られるものではない。例えば、サスペンション制御用のECUや、電子ミラー制御用のECU等、車両20の制御や安全を支援する機能を有するECUが搭載されていてもよい。なお、これらのECUには、自身を動作させるためのソフトウェアがそれぞれ内蔵されている。このソフトウェアは、各ECUが有する記憶装置(不図示)にそれぞれ格納されており、各ECUが有する中央演算処理装置(不図示)によって実行される。以降の説明では、一例として、更新用ソフトウェアの配信によって自動運転ECU242を更新する状況を想定しているが、本実施の形態において更新対象となるECUはこれに限定されない。
(1−1−3)端末30
端末30は、汎用的な計算機や、タブレットやスマートフォン等の携帯端末等であって、中央演算処理装置310と、記憶装置320と、入出力装置330と、通信部340とを備える。
中央演算処理装置310は、例えばCPUやRAM等から構成され、所定の動作プログラムを実行することによって、端末30の機能を実現する。中央演算処理装置310は、その機能構成として、キャンペーン情報入出力部311を備える。
キャンペーン情報入出力部311は、ユーザによる入出力装置330の操作に応じて、テレマティクスセンタ10にキャンペーン情報を問い合わせ、受信したキャンペーン情報を入出力装置330に表示する。
記憶装置320は、例えばHDD、SSD、フラッシュメモリ、またはROM等から構成される。記憶装置320には、中央演算処理装置211が実行するプログラムのほか、当該プログラムの実行に必要なデータ群等が格納される。
入出力装置330は、タッチパネル、キーボード、またはマウス等を組み合わせて構成され、端末30やテレマティクスセンタ10に対する入力部及び出力部(表示部)として機能する。
通信部340は、ネットワーク40で用いられる通信規格に準拠したネットワークカード等から構成され、ネットワーク40を介して、テレマティクスセンタ10との間で、各種プロトコルに基づいてデータを送受信する。ネットワークカードは、例えば無線LAN等の無線通信に準拠する。
なお、前述したように、端末30は、テレマティクスセンタ10と同一の機器によって実現されてもよく、例えばテレマティクスセンタ10が端末30の機能を含んで構成される場合、テレマティクスセンタ10が、端末30の入出力装置330に相当する入出力装置を備え、さらに、中央演算処理装置110がキャンペーン情報入出力部311を備えるようにすればよい。
(1−2)各種データの構造
以下では、図1に示したテレマティクスセンタ10の記憶装置120においてDBに格納される各種データの構造について具体例を挙げて説明する。なお、本具体例では、テーブル形式によるデータ構造を示すが、本実施の形態における各種データの構造はこれに限定されるものではない。
図2は、車両情報の具体例を示す図である。車両情報は、各車両20についての車両本体のメタ情報であって、車両DB121に格納される。図2に示した車両情報1210は、VIN1211、車種ID1212、最終停車位置1213、出荷時リージョン1214、所属リージョン1215、テスト車両フラグ1216、サイレントフラグ1217、利用頻度1218、及び更新日時1219を備えて構成されるテーブル形式のデータである。
VIN1211は、車両20を一意に特定可能な識別子(VIN:Vehicle Identification Number)である。車種ID1212は、VIN1211で特定される車両20(当該レコードにおける対象車両20)の車種を一意に特定可能な識別子である。最終停車位置1213は、対象車両20が最後にエンジンOFFとなったときの位置情報であって、緯度、経度の順で表記されている。
出荷時リージョン1214は、対象車両20の出荷時のリージョンを示す情報であって、VIN1211や車種ID1212に基づいて予め割り出される。また、所属リージョン1215は、対象車両20の現在のリージョン(流通時のリージョン)を示す情報であって、ジオコーディング処理部114によって最終停車位置1213から割り出される。例えば、対象車両20が米国(US)で出荷された場合は、出荷時リージョン1214が「US」となるが、その後に欧州(EU)に輸出されて現在に至る場合は、所属リージョン1215が「EU」となる。
テスト車両フラグ1216は、対象車両20がテストキャンペーンの対象となり得るか否かを管理するための情報である。テストキャンペーンの対象となり得る場合は「True」と記録され、テストキャンペーンの対象となり得ない場合は「False」と記録される。
サイレントフラグ1217は、対象車両20のECUを更新する場合に、更新の実行をユーザに告知(通知)する「確認画面」の表示可否を判断するための情報である。サイレントフラグ1217が「True」の場合は、確認画面の表示が不要であることを意味するので、ソフトウェア更新の告知が行われない。サイレントフラグ1217が「False」の場合は、確認画面の表示が必要であることを意味するので、ソフトウェア更新を告知する確認画面が所定の表示画面(例えばナビゲーション端末230の入出力装置234)に表示される。サイレントフラグ1217の設定については、対象車両20の所有者がナビゲーション端末230の入出力装置234の操作によって事前に登録し、登録した情報がテレマティクスセンタ10に通知される等が想定される。
利用頻度1218は、対象車両20がどの程度の頻度でエンジンONにされるか、すなわち対象車両20が利用されている頻度を示す情報である。なお、対象車両20におけるエンジンONをテレマティクスセンタ10側で認識する方法は、特に限定されない。例えば、エンジン始動を検知したことが車両20からテレマティクスセンタ10に通知されることによって認識できるようにしてもよいし、他にも例えば、エンジン始動の検知後に行われる車両20からテレマティクスセンタ10への通信(例えば、後述する図13のステップS901の通信)に基づいて、テレマティクスセンタ10が車両20におけるエンジンONを算出するようにしてもよい。
そして更新日時1219は、車両情報1210の当該レコードが更新された日時を示す情報である。
図3は、車両構成情報の具体例を示す図である。車両構成情報は、各車両20が有するECUに関する情報であって、車両構成DB122に格納される。図3に示した車両構成情報1220は、VIN1221、ECU−ID1222、シリアルID1223、ソフトウェアバージョン1224、及び更新日時1225を備えて構成されるテーブル形式のデータである。
VIN1221は、車両情報1210のVIN1211と共通のデータであり、対象車両20を一意に特定可能な識別子である。
ECU−ID1222は、対象車両20に搭載されるECUの種別を一意に特定可能な識別子である。また、シリアルID1223は、対象車両20に搭載されるECUを一意に特定可能な識別子である。例えば、図3のデータ行の1行目と3行目とを比較すると分かるように、ECUの種別(ECU−ID1222)が同一であっても、それぞれのECUのシリアルID1223は異なる。また、ソフトウェアバージョン1224は、対象車両20に搭載されるECUにインストールされたソフトウェアを一意に特定可能な識別子である。
そして更新日時1225は、車両構成情報1220の当該レコードが更新された日時を示す情報である。
図4は、メインキャンペーン情報の具体例を示す図である。前述したように、メインキャンペーン情報はメインキャンペーンDB123に格納される。図4に示したメインキャンペーン情報1230は、メインキャンペーンID1231、ECU−ID1232、クリティカルフラグ1233、更新対象台数1234、更新完了台数1235、及び更新日時1236を備えて構成されるテーブル形式のデータである。
メインキャンペーンID1231は、メインキャンペーン情報を一意に特定可能な識別子であり、本例では、IDの一文字目に「M」が共通して付与されている。
ECU−ID1232は、車両構成情報1220のECU−ID1222と共通のデータであり、当該レコードのメインキャンペーンにおいてソフトウェアの更新対象とされるECUの種別(ECU−ID)を示す情報である。
クリティカルフラグ1233は、当該レコードのメインキャンペーン情報の優先度を表す情報であって、車両20のドライバによるソフトウェア更新の拒否が可能か否かを判断するための情報である。例えば、図4に示したように、クリティカルフラグ1233が「True」である場合は、ソフトウェア更新の緊急性(優先度)が高いキャンペーンであって、車両20のドライバによるソフトウェア更新の拒否権がないことを意味する。一方、クリティカルフラグ1233が「False」である場合は、ソフトウェア更新の緊急性(優先度)が比較的低いキャンペーンであって、車両20のドライバによってソフトウェア更新(または、その更新タイミング)を拒否できることを意味する。
更新対象台数1234は、当該レコードのメインキャンペーン情報に従属する全ての配信キャンペーンにおける更新対象台数(図6に示す配信キャンペーン情報1250の更新対象台数1256に相当)の総和を示す情報である。また、更新完了台数1235は、当該レコードのメインキャンペーン情報に従属する全ての配信キャンペーンにおける更新完了台数(図6に示す配信キャンペーン情報1250の更新完了台数1257に相当)の総和を示す情報である。
そして更新日時1236は、メインキャンペーン情報1230の当該レコードが更新された日時を示す情報である。
図5は、テストキャンペーン情報の具体例を示す図である。前述したように、テストキャンペーン情報はテストキャンペーンDB124に格納される。図5に示したテストキャンペーン情報1240は、テストキャンペーンID1241、引用元メインキャンペーンID1242、テスト車両VIN1243、対象リージョン1244、更新ファイル名1245、適用バージョン1246、検証用ハッシュ値1247、及び更新日時1248を備えて構成されるテーブル形式のデータである。
テストキャンペーンID1241は、テストキャンペーン情報を一意に特定可能な識別子であり、本例では、IDの一文字目に「T」が共通して付与されている。
引用元メインキャンペーンID1242は、メインキャンペーン情報1230のメインキャンペーンID1231と共通のデータであり、当該レコードのテストキャンペーン情報の引用元(従属先)であるメインキャンペーン情報を一意に特定可能な識別子である。
テスト車両VIN1243は、車両情報1210のVIN1211や車両構成情報1220のVIN1221と共通のデータであり、当該レコードのテストキャンペーンがテストの実行時にソフトウェアを配信する車両20(テスト車両)を特定するための情報である。
対象リージョン1244は、後述する更新ファイル名1245で指定される更新用ソフトウェアについて想定されている配布対象のリージョンを示す情報である。なお、対象リージョン1244(後述する対象リージョン1254も同様)に記録されるデータは、車両情報1210の所属リージョン1215と共通のデータであることが好ましい。
更新ファイル名1245は、当該レコードのテストキャンペーンが実行するテストにおいて配信する更新用ソフトウェアを一意に特定可能な識別子である。
適用バージョン1246は、車両構成情報1220のソフトウェアバージョン1224と共通のデータであり、更新ファイル名1245で特定される更新用ソフトウェアをインストールした後のバージョン情報である。
検証用ハッシュ値1247は、当該レコードのテストキャンペーンにおいて指定された車両20(すなわち、テスト車両VIN1243で特定されるテスト車両)が、更新対象ECUのソフトウェア更新終了後の記憶装置の領域全体に対して取得したハッシュ値を示す情報である。
そして更新日時1248は、テストキャンペーン情報1240の当該レコードが更新された日時を示す情報である。
図6は、配信キャンペーン情報の具体例を示す図である。前述したように、配信キャンペーン情報は配信キャンペーンDB125に格納される。図6に示した配信キャンペーン情報1250は、配信キャンペーンID1251、引用元メインキャンペーンID1252、引用元テストキャンペーンID1253、対象リージョン1254、配信開始日時1255、更新対象台数1256、更新完了台数1257、及び更新日時1258を備えて構成されるテーブル形式のデータである。
配信キャンペーンID1251は、配信キャンペーン情報を一意に特定可能な識別子であり、本例では、IDの一文字目に「D」が共通して付与されている。
引用元メインキャンペーンID1252は、メインキャンペーン情報1230のメインキャンペーンID1231と共通のデータであり、当該レコードの配信キャンペーン情報の引用元(従属先)であるメインキャンペーン情報を一意に特定可能な識別子である。また、引用元テストキャンペーンID1253は、テストキャンペーン情報1240のテストキャンペーンID1241と共通のデータであり、当該レコードの配信キャンペーン情報の引用元(従属先)であるテストキャンペーン情報を一意に特定可能な識別子である。
対象リージョン1254は、テストキャンペーン情報1240の対象リージョン1244と共通のデータであり、当該レコードの配信キャンペーン情報を作成する際に、引用元のテストキャンペーン情報1240の対象リージョン1244をコピーして格納される。
配信開始日時1255は、当該レコードの配信キャンペーン情報が有効となり、車両20への更新用ソフトウェアの配信が許諾される日時を示す情報である。
更新対象台数1256は、当該レコードの配信キャンペーン情報が対象とする更新予定の車両20の台数を示す情報である。また、更新完了台数1257は、当該レコードの配信キャンペーン情報が対象とする車両20のうちソフトウェア更新が完了した台数を示す情報である。より具体的に言えば、更新完了台数1257は、後述する更新進捗状況情報1260の配信キャンペーンID1261が一致するレコードにおいてステータス1263が「更新完了」となった台数である(図7参照)。
そして更新日時1258は、配信キャンペーン情報1250の当該レコードが更新された日時を示す情報である。
なお、図4〜図6に例示したメインキャンペーン情報1230、テストキャンペーン情報1240、及び配信キャンペーン情報1250の各情報は、車載ソフトウェア配信システム1の管理者等によって、端末30の入出力装置330を介して入力される。「車載ソフトウェア配信システム1の管理者等」とは、具体的には例えば、車載ソフトウェア配信システム1の運用者、車両20の製造管理者、あるいは各ECUの製造管理者等が想定される。
図7は、更新進捗状況情報の具体例を示す図である。更新進捗状況情報は、配信キャンペーン単位で配信される更新用ソフトウェアの各車両20におけるインストールの進捗状況を管理する情報であって、更新進捗状況DB126に格納される。図7に示した更新進捗状況情報1260は、配信キャンペーンID1261、VIN1262、ステータス1263、及び更新日時1264を備えて構成されるテーブル形式のデータである。
配信キャンペーンID1261は、配信キャンペーン情報1250の配信キャンペーンID1251と共通のデータであり、配信キャンペーン情報を一意に特定可能な識別子である。また、VIN1262は、車両情報1210のVIN1211等と共通のデータであり、当該レコードに対応する車両20を一意に特定可能な識別子である。
ステータス1263は、当該レコードで指定された配信キャンペーンID1261の更新用ソフトウェアに対しての、VIN1262で特定される車両20における処理状況(進捗状況)を表す情報である。例えば図7の場合、ステータス1263が「更新完了」である場合は、車両20において更新用ソフトウェアのインストールが完了したことを意味する。このとき、後述する更新日時1264には、「更新完了」が確認された日時(または、インストールが完了した日時でもよい)が記録される。また、ステータス1263が「ダウンロード完了」である場合は、車両20において更新用ソフトウェアのダウンロードは完了したが、インストールは完了していないことを意味する。また、ステータス1263が「ユーザ許諾未取得」である場合は、車両20において更新用ソフトウェアのインストールに対してユーザ(例えばドライバ)の許諾が得られていない状況であることを意味する。
そして更新日時1264は、更新進捗状況情報1260の当該レコードが更新された日時を示す情報である。例えば更新日時1264には、配信キャンペーンID1261(配信キャンペーンID1251)とVIN1262との組合せによるレコードが更新された日時が示される。
(1−3)キャンペーンの処理
本実施の形態に係る車載ソフトウェア配信システム1における各種のキャンペーン(メインキャンペーン、テストキャンペーン、配信キャンペーン)について、それぞれの作成や実行に関する処理について説明する。
(1−3−1)メインキャンペーン、テストキャンペーンの作成
図8は、メインキャンペーン情報及びテストキャンペーン情報の作成処理の処理手順の一例を示すシーケンス図である。図8に示す処理は、端末30に搭載されている中央演算処理装置310のキャンペーン情報入出力部311と、テレマティクスセンタ10に搭載されている中央演算処理装置110の車両管理部111及びキャンペーン管理部112とによって実行される。
まず、ステップS101において、キャンペーン情報入出力部311は、管理者による入出力装置330の操作に応じて、全ての車両情報1210、車両構成情報1220、及びキャンペーン情報(メインキャンペーン情報1230、テストキャンペーン情報1240、配信キャンペーン情報1250)をテレマティクスセンタ10に問い合わせる。
ステップS101の問い合わせを受信したテレマティクスセンタ10では、車両管理部111及びキャンペーン管理部112が、車両DB121、車両構成DB122、メインキャンペーンDB123、テストキャンペーンDB124、及び配信キャンペーンDB125から、問い合わせ対象の各情報を検索し、抽出する(ステップS111)。そして、ステップS112において、車両管理部111及びキャンペーン管理部112は、S111で抽出した検索結果を端末30に送信する。
ステップS112で送信された検索結果を受信すると、キャンペーン情報入出力部311は、その検索結果を入出力装置330に表示する(ステップS102)。ステップS102における表示は「キャンペーン管理画面」として表示され、管理者は、キャンペーン管理画面を介して、各種のキャンペーン情報を作成(登録)したり登録済みのキャンペーン情報を修正したりすることができる。
ここで、図9は、キャンペーン管理画面の一例を説明する図である。図9に示したように、キャンペーン管理画面3310は入出力装置330に表示される。図9に例示したキャンペーン管理画面3310は、現時点における各種のキャンペーン情報の詳細がツリー形式で可視化されている。具体的には、メインキャンペーンID「M012」が付された1つのメインキャンペーン情報の詳細が示され、さらに、当該メインキャンペーン情報に従属するテストキャンペーン情報として、テストキャンペーンID「T45M012」または「T13M012」が付された2つのテストキャンペーン情報の詳細と、配信キャンペーンID「D98M012」または「D33M012」が付された2つの配信キャンペーン情報の詳細とが示されている。なお、テストキャンペーン情報と配信キャンペーン情報との従属関係は、配信キャンペーン情報の詳細表示における「引用元テストキャンペーンID」を参照することによって識別可能となっている。
また、図9に例示したキャンペーン管理画面3310には、管理者が選択可能なボタン3311〜3314が配置されている。
ボタン3311は、メインキャンペーンを新規作成するときに選択される。具体的には、メインキャンペーンを新規作成する場合には、管理者によってボタン3311を選択する操作が行われることで、メインキャンペーンを作成するために必要な所定の情報の入力画面が表示される。そして、管理者による上記所定の情報の入力が完了すると、入力情報に基づいて、端末30からテレマティクスセンタ10に対してメインキャンペーン情報の作成が依頼される(後述する図8のステップS103)。
また、ボタン3312は、配置箇所に紐付けされたメインキャンペーン情報を従属先としてテストキャンペーンを新規作成するときに選択される。具体的には、メインキャンペーンID「M012」のメインキャンペーンに従属するテストキャンペーンを新規作成する場合には、管理者によってボタン3312を選択する操作が行われることで、テストキャンペーンを作成するために必要な所定の情報の入力画面が表示される。そして、管理者による上記所定の情報の入力が完了すると、入力情報に基づいて、端末30からテレマティクスセンタ10に対してテストキャンペーン情報の作成が依頼される(後述する図8のステップS105)。
また、ボタン3313,3314は、配置箇所に紐付けされたテストキャンペーンを従属先として配信キャンペーンを新規作成するときに選択される。具体的には、テストキャンペーンID「T45M012」のテストキャンペーンに従属する配信キャンペーンを新規作成する場合には、管理者によってボタン3313を選択する操作が行われることで、配信キャンペーンを作成するために必要な所定の情報の入力画面が表示される。そして、管理者による上記所定の情報の入力が完了すると、入力情報に基づいて、端末30からテレマティクスセンタ10に対して配信キャンペーン情報の作成が依頼される(後述する図12のステップS403)。
なお、図9では図示を省略しているが、キャンペーン管理画面3310には、各キャンペーン情報の登録内容を修正するためのボタンが別に設けられていてもよい。
メインキャンペーン情報及びテストキャンペーン情報の作成処理の説明に戻る。図8のステップS102でキャンペーン管理画面3310が表示された後、管理者が当画面においてボタン3311を選択する操作が行われると、メインキャンペーンを作成するために必要な所定の情報の入力画面が表示される。そして、管理者による上記所定の情報の入力が完了すると、入力情報に基づいて、キャンペーン情報入出力部311は、メインキャンペーン情報の作成をテレマティクスセンタ10に依頼する(ステップS103)。
ここで、メインキャンペーンを新規作成するために必要な所定の情報には、図4に例示したメインキャンペーン情報1230におけるECU−ID1232及びクリティカルフラグ1233が含まれる。ECU−1232については、車両構成情報1220から当該メインキャンペーンで更新対象とするECUのECU−ID1222を選択すればよい。また、クリティカルフラグ1233については、当該メインキャンペーンの優先度に応じて選択すればよい。
なお、本実施の形態においてキャンペーン管理画面を介してキャンペーン情報の新規作成を開始する場合の操作手順は、上述したように所定のボタンの選択に応じて別の入力画面が表示されることに限定されない。他の操作手順としては例えば、キャンペーン情報の新規作成を開始する場合に、必要とされる所定の情報(例えば、メインキャンペーンであればECU−ID及びクリティカルフラグ)を入力したうえで、所定のボタン(例えば、ボタン3311)が選択されることによって、キャンペーン情報入出力部311がキャンペーン情報の作成をテレマティクスセンタ10に依頼するようにしてもよい。なお、このような操作手順は、メインキャンペーン(ステップS103)だけでなく、テストキャンペーン(後述する図8のステップS105)や配信キャンペーン(後述する図12のステップS403)の新規作成でも同様に適用可能である。
ステップS103におけるメインキャンペーン情報の作成依頼を受信したキャンペーン管理部112は、ステップS103の入力情報に基づいて、メインキャンペーンDB123に新しいメインキャンペーン情報1230のレコードを作成し、登録する(ステップS113)。そして、新規作成したメインキャンペーン情報1230の作成結果を端末30に送信する(ステップS114)。
そして、メインキャンペーン情報1230の作成結果を受信したキャンペーン情報入出力部311は、当該作成結果を入出力装置330に表示する(ステップS104)。このとき、ステップS103の入力情報を合わせて表示してもよい。
次に、管理者は、キャンペーン管理画面を介して、ステップS104までの処理で登録されたメインキャンペーンに従属するテストキャンペーンを新規に作成することができる。具体的には例えば、管理者がキャンペーン管理画面においてボタン3312を選択する操作が行われると、テストキャンペーンを作成するために必要な所定の情報の入力画面が表示される。そして、管理者による上記所定の情報の入力が完了すると、入力情報に基づいて、キャンペーン情報入出力部311は、テストキャンペーン情報の作成をテレマティクスセンタ10に依頼する(ステップS105)。
ここで、テストキャンペーンを新規作成するために必要な所定の情報には、図5に例示したテストキャンペーン情報1240における引用元メインキャンペーンID1242、及びテスト車両VIN1243が含まれる。引用元メインキャンペーンID1242については、ステップS104でテレマティクスセンタ10から受信したメインキャンペーンID1231を用いることができる。また、テスト車両VIN1243については、ステップS102で受信した検索結果のうちの車両情報1210におけるVIN1211から選択することができる。
なお、ステップS105でテスト車両VIN1243として選択可能なVIN1211は、当該VIN1211に紐付けられた車両情報1210のレコードにおいてテスト車両フラグ1216が「True」であるものに限定する等、全ての車両20から選択可能としない制約を設けることが好ましい。このようにテスト車両VIN1243として選択可能な車両20を制約することにより、テストキャンペーンにおけるテスト効率やテスト結果の信頼性を高めることに期待できる。
そして、ステップS105におけるテストキャンペーン情報の作成依頼を受信したキャンペーン管理部112は、ステップS105の入力情報に基づいて、テストキャンペーンDB124に新しいテストキャンペーン情報1240を作成し、登録する(ステップS115)。そして、新規作成したテストキャンペーン情報1240の作成結果を端末30に送信する(ステップS116)。
そして、テストキャンペーン情報1240の作成結果を受信したキャンペーン情報入出力部311は、当該作成結果を入出力装置330に表示する(ステップS106)。このとき、ステップS105の入力情報を合わせて表示してもよい。
その後、管理者によって、ステップS106までの処理で登録されたテストキャンペーン情報1240にテスト用の更新用ソフトウェアを登録するための操作が行われると、キャンペーン情報入出力部311は、テストキャンペーンへの更新用ソフトウェアの登録をテレマティクスセンタ10に依頼する(ステップS107)。
具体的には例えば、管理者は、端末30の記憶装置320から予め準備しておいた更新用ソフトウェアを抽出し、当該更新用ソフトウェアの対象リージョン、更新ファイル名、及び適用バージョン(それぞれ、図5に示したテストキャンペーン情報1240における対象リージョン1244、更新ファイル名1245、及び適用バージョン1246に対応する)を入力するとともに、テストキャンペーンへの更新用ソフトウェアの登録を指示する操作(例えば、キャンペーン管理画面における所定ボタンの選択等)を行う。そして、当該操作に基づいて、キャンペーン情報入出力部311は、入力された情報をテレマティクスセンタ10に送信する。
そして、ステップS107における更新用ソフトウェアの登録依頼を受信したキャンペーン管理部112は、ステップS107の入力情報に基づいて、テストキャンペーンDB124に格納されたテストキャンペーン情報1240の対象レコードに、更新用ソフトウェアに関する情報(ソフトウェア情報)を登録する(ステップS117)。そして、ステップS117の登録が成功し、テストキャンペーンにおける更新用ソフトウェアの配信準備が完了した旨を、作成結果として端末30に送信する(ステップS118)。
最後に、更新用ソフトウェアの作成結果を受信したキャンペーン情報入出力部311は、当該作成結果を入出力装置330に表示する(ステップS108)。
以上、図8に示した各ステップの処理が行われることによって、メインキャンペーン情報1230及びテストキャンペーン情報1240が作成され、テストキャンペーンにおけるテスト用の更新用ソフトウェアの配信準備が整う。
(1−3−2)テストキャンペーンの実行
図10及び図11は、テストキャンペーンに基づく更新用ソフトウェアの検証処理の処理手順の一例を示すシーケンス図(その1,その2)である。このうち、図10には、車両20がテレマティクスセンタ10から更新用ソフトウェアをダウンロードする処理が示される。また、図11には、図10に示したダウンロードの後、車両20が更新用ソフトウェアを対象のECUにインストールし、その結果をテレマティクスセンタ10に通知する処理が示される。
以下では、図10及び図11を参照しながら、テストキャンペーンの実行の流れを説明する。なお、図10及び図11を参照した以下の説明では、車両20は、図8のステップS105で指定されたテスト車両VIN1243に相当する車両(すなわちテスト車両)であるとし、管理者による操作を伴う図8の処理が行われた後に、実際に、テストキャンペーンによって更新用ソフトウェアの検証作業が実施されるケースを想定しているとする。
まず、図10を参照しながら、テストキャンペーンに基づく更新用ソフトウェアのダウンロード処理を説明する。図10に示した処理は、車両20に搭載されているソフトウェア更新装置210のキャンペーン確認部212及び更新用ソフトウェア要求部213と、テレマティクスセンタ10に搭載されている中央演算処理装置110のキャンペーン管理部112及び更新用ソフトウェア配信部113とによって実行される。
図10のステップS201において、車両20のキャンペーン確認部212は、エンジンECU241から得られる情報を用いてエンジン始動(ON状態)を検知する。エンジン始動を検知すると、キャンペーン確認部212は、当該車両20のVIN(車両情報1210のVIN1211)についてキャンペーンの有無をテレマティクスセンタ10に問い合わせる(ステップS202)。
ステップS202の問い合わせを受けたテレマティクスセンタ10では、キャンペーン管理部112が、受信したVINがテストキャンペーン情報1240のテスト車両VIN1243に登録されているか否かを確認する(ステップS211)。そして、キャンペーン管理部112は、ステップS211の確認結果(検索結果)を車両20に送信する(ステップS212)。ここでの検索結果としては、ステップS211において該当するレコードがあった場合は、当該レコードのテストキャンペーン情報1240を送信し、該当するレコードがなかった場合は、テストキャンペーン情報が登録されていない旨を送信する。
テレマティクスセンタ10からの検索結果を受信した車両20では、キャンペーン確認部212が、検索結果にテストキャンペーン情報1240が含まれているかを確認し(ステップS204)、テストキャンペーン情報1240が含まれていない場合には(ステップS204のNO)、ダウンロードする更新用ソフトウェアが存在しないことから、処理を終了する。一方、テストキャンペーン情報1240が含まれていた場合には(ステップS204のYES)、更新用ソフトウェア要求部213が、当該テストキャンペーン情報1240の更新ファイル名1245で特定される更新用ソフトウェアの提供をテレマティクスセンタ10に要求する(ステップS205)。
そして、テレマティクスセンタ10側では、ステップS205の要求を受信すると(ステップS213)、更新用ソフトウェア配信部113が、指定された更新ファイル名1245に基づいて、ソフトウェアDB127から要求された更新用ソフトウェアを抽出し、車両20に送信する(ステップS214)。
ステップS214で送信された更新用ソフトウェアは、車両20で受信されてダウンロードが開始され(ステップS206)、更新用ソフトウェア要求部213が、当該更新用ソフトウェアのダウンロードデータを記憶装置215に蓄積する(ステップS207)。そして、更新用ソフトウェアのダウンロードが完了すると、更新用ソフトウェア要求部213は、ダウンロード完了をテレマティクスセンタ10に通知する(ステップS208)。
そしてテレマティクスセンタ10では、ステップS208のダウンロード完了通知を受信(受領)すると、キャンペーン管理部112が、対象のテストキャンペーン情報1240の検証用ハッシュ値1247に対して、ハッシュ値の代わりに、更新進捗状況情報1260のステータス1263と共通する情報(具体的には、「ダウンロード完了」に相当する情報)を一時的に格納する(ステップS215)。この処理によって、テストキャンペーンがダウンロード完了まで進捗したことをテストキャンペーン情報1240で管理することができる。
その後、キャンペーン管理部112は、ダウンロードした更新用ソフトウェアのインストールの開始命令を車両20に送信する(ステップS216)。
そしてテレマティクスセンタ10では、ステップS216のインストール開始命令を受信(受領)すると、キャンペーン確認部212は、エンジンが停止状態(OFF状態)になるまで、更新用ソフトウェアのインストール開始を待機する待機状態に移行する(ステップS209)。キャンペーン確認部212は、エンジンECU241から得られる情報を用いてエンジン停止を検知することができる。その後、エンジンが停止状態になると、図11に示すようにインストール処理が開始される。
次に、図11を参照しながら、テストキャンペーンに基づく更新用ソフトウェアのインストール処理及び結果通知処理を説明する。図11に示した処理は、車両20に搭載されているソフトウェア更新装置210のキャンペーン確認部212及びECUソフトウェア更新部214と、テレマティクスセンタ10に搭載されている中央演算処理装置110のキャンペーン管理部112とによって実行される。
図11のステップS301において、車両20のキャンペーン確認部212は、エンジンECU241から得られる情報を用いてエンジン停止(OFF状態)を検知する。エンジン停止を検知すると、キャンペーン確認部212は、記憶装置215に更新用ソフトウェアが格納されているか、すなわちテストキャンペーン情報が存在するか否かを確認する(ステップS302)。
ステップS302の確認においてテストキャンペーン情報が存在しない場合には(ステップS302のNO)、インストールする更新用ソフトウェアが存在しないことから、処理を終了する。一方、テストキャンペーン情報が存在した場合には(ステップS302のYES)、キャンペーン確認部212は、更新対象ECUのソフトウェアインストールの開始をテレマティクスセンタ10に通知する(ステップS303)。
ステップS303のインストール開始通知を受信したテレマティクスセンタ10では、キャンペーン管理部112が、対象のテストキャンペーン情報1240の検証用ハッシュ値1247に対して、ハッシュ値の代わりに、更新進捗状況情報1260のステータス1263と共通する情報(具体的には、「インストール開始」に相当する情報)を一時的に格納する(ステップS311)。この処理によって、テストキャンペーンがインストール開始まで進捗したことをテストキャンペーン情報1240で管理することができる。
そして、車両20側では、ECUソフトウェア更新部214が、更新対象ECUのソフトウェアインストールを実行し、当該ECUの記憶装置を上書きする(ステップS304)。このとき、ECUソフトウェア更新部214は、更新対象ECUから更新の成否情報に加えて、当該ECUの記憶装置領域を1つのバイナリデータとみなして作成したハッシュ値を受け取る。そしてECUソフトウェア更新部214は、更新対象ECUから取得した更新の成否情報と、更新が成功した場合にはハッシュ値とを、テレマティクスセンタ10に送信する(ステップS305)。
そして、ステップS305で送信された更新の成否情報とハッシュ値とを受信したテレマティクスセンタ10では、キャンペーン管理部112が、対象のテストキャンペーン情報1240の検証用ハッシュ値1247を当該ハッシュ値に更新する(ステップS312)。
なお、車両20におけるソフトウェア更新が失敗していた場合(更新の失敗情報を受信した場合)には、キャンペーン管理部112は、対象のテストキャンペーン情報1240の検証用ハッシュ値1247に、更新進捗状況情報1260のステータス1263と共通する情報(具体的には、「テストキャンペーン失敗」に相当する情報)を一時的に格納することによって、テストキャンペーンが失敗したことを管理する。このような場合には、管理者が再度、修正版の更新用ソフトウェアをテストキャンペーンに登録して(図8のステップS107参照)、図10及び図11の処理を再実行することが考えられる。そして、再実行の結果、ソフトウェア更新が成功した場合には、車両20から更新の成否情報とともに送信されるハッシュ値を用いて、検証用ハッシュ値1247を更新すればよい。
以上、図10及び図11に示した各ステップの処理が行われることによって、テストキャンペーンの実行が完了する。そして、テストキャンペーンにおけるテストが成功に終わった場合には、後述するように、配信キャンペーンの作成(図12)を経て、配信キャンペーンの実行(図13,図14)が可能な状況となる。
(1−3−3)配信キャンペーンの作成
図12は、配信キャンペーン情報の作成処理の処理手順の一例を示すシーケンス図である。図12に示す処理は、端末30に搭載されている中央演算処理装置310のキャンペーン情報入出力部311と、テレマティクスセンタ10に搭載されている中央演算処理装置110の車両管理部111及びキャンペーン管理部112とによって実行される。
まず、ステップS401において、キャンペーン情報入出力部311は、管理者による入出力装置330の操作に応じて、全ての車両情報1210、車両構成情報1220、及びキャンペーン情報(メインキャンペーン情報1230、テストキャンペーン情報1240、配信キャンペーン情報1250)をテレマティクスセンタ10に問い合わせる。
ステップS401の問い合わせを受信したテレマティクスセンタ10では、車両管理部111及びキャンペーン管理部112が、車両DB121、車両構成DB122、メインキャンペーンDB123、テストキャンペーンDB124、及び配信キャンペーンDB125から、問い合わせ対象の各情報を検索し、抽出する(ステップS411)。そして、ステップS412において、車両管理部111及びキャンペーン管理部112は、S411で抽出した検索結果を端末30に送信する。
ステップS412で送信された検索結果を受信すると、キャンペーン情報入出力部311は、その検索結果を入出力装置330に表示する(ステップS402)。ステップS402における表示は、例えば図9に例示したキャンペーン管理画面3310のように表示される。図9を参照して前述したように、管理者は、キャンペーン管理画面3310を介して、各種のキャンペーン情報を作成(登録)したり登録済みのキャンペーン情報を修正したりすることができる。
ステップS402においてキャンペーン管理画面3310が表示された後、管理者が当画面においてボタン3313(またはボタン3314)を選択する操作が行われると、配信キャンペーンを作成するために必要な所定の情報の入力画面が表示される。そして、管理者による上記所定の情報の入力が完了すると、入力情報に基づいて、キャンペーン情報入出力部311は、配信キャンペーン情報の作成をテレマティクスセンタ10に依頼する(ステップS403)。
ここで、配信キャンペーンを新規作成するために必要な所定の情報には、図6に例示した配信キャンペーン情報1250における引用元メインキャンペーンID1252、引用元テストキャンペーンID1253、対象リージョン1254、及び配信開始日時1255が含まれる。このうち、引用元テストキャンペーンID1253については、ステップS402で受信した検索結果から当該配信キャンペーンが従属するテストキャンペーンのテストキャンペーン情報1240を1つ選択し、そのテストキャンペーンID1241を選択すればよい。また、引用元メインキャンペーンID1252及び対象リージョン1254については、上記選択したテストキャンペーン情報1240の引用元メインキャンペーンID1242及び対象リージョン1254を引き当てればよい。そして、配信開始日時1255については、管理者が任意で設定すればよい。
なお、図12に示す配信キャンペーン情報の作成処理においては、ステップS403で配信キャンペーン情報の作成依頼が行われただけでは、配信キャンペーン情報は作成されず、テレマティクスセンタ10における以降の処理(ステップS413〜S417)によって、配信キャンペーン作成前の最終確認用の情報が抽出される。
ステップS403における配信キャンペーン情報の作成依頼を受信したキャンペーン管理部112は、ステップS403の入力情報に基づいて、まず、テストキャンペーンDB124に格納されている引用元のテストキャンペーン情報1240を検索する(ステップS413)。さらにキャンペーン管理部112は、引用元のテストキャンペーン情報1240が存在し、かつ、当該レコードの検証用ハッシュ値1247にステータス(例えば、「ダウンロード完了」や「インストール開始」等に相当する情報)ではなくハッシュ値が格納(蓄積)されているかを確認する(ステップS414)。
ステップS414において指定したテストキャンペーン情報1240にハッシュ値が蓄積されていない場合には(ステップS414のNO)、テストキャンペーンにおける更新用ソフトウェアの検証が完了していないことを意味するので、キャンペーン管理部112は配信キャンペーン情報の作成を取り止め、その結果を作成結果として端末30に送信する(ステップS420)。
一方、ステップS414において指定したテストキャンペーン情報1240にハッシュ値が蓄積されていた場合には(ステップS414のYES)、テストキャンペーンにおける更新用ソフトウェアの検証が正常に完了していることを意味するので、キャンペーン管理部112は、ステップS415の処理を行う。
ステップS415では、キャンペーン管理部112は、テストキャンペーン情報1240から得られる引用元メインキャンペーンID1242を用いて、メインキャンペーンDB123に格納されている引用元のメインキャンペーン情報1230を検索し、このメインキャンペーン情報1230からECU−ID1232を抽出する。ステップS413で検索された引用元のテストキャンペーン情報1240とステップS415で検索された引用元のメインキャンペーン情報1230は、何れも新規作成しようとする配信キャンペーン情報が従属するキャンペーン情報である。
次に、ステップS416において、キャンペーン管理部112は、車両DB121に格納されている車両情報1210及び車両構成DB122に格納されている車両構成情報1220を検索し、車両構成情報1220のECU−ID1222が引用元のメインキャンペーン情報1230のECU−ID1232と一致し、かつ、車両情報1210の所属リージョン1215が引用元のテストキャンペーン情報1240の対象リージョン1244と一致する車両のVIN1211(VIN1221)を全て抽出する。
ステップS416で抽出された車両のVIN1211(VIN1221)は、配信キャンペーンの対象となる車両のVINに相当するため、キャンペーン管理部112は、これらをまとめた一覧(VIN一覧)を端末30に送信する(ステップS417)。
そして、VIN一覧を受信したキャンペーン情報入出力部311は、受信したVIN一覧を入出力装置330に表示する(ステップS404)。ステップS404の表示によって、配信キャンペーン作成前の最終確認用の情報が管理者に示される。これに対して管理者は、表示されたVIN一覧を確認し、配信キャンペーンの対象車両として問題がないと判断した場合に、配信キャンペーンの作成決定を通知するための所定の操作を行う。当該操作が行われると、キャンペーン情報入出力部311は、配信キャンペーンの作成決定通知をテレマティクスセンタ10に送信する(ステップS405)。
ステップS405による配信キャンペーンの作成決定通知を受信したテレマティクスセンタ10では、キャンペーン管理部112が、ステップS413で受信した情報に基づいて、配信キャンペーンDB125に新しい配信キャンペーン情報1250のレコードを作成する(ステップS418)。
さらに、キャンペーン管理部112は、ステップS416で抽出したVIN一覧に基づいて、更新進捗状況DB126にそれぞれのVINで個別の更新進捗状況情報1260のレコードを作成することによって、配信キャンペーンの実行における進捗状況(ステータス)を対象とする車両20の1台ごとに管理できるようにする(ステップS419)。またこのとき、対象の車両20の総台数をメインキャンペーン情報1230の更新対象台数1234に記録し、更新完了台数1235には「0」を記録する。
ステップS419の処理の完了後、キャンペーン管理部112は、新規作成した配信キャンペーン情報1250及び更新したメインキャンペーン情報1230に関する作成結果を端末30に送信する(ステップS420)。
そして、ステップS420で送信された作成結果を受信したテレマティクスセンタ10では、キャンペーン情報入出力部311が、当該作成結果を入出力装置330に表示する(ステップS406)。
以上、図12に示した各ステップの処理が行われることによって、メインキャンペーン情報1230及びテストキャンペーン情報1240に従属する配信キャンペーン情報1250が作成され、配信キャンペーンにおける更新用ソフトウェアの配信準備が整う。
(1−3−4)配信キャンペーンの実行
図13及び図14は、配信キャンペーンに基づく更新用ソフトウェアの配信処理の処理手順の一例を示すシーケンス図(その1,その2)である。このうち、図13には、車両20がテレマティクスセンタ10から更新用ソフトウェアをダウンロードする処理が示される。また、図14には、図13に示したダウンロードの後、車両20が更新用ソフトウェアを対象ECUにインストールし、その結果をテレマティクスセンタ10に通知する処理が示される。
以下では、図13及び図14を参照しながら、配信キャンペーンの実行の流れを説明する。
まず、図13を参照しながら、配信キャンペーンに基づく更新用ソフトウェアのダウンロード処理を説明する。図13に示した処理は、車両20に搭載されているソフトウェア更新装置210のキャンペーン確認部212及び更新用ソフトウェア要求部213と、テレマティクスセンタ10に搭載されている中央演算処理装置110のキャンペーン管理部112、更新用ソフトウェア配信部113及びジオコーディング処理部114とによって実行される。
図13のステップS501において、車両20のキャンペーン確認部212は、エンジンECU241から得られる情報を用いてエンジン始動(ON状態)を検知する。エンジン始動を検知すると、キャンペーン確認部212は、当該車両20のVIN(車両情報1210のVIN1211)について配信キャンペーンの有無(配信キャンペーンによるソフトウェアのアップデートの有無)をテレマティクスセンタ10に問い合わせる(ステップS502)。またステップS502では、キャンペーン確認部212は、位置測位装置216を用いて車両20の現在の位置情報を確認し、キャンペーン問い合わせとともにテレマティクスセンタ10に送信する。
ステップS502の問い合わせを受けたテレマティクスセンタ10では、キャンペーン管理部112が、送信元の車両20のVINを用いて車両情報1210を検索し、同じ値のVIN1211を有するレコードにおける最終停車位置1213を、受信した位置情報によって更新する(ステップS511)。さらにステップS511では、ジオコーディング処理部114が、地図DB128に格納されている地図データを用いて、受信した位置情報から住所を特定し、特定した住所が含まれるリージョンによって所属リージョン1215を更新する。
そして、キャンペーン管理部112は、更新進捗状況情報1260を検索し、VIN1262が送信元の車両20のVINと一致するレコードが存在するか否かを確認する(ステップS512)。そして、キャンペーン管理部112は、ステップS512の確認結果(検索結果)を車両20に送信する(ステップS513)。
ここでステップS512の検索結果について詳しく説明すると、ステップS511において更新進捗状況情報1260に該当するレコード(VINが一致するレコード)があった場合は、配信キャンペーン有りの検索結果として、キャンペーン管理部112は、当該レコードの配信キャンペーンID1261に対応する配信キャンペーン情報1250と、当該レコードのVIN1262に対応する車両情報1210に含まれるサイレントフラグ1217と、上記配信キャンペーン情報1250の引用元テストキャンペーンID1253に対応するテストキャンペーン情報1240に含まれる更新ファイル名1245と、上記配信キャンペーン情報1250の引用元メインキャンペーンID1252に対応するメインキャンペーン情報1230に含まれるクリティカルフラグ1233と、を検索結果として車両20に送信する。一方、ステップS511において更新進捗状況情報1260に該当するレコード(VINが一致するレコード)がなかった場合、キャンペーン管理部112は、配信キャンペーンがない旨の検索結果を送信する。
なお、ステップS512の検索結果について、ステップS511において更新進捗状況情報1260にVINが一致するレコードがあったとしても、当該レコードに基づいて抽出される各キャンペーン情報におけるリージョン(テストキャンペーン情報1240の対象リージョン1244や配信キャンペーン情報1250の対象リージョン1254)が、送信元の車両20のリージョン(車両情報1210の所属リージョン1215)と一致しない場合には、キャンペーン管理部112は、配信キャンペーンがない旨の検索結果を送信するようにすることが好ましい。
テレマティクスセンタ10からの検索結果を受信した車両20では(ステップS503)、キャンペーン確認部212が、検索結果に配信キャンペーン情報1250が含まれているかを確認し(ステップS504)、配信キャンペーン情報1250が含まれていない場合には(ステップS504のNO)、ダウンロードする更新用ソフトウェアが存在しないことから、処理を終了する。一方、配信キャンペーン情報1250が含まれていた場合には(ステップS504のYES)、更新用ソフトウェア要求部213は、上記配信キャンペーン情報1250と合わせて受信したテストキャンペーン情報1240の更新ファイル名1245によって特定される更新用ソフトウェアの提供をテレマティクスセンタ10に要求する(ステップS505)。
そして、テレマティクスセンタ10側では、ステップS505の要求を受信すると(ステップS514)、更新用ソフトウェア配信部113が、指定された更新ファイル名1245に基づいて、ソフトウェアDB127から要求された更新用ソフトウェアを抽出し、車両20に送信する(ステップS515)。
ステップS515で送信された更新用ソフトウェアは、車両20で受信されてダウンロードが開始され(ステップS506)、キャンペーン管理部112が、当該更新用ソフトウェアのダウンロードデータを記憶装置215に蓄積する(ステップS507)。そして、更新用ソフトウェアのダウンロードが完了すると、キャンペーン管理部112は、ダウンロード完了をテレマティクスセンタ10に通知する(ステップS508)。
そしてテレマティクスセンタ10では、ステップS508のダウンロード完了通知を受信(受領)すると、キャンペーン管理部112が、更新進捗状況情報1260の該当するレコードのステータス1263に、配信キャンペーンがダウンロード完了まで進捗したことを登録する(ステップS516)。
その後、キャンペーン管理部112は、ダウンロードした更新用ソフトウェアのインストールの開始命令を車両20に送信する(ステップS517)。
そしてテレマティクスセンタ10では、ステップS516のインストール開始命令を受信(受領)すると、キャンペーン確認部212は、エンジンが停止状態(OFF状態)になるまで、更新用ソフトウェアのインストール開始を待機する待機状態に移行する(ステップS509)。キャンペーン確認部212は、エンジンECU241から得られる情報を用いてエンジン停止を検知することができる。その後、エンジンが停止状態になると、図14に示すようにインストール処理が開始される。
次に、図14を参照しながら、配信キャンペーンに基づく更新用ソフトウェアのインストール処理及び結果通知処理を説明する。図14に示した処理は、車両20に搭載されているソフトウェア更新装置210のキャンペーン確認部212及びECUソフトウェア更新部214と、テレマティクスセンタ10に搭載されている中央演算処理装置110のキャンペーン管理部112とによって実行される。
図14のステップS601において、車両20のキャンペーン確認部212は、エンジンECU241から得られる情報を用いてエンジン停止(OFF状態)を検知する。エンジン停止を検知すると、キャンペーン確認部212は、記憶装置215に更新用ソフトウェアが格納されているか、すなわち配信キャンペーン情報が存在するか否かを確認する(ステップS602)。
ステップS602の確認において配信キャンペーン情報が存在しない場合には(ステップS602のNO)、インストールする更新用ソフトウェアが存在しないことから、今回のソフトウェア更新処理を終了し、最後に車両20の位置測位装置216から現在の位置情報を取得して最終停車位置としてテレマティクスセンタ10に送信する(ステップS611)。
一方、ステップS602の確認において配信キャンペーン情報が存在した場合には(ステップS602のYES)、キャンペーン確認部212は、配信キャンペーンに基づく更新用ソフトウェアのダウンロード処理のなかでテレマティクスセンタ10から受信したサイレントフラグ1217(図13のステップS503参照)が「True」であるか否かを確認する(ステップS603)。サイレントフラグ1217が「True」であった場合には(ステップS603のYES)、ソフトウェア更新に対する車両20のドライバへの告知は不要であると判断し、以降のステップS604〜S606の処理を行わずにステップS607に進む。一方、サイレントフラグ1217が「False」であった場合には(ステップS603のNO)、キャンペーン確認部212は、ソフトウェア更新に対する車両20のドライバへの告知(これから更新用ソフトウェアのインストールを開始すること)をナビゲーション端末230の入出力装置234に表示させる(ステップS604)。
次に、キャンペーン確認部212は、配信キャンペーンに基づく更新用ソフトウェアのダウンロード処理のなかでテレマティクスセンタ10から受信したクリティカルフラグ1233(図13のステップS503参照)が「True」であるか否かを確認する(ステップS605)。クリティカルフラグ1233が「True」であった場合には(ステップS605のYES)、ソフトウェア更新の緊急性が高く、車両20のドライバにソフトウェア更新の拒否権がないと判断し、ステップS606の処理を行わずにステップS607に進む。一方、クリティカルフラグ1233が「False」であった場合には(ステップS605のNO)、キャンペーン確認部212は、ソフトウェア更新を「これから実施する」か、または「後で実施する」かの選択肢をナビゲーション端末230の入出力装置234に表示させて、車両20のドライバから更新用ソフトウェアのインストールに対する許諾を取得する(ステップS606)。
ステップS606においてドライバが「後で実施する」ことを選択した場合は(ステップS606のNO)、インストールの許諾を得られなかったため、車両20における今回のソフトウェア更新処理を終了し、最後に車両20の位置測位装置216から現在の位置情報を取得して最終停車位置としてテレマティクスセンタ10に送信する(ステップS611)。この場合、次回のエンジン停止時に、改めて、ステップS606によるインストールの実行許諾が取得される。
ステップS606においてドライバが「これから実施する」ことを選択した場合は(ステップS606のYES)、キャンペーン確認部212は、更新対象ECUのソフトウェアインストールの開始をテレマティクスセンタ10に通知する(ステップS607)。
ステップS607のインストール開始通知を受信したテレマティクスセンタ10では、キャンペーン管理部112が、更新進捗状況情報1260の該当するレコードのステータス1263に、配信キャンペーンがインストール開始まで進捗したことを登録する(ステップS621)。
そして、車両20側では、ECUソフトウェア更新部214が、更新対象ECUのソフトウェアインストールを実行し、当該ECUの記憶装置を上書きする(ステップS608)。このとき、ECUソフトウェア更新部214は、更新対象ECUから更新の成否情報に加えて、当該ECUの記憶装置領域を1つのバイナリデータとみなして作成したハッシュ値を受け取る。そしてECUソフトウェア更新部214は、更新対象ECUから取得した更新の成否情報と、更新が成功した場合にはハッシュ値とを、テレマティクスセンタ10に送信する(ステップS609)。
そして、ステップS609で送信された更新の成否情報とハッシュ値とを受信したテレマティクスセンタ10では、キャンペーン管理部112が、更新進捗状況情報1260の該当するレコードのステータス1263に、配信キャンペーンがインストール完了まで進捗したことを登録する(ステップS622)。
さらに、キャンペーン管理部112は、ステップS622で登録した更新進捗状況情報1260のレコードから配信キャンペーンID1261を抽出し、当該配信キャンペーンID1261に対応する配信キャンペーン情報1250から引用元テストキャンペーンID1253を抽出し、当該引用元テストキャンペーンID1253と同値のテストキャンペーンID1241を有するテストキャンペーン情報1240に含まれる検証用ハッシュ値1247を抽出する。そして、キャンペーン管理部112は、この抽出した検証用ハッシュ値1247と、ステップS622で車両20から受信したハッシュ値とを比較する(ステップS623)。そして、キャンペーン管理部112は、ステップS623におけるハッシュ値の比較結果を車両20に送信する(ステップS624)。
そして、テレマティクスセンタ10からのハッシュ値の比較結果を受信した車両20では、キャンペーン確認部212が、当該比較結果に応じて車両20の制御を実施する(ステップS610)。詳しく説明すると、2つのハッシュ値が同値であった場合には、配信キャンペーンの更新用ソフトウェアが、テストキャンペーンによる検証時と同じく正常にインストールされたことを意味するため、車両20に対して特段の制御を実施しない。一方、2つのハッシュ値が同値ではなかった場合には、配信キャンペーンの更新用ソフトウェアが正常にインストールされていないことを意味するため、車両20に対してインストール失敗時のために予め定められた所定の制御を実施する。具体的には例えば、更新用ソフトウェアのインストール(ステップS608)を再度開始したり、ナビゲーション端末230の入出力装置234に問い合わせ先の情報を表示したりする等が考えられる。これらインストール失敗時の所定の制御は上記例に限定されず、他にも例えば、車両20のエンジンを停止させる等の制御を実施するようにしてもよい。
ステップS610において車両20で何れの制御が実施された場合も、その後、キャンペーン確認部212は、最後に車両20の位置測位装置216から現在の位置情報を取得して最終停車位置としてテレマティクスセンタ10に送信する(ステップS611)。
そして、最終停車位置を受信したテレマティクスセンタ10では、キャンペーン管理部112が、対象車両20のVIN1211を有する車両情報1210のレコードを車両DB121から抽出し、受信した最終停車位置に基づいて、当該レコードにおける最終停車位置1213及び所属リージョン1215を更新する(ステップS625)。なお、所属リージョン1215の更新では、受信した最終停車位置に基づいて特定される現在のリージョンによって上書きされるが、このようなリージョンを特定する際、前述した図13のステップS511の処理と同様に、ジオコーディング処理部114による処理が行われてもよい。
なお、本実施の形態に係る車載ソフトウェア配信システム1において、図14のステップS623で行われるハッシュ値の比較処理は、テレマティクスセンタ10のキャンペーン管理部112ではなく、車両20に搭載されたソフトウェア更新装置210によって実施されるようにしてもよい。その場合、図13のステップS515で行われる処理において、テレマティクスセンタ10は、更新用ソフトウェアを車両20に送信する際に、当該更新用ソフトウェアのテストキャンペーンにおいて登録された検証用ハッシュ値1247を合わせて送信することになる。このように構成すると、更新用ソフトウェアが正常にインストールされたか否かを、インストール直後の車両20の側で判断することができるため(テレマティクスセンタ10に通信する必要がないため)、仮にインストールが正常に完了しなかった場合でも、速やかにリカバリ処理(例えば、再度のインストール開始)を行うことに期待できる。
以上、図13及び図14に示した各ステップの処理が行われることによって、配信キャンペーンの実行が完了する。
図13及び図14の処理は、配信キャンペーンによる対象車両20のそれぞれに対して実行される。そしてそれぞれの対象車両20において更新用ソフトウェアのインストールが進むと、配信キャンペーン情報1250の更新完了台数1257が更新されていく(更新日時1258も更新される)。そして最終的に、更新完了台数1257の値が更新対象台数1256と同値になると、配信キャンペーンの対象車両20の全てで更新用ソフトウェアのインストールが正常に完了したことを意味するため、更新進捗状況情報1260のステータス1263に「更新完了」が登録される(更新日時1264も更新される)。
以上に説明したように、本実施の形態に係る車載ソフトウェア配信システム1では、車載ソフトウェア配信サーバであるテレマティクスセンタ10が、同一機能のアップデートをキャンペーン(メインキャンペーン)で管理し、当該キャンペーンに基づくソフトウェアを当該キャンペーンの対象車両に遠隔で配信する。より詳しくは、キャンペーン管理部112が、メインキャンペーンの対象車両を所定の基準(例えばテスト車両フラグ1216や所属リージョン1215等)に基づいてグループに分類し、当該分類したグループごとにキャンペーンに従属する複数のサブキャンペーン(テストキャンペーンや配信キャンペーン)を作成し、更新用ソフトウェア配信部113が、それぞれのサブキャンペーンごとに、当該サブキャンペーンに基づくソフトウェアを当該サブキャンペーンの対象車両に遠隔で配信することを特徴とする。このような車載ソフトウェア配信システム1によれば、配信キャンペーン(第2のサブキャンペーン)において対象車両20に対して、一斉にまたは順次、更新用ソフトウェアの配信及びインストールを実行可能にするだけでなく、テストキャンペーン(第1のサブキャンペーン)において検証用の特定車両(テスト車両)にのみ更新用ソフトウェアを配信したり、車両20の所属リージョンに応じて、適用バージョンや更新ファイル名が異なる更新用ソフトウェアを配信したりすることができるため、メインキャンペーンにおいて更新用ソフトウェアを画一的ではなく柔軟に配信する制御を実現することができる。
また、本実施の形態に係る車載ソフトウェア配信システム1では、1つのメインキャンペーンにおいて、テストキャンペーンによる特定のテスト車両に対する検証用のソフトウェアの配信(及びインストール)が成功したときに(図12のステップS414のYES)、他の対象車両に向けての配信キャンペーンが作成され(図12のステップS418)、テストキャンペーンが成功した場合にのみ配信キャンペーンが実行される。このような車載ソフトウェア配信システム1によれば、一般向けの配信キャンペーンを実行する前に、テストキャンペーンによって更新用ソフトウェアの配信(及びインストール)に対する実効性を確認することができるため、キャンペーンによる機能アップデートの安全性及び確実性を高めることができる。
さらに、本実施の形態に係る車載ソフトウェア配信システム1では、テストキャンペーンにおいてソフトウェアインストール後の更新対象ECUから取得したハッシュ値と、配信キャンペーンにおいてソフトウェアインストール後の更新対象ECUから取得したハッシュ値とを比較し(図14のステップS623)、両ハッシュ値が一致した場合に、配信キャンペーンが成功(更新用ソフトウェアの正常なインストール)と判断することにより、キャンペーンによる機能アップデートの安全性及び確実性をより向上させることができる。
また、図9に例示したキャンペーン管理画面3310のように、本実施の形態に係る車載ソフトウェア配信システム1では、これらの各種キャンペーンの設定について、管理者による選択や修正が可能であることから、より柔軟なキャンペーンの設定及び実行が可能となる。
(2)第2の実施の形態
本発明の第2の実施の形態について説明する。第2の実施の形態に係る車載ソフトウェア配信システムの構成例は、図1に例示した第1の実施の形態に係る車載ソフトウェア配信システム1と同等であるとし、第1の実施の形態と共通する構成や処理については、説明を省略する。
第2の実施の形態は、テレマティクスセンタ10に搭載された中央演算処理装置110における配信開始日時変更部115による処理が行われる点で、第1の実施の形態と異なる。そこで以下では、この配信開始日時変更部115による処理を中心に、第2の実施の形態に係る車載ソフトウェア配信システム1について説明する。
(2−1)配信キャンペーンの作成
図15は、第2の実施の形態における配信キャンペーン情報の作成処理の処理手順の一例を示すシーケンス図である。図15に示す処理は、端末30に搭載されている中央演算処理装置310のキャンペーン情報入出力部311と、テレマティクスセンタ10に搭載されている中央演算処理装置110の車両管理部111、キャンペーン管理部112及び配信開始日時変更部115とによって実行される。
なお、図15において、配信キャンペーン情報の作成処理が開始されてから、端末30によるステップS404の処理及びテレマティクスセンタ10によるステップS417の処理が行われるまでは、第1の実施の形態において図12を参照しながら説明した配信キャンペーン情報の作成処理の同ステップの処理と同じであるため、説明を省略する。
図15によれば、ステップS404においてキャンペーン情報入出力部311がテレマティクスセンタ10から受信したVIN一覧を入出力装置330に表示されることにより、配信キャンペーン作成前の最終確認用の情報が管理者に示される。これに対して管理者は、表示されたVIN一覧を確認し、配信キャンペーンの対象車両として問題がないと判断した場合に、「配信キャンペーンの作成決定を通知するための所定の操作」を行う。上記所定の操作には、例えば、対象となったVINを持つ車両群(VIN一覧に示された、配信キャンペーンの全対象車両)のグループ分割数(N個)を指定する操作や、グループごとの更新用ソフトウェアの配信開始日時(配信開始日時情報)を設定する操作等が含まれる。「配信キャンペーンの作成決定を通知するための所定の操作」の具体例については、図16を参照しながら、別途後述する。
そして、管理者によって配信キャンペーンの作成決定を通知するための上記所定の操作が行われると、キャンペーン情報入出力部311は、当該操作に基づいて、対象となったVINを持つ車両群をN個のグループに分割し、グループごとに異なる配信開始日時情報を設定する(ステップS701)。
なお、車両群をN個のグループに分割する方法としては、例えば、管理者が入出力装置330を操作して1台ずつグループを指定する方法が考えられる。他にも例えば、車両群のVINから車両情報1210を検索し、例えば利用頻度1218が低いほうから順にソートした結果を用いて、指定されたグループ数に分割する方法も考えられる。
その後、キャンペーン情報入出力部311は、ステップS701で設定されたN個のグループのそれぞれグループについて、配信キャンペーンの作成決定通知をテレマティクスセンタ10に送信する(ステップS702)。
ステップS702による配信キャンペーンの作成決定通知を受信したテレマティクスセンタ10では、キャンペーン管理部112が、ステップS413で受信した情報に基づいて、配信キャンペーンDB125にN個の新しい配信キャンペーン情報1250を作成する(ステップS711)。
さらに、キャンペーン管理部112は、VIN一覧に基づいて、更新進捗状況DB126にそれぞれのVINで個別の更新進捗状況情報1260のレコードを作成することによって、配信キャンペーンの実行における進捗状況(ステータス)を対象とする車両20の1台ごとに管理できるようにする(ステップS712)。またこのとき、対象の車両20の総台数をメインキャンペーン情報1230の更新対象台数1234に記録し、更新完了台数1235には「0」を記録する。
ステップS419の処理の完了後、キャンペーン管理部112は、新規作成した配信キャンペーン情報1250及び更新したメインキャンペーン情報1230に関する作成結果を端末30に送信する(ステップS713)。
そして、ステップS713で送信された作成結果を受信したテレマティクスセンタ10では、キャンペーン情報入出力部311が、当該作成結果を入出力装置330に表示する(ステップS703)。
以上、図15に示した各ステップの処理が行われることによって、管理者の要望に応じて、対象の車両20を複数グループに分割して配信キャンペーンを作成し、かつ、それぞれのグループ(配信キャンペーン)で異なる配信開始日時を設定することができる。
次に、図15に示した配信キャンペーン情報の作成処理における、「配信キャンペーンの作成決定を通知するための所定の操作」について、より詳しく説明する。
図16は、配信キャンペーン作成画面の一例を説明する図である。図16に示した配信キャンペーン作成画面3320は、配信キャンペーンの新規作成時に管理者による所定の操作を受付可能に表示される画面であって、第1の実施の形態において図9に例示したキャンペーン管理画面3310と同様に入出力装置330に表示される。例えば、配信キャンペーン作成画面3320は、キャンペーン管理画面3310において配信キャンペーンを新規作成する操作が行われた場合に(具体的には、ボタン3313やボタン3314が選択された場合に)、入出力装置330に表示される。
図16の配信キャンペーン作成画面3320には、配信対象となる複数の車両20に関する情報(例えば、VIN一覧)がテーブルで表示される表示領域3321と、配信キャンペーンの分割数に関する情報が表示される表示領域3322と、第1番目に配信される配信キャンペーン(第1配信キャンペーン)の配信開始日時が表示される表示領域3323と、第2番目に配信される配信キャンペーン(第2配信キャンペーン)等における配信開始日時の間隔(配信開始間隔)が表示される表示領域3324と、表示領域3322〜3324の表示内容をそれぞれ修正(設定)するためのボタン3325〜3327と、配信キャンペーン作成画面3320の表示内容による配信キャンペーンの作成を決定する場合に選択されるボタン3328と、が配置されている。
このうち、表示領域3321に表示されたテーブルは、配信対象となる複数の車両20を所定の法則に従ってN個のグループに分割するためにソート可能なVIN一覧である。より具体的には、このテーブルは、対象車両20のそれぞれについて(VIN1211)、車両情報1210から車種ID1212、所属リージョン1215、利用頻度1218、及び更新日時1219が抽出されて表示されたものであり、各項目で昇順あるいは降順にソート可能とされている。図16では、対象車両20の利用頻度が少ない順にソートした例が表示されている。
配信キャンペーン作成画面3320における、管理者による「配信キャンペーンの作成決定を通知するための所定の操作」としては、まず、表示領域3321においてソートが行われて、配信キャンペーンにおいて優先的にファイルを配信したい対象車両20が表示領域3321において上位(上側)にくるように、管理者が所望する順番への並べ替えが行われる。
そして、表示領域3321においてソートを行った後は、表示領域3322において、配信キャンペーンを何個生成するか、すなわち、配信対象となる車両群を何個のグループに分割するかを決定する(ボタン3325)。
次に、表示領域3323において、分割したN個のグループのうち指定されたソートで最も順序が前にある第1グループについて、ファイルの配信開始日時を入力する。第1グループは最も優先的にファイルを配信したいグループである(第1配信キャンペーン)。その後、表示領域3324において、第1グループ以降のグループ(第2グループ等)について、第1グループへのファイル配信からどの程度遅延させてファイルを配信するかの配信開始間隔を入力する。
上記のような表示領域3321〜3323に対する操作が「配信キャンペーンの作成決定を通知するための所定の操作」に相当し、これらの操作に基づいて、配信キャンペーンのグループ分割や各グループにおける配信開始日時の設定等が行われる(図15のステップS701)。
そして、上記の入力が全て完了した後に、ボタン3328が選択されると、管理者が指定した方法で、端末30からテレマティクスセンタ10に対してN個の配信キャンペーンの作成決定通知が送信される(図15のステップS702)。
具体的には、図16の配信キャンペーン作成画面3320の表示内容によって車両群をグループ分けした場合には、利用頻度の少ない車両から順にグループが3つ生成され、最も利用頻度の少ないグループ(第1グループ)に対して、配信キャンペーンDB125において、配信開始日時1255に「2017/11/01 00:00:00」が設定された配信キャンペーン情報1250が新規作成される(第1配信キャンペーン)。次に利用頻度の少ないグループ(第2グループ)に対しては、配信開始日時1255に前述のグループの配信開始日時の1週間後である「2017/11/08 00:00:00」が設定された配信キャンペーン情報1250が新規作成され(第2配信キャンペーン)、最も利用頻度の多いグループ(第3グループ)に対しては、配信開始日時1255に更に1週間後の「2017/11/15 00:00:00」が設定された配信キャンペーン情報1250が新規作成される(第3配信キャンペーン)。これにより、対象車両20のうち利用頻度が低い車両であるほど、配信開始日時が早期に設定されることになる。
ここで、例えば第1の実施の形態で説明した配信キャンペーンにおいて、全ての対象車両20に対して更新用ソフトウェアのファイルを一斉に配信するとした場合、配信開始直後に一斉に対象車両20からのアクセスが集中することによってテレマティクスセンタ10の負荷が急増する可能性がある。これに対して、上述した第2の実施の形態に係る車載ソフトウェア配信システム1では、配信キャンペーン(サブキャンペーン)の対象車両を所定の基準(例えば、利用頻度1218)によってソートした結果に基づいて、配信キャンペーンを複数のグループに分割することができ、分割した配信キャンペーンのそれぞれで、異なるソフトウェアの配信開始タイミング(配信開始日時)を設定することができる。このように構成されることにより、第2の実施の形態に係る車載ソフトウェア配信システム1では、テレマティクスセンタ10の負荷を管理者の意図する態様で分散させ、かつ、利用頻度が低く更新機会が少ない対象車両20に対して優先的に配信することで、不具合の修正を意図した更新用ファイルの配信を確実に実行させる効果に期待できる。特に、利用頻度が低い対象車両20に対して優先的に配信することによって、メインキャンペーン全体におけるキャンペーン達成率(更新進捗率)の向上に期待することができる。
また、表示領域3321に関して前述したように、第2の実施の形態における車両20のソート方法は、利用頻度だけでなく、リージョンや車種等、様々なデータを利用することができる。これにより、第2の実施の形態に係る車載ソフトウェア配信システム1は、テレマティクスセンタ10の負荷を抑えるために、特定車種のソフトウェアを優先的に更新するようにしたり、特定のリージョンに位置する車両のソフトウェアを優先的に更新したりすることができ、第1の実施の形態よりもさらに柔軟に、更新用ソフトウェアの配信制御を実現することができる。
(2−2)配信開始日時の変更
上述したように、第2の実施の形態に係る車載ソフトウェア配信システム1では、複数のグループに分割した配信キャンペーンのそれぞれに異なる配信開始日時を設定できることにより、テレマティクスセンタ10の負荷を抑制することができる。しかし、実際には、各配信キャンペーンが計画通りに進まないこともある。
そこで第2の実施の形態に係る車載ソフトウェア配信システム1では、同一のメインキャンペーンに従属する他の配信キャンペーンの進捗状況に基づいて、配信開始日時変更部115が、配信キャンペーンにおける更新用ソフトウェアの配信開始日時を変更できるようにしている(配信開始日時変更処理)。
図17は、配信開始日時変更処理の処理手順の一例を示すフローチャートである。図17に示す配信開始日時変更処理は、テレマティクスセンタ10に搭載された中央演算処理装置110の配信開始日時変更部115によって実行される。
図17によれば、まず、配信開始日時変更部115は、メインキャンペーンDB123に格納されているメインキャンペーン情報1230のレコードを1件抽出する(ステップS801)。
そして、配信開始日時変更部115は、ステップS801で抽出したメインキャンペーン情報1230に従属する配信キャンペーン情報1250を、配信キャンペーンDB125から全件抽出する(ステップS802)。
次に、配信開始日時変更部115は、リージョンを1つ指定し(指定リージョン)、ステップS802で抽出した配信キャンペーン情報1250のうちから、対象リージョン1254が指定リージョンに一致する配信キャンペーン情報(同一リージョン配信キャンペーン群)を抽出する(ステップS803)。
次に、配信開始日時変更部115は、同一リージョン配信キャンペーン群のうちから、配信開始日時1255が現在時刻よりも過去であるもの(同一リージョン過去配信キャンペーン群)を抽出する(ステップS804)。
次に、配信開始日時変更部115は、同一リージョン過去配信キャンペーン群に含まれる配信キャンペーン情報1250のそれぞれから、更新対象台数1256及び更新完了台数1257を抽出し、各台数を積算する(ステップS805)。
次に、配信開始日時変更部115は、ステップS805で算出した「更新完了台数の和」を「更新対象台数の和」で除して算出される「更新進捗率」が、所定の閾値(本例ではP%とする)以上であるか否か判定する(ステップS806)。なお、所定の閾値「P%」は、テレマティクスセンタ10の管理者が設定することが想定される。具体的な値としては、固定値でもよく、初めて配信キャンペーンを生成した日時からの経過時間に応じて変化する等の変動値でもよい。
ステップS806において更新進捗率がP%以上であった場合は(ステップS806のYES)、管理者の想定よりもソフトウェア配信が順調に進んでいることを意味するため、ステップS807からの処理によって、未だ配信が開始されていない配信キャンペーンを前倒しして有効化する。
具体的には、まず、ステップS803で抽出した同一リージョン配信キャンペーン群のうちから、配信開始日時1255が現在時刻よりも未来であり、かつ、現在時刻に最も近い配信キャンペーン情報を1件抽出する(ステップS807)。そして、ステップS807で抽出した配信キャンペーン情報の配信開始日時1255を現在時刻に変更するとともに、元の配信開始日時と現在時刻との差(「D秒」とする)を記憶する(ステップS808)。さらに、ステップS803で抽出した同一リージョン配信キャンペーン群のうちから、ステップS807では抽出されなかったが配信開始日時1255が現在時刻よりも未来である配信キャンペーン情報を全件抽出し、それらの配信開始日時1255を全て「D秒」早めたものに変更する(ステップS809)。
以上、ステップS807〜S809の処理によって、同一リージョン配信キャンペーン群のうちの未だ配信開始日時が到来していない配信キャンペーンの全てについて、配信開始日時を「D秒」前倒しすることができる(前倒し処理)。その後、ステップS810の処理が行われる。なお、ステップS806において更新進捗率がP%未満であった場合は(ステップS806のNO)、ソフトウェア配信が管理者の想定を超えた早さで進んでいるわけではなく、前倒しの必要はないと考えられるため、ステップS807〜S809の処理を行わずにステップS810の処理に進む。
そしてステップS810では、配信開始日時変更部115は、ステップS802で抽出した配信キャンペーン情報1250に含まれる全ての対象リージョン1254について、指定リージョンに指定してステップS803〜S809の処理が行われたかを確認する。これはすなわち、上記全ての対象リージョンに対して前倒し処理が検討されたかを確認するものである。
ステップS810において前倒し処理が検討されていない対象リージョンが残っていた場合には(ステップS810のNO)、ステップS803に戻って、指定リージョンを変更して処理が繰り返される。一方、ステップS810において全ての対象リージョンに対して前倒し処理の検討が確認された場合は(ステップS810のYES)、配信開始日時変更部115は処理を終了する。
なお、図17に例示した処理は、ステップS801で抽出した1つのメインキャンペーンに対して配信開始日時の変更を行う処理であったが、第2の実施の形態に係る車載ソフトウェア配信システム1では、テレマティクスセンタ10がこの処理を定期的に繰り返すことによって、同じメインキャンペーンの情報を再度更新可能にしたり、他の全てのメインキャンペーンの配信開始日時を変更可能にしたりしてもよい。
以上のように、第2の実施の形態に係る車載ソフトウェア配信システム1では、上述した配信開始日時変更処理が行われることによって、グループに分割された配信キャンペーンのうち、先に実行された何れかの配信キャンペーンが早期に終了した場合には、未実行の配信キャンペーンの実行(配信開始日時)を前倒しすることができる。かくして、第2の実施の形態に係る車載ソフトウェア配信システム1によれば、配信キャンペーンの実際の進捗状況に基づいて、テレマティクスセンタ10に過剰な負荷をかけることなく、他の配信キャンペーンの配信開始日時を前倒しすることができ、第1の実施の形態に係る車載ソフトウェア配信システムよりもさらに柔軟な配信制御が実現可能となる。また、その結果、テレマティクスセンタ10の負荷の増大を抑制するだけでなく、全体として早期にソフトウェア配信を完了する効果にも期待できる。
なお、本発明は、上記した実施の形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。例えば、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実施には殆ど全ての構成が相互に接続されていると考えてもよい。