車載情報システム用に開発されたプログラムおよび証明情報を受信するプログラム受信手段と、前記プログラム受信手段が受信した証明情報を解読して認証するプログラム認証手段と、前記プログラム認証手段が認証した認証結果に応じて前記プログラムの動作を制限するプログラム実行制限手段と、前記プログラム受信手段が受信したプログラムを、前記プログラム実行制限手段による制限にしたがって実行するプログラム実行手段とを備えた車載情報システム。プログラム受信手段が受信した証明情報は、CPU使用率、メモリ使用量、ハードディスク使用量、バス使用率およびネットワーク使用可否の少なくとも1つを含むリソース状態と、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも1つを含む環境状態とを対応づけて保持することを特徴とする請求項1記載の車載情報システム。プログラム受信手段が受信した証明情報は、アプリケーションプログラムインタフェースの使用可否、ライブラリの使用可否および特定プログラムの実行状態の少なくとも1つを含むリソース状態と、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも1つを含む環境状態とを対応づけて保持することを特徴とする請求項1記載の車載情報システム。車載情報システムのリソース状態および環境状態を含む制約条件を取得する制約条件取得手段を備え、プログラム認証手段が認証した認証結果は、前記制約条件取得手段が取得した制約条件を特定する情報を含み、プログラム実行制限手段は、前記プログラム認証手段による認証結果から特定された制約条件に応じてプログラムを実行することを特徴とする請求項1記載の車載情報システム。プログラム受信手段が受信した証明情報は、プログラムの提供元情報を含み、プログラム認証手段は、前記証明情報に基づいてプログラムの提供元を判別し、制約条件取得手段は、車載情報システムのリソース状態及び環境状態を対応づけた制約条件を前記プログラムの提供元に応じて格納し、プログラム実行制限手段は、前記プログラム認証手段が判別した提供元および前記制約条件取得手段に格納された制約条件に応じて前記プログラムを実行することを特徴とする請求項4記載の車載情報システム。車載情報システムのリソース状態と環境状態とを対応付けた制約条件を外部から更新する手段を備えたことを特徴とする請求項4記載の車載情報システム。制約条件は、CPU使用率、メモリ使用量、ハードディスク使用量、バス使用率およびネットワーク使用可否の少なくとも1つを含むリソース状態と、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも1つを含む環境状態とを対応づけて保持することを特徴とする請求項4記載の車載情報システム。制約条件は、アプリケーションプログラムインタフェースの使用可否、ライブラリの使用可否および特定プログラムの実行状態の少なくとも1つを含むリソース状態と、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも1つを含む環境状態とを対応づけて保持することを特徴とする請求項4記載の車載情報システム。カーナビゲーションの機能を実行するナビゲーションサービス手段を備え、前記ナビゲーションサービス手段は、プログラム実行手段と通信を行うプログラム実行手段インタフェースモジュールを有し、前記プログラム実行手段は、前記ナビゲーションサービス手段と通信を行うナビゲーションサービス手段インタフェースモジュールを有することを特徴とする請求項1から請求項8のいずれか1項記載の車載情報システム。しかしながら、例えばカーナビゲーション装置のような車載情報システムに実装されるプログラムでは、携帯電話機などとは異なり、安全上の観点から、車の動作状態、例えば走行中であるか停止中であるかに応じてプログラムの動作を制限する必要がある。したがって、特許文献1に開示された方法では十分な動作検証および適切なアクセス許可を付与できない。また、広く一般のプログラマにプログラムの開発を促すためには、動作検証と検証したプログラムの提供を一緒に行うのが都合がよい。そこで、この発明は、車載情報システム用に開発されたプログラムの動作検証および提供に好適なプログラム提供装置およびそれによって提供されたプログラムを実行する車載情報システムを提供することを目的とする。この発明に係る車載情報システムは、車載情報システム用に開発されたプログラムおよび証明情報を受信するプログラム受信手段と、プログラム受信手段が受信した証明情報を解読して認証するプログラム認証手段と、プログラム認証手段が認証した認証結果に応じてプログラムの動作を制限するプログラム実行制限手段と、プログラム受信手段が受信したプログラムを、プログラム実行制限手段による制限にしたがって実行するプログラム実行手段とを備えている。この発明に係る車載情報システムによれば、受信した証明情報に基づきプログラムの動作を制限するように構成したので、プログラム提供装置によって提供されたプログラムの検証が不十分であっても、そのプログラムを正当に実行することができる。以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。以下では、この発明に係る車載情報システムとしてカーナビゲーション装置を例に挙げて説明する。また、車載情報システム用に開発されたプログラムはJavaアプリケーションプログラム以下Javaアプリと略するであるものとし、プログラム提供装置は、パーソナルコンピュータ上で動作するカーナビゲーション装置用Javaアプリの動作テストプログラムなどから構成されるものとする。また、カーナビゲーション装置は、プログラム提供装置から提供されたJavaアプリのみ実行可能なものとする。実施の形態1.図1は、この発明の実施の形態1に係る車載情報システムとしてのカーナビゲーション装置のハードウェア構成を示すブロック図である。このカーナビゲーション装置は、CPUCentralProcessingUnit1、ROMReadOnlyMemory2、RAMRandomAccessMemory3、操作部インタフェース4、出力部インタフェース5、通信部インタフェース6および外部記録装置インタフェース7から構成されている。CPU1は、ROM2に格納されているプログラムに従って演算処理を行うことにより、カーナビゲーション装置の全体を制御する。ROM2は、地図データやプログラムナビゲーションプログラム等を記憶する。このROM2に記憶されている内容はCPU1によって読み出される。RAM3は、CPU1によるプログラム実行時に、データを一時的に記憶するワークエリアとして使用される。操作部インタフェース4には、リモートコントローラ以下、リモコンと略する41およびマイクロフォン以下、マイクと略する42が接続されている。この操作部インタフェース4は、リモコン41およびマイク42から入力された指示をCPU1に送る制御を行う。出力部インタフェース5には、ディスプレイ51およびスピーカ52が接続されている。この出力部インタフェース5は、CPU1から送られてく出力データをディスプレイ51およびスピーカ52に送る制御を行う。通信部インタフェース6には、例えば携帯電話やDSRCDedicatedShortRangeCommunication車載器といった通信機器61および車内LANLocalAreaNetwork62が接続されている。通信部インタフェース6は、CPU10と通信機器61および車内LAN62との間の通信を制御する。CPU1は、車内LAN62から通信部インタフェース6を介して、例えば速度や燃料の残量といった車両情報を取得する。外部記録装置インタフェース7には、例えばCDCompactDiscやDVDDigitalVersatileDiskといった記録メディアからデータを読み込む外部記録装置ドライブ71が接続されている。この外部記録装置インタフェース7は、外部記録装置ドライブ71とCPU1との間のデータの送受を制御する。図2は、図1に示すカーナビゲーション装置のソフトウェア構成を示す図である。カーナビゲーション装置のオペレーティングシステム以下、カーナビゲーションOSと略するは、カーナビゲーション装置のハードウェア以下、カーナビゲーションハードウェアというを動作させるための種々のデバイスドライバの上に形成されている。このカーナビゲーションOSの上位に、ライブラリおよびアプリケーションプログラムインタフェース以下、API:ApplicationProgramInterfaceというが設けられ、さらに、その上位に、プログラムによって構成されたナビゲーションサービス10、Javaアプリ11、Javaアプリ実行部JavaVM;JavaVirtualMachine12、Javaアプリ管理部13およびJavaアプリ認証部14が設けられている。ナビゲーションサービス10は、現在地を表示し、または目的地を設定してルート案内を行うといったカーナビゲーションの基本的なサービスを行う。Javaアプリ11は、例えばゲームや走行支援プログラムといったコンテンツである。Javaアプリ実行部12は、Javaアプリ11を実行する環境を提供する。Javaアプリ管理部13は、Javaアプリ11の動作全体を管理する。Javaアプリ認証部14は、Javaアプリ11の認証を行う。ナビゲーションサービス10は、JavaVMインタフェースモジュール10aを備えている。また、Javaアプリ実行部12は、ナビゲーションサービスインタフェースモジュール12aを備えている。これらJavaVMインタフェースモジュール10aとナビゲーションサービスインタフェースモジュール12aとが相互に通信することにより、ナビゲーションサービス10とJavaアプリ実行部12とが連携して動作する。図3は、この発明の実施の形態1に係るプログラム提供装置の主要な部分の構成を示す図である。このプログラム提供装置は、ハードウェア環境をエミュレートするハードウェアエミュレータおよびソフトウェア環境をエミュレートするソフトウェアエミュレータによって構成された動作テストプログラム20、ナビ画面出力ウインドウ31、操作入力ウインドウ32およびナビ環境設定ウインドウ33を備え、上述したカーナビゲーション装置のハードウェアおよびソフトウェアの機能をパーソナルコンピュータ上で再現するプログラムとして構成されている。ハードウェアエミュレータおよびソフトウェアエミュレータは、この発明のエミュレート手段に対応する。動作テストプログラム20は、カーナビゲーション装置の実機には存在しない構成として、制約条件保持部21、Javaアプリ実行制限部22および証明部23を備えている。なお、カーナビゲーション装置の実機に存在する構成部分には、図1で使用した符号に100を加えた符号を付してあり、各部の機能はカーナビゲーション装置の実機の機能と同じである。制約条件保持部21は、この発明の制約条件保持手段に対応する。この制約条件保持部21には、動作テストプログラム20の提供者によってあらかじめ設定されている制約条件が保持されている。この制約条件保持部21には、カーナビゲーション装置のリソース状態と環境状態とが対応づけて保持されており、例えば図4に示すように、動作可能な状態が列挙されたファイルとして形成されている。図4では、例えば画面表示は停車中にのみ可能であることを示している。制約条件として制約条件保持部21に保持されるリソース状態には、ハードウェアリソースとして、例えばCPU使用率、メモリ使用量、ハードディスク使用量換言すればプログラムサイズ、バス使用率およびネットワーク使用可否などの少なくとも1つが含まれる。また、ソフトウェアリソースとして、APIの使用可否、ライブラリの使用可否、特定プログラムの実行状態の少なくとも1つが含まれる。また、環境状態には、例えば、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気、道路種別などの少なくとも1つが含まれる。Javaアプリ実行制限部22は、この発明のプログラム実行制限手段に対応し、制約条件保持部21に保持されている制約条件に従って、Javaアプリ実行部112で実行されるJavaアプリの動作を制限する。証明部23は、動作確認ができたJavaアプリに対して、あらかじめ埋め込まれている鍵を用いてJavaアプリの証明情報を生成する。また、ナビ画面出力ウインドウ31は、カーナビゲーション装置においてはディスプレイ51に表示される画面を、パーソナルコンピュータの画面上で表示するためのウインドウである。操作入力ウインドウ32は、カーナビゲーション装置ではリモコン41またはマイク42などによって入力される情報を、パーソナルコンピュータの入力装置から入力するためのウインドウである。ナビ環境設定ウインドウ33は、カーナビゲーション装置では車両本体から得られる環境状態を表す情報を、パーソナルコンピュータの入力装置から入力するためのウインドウである。なお、制約条件保持部21に設定されている制約条件は、当該プログラム提供装置の提供者によってあらかじめ設定されるものであり、ナビ環境設定ウインドウ33によって設定することはできない。次に、上述した動作テストプログラム20によって、開発されたJavaアプリが実行される手順を図5に示すフローチャートを参照しながら説明する。まず、Javaアプリが取得されるステップST11。すなわち、動作テストプログラム20で実現されている図示しない通信インタフェースを用いて、Javaアプリが受信され、動作テストプログラム20のJavaアプリ111としてセットされる。この場合、図示しない通信インタフェースは、この発明に係るプログラム提供装置のプログラム受信手段に対応し、この通信インタフェースで受信するJavaアプリはプログラムに対応する。次いで、Javaアプリが実行されるステップST12。すなわち、Javaアプリ実行部112は、ステップST11でセットされたJavaアプリ111の実行処理を行う。このJavaアプリ実行部112は、この発明のプログラム実行手段に対応する。次いで、動作テストが終了であるかどうかが調べられるステップST13。具体的には、ナビ環境設定ウインドウ33の操作によって様々な環境で行われた動作テストの終了であるかどうかが調べられる。このステップST13において、動作テストが終了でないことが判断されると、次いで、環境設定が行われるステップST14。このステップST14では、ユーザがナビ環境設定ウインドウ22を用いて様々な環境を設定する。例えば、走行中と停止中の状態を切り替えたり、走行位置や高度、車の向き、車内/車外の温度/湿度、一般道/高速道路走行中を変更したりする。また、CPUの使用率を70としてメモリ空き容量を1MBとし、バスの使用率を80とするなど、エミュレート環境の状態を変更し、その状態で動作テストを実施する。次いで、制限対象処理であるかどうかが調べられるステップST15。すなわち、制約条件として設定されているリソースに対する処理であるかどうかが調べられる。このステップST15において、制限対象処理でないことが判断されると、シーケンスはステップST13に戻り、上述した処理が繰り返される。一方、ステップST15において、制限対象処理であることが判断されると、次いで、環境状態が取得されるステップST14。すなわち、Javaアプリ実行部112はナビゲーションサービス110から環境状態を取得する。次いで、実行可能であるかどうかが調べられるステップST17。すなわち、Javaアプリ実行部112は、ステップST14で取得した環境状態に基づいて、Javaアプリを実行可能であるかどうかを調べる。このステップST17で、実行可能であることが判断されると、シーケンスはステップST13に戻り、上述した処理が繰り返される。一方、ステップST17において、実行可能でないことが判断されると、処理は終了する。上記ステップST13において、動作テストが終了であることが判断されると、証明情報が生成されるステップST18。すなわち、ナビ環境設定ウインドウ33の操作によって様々な環境での動作テストが行われた後、正常に動作する事が確認できたら、Javaアプリを用いて証明部23は証明情報を生成する。証明部23で行われる証明方法としては、証明部23にあらかじめ用意されている鍵を用いてJavaアプリに署名する方法やJavaアプリを暗号化する方法を用いることができる。なお。署名および暗号化の技術としては、公知の技術を用いることができる。その後、処理は終了する。なお、このステップST13において、証明部23は、CPU使用率、メモリ使用量、ハードディスク使用量、バス使用率およびネットワーク使用可否の少なくとも1つを含むリソース状態と、走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも1つを含む環境状態とを含む制約条件に応じて証明情報を生成するように構成できる。この構成によれば、ハードウェアに関する制約条件の要素毎に動作の証明を行うことができる。また、証明部23は、APIの使用可否、ライブラリの使用可否、特定プログラムの実行状態の少なくとも1つを含むリソース状態と、走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも1つを含む環境状態とを含む制約条件に応じて証明情報を生成するように構成することもできる。この構成によれば、ソフトウェアに関する制約条件の要素毎に動作の証明を行うことができる。さらに、証明部23は、プログラム提供元に応じて証明情報を生成するように構成することもできる。この構成によれば、プログラム提供装置を提供する対象例えばカーメーカやコンテンツプロバイダなど毎に証明情報を生成することができる。このステップST18において生成された証明情報は、Javaアプリとともに図示しないメモリに保存するように構成できる。この場合、図示しないメモリは、この発明のプログラム保存手段に対応し、このメモリに保存されるJavaアプリはプログラムに対応する。また、ステップST18において生成された証明情報は、Javaアプリとともに、動作テストプログラム20で実現されている図示しない通信インタフェースを用いて、カーナビゲーション装置に直接に送信するように構成できる。この場合、図示しない通信インタフェースは、この発明に係るプログラム提供装置のプログラム送信手段に対応し、この通信インタフェースで受信するJavaアプリはプログラムに対応する。次に、上述した手順によって生成された証明情報とJavaアプリをカーナビゲーション装置で実行する動作を、図6に示すフローチャートを参照しながら説明する。まず、Javaアプリが取得されるステップST21。具体的には、カーナビゲーション装置は、通信機器61図1参照を介してJavaアプリおよび証明情報を受信する。受信されたJavaアプリは、Javaアプリ11としてセットされる。次いで、Javaアプリの認証が行われるステップST22。すなわち、Javaアプリ認証部14は、受け取った証明情報を認証する。このJavaアプリ認証部14は、この発明のプログラム認証手段に対応する。Javaアプリ認証部14における認証方法としては、Javaアプリ認証部14にあらかじめ用意されている鍵を用いて署名検証を行う方法やJavaアプリの暗号化を復号する方法を用いることができる。なお、署名検証および復号の技術としては、公知の技術を用いることができる。Javaアプリ認証部14は、認証結果をJavaアプリ実行部12に送る。次いで、認証が正当OKであるかどうかが調べられるステップST23。すなわち、Javaアプリ実行部12は、Javaアプリ認証部14から送られてきた認証結果が正当であるかどうかを調べる。このステップST23において、認証が正当であることが判断されると、Javaアプリが実行されるステップST24。一方、認証が不正例えば鍵が存在しない場合や署名検証で一致が得られない場合であることが判断されると、Javaアプリを実行せずに処理は終了する。以上説明したように、この発明の実施の形態1に係るプログラム提供装置によれば、リソース状態と環境状態を制約条件として設定することによって、カーナビゲーション装置のような環境における動作確認をパーソナルコンピュータ上で実施することができる。したがって、カーナビゲーション装置用に開発されたプログラムの動作検証および提供に好適である。また、カーナビゲーション装置では、動作テストプログラムによって動作確認されたJavaアプリのみ動作を許可するため、不正なJavaアプリが動作するのを防ぐことができる。ハードウェアエミュレータおよびソフトウェアエミュレータによって再現されているリソースの使用を環境状態によって制限するように構成したので、特許文献1に記載されている技術とは異なり、安全上の観点から、車の動作状態、例えば走行中であるか停止中であるかに応じてプログラムの動作を制限したテストを行うことができ、十分な動作検証が可能になる。また、制約条件をファイルとして保持しているため、プログラム提供装置を提供する側がファイルの内容を変更することで、プログラム提供装置を提供する対象例えばカーメーカやコンテンツプロバイダなど毎に制約条件を変更した環境を提供することができる。また、Javaアプリ実行部112によってJavaアプリが正常に実行されたことを証明する証明情報を生成してJavaアプリとともにユーザに提供するように構成したので、ユーザは、プログラム提供装置で動作テストしたことが証明されたプログラムを取得することができ、悪意のあるプログラムや設計ミスを含むプログラムなどをカーナビゲーション装置で実行することがない。その結果、機器の動作不良、機器内の情報の漏洩などといった被害を防止できる。なお、上述した実施の形態1では、様々な環境での動作確認をユーザがナビ環境設定ウインドウ33を用いてカーナビゲーション装置の環境を設定することによって行うように構成したが、この環境の設定を自動で行うように構成することもできる。例えば、動作テストプログラム20を提供する側が、テストコースのデータをあらかじめ用意しておき、このテストコースを走行中に正常に動作していればJavaアプリは安全に動作すると判断して証明情報を生成するように構成できる。また、上述した実施の形態1では、制約条件を保持する例として、ファイルにリソース状態と環境状態を羅列するように構成したが、制約条件を、Javaのアクセス制御のために標準で用意されているJavaポリシーファイルに追記するように構成することもできる。また、このJavaポリシーファイルをネットワークを通じて更新することによって、制約条件を更新することもできる。また、カーナビゲーション装置のメーカが、自社のカーナビゲーション装置用のJavaアプリを一般のユーザが作成できるような環境を提供したい場合、制約条件に一般のユーザに許可してもよい動作範囲の設定を施し、カーナビゲーション装置のJavaアプリ認証部14に埋め込んである鍵に対応したカーナビゲーション装置のメーカ独自の鍵を動作テストプログラム20の証明部23に埋め込んで動作テストプログラム20を配布する。また、正規ディーラに対しては一般のユーザの場合と制約条件を変更して動作テストプログラム20を配布する。この際、動作テストプログラム20の証明部23に埋め込む鍵は変更する必要はない。これにより、カーメーカは制約条件を変更するだけで提供先毎に適した動作テストプログラムを送付することができる。実施の形態2.この発明の実施の形態2は、証明情報に制約条件を埋め込むようにしたものである。この実施の形態2は、Javaアプリ動作テストプログラム20の証明部23における証明方法とカーナビゲーション装置のソフトウェア構成が、実施の形態1と異なる。以下では、実施の形態1と相違する部分を中心に説明する。この実施の形態2に係るプログラム提供装置を構成する動作テストプログラム20の証明部23は、制約条件を含んだ証明情報を生成する。例えば、制約条件が図4に示したようなファイルに保持されている場合、証明部23は、そのファイル自体も暗号化して証明情報に埋め込む。図7は、この発明の実施の形態2に係るカーナビゲーション装置のソフトウェア構成を示す図である。このソフトウェア構成は、実施の形態1に係るカーナビゲーション装置のソフトウェア構成に、Javaアプリ実行制限部15が追加されて構成されている。なお、実施の形態1においては、Javaアプリ実行制限部は動作テストプログラム20にのみ含まれており、カーナビゲーション装置には含まれていない。次に、プログラム提供装置で生成された証明情報とJavaアプリをカーナビゲーション装置で実行する動作を、図8に示すフローチャートを参照しながら説明する。まず、Javaアプリが取得されるステップST31。具体的には、カーナビゲーション装置は、通信機器61図1参照を介してJavaアプリおよび証明情報を受信する。この場合の通信機器61は、この発明に係る車載情報システムのプログラム受信手段に対応し、この通信機器61で受信するJavaアプリはプログラムに対応する。受信されたJavaアプリは、Javaアプリ11としてセットされる。次いで、Javaアプリの認証が行われるステップST32。すなわち、Javaアプリ認証部14は、受け取った証明情報を認証する。ここで、Javaアプリ認証部14における認証方法としては、Javaアプリ認証部14にあらかじめ用意されている鍵を用いて暗号化されている証明情報を復号する方法を用いることができる。次いで、認証が正当OKであるかどうかが調べられるステップST33。すなわち、Javaアプリ実行部12は、Javaアプリ認証部14から送られてきた認証結果が不正であるかどうかを調べる。このステップST33において、認証が不正であることが判断されると、Javaアプリを実行せずに処理は終了する。一方、ステップST33において、認証が正当であることが判断されると、次いで、制約条件が取得されるステップST34。すなわち、Javaアプリ実行部12は、認証結果が正当であることを判断すると、証明情報から制約条件を取得してJavaアプリ実行制限部15に送る。次いで、Javaアプリが実行されるステップST35。すなわち、Javaアプリ実行部12は、Javaアプリ11を実行する。この時、Javaアプリ実行制限部15は、ステップST34において取得した制約条件に従ってJavaアプリ11の動作を制限する。なお、アプリの終了処理がコールされることによって、アプリは正常に終了する。次いで、Javaアプリが実行中の動作制限として、APIがコールされると制限対象処理であるかどうかが調べられるステップST36。すなわち、制約条件に記載されたリソースに対する処理であるかどうかが調べられる。このステップST36において、制限対象処理でないことが判断されると、シーケンスはステップST35に戻り、上述した処理が繰り返される。一方、ステップST36において、制限対象処理であることが判断されると、次いで、環境状態が取得されるステップST37。すなわち、Javaアプリ実行部12はナビゲーションサービス10から環境状態を取得する。次いで、実行可能であるかどうかが調べられるステップST38。すなわち、Javaアプリ実行部12は、ステップST37で取得した環境状態に基づいて、Javaアプリを実行可能であるかどうかを調べる。このステップST39で、実行可能であることが判断されると、シーケンスはステップST35に戻り、上述した処理が繰り返される。一方、ステップST38において、実行可能でないことが判断されると、処理はエラー終了する。以上説明したように、この発明の実施の形態2によれば、受信したJavaアプリに制約条件が付属されているため、カーナビゲーション装置側でJavaアプリの動作環境を知ることができる。したがって、カーナビゲーション装置のユーザに対して、どの状態であればJavaアプリが実行可能であるかどうかを通知することができるので、例えば、カーメーカから取得したJavaアプリAは走行中にも動作可能であるが、コンテンツプロバイダから取得したJavaアプリBは停車中にしか使えないことをユーザに知らせることで、走行中にJavaアプリBを動作させようという意思を起こさせないようにすることができる。また、サービスアプリCを実行するためにはライブラリCが必要でサービスアプリDが実行中でなければならないといったソフトウェアリソースや、サービスアプリCを実行するためにはハードディスクの空き容量とメモリの空き容量がどれだけ必要で、CPUの負荷は何以下であるといったハードウェアリソースの詳細な動作環境をユーザに通知することができる。なお、通信機器61を介して受信された証明情報は、CPU使用率、メモリ使用量、ハードディスク使用量、バス使用率およびネットワーク使用可否の少なくとも1つを含むリソース状態と、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも1つを含む環境状態とを含むように構成できる。この構成によれば、証明情報として環境状態とハードウェアのリソース状態が含まれているので、車載情報システムで安全に動作可能な状態を決定できる。また、通信機器61を介して受信された証明情報は、アプリケーションプログラムインタフェースの使用可否、ライブラリの使用可否および特定プログラムの実行状態の少なくとも1つを含むリソース状態と、走行中または停止中を表す走行状態、走行速度、位置、向き、高度、温度、湿度、天気および道路種別の少なくとも1つを含む環境状態とを含むように構成できる。この構成によれば、証明情報として環境状態とソフトウェアのリソース状態が含まれているので、車載情報システムで安全に動作可能な状態を決定できる。実施の形態3.この発明の実施の形態3は、証明情報に提供元情報を埋め込むようにしたものである。この実施の形態3は、Javaアプリ動作テストプログラム20の証明部23における証明方法とカーナビゲーション装置のソフトウェア構成が、実施の形態1と異なる。以下では、実施の形態1と相違する部分を中心に説明する。プログラム提供装置を構成する動作テストプログラム20の証明部23は、Javaアプリの提供元の情報を含んだ証明情報を生成する。例えば、証明部23が持っている鍵は提供元毎に異なっており、この鍵を用いて署名や暗号化などの処理を行うことにより提供元の情報を埋め込むことができる。図9は、この発明の実施の形態3に係るカーナビゲーション装置のソフトウェア構成を示す図である。このソフトウェア構成は、実施の形態2に係るカーナビゲーション装置のソフトウェア構成に、制約条件リスト16が追加されて構成されている。この制約条件リスト16は、この発明の制約条件取得手段に対応し、鍵の種類に応じた動作を規定している。次に、上述したようにして生成された証明情報とJavaアプリをカーナビゲーション装置で実行する動作を、図10に示すフローチャートを参照しながら説明する。まず、Javaアプリが取得されるステップST41。具体的には、カーナビゲーション装置は、通信機器61図1参照を介してJavaアプリおよび証明情報を受信する。この場合の通信機器61は、この発明に係る車載情報システムのプログラム受信手段に対応し、この通信機器61で受信するJavaアプリはプログラムに対応する。受信されたJavaアプリは、Javaアプリ11としてセットされる。次いで、Javaアプリの認証が行われるステップST42。すなわち、Javaアプリ認証部14は、受け取った証明情報を認証する。ここで、Javaアプリ認証部14における認証方法としては、Javaアプリ認証部14にあらかじめ用意されている提供元に応じた鍵を用いて暗号化されている証明情報を復号する方法を用いることができる。この時、復号に成功した鍵によってJavaアプリの提供元を判別することができる。次いで、認証が正当OKであるかどうかが調べられるステップST43。すなわち、Javaアプリ実行部12は、Javaアプリ認証部14から送られてきた認証結果が不正であるかどうかを調べる。このステップST43において、認証が不正であることが判断されると、Javaアプリを実行せずに処理はエラー終了する。一方、ステップST43において、認証が正当であることが判断されると、次いで、Javaアプリの提供元の判別結果に基づき制約条件リスト16から該当する制約条件を決定されるステップST44。すなわち、Javaアプリ実行部12は、認証結果が正当であることを判断すると、制約条件リスト16から制約条件を取得してJavaアプリ実行制限部15に送る。次いで、Javaアプリが実行されるステップST45。すなわち、Javaアプリ実行部12は、Javaアプリを実行する。この時、Javaアプリ実行制限部15は、ステップST44において決定された制約条件に従ってJavaアプリの動作を制限する。なお、アプリの終了処理がコールされることによって、アプリは正常に終了する。次いで、Javaアプリ実行中の動作制限として、APIがコールされると、制限対象処理であるかどうかが調べられるステップST46。すなわち、制約条件に記載されたリソースに対する処理であるかどうかが調べられる。このステップST46において、制限対象処理でないことが判断されると、シーケンスはステップST45に戻り、上述した処理が繰り返される。一方、ステップST46において、制限対象処理であることが判断されると、次いで、環境状態が取得されるステップST47。すなわち、Javaアプリ実行部12はナビゲーションサービス10から環境状態を取得する。次いで、実行可能であるかどうかが調べられるステップST48。すなわち、Javaアプリ実行部12は、ステップST47で取得した環境状態に基づいて、Javaアプリを実行可能であるかどうかを調べる。このステップST48で、実行可能であることが判断されると、シーケンスはステップST45に戻り、上述した処理が繰り返される。一方、ステップST48において、実行可能でないことが判断されると、処理はエラー終了する。以上説明したように、この発明の実施の形態3によれば、証明情報としてあらかじめ車載情報システムが所持している制約条件リストの中から提供元を指定するように構成したので、提供元に応じた動作制限ができる。また、Javaアプリには提供元情報のみが記載されているため、詳細な動作設定がなされることによって制約条件のデータが多い場合でも通信に要するコストを抑えることができる。また、動作テストプログラムを配布した後にJavaアプリの動作環境の変更が生じた場合、カーナビゲーション装置に記録されている制約条件リストを更新することで対応できる。また、上述した実施の形態3では、提供元を特定する方法として鍵の種別を用いたが、提供元を示す情報、例えばID、URL、名称などを記録したデータをJavaアプリに付属するように構成することができる。なお、上述した実施の形態1~3では、開発対象のプログラムをJavaアプリとして説明したが、開発対象のプログラムは、例えばC言語などによって記述されるネイティブアプリケーションとすることもできる。また、実施の形態1~3に係るプログラム提供装置は、パーソナルコンピュータ上で実行されるプログラムであるので、このプログラムを記録媒体に格納して配布するように構成できる。