(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムを実行するアプリケーション実行手段と、
前記アプリケーション実行手段が第１アプリケーションを実行している場合に、当該第１アプリケーションによって使用されるメモリと、
前記アプリケーション実行手段が前記第１アプリケーションと異なる第２アプリケーションを実行している場合において当該第２アプリケーションが前記メモリへアクセスしようとするときは、前記第１アプリケーションによる当該メモリへのアクセスの状況に応じて当該メモリへのアクセスの排他制御を行う制御手段と、
前記メモリにアクセスするための参照を有するアクセスメソッドを生成する生成手段と、
前記生成されたアクセスメソッドを前記第２アプリケーションに引き渡す引渡手段と
を有し、
前記制御手段は、前記第２アプリケーションが前記アクセスメソッドを用いて前記メモリへアクセスする場合、前記第１アプリケーションによる当該メモリへのアクセスの状況に応じて前記メモリへのアクセスの排他制御を行う
情報処理装置。
【請求項２】
前記生成手段は、前記第２アプリケーションが予め定められたインターフェースを実装している場合、前記アクセスメソッドを生成する
請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記第２アプリケーションが前記メモリへの参照を行ったタイミングで、前記排他制御を行う
請求項１または２に記載の情報処理装置。
【請求項４】
前記生成手段は、前記第２アプリケーションが起動されたタイミングで前記アクセスメソッドを生成する
請求項１ないし３のいずれか１項に記載の情報処理装置。
【請求項５】
前記生成手段は、前記メモリの容量および前記第２アプリケーションが使用するメモリ量の少なくともいずれか一方が予め定められた条件を満たす場合、前記メモリのうち前記第１アプリケーションが使用する領域と異なる領域を、生成するアクセスメソッドに割り当てる
請求項１ないし４のいずれか１項に記載の情報処理装置。
【請求項６】
前記制御手段は、前記アプリケーション実行手段が前記第１アプリケーションおよび前記第２アプリケーションのうち１のアプリケーションを実行している場合において他のアプリケーションが当該メモリへアクセスしようとするときは、当該他のアプリケーションによる当該メモリへのアクセス処理が完了するまで当該１のアプリケーションの実行を待機させる
請求項１ないし５のいずれか１項に記載の情報処理装置。
【請求項７】
前記制御手段は、前記第２アプリケーションにより実行される処理の属性が予め定められた条件を満たす場合において前記第１アプリケーションが前記メモリにアクセスしているときは、当該第１アプリケーションを一時停止し、当該第２アプリケーションの実行を優先させる
請求項１ないし６のいずれか１項に記載の情報処理装置。
【請求項８】
前記制御手段は、前記メモリの容量および前記第２アプリケーションが使用するメモリ量の少なくともいずれか一方が予め定められた条件を満たす場合、前記メモリの一部を当該第２アプリケーションに割り当て、当該メモリの他の領域を前記第１アプリケーションが使用するように制御する
請求項１ないし７のいずれか１項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関する。
【背景技術】
【０００２】
特許文献１には、機器にインストール可能な第一のプログラムの種別の組み合わせに応じて、当該組み合わせに係るメモリ消費量を含む情報を記憶した共存条件記憶手段と、インストール対象とされた第一のプログラムの種別とプログラムのインストール先の機器に関する機器情報とを受信するインストール情報受信手段と、インストール対象の第一のプログラムの種別と、機器情報に含まれている、機器にインストールされている第一のプログラムの種別とに係る第一の組み合わせに対応するメモリ消費量を共存条件記憶手段を用いて判定し、判定されたメモリ消費量と機器情報に含まれているインストール先の機器のメモリ容量を示す情報とを比較して、インストールの当否を判定する当否判定手段とを有する情報処理装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−４３１６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
機器にアプリケーションプログラム（以下では簡単に「アプリケーション」ともいう）をインストールする際に、インストールされるアプリケーションのメモリ使用量とインストール先のメモリ容量情報とを比較してインストールの可否判定を有する構成では、インストールしたアプリケーションを起動しようとしても、メモリ不足によりそのアプリケーションが実行されないという事態が発生しやすかった。
本発明は、情報処理装置において複数のアプリケーションを動作させる場合に、メモリ不足によってアプリケーションが実行されないという事態の発生を抑制することを目的とする。
【課題を解決するための手段】
【０００５】
上述した課題を解決するため、本発明の請求項１に係る情報処理装置は、アプリケーションプログラムを実行するアプリケーション実行手段と、前記アプリケーション実行手段が第１アプリケーションを実行している場合に、当該第１アプリケーションによって使用されるメモリと、前記アプリケーション実行手段が前記第１アプリケーションと異なる第２アプリケーションを実行している場合において当該第２アプリケーションが前記メモリへアクセスしようとするときは、前記第１アプリケーションによる当該メモリへのアクセスの状況に応じて当該メモリへのアクセスの排他制御を行う制御手段と、前記メモリにアクセスするための参照を有するアクセスメソッドを生成する生成手段と、前記生成されたアクセスメソッドを前記第２アプリケーションに引き渡す引渡手段とを有し、前記制御手段は、前記第２アプリケーションが前記アクセスメソッドを用いて前記メモリへアクセスする場合、前記第１アプリケーションによる当該メモリへのアクセスの状況に応じて前記メモリへのアクセスの排他制御を行うことを特徴とする。
【０００７】
本発明の請求項２に係る情報処理装置は、請求項１に記載の構成において、前記生成手段は、前記第２アプリケーションが予め定められたインターフェースを実装している場合、前記アクセスメソッドを生成することを特徴とする。
【０００８】
本発明の請求項３に係る情報処理装置は、請求項１または２に記載の構成において、前記制御手段は、前記第２アプリケーションが前記メモリへの参照を行ったタイミングで、前記排他制御を行うことを特徴とする。
【０００９】
本発明の請求項４に係る情報処理装置は、請求項１ないし３のいずれか１項に記載の構成において、前記生成手段は、前記第２アプリケーションが起動されたタイミングで前記アクセスメソッドを生成することを特徴とする。
【００１０】
本発明の請求項５に係る情報処理装置は、請求項１ないし４のいずれか１項に記載の構成において、前記生成手段は、前記メモリの容量および前記第２アプリケーションが使用するメモリ量の少なくともいずれか一方が予め定められた条件を満たす場合、前記メモリのうち前記第１アプリケーションが使用する領域と異なる領域を、生成するアクセスメソッドに割り当てることを特徴とする。
【００１１】
本発明の請求項６に係る情報処理装置は、請求項１ないし５のいずれか１項に記載の構成において、前記制御手段は、前記アプリケーション実行手段が前記第１アプリケーションおよび前記第２アプリケーションのうち１のアプリケーションを実行している場合において他のアプリケーションが当該メモリへアクセスしようとするときは、当該他のアプリケーションによる当該メモリへのアクセス処理が完了するまで当該１のアプリケーションの実行を待機させることを特徴とする。
【００１２】
本発明の請求項７に係る情報処理装置は、請求項１ないし６のいずれか１項に記載の構成において、前記制御手段は、前記第２アプリケーションにより実行される処理の属性が予め定められた条件を満たす場合において前記第１アプリケーションが前記メモリにアクセスしているときは、当該第１アプリケーションを一時停止し、当該第２アプリケーションの実行を優先させることを特徴とする。
【００１３】
本発明の請求項８に係る情報処理装置は、請求項１ないし７のいずれか１項に記載の構成において、前記制御手段は、前記第２アプリケーションが使用するメモリ量が予め定められた条件を満たす場合、前記メモリの一部を当該第２アプリケーションに割り当て、当該メモリの他の領域を前記第１アプリケーションが使用するように制御することを特徴とする。
【発明の効果】
【００１４】
請求項１に係る発明によれば、情報処理装置において複数のアプリケーションを動作させる場合に、メモリ不足によってアプリケーションが実行されないという事態の発生を抑制することができるとともに、アプリケーションによるメモリへの不正なアクセスを防止することができる。
請求項２に係る発明によれば、第１アプリケーションと第２アプリケーションとでメモリを共用するかを判定することができる。
請求項３に係る発明によれば、メモリへの参照がなされたタイミングで排他制御処理が行われない場合と比べて、情報処理装置における処理全体のスループットを向上させることができる。
請求項４に係る発明によれば、第２アプリケーションに係る処理が処理の途中で中断してしまうことが防止される。
請求項５に係る発明によれば、第１アプリケーションが使用する領域と異なる領域が生成されるアクセスメソッドに割り当てられない場合と比べて、情報処理装置における処理全体のスループットを向上させることができる。
請求項６および７に係る発明によれば、一のアプリケーションがメモリにアクセスする場合に他のアプリケーションに影響を及ぼすことを防止することができる。
請求項８に係る発明によれば、第１アプリケーションが使用する領域と異なる領域が生成されるアクセスメソッドに割り当てられない場合と比べて、情報処理装置における処理全体のスループットを向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】システム１の構成を示す模式図。
【図２】画像形成装置２０の機能構成を示す図。
【図３】画像形成装置２０のハードウェア構成を示す図。
【図４】画像形成装置２０のメモリの共用に係る機能構成の一例を示す図。
【図５】アプリケーションのプロパティファイルの一例を示す図。
【図６】動作例１に係るアプリケーションの初期化処理の流れを示すフローチャート。
【図７】動作例１に係るアプリケーションの実行処理の流れを示すフローチャート。
【図８】動作例１に係る既存機能の実行処理の流れを示すフローチャート。
【図９】動作例２に係るアプリケーションの実行処理の流れを示すフローチャート。
【図１０】動作例３に係るアプリケーションの実行処理の流れを示すフローチャート。
【図１１】動作例３に係るメモリへのアクセス制御に関するタイミングチャート。
【図１２】動作例４に係るアプリケーションの初期化処理および実行処理の流れを示すフローチャート。
【図１３】変形例２に係るＵＩ部２０６に表示される画面の一例を示す図。
【図１４】変形例３に係る機能構成の一例を示す図。
【図１５】変形例４に係る機能構成の一例を示す図。
【図１６】変形例６に係る機能構成の一例を示す図。
【図１７】メモリアクセスメソッドをアプリケーションが生成する場合の機能構成の一例を示す図。
【発明を実施するための形態】
【００１６】
１．構成
図１は、本実施形態に係るシステム１の構成を示す模式図である。システム１は、サービス提供装置１０と、画像形成装置２０とを備える。サービス提供装置１０は、アプリケーション（アプリケーションプログラムのこと）を提供する装置である。ここでいうアプリケーションとは、サービス提供装置１０がユーザに提供するサービス及び機能を実現するためのＳＷモジュールのことをいう。サービス及び機能は、１つのアプリケーションによって実現されてもよいし、複数のアプリケーションの組み合わせによって実現されてもよい。アプリケーションには、例えば、スキャンなどの装置固有の機能を実現するＳＷモジュールの他、機能を追加するためにあとからインストールされるプラグインなどが含まれる。
【００１７】
画像形成装置２０は、例えば電子写真方式のプリンタである。画像形成装置２０は、スキャナ機能の他、コピー機能、プリント機能、ファクシミリ機能などの複数の機能を有していてもよい。通信回線２は、例えばインターネットや移動体通信網、電話回線などを含む。画像形成装置２０は通信回線２を介してサービス提供装置１０と通信する。
【００１８】
図２は、画像形成装置２０の機能構成を示す図である。画像形成装置２０は、アプリケーション実行手段２１と、記憶手段２２と、制御手段２３と、生成手段２４と、引渡手段２５とを有する。アプリケーション実行手段２１は、アプリケーションプログラムを実行する。記憶手段２２は、アプリケーション実行手段２１が第１アプリケーションを実行している場合に、当該第１アプリケーションによって使用される。制御手段２３は、アプリケーション実行手段２１が第１アプリケーションと異なる第２アプリケーションを実行している場合において第２アプリケーションが記憶手段２２へアクセスしようとするときは、第１アプリケーションによる記憶手段２２へのアクセスの状況に応じて記憶手段２２へのアクセスの排他制御を行う。
【００１９】
生成手段２４は、記憶手段２２にアクセスするための参照を含むクラスのアクセスメソッドを生成する。アクセスメソッドとは、優先度に基づく順序制御処理などを含んだセマフォ取得関数のようなものであり、例えば一般的な関数やインスタンスが提供する関数であるインスタンスメソッドなどがある。引渡手段２５は、生成手段２４により生成されたアクセスメソッドを第２アプリケーションに引き渡す。この場合、制御手段２３は、第２アプリケーションがアクセスメソッドを用いてメモリへアクセスする場合、第１アプリケーションによるメモリへのアクセスの状況に応じてメモリへのアクセスの排他制御を行う。メモリへのアクセスとは、具体的には、アプリケーションがアクセスメソッドをコールすることをいう。
【００２０】
図３は、画像形成装置２０のハードウェア構成を例示する図である。画像形成装置２０は、ＣＰＵ（Central Processing Unit）２０１と、ＲＯＭ（Read Only Memory）２０２と、ＲＡＭ（Random Access Memory）２０３と、ストレージ２０４と、画像読取部２０５と、ＵＩ（User Interface）部２０６と、画像形成部２０７と、通信ＩＦ２０８とを備えている。ＣＰＵ２０１は、画像形成装置２０の各部を制御する制御装置（プロセッサ）である。ＲＯＭ２０２は、プログラムおよびデータを記憶する不揮発性の記憶装置である。ＲＡＭ２０３は、ＣＰＵ２０１がプログラムを実行する際の作業領域として機能する揮発性の主記憶装置である。ストレージ２０４は、プログラムおよびデータを記憶する不揮発性の補助記憶装置である。画像読取部２０５は、例えばＣＣＤ（Charge Coupled Devices）方式を用いて、原稿に描かれた画像を読み取る画像読取処理を行う。画像読取部２０５は、用紙などの媒体に形成された画像を光学的に読み取って、読み取った画像を表す画像データをＣＰＵ２０１に供給する。ＵＩ部２０６は、例えばタッチスクリーンとキーとを備えている。ＵＩ部２０６は、画像形成装置２０を操作するために用いられる。画像形成部２０７は、画像データに応じた画像を用紙などの媒体に形成する。通信ＩＦ２０８は、ネットワーク２を介した通信を行うためのインターフェースであり、この例では特に、サービス提供装置１０と通信を行うためのインターフェースである。
【００２１】
この例で、ストレージ２０４（またはＲＯＭ２０２）に記憶されているプログラムをＣＰＵ２０１が実行することにより、図２に示される機能が実装される。プログラムを実行しているＣＰＵ２０１は、アプリケーション実行手段２１、制御手段２３、生成手段２４および引渡手段２５の一例である。ＲＡＭ２０３は記憶手段２２の一例である。
【００２２】
なお、サービス提供装置１０のハードウェア構成についての詳細な説明は省く。サービス提供装置１０は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ストレージ、通信ＩＦを有するコンピュータ装置である。
【００２３】
図４は、画像形成装置２０のメモリの共用に係る機能構成の一例を示す図である。この実施形態では、単一のメモリ空間が複数のアプリケーションによって共用される。図において、既存機能２５４は、画像形成装置２０上で動作するアプリケーション（第１アプリケーションの一例）である。この例で、既存機能２５４は、画像形成装置２０の工場出荷の際にプリインストールされている標準アプリケーションである。標準アプリケーションは、例えば画像読取部２０５を制御して原稿などの媒体を読み取った画像を表す画像データを生成するアプリケーションであってもよい。アプリケーション２５２は、画像形成装置２０上で動作するアプリケーション（第２アプリケーションの一例）である。この例で、アプリケーション２５２は、画像形成装置２０の工場出荷の際にプリインストールされている標準アプリケーションではなく、工場出荷後に画像形成装置２０にインストールされたアプリケーションである。アプリケーション２５２は、例えばスキャン画像に対する白紙除去処理などのカスタマイズ処理を行うためのプラグインであってもよい。アプリケーション２５２を実現するアプリケーションプログラムはサービス提供装置１０からダウンロードされてもよい。
【００２４】
アプリケーション管理フレームワーク２５１は、画像形成装置２０上で動作するアプリケーション２５２を管理する。なお、図４に示す例では、ひとつのアプリケーション２５２が図示されているが、画像形成装置２０に複数のアプリケーション２５２がインストールされていてもよい。また、図４に示す例では、ひとつの既存機能２５４が図示されているが、画像形成装置２０に複数の既存機能２５４がプリインストールされていてもよい。制御部２５６は、アプリケーション管理フレームワーク２５１および既存機能２５４を制御する機能を有する。
【００２５】
メモリ２５５は既存機能２５４によって使用される。この実施形態では、既存機能２５４とアプリケーション２５２とがメモリ２５５を共用する。この場合、画像形成装置２０にプリインストールされている既存機能２５４はメモリ２５５に直接アクセスする構成となっている。一方、後からインストールされるアプリケーション２５２はメモリ２５５に直接アクセスできない構成となっている。すなわち、アプリケーション２５２はメモリ２５５に直接アクセスしないように予め設計されている。なお、仮にアプリケーション２５２が悪意をもって設計されることによりメモリ２５５に直接アクセスする機能を有していたとしても、制御部２５６およびアプリケーション管理フレームワーク２５１の少なくともいずれか一方が、不正なアクセスの試みを検知して回避する構成となっている。この実施形態では、アプリケーション２５２がメモリ２５５にアクセスするために、アプリケーション管理フレームワーク２５１が、アプリケーション２５２が使用できるメモリアクセスメソッド２５３を生成する。メモリアクセスメソッド２５３は、メモリ２５５にアクセスするための参照を有するアクセスメソッドである。アプリケーション２５２はメモリアクセスメソッド２５３を通じて既存機能向けメモリ２５５にアクセスする。これにより、アプリケーション２５２と既存機能２５４との間でメモリ２５５が共有される。
【００２６】
メモリアクセスメソッド２５３の使用方法としては、例えば、アプリケーション２５２が、アプリケーション管理フレームワーク２５１が提供するライブラリを参照する際にメモリアクセスメソッド２５３を引数として指定してもよい。また、他の例として、アプリケーション２５２が、メモリアクセスメソッド２５３からメモリ２５５のアドレスとサイズの情報を取得してそれをワークメモリとして使用してもよい。
【００２７】
メモリアクセスメソッド２５３の生成はアプリケーション管理フレームワーク２５１が行う。これは、アプリケーション管理フレームワーク２５１が、メモリアクセスメソッド２５３を介してアクセスされるメモリ２５５を把握しているためである。よって、アプリケーション２５２が独自にメモリアクセスメソッドを生成しても、そのメモリアクセスメソッドの参照先は有効なものとはなりえない。よって、アプリケーション２５２が独自に生成したメモリアクセスメソッドを使った場合、アプリケーション管理フレームワーク２５１がそれを検知し、メモリ２５５へのアクセスが行われないように制御する。
【００２８】
図５の（ａ）はアプリケーション２５２のプロパティファイルの一例を示す図である。図５の（ｂ）はメモリアクセスメソッド２５３の生成処理を説明するための図である。メモリアクセスメソッド２５３は、メモリアクセスメソッド２５３を取得するためのＩ／Ｆ２５８を通じて、アプリケーション管理フレームワーク２５１からアプリケーション２５２に渡される。メモリアクセスメソッド２５３を取得したいアプリケーション２５２は、Ｉ／Ｆ２５８を実装している必要がある（Ｉ／Ｆ２５８で規定されたメソッドをアプリケーション２５２が提供する）。アプリケーション管理フレームワーク２５１は、Ｉ／Ｆ２５８が実装されているか否かをチェックし、実装されている場合はそのメソッドをコールする。
【００２９】
この実施形態では、Ｉ／Ｆ２５８が実装されているかどうかは、アプリケーションのプロパティファイル内に記述されている。アプリケーション管理フレームワーク２５１は、アプリケーション２５２を起動する際、プロパティファイルからアプリケーション２５２がメモリ２５５を使用するか否かを判断する。図５の（ａ）の例で、アプリケーション管理フレームワーク２５１は、プロパティファイルで“jp.co.xxx.MemoryAcquire”の実装が宣言されていれば、アプリケーション２５２はメモリ２５５を使用すると判断する。一方、アプリケーション管理フレームワーク２５１は、プロパティファイルで“jp.co.xxx.MemoryAcquire”の実装が宣言されていない場合はメモリ２５５を使用しない、と判断する。
【００３０】
制御部２５６は、アプリケーション管理フレームワーク２５１経由でアプリケーション２５２がＩ／Ｆ２５８を実装しているか否かの問い合わせを行い、実装している（すなわちアプリケーション２５２がメモリ２５５を使用する）と判定された場合、既存機能２５４によるメモリ２５５へのアクセスとアプリケーション２５２によるメモリ２５５へのアクセスとが競合しないように排他制御を行う。この実施形態では、制御部２５６は、シーケンシャル起動（先に起動された機能の処理の終了を待って、次の機能の処理を行う）、割り込み起動（先に起動されている処理に割り込んで処理を行う）、などの排他制御を行う。制御部２５６が行う制御動作について図面を参照しつつ以下に説明する。制御部２５６とアプリケーション管理フレームワーク２５１は、例えばＯＳ（Operating System）上で動作するファームウェアである。なお、アプリケーション管理フレームワーク２５１が制御部２５６に含まれていてもよい。
【００３１】
２．動作
２−１．動作例１
図６は、制御部２５６が行うアプリケーション２５２の初期化処理を示す図である。図６に示す動作において、制御部２５６は、アプリケーション管理フレームワーク２５１経由でアプリケーション２５２にメモリアクセスメソッド２５３を引き渡す。図６に示すフローは、画像形成装置２０のユーザがＵＩ部２０６を操作するなどしてアプリケーション２５２が起動されることをトリガとして開始される。
【００３２】
ステップＳ１０１において、制御部２５６は、アプリケーション２５２がＩ／Ｆ２５８を実装しているかを判定する。この例で、アプリケーション２５２がＩ／Ｆ２５８を実装しているかどうかの判断は、アプリケーション処理単位で行われる初期化処理において行われる。アプリケーション２５２がＩ／Ｆ２５８を実装していると判定された場合、制御部２５６は、ステップＳ１０２の処理に進む。一方、アプリケーション２５２がＩ／Ｆ２５８を実装していないと判定された場合、制御部２５６は、ステップＳ１０２およびステップＳ１０３の処理をスキップし、ステップＳ１０４の処理に進む。
【００３３】
ステップＳ１０２において、制御部２５６は、メモリアクセスメソッド２５３を生成する。ステップＳ１０３において、制御部２５６は、アプリケーションのＩ／Ｆ２５８をコールする。すなわち、制御部２５６は、ステップＳ１０２で生成したメモリアクセスメソッドをアプリケーション２５２に引き渡す。ステップＳ１０４において、制御部２５６は、アプリケーション２５２の初期化処理を終了する。
【００３４】
図７は、アプリケーション２５２の実行処理の流れを示すフローチャートである。図７に示すフローは、図６のステップＳ１０４に示す処理が完了したことをトリガとして開始される。図７に示す例は、アプリケーション２５２の実行と既存機能２５４の実行とが重なった場合に、シーケンシャル起動を行う場合の処理フローである。
【００３５】
ステップＳ２０１において、制御部２５６は、アプリケーション２５２にメモリアクセスメソッド２５３を引き渡しているかを判定する。メモリアクセスメソッドを引き渡していると判定された場合は、制御部２５６は、ステップＳ２０２の処理に進む。一方、メモリアクセスメソッドを引き渡していないと判定された場合は、制御部２５６は、ステップＳ２０２およびステップＳ２０３の処理をスキップし、ステップＳ２０４の処理に進む。
【００３６】
ステップＳ２０２において、制御部２５６は、アプリケーション２５２とメモリ２５５を共用する既存機能２５４が動作中であるかを判定する。動作中であると判定された場合、制御部２５６はステップＳ２０３の処理に進む。一方、動作中でないと判定された場合、制御部２５６は、ステップＳ２０３の処理をスキップし、ステップＳ２０４の処理に進む。
【００３７】
ステップＳ２０３において、制御部２５６は、既存機能２５４の処理が終了するまで待機する。既存機能２５４の処理が終了した場合、制御部２５６は、ステップＳ２０４の処理に進む。
【００３８】
ステップＳ２０４において、制御部２５６は、アプリケーション２５２の実行を開始する。ステップＳ２０５において、制御部２５６は、アプリケーション２５２の実行が終了したことを検知すると、後処理などの予め定められた処理を実行することによって、アプリケーション２５２の実行を終了する。
【００３９】
図８は、既存機能２５４の実行処理の流れを示すフローチャートである。制御部２５６は、既存機能２５４の実行を開始する場合に、図８に示す処理を実行する。図６および図７のフローと、図８のフローとは独立しており、図６および図７のフローと並列して図８のフローが行われる場合もある。また、図６および図７のフローに先立って、図８のフローが行われる場合もある。
【００４０】
ステップＳ３０１において、制御部２５６は、既存機能２５４がメモリ２５５を使用するかを判定する。例えばユーザによって指示された処理の内容によっては、既存機能２５４によって実行される処理がメモリ２５５を使用しない処理である場合もある。例えば、ユーザ毎の設定情報の変更処理などの場合、メモリ２５５が用いられることなく既存機能２５４が実行される場合もある。制御部２５６は、実行すべき処理の内容に応じてメモリ２５５が使用されるか否かを判定してもよい。既存機能２５４がメモリ２５５を使用すると判定された場合、制御部２５６はステップＳ３０２の処理に進む。一方、既存機能２５４がメモリ２５５を使用しないと判定された場合、制御部２５６はステップＳ３０２およびステップＳ３０３の処理をスキップし、ステップＳ３０４の処理に進む。
【００４１】
ステップＳ３０２において、制御部２５６は、メモリ２５５を共有するアプリケーション２５２が動作中であるかを判定する。メモリ２５５を共有するアプリケーション２５２が動作中であると判定された場合、制御部２５６は、ステップＳ３０３の処理に進む。一方、メモリ２５５を共有するアプリケーション２５２が動作していないと判定された場合、制御部２５６は、ステップＳ３０３の処理をスキップし、ステップＳ３０４の処理に進む。
【００４２】
ステップＳ３０３において、制御部２５６は、アプリケーション２５２の処理が終了するまで待機する。アプリケーション２５２の処理が終了すると、制御部２５６は、ステップＳ３０４の処理に進む。
【００４３】
ステップＳ３０４において、制御部２５６は、既存機能２５４の実行を開始する。ステップＳ３０５において、制御部２５６は、既存機能２５４の実行が終了したことを検知すると、予め定められた後処理などを実行することによって既存機能２５４を終了する。
【００４４】
上述したようにこの実施形態では、メモリアクセスメソッド２５３をＩ／Ｆ２５８を通じてアプリケーション２５２に引き渡し、アプリケーション２５２がメモリアクセスメソッド２５３を用いてメモリ２５５にアクセスする。このようにアプリケーション２５２にメモリアクセスメソッド２５３を引き渡す理由は、アプリケーション２５２がメモリ２５５に不正にアクセスすることを防ぐためである。ここで、メモリアクセスメソッド２５３の生成（その際有効な参照先のセットも含む）をアプリケーション２５２が行い、メモリ２５５の使用の有無はプロパティファイルにフラグの形で宣言させる場合について、本実施形態と比較しつつ説明する。
【００４５】
図１７は、メモリアクセスメソッド２５３をアプリケーション２５２が生成する場合の構成の一例を示す図である。図示のように、メモリ２５５の使用の宣言をアプリケーション２５２が正しく宣言していない場合（メモリを使用するにも関わらず使用しないと宣言している場合、など）、既存機能２５４とアプリケーション２５２とでメモリ２５５の競合が発生し、既存機能２５４およびアプリケーション２５２が正しく処理を行うことができない。このように、アプリケーション２５２の自己申告に基づいたメモリ２５５のアクセス管理では、それが正しく動作するかは申告の真偽に依存せざるを得ない。そのため、この場合、既存機能２５４に影響を及ぼさないことを保証できない。
【００４６】
それに対しこの実施形態では、メモリアクセスメソッド２５３とＩ／Ｆ２５８とを用いているため、プロパティファイルから得られるメモリ使用とアプリケーション２５２の実際のメモリ使用とが乖離することがない。
【００４７】
また、画像形成装置におけるメモリの空き容量は、有効化しているオプションや画像形成装置に保存しているデータ量（ユーザ情報、保存文書）に依存するため、変動する。そのため、従来の画像形成装置においては、制御部がアプリケーションをインストールする際にメモリ不足と判断してインストールを拒否しても、その後の画像形成装置に対する操作によりインストール可能な状態となる場合がある。逆にインストールされるタイミングにおいてメモリがあってインストールしても、その後メモリ不足となって結局アプリケーションが使用できなくなる可能性もある。結果、アプリケーションがユーザの期待通りに動作しない（インストールできない、インストールしても動作しない）ことが起きてしまう。
【００４８】
一方、画像形成装置の既存機能に割り当てられたメモリ領域は、その機能が動作することを保証する量が確保されるためサイズが大きい場合が多い。特に画像処理機能で使用するメモリ量は、例えば、扱うデータの最大値、最悪値をベースにした場合、比較的大きなメモリ量となっている。この実施形態では、上述したように、そういった既存機能２５４向けのメモリ２５５のメモリ領域をアプリケーション２５２と共有するため、メモリ量が節約される。また、アプリケーション２５２のために充分なメモリ量を確保することにもつながる。
【００４９】
以上説明したようにこの実施形態では、既存機能２５４と後から追加されるアプリケーション２５２とで、既存機能２５４に予め割り当てられたメモリ２５５を共用する。これにより、メモリ不足によってアプリケーション２５２が実行されないという事態の発生が抑制される。また、メモリアクセスメソッド２５３が生成されることにより、アプリケーション２５２が不正にメモリ２５５にアクセスすることが防止される。
【００５０】
また、上述の動作例では、既存機能２５４とアプリケーション２５２の動作が重なった場合は、それらをシーケンシャルに処理するため、メモリ領域を共有しても誤動作の懸念がない。また、アプリケーション２５２の動作は既存機能２５４側で制御することができないため、本来アクセスしてはならない既存のメモリ領域にもアクセスを試みる場合がある。結果、既存機能２５４に影響を及ぼす可能性がある。これに対し本実施形態によれば、アプリケーション管理フレームワーク２５１および／または制御部２５６が、許可されていない既存メモリ領域のアクセスが行われないように制御するため、既存機能２５４への影響はない。
【００５１】
２−２．動作例２
次に、この実施形態の他の動作例を説明する。アプリケーション２５２の実行と既存機能２５４の実行とは、それぞれの用途によって割り込みがなされたり、どちらかの処理を優先したりすることが想定される。例えば、既存機能２５４の用途がバックグラウンド処理（例えば、スキャンされた画像データを他の装置に転送する処理、など）であり、アプリケーション２５２の用途がユーザ操作に関わる処理（例えば、画像処理を伴ったユーザ認証処理）である場合、アプリケーション２５２の実行を優先することが期待される。逆に、既存機能２５４が時間課金に関わる処理（例えば、ファクシミリ送信処理、など）であり、アプリケーション２５２がバックグラウンド処理（例えば、プリントデータのカスタマイズ処理、など）であれば、既存機能を優先すべき場合もある。このように、画像形成装置２０が行う処理には、ファクシミリ送信処理であれば課金などに影響する回線接続時間というハードウェア制約（ハードウェアに基づく制約）がある。また、スキャナや用紙へ転写する部分が共用である点（複数人で使うため処理を早くこなしたい）も、ハードウェア制約となる。このように、画像形成装置２０が行う処理には一般的な情報処理装置（例えばパソコン）にはないハードウェア制約があるため、処理の用途に応じた優先度が必要となる。この動作例では、制御部２５６が、アプリケーション２５２の用途と既存機能２５４の用途に従って制御を行う。
【００５２】
図９は、この動作例における制御部２５６が行うアプリケーション２５２の実行処理の流れを示すフローチャートである。ステップＳ４０１において、制御部２５６は、アプリケーション２５２にメモリアクセスメソッド２５３を引き渡しているかを判定する。アプリケーション２５２にメモリアクセスメソッド２５３を引き渡していると判定された場合、制御部２５６はステップＳ４０２の処理に進む。一方、メモリアクセスメソッド２５３を引き渡していないと判定された場合、制御部２５６はステップＳ４１２の処理に進む。
【００５３】
ステップＳ４０２において、制御部２５６は、メモリ２５５を共有する既存機能２５４が動作中であるかを判定する。メモリ２５５を共有する既存機能２５４が動作していると判定された場合、制御部２５６はステップＳ４０３の処理に進む。一方、メモリ２５５を共有する既存機能２５４が動作していないと判定された場合、制御部２５６はステップＳ４１２の処理に進む。
【００５４】
ステップＳ４０３において、制御部２５６は、アプリケーション２５２の用途を取得する。用途の取得は、アプリケーション２５２が実装するＩ／Ｆ（メモリ取得Ｉ／Ｆとは別）を制御部２５６がコールすることにより行われてもよい。また、制御部２５６は、既存機能の用途を取得する。この用途の取得は、既存機能２５４が実装するＩ／Ｆを制御部２５６がコールすることにより行われてもよい。
【００５５】
ステップＳ４０５において、制御部２５６は、アプリケーション２５２の優先度と既存機能２５４の優先度とを比較し、アプリケーションの優先度のほうが高いかを判定する。この判定は、例えば、用途と優先度との対応関係を記憶するテーブルを制御部２５６が参照して、アプリケーション２５２と既存機能２５４とのそれぞれの用途に対応する優先度を比較することによって行われてもよい。アプリケーション２５２の優先度が高いと判定された場合、制御部２５６はステップＳ４０６の処理に進む。一方、既存機能２５４の優先度が高いと判定された場合、制御部２５６はステップＳ４１１の処理に進む。
【００５６】
ステップＳ４０６において、制御部２５６は既存機能の実行を一次停止する。ステップＳ４０７において、制御部２５６はアプリケーション２５２の実行を開始する。ステップ４０８において、制御部２５６はアプリケーション２５２の実行が完了すると、後処理を行い、アプリケーション２５２の処理を終了する。ステップＳ４０９において、制御部２５６は既存機能処理を再開する。ステップＳ４１０において、制御部２５６は既存機能２５４の実行が完了すると、後処理を行うなどして既存機能２５４の実行を終了する。
【００５７】
ステップＳ４１１において、制御部２５６は既存機能２５４の処理が完了するまで待機する。既存機能２５４の処理が完了すると、制御部２５６はステップＳ４１２の処理に進む。ステップＳ４１２において、制御部２５６はアプリケーション２５２の処理を開始する。ステップＳ４１３において、制御部２５６はアプリケーション２５２の処理を終了する。
【００５８】
２−３．動作例３
上述の動作例１では、アプリケーション２５２の処理を開始するタイミングで、制御部２５６が、メモリ２５５へのアプリケーション２５２によるアクセスの有無を確認して制御を行った。一方、アプリケーション２５２がメモリ２５５を実際に使用するタイミングまで既存機能の処理を停止させないようにしてもよい。この場合の動作例を図面を参照しつつ説明する。
【００５９】
図１０は、この動作例におけるアプリケーション２５２の実行処理の流れを示すフローチャートである。図１０に示す処理は、アプリケーション２５２がメモリアクセスメソッド２５３を経由してメモリ２５５にアクセスすることを契機として開始される。アプリケーション２５２がメモリ２５５にアクセスするときはメモリアクセスメソッド２５３を経由してなされるため、アプリケーション２５２によるメモリ２５５へのアクセスはアプリケーション管理フレームワーク２５１および制御部２５６により把握される。
【００６０】
ステップＳ５０１において、制御部２５６は、アプリケーション２５２によるメモリアクセスメソッド２５３を介したメモリ２５５へのアクセスを検知する。ステップＳ５０２において、制御部２５６は、メモリ２５５を共有する既存機能２５４が動作中であるかを判定する。メモリ２５５を共有する既存機能２５４が動作中であると判定された場合、制御部２５６はステップＳ５０３の処理に進む。一方、メモリ２５５を共有する既存機能２５４が動作中でないと判定された場合、制御部２５６はステップＳ５０３の処理をスキップし、ステップＳ５０５の処理に進む。
【００６１】
ステップＳ５０３において、制御部２５６は既存機能２５４の処理の終了を待機する。既存機能２５４の処理が終了すると、制御部２５６はステップＳ５０４の処理に進む。ステップＳ５０４において、制御部２５６はアプリケーション２５２の処理を再開する。
【００６２】
ステップＳ５０５において、制御部２５６はアプリケーション２５２の処理を継続する。ステップＳ５０６において、制御部２５６はアプリケーション２５２の処理を終了する。
【００６３】
図１１は、動作例１と動作例３のメモリアクセス制御に関するタイミングチャートである。図１１の（ａ）は動作例１におけるタイミングチャートを示し、（ｂ）は動作例３のタイミングチャートを示す。（ｂ）に示す例では、アプリケーション２５２と既存機能２５４とが並列で実行される時間があるため、（ａ）と比較して処理全体のスループットが高いといえる。
【００６４】
２−４．動作例４
次いで、この実施形態の他の動作例を説明する。この動作例では、アプリケーション２５２が使用するメモリ量に応じてメモリ２５５へのアクセス制御の内容が切り替えられる。具体的には、アプリケーション２５２が使用するメモリ量が少なければ、メモリ２５５を複数の領域に分け、既存機能２５４とアプリケーション２５２とが並列に動作することを許可したり、または一時的に別メモリを用意する、などの制御が行われる。
【００６５】
この動作例では、アプリケーション２５２が使用するメモリ量は、メモリアクセスメソッド２５３を通じてアプリケーション２５２が宣言する。この場合、アプリケーション２５２が使用するメモリ量が記述されたプロパティファイルをアプリケーション管理フレームワーク２５１または制御部２５６が参照することによって、アプリケーション２５２によって使用されるメモリ量が特定されてもよい。アプリケーション管理フレームワーク２５１と制御部２５６は、アプリケーション２５２が使用するメモリ量を把握し、メモリ２５５へのアクセス制御を行う。具体的には、制御部２５６は、アプリケーション２５２が使用するメモリ量が予め定められた条件を満たす場合（アプリケーション２５２が使用するメモリ量が少ない場合）、メモリ２５５を複数の領域に区分する。すなわち、制御部２５６は、メモリ２５５を既存機能２５４が用いる領域とアプリケーション２５２が用いる領域とに分け、既存機能２５４とアプリケーション２５２とを並列に動作させる。一方、制御部２５６は、アプリケーション２５２が使用するメモリ量が予め定められた条件を満たさない場合（アプリケーション２５２が使用するメモリ量が多い場合）、メモリ２５５とは異なるメモリをアプリケーション２５２に割り当てる制御を行う。
【００６６】
この動作例では、アプリケーション２５２と既存機能２５４とを並列して動作させるため、既存機能２５４はアプリケーション２５２によって処理が一時停止させられたりすることがない。
【００６７】
２−５．動作例５
上述の動作例１ないし４では、アプリケーション２５２が実装するＩ／Ｆ２５８を通じてメモリアクセスメソッド２５３をアプリケーション２５２に引き渡した。それに対しこの動作例では、メモリアクセスメソッド取得用のＡＰＩをアプリケーション管理フレームワーク２５１が提供し、このＡＰＩをアプリケーション２５２にコールしてもらうことでメモリアクセスメソッド２５３をアプリケーション２５２に引き渡す。
【００６８】
図１２は、この動作例において画像形成装置２０が行うアプリケーション２５２の初期化処理およびアプリケーション２５２の実行処理の流れを示すフローチャートである。この例では、アプリケーション２５２がメモリアクセスメソッド２５３をメモリ取得ＡＰＩのコールで取得する。アプリケーション２５２が取得したメモリアクセスメソッド２５３経由でメモリ２５５にアクセスするタイミングで、制御部２５６によってメモリ２５５に対するアクセス制御が行われる。ステップＳ６００において、制御部２５６は、アプリケーション２５２の初期化処理を開始する。ステップＳ６０１において、制御部２５６は、アプリケーション２５２の初期化処理を終了する。すなわち、この動作例では、アプリケーション２５２の初期化処理においてメモリアクセスメソッド２５３の生成および引き渡しは行われない。そのため、この動作例では、アプリケーション２５２がメモリ２５５を使用するかどうかはアプリケーション２５２の初期化のタイミングでは把握されない。
【００６９】
ステップＳ６０２において、アプリケーション２５２の実行処理が開始される。ステップＳ６０３において、メモリアクセスメソッド取得ＡＰＩがアプリケーション２５２によりコールされる。ステップＳ６０４において、制御部２５６は、メモリアクセスメソッド２５３を生成し、生成したメモリアクセスメソッド２５３をアプリケーション２５２へ引き渡す。
【００７０】
ステップＳ６０５において、アプリケーション２５２がメモリ２５５へのアクセスを開始する。ステップＳ６０６において、制御部２５６は、メモリ２５５を共有する既存機能２５４が動作しているかを判定する。メモリ２５５を共有する既存機能が動作していると判定された場合、制御部２５６はステップＳ６０７の処理に進む。一方、メモリ２５５を共有する既存機能が動作していないと判定された場合、制御部２５６はステップＳ６０９の処理に進む。
【００７１】
ステップＳ６０７において、制御部２５６は、既存機能２５４の処理が終了するまで待機する。既存機能２５４の処理が終了すると、制御部２５６はステップＳ６０８の処理に進む。ステップＳ６０８において、制御部２５６は、アプリケーション２５２の処理を再開する。
【００７２】
ステップＳ６０９において、制御部２５６は、アプリケーション２５２の処理を継続する。ステップＳ６１０において、制御部２５６はアプリケーション２５２の処理を終了する。
【００７３】
３．変形例
上述した実施形態は、本発明の一例である。これらの実施形態は、以下のように変形してもよい。また、以下の変形例は、互いに組み合わせてもよい。
【００７４】
３−１．変形例１
上述の実施形態に係る動作例１では、図７および図８に例示したように、制御部２５６は、メモリ２５５を先に使用している機能を優先する制御を行った。また、動作例２では、制御部２５６は、アプリケーション２５２の優先度および既存機能２５４の優先度に応じた排他制御を行った。制御部２５６が行う排他制御の態様は上述したものに限られない。例えば、制御部２５６は、後から起動された機能を先に処理するように制御してもよい。また、他の例として、例えば、制御部２５６は、後から起動した機能を中止する制御を行ってもよく、また、先に起動している機能を中止する制御を行ってもよい。また、制御部２５６は、メモリのアクセスに係る競合が発生した旨をユーザに通知し、どの機能を一次停止（または停止）するかをユーザに選択させてもよい。
【００７５】
また、排他制御の他の例として、例えば、制御部２５６が、予め定められた単位（例えば、ページ単位）で機能を切り替えて並行して処理を進める制御を行ってもよい。また、制御部２５６が、複数の優先度のレベル（高／中／低、など）に応じて処理する機能を切り替えてもよい。なお、２つの機能が同時に起動されたときに、上記のようにいずれかの機能を優先する制御を行ってもよい。
【００７６】
３−２．変形例２
上述の実施形態に係る動作例１において、メモリ２５５へのアクセス競合が発生した場合、制御部２５６がユーザにその旨を通知する制御を行ってもよい。具体的には、例えば、図７のステップＳ２０３において、既存機能の処理の終了を待機している間に、アプリケーション２５２の処理を一次停止している旨を示す画面をＵＩ部２０６に表示してもよい。
【００７７】
図１３は、ＵＩ部２０６に表示される画面の一例を示す図である。図１３の（ａ）に示されるように、ＵＩ部２０６には、「処理１０１」の実行が一時停止中である旨を示す画面が表示される。この例では、ユーザは図１３の（ａ）に示される画面を確認することにより、どの処理が一時停止されているかを把握する。図１３の（ａ）に示す画面において、ユーザが詳細ボタンＢ１を押下する操作を行うと、制御部２５６は、操作された内容に応じて図１３の（ｂ）に示される画面を表示する。図１３の（ｂ）に示す例では、一時停止中の処理について、「必要なリソースを待っています」といったメッセージがＵＩ部２０６に表示される。
【００７８】
３−３．変形例３
上述の実施形態では、既存機能２５４とアプリケーション２５２とのメモリ２５５へのアクセス競合が発生する場合を説明した。上述の実施形態において、既存機能２５４を、工場出荷の際にプリインストールされている標準アプリケーションによって実現される機能、と定義してもよい。この場合、上記実施形態に係るメモリ共有は、複数のアプリケーション間で行われる。
【００７９】
図１４は、この変形例に係る機能構成の一例を示す図である。図１４に示す例では、複数のアプリケーション２５２Ｂ、２５４Ｂのそれぞれについて、アプリケーション管理フレームワーク２５１がメモリアクセスメソッド２５３Ｂ、２５３Ｃを生成する。
【００８０】
３−４．変形例４
上述の実施形態において、ひとつのアプリケーションがひとつのプロセスを実行してもよく、また、複数のアプリケーションがひとつのプロセスを実行してもよい。
【００８１】
図１５は、変形例４に係る機能構成の一例を示す図である。図１５の（ａ）は複数のアプリケーションがそれぞれ一のプロセスを実行する場合の機能構成の一例を示す図である。この例で、アプリケーション管理フレームワーク２５１はプロセス２５７毎（すなわちアプリケーション２５２毎）にメモリアクセスメソッド２５３を生成する。一方、図１５の（ｂ）は複数のアプリケーションが全体で一のプロセスを実行する場合の機能構成の一例を示す図である。この例で、アプリケーション管理フレームワーク２５１はアプリケーション２５２毎にメモリアクセスメソッド２５３を生成する。図１５の（ｃ）は一のアプリケーションによって実行される一のプロセスと、複数のアプリケーションによって実行される一のプロセスとでメモリ２５５を共有する場合のメモリアクセスに係る機能構成の一例を示す図である。この例で、アプリケーション管理フレームワーク２５１はアプリケーション２５２毎にメモリアクセスメソッド２５３を生成する。
【００８２】
図１５に示す例においても、複数のプロセス２５７でメモリ２５５を共有するため、プロセスが使用するメモリ量を抑えられる。
【００８３】
なお、図１５に示す例では、アプリケーション管理フレームワーク２５１が、アプリケーション２５２毎にメモリアクセスメソッド２５３を生成した。メモリアクセスメソッド２５３はアプリケーション２５２毎に生成されるに限られない。メモリアクセスメソッド２５３は、プロセス２５７毎に生成されてもよい。この場合、複数のアプリケーション２５２によって一のメモリアクセスメソッド２５３が共有されてもよい。
【００８４】
３−５．変形例５
画像形成装置２０などの情報処理装置において使用可能なメモリ量は、その装置のハードウェア構成や搭載される機能によって異なる。制御部２５６が、使用可能なメモリ量に応じて、メモリ２５５を複数のアプリケーション２５２間で共有するか否かを判定してもよい。この場合、メモリ２５５のメモリ量が予め定められた閾値以上である場合、複数のアプリケーション間でメモリ２５５を共有しないと判定してもよい。
【００８５】
図１６は、メモリ２５５が共有されない場合の機能構成の一例を示す図である。図示のように、メモリ２５５のメモリ量が充分であると判定された場合、制御部２５６は、アプリケーション２５２毎にメモリ領域２５５ａを確保する。なお、メモリ２５５を複数のアプリケーションで共有するか否かの切り替えは、アプリケーション管理フレームワーク２５１が行ってもよい。
【００８６】
３−６．変形例６
上述の実施形態において、メモリ２５５は全ての領域が複数のアプリケーションによって共有されてもよく、また、メモリ２５５の一部の領域が共有されてもよい。
【００８７】
３−７．変形例７
上述の実施形態に係るシステム１は、サービス提供装置１０と、画像形成装置２０とを備えていた。サービス提供装置１０および画像形成装置２０の台数はシステム１で示した台数に限られない。例えば、複数のサービス提供装置を備える構成であってもよい。
【００８８】
３−８．変形例８
実施形態では、画像形成装置２０の工場出荷の際にプリインストールされている標準アプリケーションが第１アプリケーションとして用いられたが、これに限らず、プラグインが第１アプリケーションとして用いられてもよい。また、実施形態ではプラグインが第２アプリケーションとして用いられたが、こちらも反対に、標準アプリケーションが第２アプリケーションとして用いられてもよい。
【００８９】
３−９．変形例９
画像形成装置２０は、電子写真方式以外の方式で画像を形成するプリンタであってもよい。また、画像形成装置２０は、白黒の画像を形成するものであってもよいし、カラーの画像を形成するものであってもよい。
【００９０】
３−１０．変形例１０
上述した実施形態において、画像形成装置２０のＣＰＵ２０１により実行されるプログラムは、インターネットなどの通信回線を介してダウンロードされてもよい。また、このプログラムは、磁気記録媒体（磁気テープ、磁気ディスクなど）、光記録媒体（光ディスクなど）、光磁気記録媒体、半導体メモリなどの、コンピュータが読取可能な記録媒体に記録した状態で提供されてもよい。
【符号の説明】
【００９１】
１…システム、２…ネットワーク、１０…サービス提供装置、２０…画像形成装置、２１…アプリケーション実行手段、２２…メモリ、２３…制御手段、２４…生成手段、２５…引渡手段
【図１】
0006464630.tif 000002
【図２】
0006464630.tif 000003
【図３】
0006464630.tif 000004
【図４】
0006464630.tif 000005
【図５】
0006464630.tif 000006
【図６】
0006464630.tif 000007
【図７】
0006464630.tif 000008
【図８】
0006464630.tif 000009
【図９】
0006464630.tif 000010
【図１０】
0006464630.tif 000011
【図１１】
0006464630.tif 000012
【図１２】
0006464630.tif 000013
【図１３】
0006464630.tif 000014
【図１４】
0006464630.tif 000015
【図１５】
0006464630.tif 000016
【図１６】
0006464630.tif 000017
【図１７】
0006464630.tif 000018