(57)【要約】【課題】機器のアプリの開発及び修正等を簡単に実行可能とする。【解決手段】本体１０に記憶されているコピーアプリ１１１〜ＦＡＸアプリ１１４と同等の機能を提供する機能提供アプリ１３６を設ける。そして、ＭＦＰ１の機能単位の画面表示及びジョブの実行制御を機能提供アプリ１３６が行う。これにより、機能提供アプリ１３６で行われる部分のプログラム開発を、開発ベンダーのベンダーアプリ１３７で行う必要が無いため、ベンダーアプリ１３７の開発を容易化することができる。また、ＭＦＰ１が新機種に移行した際に機種対応開発が必要となる設定画面は、機能提供アプリ１３６の実装部分となる。このため、機種依存の実装部分に対応するベンダーアプリ１３７の機種対応開発を不要とすることができる。【選択図】図３
2018046551.tif 000002
【特許請求の範囲】
【請求項１】
画像処理部による画像処理の実行を制御する制御アプリケーションを少なくとも１つ有し、前記画像処理に関する設定情報を受け付けるための設定情報受付画面を表示する機能と、前記設定情報受付画面において受け付けた前記設定情報および前記画像処理の実行指示に応じて、前記設定情報に基づく前記画像処理の実行を前記制御アプリケーションに対して要求する第１の要求アプリケーションを有する画像処理装置であって、
前記第１の要求アプリケーションとは異なり、前記制御アプリケーションに対する前記画像処理の実行指示を受け付けるための第２の要求アプリケーションと、
前記第２の要求アプリケーションからの前記設定情報受付画面の表示要求に応じて、前記設定情報受付画面を表示する機能と、前記第２の要求アプリケーションから受け付けた前記画像処理の実行の要求に応じて、前記設定情報受付画面において受け付けた前記設定情報に基づく前記画像処理の実行を前記制御アプリケーションに対して要求する機能提供アプリケーションと
を有することを特徴とする画像処理装置。 
【請求項２】
前記機能提供アプリケーションは、前記制御アプリケーションが前記設定情報に基づいて前記画像処理部の画像処理を実行制御したことで得られた画像処理結果を、当該画像処理結果に対応する識別番号を取得すること
を特徴とする請求項１に記載の画像処理装置。 
【請求項３】
前記第２の要求アプリケーションは、前記機能提供アプリケーションに対して要求する動作に対応したパラメータで、前記設定情報受付画面の表示要求、又は、前記画像処理の実行要求を行うこと
を特徴とする請求項１又は請求項２に記載の画像処理装置。 
【請求項４】
前記機能提供アプリケーションは、前記設定情報受付画面の設定項目のうち、非表示とした設定項目の後続となる設定項目を、非表示とした設定項目の表示位置から順に表示すること
を特徴とする請求項１から請求項３のうち、いずれか一項に記載の画像処理装置。 
【請求項５】
前記機能提供アプリケーションは、前記設定情報受付画面の設定項目のうち、設定を禁止する設定項目を、他の設定項目よりも高い透明度で表示すること
を特徴とする請求項１から請求項４のうち、いずれか一項に記載の画像処理装置。 
【請求項６】
複数設けられている前記第２の要求アプリケーションの設定状態を示す情報及び画像処理の実行状態を示す情報が記憶された状態記憶部を、さらに備え、
前記機能提供アプリケーションは、前記第２の要求アプリケーションから要求があった際に、前記状態記憶部を参照することで、他の前記第２の要求アプリケーションの前記設定状態又は前記実行状態を認識し、他の前記第２の要求アプリケーションの前記設定又は前記実行が完了した際に、前記第２の要求アプリケーションからの要求を実行すること
を特徴とする請求項１から請求項５のうち、いずれか一項に記載の画像処理装置。 
【請求項７】
前記機能提供アプリケーションは、前記第２の要求アプリケーションから要求があった際に、他の前記第２の要求アプリケーションの前記設定又は前記実行が未完了である場合、前記未完了であることを報知する報知動作を行うこと
を特徴とする請求項６に記載の情報処理装置。 
【請求項８】
前記機能提供アプリケーションは、前記第２の要求アプリケーションのデータ量が、予め指定しているメモリ容量以上となった場合、時間的に古いデータを削除し、前記第２の要求アプリケーションのデータ量を、予め指定されたメモリ容量以下のデータ量となるように制御すること
を特徴とする請求項１から請求項７のうち、いずれか一項に記載の画像処理装置。 
【請求項９】
デフォルトとなる設定情報、及び、前記設定情報受付画面を介して設定された設定情報を記憶する設定値記憶部を、さらに備え、
前記機能提供アプリケーションは、前記第２の画像処理制御部から前記設定情報の表示要求があった際に、前記デフォルトの設定情報を表示するか、又は、前記設定情報受付画面を介して設定された設定情報を表示するかを選択させるための設定情報の選択画面を表示し、前記選択画面を介して選択されたいずれかの前記設定情報の設定処理を行うこと
を特徴とする請求項１から請求項８のうち、いずれか一項に記載の画像処理装置。 
【請求項１０】
予め登録されたユーザに対して機能を提供するログイン機能を、さらに備え、
前記機能提供アプリケーションは、ログインしているユーザがログアウトした際に、起動していた前記第２の要求アプリケーションに関連する一部又は全部の情報を記憶部から消去すること
を特徴とする請求項１から請求項９のうち、いずれか一項に記載の画像処理装置。
【請求項１１】
前記第１の要求アプリケーション及び前記機能提供アプリケーションは、物理的にまとめられた一つの統合アプリケーションであること
を特徴とする請求項１に記載の画像処理装置。
【請求項１２】
前記統合アプリケーションは、
少なくとも前記第１の要求アプリケーションからの呼び出しか、又は、前記第２の要求アプリケーションからの呼び出しかを示す呼び出し元情報と、設定値及び動作状態を示す情報とを含む状態情報を、動作終了時に、記憶部に記憶制御し、前記第１の要求アプリケーションの起動時、又は、前記第２の要求アプリケーションからの呼び出し時に、前記記憶部から前記状態情報を読み出す記憶制御部と、
読み出された前記状態情報に基づいて、前記終了時における設定値に対応する設定状態を再現する設定制御部と、を備えること
を特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
前記統合アプリケーションは、
前記第１の要求アプリケーション又は前記第２の要求アプリケーションのジョブを実行制御するジョブ実行部を備え、
前記ジョブ実行部は、前記第１の要求アプリケーション又は前記第２の要求アプリケーションのうち、いずれか一方のジョブを実行している間は、他のアプリケーションのジョブの実行を抑制すること
を特徴とする請求項１１又は請求項１２に記載の画像処理装置。
【請求項１４】
前記記憶制御部は、当該画像処理装置の本体側に設けられた前記記憶部に、前記状態情報を記憶制御すること
を特徴とする請求項１１から請求項１３のうち、いずれか一項に記載の画像処理装置。
【請求項１５】
前記記憶制御部は、当該画像処理装置のオペレーティングシステムが管理するｔｍｐｆｓ領域に前記状態情報を記憶制御すること
を特徴とする請求項１１から請求項１４のうち、いずれか一項に記載の画像処理装置。
【請求項１６】
画像処理部による画像処理の実行を制御する制御アプリケーションを少なくとも１つ有し、前記画像処理に関する設定情報を受け付けるための設定情報受付画面を表示する機能と、前記設定情報受付画面において受け付けた前記設定情報および前記画像処理の実行指示に応じて、前記設定情報に基づく前記画像処理の実行を前記制御アプリケーションに対して要求する第１の要求アプリケーションを有する画像処理装置の画像処理プログラムであって、
コンピュータに、
前記第１の要求アプリケーションとは異なる第２の要求アプリケーションが、前記制御アプリケーションに対する前記画像処理の実行指示を受け付ける受付ステップと、
機能提供アプリケーションが、前記第２の要求アプリケーションからの前記設定情報受付画面の表示要求に応じて、前記設定情報受付画面を表示し、前記第２の要求アプリケーションから受け付けた前記画像処理の実行の要求に応じて、前記設定情報受付画面において受け付けた前記設定情報に基づく前記画像処理の実行を前記制御アプリケーションに対して要求する処理ステップと
を実行させることを特徴とする画像処理プログラム。 
【請求項１７】
請求項１６に記載の画像処理プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理プログラム及び画像処理プログラムを記憶したコンピュータ読み取り可能な記憶媒体に関する。 
【背景技術】
【０００２】
今日において、コピー機能、スキャナ機能及び印刷機能等の画像形成機能を備えた画像形成装置が知られている。このような画像形成装置に対しては、多数のサードベンダ等によって、多くのアプリケーションプログラム（以下、単にアプリという）が開発されることが、市場における競争力を向上させる観点からも望ましいことである。このため、画像形成装置の製造元は、各サードベンダのアプリの開発を補助すべく、画像形成装置のＡＰＩ（Application  Program  Interface）を公開していることが多い。各サードベンダは、公開されているＡＰＩに基づいて、画像形成装置のアプリの開発を行う。 
【０００３】
特許文献１（特開２０１４−１５０３２０号公報）には、新機種となることで、機器のＡＰＩが変更となり、アプリが非対応となった場合に、アプリがＡＰＩの呼び出しを行うと、異常動作となる不都合を防止することを目的とした画像形成装置が開示されている。この画像形成装置は、画像形成装置でサポートされているＡＰＩを示すサポート判断用情報をアプリに通知する。これにより、画像形成装置でサポートされていないＡＰＩの呼び出しを行うことがないため、異常動作を防止できる。 
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、公開されているＡＰＩを用いてアプリの開発を行ったとしても、サードベンダのアプリの開発工程が削減されない場合も多く、公開されているＡＰＩが、サードベンダ側の開発労力の軽減に寄与していない問題があった。また、サードベンダは、画像形成装置の新機種が発売されるたびに、新機種に対応した修正を、自分達で開発したアプリに施す必要があり、この修正作業にも労力を必要とする問題があった。 
【０００５】
本発明は、上述の課題に鑑みてなされたものであり、機器のアプリの開発及び修正等を簡単に行うことができるような画像処理装置、画像処理プログラム及び画像処理プログラムを記憶したコンピュータ読み取り可能な記憶媒体の提供を目的とする。 
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、画像処理部による画像処理の実行を制御する制御アプリケーションを少なくとも１つ有し、画像処理に関する設定情報を受け付けるための設定情報受付画面を表示する機能と、設定情報受付画面において受け付けた設定情報および画像処理の実行指示に応じて、設定情報に基づく画像処理の実行を制御アプリケーションに対して要求する第１の要求アプリケーションを有する画像処理装置であって、第１の要求アプリケーションとは異なり、制御アプリケーションに対する画像処理の実行指示を受け付けるための第２の要求アプリケーションと、第２の要求アプリケーションからの設定情報受付画面の表示要求に応じて、設定情報受付画面を表示する機能と、第２の要求アプリケーションから受け付けた画像処理の実行の要求に応じて、設定情報受付画面において受け付けた設定情報に基づく画像処理の実行を制御アプリケーションに対して要求する機能提供アプリケーションとを有する。 
【発明の効果】
【０００７】
本発明によれば、機器のアプリの開発及び修正等を簡単に行うことができるという効果を奏する。 
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施の形態のＭＦＰのハードウェア構成図である。
【図２】図２は、第１の実施の形態のＭＦＰのソフトウェア構成を示す図である。
【図３】図３は、第１の実施の形態のＭＦＰに設けられているソフトウェアを示す図である。
【図４】図４は、第１の実施の形態のＭＦＰの操作部に設けられている機能提供アプリの機能ブロック図である。
【図５】図５は、ベンダーアプリでスキャンを実行する場合における、機能提供アプリの動作の流れを示すシーケンス図である。
【図６】図６は、操作部の操作パネルに、初期画面として表示されるホーム画面の一例を示す図である。
【図７】図７は、ベンダーアプリのメイン画面の一例を示す図である。
【図８】図８は、スキャン設定を行うための設定画面の一例を示す図である。
【図９】図９は、ユーザに操作された設定項目の設定画面の一例を示す図である。
【図１０】図１０は、スキャン実行中の画面の一例を示す図である。
【図１１】図１１は、スキャン設定ボタン及びスキャン実行ボタンを纏めて表示した場合における機能提供アプリの動作の流れを示すシーケンス図である。
【図１２】図１２は、スキャン設定ボタン及びスキャン実行ボタンを纏めて表示する場合におけるベンダーアプリのメイン画面の一例を示す図である。
【図１３】図１３は、スキャン設定ボタン及びスキャン実行ボタンを纏めて表示する場合における機能提供アプリのトップ画面の一例を示す図である。
【図１４】図１４は、スキャン設定ボタン及びスキャン実行ボタンを纏めて表示する場合における機能提供アプリのトップ画面において、ユーザに操作された設定項目に対応する詳細な設定画面の一例を示す図である。
【図１５】図１５は、第１の実施の形態のＭＦＰにおいて、ベンダーアプリ及び機能提供アプリの間の通信が、操作部のＯＳ層により仲介されている様子を示す図である。
【図１６】図１６は、カラー設定項目に対するユーザの設定操作が「有効」に指定されている場合、及び、カラー設定項目に対するユーザの設定操作が「無効」に指定されている場合における、カラー設定項目の表示形態を示す図である。
【図１７】図１７は、機能提供アプリにおけるスキャン設定画面の設定項目の表示形態を説明するための図である。
【図１８】図１８は、機能提供アプリが、非表示とされた設定項目の表示位置に、後続の設定項目を詰めて表示した例を示す図である。
【図１９】図１９は、機能提供アプリにおける設定画面の通常の表示例を示す図である。
【図２０】図２０は、機能提供アプリが、カラー設定項目を非表示とし、代りに後続のファイル形式の設定項目をカラー設定項目の表示位置に詰めて表示した例を示す図である。
【図２１】図２１は、機能提供アプリが、ユーザによるカラー設定項目の設定を「無効」としている場合に、表示指定されたカラー設定項目を半透明表示する例を示す図である。
【図２２】図２２は、カラー設定項目とファイル形式設定項目を入れ替えた場合、機能提供アプリが、ファイル形式設定項目を先に表示し、続けてカラー設定項目を表示した例を示す図である。
【図２３】図２３は、操作部に複数のベンダーアプリが記憶されている例を示す図である。
【図２４】図２４は、機能提供アプリの記憶制御部により、ＲＡＭ又はフラッシュメモリ等の記憶部に記憶される「アプリデータ」を示す図である。
【図２５】図２５は、複数のベンダーアプリが操作部に記憶されている場合において、アプリからの設定要求があった際に、機能提供アプリが、各アプリの表示状態及びジョブの実行状態に応じて設定画面の表示を行う流れを示すシーケンス図である。
【図２６】図２６は、複数のベンダーアプリが操作部に記憶されている場合において、アプリからのジョブの実行要求があった際に、機能提供アプリが、各アプリの表示状態及びジョブの実行状態に応じてジョブの実行制御を行う流れを示すシーケンス図である。
【図２７】図２７は、第２の実施の形態のＭＦＰに設けられているソフトウェアを示す図である。
【図２８】図２８は、第２の実施の形態のＭＦＰに設けられている情報提供アプリの機能ブロック図である。
【図２９】図２９は、第２の実施の形態のＭＦＰのホーム画面の一例を示す図である。
【図３０】図３０は、第２の実施の形態のＭＦＰにおけるスキャナ機能提供アプリの設定画面の一例を示す図である。
【図３１】図３１は、第２の実施の形態のＭＦＰにおけるスキャナ機能提供アプリのファイル形式の設定画面の一例を示す図である。
【図３２】図３２は、第２の実施の形態のＭＦＰにおける設定画面表示時の前半のシーケンス図である。
【図３３】図３３は、第２の実施の形態のＭＦＰにおける設定画面表示時の後半のシーケンス図である。
【図３４】図３４は、第２の実施の形態のＭＦＰにおけるジョブ実行時のシーケンス図である。
【発明を実施するための形態】
【０００９】
（第１の実施の形態）
まず、図１に、第１の実施の形態の複合機（ＭＦＰ：Multifunction  Peripheral）１のハードウェア構成図を示す。ＭＦＰ１は、画像処理装置の一例である。ＭＦＰ１は、図１に示すように例えばコピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能等の各種の画像形成機能を備えた本体１０と、ユーザの操作に応じた入力を受け付ける操作部２０とを備える。 
【００１０】
本体１０と操作部２０は、専用の通信路３０を介して相互に通信可能に接続されている。通信路３０は、例えばＵＳＢ（Universal  Serial  Bus）規格のものを用いることができる。また、通信路３０は、有線又は無線を問わず任意の規格のものでもよい。また、本体１０は、コピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能等の画像形成機能のうち、一つの機能を有していてもよいし、複数の機能を有していてもよい。 
【００１１】
操作部２０としては、単独で完結した情報処理を実行可能な電子機器を用いることができる。一例として、操作部２０としては、スマートフォン又はタブレット型端末等の情報処理端末を用いることができる。この場合、操作部２０として用いられる情報処理端末は、ＭＦＰ１の操作部として機能する。 
【００１２】
より詳しくは、操作部２０として用いられる情報処理端末は、従来、ＭＦＰ１には、操作部として専用の操作パネルが固定され設置されていた。これに対して、第１の実施の形態のＭＦＰ１の操作部２０は、ＭＦＰ１の本体１０に装着及び取り外し可能となっている。すなわち、操作部２０として用いられる情報処理端末は、例えばＭＦＰ１の操作パネルが配置される位置等の所定の位置から取り外し可能（分離可能）ながらも、ＭＦＰ１と一体的に設置することも可能となっている。このため、操作部２０として用いられる情報処理端末及びＭＦＰ１は、一台の装置として把握されるものである。操作部２０として用いられる情報処理端末は、ＭＦＰ１から取り外されると、ＭＦＰ１との間で、例えばＢｌｕｅｔｏｏｔｈ（登録商標）又は赤外線通信等の無線通信を行い、ＭＦＰ１の操作部として機能する。 
【００１３】
本体１０は、操作部２０で受け付けた入力に応じた動作を行う。また、本体１０は、クライアントＰＣ（パーソナルコンピュータ）等の外部装置とも通信可能であり、外部装置から受信した指示に応じた動作も行う。 
【００１４】
（本体のハードウェア構成）
次に、本体１０のハードウェア構成について説明する。図１に示すように、本体１０は、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、ＨＤＤ（ハードディスクドライブ）１４とを備える。また、本体１０は、通信Ｉ／Ｆ（インタフェース）１５と、接続Ｉ／Ｆ１６と、エンジン１７と、ファクシミリモデム（ＦＡＸモデム）１９とを備える。各部１１〜１７及びＦＡＸモデム１９は、システムバス１８を介して相互に接続されている。 
【００１５】
ＣＰＵ１１は、本体１０の動作を統括的に制御する。ＣＰＵ１１は、ＲＡＭ１３をワークエリア（作業領域）としてＲＯＭ１２又はＨＤＤ１４等に格納されたプログラムを実行することで、本体１０全体の動作を制御し、上述したコピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能などの各種の画像形成機能を実現する。なお、この本体１０のＨＤＤ１４は、フラッシュメモリを用いても、同様に実現可能である。 
【００１６】
通信Ｉ／Ｆ１５は、ネットワーク４０上のクライアントＰＣ（パーソナルコンピュータ）、Ｗｅｂサーバ装置又は認証サーバ装置等の外部装置と通信するためのインタフェースである。接続Ｉ／Ｆ１６は、通信路３０を介して操作部２０と通信するためのインタフェースである。なお、図１及び以下に説明する図２において、通信路３０は、有線的に図示しているが、上述のように操作部２０は、ＭＦＰ１の本体１０に対して装着及び取り外しが可能となっている。このため、操作部２０をＭＦＰ１に装着しているときには、通信路３０は有線通信路として機能し、操作部２０をＭＦＰ１から取り外したときには、通信路３０は無線通信路として機能するものと理解されたい。 
【００１７】
エンジン１７は、コピー機能、スキャナ機能、ファクシミリ機能及びプリンタ機能等を実現させるための、汎用的な情報処理及び通信以外の処理を行うハードウェアである。エンジン１７は、例えば原稿の画像をスキャンして読み取るスキャナ、用紙等のシート材への印刷を行うプロッタ、ファクシミリ通信を行うファクシミリ通信部等を備えている。さらに、印刷済みシート材を仕分けるフィニッシャ及び原稿を自動給送するＡＤＦ（自動原稿給送装置）のような特定のオプションを設けてもよい。 
【００１８】
（操作部のハードウェア構成）
次に、操作部２０のハードウェア構成について説明する。図１に示すように、操作部２０は、ＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、フラッシュメモリ２４と、通信Ｉ／Ｆ２５と、接続Ｉ／Ｆ２６と、操作パネル２７と、ＩＣカードＩ/Ｆ２９とを備え、これらがシステムバス２８を介して相互に接続されている。なお、この操作部２０のフラッシュメモリ２４は、ＨＤＤを用いても同様に実現可能である。 
【００１９】
ＣＰＵ２１は、操作部２０の動作を統括的に制御する。ＣＰＵ２１は、ＲＡＭ２３をワークエリア（作業領域）としてＲＯＭ２２等に格納されたプログラムを実行することで操作部２０全体の動作を制御する。また、ＣＰＵ２１は、ＲＯＭ２２等に格納されたユーザ認証プログラムを実行することでユーザ認証処理を行う。通信Ｉ／Ｆ２５は、例えばネットワーク４０上のサーバ装置６０と通信するためのインタフェースである。接続Ｉ／Ｆ２６は、通信路３０を介して本体１０と通信するためのインタフェースである。 
【００２０】
ＩＣカードＩ／Ｆ２９は、例えばＵＳＢケーブル等を介してカードリーダ６に接続されている。カードリーダ６は、ＭＦＰ１に対するログイン操作のときに、ユーザにより近接操作（非接触操作）されたＩＣカード５との間で非接触無線通信を行い、ＩＣカード５に記憶されているカードＩＤ、ユーザ情報等の認証情報の読み取りを行う。なお、非接触操作のほか、接触操作でＩＣカード５から認証情報を読み取ってもよい。 
【００２１】
また、一例として、カードリーダ６と操作部２０は、物理的に異なる装置同士が、ＵＳＢケーブル等を介して接続されていることとしたが、操作部２０にカードリーダ６が内蔵されていてもよい。すなわち、操作部２０とカードリーダ６が一体的に形成されていてもよい（一つの装置として形成されていてもよい）。 
【００２２】
また、ＩＣカード又はＩＤカード等の呼称の違いがあっても、記憶媒体であれば、どのような記憶媒体でも本発明を適用可能であり、ＩＣカード又はＩＤカード等のみに本発明の適用範囲が限定されることはない。また、カードリーダ装置も同様であり、このような記憶媒体からユーザ情報を読み取れる装置であればいずれも用いることができる。 
【００２３】
操作パネル２７は、タッチセンサを備えた液晶表示装置（ＬＣＤ）で構成される。操作パネル２７は、ユーザの操作に応じた各種の入力を受け付けると共に、例えば受け付けた入力に応じた情報、ＭＦＰ１の動作状況を示す情報、設定状態を示す情報等の各種の情報を表示する。なお、操作パネル２７は、タッチセンサを備えた有機ＥＬ表示装置で構成してもよい。さらに、これに加えて又はこれに代えて、ハードウェアキー等の操作部又は発光部等の表示部を設けてもよい。 
【００２４】
（ＭＦＰのソフトウェア構成）
図２は、ＭＦＰ１のソフトウェア構成の一例を示す図である。この図２に示すように、本体１０は、アプリ層１０１と、サービス層１０２と、ＯＳ層１０３とを有する。アプリ層１０１，サービス層１０２及びＯＳ層１０３の実体は、ＲＯＭ１２又はＨＤＤ１４等に格納されている各種ソフトウェアである。ＣＰＵ１１が、これらのソフトウェアを実行することにより、各種の機能が提供される。 
【００２５】
アプリ層１０１のソフトウェアは、ハードウェア資源を動作させて所定の機能を提供するためのアプリケーションソフトウェア（以下の説明では、単に「アプリ」と称する場合がある）である。例えばアプリとしては、コピー機能を提供するためのコピーアプリ、スキャナ機能を提供するためのスキャナアプリ、ファクシミリ機能を提供するためのＦＡＸアプリ、印刷機能を提供するためのプリンタアプリ等が挙げられる。 
【００２６】
サービス層１０２のソフトウェアは、アプリ層１０１とＯＳ層１０３との間に介在し、アプリに対し、本体１０が備えるハードウェア資源を利用するためのインタフェースを提供するソフトウェアである。具体的には、ハードウェア資源に対する動作要求の受け付け、動作要求の調停を行う機能を提供するためのソフトウェアである。サービス層１０２が受け付ける動作要求は、例えばスキャナによる読み取り又はプロッタによる印刷等の要求である。 
【００２７】
なお、サービス層１０２によるインタフェースの機能は、本体１０のアプリ層１０１だけではなく、操作部２０のアプリ層２０１に対しても提供される。すなわち、操作部２０のアプリ層２０１（アプリ）も、サービス層１０２のインタフェース機能を介して、本体１０のハードウェア資源（例えばエンジン１７）を利用した機能を実現することができる。 
【００２８】
ＯＳ層１０３のソフトウェアは、本体１０が備えるハードウェアを制御する基本機能を提供するための基本ソフトウェア（オペレーティングシステム）である。サービス層１０２のソフトウェアは、各種アプリからのハードウェア資源の利用要求を、ＯＳ層１０３が解釈可能なコマンドに変換してＯＳ層１０３に渡す。そして、ＯＳ層１０３のソフトウェアによりコマンドが実行されることで、ハードウェア資源は、アプリの要求に従った動作を行う。 
【００２９】
同様に、操作部２０は、アプリ層２０１と、ＯＳ層２０３とを有する。操作部２０が備えるアプリ層２０１及びＯＳ層２０３も、階層構造については本体１０側と同様である。ただし、アプリ層２０１のアプリにより提供される機能が受け付け可能な動作要求の種類は、本体１０側とは異なる。アプリ層２０１のアプリは、操作部２０が備えるハードウェア資源を動作させて所定の機能を提供するためのソフトウェアである。例えば、本体１０が備える機能（コピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能）に関する操作及び表示を行うためのＵＩ（ユーザインタフェース）の機能を提供するためのソフトウェアである。 
【００３０】
また、この第１の実施の形態のＭＦＰ１の場合、機能の独立性を保つために、本体１０側のＯＳ層１０３のソフトウェアと操作部２０側のＯＳ層２０３のソフトウェアが互いに異なる。一例ではあるが、本体１０側のＯＳ層１０３のソフトウェアとしてＬｉｎｕｘ（登録商標）が設けられ、操作部２０側のＯＳ層２０３のソフトウェアとしてＡｎｄｒｏｉｄ（登録商標）が設けられている。これにより、本体１０と操作部２０は、別々のオペレーティングシステムで互いに独立して動作するようになっている。 
【００３１】
本体１０及び操作部２０を、別々のオペレーティングシステムで動作させることで、本体１０と操作部２０との間の通信は、共通の装置内のプロセス間通信ではなく、異なる装置間の通信として行われる。操作部２０が受け付けた入力（ユーザからの指示内容）を本体１０へ伝達する動作（コマンド通信）及び本体１０が操作部２０へイベントを通知する動作等がこれに該当する。ここでは、操作部２０が本体１０へコマンド通信を行うことにより、本体１０の機能を使用することができる。また、本体１０から操作部２０に通知するイベントには、本体１０における動作の実行状況、本体１０側で設定された内容等が挙げられる。 
【００３２】
また、第１の実施の形態の例では、操作部２０に対する電力供給は、本体１０から通信路３０を経由して行われているので、操作部２０の電源制御を、本体１０の電源制御とは別に（独立して）行うことができる。
【００３３】
なお、この例では、本体１０と操作部２０は、通信路３０を介して電気的かつ物理的に接続されているが、上述のように本体１０から操作部２０を取り外すこともできる。この場合、本体１０及び操作部２０に、例えば赤外線通信部、ＲＦ通信部、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信部等の近距離無線通信部を設ける。ＲＦは、「Radio  Frequency」の略記である。または、本体１０及び操作部２０に、Ｗｉ−Ｆｉ（登録商標）等の無線ＬＡＮ通信機能を設け、図２に示すように無線ＬＡＮアクセスポイント（無線ＬＡＮＡＰ）４１及びネットワーク４０を介して相互に通信可能としてもよい。ＬＡＮは、「Local  Area  Network」の略記である。本体１０から操作部２０を取り外し可能である場合、操作部２０は、通信路３０を介して本体１０から供給された電力を二次電池に蓄電しておき、本体１０から取り外されたときに、二次電池に蓄電された電力で動作して本体１０と通信を行う。 
【００３４】
（ＭＦＰに設けられているソフトウェア）
図３に、ＭＦＰ１に設けられているソフトウェアの一例を示す。上述のように、本体１０は、アプリ層１０１、サービス層１０２及びＯＳ層１０３に分かれている。このうち、アプリ層１０１には、図１に示すエンジン１７を制御して、原稿の読み取り制御又は印刷制御等を行うアプリが記憶されている。具体的には、アプリ層１０１には、コピーアプリ１１１、スキャナアプリ１１２、プリンタアプリ１１３及びＦＡＸアプリ１１４が記憶されている。コピーアプリ１１１〜ＦＡＸアプリ１１４は、標準搭載のジョブ実行機能アプリであり、第１の要求アプリケーションの一例である。また、コピーアプリ１１１〜ＦＡＸアプリ１１４を実行するＣＰＵ１１は、制御アプリケーションの一例である。 
【００３５】
また、サービス層１０２には、省エネルギー管理プログラム（省エネ管理プログラム）１２１、メモリ管理プログラム１２２及びエンジン制御プログラム１２３等の、各アプリが共通で行う処理に対応する各種プログラムが記憶されている。サービス層１０２は、省エネルギー管理及びメモリ管理等、各アプリが共通で行う処理を行っている。
【００３６】
これに対して、操作部２０は、アプリ層２０１及びＯＳ層２０３に分かれている。本体アプリと操作部アプリの違いは、本体のアプリではエンジン制御等を行うことで、例えば読み取り及び印刷等の画像形成装置の機能を制御するのに対し、操作部アプリではＵＩ制御を行っている。つまり、操作部アプリで画面表示を行うことでユーザの操作を受け付け、そのユーザ操作に基づいたエンジン制御を本体アプリが行っている。
【００３７】
操作部アプリには、同じ機能を実現する複数のアプリが存在することもある。これは機能が同じでもＵＩのデザイン（見た目）又は搭載した機能を変えている場合である。図３の例では、一例として操作部２０に第１のコピー受付アプリ１３１と第２のコピー受付アプリ１３２が存在する。第２のコピー受付アプリ１３２は、第１のコピー受付アプリ１３１と比べて機能を少なくし、ＵＩの見た目を簡単にしたアプリである。
【００３８】
この第１のコピー受付アプリ１３１と第２のコピー受付アプリ１３２の関係と同じように、例えばスキャナアプリ等に対して開発ベンダーが開発するベンダーアプリ１３７が存在する。また、ベンダーアプリ１３７の開発を簡単にするために、操作部２０の第１のコピー受付アプリ１３１〜ＦＡＸ受付アプリ１３５と同等の機能をベンダー等に提供する機能提供アプリ１３６が設けられている。
【００３９】
すなわち、操作部２０のアプリ層２０１には、ユーザインタフェースを介してユーザ操作を受け付けるアプリが記憶されている。具体的には、アプリ層２０１には、ホームアプリ１３０、第１のコピー受付アプリ１３１、第２のコピー受付アプリ１３２、スキャナ受付アプリ１３３、プリンタ受付アプリ１３４、ＦＡＸ受付アプリ１３５、機能提供アプリ１３６及びベンダーアプリ１３７が記憶されている。機能提供アプリ１３６は、画像処理プログラムの一例である。また、機能提供アプリ１３６は、一例として操作部２０のＲＯＭ２２、ＲＡＭ２３又はフラッシュメモリ２４等の記憶部に記憶される。ベンダーアプリ１３７は、第２の要求アプリケーションの一例である。 
【００４０】
ホームアプリ１３０は、所望の操作を指定するためのアイコン等が並べられたメイン画面（初期画面）を表示する。そして、ユーザによりアイコン操作を介して指定されたアプリを起動する。第１のコピー受付アプリ１３１は、操作ボタン及び設定ボタンを介して、ユーザのコピー操作を受け付けるアプリである。第２のコピー受付アプリ１３２は、主に使用頻度の高い操作ボタン及び設定ボタン等を表示することで、第１のコピー受付アプリ１３１よりも、表示する操作ボタン及び設定ボタンの数を減らし、視認性及び操作性の向上を図ったアプリである。スキャナ受付アプリ１３３は、操作ボタン及び設定ボタン等を介して、ユーザのスキャナ操作を受け付けるアプリである。プリンタ受付アプリ１３４は、操作ボタン及び設定ボタン等を介して、ユーザのスキャナ操作を受け付けるアプリである。ＦＡＸ受付アプリ１３５は、操作ボタン及び設定ボタン等を介して、ユーザのファクシミリ送受信操作を受け付けるアプリである。 
【００４１】
機能提供アプリ１３６は、上述のようにベンダーアプリ１３７の開発を容易化するために、操作部２０の第１のコピー受付アプリ１３１〜ＦＡＸ受付アプリ１３５と同等の機能をベンダー等に提供する。
【００４２】
すなわち、機能提供アプリ１３６が例えばスキャナアプリ１１２に対応するアプリの場合、通常の操作メニュー及び設定メニュー等のユーザインタフェースを表示する機能をベンダーに提供する。また、機能提供アプリ１３６が例えばプリンタアプリ１１３に対応するアプリの場合、通常の操作メニュー及び設定メニュー等のユーザインタフェースを表示する機能をベンダーに提供する。 
【００４３】
このようにＭＦＰ１の操作部２０には、第１のコピー受付アプリ１３１〜ＦＡＸ受付アプリ１３５と同等の機能をベンダー等に提供するための機能提供アプリ１３６が設けられている。ベンダーアプリ１３７の開発ベンダーに対しては、機能提供アプリ１３６の機能を実現するＡＰＩ（Application  Programming  Interface）が公開されている。 
【００４４】
（機能提供アプリの機能）
図４は、機能提供アプリ１３６の機能ブロック図である。操作部２０のＣＰＵ２１は、例えばＲＯＭ２２、ＲＡＭ２３又はフラッシュメモリ２４等の記憶部に記憶されている機能提供アプリ１３６を実行することで、図４に示す受信部１５１、記憶制御部１５２、切り替え部１５３、送信部１５４、設定処理部１５５、及び、表示制御部１５６を実現する。 
【００４５】
受信部１５１は、ユーザが操作パネル２７を介して行った入力操作に対応するコマンドを受信し、また、本体１０に対して実行要求することで得られた実行結果を受信する。記憶制御部１５２は、画面表示要求のあったアプリに対応する情報を、例えばＲＯＭ２２、ＲＡＭ２３又はフラッシュメモリ２４等の記憶部から読み出し又は保存等を行う。切り替え部１５３は、ユーザによる操作パネル２７の操作に応じて、操作パネル２７に表示する画面の切り替えを行う。送信部１５４は、本体１０のコピーアプリ１１１又はスキャナアプリ１１２等に所望の動作の実行要求等を送信する。設定処理部１５５は、設定画面を介してユーザにより設定された設定内容をベンダーアプリ１３７に通知する等の設定処理を行う。表示制御部１５６は、操作パネル２７に対してメイン画面又は設定画面等の表示制御を行う。 
【００４６】
なお、この例では、受信部１５１〜表示制御部１５６をソフトウェアで実現することとしたが、受信部１５１〜表示制御部１５６のうち、一部又は全部を、ＩＣ（Integrated  Circuit）等のハードウェアで実現してもよい。 
【００４７】
また、機能提供アプリ１３６は、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）、ブルーレイディスク（登録商標）、半導体メモリ等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、機能提供アプリ１３６は、インターネット等のネットワーク経由でインストールするかたちで提供してもよい。また、機能提供アプリ１３６は、機器内のＲＯＭ等に予め組み込んで提供してもよい。 
【００４８】
（機能提供アプリの動作：ベンダーアプリのメイン画面にスキャン設定ボタン及びスキャン実行ボタンを分けて表示する場合）
次に、機能提供アプリ１３６の動作を説明する。図５は、ベンダーアプリ１３７でスキャンを実行する場合における、機能提供アプリ１３６の動作の流れを示すシーケンス図である。また、図６は、操作部２０の操作パネル２７に、初期画面として表示されているホーム画面の一例を示している。ホーム画面には、所望のアプリを起動するための一つ又は複数のアイコンが表示されている。ユーザは、ベンダーアプリ１３７の起動を指示するためのアイコンを操作する。ベンダーアプリ１３７の起動を指示する指示信号は、ステップＳ１において、ホームアプリ１３０に送信される。 
【００４９】
ホームアプリ１３０は、ステップＳ２において、起動を指示する指示信号をベンダーアプリ１３７に送信する。これにより、ベンダーアプリ１３７は、ステップＳ３において、例えば図７に示すメイン画面を操作パネル２７に表示する。この図７に示すメイン画面の例は、ベンダーアプリ１３７がスキャナ制御を行うアプリである場合におけるメイン画面の例である。図７に例示するように、ベンダーアプリ１３７は、スキャン設定を指示する際に操作するスキャン設定ボタン１６１、及び、スキャンの実行を指示する際に操作するスキャン実行ボタン１６２を、メイン画面に表示する。 
【００５０】
スキャン設定を行う場合、ユーザは、メイン画面に表示されているスキャン設定ボタン１６１を操作する。これにより、操作パネル２７からベンダーアプリ１３７に対して、スキャン設定ボタン１６１が操作されたことを示す信号が供給される（ステップＳ４）。ベンダーアプリ１３７は、スキャン設定ボタン１６１が操作されたことを示す信号を受信すると、ステップＳ５において、機能提供アプリ１３６に対して、スキャン設定ＡＰＩの呼び出しを行う。機能提供アプリ１３６の設定処理部１５５は、ステップＳ６において、スキャン設定を行うための設定画面を生成する。機能提供アプリ１３６の表示制御部１５６は、生成された設定画面を、ステップＳ７において操作パネル２７に表示する。
【００５１】
図８は、スキャン設定を行うための設定画面の一例を示す図である。図８に例示するように、設定処理部１５５は、スキャンに関する各種設定項目に対応するアイコン１６３、及び、設定が完了した際に操作する設定完了ボタン１６４を含めた設定画面を生成する。
【００５２】
次に、このような設定画面に表示されている各種設定項目に対応するアイコン１６３のうち、所望の設定項目に対応するアイコン１６３がユーザにより操作された場合、ステップＳ８に示すように、ユーザに操作された設定項目を示す信号が、操作パネル２７から機能提供アプリ１３６に供給される。機能提供アプリ１３６は、受信部１５１により、ユーザに操作された設定項目を示す信号を受信する。また、機能提供アプリ１３６は、ステップＳ９において、切り替え部１５３により、ユーザに操作された設定項目の設定画面に、画面の切り替えを行う。そして、機能提供アプリ１３６は、ステップＳ１０において、表示制御部１５６により、切り替えた設定画面を操作パネル２７に表示する。このように、スキャナ設定トップ画面及びスキャナ設定トップ画面から遷移する詳細な設定画面等は、全て機能提供アプリ１３６で実現される。 
【００５３】
図９は、ユーザに操作された設定項目の設定画面の一例を示す図である。ユーザは、図９に例示する設定画面を介して、スキャンに関する詳細な設定を行う。そして、設定が完了した際に、設定完了ボタン１６４を操作する。操作部２０のＣＰＵ２１は、ユーザの設定操作で設定された設定内容を示す設定内容情報を、例えばＲＡＭ２３又はフラッシュメモリ２４等の記憶部に記憶しておく。この記憶内容情報は、ユーザにより設定完了ボタン１６４が操作された際に記憶部から読み出され、設定完了ボタン１６４が操作されたことを示す信号と共に操作パネル２７から機能提供アプリ１３６に送信される。 
【００５４】
機能提供アプリ１３６の受信部１５１は、ステップＳ１１において、設定完了ボタン１６４が操作されたことを示す信号と共に、ユーザにより設定された設定内容を示す設定内容情報を受信する。機能提供アプリ１３６の送信部１５４は、受信した設定内容情報を、ステップＳ１２において、ベンダーアプリ１３７に送信する。ベンダーアプリ１３７は、受信した設定内容情報で、上述のＲＡＭ２３又はフラッシュメモリ２４等の記憶部に記憶されている設定内容情報を更新する。また、ベンダーアプリ１３７は、設定内容情報を記憶すると、図７に例示したメイン画面を操作パネル２７に表示する（ステップＳ１３）。
【００５５】
一方、スキャンを実行する場合、ユーザは、図７に例示するメイン画面に表示されているスキャン実行ボタン１６２を操作する。これにより、操作パネル２７からベンダーアプリ１３７に対して、スキャン実行ボタン１６２が操作されたことを示す信号が供給される（ステップＳ１４）。ベンダーアプリ１３７は、スキャン実行ボタン１６２が操作されたことを示す信号を受信すると、ステップＳ１５において、機能提供アプリ１３６に対して、スキャン実行ＡＰＩの呼び出しを行う。また、ベンダーアプリ１３７は、上述の設定内容情報を記憶部から読み出して、機能提供アプリ１３６に送信する。機能提供アプリ１３６の送信部１５４は、ステップＳ１６において、設定内容情報及びスキャン実行要求を、本体１０のスキャナアプリ１１２に送信する。本体１０のスキャナアプリ１１２は、設定内容情報に基づいて、エンジン１７のスキャン機能を制御する。これにより、実体的なスキャン動作が実行される。 
【００５６】
なお、ユーザにより操作パネル２７を介して入力された設定内容情報を、機能提供アプリ１３６の記憶制御部１５２が、上述の記憶部に記憶し、ベンダーアプリ１３７からスキャン実行ＡＰＩの呼び出しが行われた際に、機能提供アプリ１３６の記憶制御部１５２が、記憶部から設定内容情報を読み出して、スキャナアプリに送信してもよい。 
【００５７】
機能提供アプリ１３６の表示制御部１５６は、本体１０のスキャナアプリ１１２により実行されるスキャン動作に対応するスキャン実行中の画面を生成し、ステップＳ１７において、操作パネル２７に表示する。図１０は、スキャン実行中の画面の一例を示す図である。一例ではあるが、表示制御部１５６は、「スキャン実行中です」等のメッセージ、スキャン完了枚数及びメモリ残量等を、スキャン実行中の画面に含めて表示する。 
【００５８】
次に、本体１０のスキャナアプリ１１２は、スキャンを完了すると、一連のスキャンにより得られた複数の画像情報に対して一つのジョブ識別番号（ジョブＩＤ）を発行し、又は、１回のスキャンにより得られた一枚の画像情報毎に一つのジョブＩＤを発行する。また、スキャナアプリ１１２は、発行したジョブＩＤ及び画像情報を関連付けて、本体１０のＨＤＤ１４又はＲＡＭ１３等の記憶部に記憶する。そして、スキャナアプリ１１２は、スキャン実行要求により行ったスキャンで発行したジョブＩＤを、ステップＳ１８において、スキャン実行要求に対応する応答として機能提供アプリ１３６に送信する。 
【００５９】
なお、この例では、スキャン実行要求に対応する応答としてジョブＩＤを、スキャナアプリ１１２から機能提供アプリ１３６に送信することとした。しかし、スキャン実行要求に対応する応答として、スキャンにより得られた画像情報を、ステップＳ１８において、スキャナアプリ１１２から機能提供アプリ１３６に送信してもよい。 
【００６０】
ジョブＩＤを受信した機能提供アプリ１３６の送信部１５４は、ステップＳ１９において、ベンダーアプリ１３７に対してスキャン結果としてジョブＩＤを通知する。ベンダーアプリ１３７は、通知されたジョブＩＤを、例えばフラッシュメモリ２４又はＲＡＭ２３等の記憶部に記憶処理する。ベンダーアプリ１３７は、この記憶処理後に、ステップＳ２０において、図７に例示したメイン画面を操作パネル２７に表示制御する。そして、機能提供アプリ１３６は、ベンダーアプリ１３７のメイン画面で操作されたボタン（スキャン設定ボタン１６１又はスキャン実行ボタン１６２）に応じて、上述のスキャン設定処理又はスキャン実行処理を行う。 
【００６１】
（機能提供アプリの動作：ベンダーアプリのメイン画面にスキャン設定ボタン及びスキャン実行ボタンを纏めて表示する場合）
上述の説明は、ベンダーアプリのメイン画面にスキャン設定ボタン１６１及びスキャン実行ボタン１６２を分けて表示する場合における機能提供アプリ１３６の動作の説明であった。これに対して、ベンダーアプリのメイン画面には、以下に説明するように、スキャン設定ボタン１６１及びスキャン実行ボタン１６２を纏めて表示してもよい。この場合における機能提供アプリ１３６の動作の流れは、図１１のシーケンス図に示すようになっている。 
【００６２】
すなわち、ユーザにより、ベンダーアプリ１３７の起動を指示するためのアイコンが操作されると、操作パネル２７からホームアプリ１３０に対して、ベンダーアプリ１３７の起動を指示する指示信号が送信される（ステップＳ３１）。ホームアプリ１３０は、ステップＳ３２において、起動を指示する指示信号をベンダーアプリ１３７に送信する。これにより、ベンダーアプリ１３７は、ステップＳ３３において、例えば図１２に示すベンダーアプリ１３７のメイン画面を操作パネル２７に表示する。この図１２に示すメイン画面の例は、上述と同様に、ベンダーアプリ１３７がスキャナ制御を行うアプリである場合におけるメイン画面の例である。図１２に例示するように、ベンダーアプリ１３７は、スキャン設定を指示する際に操作するスキャン設定ボタン及びスキャンの実行を指示する際に操作するスキャン実行ボタンを一つに纏めたスキャン設定実行ボタン１７０をメイン画面に表示する。 
【００６３】
スキャン設定又はスキャン実行を行う場合、ユーザは、メイン画面に表示されているスキャン設定実行ボタン１７０を操作する。これにより、操作パネル２７からベンダーアプリ１３７に対して、スキャン設定実行ボタン１７０が操作されたことを示す信号が供給される（ステップＳ３４）。ベンダーアプリ１３７は、スキャン設定実行ボタン１７０が操作されたことを示す信号を受信すると、ステップＳ３５において、機能提供アプリ１３６に対して、スキャン設定及びスキャン実行を指定するためのトップ画面の表示要求となる、設定実行ＡＰＩの呼び出しを行う。 
【００６４】
この設定実行ＡＰＩの呼び出しが行われると、機能提供アプリ１３６の表示制御部１５６は、例えば図１３に示すようにスキャンに関する各種設定項目に対応するアイコン１６３、及び、スキャンの実行を指定する際に操作するスキャン実行ボタン１７１を含めたトップ画面を生成する（ステップＳ３６）。そして、機能提供アプリ１３６の表示制御部１５６は、生成したトップ画面を、ステップＳ３７において、操作パネル２７に表示制御する。一例ではあるが、機能提供アプリ１３６の表示制御部１５６は、図１３に例示するように、スキャンに関する各種設定項目に対応するアイコン１６３、及び、スキャン実行を指示するためのスキャン実行ボタン１７１を含めたトップ画面を生成する。 
【００６５】
次に、このようなトップ画面に表示されている各種設定項目に対応するアイコン１６３のうち、所望の設定項目に対応するアイコン１６３がユーザにより操作された場合、ステップＳ３８に示すように、ユーザに操作された設定項目を示す信号が、操作パネル２７から機能提供アプリ１３６に供給される。機能提供アプリ１３６の切り替え部１５３は、ステップＳ４０において、ユーザに操作された設定項目に対応する詳細な設定画面を生成する。そして、機能提供アプリ１３６の表示制御部１５６が、ステップＳ４１において、詳細な設定画面を操作パネル２７に表示する。これにより、操作パネル２７の表示画面が、上述のトップ画面からユーザに操作された設定項目に対応する詳細な設定画面に切り替わる。図１４は、ユーザに操作された設定項目に対応する詳細な設定画面の一例である。この図１４の例の場合、機能提供アプリ１３６の切り替え部１５３は、詳細な設定項目のアイコンと共に、スキャンを実行する際に操作するスキャン実行ボタン１７１が表示されている。 
【００６６】
ユーザは、所望の設定項目に対応する詳細な設定画面に基づいて、詳細な設定操作を行うと（ステップＳ４２）、設定内容情報がベンダーアプリ１３７に通知される（ステップＳ４３）。ベンダーアプリ１３７は、設定内容情報が通知されると、上述のＲＡＭ２３又はフラッシュメモリ２４等の記憶部に記憶されている設定内容情報を更新する。また、ベンダーアプリ１３７は、ステップＳ４４において、設定内容情報を記憶すると、図１３に例示したトップ画面を操作パネル２７に表示する。 
【００６７】
一方、スキャンを実行する場合、ユーザは、図１３に例示したメイン画面に表示されているスキャン実行ボタン１７１、又は、図１４に示した詳細な設定画面に表示されているスキャン実行ボタン１７１を操作する。これにより、操作パネル２７からベンダーアプリ１３７に対して、スキャン実行ボタン１７１が操作されたことを示す信号が供給される（ステップＳ４５）。ベンダーアプリ１３７は、スキャン実行ボタン１６２が操作されたことを示す信号を受信すると、ステップＳ４６において、機能提供アプリ１３６に対して、スキャン実行ＡＰＩの呼び出しを行う。また、ベンダーアプリ１３７は、スキャン実行ボタン１６２が操作されたことを示す信号を受信すると、上述の設定内容情報を記憶部から読み出して、機能提供アプリ１３６に送信する。機能提供アプリ１３６の送信部１５４は、ステップＳ４７において、設定内容情報及びスキャン実行要求を、本体１０のスキャナアプリ１１２に送信する。本体１０のスキャナアプリ１１２は、設定内容情報に基づいて、エンジン１７のスキャン機能を制御する。これにより、本体１０のスキャナアプリ１１２により、実体的なスキャン動作が実行される。 
【００６８】
なお、上述と同様に、ユーザにより操作パネル２７を介して入力された設定内容情報を、機能提供アプリ１３６の記憶制御部１５２が上述の記憶部に記憶し、ベンダーアプリ１３７からスキャン実行ＡＰＩの呼び出しが行われた際に、機能提供アプリ１３６の記憶制御部１５２が、記憶部から設定内容情報を読み出して、スキャナアプリに送信してもよい。 
【００６９】
機能提供アプリ１３６の表示制御部１５６は、本体１０のスキャナアプリ１１２により実行されるスキャン動作に対応するスキャン実行中の画面を生成し（図１０参照）、ステップＳ４８において、操作パネル２７に表示する。 
【００７０】
次に、本体１０のスキャナアプリ１１２は、スキャンを完了すると、上述のようにジョブＩＤを発行し、ステップＳ４９において、スキャン実行要求に対応する応答として機能提供アプリ１３６に送信する。なお、ジョブＩＤの代わりにスキャンにより得られた画像情報を、スキャナアプリ１１２から機能提供アプリ１３６に送信してもよいことは、上述のとおりである。 
【００７１】
ジョブＩＤを受信した機能提供アプリ１３６の送信部１５４は、ステップＳ５０において、ベンダーアプリ１３７に対してスキャン結果としてジョブＩＤを通知する。ベンダーアプリ１３７は、通知されたジョブＩＤを、例えばフラッシュメモリ２４又はＲＡＭ２３等の記憶部に記憶処理する。ベンダーアプリ１３７は、この記憶処理後に、ステップＳ５１において、図１２に例示したメイン画面を操作パネル２７に表示制御する。そして、機能提供アプリ１３６の表示制御部１５６は、ベンダーアプリ１３７のメイン画面のスキャン設定実行ボタン１７０が操作された際に、図１３に例示したトップ画面を表示し、上述のスキャン設定処理又はスキャン実行処理を行う。 
【００７２】
（設定画面のカスタマイズ）
次に、ベンダーアプリ１３７は、図８又は図１３等を用いて説明した各設定項目の「有効/無効」、「表示/非表示」及び「表示順序」等を指定可能となっている。すなわち、ベンダーアプリ１３７は、例えばスキャン設定項目の場合、カラー印刷、白黒印刷、解像度、読み取りサイズ等の各設定項目の表示の有無及び表示順序等を指定可能となっている。機能提供アプリ１３６の表示制御部１５６は、ベンダーアプリ１３７からの指定に対応する表示形態で、各設定項目を表示する。 
【００７３】
以下、具体的に説明するが、まず、図５のシーケンス図のステップＳ５、ステップＳ１５及び図１１のシーケンス図のステップＳ３５及びステップＳ４６等では、説明を簡単にするために、ベンダーアプリ１３７から機能提供アプリ１３６に対して直接的に要求を行うこととした。しかし、第１の実施の形態のＭＦＰ１の場合、図１５に示すように、ベンダーアプリ１３７及び機能提供アプリ１３６の間の通信を、操作部２０のＯＳ層２０３が仲介している。 
【００７４】
機能提供アプリ１３６は、「アプリ連携要求」という要求を受け取るアプリであることをＯＳ層２０３に予め明示（登録：予めアプリを指定して登録）しておく。ＯＳ層２０３は、ベンダーアプリ１３７から受けた要求が「アプリ連携要求」であった場合、事前に明示された機能提供アプリ１３６に対して「アプリ連携要求」を通知する。なお、例えばコピー用の機能提供アプリ及びスキャナ用の機能提供アプリ等のように、事前に複数の機能提供アプリ１３６が明示されている場合、ＯＳ層２０３は、各アプリに対して「アプリ連携要求」を通知する。 
【００７５】
ベンダーアプリ１３７は、アプリ連携要求を行う際に、いくつかのパラメータを指定する。このパラメータで、「機能提供アプリ１３６に対する所望処理」及び「設定画面に対して表示する設定項目」等を指定する。以下の表１に、アプリ連携要求のパラメータの一覧を示す。 
【００７６】
【表１】
2018046551.tif 000003
【００７７】
この表１において、「Ａｃｔｉｏｎ」のパラメータは、機能提供アプリ１３６に要求する動作を設定するパラメータである。例えば、スキャン設定画面の表示を要求する場合、ベンダーアプリ１３７において、Ａｃｔｉｏｎのパラメータの値を「ｓｃａｎ＿ｓｅｔｔｉｎｇ（スキャン設定）」として機能提供アプリ１３６に要求する。また、スキャン実行を要求する場合、ベンダーアプリ１３７において、Ａｃｔｉｏｎのパラメータの値を「ｓｃａｎ＿ｊｏｂ（スキャン実行）」として機能提供アプリ１３６に要求する。 
【００７８】
表１に示す「Ｓｅｔｔｉｎｇ＿ＳｃａｎＣｏｌｏｒ（カラー設定項目）」、「Ｓｅｔｔｉｎｇ＿ＦｉｌｅＦｏｒｍａｔ（ファイル形式設定項目）」、「Ｓｅｔｔｉｎｇ＿Ｒｅｓｏｌｕｔｉｏｎ（解像度設定項目）」、「Ｓｅｔｔｉｎｇ＿ＯｒｉｇｉｎａｌＳｉｚｅ（読み取りサイズ設定項目）」、「Ｓｅｔｔｉｎｇ＿Ｄｅｎｓｉｔｙ（濃度設定項目）」及び「Ｓｅｔｔｉｎｇ＿Ｍａｇｎｉｆｉｃａｔｉｏｎ（変倍設定）」等のパラメータは、その設定項目の表示／非表示を示すパラメータである。その設定項目を表示する場合、値に「Ｖｉｓｉｂｌｅ」を設定する。また、その設定項目を非表示とする場合、値に「ｉｎＶｉｓｉｂｌｅ」を設定する。機能提供アプリ１３６の受信部１５１は、ＯＳ層２０３を介してこのようなパラメータを受信し、受信したパラメータに応じた処理を行う。 
【００７９】
また、機能提供アプリ１３６に対しては、ユーザの設定操作の「有効/無効」を指定可能となっている。一例ではあるが、図１６は、カラー設定項目に対するユーザの設定操作が「有効」に指定されている場合、及び、カラー設定項目に対するユーザの設定操作が「無効（禁止）」に指定されている場合における、カラー設定項目の表示形態を示す図である。この図１６において、まず、カラー設定項目が、「ｉｎＶｉｓｉｂｌｅ（非表示）」に設定されている場合、機能提供アプリ１３６の表示制御部１５６は、ユーザの設定操作の有効及び無効にかかわらず、スキャン設定画面に対してカラー設定項目は表示しない。
【００８０】
一方、カラー設定項目が、「Ｖｉｓｉｂｌｅ（表示）」に設定されており、ユーザによるカラー設定項目の設定操作を「有効」としている場合、機能提供アプリ１３６の表示制御部１５６は、図１６に示すようにスキャン設定画面に対して、通常の輝度及び通常の透明度でカラー設定項目を表示する。これに対して、カラー設定項目が、「Ｖｉｓｉｂｌｅ（表示）」に設定されており、ユーザによるカラー設定項目の設定操作を「無効」としている場合、機能提供アプリ１３６の表示制御部１５６は、図１６に示すようにスキャン設定画面に対して、通常の輝度よりも低い輝度及び通常よりも高い透明度（例えば半透明の透明度）でカラー設定項目を表示する（半透明表示）。通常の輝度及び通常の透明度でカラー設定項目が表示されている場合、ユーザは、カラー設定項目を任意に設定可能であることを視認できる。また、カラー設定項目が半透明表示されている場合、ユーザは、カラー設定項目は設定不可であることを視認できる。 
【００８１】
また、このようなユーザによる設定の可否（有効／無効）は、設定項目毎に設定可能であると共に、全設定項目に対して一括的に設定可能となっている。すなわち、例えばスキャン設定画面の全設定項目の表示がベンダーアプリ１３７により指定され、ユーザによる全設定項目の設定が、機能提供アプリ１３６の設定処理部１５５により「有効」と設定されている場合、機能提供アプリ１３６の表示制御部１５６は、図１７（ａ）に示すように、スキャン設定画面の全設定項目を通常の輝度及び通常の透明度で表示する。 
【００８２】
これに対して、スキャン設定画面の全設定項目の表示がベンダーアプリ１３７により指定されているが、ユーザによる全設定項目の設定が、機能提供アプリ１３６により「無効」と設定されている場合、機能提供アプリ１３６の表示制御部１５６は、図１７（ｂ）に示すように、スキャン設定画面の全設定項目を通常よりも低い輝度及び通常よりも高い透明度で表示する。なお、スキャン設定画面の全設定項目が、ベンダーアプリ１３７により「非表示」として指定されている場合、機能提供アプリ１３６の表示制御部１５６は、図１７（ｃ）に示すように、スキャン設定画面の全設定項目を非表示とする。 
【００８３】
次に、以下の表２は、スキャン設定画面（ｓｃａｎ＿ｓｅｔｔｉｎｇ）において、「Ｓｅｔｔｉｎｇ＿ＯｒｉｇｉｎａｌＳｉｚｅ（読み取りサイズ設定項目）」を非表示（ｉｎＶｉｓｉｂｌｅ）とした場合における、各設定項目のパラメータの値を示している。 
【００８４】
【表２】
2018046551.tif 000004
【００８５】
図１８（ａ）は、読み取りサイズの設定項目を表示したスキャン設定画面を示している。これに対して、表２に示すように読み取りサイズ設定項目を非表示とすると、機能提供アプリ１３６の表示制御部１５６は、図１８（ｂ）に示すようにスキャン設定画面上の読み取りサイズ設定項目を非表示とする。なお、機能提供アプリ１３６の表示制御部１５６は、非表示として設定項目の表示位置には、表示設定されている後続の設定項目を、詰めて表示する。図１８（ｂ）の例の場合、機能提供アプリ１３６の表示制御部１５６は、非表示とした読み取りサイズの設定項目の表示位置に、「濃度」の設定項目を表示する。
【００８６】
同様に、図１９は、スキャン設定画面において、全設定項目を表示した場合の表示例である。ベンダーアプリ１３７を介してカラー設定項目（白黒、文字、図表の文字が描かれたアイコンの設定項目）が「非表示」に設定された場合、機能提供アプリ１３６の表示制御部１５６は、図２０に示すように、カラー設定項目を非表示とし、代りに後続のファイル形式の設定項目をカラー設定項目の表示位置に詰めて表示する。 
【００８７】
また、機能提供アプリ１３６の表示制御部１５６は、ユーザによるカラー設定項目の設定を「無効」としている場合、図２１に示すように、表示指定されたカラー設定項目を半透明表示する。
【００８８】
次に、以下の表３は、スキャン設定画面（ｓｃａｎ＿ｓｅｔｔｉｎｇ）において、「Ｓｅｔｔｉｎｇ＿ＳｃａｎＣｏｌｏｒ（カラー設定項目）」と「Ｓｅｔｔｉｎｇ＿ＦｉｌｅＦｏｒｍａｔ（ファイル形式設定項目）」の表示位置を入れ替えた場合（変更した場合）における各設定項目の並びを示している。 
【００８９】
【表３】
2018046551.tif 000005
【００９０】
図２２（ａ）は、スキャン設定画面における各設定項目の通常の並びを示している。通常の並びの場合、機能提供アプリ１３６の表示制御部１５６は、カラー設定項目の後にファイル形式設定項目が表示する。しかし、表２に示したように、カラー設定項目とファイル形式設定項目を入れ替えた場合、機能提供アプリ１３６の表示制御部１５６は、図２２（ｂ）に示すようにファイル形式設定項目を先に表示し、続けてカラー設定項目を表示する。
【００９１】
（選択された機能の提供動作）
次に、操作部２０には、同じ機能であっても、ユーザインタフェース等が異なる複数のアプリが記憶されている場合がある。一例ではあるが、図３に示す第１のコピー受付アプリ１３１及び第２のコピー受付アプリ１３２は、同じコピーアプリである。しかし、第１のコピー受付アプリ１３１は、操作ボタン及び設定ボタンを介して、ユーザのコピー操作を受け付けるアプリである。また、第２のコピー受付アプリ１３２は、主に使用頻度の高い操作ボタン及び設定ボタン等を表示することで、第１のコピー受付アプリ１３１よりも、表示する操作ボタン及び設定ボタンの数を減らし、視認性及び操作性の向上を図ったアプリである。 
【００９２】
ベンダーアプリ１３７は、機能が削減されたアプリの使用を指定したい場合、又は、機能が豊富なアプリの使用を指定したい場合等がある。或いは、機能が削減されたアプリ及び機能が豊富なアプリのうち、使用するアプリは、どちらでも良い場合もある。操作部２０には、機能提供アプリ１３６として、同じ機能ながらも、提供するユーザインタフェース等が異なる複数の機能提供アプリ１３６が設けられている。そして、複数の機能提供アプリ１３６の中から、ベンダーアプリ１３７からの指定又は状況等に応じた機能提供アプリ１３６が起動するようになっている。 
【００９３】
以下の表４は、スキャン機能に対応する機能提供アプリ１３６として、通常のユーザインタフェースを介して受け付けた設定及びスキャンを実行する通常スキャン用の機能提供アプリ１３６及び簡単スキャン用の機能提供アプリ１３６、及び、主に使用頻度の高い操作ボタン及び設定ボタンに、表示する操作ボタン及び設定ボタンの数を減らしたユーザインタフェースを介して受け付けた設定及びスキャンを実行する簡単スキャン用の機能提供アプリ１３６が設けられている場合の「Ａｃｔｉｏｎ」のパラメータの一例を示している。 
【００９４】
【表４】
2018046551.tif 000006
【００９５】
この表４に示すように、簡単スキャン及び通常スキャンの各機能提供アプリ１３６が設けられている場合、表１を用いて説明した機能提供アプリ１３６の動作を設定するための「Ａｃｔｉｏｎ」のパラメータに、「ｅａｓｙ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ（簡単スキャン設定）」、「ｅａｓｙ＿ｓｃａｎ＿ｊｏｂ（簡単スキャン実行）」、「ｓｍａｒｔ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ（通常スキャン設定）」、「ｓｍａｒｔ＿ｓｃａｎ＿ｊｏｂ（通常スキャン実行）」の値が追加される。 
【００９６】
なお、通常コピー用の機能提供アプリ１３６及び簡単コピー用の機能提供アプリ１３６が設けられている場合、「Ａｃｔｉｏｎ」のパラメータに、「ｅａｓｙ＿ｃｏｐｙ＿ｓｅｔｔｉｎｇ（簡単コピー設定）」、「ｅａｓｙ＿ｃｏｐｙ＿ｊｏｂ（簡単コピー実行）」、「ｓｍａｒｔ＿ｃｏｐｙ＿ｓｅｔｔｉｎｇ（通常コピー設定）」、「ｓｍａｒｔ＿ｃｏｐｙ＿ｊｏｂ（通常コピー実行）」の値が追加される。 
【００９７】
表４からわかるように、ベンダーアプリ１３７は、スキャン設定時の表示画面として簡単スキャンのスキャン設定画面の表示を指示する場合、「Ａｃｔｉｏｎ」のパラメータに、「ｅａｓｙ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ（簡単スキャン設定）」の値を入力して指定する。また、スキャン設定時の表示画面として、通常スキャンのスキャン設定画面の表示を指示する場合、「ｓｍａｒｔ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ」の値を入力して指定する。 
【００９８】
操作部２０のＯＳ層２０３は、「Ａｃｔｉｏｎ」のパラメータの値が「ｅａｓｙ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ」である場合、及び、「ｓｍａｒｔ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ」である場合の、いずれの場合でも、「ｅａｓｙ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ」のパラメータを、簡単スキャン用の機能提供アプリ１３６及び通常スキャン用の機能提供アプリ１３６の両方に通知する。簡単スキャン用及び通常スキャン用の各機能提供アプリ１３６は、自分に関係の無いパラメータであれば、パラメータで指示された要求を無視する。 
【００９９】
例えば、「ｅａｓｙ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ」のパラメータは、簡単スキャン用の機能提供アプリ１３６のパラメータである。このため、通常スキャン用の機能提供アプリ１３６は、「ｅａｓｙ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ」のパラメータを受信した場合には、「ｅａｓｙ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ」のパラメータで指示される簡単スキャン設定画面の表示は行わない（パラメータによる指示を無視する）。これに対して、簡単スキャン用の機能提供アプリ１３６は、受信部１５１をかいして「ｅａｓｙ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ」のパラメータを受信した場合、表示制御部１５６が、このパラメータで指定された簡単スキャン設定画面の表示を行う。 
【０１００】
また、「Ａｃｔｉｏｎ」のパラメータに、「ｅａｓｙ（簡単）」又は「ｓｍａｒｔ（通常）」を、明示的に指定することなく、値を「ｓｃａｎ＿ｓｅｔｔｉｎｇ」としてスキャン設定の指示を行うことも可能である。上述のように、簡単スキャン用の機能提供アプリ１３６及び通常スキャン用の機能提供アプリ１３６の両方に、「ｓｃａｎ＿ｓｅｔｔｉｎｇ」のパラメータが送信される。 
【０１０１】
しかし、「ｅａｓｙ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ」又は「ｓｍａｒｔ＿ｓｃａｎ＿ｓｅｔｔｉｎｇ」のうち、いずれかであるかは明示されていない。一例ではあるが、この場合、通常スキャン用の機能提供アプリ１３６が起動するようになっている。これは、通常スキャン用の機能提供アプリ１３６の方が、簡単スキャン用の機能提供アプリ１３６よりも、多くの操作ボタン、設定ボタン及び機能等を提供できるからである。なお、通常スキャン用の機能提供アプリ１３６がインストールされていない場合は、簡単スキャン用の機能提供アプリ１３６が起動する。各Ａｃｔｉｏｎに対するそれぞれのアプリの振る舞いを表５に記載する。このような簡単スキャン用の機能提供アプリ１３６及び通常スキャン用の機能提供アプリ１３６の振る舞いを以下の表５に示す。 
【０１０２】
【表５】
2018046551.tif 000007
【０１０３】
（複数のベンダーアプリへの対応動作）
次に、例えば図２３に示すベンダーアプリ１３７ａ〜１３７ｃのように、操作部２０に対して複数のベンダーアプリ１３７が記憶される場合がある。この場合、図４に示した機能提供アプリ１３６の記憶制御部１５２は、ベンダーアプリ１３７毎の要求内容、設定値及び状況等の「アプリデータ」を、ＲＡＭ２３又はフラッシュメモリ２４等の記憶部に記憶制御する。また、記憶制御部１５２は、ベンダーアプリ１３７からの要求を受け付けると、要求元となるベンダーアプリの情報を上述の記憶部から読み出す。表示制御部１５６は、記憶部から読み出された要求元となるベンダーアプリの情報に応じた表示制御及びジョブの実行制御を行う。また、切り替え部１５３は、要求を受け付けた際に、他のジョブの実行状態に応じて、表示内容の切り替え制御を行う。 
【０１０４】
図２４は、機能提供アプリ１３６の記憶制御部１５２により、ＲＡＭ２３又はフラッシュメモリ２４等の記憶部（状態記憶部の一例）に記憶される「アプリデータ」を示す図である。この図２４に示すように、記憶制御部１５２は、各ベンダーアプリ１３７のアプリ名、表示画面の状態、ジョブ状態及び設定値を、それぞれ関連付けて上述の記憶部に記憶する。 
【０１０５】
具体的には、図２４の例の場合、ベンダーアプリ１３７ａ（アプリＡ）に対しては、表示画面の状態として、現在、スキャン等の実行中画面（図１０参照）が表示されていることを示す情報、設定状態として、スキャン設定等が完了していることを示す情報、ジョブ状態として、スキャン等のジョブが実行中であることを示す情報、及び、「原稿サイズ：Ａ４タテ、解像度：２００ｄｐｉ」等の、例えばスキャンの設定値が、それぞれ関連付けされている。同様に、ベンダーアプリ１３７ｂ（アプリＢ）に対しては、表示画面の状態として、現在、スキャン等の設定画面（図８、図９参照）が表示されていることを示す情報、設定状態として、スキャン設定等が設定中であることを示す情報、ジョブ状態として、スキャン等のジョブが未実行であることを示す情報、及び、「原稿サイズ：Ｂ４横、解像度：１００ｄｐｉ」等の、例えばスキャンの設定値が、それぞれ関連付けされている。
【０１０６】
同様に、ベンダーアプリ１３７ｃ（アプリＣ）に対しては、表示画面の状態として、現在、画面表示がされていないことを示す情報、設定状態として、スキャン設定等は完了していることを示す情報、ジョブ状態として、スキャン等のジョブが終了していることを示す情報、及び、「原稿サイズ：Ａ３横、解像度：６００ｄｐｉ」等の、例えばスキャンの設定値が、それぞれ関連付けされている。機能提供アプリ１３６は、このような各ベンダーアプリ１３７の状態等に応じた振る舞いをする。 
【０１０７】
（複数のベンダーアプリが記憶されている場合の設定要求時の動作）
図２５は、例えばベンダーアプリ１３７ａ〜１３７ｃ（アプリＡ〜アプリＣ）が操作部２０に記憶されている場合において、アプリＡからの設定要求があった際に、機能提供アプリ１３６が、各アプリＡ〜アプリＣの設定状態及びジョブの実行状態等に応じて、アプリＡの要求に対応する設定画面を表示する流れを示すシーケンス図である。 
【０１０８】
まず、ユーザにより操作パネル２７を介して、アプリＡの設定画面の表示を指示する操作が行われると（ステップＳ６１）、アプリＡから機能提供アプリ１３６に対して、設定画面の表示要求が送信される。機能提供アプリ１３６は、この表示要求を受信部１５１で受信し（ステップＳ６２）、記憶制御部１５２に送信する（ステップＳ６３）。記憶制御部１５２は、ＲＡＭ２３又はフラッシュメモリ２４等の記憶部に記憶されている「アプリデータ」から、アプリＡに対応するアプリデータを読み出す（ステップＳ６４）。 
【０１０９】
読み出したアプリＡのアプリデータにより、現在、アプリＡ用として表示している表示画面は無く、設定も未完了の場合、記憶制御部１５２は、表示制御部に設定画面の表示要求を行う（ステップＳ６５）。表示制御部１５６は、設定処理部１５５に対して設定情報の確認を行い（ステップＳ６６）、通知を受けた情報及び設定処理部１５５が保持しているＭＦＰ１のスペック情報を用いて、設定画面を生成して操作パネル２７に表示する（ステップＳ６７）。また、表示制御部１５６は、設定画面を表示すると、アプリＡに対して設定画面の表示が完了したことを示す表示通知を行う（ステップＳ６８）。 
【０１１０】
これに対して、読み出したアプリＡのアプリデータにより、現在、アプリＡ用の設定画面が表示中であることを認識した場合、表示制御部１５６は、設定処理部１５５に対して、現在、設定されている設定情報を確認し、確認した現在の設定情報を用いて設定画面を生成し、操作パネル２７に表示する。 
【０１１１】
次に、表示した設定画面を介して、ユーザにより入力された設定変更情報は、機能提供アプリ１３６の受信部１５１により受信され（ステップＳ６９）、表示制御部１５６に送信される（ステップＳ７０）。表示制御部１５６は、設定変更情報に応じて更新した設定画面を、操作パネル２７に表示する。 
【０１１２】
次に、設定が完了すると、ユーザは、操作パネル２７を介して設定完了操作を行う。機能提供アプリ１３６の受信部１５１は、操作パネル２７からの設定完了信号を受信し（ステップＳ７１）、記憶制御部１５２に送信する（ステップＳ７２）。記憶制御部１５２は、設定完了信号を受信すると、上述の記憶部に記憶されているアプリデータのうち、アプリＡのアプリデータを、ユーザにより更新入力された設定情報で更新する（ステップＳ７３）。そして、記憶制御部１５２は、アプリＡに対して、設定情報を送信すると共に、表示完了通知を行う（ステップＳ７４）。アプリＡは、表示完了通知を受信すると、設定が完了したと認識し、例えば図７又は図１２を用いて説明したメイン画面を操作パネル２７に表示する（ステップＳ７５）。 
【０１１３】
（複数のベンダーアプリが記憶されている場合のジョブ実行動作）
図２６は、例えばベンダーアプリ１３７ａ〜１３７ｃ（アプリＡ〜アプリＣ）が操作部２０に記憶されている場合において、アプリＡからジョブの実行要求があった際に、機能提供アプリ１３６が、各アプリＡ〜アプリＣの表示状態及びジョブの実行状態に応じて、アプリＡの要求に対応するジョブを実行する流れを示すシーケンス図である。 
【０１１４】
まず、ユーザにより操作パネル２７を介して、アプリＡのジョブの実行を指示する操作が行われると（ステップＳ８１）、アプリＡから機能提供アプリ１３６に対して、ジョブ実行画面の表示要求が送信される。機能提供アプリ１３６は、この表示要求を受信部１５１で受信し（ステップＳ８２）、記憶制御部１５２に送信する（ステップＳ８３）。記憶制御部１５２は、ＲＡＭ２３又はフラッシュメモリ２４等の記憶部に記憶されている「アプリデータ」から、アプリＡに対応するアプリデータを読み出す（ステップＳ８４）。 
【０１１５】
読み出したアプリＡのアプリデータにより、現在、アプリＡ用として表示している表示画面は無く、設定も完了している場合、記憶制御部１５２は、表示制御部１５６に対して、ジョブ実行画面の表示要求を行う（ステップＳ８５）。ジョブ実行画面の表示要求を受信すると、表示制御部１５６は、設定処理部１５５に対して、ジョブの実行要求を行う（ステップＳ８６）。設定処理部１５５は、本体１０のアプリに対して、ジョブの実行要求を行う（ステップＳ８７）。 
【０１１６】
一方、表示制御部１５６は、設定処理部１５５に対してジョブの実行要求を行うと、ステップＳ８８において、操作パネル２７に対してジョブの実行画面を表示し、ステップＳ８９において、アプリＡに対してジョブの実行画面の表示通知を行う。また、記憶制御部１５２は、設定処理部１５５からジョブの実行通知を受信し（ステップＳ９０）、アプリＡは、現在、ジョブの実行中であることを示すアプリデータを、上述の記憶部に記憶する（ステップＳ９１）。 
【０１１７】
次に、設定処理部１５５は、本体１０のアプリからジョブが完了したことを示す完了通知を受信すると（ステップＳ９２）、受信した完了通知を記憶制御部１５２に送信する（ステップＳ９３）。記憶制御部１５２は、アプリＡのジョブが完了したことを示すアプリデータを、上述の記憶部に記憶する（ステップＳ９４）。また、記憶制御部１５２は、アプリＡに対して、ジョブの完了通知を行う（ステップＳ９５）。アプリＡは、ジョブの完了通知を受信すると、例えば図７又は図１２を用いて説明したメイン画面を操作パネル２７に表示する（ステップＳ９６）。 
【０１１８】
このように機能提供アプリ１３６は、各アプリＡ〜アプリＣの表示状態及びジョブの実行状態に応じて、設定画面の表示制御及びジョブの実行制御を行う。これにより、操作部２０に複数のアプリが記憶されることとなっても、各アプリの表示及びジョブを整理しながら、それぞれ実行することができる。 
【０１１９】
（本体でジョブが実行中である場合のメッセージ表示）
ここで、例えば本体１０が複数ジョブの同時受け付けに対応していない場合等において、現在、本体１０が他のアプリ等のジョブを実行中の場合がある。機能提供アプリ１３６の記憶制御部１５２は、記憶部に記憶されている各アプリＡ〜Ｃの１３７のアプリデータを参照し、各アプリＡ〜Ｃのジョブ実行状態を確認する。そして、記憶制御部１５２により、本体１０が他のアプリのジョブを実行中であることが検出された場合、表示制御部１５６が、例えば「現在、ジョブを実行できません」等の、ジョブが実行できない旨のメッセージを操作パネル２７に表示する（報知動作の一例）。なお、この例では、メッセージを表示することで、ジョブが実行できない旨をユーザに報知することとしたが、例えば発光制御又は音声の出力制御等により、ユーザに対してジョブが実行できない旨を報知してもよい。 
【０１２０】
これにより、本体１０にジョブの実行要求を行う前に、ユーザに対して、現在ジョブが実行きないことを認識させことができる。また、本体１０に対して不要な要求を行わずに済むため、本体１０の負荷を軽減することができる。 
【０１２１】
（実行中のジョブが存在する場合）
また、本体１０で実行中のジョブが完了するまでに長時間を要する場合がある。この場合、ユーザは、例えばスキャン設定又はコピー設定等の設定操作を行った後に、本体１０が実行中のジョブを完了するまで、自分のジョブの実行を待つ必要がある。ユーザＡがジョブの完了を待っている間に、他のユーザＢがアプリを利用することで、ユーザＡの設定値がユーザＢにより変更され、ユーザＡが自分のジョブを実行する際に、再度の設定が必要となる不都合を生ずることが考えられる。 
【０１２２】
このため、機能提供アプリ１３６の設定処理部１５５は、操作パネル２７を介して設定要求がされた際に、記憶制御部１５２に対して本体１０で現在実行中のジョブの確認要求を行う。記憶制御部１５２により、現在、実行中のジョブが確認された場合、表示制御部１５６は、例えば「現在、ジョブを実行できません」等の、ジョブが実行できない旨のメッセージを操作パネル２７に表示する。そして、設定処理部１５５は、本体１０で実行されていたユーザＢのジョブが完了した際に、ユーザＡのジョブの設定を受け付け、設定された設定値に基づいて、ジョブの実行処理を行う。 
【０１２３】
これにより、本体１０にジョブの実行要求を行う前に、ユーザに対して、現在ジョブが実行きないことを認識させことができる。また、本体１０に対して不要な要求を行わずに済むため、本体１０の負荷を軽減することができる。上述の設定し直し等の不都合を防止できる。 
【０１２４】
（メモリ管理動作）
次に、各アプリに対して利用可能なメモリ容量が制限されている場合がある。また、各アプリのデータ量が増えた場合、データの検索が長時間化することが懸念される。このため、記憶制御部１５６は、データ量が、予め指定しているメモリ容量以上となったアプリのデータのうち、時間的に古いデータを削除し、アプリのデータを予め指定しているメモリ容量以下のデータ量となるように制御する。 
【０１２５】
これにより、各アプリのデータ量を、予め指定されたデータ容量内に制限できるため、各アプリのデータ量が増えることで、データの検索が長時間化する不都合を防止できる。
【０１２６】
（選択された設定のデフォルト表示動作）
次に、機能提供アプリ１３６の記憶制御部１５２は、ユーザにより設定された設定値を、ＲＡＭ２３又はフラッシュメモリ２４等の記憶部（設定値記憶部の一例）に記憶する。ユーザにより設定された設定値は、最新の設定値として記憶部に記憶される。また、記憶部には、最新の設定値の他、デフォルトとして設定されている設定値が記憶される。 
【０１２７】
ベンダーアプリ１３７から、設定値の表示要求があると、表示制御部１５６は、デフォルトとして設定されているデフォルト設定値を表示するか、又は、例えば前回の設定値等の最新の最新設定値を表示するかを、ユーザに選択させるための設定値の選択画面を表示パネル２７に表示する。設定処理部１５５は、ユーザにより選択された方の設定値である、デフォルト設定値又は最新設定値の設定処理を行う。 
【０１２８】
これにより、ベンダーアプリ１３７で同じ設定値を用いる場合等に、毎回、設定を行う手間を省くことができる。なお、ベンダーアプリ１３７のジョブの実行が完了した際に、記憶制御部１５６は、上述の最新設定値及び（又は）デフォルト設定値を記憶部から削除してもよい。これにより、記憶部の記憶容量を、最新設定値及び（又は）デフォルト設定値の分、解放することができる。 
【０１２９】
（セキュリティ維持動作）
次に、ＭＦＰ１がユーザ認証機能を利用している場合、複数のユーザが、それぞれ所望の設定を行うことが考えられる。このようなユーザの設定（情報）を、他のユーザに開示することは、セキュリティ上好ましいことではない。 
【０１３０】
このため、記憶制御部１５５は、ＭＦＰ１にログインしているユーザがログアウトした際に、起動していたベンダーアプリ１３７に関連する一部又は全部の情報（例えば、設定情報等）を上述の記憶部から消去する。これにより、ユーザの設定等の情報が、他のユーザに開示される不都合を防止でき、ＭＦＰ１のセキュリティを維持することができる。 
【０１３１】
（第１の実施の形態の効果）
以上の説明から明らかなように、第１の実施の形態のＭＦＰ１は、本体１０のアプリ層１０１に設けられているコピーアプリ１１１、スキャナアプリ１１２、プリンタアプリ１１３又はＦＡＸアプリ１１４と同等の機能を備えており、ベンダーアプリ１３７に対して、本体１０に記憶されているコピーアプリ１１１〜ＦＡＸアプリ１１４と同等の機能を提供する機能提供アプリ１３６を設ける。そして、ＭＦＰ１の機能単位の画面表示及びジョブの実行制御を機能提供アプリ１３６が行う。これにより、機能提供アプリ１３６で行われる部分のプログラム開発を、開発ベンダーのベンダーアプリ１３７で行う必要が無いため、ベンダーアプリ１３７の開発を容易化することができる。 
【０１３２】
また、ＭＦＰ１が新機種に移行した際に、例えばモノクロ機からカラー機への対応又は片面機から両面機への対応等の機種に依存して機種対応開発が必要となる設定画面は、機能提供アプリ１３６の実装部分となる。このため、機種依存の実装部分に対応するベンダーアプリ１３７の機種対応開発を不要とすることができる。
【０１３３】
（第２の実施の形態）
次に、第２の実施の形態のＭＦＰの説明をする。この第２の実施の形態のＭＦＰは、標準搭載のジョブ実行機能アプリと、ベンダーアプリに対して機能提供を行う機能提供アプリを一つのアプリケーションプログラムに纏めた例であり（統合アプリケーション）、ベンダーアプリから呼び出されて動作するか、又は、標準搭載のジョブ実行機能アプリとして呼び出されて動作するかを判断し、それぞれに適した機能/画面提供を行う。
【０１３４】
例えば、ユーザＡによりメイン画面から標準搭載アプリのアイコンが操作された場合、機能提供アプリは標準搭載のアプリとして動作する。その後、他のユーザＢがベンダーアプリを起動し、ジョブの実行機能を利用しようとした際には、機能提供アプリは、標準搭載のアプリとして動作していたときの情報（状態情報）を保存した後、ベンダーアプリの仲介のアプリとして動作する。そして、再度、ユーザＡが標準搭載アプリを起動した際には、保存していた状態情報に基づいてユーザＡが操作していた画面を再表示する。なお、上述の第１の実施の形態と、以下に説明する第２の実施の形態とでは、この点のみが異なる。このため、以下、両者の差異の説明のみを行い、重複説明は省略する。
【０１３５】
（第２の実施の形態のソフトウェア構成）
図２７は、第２の実施の形態のＭＦＰ１に設けられているソフトウェア構成を示す図である。この図２７に示すように、本体１０は、アプリ層１０１、サービス層１０２及びＯＳ層１０３に分かれている。サービス層１０２は、省エネルギー管理及びメモリ管理等各アプリが共通で行う処理を行う。
【０１３６】
操作部２０は、アプリ層２０１及びＯＳ層２０３に分かれている。本体アプリと操作部アプリの違いは、本体のアプリでは、エンジン制御等を行うことでＭＦＰ１の機能(読み取り又は印刷等)の制御を行うのに対し、操作部アプリでは、ＵＩ制御を行う。つまり、操作部アプリで画面表示を行ってユーザの操作を受け付け、そのユーザ操作に基づいたエンジン制御を本体アプリが行っている。
【０１３７】
操作部２０には、ＭＦＰ１にインストールされている、例えばスキャナアプリ、コピーアプリ、プリンタアプリ又はファクスアプリ等のさまざまなアプリケーションが表示される。図２７に示す機能提供アプリ５００が、第２の実施の形態の要部となるアプリである。この第２の実施の形態の場合、機能提供アプリ５００が、「標準搭載のアプリ」及び「ベンダーアプリに対する機能提供アプリ」として２つの役割を担う、物理的に１つのアプリケーションとなる（統合アプリケーションの一例）。これに対して、上述の第１の実施の形態のＭＦＰ１の場合、「機能提供アプリ」と「標準搭載のアプリ」がそれぞれ別のアプリとして存在する。ベンダーアプリ１３７は、例えばスキャンの設定又は実行を行う際に、このスキャナ機能提供アプリ５００の呼び出しを行う。
【０１３８】
（機能提供アプリの機能）
図２８は、機能提供アプリ５００の機能ブロック図である。操作部２０のＣＰＵ２１は、例えばＲＯＭ２２、ＲＡＭ２３又はフラッシュメモリ２４等の記憶部に記憶されている機能提供アプリ５００を実行することで、受付部５０１、制御部５０２、記憶制御部５０３、表示制御部５０４、設定部５０５、入力制御部５０６及びジョブ実行部５０７の各機能を実現する。
【０１３９】
受付部５０１は、機能提供アプリのアイコンが操作されたた場合に生成される起動要求、又は、ベンダーアプリ１３７からの起動要求を受け付ける。表示制御部５０４は、ジョブ設定／実行画面等を表示する。設定制御部５０５は、ＭＦＰ１のスペックに合わせてジョブ設定／実行画面の表示内容を変更し、設定値の調整を行う。入力制御部５０６は、表示した画面に対するユーザの入力を受け付ける。ジョブ実行部５０７は、決定した設定値を利用してジョブ実行の要求を行い、その後の複雑なジョブ実行処理を取り扱う。記憶制御部５０３は、呼び出し元の情報（標準搭載のアプリとして起動されているか、又は、ベンダーへの機能提供として起動されているかを示す情報）、設定値及び状況情報等の記憶制御及び読み出し制御を行う。制御部５０２は、呼び出しを受け付けた後に、呼び出し元のアプリに応じた情報を、操作部２０のＲＯＭ２２、ＲＡＭ２３又はフラッシュメモリ２４等の記憶部、或いは、本体１０のＲＯＭ１２、ＲＡＭ１３又はＨＤＤ１４等の記憶部から取り出し、呼び出し元に合わせた表示又はジョブを実行する。
【０１４０】
（機能提供アプリにおける機能提供動作）
次に、機能提供アプリ５００が、ベンダーアプリ１３７に対して機能提供を行う動作を説明する。まず、図２９に示すように、ユーザが使用するアプリを選択するためのホーム画面には、ＭＦＰ１にインストールされているさまざまなアプリのアイコンが表示される。このアイコンの中から、例えばベンダースキャナアプリアイコン５１０を選択すると、ベンダーアプリが起動され、図７に示したベンダーアプリのメイン画面が操作パネル２７に表示される。なお、図７の例は、ベンダースキャナアプリのメイン画面の例である。
【０１４１】
ベンダースキャナアプリの設定ボタン１６１が操作されると、機能提供アプリ５００のうち、スキャナ機能提供アプリが起動してアプリが切り替わり、図８に示したスキャナ設定トップ画面が表示される。なお、内部的には、ここでベンダースキャナアプリからスキャナ機能提供アプリに対するＡＰＩ呼び出しが行われてスキャナ機能提供アプリが起動する。
【０１４２】
スキャナ機能提供アプリは、ユーザ操作によって様々なスキャナ設定の設定が可能である。例えば、図８に示すファイル形式選択ボタン１６３が操作されると、図９に示すファイル形式選択画面が表示される。このように、スキャナ設定トップ画面や、その画面から遷移する詳細な設定画面などは全てスキャナ機能提供アプリで実現される。
【０１４３】
スキャナ機能提供アプリの設定完了ボタン１６４が操作されると、スキャナ設定が確定してアプリが切り替わり、図７に示すベンダースキャナアプリのメイン画面に戻る。
【０１４４】
ベンダースキャナアプリのスキャン実行ボタン１６２が操作されると、スキャナ機能提供アプリが起動してアプリが切り替わり、図１０に示したスキャン実行画面が表示され、スキャンが実行される。なお、内部的には、ここでベンダースキャナアプリからスキャナ機能提供アプリに対するＡＰＩ呼び出しが行われてスキャナ機能提供アプリが起動する。
【０１４５】
スキャンが完了するとアプリが切り替わり、図７に示すベンダースキャナアプリのメイン画面に戻る。このときスキャン結果画像の引渡しも行われる。
【０１４６】
このように、ベンダーアプリは、スキャナ設定ボタン１６１とスキャン実行ボタン１６２を実装し、各ボタン１６１又は１６２の操作時にスキャナ機能提供アプリに対するＡＰＩ呼び出し処理を実装するだけで、スキャナ設定、スキャンの実行及びスキャン結果画像の取得を可能とすることができる。ベンダーアプリは、このスキャン結果画像を自由に編集、送信又は蓄積することも可能である。
【０１４７】
（機能提供アプリにおける標準搭載アプリとしての動作）
次に、機能提供アプリ５００が、例えば標準搭載のスキャナアプリとして機能する場合の動作を説明する。この場合、図２９に示したホーム画面において、例えば標準搭載のスキャナアプリを選択するためのアイコン５１０が選択操作されると、図３０に示すように
標準搭載のスキャナアプリの画面が表示される。
【０１４８】
例えば、ファイル形式選択ボタンが操作されると、図３１に示すファイル形式選択画面が表示される。このファイル形式選択画面のスタートボタン５１１が操作されると、図１０と同様のスキャン実行画面が表示され、スキャンが実行される。
【０１４９】
（設定画面表示動作）
次に、第２の実施の形態のＭＦＰ１における設定画面表示動作の流れを、図３２及び図３３のシーケンス図を用いて説明する。この図３２及び図３３のシーケンス図は、「ベンダーアプリから機能提供アプリの呼び出し」、「ベンダーアプリを閉じる」、「ホーム画面からの機能提供アプリの呼び出し（標準搭載のスキャナアプリとして使用する）」、「機能提供アプリを閉じる」、「ベンダーアプリを再度開く」という操作を順に行ったときのシーケンス図である。
【０１５０】
このシーケンス図において、一度アプリを閉じたときに（ホーム画面に戻る）、直前のアプリの状態情報（ベンダーアプリ又はホーム画面から呼び出されたか、設定値情報、ジョブの状態を示す情報）を保存しておき、再度開き直したときには、状態情報に基づいて、設定画面を再描画する。また、アプリの状態情報の保存時に、古い状態情報が残っていた場合には、その古い状態情報を削除して新たな状態情報を追加（更新）する。
【０１５１】
すなわち、ユーザにより、ホーム画面を介してベンダーアプリ１３７が起動され（ステップＳ１０１）、設定ボタンが操作されると（ステップＳ１０２）、ベンダーアプリ１３７は、機能提供アプリ５００に対して画面表示要求を行う（ステップＳ１０３）。機能提供アプリ５００の受付部５０１は、この画面表示要求を受信し、制御部５０２に対して例えばベンダースキャナアプリの画面表示要求を行う（ステップＳ１０４）。制御部５０２は、記憶制御部５０３に対して、ベンダースキャナアプリの直前の状態情報の取得要求（アプリ前状態取得要求）を行う（ステップＳ１０５）。
【０１５２】
状態情報は、例えば本体部１０のＨＤＤ１４、操作部２０のＲＡＭ２３等の記憶部に記憶されている。記憶制御部５０３は、本体部１０のＨＤＤ１４から状態情報を取得する場合、操作部２０の接続Ｉ／Ｆ２６及び本体１０の接続Ｉ／Ｆ１６を介して、本体１０のＨＤＤ１４にアクセスし、状態情報を取得する。また、記憶制御部５０３は、操作部２０のＲＡＭ２３から状態情報を取得する場合、操作部２０のバスライン２８を介してＲＡＭ２３にアクセスし、状態情報を取得する。記憶制御部５０３は、取得した状態情報を制御部５０２に送信する（ステップＳ１０６）。
【０１５３】
操作部のＯＳがリナックス（登録商標）（Ｌｉｎｕｘ（登録商標））、又は、リナックス（登録商標）を拡張して開発されたＯＳ（例えば、Ａｎｄｒｏｉｄ（登録商標）等）では、「ｔｍｐｆｓ」という一時的にデータを格納するためのファイルシステムが利用できる（全てのリナックス（登録商標）、又は、それを拡張したＯＳで利用できるとは限らない）。この領域は、揮発性を有する一時的な記憶領域となっている。このため、アプリの状態情報の一時的な保存領域として用いることができる。
【０１５４】
「ｔｍｐｓ」は、データを保存する媒体として揮発領域であるＲＡＭを利用するため、電源を落とすとデータは消去されてしまう。しかし、ここに保存するアプリの状態は、複合機が起動している間だけ保持できていればよい（アプリを切り替えるときに必要になる情報であり、複合機再起動後はデフォルトの状態に戻っていることが望ましいため）。そのため、揮発領域であっても問題はない。また、フラッシュメモリのよりも寿命が長いＲＡＭを用いることで安定した動作を可能とすることができる。
【０１５５】
次に、状態情報を取得すると、制御部５０２は、表示制御部５０４に対し、設定画面の表示要求を行う（ステップＳ１０７）。表示制御部５０４は、設定制御部５０５にアクセスすることで、設定情報の確認を行い（ステップＳ１０８、ステップＳ１０９）、操作パネル２７に対して設定画面を表示する（ステップＳ１１０）。表示制御部５０４は、設定画面を表示すると、ベンダーアプリ１３７に対して、設定画面を表示したことを示す設定画面表示通知を行う。
【０１５６】
なお、ベンダーアプリの初回起動時等のように、前回の状態情報が記憶されていない場合、表示制御部５０４は、デフォルトの設定画面を表示する。
【０１５７】
次に、設定画面において、ステップＳ１１２に示すように、ユーザにより操作パネル２７を介してカラー設定変更操作が行われると、入力制御部５０６は、ステップＳ１１３において、ユーザにより入力されたカラー設定情報を設定制御部５０５に送信する。設定制御部５０５は、ユーザにより設定されたカラー設定情報等をＲＡＭ２３等の記憶部に、一時的に保持する。
【０１５８】
次に、アプリが閉じられることで（ステップＳ１１４）、ホーム画面に戻る際、ベンダーアプリ１３７は、機能提供アプリ５００に対して状態情報の保存要求（状態保存要求）を行う（ステップＳ１１５）。機能提供アプリ５００の受付部５０１は．この状態保存要求を受信すると、制御部５０２に転送する（ステップＳ１１６）。制御部５０２は、設定制御部５０５に対し、設定情報の取得要求を行うと共に（ステップＳ１１７）、ジョブ実行部５０７に対してジョブの実行状態を示す実行状態情報の取得要求を行う（ステップＳ１１９）。
【０１５９】
設定制御部５０５は、設定情報を制御部５０２に送信する（ステップＳ１１８）。また、ジョブ実行部５０７は、実行状態情報を制御部５０２に送信する（ステップＳ１２０）。制御部５０２は、設定情報、実行状態情報、及び、読み出し元を示す読み出し元情報（ホーム画面から呼び出されたか、又は、ベンダーアプリから呼び出されたかを示す情報）を含む状態情報を生成し、これを記憶制御部５０３に送信する。記憶制御部５０３は、上述のように本体部１０のＨＤＤ１４、又は、操作部２０のＲＡＭ２３等の記憶部に状態情報を記憶制御する（ステップＳ１２１）。
【０１６０】
以下の表６に、状態情報の一例を示す。
【０１６１】
【表６】
2018046551.tif 000008
【０１６２】
この表６の例に示すように、状態情報としては、機能提供アプリ５００の呼び出し元を示す情報、表示中の画面を示す情報、各設定値の情報、及び、ジョブ状態を示す情報が記憶される。表６の例は、機能提供アプリ５００の呼び出し元はベンダーアプリであり、実行中画面が表示中であり、カラー印刷、６００ｄｐｉの解像度、Ａ４縦の原稿サイズで、ジョブ状態が実行中であることを示す状態情報の例である。また、表６の例は、機能提供アプリ５００の呼び出し元はホーム画面からであり、実行中画面が設定画面であり、モノクロ印刷、２００ｄｐｉの解像度、Ｂ４縦の原稿サイズで、ジョブ状態が未実行であることを示す状態情報の例である。
【０１６３】
次に、図３３のシーケンス図において、ユーザによりホーム画面の機能提供アプリのアイコンが操作されると（ステップＳ１２２）、機能提供アプリ５００の画面表示要求が機能提供アプリ５００に送信される。機能提供アプリ５００の受付部５０１は、この画面表示要求を制御部５０２に送信する（ステップＳ１２３）。制御部５０２は、記憶制御部５０３に対して、上述の状態情報の取得要求を行う（ステップＳ１２４）。記憶制御部５０３は、本体１０のＨＤＤ１４又は操作部２０のＲＡＭ２３等の記憶部から状態情報を読み出し、制御部５０２に転送する（ステップＳ１２５）。
【０１６４】
次に、制御部５０２は、記憶部から読み出された状態情報に基づいて、表示制御部５０４に対して、設定画面の表示要求を行う（ステップＳ１２６）。表示制御部５０４は、設定制御部５０５と通信することで、設定情報の確認を行い（ステップＳ１２７、ステップＳ１２８）、操作パネル２７に対して設定画面を表示する（ステップＳ１２９）。
【０１６５】
なお、初回起動時等に状態情報が記憶部に記憶されていない場合、表示制御部５０４は、デフォルトの設定画面を表示する。
【０１６６】
次に、操作パネル２７を介してアプリの終了が指定されると（ステップＳ１３０）、機能提供アプリ５００の受付部５０１は、制御部５０２に対して状態情報の保存要求（状態保存要求）を行う（ステップＳ１３１）。制御部５０２は、設定制御部５０５に対し、設定情報の取得要求を行うと共に（ステップＳ１３２）、ジョブ実行部５０７に対してジョブの実行状態を示す実行状態情報の取得要求を行う（ステップＳ１３４）。
【０１６７】
設定制御部５０５は、設定情報を制御部５０２に送信する（ステップＳ１３３）。また、ジョブ実行部５０７は、実行状態情報を制御部５０２に送信する（ステップＳ１３５）。制御部５０２は、設定情報、実行状態情報、及び、読み出し元を示す読み出し元情報（機能提供アプリ５００が、ホーム画面から呼び出されたか、又は、ベンダーアプリから呼び出されたかを示す情報）を含む状態情報を生成し、これを記憶制御部５０３に送信する。記憶制御部５０３は、上述のように本体部１０のＨＤＤ１４、又は、操作部２０のＲＡＭ２３等の記憶部に状態情報を記憶制御する。
【０１６８】
次に、ユーザにより、ホーム画面を介してベンダースキャナアプリが起動され（ステップＳ１３７）、設定ボタンが操作されると（ステップＳ１３８）、ベンダーアプリ１３７は、機能提供アプリ５００に対して画面表示要求を行う（ステップＳ１３９）。機能提供アプリ５００の受付部５０１は、画面表示要求を受信し、制御部５０２に対して例えばベンダースキャナアプリの画面表示要求を行う（ステップＳ１４０）。制御部５０２は、記憶制御部５０３に対して、ベンダースキャナアプリの直前の状態情報の取得要求（アプリ前状態取得要求）を行う（ステップＳ１４１）。この際、制御部５０２は、「ベンダーアプリからの呼び出し」として使用された際の状態情報を取得する。記憶制御部５０３は、取得した状態情報を制御部５０２に送信する（ステップＳ１４２）。
【０１６９】
次に、状態情報を取得すると、制御部５０２は、表示制御部５０４に対し、設定画面の表示要求を行う（ステップＳ１４３）。表示制御部５０４は、設定制御部５０５にアクセスすることで、設定情報の確認を行い（ステップＳ１４４、ステップＳ１４５）、操作パネル２７に対して設定画面を表示する（ステップＳ１４６）。この例の場合、ステップＳ１１２及びステップＳ１１３において、ユーザによりカラー設定が変更された例である。このため、ステップＳ１４６では、状態情報に基づいて、変更されたカラー設定が反映された設定画面が表示される。
【０１７０】
（ジョブ実行動作）
次に、第２の実施の形態のＭＦＰ１におけるジョブ実行動作の流れを、図３４のシーケンス図を用いて説明する。ユーザにより、操作パネル２７を介してベンダーアプリ１３７が起動操作され（ステップＳ２０１）、ジョブ実行を指定するスタートボタンが操作されると（ステップＳ２０２）、ベンダーアプリ１３７は、機能提供アプリ５００に対して、例えばベンダースキャナアプリのジョブ実行画面の表示要求を行う（ステップＳ２０３）。
【０１７１】
機能提供アプリ５００の受付部５０１は、ジョブ実行画面の表示要求を制御部５０２に転送する（ステップＳ２０４）。制御部５０２は、ジョブ実行画面の表示要求を受信すると、記憶制御部５０３に対して状態情報の取得要求を行う（ステップＳ２０５）。記憶制御部５０３は、上述のように本体１０のＨＤＤ１４等の記憶部から状態情報を読み出し、制御部５０２に送信する（ステップＳ２０６）。
【０１７２】
次に、制御部５０２は、表示制御部５０４に対してジョブ実行中画面の表示要求を行う（ステップＳ２０７）。このジョブ実行中画面の表示要求を受信すると、表示制御部５０４は、ジョブ実行部５０７に対してジョブの実行要求を行う（ステップＳ２０８）。ジョブ実行部５０７は、本体アプリ６００と通信することで、スキャナ又はコピー等のジョブを実行制御する（ステップＳ２０９）。本体アプリ６００でジョブが実行されると、ジョブ実行部５０７は、制御部５０２に対してジョブの実行通知を行う（ステップＳ２１０）。
【０１７３】
次に、アプリが閉じられることで（ステップＳ２１１）、ホーム画面に戻る際、ベンダーアプリ１３７は、機能提供アプリ５００に対して状態情報の保存要求（状態保存要求）を行う（ステップＳ２１２）。機能提供アプリ５００の受付部５０１は．この状態保存要求を受信すると、制御部５０２に転送する（ステップＳ２１３）。制御部５０２は、設定制御部５０５に対し、設定情報の取得要求を行うと共に（ステップＳ２１４）、ジョブ実行部５０７に対してジョブの実行状態を示す実行状態情報の取得要求を行う（ステップＳ２１６）。
【０１７４】
設定制御部５０５は、設定情報を制御部５０２に送信する（ステップＳ２１５）。また、ジョブ実行部５０７は、実行状態情報を制御部５０２に送信する（ステップＳ２１７）。制御部５０２は、設定情報、実行状態情報、及び、読み出し元を示す読み出し元情報（ホーム画面から呼び出されたか、又は、ベンダーアプリから呼び出されたかを示す情報）を含む状態情報を生成し、これを記憶制御部５０３に送信する。記憶制御部５０３は、上述のように本体部１０のＨＤＤ１４、又は、操作部２０のＲＡＭ２３等の記憶部に状態情報を記憶制御する（ステップＳ２１８）。
【０１７５】
次に、ベンダースキャナアプリでスキャン実行中において、標準搭載のスキャナアプリを使用するために、ホーム画面の機能提供アプリ５００のアイコンが操作されると（ステップＳ２１９）、機能提供アプリ５００の受付部５０１は、制御部５０２に対して、標準搭載のスキャナアプリのジョブ実行画面の表示要求を行う（ステップＳ２２０）。制御部５０２は、記憶制御部５０３から、標準搭載のスキャナアプリの状態情報を取得する（ステップＳ２２１、ステップＳ２２２）。しかし、この場合、ベンダースキャナアプリでスキャン実行中であるため、標準搭載のスキャナアプリでスキャンを実行できない。このため、制御部５０２は、表示制御部５０４に対してジョブを実行できないことを示すジョブ実行不可ダイアログの表示要求を行う（ステップＳ２２３）。表示制御部５０４は、操作パネル２７に、ジョブ実行不可ダイアログを表示する。これにより、ユーザは、現在、ベンダースキャナアプリでスキャン実行中であるため、標準搭載のスキャナアプリでスキャンを実行できないことを認識する。
【０１７６】
（第２の実施の形態の効果）
このような第２の実施の形態のＭＦＰ１は、上述の第１の実施の形態で説明した効果に加え、以下の効果を得ることができる。
【０１７７】
標準搭載のジョブ実行機能アプリにベンダーへの機能提供機能を付加することで、二つのアプリケーションプログラムが一つのアプリケーションプログラムとなっているため、同じ機能であるにも関わらず、異なる記憶領域を無駄に使用する不都合を防止できる。すなわち、アプリケーションプログラムを記憶するための記憶領域の削減を図ることができる。
【０１７８】
また、ジョブ実行機能にバグが混入していた場合、上述の一つのアプリケーションに対してのみ修正作業を施せばよいため、作業数を削減でき、管理コストを低く抑えることができる。
【０１７９】
ここで、標準搭載のジョブ実行機能アプリにベンダーへの機能提供機能を付加して一つのアプリケーションプログラムに纏める場合、機能提供アプリの呼び出し元の違いによる状態管理が課題となる。例えば、標準搭載アプリとして起動している間にユーザＡがカラー設定を変更し、その後、ユーザＢがベンダーアプリを立ち上げたときに、解像度の設定を変更したとする。この後、再度、ユーザＡが標準搭載アプリを起動した際には、カラー設定のみが変更された状態でアプリが起動することが望ましい。
【０１８０】
このため、第２の実施の形態のＭＦＰ１の場合、呼び出し元毎に、直前の状態情報を記憶しておき、アプリケーションを一旦終了し、再度、起動する際に、記憶しておいた状態情報を読み出し、終了した際の機器の状態を再現する。これにより、標準搭載のジョブ実行機能アプリにベンダーへの機能提供機能を付加して一つのアプリケーションプログラムに纏めた場合でも、呼び出し元毎の状態管理を可能とすることができる。
【０１８１】
最後に、上述の各実施の形態は、一例として提示したものであり、本発明の範囲を限定することは意図していない。この新規な各実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことも可能である。また、上述の各実施の形態は、発明の範囲又は要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。 
【符号の説明】
【０１８２】
１  複合機（ＭＦＰ）
１０  ＭＦＰの本体
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ＨＤＤ
１５  通信Ｉ／Ｆ
１６  接続Ｉ／Ｆ
１７  エンジン
１８  バスライン
１９  ＦＡＸモデム
２０  操作部
２１  ＣＰＵ
２２  ＲＯＭ
２３  ＲＡＭ
２４  フラッシュメモリ
２５  通信Ｉ／Ｆ
２６  接続Ｉ／Ｆ
２７  操作パネル
２８  バスライン
２９  ＩＣカードＩ／Ｆ
４０  ネットワーク
１１１  コピーアプリ
１１２  スキャナアプリ
１１３  プリンタアプリ
１１４  ＦＡＸアプリ
１３１  第１のコピー受付アプリ
１３２  第２のコピー受付アプリ
１３３  スキャナ受付アプリ
１３４  プリンタ受付アプリ
１３５  ＦＡＸ受付アプリ
１３６  機能提供アプリ
１３７  ベンダーアプリ
１５１  受信部
１５２  記憶制御部
１５３  切り替え部
１５４  送信部
１５５  設定処理部
１５６  表示制御部
５０１  受付部
５０２  制御部
５０３  記憶制御部
５０４  表示制御部
５０５  設定制御部
５０６  入力制御部
５０７  ジョブ実行部
【先行技術文献】
【特許文献】
【０１８３】
【特許文献１】特開２０１４−１５０３２０号公報
【図１】
2018046551.tif 000009
【図２】
2018046551.tif 000010
【図３】
2018046551.tif 000011
【図４】
2018046551.tif 000012
【図５】
2018046551.tif 000013
【図６】
2018046551.tif 000014
【図７】
2018046551.tif 000015
【図８】
2018046551.tif 000016
【図９】
2018046551.tif 000017
【図１０】
2018046551.tif 000018
【図１１】
2018046551.tif 000019
【図１２】
2018046551.tif 000020
【図１３】
2018046551.tif 000021
【図１４】
2018046551.tif 000022
【図１５】
2018046551.tif 000023
【図１６】
2018046551.tif 000024
【図１７】
2018046551.tif 000025
【図１８】
2018046551.tif 000026
【図１９】
2018046551.tif 000027
【図２０】
2018046551.tif 000028
【図２１】
2018046551.tif 000029
【図２２】
2018046551.tif 000030
【図２３】
2018046551.tif 000031
【図２４】
2018046551.tif 000032
【図２５】
2018046551.tif 000033
【図２６】
2018046551.tif 000034
【図２７】
2018046551.tif 000035
【図２８】
2018046551.tif 000036
【図２９】
2018046551.tif 000037
【図３０】
2018046551.tif 000038
【図３１】
2018046551.tif 000039
【図３２】
2018046551.tif 000040
【図３３】
2018046551.tif 000041
【図３４】
2018046551.tif 000042