(57)【要約】【課題】用途に適さないプログラムコードのプログラムを読み込むことに起因する不具合の発生を防止することができる画像形成装置を提供する。【解決手段】ＭＦＰ１０１は、保持されたスクリプトへのアクセスの種別がＶＭ３０３にロードするロードアクセスであるか否かを判別し、アクセスの種別がロードアクセスである場合、保持されたスクリプトの中からバイトコード化スクリプトを優先的に読み込み、アクセスの種別がロードアクセスでない場合、保持されたスクリプトの中からスクリプトを優先的に読み込む。【選択図】図１２
2018205889.tif 000002
【特許請求の範囲】
【請求項１】
拡張アプリケーションの動作プログラムをインストールし、前記動作プログラムをバイトコード化したバイトコード化プログラムを実行するＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を備える画像形成装置であって、
前記動作プログラム及び前記バイトコード化プログラムを保持する保持手段と、
前記保持手段によって保持されたプログラムを読み込む読込手段と、
前記保持手段によって保持されたプログラムへのアクセスの種別が前記ＶＭにロードするロードアクセスであるか否かを判別する判別手段とを備え、
前記読込手段は、前記アクセスの種別が前記ロードアクセスである場合、前記保持手段によって保持されたプログラムの中から前記バイトコード化プログラムを優先的に読み込み、前記アクセスの種別が前記ロードアクセスでない場合、前記保持手段によって保持されたプログラムの中から前記動作プログラムを優先的に読み込むことを特徴とする画像形成装置。
【請求項２】
前記読込手段は、前記アクセスの種別がユーザが閲覧するプログラムを取得するためのアクセスである場合、前記保持手段によって保持されたプログラムの中から前記動作プログラムを優先的に読み込むことを特徴とする請求項１記載の画像形成装置。
【請求項３】
請求項１又は２記載の画像形成装置によって実行中の拡張アプリケーションの動作プログラムを取得する取得手段と、
前記取得した動作プログラムを表示する表示手段とを備えることを特徴とするデバッグ装置。
【請求項４】
拡張アプリケーションの動作プログラムをインストールし、前記動作プログラムをバイトコード化したバイトコード化プログラムを実行するＶＭを備える画像形成装置によって行われる読み込み制御方法であって、
前記動作プログラム及び前記バイトコード化プログラムを保持する保持ステップと、
前記保持ステップで保持されたプログラムを読み込む読込ステップと、
前記保持ステップで保持されたプログラムへのアクセスの種別が前記ＶＭにロードするロードアクセスであるか否かを判別する判別ステップとを有し、
前記読込ステップは、前記アクセスの種別が前記ロードアクセスである場合、前記保持ステップで保持されたプログラムの中から前記バイトコード化プログラムを優先的に読み込み、前記アクセスの種別が前記ロードアクセスでない場合、前記保持ステップで保持されたプログラムの中から前記動作プログラムを優先的に読み込むことを特徴とする読み込み制御方法。
【請求項５】
拡張アプリケーションの動作プログラムをインストールし、前記動作プログラムをバイトコード化したバイトコード化プログラムを実行するＶＭを備える画像形成装置によって行われる読み込み制御方法をコンピュータに実行させるプログラムであって、
前記読み込み制御方法は、
前記動作プログラム及び前記バイトコード化プログラムを保持する保持ステップと、
前記保持ステップで保持されたプログラムを読み込む読込ステップと、
前記保持ステップで保持されたプログラムへのアクセスの種別が前記ＶＭにロードするロードアクセスであるか否かを判別する判別ステップとを有し、
前記読込ステップは、前記アクセスの種別が前記ロードアクセスである場合、前記保持ステップで保持されたプログラムの中から前記バイトコード化プログラムを優先的に読み込み、前記アクセスの種別が前記ロードアクセスでない場合、前記保持ステップで保持されたプログラムの中から前記動作プログラムを優先的に読み込むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、デバッグ装置、読み込み制御方法、及びプログラムに関し、特に、拡張アプリケーションのデバッグ制御を行う画像形成装置、デバッグ装置、読み込み制御方法、及びプログラムに関する。
【背景技術】
【０００２】
拡張アプリケーションの動作プログラムであるスクリプトをインストールして、機能を拡張する画像形成装置としてのＭＦＰが知られている。ＭＦＰには拡張アプリケーションの動作プログラムを実行する仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）が動作する実行環境が設けられている。ＭＦＰは、インストールしたスクリプトをバイトコード化してバイトコード化スクリプトを生成する。バイトコード化スクリプトはバイナリデータであり、また、ＶＭが解釈可能なプログラムコードで記述されている。ＭＦＰでは、拡張アプリケーションの起動指示を受け付けると、生成したバイトコード化スクリプトをＶＭが実行して拡張アプリケーションが起動する（例えば、特許文献１参照）。ＭＦＰでは、上記バイトコード化が完了するまでに或る程度の時間を要するので、スクリプトをインストールしたタイミングで上記バイトコード化が行われ、生成したバイトコード化スクリプトが保持される。これにより、拡張アプリケーションの起動指示を受け付けた際に、保持されたバイトコード化スクリプトを実行して拡張アプリケーションを速やかに起動可能となる。
【０００３】
ところで、ＭＦＰと通信接続されたＰＣをユーザが操作して、ＭＦＰで実行中のスクリプトのデバッグ処理が行われる。上記デバッグ処理においてＰＣがＭＦＰで実行中のスクリプトを予め保持していなくても、ユーザがデバッグ作業を行えるように、バイトコード化スクリプトの他に、バイトコード化されてないスクリプト（以下、「未バイトコード化スクリプト」という。）をＭＦＰに保持することが検討されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−６９０７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したように、ＭＦＰがバイトコード化スクリプト及び未バイトコード化スクリプトの両方を保持すると、用途に適さないプログラムコードのスクリプトが読み込まれ、不具合が生じることがある。例えば、拡張アプリケーションを起動する際に、ＭＦＰにおいて未バイトコード化スクリプトが読み込まれると、該未バイトコード化スクリプトをバイトコード化して、保持されたバイトコード化スクリプトと異なる新たなバイトコード化スクリプトを生成するといった不要な処理が行われる。その結果、上記バイトコード化が完了するまで拡張アプリケーションを起動できなくなるという不具合が生じる。一方、拡張アプリケーションのデバッグを行う際に、ＭＦＰにおいてバイトコード化スクリプトが読み込まれると、該バイトコード化スクリプトがＭＦＰからＰＣに送信される。このとき、ＰＣにはバイトコード化スクリプトが表示されるが、ユーザはバイナリデータであるバイトコード化スクリプトの内容を理解することができない。その結果、ＭＦＰで実行中の拡張アプリケーションのデバッグ作業を行うことができないという不具合が生じる。
【０００６】
本発明の目的は、用途に適さないプログラムコードのプログラムを読み込むことに起因する不具合の発生を防止することができる画像形成装置、デバッグ装置、読み込み制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の画像形成装置は、拡張アプリケーションの動作プログラムをインストールし、前記動作プログラムをバイトコード化したバイトコード化プログラムを実行するＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を備える画像形成装置であって、前記動作プログラム及び前記バイトコード化プログラムを保持する保持手段と、前記保持手段によって保持されたプログラムを読み込む読込手段と、前記保持手段によって保持されたプログラムへのアクセスの種別が前記ＶＭにロードするロードアクセスであるか否かを判別する判別手段とを備え、前記読込手段は、前記アクセスの種別が前記ロードアクセスである場合、前記保持手段によって保持されたプログラムの中から前記バイトコード化プログラムを優先的に読み込み、前記アクセスの種別が前記ロードアクセスでない場合、前記保持手段によって保持されたプログラムの中から前記動作プログラムを優先的に読み込むことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、用途に適さないプログラムコードのプログラムを読み込むことに起因する不具合の発生を防止することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係る画像形成装置としてのＭＦＰを含む通信システムの構成を概略的に示すネットワーク図である。
【図２】図１のＭＦＰの構成を概略的に示すブロック図である。
【図３】図１のＭＦＰにおける拡張アプリケーションの実行環境の一例を説明するためのブロック図である。
【図４】図１のＭＦＰがＰＣから取得するアーカイブの一例を示す図である。
【図５】図１のＭＦＰによって実行されるインストール処理の手順を示すフローチャートである。
【図６】図１のＭＦＰによって保持されるパッケージの一例を示す図である。
【図７】図１のＭＦＰによって実行されるコントローラユニットの起動処理の手順を示すフローチャートである。
【図８】図１のＰＣに搭載されたデバッガを説明するための図である。
【図９】図１のＭＦＰ及びＰＣによって実行されるデバッグ制御処理の手順を示すタイミングチャートである。
【図１０】図１のＰＣに表示されるデバッグに関する情報の一例を示す図である。
【図１１】図９のステップＳ９１２の読み込み処理の手順を示すフローチャートである。
【図１２】図１１のステップＳ１１０１の検索処理の手順を示すフローチャートである。
【図１３】図３のＶＭによって実行されるスクリプト実行処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を図面を参照しながら詳述する。本実施の形態では画像形成装置の一例であるＭＦＰ（Multifunction Peripheral）に本発明を適用した場合について説明する。しかしながら、本発明は画像形成装置であるプリンタに適用してもよく、さらには、画像形成機能を備えない画像形成装置、例えば、サーバ、ＰＣやスマート家電機器に適用してもよい。具体的には、拡張アプリケーションの動作プログラムであるスクリプトをアドインし、該スクリプトを実行して拡張アプリケーションを起動する画像形成装置であれば、本発明を適用することができる。また、本実施の形態に記載されている構成要素はあくまで例示に過ぎず、本発明の範囲は本実施の形態に記載されている構成要素によって限定されることはない。
【００１１】
図１は、本発明の実施の形態に係る画像形成装置としてのＭＦＰ１０１を含む通信システム１００の構成を概略的に示すネットワーク図である。
【００１２】
図１において、通信システム１００はＭＦＰ１０１及び表示部１０４を有するＰＣ１０２を備え、ＭＦＰ１０１及びＰＣ１０２はイーサネット（商標登録）１０３を介して接続されている。
【００１３】
ＭＦＰ１０１はコピー及びスキャン等のジョブを実行可能であり、また、拡張アプリケーションを新たにインストールして機能を拡張可能である。例えば、ＭＦＰ１０１は、イーサネット１０３を介してＰＣ１０２から取得した後述する図４のアーカイブ４００に含まれる拡張アプリケーションのスクリプトをアドインし、該スクリプトを実行して拡張アプリケーションを起動する。ＰＣ１０２はＭＦＰ１０１とデータ通信を行い、例えば、ＭＦＰ１０１が印刷を行うための印刷データや後述するアーカイブ４００をＭＦＰ１０１に送信する。
【００１４】
図２は、図１のＭＦＰ１０１の構成を概略的に示すブロック図である。
【００１５】
図２において、ＭＦＰ１０１はコントローラユニット２００、操作部２０６、ＵＳＢストレージ２０９、スキャナ２１４、及びプリンタ２１５を備える。コントローラユニット２００は操作部２０６、ＵＳＢストレージ２０９、スキャナ２１４、及びプリンタ２１５と接続されている。コントローラユニット２００は、ＣＰＵ２０１、ＲＡＭ２０２、ＲＯＭ２０３、ストレージ２０４、操作部Ｉ／Ｆ２０５、ネットワークＩ／Ｆ２０７、ＵＳＢホストＩ／Ｆ２０８、及び画像バスＩ／Ｆ２１０を備える。また、コントローラユニット２００はデバイスＩ／Ｆ２１３、スキャナ画像処理部２１６、及びプリンタ画像処理部２１７を更に備える。ＣＰＵ２０１、ＲＡＭ２０２、ＲＯＭ２０３、ストレージ２０４、操作部Ｉ／Ｆ２０５、ネットワークＩ／Ｆ２０７、ＵＳＢホストＩ／Ｆ２０８、及び画像バスＩ／Ｆ２１０はシステムバス２１１を介して互いに接続されている。画像バスＩ／Ｆ２１０、デバイスＩ／Ｆ２１３、スキャナ画像処理部２１６、及びプリンタ画像処理部２１７は画像バス２１２を介して互いに接続されている。
【００１６】
コントローラユニット２００は接続された操作部２０６、ＵＳＢストレージ２０９、スキャナ２１４、及びプリンタ２１５を制御する。ＣＰＵ２０１は、ＲＯＭ２０３に格納されたブートプログラムを実行して後述する図３のオペレーティングシステム（ＯＳ）３０１を起動し、起動したＯＳ３０１上でストレージ２０４に格納されたプログラムを実行して各処理を実行する。ＲＡＭ２０２は、ＣＰＵ２０１の作業領域として、また、画像データ等の一時格納領域として用いられる。ＲＯＭ２０３はＣＰＵ２０１によって実行されるブートプログラム等を格納する。ストレージ２０４はプログラムや画像データ等を格納する。操作部Ｉ／Ｆ２０５は、操作部２０６においてユーザにより入力された情報をＣＰＵ２０１に送出する。操作部２０６はタッチパネル式のディスプレイ及び複数の操作キーを備え、ユーザによる各指示を受け付ける。ネットワークＩ／Ｆ２０７はＭＦＰ１０１をＬＡＮに接続するためのインターフェースである。ＵＳＢホストＩ／Ｆ２０８は、ＵＳＢストレージ２０９と通信するためのインターフェースであり、ストレージ２０４に格納されたデータをＵＳＢストレージ２０９に記憶させるために送出する。また、ＵＳＢホストＩ／Ｆ２０８は、ＵＳＢストレージ２０９に格納されたデータを受け取り、受け取ったデータをＣＰＵ２０１に伝送する。ＵＳＢストレージ２０９はＵＳＢホストＩ／Ｆ２０８に対して着脱可能である。なお、ＵＳＢホストＩ／Ｆ２０８にはＵＳＢストレージ２０９を含む複数のＵＳＢデバイスが接続可能である。
【００１７】
画像バスＩ／Ｆ２１０はデータ形式を変換するためのバスブリッジであり、システムバス２１１及び画像バス２１２を接続する。画像バス２１２は、ＰＣＩバス又はＩＥＥＥ１３９４等によって構成され、画像データを高速で転送する。デバイスＩ／Ｆ２１３には画像入力デバイスであるスキャナ２１４及び画像出力デバイスであるプリンタ２１５が接続され、デバイスＩ／Ｆ２１３は画像データの同期系及び非同期系の変換を行う。スキャナ２１４は、図示しない原稿台に配置された原稿を読み取り、読み取った情報に基づいて画像データを生成する。プリンタ２１５はスキャナ２１４によって生成された画像データ等の印刷を行う。スキャナ画像処理部２１６はスキャナ２１４によって生成された画像データを補正し、加工し、又は編集する。プリンタ画像処理部２１７はプリンタ２１５に伝送される画像データに対してプリンタ２１５に応じた補正及び解像度変換等を行う。
【００１８】
図３は、図１のＭＦＰ１０１における拡張アプリケーションの実行環境の一例を説明するためのブロック図である。本実施の形態では、ＲＯＭ２０３やストレージ２０４に格納されたプログラムを、ＣＰＵ２０１がＲＡＭ２０２にロードして実行することにより、ＯＳ上に以下説明する図３の各モジュールが実現される。
【００１９】
図３において、ＣＰＵ２０１によって起動されたＯＳ３０１上には、プリンタ機能、ＦＡＸ機能やスキャナ機能を実現するためのネイティブプログラム３０２と、ＶＭ３０３とが動作している。ＶＭ３０３は拡張アプリケーションを制御するプログラムを理解して実行するモジュールであり、拡張アプリケーションは必ずＶＭ３０３上で動作する。ＶＭ３０３は、ＣＰＵ２０１が解釈可能なプログラムコードであるネイティブコードをＶＭ専用のバイトコードに変換（バイトコード化）したプログラムを実行する。例えば、ＶＭ３０３の一例として、Ｌｕａスクリプトを解釈可能な仮想マシンが存在する。Ｌｕａ言語はいわゆる汎用スクリプト言語であり、特定の用途に限定されない性質を持つ。ＶＭ３０３の別の一例として、Ｊａｖａ（商標登録）の仮想マシンについても同様に適用できる。
【００２０】
ネイティブプログラム３０２内には、プリンタ２１５やスキャナ２１４等の画像処理ユニットを制御するためのネイティブスレッド３０４と、ＶＭ３０３を動作させるためのＶＭスレッド３０５とが存在する。本実施の形態では、ＶＭ３０３として３つのＶＭ３０３ａ、ＶＭ３０３ｂ及びＶＭ３０３ｃが生成されている。また、ＶＭスレッド３０５として、ＶＭ３０３ａ、ＶＭ３０３ｂ及びＶＭ３０３ｃの合計数に対応する数である３つのＶＭスレッド３０５ａ、ＶＭスレッド３０５ｂ及びＶＭスレッド３０５ｃが生成されている。ＶＭシステムサービス３０６は各拡張アプリケーション３０７ａ，３０７ｂによって共通に利用されるユーティリティライブラリであり、複数の機能を提供する。各拡張アプリケーション３０７ａ，３０７ｂは、自身を実行するために必要な機能をＶＭシステムサービス３０６から選択する。ＭＦＰ１０１では、各拡張アプリケーション３０７ａ，３０７ｂからＶＭシステムサービス３０６が提供する各機能を呼び出すことにより、拡張アプリケーションを開発する手間を省き、さらに、ＭＦＰ１０１の各モジュールへアクセスすることができる。ＶＭシステムサービス３０６はモジュールとして標準ＶＭシステムサービス３０８及び拡張ＶＭシステムサービス３０９を有する。標準ＶＭシステムサービス３０８は、例えば、ＭＦＰ１０１のファイルシステムの「ｏｐｅｎ」、「ｃｌｏｓｅ」、「ｒｅａｄ」や「ｗｒｉｔｅ」という基本的なサービスを提供し、ＶＭ３０３がＶＭとして機能するための最低限の機能を実現させる。また、標準ＶＭシステムサービス３０８は拡張アプリケーション３０７ａ，３０７ｂの動作プログラムであるスクリプトをロードする。拡張ＶＭシステムサービス３０９は、ＭＦＰ１０１の各モジュールへのアクセス機能や、ＯＳ３０１の各機能を実現する。
【００２１】
ＶＭ３０３は各拡張アプリケーション３０７ａ，３０７ｂの各スクリプトを解釈して実行する。なお、本実施の形態では、ＶＭ３０３がバイトコードのプログラムをネイティブコードに変換して実行する構成であっても良い。ＶＭ３０３は、拡張アプリケーションのスレッド毎に生成される。図３の実行環境では、拡張アプリケーション３０７ａのために２つのＶＭスレッド３０５ａ，３０５ｂが生成され、各ＶＭスレッド３０５ａ，３０５ｂに対応して２つのＶＭ３０３ａ，ＶＭ３０３ｂが生成される。また、拡張アプリケーション３０７ｂのために１つのＶＭスレッド３０５ｃが生成され、ＶＭスレッド３０５ｃに対応して１つのＶＭ３０３ｃが生成される。
【００２２】
図２に戻り、ＭＦＰ１０１の操作部２０６の画面には、各拡張アプリケーション３０７ａ，３０７ｂを示すアイコンが表示される。ユーザによるいずれかのアイコンの選択が操作部２０６を介して操作部Ｉ／Ｆ２０５によって検知されると、操作部Ｉ／Ｆ２０５はその旨をＣＰＵ２０１に送信する。その旨を受け取ったＣＰＵ２０１はユーザによって選択された拡張アプリケーション３０７ａ又は拡張アプリケーション３０７ｂを起動する。
【００２３】
次に、ＭＦＰ１０１に拡張アプリケーションをインストールする処理について説明する。拡張アプリケーションをインストールする場合、ユーザは、ＰＣ１０２等からＭＦＰ１０１に対し、拡張アプリケーションの実行に必要な複数のデータを含む図４のアーカイブ４００を送信する。アーカイブ４００にはスクリプト４０１〜４０３及びリソースデータ４０４，４０５が含まれる。スクリプト４０１〜４０３は拡張アプリケーションの動作プログラムであり、拡張アプリケーションの各動作がネイティブコードで記述されている。リソースデータ４０４，４０５は拡張アプリケーションを利用する上で必要となる画像データやメッセージ等である。アーカイブ４００を取得したＭＦＰ１０１はアーカイブ４００をＲＡＭ２０２等に展開し、図５の処理を行う。
【００２４】
図５は、図１のＭＦＰ１０１によって実行されるインストール処理の手順を示すフローチャートである。
【００２５】
図５の処理は、ＣＰＵ２０１がＲＯＭ２０３やストレージ２０４に格納されたプログラムが実行指示されることによって開始される。実行指示は、他のプログラムや、ユーザの指示によるものである。
【００２６】
図５において、まず、ＣＰＵ２０１は、アーカイブ４００に含まれる複数のデータのうち、図６のパッケージ６００に書き込まれていない未処理のデータが存在するか否かを判別する（ステップＳ５０１）。
【００２７】
ステップＳ５０１の判別の結果、未処理のデータが存在するとき、ＣＰＵ２０１はアーカイブ４００から未処理のデータを読み込み（ステップＳ５０２）、読み込んだデータの種別を判別する（ステップＳ５０３）。具体的に、ＣＰＵ２０１は読み込んだデータがスクリプト及びリソースデータのいずれであるかを判別する。
【００２８】
ステップＳ５０３の判別の結果、読み込んだデータがスクリプトであるとき、ＣＰＵ２０１は読み込んだスクリプトをパッケージ６００に書き込む（ステップＳ５０４）。次いで、ＣＰＵ２０１はスクリプトをバイトコード化し（ステップＳ５０５）、読み込んだスクリプトをバイトコードに変換したバイトコード化スクリプト（バイトコード化プログラム）を生成する。次いで、ＣＰＵ２０１は生成したバイトコード化スクリプトをＲＡＭ２０２等に保持されている図６のパッケージ６００に書き込み（ステップＳ５０６）、ステップＳ５０１の処理に戻る。
【００２９】
ステップＳ５０３の判別の結果、読み込んだデータがリソースデータであるとき、ＣＰＵ２０１はステップＳ５０６以降の処理を行う。本実施の形態では、アーカイブ４００に含まれる全てのデータに対し、上述したステップＳ５０１〜Ｓ５０６の処理が行われる。これにより、パッケージ６００には、アーカイブ４００に含まれるスクリプト４０１〜４０３及びリソースデータ４０４，４０５、さらに、スクリプト４０１〜４０３をバイトコード化したバイトコード化スクリプト６０１〜６０３が書き込まれる。なお、バイトコード化スクリプト６０１は拡張アプリケーションを起動させる際にＶＭ３０３が最初に実行するスクリプトである。
【００３０】
ステップＳ５０１の判別の結果、未処理のデータが存在しないとき、ＣＰＵ２０１は本処理を終了する。
【００３１】
上述した図５の処理では、アーカイブ４００に含まれる全てのデータがパッケージ６００に書き込まれる。ここで、従来では、アーカイブ４００に含まれる各データの格納先はＭＦＰ１０１のファイルシステムに依存して決定されていた。このため、拡張アプリケーションの動作に必要なデータを読み出す際にデータの格納先を検索し、さらに、検索した格納先から所望のデータを検索する必要があり、検索処理における負荷が大きかった。これに対し、本実施の形態では、アーカイブ４００に含まれる全てのデータがＲＡＭ２０２等に保持されたパッケージ６００に書き込まれる。すなわち、アーカイブ４００に含まれる各データが所定の格納先、具体的に、パッケージ６００に格納される。これにより、各データの格納先を検索する必要をなくすことができ、もって、検索処理における負荷を軽減することができる。
【００３２】
次に、コントローラユニット２００が起動する際の処理について説明する。コントローラユニット２００が起動すると、ＭＦＰ１０１では、ＶＭスレッド３０５やＶＭ３０３が生成され、拡張アプリケーション３０７ａ，３０７ｂを起動可能となる。
【００３３】
図７は、図１のＭＦＰ１０１によって実行されるコントローラユニット２００の起動処理の手順を示すフローチャートである。
【００３４】
図７の処理は、ＣＰＵ２０１がＲＯＭ２０３やストレージ２０４に格納されたプログラムが実行指示されることによって開始される。実行指示は、ユーザの指示や、他のプログラム（図示省略）からの指示である。図７の処理は、インストールされた各拡張アプリケーション３０７ａ，３０７ｂに対して実行され、以下では、一例として、拡張アプリケーション３０７ａに対して実行される場合を前提とする。
【００３５】
図７において、まず、ＣＰＵ２０１は、パッケージ６００の中から一部のバイトコード化スクリプトとして、代表バイトコード化スクリプトを読み込む（ステップＳ７０１）。代表バイトコード化スクリプトは、パッケージ６００に書き込まれたバイトコード化スクリプト６０１〜６０３のうち、拡張アプリケーション３０７ａを起動させる際にＶＭ３０３が最初に実行するバイトコード化スクリプト６０１である。次いで、ＣＰＵ２０１は読み込んだ代表バイトコード化スクリプトのバイトコードが、ＶＭ３０３が実行可能なバージョンであるか否かを判別する（ステップＳ７０２）。
【００３６】
ステップＳ７０２の判別の結果、読み込んだ代表バイトコード化スクリプトのバイトコードが、ＶＭ３０３が実行可能なバージョンであるとき、ＣＰＵ２０１は本処理を終了する。
【００３７】
ステップＳ７０２の判別の結果、読み込んだ代表バイトコード化スクリプトのバイトコードが、ＶＭ３０３が実行可能なバージョンでないとき、ＣＰＵ２０１はパッケージ６００と異なる新たなパッケージを生成する。ＣＰＵ２０１はパッケージ６００に含まれる各データを新たなパッケージに書き込む後述するステップＳ７０４〜Ｓ７０９の処理を行う。ＣＰＵ２０１はパッケージ６００に含まれるデータのうち後述するステップＳ７０４〜Ｓ７０９の処理を行っていない未処理のデータが存在するか否かを判別する（ステップＳ７０３）。
【００３８】
ステップＳ７０３の判別の結果、未処理のデータが存在するとき、ＣＰＵ２０１はパッケージ６００から未処理のデータを読み込み（ステップＳ７０４）、読み込んだデータの種別を判別する（ステップＳ７０５）。本実施の形態では、読み込んだデータの種別は、パッケージ６００に含まれるスクリプト、バイトコード化スクリプト、及びリソースデータのいずれかである。
【００３９】
ステップＳ７０５の判別の結果、読み込んだデータの種別がリソースデータであるとき、ＣＰＵ２０１は読み込んだデータを新たなパッケージに書き込み（ステップＳ７０６）、ステップＳ７０３の処理に戻る。
【００４０】
ステップＳ７０５の判別の結果、読み込んだデータの種別がスクリプトであるとき、ＣＰＵ２０１は読み込んだデータを新たなパッケージに書き込む（ステップＳ７０７）。次いで、ＣＰＵ２０１は読み込んだデータをバイトコード化し（ステップＳ７０８）、ＶＭ３０３が実行可能なバージョンのバイトコードに変換した新たなバイトコード化スクリプトを生成する。次いで、ＣＰＵ２０１は生成した新たなバイトコード化スクリプトを新たなパッケージに書き込み（ステップＳ７０９）、ステップＳ７０３の処理に戻る。
【００４１】
ステップＳ７０５の判別の結果、読み込んだデータの種別がバイトコード化スクリプトであるとき、ＣＰＵ２０１はステップＳ７０３の処理に戻る。すなわち、本実施の形態では、パッケージ６００におけるバイトコード化スクリプト６０１〜６０３を、ＶＭ３０３が実行可能なバージョンの新たなバイトコード化スクリプトに置き換えた新たなパッケージが生成される。
【００４２】
ステップＳ７０３の判別の結果、未処理のデータが存在しないとき、ＣＰＵ２０１はパッケージ６００を新たなパッケージに置き換え（ステップＳ７１０）、パッケージ６００を削除し、本処理を終了する。
【００４３】
本実施の形態では、インストールされた拡張アプリケーション３０７ｂに対しても同様の処理が行われる。具体的に、ＣＰＵ２０１はパッケージ６００から拡張アプリケーション３０７ｂの代表バイトコード化スクリプトを読み込む。該代表バイトコード化スクリプトのバイトコードが、ＶＭ３０３が実行可能なバージョンでない場合、ＣＰＵ２０１はパッケージ６００に含まれる拡張アプリケーション３０７ｂのスクリプト４０１〜４０３に基づいてＶＭ３０３が実行可能なバージョンの新たなバイトコード化スクリプトを生成する。ＣＰＵ２０１は、パッケージ６００に含まれる拡張アプリケーション３０７ｂのスクリプト４０１〜４０３及びリソースデータ４０４，４０５、また、上記生成した新たなバイトコード化スクリプトを上記新たなパッケージに書き込む。
【００４４】
次に、インストールした拡張アプリケーション３０７ａ，３０７ｂのデバッグ処理について説明する。
【００４５】
ＭＦＰ１０１はデバッグ機能を備え、インストールした拡張アプリケーション３０７ａ，３０７ｂのデバッグを行う。ＭＦＰ１０１はイーサネット１０３を介してＰＣ１０２とデータ通信を行って拡張アプリケーション３０７ａ，３０７ｂのデバッグ処理を実行可能である。なお、本実施の形態では、ＭＦＰ１０１及びＰＣ１０２の間のデバッグ処理に関するデータ通信は、イーサネット１０３を介するデータ通信に限られず、ＵＳＢによる通信、シリアルケーブルを介する通信、及び無線通信であっても良い。ＰＣ１０２は図８のデバッガ８０１を備える。デバッガ８０１はイーサネット１０３を介してＶＭシステムサービス３０６を操作し、ストレージ２０４のデータを更新して拡張アプリケーション３０７ａ，３０７ｂの修正や、実行中のプログラムを意図的に一時停止させるブレークポイントの設定等を行う。
【００４６】
図９は、図１のＭＦＰ１０１及びＰＣ１０２によって実行されるデバッグ制御処理の手順を示すタイミングチャートである。
【００４７】
まず、ＰＣ１０２はＭＦＰ１０１のデバッグ機能を有効化するためのデバッグ機能有効化要求をＭＦＰ１０１に送信する（ステップＳ９０１）。デバッグ機能有効化要求は、デバッグ時にＭＦＰ１０１の通信相手となる装置、具体的に、ＰＣ１０２を示すデバッグ接続先情報を含む。ＰＣ１０２はＭＦＰ１０１とデバッグ機能を実現するためのデバッグ機能接続が行われるまで待機する（ステップＳ９０２）。
【００４８】
ＭＦＰ１０１のネイティブスレッド３０４は、ＰＣ１０２からデバッグ機能有効化要求を受信すると、デバッグ機能を有効化し（ステップＳ９０３）、デバッグ接続先情報を保持する。次いで、ネイティブスレッド３０４はデバッグ対象となる拡張アプリケーションの起動要求を受けると（ステップＳ９０４）、起動要求された拡張アプリケーションを動作させるためのＶＭスレッドの生成処理を行う（ステップＳ９０５）。このとき、ネイティブスレッド３０４はスレッド生成要求をＯＳ３０１に送出する。スレッド生成要求を受けたＯＳ３０１は、スレッド生成要求に基づいてＶＭスレッド３０５を生成する（ステップＳ９０６）。生成されたＶＭスレッド３０５はスレッドを管理するための図示しないスレッド管理情報を生成し（ステップＳ９０７）、起動要求された拡張アプリケーションを実行するためのＶＭ３０３を生成する（ステップＳ９０８）。生成されたＶＭ３０３はデバッグ機能開始要求をＶＭシステムサービス３０６に送出する（ステップＳ９０９）。
【００４９】
デバッグ機能開始要求を受けたＶＭシステムサービス３０６はデバッグ機能接続処理を行い（ステップＳ９１０）、保持されたデバッグ接続先情報が示すＰＣ１０２と接続（デバッグ機能接続）する。これにより、ＶＭシステムサービス３０６及びＰＣ１０２の間でデバッグに関する情報を通信可能となる。次いで、ＶＭ３０３は起動要求された拡張アプリケーションの読み込み要求をＶＭシステムサービス３０６に対して送出する（ステップＳ９１１）。読み込み要求を受けたＶＭシステムサービス３０６は、後述する図１１の読み込み処理を実行し（ステップＳ９１２）、要求された拡張アプリケーションのバイトコード化スクリプトを読み込む。次いで、ＶＭ３０３は読み込んだバイトコード化スクリプトに基づいて拡張アプリケーションを実行する（ステップＳ９１３）。
【００５０】
ＰＣ１０２は、実行した拡張アプリケーションの一時停止要求をＶＭシステムサービス３０６に対して送信する（ステップＳ９１４）。一時停止要求を受信したＶＭシステムサービス３０６は一時停止処理を行い（ステップＳ９１５）、ＶＭ３０３に対して実行中の拡張アプリケーションの一時停止を指示する。ＶＭ３０３はＶＭシステムサービス３０６による指示に応じて、実行中の拡張アプリケーションを一時停止する（ステップＳ９１６）。実行中の拡張アプリケーションを停止させると、ＶＭ３０３は上記指示に応じた処理を完了した旨を示す完了通知をＶＭシステムサービス３０６に対して送出する。完了通知を受けたＶＭシステムサービス３０６は一時停止要求に応じた処理を完了した旨をＰＣ１０２に対して通知する。
【００５１】
次いで、ＰＣ１０２は、停止した拡張アプリケーションの状態を取得するために、ＶＭシステムサービス３０６に対してデバッグ情報取得要求を送信する（ステップＳ９１７）。デバッグ情報取得要求を受信したＶＭシステムサービス３０６は、デバッグ情報取得処理を実行し（ステップＳ９１８）、ＶＭ３０３に対してデバッグ情報の送出を指示する。上記デバッグ情報は、ステップＳ９１６の処理で一時停止した拡張アプリケーションのスクリプト、そのファイル名、一時停止した箇所を示す行番号、及び設定されている変数の値等を含む。上記デバッグ情報の送出の指示を受けたＶＭ３０３は指示に応じてデバッグ情報を取得する（ステップＳ９１９）。本実施の形態では、デバッグ情報としてのスクリプトは、バイトコードのスクリプトではなく、ネイティブコードのスクリプトである。このため、ＶＭ３０３は、デバッグ情報としてのスクリプトを取得するためにパッケージ６００にアクセスする際、ＶＭ３０３へスクリプトをロードするためのロードアクセスではなく、ネイティブコードのスクリプトを取得するためのテキストデータアクセスを行う。次いで、ＶＭ３０３は取得したデバッグ情報をＶＭシステムサービス３０６に対して送出する。デバッグ情報を受けたＶＭシステムサービス３０６は、上記デバッグ情報をＰＣ１０２に送信する。ＰＣ１０２は受信したデバッグ情報に基づいてデバッグ情報表示処理を行い（ステップＳ９２０）、一時停止した拡張アプリケーションのデバッグに関する情報を表示部１０４に表示する。デバッグに関する情報は、例えば、図１０に示すように、ユーザが読み取り可能なネイティブコードのスクリプト１００１、一時停止した箇所１００２、上記スクリプトのツリー構造１００３、及び設定されている変数の値１００４である。なお、本実施の形態では、表示部１０４に表示されたスクリプトの内容をユーザが編集し、編集したスクリプトをＭＦＰ１０１に送信しても良い。
【００５２】
次いで、ＰＣ１０２は拡張アプリケーションの実行再開要求をＶＭシステムサービス３０６に送信する（ステップＳ９２１）。実行再開要求を受信したＶＭシステムサービス３０６は実行再開処理を実行し（ステップＳ９２２）、停止中の拡張アプリケーションの実行の再開をＶＭ３０３に指示する。上記指示を受けたＶＭ３０３は停止中の拡張アプリケーションの実行を再開する（ステップＳ９２３）。拡張アプリケーションの実行が再開すると、ＶＭ３０３は上記指示に応じた処理を完了した旨を示す再開完了通知をＶＭシステムサービス３０６に対して送出する。再開完了通知を受けたＶＭシステムサービス３０６は実行再開要求に応じた処理を完了した旨をＰＣ１０２に対して通知する。その後、ＭＦＰ１０１及びＰＣ１０２は本処理を終了する。
【００５３】
上述した本実施の形態では、ＭＦＰ１０１からＰＣ１０２に対してデバッグ情報が送信される。これにより、ＭＦＰ１０１で実行中の拡張アプリケーションのスクリプトと同じスクリプトをＰＣ１０２が保持していなくても、ＰＣ１０２からスクリプトの実行結果の解析を容易に行うことができる。
【００５４】
また、上述した本実施の形態では、表示部１０４に表示されたスクリプトの内容をユーザが編集し、編集したスクリプトがＭＦＰ１０１に送信される。これにより、ＰＣ１０２からスクリプトの編集を容易に行うことができる。
【００５５】
図１１は、図９のステップＳ９１２の読み込み処理の手順を示すフローチャートである。
【００５６】
図１１において、ＶＭシステムサービス３０６は後述する図１２の検索処理を実行し（ステップＳ１１０１）、パッケージ６００の中から指定された拡張アプリケーションのスクリプトを検索する。次いで、ＶＭシステムサービス３０６は検索したスクリプトを読み込み（ステップＳ１１０２）（読込手段）、読み込んだスクリプトがバイトコード化されているか否かを判別する（ステップＳ１１０３）。
【００５７】
ステップＳ１１０３の判別の結果、読み込んだスクリプトがバイトコード化されていないとき、ＶＭシステムサービス３０６はスクリプトをバイトコード化する（ステップＳ１１０４）。次いで、ＶＭシステムサービス３０６は、バイトコード化スクリプトをＶＭ３０３に展開し（ステップＳ１１０５）、本処理を終了する。
【００５８】
ステップＳ１１０３の判別の結果、読み込んだスクリプトがバイトコード化されているとき、ＶＭシステムサービス３０６は、読み込んだスクリプトのバイトコードがＶＭ３０３が実行可能なバージョンであるか否かを判別する（ステップＳ１１０６）。
【００５９】
ステップＳ１１０６の判別の結果、読み込んだスクリプトのバイトコードがＶＭ３０３が実行可能なバージョンであるとき、ＶＭシステムサービス３０６はステップＳ１１０５以降の処理を行う。
【００６０】
ステップＳ１１０６の判別の結果、読み込んだスクリプトのバイトコードがＶＭ３０３が実行可能なバージョンでないとき、ＶＭシステムサービス３０６はロードエラー処理を行い（ステップＳ１１０７）、本処理を終了する。
【００６１】
図１２は、図１１のステップＳ１１０１の検索処理の手順を示すフローチャートである。
【００６２】
ここで、ＭＦＰ１０１では、ネイティブコードのスクリプト（例えば、スクリプト４０１〜４０３）及びバイトコード化スクリプト（例えば、バイトコード化スクリプト６０１〜６０３や新たなバイトコード化スクリプト）の両方が保持されている。このため、ＭＦＰ１０１では、用途に適さないプログラムコードのスクリプトが読み込まれ、不具合が生じることがある。例えば、拡張アプリケーション３０７ａを起動する際に、ＭＦＰ１０１においてネイティブコードのスクリプトが読み込まれると、ネイティブコードのスクリプトをバイトコード化して、保持されたバイトコード化スクリプトと異なる他のバイトコード化スクリプトを新たに生成するといった不要な処理が行われる。その結果、上記バイトコード化が完了するまで拡張アプリケーション３０７ａを起動できなくなるという不具合が生じる。一方、拡張アプリケーション３０７ａのデバッグを行う際に、ＭＦＰ１０１においてバイトコード化スクリプトが読み込まれると、該バイトコード化スクリプトがＭＦＰ１０１からＰＣ１０２に送信される。このとき、ＰＣ１０２の表示部１０４にはバイトコード化スクリプトが表示されるが、ユーザはバイナリデータであるバイトコード化スクリプトの内容を理解することができない。その結果、ＭＦＰ１０１で実行中の拡張アプリケーション３０７ａのデバッグ作業を行うことができないという不具合が生じる。
【００６３】
これに対応して、本実施の形態では、スクリプトへのアクセスの種別がＶＭ３０３にロードするロードアクセスであるか否かが判別される。アクセスの種別がロードアクセスである場合、保持されたスクリプトの中からバイトコード化スクリプトが優先的に読み込まれる。また、アクセスの種別がロードアクセスでない場合、保持されたスクリプトの中からネイティブコードのスクリプトが優先的に読み込まれる。
【００６４】
図１２において、ＶＭシステムサービス３０６はパッケージ以外からスクリプトを読み込み可能であるか否かを判別する（ステップＳ１２０１）。以下では、パッケージ６００及び新たなパッケージを総称してパッケージとする。ここで、開発中の拡張アプリケーションをパッケージに書き込んでからデバッグを行うと、デバッグの効率が悪くなる。このため、ＭＦＰ１０１では、開発中の拡張アプリケーションをデバッグする場合、パッケージからではなく、上記ファイルシステムからデバッグ対象のスクリプトが検索される。ステップＳ１２０１では、例えば、開発中の拡張アプリケーションをデバッグするためにデバッグ機能が有効化されている場合、上記ファイルシステムからスクリプトを読み込むことが許可される。この場合、ＶＭシステムサービス３０６はパッケージ以外からスクリプトを読み込み可能であると判別する。一方、デバッグ機能が無効化されている場合、ＶＭシステムサービス３０６はパッケージ以外からスクリプトを読み込み不可能であると判別する。
【００６５】
ステップＳ１２０１の判別の結果、パッケージ以外からスクリプトを読み込み不可能であるとき、ＶＭシステムサービス３０６は後述するステップＳ１２０７以降の処理を行う。一方、ステップＳ１２０１の判別の結果、パッケージ以外からスクリプトを読み込み可能であるとき、ＶＭシステムサービス３０６は、上記ファイルシステムから上記指定された拡張アプリケーションのネイティブコードのスクリプトを検索する（ステップＳ１２０２）。次いで、ＶＭシステムサービス３０６は該当するスクリプトが存在するか否かを判別する（ステップＳ１２０３）。
【００６６】
ステップＳ１２０３の判別の結果、該当するスクリプトが存在しないとき、ＶＭシステムサービス３０６は上記スクリプトへのアクセスの種別がロードアクセスであるか否かを判別する（ステップＳ１２０４）。本実施の形態では、アクセスの種別は、ロードアクセス及びテキストデータアクセスのいずれかである。例えば、ＶＭ３０３にバイトコード化スクリプトをロードする際にロードアクセスが行われる。一方、ユーザが閲覧するスクリプトを取得する際、例えば、ＰＣ１０２によるデバッグ情報取得要求に応じてデバッグ情報としてのネイティブコードのスクリプトを取得する際にテキストデータアクセスが行われる。
【００６７】
ステップＳ１２０４の判別の結果、上記アクセスの種別がロードアクセスであるとき、ＶＭシステムサービス３０６は上記ファイルシステムから上記指定された拡張アプリケーションのバイトコード化スクリプトを検索する（ステップＳ１２０５）。次いで、ＶＭシステムサービス３０６は該当するスクリプトが存在するか否かを判別する（ステップＳ１２０６）。
【００６８】
ステップＳ１２０６の判別の結果、該当するスクリプトが存在しないとき、ＶＭシステムサービス３０６は上記スクリプトへのアクセスの種別がロードアクセスであるか否かを判別する（ステップＳ１２０７）。
【００６９】
ステップＳ１２０７の判別の結果、上記アクセスの種別がロードアクセスであるとき、ＶＭシステムサービス３０６はパッケージから上記指定された拡張アプリケーションのバイトコード化スクリプトを検索する（ステップＳ１２０８）。すなわち、本実施の形態では、上記アクセスの種別がロードアクセスである場合、上記ファイルシステムやパッケージに保持されたスクリプトの中からバイトコード化スクリプトが優先的に読み込まれる。次いで、ＶＭシステムサービス３０６は該当するスクリプトが存在するか否かを判別する（ステップＳ１２０９）。
【００７０】
ステップＳ１２０９の判別の結果、該当するスクリプトが存在しないとき、ＶＭシステムサービス３０６はパッケージから上記指定された拡張アプリケーションのネイティブコードのスクリプトを検索する（ステップＳ１２１０）。すなわち、本実施の形態では、拡張アプリケーションを起動させるためのスクリプトをパッケージから検索する際にネイティブコードのスクリプトよりバイトコード化スクリプトが優先的に検索される。その後、ＶＭシステムサービス３０６は本処理を終了する。
【００７１】
ステップＳ１２０４の判別の結果、上記アクセスの種別が上記ロードアクセスでないとき、つまり、上記アクセスの種別がテキストデータアクセスであるとき、ＶＭシステムサービス３０６はステップＳ１２０７に進み、更にステップＳ１２１０に進む。すなわち、本実施の形態では、アクセスの種別がロードアクセスでない場合、保持されたスクリプトの中からネイティブコードのスクリプトが優先的に読み込まれる。
【００７２】
ステップＳ１２０３、Ｓ１２０６、Ｓ１２０９の判別の結果、該当するスクリプトが存在するとき、ＶＭシステムサービス３０６は本処理を終了する。
【００７３】
上述した図１２の処理によれば、スクリプトへのアクセスの種別がＶＭ３０３にロードするロードアクセスであるか否かが判別される。アクセスの種別がロードアクセスである場合、保持されたスクリプトの中からバイトコード化スクリプトが優先的に読み込まれる。また、アクセスの種別がロードアクセスでない場合、保持されたスクリプトの中からネイティブコードのスクリプトが優先的に読み込まれる。ここで、アクセスの種別がロードアクセスである場合、読み込んだスクリプトをＶＭ３０３にロードするので、ＶＭ専用のバイトコード化スクリプトを読み込むのが好ましい。一方、アクセスの種別がロードアクセスでない場合、読み込んだスクリプトをＶＭ３０３にロードしないので、ＶＭ専用のバイトコード化スクリプトを読み込む必要はなく、むしろ、ＶＭ以外が使用することを想定してネイティブコードのスクリプトを読み込むのが好ましい。これに対し、本実施の形態では、アクセスの種別がロードアクセスである場合、保持されたスクリプトの中からバイトコード化スクリプトが優先的に読み込まれる。また、アクセスの種別がロードアクセスでない場合、保持されたスクリプトの中からネイティブコードのスクリプトが優先的に読み込まれる。これにより、用途に適したプログラムコードのスクリプトを読み込ませることができ、もって、用途に適さないプログラムコードのスクリプトを読み込むことに起因する不具合の発生を防止することができる。
【００７４】
また、上述した図１２の処理では、アクセスの種別がユーザが閲覧するスクリプトを取得するためのテキストデータアクセスである場合、保持されたスクリプトの中からネイティブコードのスクリプトが優先的に読み込まれる。すなわち、拡張アプリケーションのデバッグでＰＣ１０２に表示するためのスクリプトを取得する際等に、ユーザが理解不能なバイナリデータであるバイトコード化スクリプトではなく、ネイティブコードのスクリプトが優先的に読み込まれる。これにより、デバッグ情報としてＰＣにユーザが理解可能なネイティブコードのスクリプトを送信することができ、もって、ＭＦＰ１０１で実行中の拡張アプリケーションのデバッグ作業をユーザが行うことができなくなる事態を回避することができる。
【００７５】
図１３は、図３のＶＭ３０３によって実行されるスクリプト実行処理の手順を示すフローチャートである。
【００７６】
図１３の処理は、図１１のステップＳ１１０５の処理によってバイトコード化スクリプトがＶＭ３０３に展開された際に実行される。
【００７７】
図１３において、ＶＭ３０３は展開されたバイトコード化スクリプトの内容を先頭行から順に解析し、実行すべき命令が残っているか否かを判別する（ステップＳ１３０１）。
【００７８】
ステップＳ１３０１の判別の結果、実行すべき命令が残っているとき、ＶＭ３０３は残っている命令を読み込み（ステップＳ１３０２）、デバッグ機能が有効化されているか否かを判別する（ステップＳ１３０３）。
【００７９】
ステップＳ１３０３の判別の結果、デバッグ機能が有効化されているとき、ＶＭ３０３はステップＳ９１９の拡張アプリケーションの一時停止や、ステップＳ９２３の拡張アプリケーションの実行再開等のデバッグに関する処理を実行する（ステップＳ１３０４）。次いで、ＶＭ３０３はステップＳ１３０２の処理で読み込んだ命令を実行し（ステップＳ１３０５）、ステップＳ１３０１の処理に戻る。
【００８０】
ステップＳ１３０３の判別の結果、デバッグ機能が無効化されているとき、ＶＭ３０３はステップＳ１３０５以降の処理を行う。
【００８１】
ステップＳ１３０１の判別の結果、実行すべき命令が残っていないとき、ＶＭ３０３は本処理を終了する。
【００８２】
本発明は、上述の実施の形態の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、該システム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８３】
１０１  ＭＦＰ
１０２  ＰＣ
１０４  表示部
２０１  ＣＰＵ
２０２  ＲＡＭ
２０４  ストレージ
３０３  ＶＭ
３０６  ＶＭシステムサービス
３０７ａ，３０７ｂ  拡張アプリケーション
４０１〜４０３  スクリプト
６００  パッケージ
６０１〜６０３  バイトコード化スクリプト
８０１  デバッガ
【図１】
2018205889.tif 000003
【図２】
2018205889.tif 000004
【図３】
2018205889.tif 000005
【図４】
2018205889.tif 000006
【図５】
2018205889.tif 000007
【図６】
2018205889.tif 000008
【図７】
2018205889.tif 000009
【図８】
2018205889.tif 000010
【図９】
2018205889.tif 000011
【図１０】
2018205889.tif 000012
【図１１】
2018205889.tif 000013
【図１２】
2018205889.tif 000014
【図１３】
2018205889.tif 000015