(57)【要約】【課題】車載情報システム用に開発されたプログラムの動作検証および提供に好適な装置およびシステムを提供する。【解決手段】プログラム提供装置は、車載情報システムのハードウェア環境およびソフトウェア環境をエミュレートする動作テストプログラム２０と、車載情報システム用に開発されたプログラムを受け取るプログラム受信部と、車載情報システムのリソース状態および環境状態を制約条件として保持する制約条件保持部２１と、保持された制約条件に基づいてプログラムの動作を制限するＪａｖａアプリ実行制限部２２と、動作テストプログラム２０によって提供されるリソースを用いて、プログラム受信部から受け取ったプログラムを、Ｊａｖａアプリ実行制限部２２による制限にしたがって実行するＪａｖａアプリ実行部１１２とを備えた。【選択図】図３
2011146068.tif 000002
【特許請求の範囲】
【請求項１】
車載情報システムのハードウェア環境およびソフトウェア環境をエミュレートするエミュレート手段と、
車載情報システム用に開発されたプログラムを受け取るプログラム受信手段と、
車載情報システムのリソース状態および環境状態を制約条件として保持する制約条件保持手段と、
前記制約条件保持手段に保持された制約条件に基づいて前記プログラムの動作を制限するプログラム実行制限手段と、
前記エミュレート手段によって提供されるリソースを用いて、前記プログラム受信手段から受け取ったプログラムを、前記プログラム実行制限手段による制限にしたがって実行するプログラム実行手段
とを備えたプログラム提供装置。
【請求項２】
制約条件保持手段に保持された制約条件に含まれるリソース状態は、ＣＰＵ使用率、メモリ使用量、ハードディスク使用量、バス使用率およびネットワーク使用可否の少なくとも１つを含み、
環境状態は、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも１つを含む
ことを特徴とする請求項１記載のプログラム提供装置。
【請求項３】
制約条件保持手段に保持された制約条件に含まれるリソース状態は、アプリケーションプログラムインタフェースの使用可否、ライブラリの使用可否、特定プログラムの実行状態の少なくとも１つを含み、
環境状態は、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも１つを含む
ことを特徴とする請求項１記載のプログラム提供装置。
【請求項４】
制約条件保持手段に保持されている制約条件を更新する制約条件更新手段を備えたことを特徴とする請求項１記載のプログラム提供装置。
【請求項５】
プログラム実行手段によってプログラムが正常に実行されたことを証明する証明情報を生成するプログラム証明手段と、
前記プログラム証明手段によって正常に実行されたことが証明されたプログラムおよび前記プログラム証明手段で生成された証明情報を保存するプログラム保存手段
とを備えたことを特徴とする請求項１記載のプログラム提供装置。
【請求項６】
プログラム実行手段によってプログラムが正常に実行されたことを証明する証明情報を生成するプログラム証明手段と、
前記プログラム証明手段によって正常に実行されたことが証明されたプログラムおよび前記プログラム証明手段で生成された証明情報を外部へ送信するプログラム送信手段
とを備えたことを特徴とする請求項１記載のプログラム提供装置。
【請求項７】
プログラム証明手段は、
ＣＰＵ使用率、メモリ使用量、ハードディスク使用量、バス使用率およびネットワーク使用可否の少なくとも１つを含むリソース状態と、
走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも１つを含む環境状態とを含む制約条件に応じて証明情報を生成することを特徴とする請求項５または請求項６記載のプログラム提供装置。
【請求項８】
プログラム証明手段は、
アプリケーションプログラムインタフェースの使用可否、ライブラリの使用可否、特定プログラムの実行状態の少なくとも１つを含むリソース状態と、
走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも１つを含む環境状態とを含む制約条件に応じて証明情報を生成することを特徴とする請求項５または請求項６記載のプログラム提供装置。
【請求項９】
プログラム証明手段は、プログラム提供元に応じて証明情報を生成する
ことを特徴とする請求項５または請求項６記載のプログラム提供装置。
【請求項１０】
車載情報システムのハードウェア環境およびソフトウェア環境をエミュレートするエミュレート手段と、
車載情報システム用に開発されたプログラムを受け取るプログラム受信手段と、
車載情報システムのリソース状態および環境状態を制約条件として保持する制約条件保持手段と、
前記制約条件保持手段に保持された制約条件に基づいて前記プログラムの動作を制限するプログラム実行制限手段と、
前記エミュレート手段によって提供されるリソースを用いて、前記プログラム受信手段から受け取ったプログラムを、前記プログラム実行制限手段による制限にしたがって実行するプログラム実行手段
とを備えたコンピュータで実行可能なプログラムを記憶した記憶媒体。
【請求項１１】
車載情報システム用に開発されたプログラムおよび証明情報を受信するプログラム受信手段と、
前記プログラム受信手段から受け取った証明情報を解読して認証するプログラム認証手段と、
前記プログラム認証手段から受け取った認証結果に応じて前記プログラムの動作を制限するプログラム実行制限手段と、
前記プログラム受信手段から受け取ったプログラムを、前記プログラム実行制限手段による制限にしたがって実行するプログラム実行手段
とを備えた車載情報システム。
【請求項１２】
プログラム受信手段で受信された証明情報は、ＣＰＵ使用率、メモリ使用量、ハードディスク使用量、バス使用率およびネットワーク使用可否の少なくとも１つを含むリソース状態と、
走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも１つを含む環境状態
とを含むことを特徴とする請求項１１記載の車載情報システム。
【請求項１３】
プログラム受信手段で受信された証明情報は、アプリケーションプログラムインタフェースの使用可否、ライブラリの使用可否および特定プログラムの実行状態の少なくとも１つを含むリソース状態と、
走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも１つを含む環境状態
とを含むことを特徴とする請求項１１記載の車載情報システム。
【請求項１４】
車載情報システムのリソース状態および環境状態を含む制約条件を取得する制約条件取得手段を備え、
プログラム認証手段から得られる認証結果は、前記制約条件取得手段で取得された制約条件を特定する情報を含み、
プログラム実行制限手段は、前記認証結果と前記制約条件取得手段で取得された制約条件に応じてプログラムの動作を変更する
ことを特徴とする請求項１１記載の車載情報システム。
【請求項１５】
車載情報システムのリソース状態及び環境状態を含む制約条件を配信アプリケーションメーカ毎にリスト化して格納した制約条件取得手段を備え、
プログラム受信手段から受け取った証明情報は、前記配信アプリケーションメーカを特定するコードを含み、
プログラム認証手段から得られる認証結果は、前記制約条件取得手段に格納された前記配信アプリケーションメーカ毎の制約条件を特定する情報を含み、
プログラム実行制限手段は、前記認証結果と前記制約条件取得手段に格納された制約条件とに応じてプログラムの動作を変更する
ことを特徴とする請求項１１記載の車載情報システム。
【請求項１６】
車載情報システムのリソース状態及び環境状態を含む制約条件を外部から更新する手段を備えたことを特徴とする請求項１５記載の車載情報システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発された車載情報システム用のプログラムの動作安全性の確認を、実機上で動作確認することなく行って車載情報システムに提供するプログラム提供装置およびこのプログラム提供装置によって提供されたプログラムを実行する車載情報システムに関する。
【背景技術】
【０００２】
近年のパーソナルコンピュータや携帯電話などといったインターネットに接続可能な機器は、インターネットを介して様々なサーバからプログラムをダウンロードすることができる。そのため、誰でも自由にプログラムを開発してサーバにアップロードし、このサーバにアップロードされたプログラムを目的の機器にダウンロードして実行することができる。しかしながら、悪意のあるプログラムや設計ミスを含むプログラムなどをダウンロードして実行することによって、機器の動作不良、機器内の情報の漏洩などといった被害が出る恐れがある。
【０００３】
そこで、従来は、プログラム開発元で開発されたプログラムの動作テストを認証機関において行い、認証機関が、必要なリソースにのみアクセスを許可する情報を付加することによってプログラムの動作安全性を確保している。例えば、特許文献１に開示された通信端末のアクセス制御方法では、認定機関は、コンテンツプロバイダから認定を依頼された携帯電話機用のＪａｖａ（登録商標、以下省略）アプリを審査し、このＪａｖａアプリが、コンテンツプロバイダから申請されたリソースにアクセスするプログラムとして所定の動作基準を満たしており、リソースにアクセスできる認定プログラムであると認定した場合に、リソースを指定するリソース指定情報を認定サーバによりＪａｖａアプリに付与する。携帯電話機は、認定機関により認定されたＪａｖａアプリの実行中にアクセスできるリソースを、このＪａｖａアプリに付与されているリソース指定情報によって指定されるリソースに制限する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２８３４９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、例えばカーナビゲーション装置のような車載情報システムに実装されるプログラムでは、携帯電話機などとは異なり、安全上の観点から、車の動作状態、例えば走行中であるか停止中であるかに応じてプログラムの動作を制限する必要がある。したがって、特許文献１に開示された方法では十分な動作検証および適切なアクセス許可を付与できない。また、広く一般のプログラマにプログラムの開発を促すためには、動作検証と検証したプログラムの提供を一緒に行うのが都合がよい。
【０００６】
そこで、この発明は、車載情報システム用に開発されたプログラムの動作検証および提供に好適なプログラム提供装置およびそれによって提供されたプログラムを実行する車載情報システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係るプログラム提供装置は、上記目的を達成するために、車載情報システムのハードウェア環境およびソフトウェア環境をエミュレートするエミュレート手段と、車載情報システム用に開発されたプログラムを受け取るプログラム受信手段と、車載情報システムのリソース状態および環境状態を制約条件として保持する制約条件保持手段と、制約条件保持手段に保持された制約条件に基づいてプログラムの動作を制限するプログラム実行制限手段と、エミュレート手段によって提供されるリソースを用いて、プログラム受信手段から受け取ったプログラムを、プログラム実行制限手段による制限にしたがって実行するプログラム実行手段とを備えたものである。
【０００８】
また、この発明に係る車載情報システムは、車載情報システム用に開発されたプログラムおよび証明情報を受信するプログラム受信手段と、プログラム受信手段から受け取った証明情報を解読して認証するプログラム認証手段と、プログラム認証手段から受け取った認証結果に応じてプログラムの動作を制限するプログラム実行制限手段と、プログラム受信手段から受け取ったプログラムを、プログラム実行制限手段による制限にしたがって実行するプログラム実行手段とを備えたものである。
【０００９】
また、この発明に係る記憶媒体は、車載情報システムのハードウェア環境およびソフトウェア環境をエミュレートするエミュレート手段と、車載情報システム用に開発されたプログラムを受け取るプログラム受信手段と、車載情報システムのリソース状態および環境状態を制約条件として保持する制約条件保持手段と、制約条件保持手段に保持された制約条件に基づいてプログラムの動作を制限するプログラム実行制限手段と、エミュレート手段によって提供されるリソースを用いて、プログラム受信手段から受け取ったプログラムを、プログラム実行制限手段による制限にしたがって実行するプログラム実行手段とを備えたコンピュータで実行可能なプログラムを記憶したものである。
【発明の効果】
【００１０】
この発明に係るプログラム提供装置によれば、リソース状態と環境状態を制約条件として設定することによって、車載情報システムのような環境における動作確認をエミュレート手段を用いて実施することができる。したがって、車載情報システム用に開発されたプログラムの動作検証および提供に好適である。
【００１１】
この発明に係る車載情報システムによれば、受信した証明情報に基づきプログラムの動作を制限するように構成したので、プログラム提供装置によって提供されたプログラムの検証が不十分であっても、そのプログラムを正当に実行することができる。
【００１２】
この発明に係る記憶媒体によれば、上述したプログラム提供装置と同様の効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】この発明の実施の形態１に係る車載情報システムとしてのカーナビゲーション装置のハードウェア構成を示すブロック図である。
【図２】図１に示すカーナビゲーション装置のソフトウェア構成を示す図である。
【図３】この発明の実施の形態１に係るプログラム提供装置の主要な部分の構成を示す図である。
【図４】この発明の実施の形態１に係る車載情報システムとしてのカーナビゲーション装置で使用される制約条件を説明するための図である。
【図５】この発明の実施の形態１に係るプログラム提供装置によって、開発されたＪａｖａアプリが実行される手順を示すフローチャートである。
【図６】この発明の実施の形態１に係る車載情報システムとしてのカーナビゲーション装置によって、プログラム提供装置から提供されたＪａｖａアプリが実行される手順を示すフローチャートである。
【図７】この発明の実施の形態２に係る車載情報システムとしてのカーナビゲーション装置のソフトウェア構成を示す図である。
【図８】この発明の実施の形態２に係る車載情報システムとしてのカーナビゲーション装置によって、プログラム提供装置から提供されたＪａｖａアプリが実行される手順を示すフローチャートである。
【図９】この発明の実施の形態３に係る車載情報システムとしてのカーナビゲーション装置のソフトウェア構成を示す図である。
【図１０】この発明の実施の形態３に係る車載情報システムとしてのカーナビゲーション装置によって、プログラム提供装置から提供されたＪａｖａアプリが実行される手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。以下では、この発明に係る車載情報システムとしてカーナビゲーション装置を例に挙げて説明する。また、車載情報システム用に開発されたプログラムはＪａｖａアプリケーションプログラム（以下「Ｊａｖａアプリ」と略する）であるものとし、プログラム提供装置は、パーソナルコンピュータ上で動作するカーナビゲーション装置用Ｊａｖａアプリの動作テストプログラムなどから構成されるものとする。また、カーナビゲーション装置は、プログラム提供装置から提供されたＪａｖａアプリのみ実行可能なものとする。
実施の形態１．
図１は、この発明の実施の形態１に係る車載情報システムとしてのカーナビゲーション装置のハードウェア構成を示すブロック図である。このカーナビゲーション装置は、ＣＰＵ（Central Processing Unit）１、ＲＯＭ（Read Only Memory）２、ＲＡＭ（Random Access Memory）３、操作部インタフェース４、出力部インタフェース５、通信部インタフェース６および外部記録装置インタフェース７から構成されている。
【００１５】
ＣＰＵ１は、ＲＯＭ２に格納されているプログラムに従って演算処理を行うことにより、カーナビゲーション装置の全体を制御する。ＲＯＭ２は、地図データやプログラム（ナビゲーションプログラム等）を記憶する。このＲＯＭ２に記憶されている内容はＣＰＵ１によって読み出される。ＲＡＭ３は、ＣＰＵ１によるプログラム実行時に、データを一時的に記憶するワークエリアとして使用される。
【００１６】
操作部インタフェース４には、リモートコントローラ（以下、「リモコン」と略する）４１およびマイクロフォン（以下、「マイク」と略する）４２が接続されている。この操作部インタフェース４は、リモコン４１およびマイク４２から入力された指示をＣＰＵ１に送る制御を行う。出力部インタフェース５には、ディスプレイ５１およびスピーカ５２が接続されている。この出力部インタフェース５は、ＣＰＵ１から送られてく出力データをディスプレイ５１およびスピーカ５２に送る制御を行う。
【００１７】
通信部インタフェース６には、例えば携帯電話やＤＳＲＣ（Dedicated Short Range Communication）車載器といった通信機器６１および車内ＬＡＮ（Local Area Network）６２が接続されている。通信部インタフェース６は、ＣＰＵ１０と通信機器６１および車内ＬＡＮ６２との間の通信を制御する。ＣＰＵ１は、車内ＬＡＮ６２から通信部インタフェース６を介して、例えば速度や燃料の残量といった車両情報を取得する。
【００１８】
外部記録装置インタフェース７には、例えばＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disk）といった記録メディアからデータを読み込む外部記録装置ドライブ７１が接続されている。この外部記録装置インタフェース７は、外部記録装置ドライブ７１とＣＰＵ１との間のデータの送受を制御する。
【００１９】
図２は、図１に示すカーナビゲーション装置のソフトウェア構成を示す図である。カーナビゲーション装置のオペレーティングシステム（以下、「カーナビゲーションＯＳ」と略する）は、カーナビゲーション装置のハードウェア（以下、「カーナビゲーションハードウェア」という）を動作させるための種々のデバイスドライバの上に形成されている。このカーナビゲーションＯＳの上位に、ライブラリおよびアプリケーションプログラムインタフェース（以下、「ＡＰＩ：Application Program Interface」という）が設けられ、さらに、その上位に、プログラムによって構成されたナビゲーションサービス１０、Ｊａｖａアプリ１１、Ｊａｖａアプリ実行部（ＪａｖａＶＭ；Ｊａｖａ Virtual Machine）１２、Ｊａｖａアプリ管理部１３およびＪａｖａアプリ認証部１４が設けられている。
【００２０】
ナビゲーションサービス１０は、現在地を表示し、または目的地を設定してルート案内を行うといったカーナビゲーションの基本的なサービスを行う。Ｊａｖａアプリ１１は、例えばゲームや走行支援プログラムといったコンテンツである。Ｊａｖａアプリ実行部１２は、Ｊａｖａアプリ１１を実行する環境を提供する。Ｊａｖａアプリ管理部１３は、Ｊａｖａアプリ１１の動作全体を管理する。Ｊａｖａアプリ認証部１４は、Ｊａｖａアプリ１１の認証を行う。
【００２１】
ナビゲーションサービス１０は、ＪａｖａＶＭインタフェースモジュール１０ａを備えている。また、Ｊａｖａアプリ実行部１２は、ナビゲーションサービスインタフェースモジュール１２ａを備えている。これらＪａｖａＶＭインタフェースモジュール１０ａとナビゲーションサービスインタフェースモジュール１２ａとが相互に通信することにより、ナビゲーションサービス１０とＪａｖａアプリ実行部１２とが連携して動作する。
【００２２】
図３は、この発明の実施の形態１に係るプログラム提供装置の主要な部分の構成を示す図である。このプログラム提供装置は、ハードウェア環境をエミュレートするハードウェアエミュレータおよびソフトウェア環境をエミュレートするソフトウェアエミュレータによって構成された動作テストプログラム２０、ナビ画面出力ウインドウ３１、操作入力ウインドウ３２およびナビ環境設定ウインドウ３３を備え、上述したカーナビゲーション装置のハードウェアおよびソフトウェアの機能をパーソナルコンピュータ上で再現するプログラムとして構成されている。ハードウェアエミュレータおよびソフトウェアエミュレータは、この発明のエミュレート手段に対応する。
【００２３】
動作テストプログラム２０は、カーナビゲーション装置の実機には存在しない構成として、制約条件保持部２１、Ｊａｖａアプリ実行制限部２２および証明部２３を備えている。なお、カーナビゲーション装置の実機に存在する構成部分には、図１で使用した符号に「１００」を加えた符号を付してあり、各部の機能はカーナビゲーション装置の実機の機能と同じである。
【００２４】
制約条件保持部２１は、この発明の制約条件保持手段に対応する。この制約条件保持部２１には、動作テストプログラム２０の提供者によってあらかじめ設定されている制約条件が保持されている。この制約条件保持部２１には、カーナビゲーション装置のリソース状態と環境状態とが対応づけて保持されており、例えば図４に示すように、動作可能な状態が列挙されたファイルとして形成されている。図４では、例えば画面表示は停車中にのみ可能であることを示している。
【００２５】
制約条件として制約条件保持部２１に保持されるリソース状態には、ハードウェアリソースとして、例えばＣＰＵ使用率、メモリ使用量、ハードディスク使用量（換言すればプログラムサイズ）、バス使用率およびネットワーク使用可否などの少なくとも１つが含まれる。また、ソフトウェアリソースとして、ＡＰＩの使用可否、ライブラリの使用可否、特定プログラムの実行状態の少なくとも１つが含まれる。また、環境状態には、例えば、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気、道路種別などの少なくとも１つが含まれる。
【００２６】
Ｊａｖａアプリ実行制限部２２は、この発明のプログラム実行制限手段に対応し、制約条件保持部２１に保持されている制約条件に従って、Ｊａｖａアプリ実行部１１２で実行されるＪａｖａアプリの動作を制限する。証明部２３は、動作確認ができたＪａｖａアプリに対して、あらかじめ埋め込まれている鍵を用いてＪａｖａアプリの証明情報を生成する。
【００２７】
また、ナビ画面出力ウインドウ３１は、カーナビゲーション装置においてはディスプレイ５１に表示される画面を、パーソナルコンピュータの画面上で表示するためのウインドウである。操作入力ウインドウ３２は、カーナビゲーション装置ではリモコン４１またはマイク４２などによって入力される情報を、パーソナルコンピュータの入力装置から入力するためのウインドウである。
【００２８】
ナビ環境設定ウインドウ３３は、カーナビゲーション装置では車両本体から得られる環境状態を表す情報を、パーソナルコンピュータの入力装置から入力するためのウインドウである。なお、制約条件保持部２１に設定されている制約条件は、当該プログラム提供装置の提供者によってあらかじめ設定されるものであり、ナビ環境設定ウインドウ３３によって設定することはできない。
【００２９】
次に、上述した動作テストプログラム２０によって、開発されたＪａｖａアプリが実行される手順を図５に示すフローチャートを参照しながら説明する。
【００３０】
まず、Ｊａｖａアプリが取得される（ステップＳＴ１１）。すなわち、動作テストプログラム２０で実現されている図示しない通信インタフェースを用いて、Ｊａｖａアプリが受信され、動作テストプログラム２０のＪａｖａアプリ１１１としてセットされる。この場合、図示しない通信インタフェースは、この発明に係るプログラム提供装置のプログラム受信手段に対応し、この通信インタフェースで受信するＪａｖａアプリはプログラムに対応する。
【００３１】
次いで、Ｊａｖａアプリが実行される（ステップＳＴ１２）。すなわち、Ｊａｖａアプリ実行部１１２は、ステップＳＴ１１でセットされたＪａｖａアプリ１１１の実行処理を行う。このＪａｖａアプリ実行部１１２は、この発明のプログラム実行手段に対応する。
【００３２】
次いで、動作テストが終了であるかどうかが調べられる（ステップＳＴ１３）。具体的には、ナビ環境設定ウインドウ３３の操作によって様々な環境で行われた動作テストの終了であるかどうかが調べられる。このステップＳＴ１３において、動作テストが終了でないことが判断されると、次いで、環境設定が行われる（ステップＳＴ１４）。このステップＳＴ１４では、ユーザがナビ環境設定ウインドウ２２を用いて様々な環境を設定する。例えば、走行中と停止中の状態を切り替えたり、走行位置や高度、車の向き、車内／車外の温度／湿度、一般道／高速道路走行中を変更したりする。また、ＣＰＵの使用率を７０％としてメモリ空き容量を１ＭＢとし、バスの使用率を８０％とするなど、エミュレート環境の状態を変更し、その状態で動作テストを実施する。
【００３３】
次いで、制限対象処理であるかどうかが調べられる（ステップＳＴ１５）。すなわち、制約条件として設定されているリソースに対する処理であるかどうかが調べられる。このステップＳＴ１５において、制限対象処理でないことが判断されると、シーケンスはステップＳＴ１３に戻り、上述した処理が繰り返される。一方、ステップＳＴ１５において、制限対象処理であることが判断されると、次いで、環境状態が取得される（ステップＳＴ１４）。すなわち、Ｊａｖａアプリ実行部１１２はナビゲーションサービス１１０から環境状態を取得する。
【００３４】
次いで、実行可能であるかどうかが調べられる（ステップＳＴ１７）。すなわち、Ｊａｖａアプリ実行部１１２は、ステップＳＴ１４で取得した環境状態に基づいて、Ｊａｖａアプリを実行可能であるかどうかを調べる。このステップＳＴ１７で、実行可能であることが判断されると、シーケンスはステップＳＴ１３に戻り、上述した処理が繰り返される。一方、ステップＳＴ１７において、実行可能でないことが判断されると、処理は終了する。
【００３５】
上記ステップＳＴ１３において、動作テストが終了であることが判断されると、証明情報が生成される（ステップＳＴ１８）。すなわち、ナビ環境設定ウインドウ３３の操作によって様々な環境での動作テストが行われた後、正常に動作する事が確認できたら、Ｊａｖａアプリを用いて証明部２３は証明情報を生成する。証明部２３で行われる証明方法としては、証明部２３にあらかじめ用意されている鍵を用いてＪａｖａアプリに署名する方法やＪａｖａアプリを暗号化する方法を用いることができる。なお。署名および暗号化の技術としては、公知の技術を用いることができる。その後、処理は終了する。
【００３６】
なお、このステップＳＴ１３において、証明部２３は、ＣＰＵ使用率、メモリ使用量、ハードディスク使用量、バス使用率およびネットワーク使用可否の少なくとも１つを含むリソース状態と、走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも１つを含む環境状態とを含む制約条件に応じて証明情報を生成するように構成できる。この構成によれば、ハードウェアに関する制約条件の要素毎に動作の証明を行うことができる。
【００３７】
また、証明部２３は、ＡＰＩの使用可否、ライブラリの使用可否、特定プログラムの実行状態の少なくとも１つを含むリソース状態と、走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも１つを含む環境状態とを含む制約条件に応じて証明情報を生成するように構成することもできる。この構成によれば、ソフトウェアに関する制約条件の要素毎に動作の証明を行うことができる。
【００３８】
さらに、証明部２３は、プログラム提供元に応じて証明情報を生成するように構成することもできる。この構成によれば、プログラム提供装置を提供する対象（例えばカーメーカやコンテンツプロバイダなど）毎に証明情報を生成することができる。
【００３９】
このステップＳＴ１８において生成された証明情報は、Ｊａｖａアプリとともに図示しないメモリに保存するように構成できる。この場合、図示しないメモリは、この発明のプログラム保存手段に対応し、このメモリに保存されるＪａｖａアプリはプログラムに対応する。また、ステップＳＴ１８において生成された証明情報は、Ｊａｖａアプリとともに、動作テストプログラム２０で実現されている図示しない通信インタフェースを用いて、カーナビゲーション装置に直接に送信するように構成できる。この場合、図示しない通信インタフェースは、この発明に係るプログラム提供装置のプログラム送信手段に対応し、この通信インタフェースで受信するＪａｖａアプリはプログラムに対応する。
【００４０】
次に、上述した手順によって生成された証明情報とＪａｖａアプリをカーナビゲーション装置で実行する動作を、図６に示すフローチャートを参照しながら説明する。
【００４１】
まず、Ｊａｖａアプリが取得される（ステップＳＴ２１）。具体的には、カーナビゲーション装置は、通信機器６１（図１参照）を介してＪａｖａアプリおよび証明情報を受信する。受信されたＪａｖａアプリは、Ｊａｖａアプリ１１としてセットされる。
【００４２】
次いで、Ｊａｖａアプリの認証が行われる（ステップＳＴ２２）。すなわち、Ｊａｖａアプリ認証部１４は、受け取った証明情報を認証する。このＪａｖａアプリ認証部１４は、この発明のプログラム認証手段に対応する。Ｊａｖａアプリ認証部１４における認証方法としては、Ｊａｖａアプリ認証部１４にあらかじめ用意されている鍵を用いて署名検証を行う方法やＪａｖａアプリの暗号化を復号する方法を用いることができる。なお、署名検証および復号の技術としては、公知の技術を用いることができる。Ｊａｖａアプリ認証部１４は、認証結果をＪａｖａアプリ実行部１２に送る。
【００４３】
次いで、認証が正当（ＯＫ）であるかどうかが調べられる（ステップＳＴ２３）。すなわち、Ｊａｖａアプリ実行部１２は、Ｊａｖａアプリ認証部１４から送られてきた認証結果が正当であるかどうかを調べる。このステップＳＴ２３において、認証が正当であることが判断されると、Ｊａｖａアプリが実行される（ステップＳＴ２４）。一方、認証が不正（例えば鍵が存在しない場合や署名検証で一致が得られない場合）であることが判断されると、Ｊａｖａアプリを実行せずに処理は終了する。
【００４４】
以上説明したように、この発明の実施の形態１に係るプログラム提供装置によれば、リソース状態と環境状態を制約条件として設定することによって、カーナビゲーション装置のような環境における動作確認をパーソナルコンピュータ上で実施することができる。したがって、カーナビゲーション装置用に開発されたプログラムの動作検証および提供に好適である。また、カーナビゲーション装置では、動作テストプログラムによって動作確認されたＪａｖａアプリのみ動作を許可するため、不正なＪａｖａアプリが動作するのを防ぐことができる。
【００４５】
ハードウェアエミュレータおよびソフトウェアエミュレータによって再現されているリソースの使用を環境状態によって制限するように構成したので、特許文献１に記載されている技術とは異なり、安全上の観点から、車の動作状態、例えば走行中であるか停止中であるかに応じてプログラムの動作を制限したテストを行うことができ、十分な動作検証が可能になる。
【００４６】
また、制約条件をファイルとして保持しているため、プログラム提供装置を提供する側がファイルの内容を変更することで、プログラム提供装置を提供する対象（例えばカーメーカやコンテンツプロバイダなど）毎に制約条件を変更した環境を提供することができる。
【００４７】
また、Ｊａｖａアプリ実行部１１２によってＪａｖａアプリが正常に実行されたことを証明する証明情報を生成してＪａｖａアプリとともにユーザに提供するように構成したので、ユーザは、プログラム提供装置で動作テストしたことが証明されたプログラムを取得することができ、悪意のあるプログラムや設計ミスを含むプログラムなどをカーナビゲーション装置で実行することがない。その結果、機器の動作不良、機器内の情報の漏洩などといった被害を防止できる。
【００４８】
なお、上述した実施の形態１では、様々な環境での動作確認をユーザがナビ環境設定ウインドウ３３を用いてカーナビゲーション装置の環境を設定することによって行うように構成したが、この環境の設定を自動で行うように構成することもできる。例えば、動作テストプログラム２０を提供する側が、テストコースのデータをあらかじめ用意しておき、このテストコースを走行中に正常に動作していればＪａｖａアプリは安全に動作すると判断して証明情報を生成するように構成できる。
【００４９】
また、上述した実施の形態１では、制約条件を保持する例として、ファイルにリソース状態と環境状態を羅列するように構成したが、制約条件を、Ｊａｖａのアクセス制御のために標準で用意されているＪａｖａポリシーファイルに追記するように構成することもできる。また、このＪａｖａポリシーファイルをネットワークを通じて更新することによって、制約条件を更新することもできる。
【００５０】
また、カーナビゲーション装置のメーカが、自社のカーナビゲーション装置用のＪａｖａアプリを一般のユーザが作成できるような環境を提供したい場合、制約条件に一般のユーザに許可してもよい動作範囲の設定を施し、カーナビゲーション装置のＪａｖａアプリ認証部１４に埋め込んである鍵に対応したカーナビゲーション装置のメーカ独自の鍵を動作テストプログラム２０の証明部２３に埋め込んで動作テストプログラム２０を配布する。また、正規ディーラに対しては一般のユーザの場合と制約条件を変更して動作テストプログラム２０を配布する。この際、動作テストプログラム２０の証明部２３に埋め込む鍵は変更する必要はない。これにより、カーメーカは制約条件を変更するだけで提供先毎に適した動作テストプログラムを送付することができる。
【００５１】
実施の形態２．
この発明の実施の形態２は、証明情報に制約条件を埋め込むようにしたものである。この実施の形態２は、Ｊａｖａアプリ動作テストプログラム２０の証明部２３における証明方法とカーナビゲーション装置のソフトウェア構成が、実施の形態１と異なる。以下では、実施の形態１と相違する部分を中心に説明する。
【００５２】
この実施の形態２に係るプログラム提供装置を構成する動作テストプログラム２０の証明部２３は、制約条件を含んだ証明情報を生成する。例えば、制約条件が図４に示したようなファイルに保持されている場合、証明部２３は、そのファイル自体も暗号化して証明情報に埋め込む。
【００５３】
図７は、この発明の実施の形態２に係るカーナビゲーション装置のソフトウェア構成を示す図である。このソフトウェア構成は、実施の形態１に係るカーナビゲーション装置のソフトウェア構成に、Ｊａｖａアプリ実行制限部１５が追加されて構成されている。なお、実施の形態１においては、Ｊａｖａアプリ実行制限部は動作テストプログラム２０にのみ含まれており、カーナビゲーション装置には含まれていない。
【００５４】
次に、プログラム提供装置で生成された証明情報とＪａｖａアプリをカーナビゲーション装置で実行する動作を、図８に示すフローチャートを参照しながら説明する。
【００５５】
まず、Ｊａｖａアプリが取得される（ステップＳＴ３１）。具体的には、カーナビゲーション装置は、通信機器６１（図１参照）を介してＪａｖａアプリおよび証明情報を受信する。この場合の通信機器６１は、この発明に係る車載情報システムのプログラム受信手段に対応し、この通信機器６１で受信するＪａｖａアプリはプログラムに対応する。受信されたＪａｖａアプリは、Ｊａｖａアプリ１１としてセットされる。
【００５６】
次いで、Ｊａｖａアプリの認証が行われる（ステップＳＴ３２）。すなわち、Ｊａｖａアプリ認証部１４は、受け取った証明情報を認証する。ここで、Ｊａｖａアプリ認証部１４における認証方法としては、Ｊａｖａアプリ認証部１４にあらかじめ用意されている鍵を用いて暗号化されている証明情報を復号する方法を用いることができる。次いで、認証が正当（ＯＫ）であるかどうかが調べられる（ステップＳＴ３３）。すなわち、Ｊａｖａアプリ実行部１２は、Ｊａｖａアプリ認証部１４から送られてきた認証結果が不正であるかどうかを調べる。このステップＳＴ３３において、認証が不正であることが判断されると、Ｊａｖａアプリを実行せずに処理は終了する。
【００５７】
一方、ステップＳＴ３３において、認証が正当であることが判断されると、次いで、制約条件が取得される（ステップＳＴ３４）。すなわち、Ｊａｖａアプリ実行部１２は、認証結果が正当であることを判断すると、証明情報から制約条件を取得してＪａｖａアプリ実行制限部１５に送る。次いで、Ｊａｖａアプリが実行される（ステップＳＴ３５）。すなわち、Ｊａｖａアプリ実行部１２は、Ｊａｖａアプリ１１を実行する。この時、Ｊａｖａアプリ実行制限部１５は、ステップＳＴ３４において取得した制約条件に従ってＪａｖａアプリ１１の動作を制限する。なお、アプリの終了処理がコールされることによって、アプリは正常に終了する。
【００５８】
次いで、Ｊａｖａアプリが実行中の動作制限として、ＡＰＩがコールされると制限対象処理であるかどうかが調べられる（ステップＳＴ３６）。すなわち、制約条件に記載されたリソースに対する処理であるかどうかが調べられる。このステップＳＴ３６において、制限対象処理でないことが判断されると、シーケンスはステップＳＴ３５に戻り、上述した処理が繰り返される。一方、ステップＳＴ３６において、制限対象処理であることが判断されると、次いで、環境状態が取得される（ステップＳＴ３７）。すなわち、Ｊａｖａアプリ実行部１２はナビゲーションサービス１０から環境状態を取得する。
【００５９】
次いで、実行可能であるかどうかが調べられる（ステップＳＴ３８）。すなわち、Ｊａｖａアプリ実行部１２は、ステップＳＴ３７で取得した環境状態に基づいて、Ｊａｖａアプリを実行可能であるかどうかを調べる。このステップＳＴ３９で、実行可能であることが判断されると、シーケンスはステップＳＴ３５に戻り、上述した処理が繰り返される。一方、ステップＳＴ３８において、実行可能でないことが判断されると、処理はエラー終了する。
【００６０】
以上説明したように、この発明の実施の形態２によれば、受信したＪａｖａアプリに制約条件が付属されているため、カーナビゲーション装置側でＪａｖａアプリの動作環境を知ることができる。したがって、カーナビゲーション装置のユーザに対して、どの状態であればＪａｖａアプリが実行可能であるかどうかを通知することができるので、例えば、カーメーカから取得したＪａｖａアプリＡは走行中にも動作可能であるが、コンテンツプロバイダから取得したＪａｖａアプリＢは停車中にしか使えないことをユーザに知らせることで、走行中にＪａｖａアプリＢを動作させようという意思を起こさせないようにすることができる。
【００６１】
また、サービスアプリＣを実行するためにはライブラリＣが必要でサービスアプリＤが実行中でなければならないといったソフトウェアリソースや、サービスアプリＣを実行するためにはハードディスクの空き容量とメモリの空き容量がどれだけ必要で、ＣＰＵの負荷は何％以下であるといったハードウェアリソースの詳細な動作環境をユーザに通知することができる。
【００６２】
なお、通信機器６１を介して受信された証明情報は、ＣＰＵ使用率、メモリ使用量、ハードディスク使用量、バス使用率およびネットワーク使用可否の少なくとも１つを含むリソース状態と、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも１つを含む環境状態とを含むように構成できる。この構成によれば、証明情報として環境状態とハードウェアのリソース状態が含まれているので、車載情報システムで安全に動作可能な状態を決定できる。
【００６３】
また、通信機器６１を介して受信された証明情報は、アプリケーションプログラムインタフェースの使用可否、ライブラリの使用可否および特定プログラムの実行状態の少なくとも１つを含むリソース状態と、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも１つを含む環境状態とを含むように構成できる。この構成によれば、証明情報として環境状態とソフトウェアのリソース状態が含まれているので、車載情報システムで安全に動作可能な状態を決定できる。
【００６４】
実施の形態３．
この発明の実施の形態３は、証明情報に提供元情報を埋め込むようにしたものである。この実施の形態３は、Ｊａｖａアプリ動作テストプログラム２０の証明部２３における証明方法とカーナビゲーション装置のソフトウェア構成が、実施の形態１と異なる。以下では、実施の形態１と相違する部分を中心に説明する。
【００６５】
プログラム提供装置を構成する動作テストプログラム２０の証明部２３は、Ｊａｖａアプリの提供元の情報を含んだ証明情報を生成する。例えば、証明部２３が持っている鍵は提供元毎に異なっており、この鍵を用いて署名や暗号化などの処理を行うことにより提供元の情報を埋め込むことができる。
【００６６】
図９は、この発明の実施の形態３に係るカーナビゲーション装置のソフトウェア構成を示す図である。このソフトウェア構成は、実施の形態２に係るカーナビゲーション装置のソフトウェア構成に、制約条件リスト１６が追加されて構成されている。この制約条件リスト１６は、この発明の制約条件取得手段に対応し、鍵の種類に応じた動作を規定している。
【００６７】
次に、上述したようにして生成された証明情報とＪａｖａアプリをカーナビゲーション装置で実行する動作を、図１０に示すフローチャートを参照しながら説明する。
【００６８】
まず、Ｊａｖａアプリが取得される（ステップＳＴ４１）。具体的には、カーナビゲーション装置は、通信機器６１（図１参照）を介してＪａｖａアプリおよび証明情報を受信する。この場合の通信機器６１は、この発明に係る車載情報システムのプログラム受信手段に対応し、この通信機器６１で受信するＪａｖａアプリはプログラムに対応する。受信されたＪａｖａアプリは、Ｊａｖａアプリ１１としてセットされる。
【００６９】
次いで、Ｊａｖａアプリの認証が行われる（ステップＳＴ４２）。すなわち、Ｊａｖａアプリ認証部１４は、受け取った証明情報を認証する。ここで、Ｊａｖａアプリ認証部１４における認証方法としては、Ｊａｖａアプリ認証部１４にあらかじめ用意されている提供元に応じた鍵を用いて暗号化されている証明情報を復号する方法を用いることができる。この時、復号に成功した鍵によってＪａｖａアプリの提供元を判別することができる。
【００７０】
次いで、認証が正当（ＯＫ）であるかどうかが調べられる（ステップＳＴ４３）。すなわち、Ｊａｖａアプリ実行部１２は、Ｊａｖａアプリ認証部１４から送られてきた認証結果が不正であるかどうかを調べる。このステップＳＴ４３において、認証が不正であることが判断されると、Ｊａｖａアプリを実行せずに処理はエラー終了する。一方、ステップＳＴ４３において、認証が正当であることが判断されると、次いで、Ｊａｖａアプリの提供元の判別結果に基づき制約条件リスト１６から該当する制約条件を決定される（ステップＳＴ４４）。すなわち、Ｊａｖａアプリ実行部１２は、認証結果が正当であることを判断すると、制約条件リスト１６から制約条件を取得してＪａｖａアプリ実行制限部１５に送る。
【００７１】
次いで、Ｊａｖａアプリが実行される（ステップＳＴ４５）。すなわち、Ｊａｖａアプリ実行部１２は、Ｊａｖａアプリを実行する。この時、Ｊａｖａアプリ実行制限部１５は、ステップＳＴ４４において決定された制約条件に従ってＪａｖａアプリの動作を制限する。なお、アプリの終了処理がコールされることによって、アプリは正常に終了する。
【００７２】
次いで、Ｊａｖａアプリ実行中の動作制限として、ＡＰＩがコールされると、制限対象処理であるかどうかが調べられる（ステップＳＴ４６）。すなわち、制約条件に記載されたリソースに対する処理であるかどうかが調べられる。このステップＳＴ４６において、制限対象処理でないことが判断されると、シーケンスはステップＳＴ４５に戻り、上述した処理が繰り返される。一方、ステップＳＴ４６において、制限対象処理であることが判断されると、次いで、環境状態が取得される（ステップＳＴ４７）。すなわち、Ｊａｖａアプリ実行部１２はナビゲーションサービス１０から環境状態を取得する。
【００７３】
次いで、実行可能であるかどうかが調べられる（ステップＳＴ４８）。すなわち、Ｊａｖａアプリ実行部１２は、ステップＳＴ４７で取得した環境状態に基づいて、Ｊａｖａアプリを実行可能であるかどうかを調べる。このステップＳＴ４８で、実行可能であることが判断されると、シーケンスはステップＳＴ４５に戻り、上述した処理が繰り返される。一方、ステップＳＴ４８において、実行可能でないことが判断されると、処理はエラー終了する。
【００７４】
以上説明したように、この発明の実施の形態３によれば、証明情報としてあらかじめ車載情報システムが所持している制約条件リストの中から提供元を指定するように構成したので、提供元に応じた動作制限ができる。また、Ｊａｖａアプリには提供元情報のみが記載されているため、詳細な動作設定がなされることによって制約条件のデータが多い場合でも通信に要するコストを抑えることができる。また、動作テストプログラムを配布した後にＪａｖａアプリの動作環境の変更が生じた場合、カーナビゲーション装置に記録されている制約条件リストを更新することで対応できる。
【００７５】
また、上述した実施の形態３では、提供元を特定する方法として鍵の種別を用いたが、提供元を示す情報、例えばＩＤ、ＵＲＬ、名称などを記録したデータをＪａｖａアプリに付属するように構成することができる。
【００７６】
なお、上述した実施の形態１〜３では、開発対象のプログラムをＪａｖａアプリとして説明したが、開発対象のプログラムは、例えばＣ言語などによって記述されるネイティブアプリケーションとすることもできる。また、実施の形態１〜３に係るプログラム提供装置は、パーソナルコンピュータ上で実行されるプログラムであるので、このプログラムを記録媒体に格納して配布するように構成できる。
【符号の説明】
【００７７】
１  ＣＰＵ、２  ＲＯＭ、３  ＲＡＭ、４  操作部インタフェース、５  出力部インタフェース、６  通信部インタフェース、７  外部記録装置インタフェース、１０  ナビゲーションサービス、１０ａ  ＪａｖａＶＭインタフェースモジュール、１１  Ｊａｖａアプリ、１２  Ｊａｖａアプリ実行部、１２ａ  ナビゲーションサービスインタフェースモジュール、１３  Ｊａｖａ管理部、１４  Ｊａｖａアプリ認証部、１５  Ｊａｖａアプリ実行制限部、１６  制約条件リスト、２０  動作テストプログラム、２１  制約条件保持部、２２  Ｊａｖａアプリ実行制限部、２３  証明部、３１  ナビ画面出力ウインドウ、３２  操作入力ウインドウ、３３  ナビ環境設定ウインドウ、４１  リモコン、４２  マイク、５１  ディスプレイ、５２  スピーカ、６１  通信機器、６２  車内ＬＡＮ、７１  外部記録装置ドライブ、１１０  ナビゲーションサービス、１１１  Ｊａｖａアプリ本体、１１２  Ｊａｖａアプリ実行部、１１３  Ｊａｖａアプリ管理部、１１４  Ｊａｖａアプリ認証部。
【図１】
2011146068.tif 000003
【図２】
2011146068.tif 000004
【図３】
2011146068.tif 000005
【図４】
2011146068.tif 000006
【図５】
2011146068.tif 000007
【図６】
2011146068.tif 000008
【図７】
2011146068.tif 000009
【図８】
2011146068.tif 000010
【図９】
2011146068.tif 000011
【図１０】
2011146068.tif 000012