(57)【要約】      （修正有）【課題】ユーザがユーザインタフェースに対して行った操作に基づいて、迅速な応答が求められるプログラムの実行速度を向上させる。【解決手段】ユーザからの各種要求を受け、前記要求に応じた信号を出力する複数のユーザインタフェースと、前記各ユーザインタフェースから出力される前記各信号に対応した複数のプログラムを記憶するメモリと、前記各信号に対応した前記プログラムをインタプリタ方式で実行するプロセッサとを備え、前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記プロセッサが、前記要求に対応した前記プログラムをコンパイルして実行する情報処理装置に関する。【選択図】図４
2005309478.tif 000002
【特許請求の範囲】
【請求項１】
ユーザからの各種要求を受け、前記要求に応じた信号を出力する複数のユーザインタフェースと、
前記各ユーザインタフェースから出力される前記各信号に対応した複数のプログラムを記憶するメモリと、
前記各信号に対応した前記プログラムをインタプリタ方式で実行するプロセッサと、
を備え、
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記プロセッサが、前記要求に対応した前記プログラムをコンパイルして実行すること
を特徴とする情報処理装置。
【請求項２】
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記プロセッサが、前記要求に対応した前記プログラムを、他の前記プログラムに優先して実行すること
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記プロセッサが、前記要求に対応した前記プログラムを実行する際に使用する前記メモリの記憶領域の前記プログラムへの割り当て量を増加させること
を特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記ユーザインタフェースの少なくとも一つは、前記プロセッサに前記ユーザからの前記要求に対応した前記プログラムをコンパイルして実行させるための前記要求を受ける前記ユーザインタフェースであること
を特徴とする請求項１に記載の情報処理装置。
【請求項５】
ユーザからの各種要求を受け、前記要求に応じた信号を出力する複数のユーザインタフェースと、
前記各ユーザインタフェースから出力される前記各信号に対応した複数のプログラムを記憶するメモリと、
前記各信号に対応した前記プログラムをインタプリタ方式で実行するプロセッサと、
を備えた情報処理装置の制御方法であって、
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記プロセッサが、前記要求に対応した前記プログラムをコンパイルして実行すること
を特徴とする情報処理装置の制御方法。
【請求項６】
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記プロセッサが、前記要求に対応した前記プログラムを、他の前記プログラムに優先して実行すること
を特徴とする請求項５に記載の情報処理装置の制御方法。
【請求項７】
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記プロセッサが、前記要求に対応した前記プログラムを実行する際に使用する前記メモリの記憶領域の前記プログラムへの割り当て量を増加させること
を特徴とする請求項５に記載の情報処理装置の制御方法。
【請求項８】
ユーザからの各種要求を受け、前記要求に応じた信号を出力する複数のユーザインタフェースと、
前記各ユーザインタフェースから出力される前記各信号に対応した複数のプログラムを記憶するメモリと、
前記各信号に対応した前記プログラムをインタプリタ方式で実行するプロセッサと、
を備えた情報処理装置に、
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記要求に対応した前記プログラムをコンパイルして実行させるためのプログラム。
【請求項９】
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記要求に対応した前記プログラムを、他の前記プログラムに優先して実行させるための請求項８に記載のプログラム。
【請求項１０】
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記要求に対応した前記プログラムを実行する際に使用する前記メモリの記憶領域の前記プログラムへの割り当て量を増加させるための請求項８に記載のプログラム。
【請求項１１】
ユーザからの各種要求を受け、前記要求に応じた信号を出力する複数のユーザインタフェースと、
前記各ユーザインタフェースから出力される前記各信号に対応した複数のプログラムを記憶するメモリと、
前記各信号に対応した前記プログラムをインタプリタ方式で実行するプロセッサと、
を備え、
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記プロセッサが、前記要求に対応した前記プログラムをコンパイルして実行すること
を特徴とするナビゲーション装置。
【請求項１２】
ユーザからの各種要求を受け、前記要求に応じた信号を出力する複数のユーザインタフェースと、
前記各ユーザインタフェースから出力される前記各信号に対応した複数のプログラムを記憶するメモリと、
前記各信号に対応した前記プログラムをインタプリタ方式で実行するプロセッサと、
を備え、
前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記プロセッサが、前記要求に対応した前記プログラムをコンパイルして実行すること
を特徴とする携帯端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、情報処理装置で実行されるアプリケーションプログラムの開発が、インタプリタ方式で実行されるプログラム言語を用いて行われるようになっている。  
インタプリタ方式でプログラムが実行される場合には、コンパイルして実行される場合に比べてメモリ消費量は相対的に少ないものの、プログラムの実行速度や起動速度が遅い場合がある。このため、ユーザから受けた要求に対して迅速に応答することができない場合がある。  
このため、実行回数が多いプログラムをネイティブコードへコンパイルして実行する技術が開発されている。
【特許文献１】特開平１０−２４０５４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、プログラムの実行回数と応答の迅速性とは直接関連するものではなく、例えば、実行回数は少なくても迅速な応答が求められるプログラムも存在する。そのため、実行回数の多いプログラムをコンパイルすることは、必ずしもユーザから受けた要求に対して迅速に応答することに結びつくとは限らない。  
そこで、ユーザがユーザインタフェースに対して行った操作に基づいて、コンパイルを実行する等、迅速な応答が求められるプログラムの実行速度を向上させるための技術が求められている。
【０００４】
本発明は上記課題を鑑みてなされたものであり、ユーザがユーザインタフェースに対して行った操作に基づいて、迅速な応答が求められるプログラムの実行速度を向上させることを可能とする情報処理装置、情報処理装置の制御方法、及びプログラムを提供することを主たる目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明は、ユーザからの各種要求を受け、前記要求に応じた信号を出力する複数のユーザインタフェースと、前記各ユーザインタフェースから出力される前記各信号に対応した複数のプログラムを記憶するメモリと、前記各信号に対応した前記プログラムをインタプリタ方式で実行するプロセッサとを備え、前記ユーザから前記要求を受けてから所定期間内に、さらに前記要求を所定回数以上受けた場合には、前記プロセッサが、前記要求に対応した前記プログラムをコンパイルして実行することを特徴とする情報処理装置に関する。
【０００６】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための最良の形態の欄、及び図面により明らかにされる。
【発明の効果】
【０００７】
ユーザがユーザインタフェースに対して行った操作に基づいて、迅速な応答が求められるプログラムの実行速度を向上させることが可能となる。実行速度を向上させるための処理は、ユーザからの要求のあったプログラムに対して行われるので、主記憶装置の消費量の増大を抑制することができる。
【発明を実施するための最良の形態】
【０００８】
＝＝＝全体構成例＝＝＝
まず本実施の形態に係る情報処理装置２００について図１を用いて説明する。  
本実施の形態に係る情報処理装置２００は、ユーザインタフェースを通じてユーザから各種要求を受け、ユーザからの要求に対応したプログラムを実行することにより、ユーザに対して各種情報処理サービスを提供する情報機器である。  
例えばワークステーションや、サーバ、メインフレームコンピュータ、パーソナルコンピュータ等とすることができる。また、例えばハンドヘルドコンピュータやＰＤＡ（Personal Digital Assistant）、携帯電話機等の携帯端末装置６００や、自動車や船舶、航空機等に搭載されるナビゲーション装置５００、その他、住宅やビルで例えば空調や照明の制御のために使用されるホームサーバ、ディジタルテレビ受信器等のセットトップボックスとすることもできる。
【０００９】
図１に示すように、本実施の形態に係る情報処理装置２００は、処理装置（プロセッサ）２１０、主記憶装置（メモリ）２２０、通信装置２３０、入力Ｉ／Ｆ装置（入力Inter／Face装置）２５０、出力装置２６０、位置情報取得装置２７０、２次記憶装置２８０を備えて構成される。
【００１０】
処理装置２１０は、情報処理装置２００の全体の制御を司るもので、主記憶装置２２０に記憶された様々なプログラムを実行する。これにより上記情報処理装置２００としての各種機能が実現される。プログラムはコンパイルされてから実行されるようにすることもできるし、インタプリタ方式で実行されるようにすることもできる。本実施の形態においては、アプリケーションプログラム８３０はインタプリタ方式で実行される。処理装置２１０は例えばＣＰＵ（Central Processing Unit）とすることができる。また主記憶装置２２０は例えば半導体メモリとすることができる。
【００１１】
また主記憶装置２２０には、本実施の形態に係る各種の動作を行うためのコードから構成される操作性向上プログラム８００や、基本制御プログラム８１０、仮想機械制御プログラム８２０、アプリケーションプログラム８３０が記憶される。
【００１２】
基本制御プログラム８１０はいわゆるオペレーティングシステムであり、情報処理装置２００の各種基本制御を行うためのプログラムである。  
仮想機械制御プログラム８２０は、いかなるハードウエアやソフトウエアを備えた情報処理装置２００であっても、アプリケーションプログラム８２０を実行可能とするためのプログラムである。  
アプリケーションプログラム８３０は、ユーザインタフェースを通じてユーザから受けた各種要求に応じて実行されるプログラムである。
【００１３】
２次記憶装置２８０は例えばハードディスク装置とすることができる。また半導体メモリとすることもできる。操作性向上プログラム８００や、基本制御プログラム８１０、仮想機械制御プログラム８２０、アプリケーションプログラム８３０は、２次記憶装置２８０に記憶されるようにすることもできる。２次記憶装置２８０には、操作性向上ユーザ入力処理部テーブル７００や、操作性向上処理適用順位テーブル７１０が記憶されている。これらについては後述する。
【００１４】
入力Ｉ／Ｆ装置２５０は、ボタン２５１やタッチパネル２５２等の各ユーザインタフェースから出力された信号を処理装置２１０に送信する装置である。ボタン２５１やタッチパネル２５２等のユーザインタフェースは、ユーザからの各種要求を受け、要求に応じた信号を出力するための装置である。その他、ユーザインタフェースとしては、キーボードやマウス等を用いることもできる。出力装置２６０は情報を外部に出力するための装置であり、ユーザインタフェースとして機能する。出力装置２６０としては例えばディスプレイや音声出力装置等を用いることができる。
【００１５】
通信装置２３０は通信を行うための装置である。例えば通信装置２３０はネットワーク４００を通じて他の情報処理装置２００と通信を行う。これにより例えば上述した操作性向上プログラム８００や、基本制御プログラム８１０、仮想機械制御プログラム８２０、アプリケーションプログラム８３０を他の情報処理装置２００からネットワーク４００を通じて受信し、２次記憶装置２８０や主記憶装置２２０に記憶するようにすることもできる。
【００１６】
位置情報取得装置２７０は、情報処理装置２００の位置を示す情報を出力する装置であり、例えば人工衛星から送信されるＧＰＳ（Global Positioning System）信号を受信し、情報処理装置２００の緯度を示す情報及び経度を示す情報を出力するＧＰＳ受信器とすることができる。また上記ＧＰＳ受信器は、情報処理装置２００の高度を示す情報も出力するものとすることもできる。その他位置情報取得装置２７０は、携帯電話用通信アンテナから送信される電波を受信し、情報処理装置２００の位置を求め、情報処理装置２００の位置を示す情報を出力するようにすることもできる。
【００１７】
＝＝＝ネットワーク＝＝＝
ネットワーク４００は、例えばインターネットのような公共的な通信ネットワークとすることもできるし、プライベートな通信ネットワークとすることもできる。また例えば電話通信網とすることもできる。
【００１８】
＝＝＝ナビゲーション装置＝＝＝
次に、本実施の形態に係る情報処理装置２００の一形態として、ナビゲーション装置５００の外観構成を図２に示す。  
ナビゲーション装置５００は、図２に示すように複数のボタン２５１と出力装置２６０とを備える。ユーザはボタン２５１を押下することにより、押下したボタン２５１に応じた様々な処理をナビゲーション装置５００に実行させることができる。例えば、ユーザはあるボタン２５１を押下することにより出力装置２６０に地図を表示させることができる。この場合、ナビゲーション装置５００は、押下されたボタン２５１に対応したアプリケーションプログラム８３０を実行することにより、出力装置２５０に地図の表示を行う。
【００１９】
操作性向上ボタン２５１は、ユーザがあるボタン２５１を押した際に、そのボタン２５１に応じたナビゲーション装置５００の応答が遅い場合に押下すると、そのボタン２５１に対応したアプリケーションプログラム８３０の実行を高速に行わせるようにするためのボタン２５１である。例えばそのアプリケーションプログラム８３０を他のアプリケーションプログラム８３０に優先して実行させるようにすることができる。
【００２０】
＝＝＝携帯電話機の外観構成＝＝＝
次に、本実施の形態に係る情報処理装置２００の一形態として、携帯電話機６００の外観構成を図３に示す。  
携帯電話機６００は、図３に示すように複数のボタン２５１と出力装置２６０とを備える。ユーザはボタン２５１を押下することにより、押下したボタン２５１に応じた様々な処理を携帯電話機６００に実行させることができる。例えば、ユーザはあるボタン２５１を押下することにより出力装置２６０にメール作成画面を表示させることができる。この場合、携帯電話機６００は、押下されたボタン２５１に対応したアプリケーションプログラム８３０を実行することにより、出力装置２５０にメール作成画面の表示を行う。
【００２１】
操作性向上ボタン２５１は、ユーザがあるボタン２５１を押した際に、そのボタン２５１に応じた携帯電話機６００の応答が遅い場合に押下すると、そのボタン２５１に対応したアプリケーションプログラム８３０の実行を高速に行わせるようにするためのボタン２５１である。例えばそのアプリケーションプログラム８３０を他のアプリケーションプログラム８３０に優先して実行させるようにすることができる。
【００２２】
＝＝＝機能ブロック図＝＝＝
次に本実施の形態に係る情報処理装置２００の機能ブロック図を図４に示す。  
アプリケーションプログラム８３０は、主記憶装置２２０に記憶され、ユーザインタフェースを通じて受けたユーザからの要求に対応したユーザ入力処理部８３１を有する。ユーザから受けた要求に応じた処理を実行するため、ユーザ入力処理部８３１はアプリケーションプログラム８３０内に複数ある場合がある。例えばナビゲーション装置５００の例では、ユーザからの要求に応じて地図を表示するためのユーザ入力処理部８３１や、ユーザからの要求に応じてＦＭラジオで放送されている渋滞情報を受信するためのユーザ入力処理部８３１等がある。
【００２３】
仮想機械制御プログラム８２０は、インタプリタ方式でアプリケーションプログラム８３０を実行するためのプログラム実行環境を提供する。仮想機械制御プログラム８２０が処理装置２１０により実行されることにより、アプリケーションプログラム８３０がインタプリタ方式で実行される。
【００２４】
操作性向上プログラム８００は、操作性向上指示プログラム８０１、操作性向上処理部決定プログラム８０２、入力監視プログラム８０３を備えて構成され、アプリケーションプログラム８３０の操作性を向上させるプログラムである。ここで操作性とは、ユーザインタフェースを通じてユーザから受けた要求に対する応答の早さをいう。操作性向上指示プログラム８０１は、仮想機械制御プログラム８２０に対して、ユーザ入力処理プログラム８３１の操作性を向上させる処理を実行させるためのプログラムである。
【００２５】
操作性を向上させる処理としては、例えば、ユーザ入力処理プログラム８３１をネイティブコードにコンパイルすることや、ユーザ入力処理プログラム８３１の実行優先度を上げる（他のユーザ入力処理プログラム８３１に優先して実行する）こと、処理装置２１０がユーザ入力処理プログラム８３１を実行する際に使用する主記憶装置２２０の記憶領域の割り当て量を増加させること、ユーザ入力処理プログラム８３１を２次記憶装置２８０から主記憶装置２２０にプレロード（ユーザ入力処理プログラム８３１の実行前に、ユーザ入力処理プログラム８３１を２次記憶装置２８０から主記憶装置２２０にロードしておくこと）すること等が挙げられる。これらの各処理については後述する。
【００２６】
その他、ユーザ入力処理プログラム８３１の実行に伴い出力されるログデータを、例えばネットワーク４００を通じて通信可能に接続された他の情報処理装置２００に送信し、他の情報処理装置２００を用いてアプリケーションプログラム８３０の開発を行っているプログラム開発者に、ユーザ入力処理プログラム８３１の操作性が向上するようにアプリケーションプログラム８３０の変更を行わせるようにすることもできる。この場合、プログラム開発者によって変更されたアプリケーションプログラム８３０は、適宜ネットワーク４００を通じてダウンロードすることにより、操作性の向上した最新のアプリケーションプログラム８３０が処理装置２１０により実行されるようにすることもできる。また例えば、出力装置２６０に「少々お待ちください」等のメッセージを表示するようにすることもできる。これにより、ユーザに対して処理に時間がかかることを知らせることができるので、ユーザの感じるアプリケーションプログラム８３０の応答時間を短縮する効果を期待することができる。この場合、メッセージを表示させる方法として、仮想機械制御プログラム８２０がメッセージを表示する方法や、ユーザ入力処理プログラム８３１にメッセージを表示するためのコードを挿入する方法等が考えられる。また上記操作性向上処理は、ユーザ入力処理プログラム８３１だけに制限するのではなく、ユーザ入力処理プログラム８３１の処理に関連がある他のプログラムにも適用することもできる。
【００２７】
操作性向上処理部決定プログラム８０２は、アプリケーションプログラム８３０のうち、どのユーザ入力処理プログラム８３１の操作性を向上させるかを決定する。最初にアプリケーションプログラム８３０の実行を行う際に、操作性向上処理部決定プログラム８０２は２次記憶装置２８０内に記憶された操作性向上ユーザ入力処理部テーブル７００内に記憶されている情報から操作性を向上させるユーザ入力処理プログラム８３１を決定する。またユーザインタフェースに対するユーザによる操作を監視する入力監視プログラム８０３から送信される情報に基づき、操作性を向上させるユーザ入力処理プログラム８３１を決定する。詳細については後述する。
【００２８】
入力監視プログラム８０３は、ユーザがボタン２５１やタッチパネル２５２を所定期間内に所定回数以上押下する等の連打を行ったり、複数のボタン２５１を同時に押下するなどの無効な操作をしたり、操作性向上ボタン２５１を押下したり、操作性を向上させるために明示的に決められた操作を行ったりしたことを検知し、操作性向上処理部決定プログラム８０２に通知する。そうすると、操作性向上処理部決定プログラム８０２は、操作性を向上させるユーザ入力処理プログラム８３１を決定し、決定したユーザ入力処理プログラム８３１の識別子を操作性向上ユーザ入力処理部テーブル７００に記載する。そして操作性向上指示プログラム８０１は決定されたユーザ入力処理プログラム８３１の操作性を向上させるための処理を行うように、仮想機械制御プログラム８２０に指示を行う。
【００２９】
操作性向上プログラム８００は、ユーザがボタン２５１やタッチパネル２５２を連打したり、無効な操作したりすることを検知することにより、ユーザが操作性が悪いと感じているユーザ入力処理プログラム８３１を推測し、上記の操作性向上処理を行う。
【００３０】
また明示的に決められた操作をユーザが行ったことを検知することにより、ユーザにとって操作性が悪いユーザ入力処理プログラム８３１を推測するようにすることもできる。明示的に決められた操作としては、操作性向上ボタン２５１を押下することや、ユーザが意識的にボタン２５１を連打する、あるいは、決められたボタン２５１の組み合わせを押下する等が考えられる。
【００３１】
また２次記憶装置２８０にユーザ入力処理プログラム８３１の実行履歴を記憶しておき、操作性向上処理部決定プログラム８０２が操作性を向上するユーザ入力処理プログラム８３１を決定する際に、実行履歴に記憶されたユーザ入力処理プログラム８３１の実行回数を参考にするようにすることもできる。
【００３２】
＝＝＝操作性向上ユーザ入力処理部テーブル＝＝＝
次に操作性向上ユーザ入力処理部テーブル７００を図５に示す。  
操作性向上ユーザ入力処理部テーブル７００は、「プログラム名」欄、「処理部名」欄、「操作性向上処理」欄を備える。「プログラム名」欄にはアプリケーションプログラム８３０の識別子が記載される。アプリケーションプログラム８３０が例えばＪＡＶＡ（登録商標）で作成されている場合には、クラス名とすることができる。「処理部名」欄にはユーザ入力処理プログラム８３１の識別子が記載される。アプリケーションプログラム８３０が例えばＪＡＶＡ（登録商標）で作成されている場合には、メソッド名とすることができる。「操作性向上処理」欄には当該ユーザ入力処理プログラム８３１の操作性を向上させるための処理の内容が記載される。
【００３３】
例えば”コンパイル”と記載されている場合には、当該ユーザ入力処理プログラム８３１をコンパイルして実行することが示される。また”メモリ割り当て増大”と記載されている場合には、当該ユーザ入力処理プログラム８３１を実行する際に処理装置２１０が使用する主記憶装置２２０の記憶領域の割り当て量を増加させることを示す。また”スレッド優先度向上”と記載されている場合には、当該ユーザ入力処理プログラム８３１を、他のユーザ入力処理プログラム８３１に優先して実行することが示される。”プレロード”と記載されている場合には、当該ユーザ入力処理プログラム８３１をプレロードすることが示される。”メッセージ表示”と記載されている場合には、当該ユーザ入力処理プログラム８３１を実行する際に、出力装置２６０に例えば「しばらくお待ち下さい」等のメッセージを表示する事を示す。”ログ送信”と記載されている場合には、当該ユーザ入力処理プログラム８３１を実行した際のログデータを、ネットワーク４００を通じて他の情報処理装置２００に送信することを示す。
【００３４】
＝＝＝処理の流れ＝＝＝
次に、本実施の形態に係る操作性向上の処理の流れを、図７に示すフローチャートに従って説明する。
【００３５】
情報処理装置２００は、ユーザインタフェースを通じてアプリケーションプログラム８３０の実行開始要求を受けると、そのアプリケーションプログラム８３０の実行を開始する。  
その際に、操作性向上処理部決定プログラム８０１は、操作性向上ユーザ入力処理部テーブル７００から操作性を向上させるユーザ入力処理プログラム８３１の情報を取り出し、操作性を向上させるユーザ入力処理プログラム８３１を決定する（S1000）。例えば図５に示した例では、ユーザからアプリケーションプログラムＡ８３０の実行開始要求を受けた場合には、”ａ１”、”ａ２”、”ａ３”の各識別子で特定されるユーザ入力処理プログラム８３１の操作性を向上させることになる。さらに、”ａ１”で特定されるユーザ入力処理プログラム８３１については、”コンパイル”のみならず”メモリ割り当て増大”、”スレッド優先度向上”も行われる。詳細については後述する。
【００３６】
次に、操作性向上指示プログラム８０１は仮想機械制御プログラム８２０に対して、指定したユーザ入力処理プログラム８３１の操作性を向上させる処理を行うように指示する（S1001）。これにより上記指定されたユーザ入力処理プログラム８３１の操作性を向上させる処理が行われる。
【００３７】
その後、入力監視プログラム８０３はユーザからの入力を待つ（S1002）。そしてユーザインタフェースを通じてユーザから要求を受けると、ユーザインタフェースからその要求に応じて出力される信号に応じたユーザ入力処理プログラム８３１の実行が開始される。具体的には、仮想機械制御プログラム８２０がアプリケーションプログラム８３０にユーザからの入力情報を渡し、ユーザ入力処理プログラム８３１の実行が開始される（S1003）。
【００３８】
ここで、入力監視プログラム８０３は、ユーザからの入力回数のカウントを開始する（S1004）。上記カウントはS1003で開始したユーザ入力処理プログラム８３１の実行が終了するまで（所定期間）続ける。ユーザ入力処理プログラム８３１の実行が終了すると（S1005）、S1004で開始したカウントを終了する（S1006）。カウントの値が予め設定された閾値（所定回数）以上の場合にはS1009に進み、それ以外の場合はS1008に進む（S1007）。閾値はユーザが設定するようにすることもできるし、開発者が設定するようにすることもできる。また、ユーザ入力処理プログラム８３１の実行が行われている間に、操作性を向上させるために明示的に決められた操作をユーザが行った場合には（S1008）、S1009に進む。それ以外の場合はS1002に戻る。そしてS1009において、S1003で実行を開始したユーザ入力処理プログラム８３１の識別子を操作性向上ユーザ入力処理部テーブル７００に挿入する（S1009）。そして操作性向上指示プログラム８０１は、S1003で実行を開始したユーザ入力処理プログラム８３１に対して操作性向上処理を行うように仮想機械制御プログラム８２０に指示する（S1010）。そしてS1002に戻る。
【００３９】
ここで、ユーザ入力処理プログラム８３１に対して行われる操作性向上処理は、図６に示す操作性向上処理適用順位テーブル７１０に記載された順序に従って、行われるようにすることができる。  
例えば図６には、コンパイル、メモリ割り当て増大、スレッド優先度向上、プレロード、メッセージ表示、ログ送信の順序で操作性向上処理が行われる場合の例が示される。例えば、コンパイルして実行されているユーザ入力処理プログラム８３１に対して、ユーザからさらに操作性を向上させるための要求を受けた場合には、操作性向上処理適用順位テーブル７１０の記載に基づいて、メモリ割り当ての増大を行う。
【００４０】
次に、コンパイル、メモリ割り当て増大、スレッド優先度向上、プレロードの各処理により、ユーザ入力処理プログラム８３１の操作性を向上するための処理を行う場合のそれぞれの処理の流れを、図８乃至図１４に示すフローチャートに従って説明する。
【００４１】
まず、ユーザ入力処理プログラム８３１をネイティブコードにコンパイルする場合のフローチャートを図８に示す。  
まず仮想機械制御プログラム８２０は、操作性向上指示プログラム８００から、ユーザ入力処理プログラム８３１に対して操作性向上処理を行うように指示を受ける（S2000）。そうすると仮想機械制御プログラム８２０はS2000で受けた指示に従い、どのユーザ入力処理プログラム８３１をネイティブコードにコンパイルするかを決定する（S2001）。例えばＪＡＶＡ（登録商標）の場合、どのユーザ入力処理プログラム８３１に対して操作性向上処理を行うかを決定する手段として、操作性向上ユーザ入力処理部テーブル７００のアプリケーションプログラム名をクラス名とし、また処理部名をメソッド名とすることができる。これにより、メソッド名により特定されるユーザ入力処理プログラム８３１を、コンパイルするユーザ入力処理プログラム８３１として決定することができる。次に、S2001にて決定されたユーザ入力処理プログラム８３１をネイティブコードにコンパイルする（S2002）。コンパイルにより生成されたネイティブコードは主記憶装置２２０内に記憶され、次回同じユーザ入力処理プログラム８３１が実行される場合には、コンパイル後のネイティブコードが実行される。
【００４２】
次に、ユーザ入力処理プログラム８３１を実行する際に処理装置２１０が使用する主記憶装置２２０の記憶領域の割り当て量を増加させる場合のフローチャートを図９、図１０に示す。  
まず仮想機械制御プログラム８２０は、操作性向上指示プログラム８００から、ユーザ入力処理プログラム８３１に対して操作性向上処理を行うように指示を受ける（S3000）。そうすると仮想機械制御プログラム８２０は、S3000で受けた指示に従い、どのユーザ入力処理プログラム８３１に対してメモリ割り当てを増やすか決定する（S3001）。例えばＪＡＶＡ（登録商標）の場合、どのユーザ入力処理プログラム８３１に対して操作性向上処理を行うかを決定する手段として、操作性向上ユーザ入力処理部テーブル７００のアプリケーションプログラム名をクラス名とし、また処理部名をメソッド名とすることができる。これにより、メソッド名により特定されるユーザ入力処理プログラム８３１を、メモリ割り当てを増やすユーザ入力処理プログラム８３１として決定することができる。メモリ割り当てを増やすことにより、ガーベージコレクションの実行が起こりにくくなり、処理が高速になる。次に、S3001にて決定したユーザ入力処理プログラム８３１の実行中にメモリ割り当てが増えるように設定を行う（S3002）。メモリの増加量は予め設定されるようにすることもできるし、利用可能なメモリ量により決定されるようにすることもできる。
【００４３】
続いて、S1003においてユーザ入力処理実行開始の指示をうけて、仮想機械制御プログラム８２０がユーザ入力処理プログラム８３１の実行を開始する前準備として、実行するユーザ入力処理プログラム８３１に対してS3002によってメモリ割り当てを増やすように設定されている場合は、S4001に進む（S4000）。それ以外の場合はS4004に進む。S3002により設定されたメモリの増加量に従ってメモリの割り当てを増やす（S4001）。例えばＪＡＶＡ（登録商標）の場合では、ヒープエリアのサイズを増やす。そしてユーザ入力処理プログラム８３１を実行し（S4002）、実行後、S4001以前の元のメモリ割り当て量に戻す（S4003）。
【００４４】
次に、ユーザ入力処理プログラム８３１の実行優先度を上げる場合のフローチャートを図１１、図１２に示す。  
まず仮想機械制御プログラム８２０は、操作性向上指示プログラム８００から、ユーザ入力処理プログラム８３１に対して操作性向上処理を行うように指示を受ける（S5000）。そうすると仮想機械制御プログラム８２０は、S5000で受けた指示に従い、どのユーザ入力処理プログラム８３１に対して優先度を上げるかを決定する（S5001）。例えばＪＡＶＡ（登録商標）の場合、どのユーザ入力処理プログラム８３１に対して操作性向上処理を行うかを決定する手段として、操作性向上ユーザ入力処理部テーブル７００のアプリケーションプログラム名をクラス名とし、また処理部名をメソッド名とすることができる。これにより、メソッド名により特定されるユーザ入力処理プログラム８３１を、優先度を上げるユーザ入力処理プログラム８３１として決定することができる。次に、S5001にて決定したユーザ入力処理プログラム８３１の優先度を上げるための設定を行う（S5002）。優先度は予め設定されているようにすることができる。
【００４５】
続いて、S1003においてユーザ入力処理実行開始の指示をうけて、仮想機械制御プログラム８２０がユーザ入力処理プログラム８３１の実行を開始する前準備として、ユーザ入力処理プログラム８３１を実行するスレッドの優先度を上げる。S5002によって優先度が設定されている場合にはS6001に進み、それ以外の場合はS6004に進む（S6000）。次に、S5002によって設定された優先度に従って実行しているスレッドの優先度を変更する（S6001）。そしてユーザ入力処理プログラム８３１を実行し（S6002）、実行後、S6001以前の優先度に戻す（S6003）。
【００４６】
次に、ユーザ入力処理プログラム８３１のプレロードを行う場合のフローチャートを図１３、図１４に示す。  
まず仮想機械制御プログラム８２０は、操作性向上指示プログラム８００から、ユーザ入力処理プログラム８３１に対して操作性向上処理を行うように指示を受ける（S7000）。そうすると仮想機械制御プログラム８２０は、S7000で受けた指示に従い、どのユーザ入力処理プログラム８３１に対してプレロードを行うかを決定する（S7001）。例えばＪＡＶＡ（登録商標）の場合、どのユーザ入力処理プログラム８３１に対して操作性向上処理を行うかを決定する手段として、操作性向上ユーザ入力処理部テーブル７００のアプリケーションプログラム名をクラス名とし、また処理部名をメソッド名とすることができる。これにより、メソッド名により特定されるユーザ入力処理プログラム８３１を、プレロードを行うユーザ入力処理プログラム８３１として決定することができる。次に、S7001にて決定したユーザ入力処理プログラム８３１を、事前に主記憶装置２２０へロード可能な形式に変換する。例えばＪＡＶＡ（登録商標）の場合、仮想機械制御プログラム８２０によりクラスファイルを主記憶装置２２０へロードしたときのイメージになるようにネイティブコードへの変換を行う。ネイティブコードは仮想機械制御プログラム８２０と動的リンク可能な形式とすることもできるし、静的にリンク可能な形式とすることもできる。動的リンク可能な形式の場合は、変換後のネイティブコードはファイルに保存される。また静的リンク可能な形式の場合は、仮想機械制御プログラム８２０とリンク後にファイルに保存される。
【００４７】
続いて、仮想機械制御プログラム８２０の実行時の処理であるS1001において、操作性向上の指示をうけて、指示されたユーザ入力処理プログラム８３１が事前にロード可能である場合には、S8001に進み、それ以外の場合は処理を終了する（S8000）。そして、ユーザ入力処理プログラム８３１をロードする（S8001）。ただし、そのユーザ入力処理プログラム８３１が仮想機械制御プログラム８２０と静的リンクされている場合には、仮想機械制御プログラム８２０と一緒にロード済みであるため、本処理の実行は不要である。
【００４８】
以上、本実施の形態に係る情報処理装置２００について説明したが、本実施の形態に係る情報処理装置２００によれば、ユーザがユーザインタフェースに対して行った操作に基づいて、迅速な応答が求められるプログラムの実行速度を向上させることが可能となる。実行速度を向上させるための処理は、ユーザからの要求のあったプログラムに対して行われるので、主記憶装置２２０の消費量の増大を抑制することができる。このため、搭載される主記憶装置２２０の記憶容量が比較的少ない、ナビゲーション装置や、携帯端末装置においては特に、本発明により大きな効果を得ることができる。
【００４９】
このように本実施の形態に係る情報処理装置２００においては、ユーザ入力により処理を行うプログラムの操作性の向上を、ユーザにとって効果的にかつメモリ消費量を抑えつつ実現することが可能となる。
【００５０】
以上発明を実施するための最良の形態について説明したが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【００５１】
【図１】本実施の形態に係る情報処理装置構成を示すブロック図である。
【図２】本実施の形態に係るナビゲーション装置の外観構成を示す図である。
【図３】本実施の形態に係る携帯端末の外観構成を示す図である。
【図４】本実施の形態に係る情報処理装置の機能ブロックを示す図である。
【図５】本実施の形態に係る操作性向上ユーザ入力処理部テーブルを示す図である。
【図６】本実施の形態に係る操作性向上処理適用順位テーブルを示す図である。
【図７】本実施の形態に係る処理の流れを示すフローチャートである。
【図８】本実施の形態に係るコンパイルを行う処理の流れを示すフローチャートである。
【図９】本実施の形態に係るメモリ割り当て量増大を行う処理の流れを示すフローチャートである。
【図１０】本実施の形態に係るメモリ割り当て量増大を行う処理の流れを示すフローチャートである。
【図１１】本実施の形態に係るスレッド優先度向上を行う処理の流れを示すフローチャートである。
【図１２】本実施の形態に係るスレッド優先度向上を行う処理の流れを示すフローチャートである。
【図１３】本実施の形態に係るプレロードを行う処理の流れを示すフローチャートである。
【図１４】本実施の形態に係るプレロードを行う処理の流れを示すフローチャートである。
【符号の説明】
【００５２】
２００    情報処理装置
２１０    処理装置
２２０    主記憶装置
２３０    通信装置
２５０    入力Ｉ／Ｆ装置
２５１    ボタン
２５２    タッチパネル
２６０    出力装置
２７０    位置情報取得装置
２８０    ２次記憶装置
４００    ネットワーク
５００    ナビゲーション装置
６００    携帯電話機
７００    操作性向上ユーザ入力処理部テーブル
７０１    プログラム名
７０２    処理部名
７１０    操作性向上処置適用順位テーブル
８００    操作性向上プログラム
８０１    操作性向上指示プログラム
８０２    操作性向上処理部決定プログラム
８０３    入力監視プログラム
８１０    基本制御プログラム
８２０    仮想機械制御プログラム
８３０    アプリケーションプログラム
８３１    ユーザ入力処理プログラム
【図１】
2005309478.tif 000003
【図２】
2005309478.tif 000004
【図３】
2005309478.tif 000005
【図４】
2005309478.tif 000006
【図５】
2005309478.tif 000007
【図６】
2005309478.tif 000008
【図７】
2005309478.tif 000009
【図８】
2005309478.tif 000010
【図９】
2005309478.tif 000011
【図１０】
2005309478.tif 000012
【図１１】
2005309478.tif 000013
【図１２】
2005309478.tif 000014
【図１３】
2005309478.tif 000015
【図１４】
2005309478.tif 000016