(57)【要約】【課題】ワークフローに登録された複数の処理を順番に実行させる場合、操作部側で起動させるアプリと、操作部側のアプリに対応する本体部側で起動させるアプリとを同期させることができる画像形成装置、画像形成システム、画像形成方法およびプログラムを提供する。【解決手段】本発明の画像形成装置は、操作を受け付ける操作部と、操作部で受け付けた操作に応じて動作する本体部とを備え、操作部が第１のＯＳを有し、本体部が第２のＯＳを有した画像形成装置であって、操作部は、ワークフローに基づいて、順にアプリを起動させて処理を実行させるアプリ連携部と、アプリ連携部から操作部で動作する第１のアプリの起動を要求するアプリ起動要求を受け付けた場合、第１のアプリと、本体部で動作する第２のアプリを同期させる処理を行う同期処理部と、同期処理部での同期させる処理が行われた後に、第１のアプリを起動させるアプリ起動制御部と、を備える。【選択図】図３
2017123610.tif 000002
【特許請求の範囲】
【請求項１】
操作を受け付ける操作部と、前記操作部で受け付けた操作に応じて動作する本体部とを備え、前記操作部が第１のオペレーティングシステムを有し、前記本体部が第２のオペレーティングシステムを有した画像形成装置であって、
前記操作部は、
予め登録されたアプリケーションの実行順を示すワークフローに基づいて、順にアプリケーションを起動させて処理を実行させる制御を行うアプリ連携部と、
前記アプリ連携部から前記第１のオペレーティングシステム上で動作する第１のアプリケーションの起動を要求するアプリ起動要求を受け付けた場合、前記第１のアプリケーションと、前記第２のオペレーティングシステム上で動作する第２のアプリケーションを同期させる処理を行う同期処理部と、
前記同期処理部での同期させる処理が行われた後に、前記第１のアプリケーションを起動させるアプリ起動制御部と、
を備える、
ことを特徴とする画像形成装置。
【請求項２】
前記同期処理部は、特定のアプリケーションを起動する場合に、前記第１のアプリケーションと、前記第２のアプリケーションを同期させる処理を行う、
請求項１に記載の画像形成装置。
【請求項３】
前記特定のアプリケーションは、前記本体部の機能を使用するアプリケーションである、
請求項２に記載の画像形成装置。
【請求項４】
前記第１のオペレーティングシステム上で動作させるアプリケーションを実行する順番で受け付けて、実行順に前記アプリケーションを前記ワークフローに登録するアプリ登録部を、さらに備える、
請求項１に記載の画像形成装置。
【請求項５】
前記アプリケーションを実行する順番を受け付ける画面を表示する表示部を有し、
前記アプリ登録部で前記アプリケーションを受け付ける場合に、最後に受け付けた前記アプリケーションの後に、実行可能なアプリケーションだけを前記表示部に表示させる表示制御部を、さらに備える、
請求項４に記載の画像形成装置。
【請求項６】
前記表示制御部は、
前記アプリ登録部で、実行順に前記アプリケーションを前記ワークフローに登録した後に、前記操作部の複数の機能を利用するための操作受付画面を呼び出す初期画面に、前記ワークフローを呼び出すための画像を配置する、
請求項５に記載の画像形成装置。
【請求項７】
前記アプリ連携部は、
前記ワークフローに登録された順に前記アプリケーションが処理したデータを、記憶部に記憶させ、
前記表示制御部は、
前記記憶部に記憶された前記データにアクセスするための識別情報を前記表示部に表示させる、
請求項５に記載の画像形成装置。
【請求項８】
前記同期処理部は、前記同期させる処理が完了できなかった場合に、所定の時間が経過するまでの間、前記同期させる処理を繰り返して行う、
請求項１に記載の画像形成装置。
【請求項９】
前記アプリ連携部は、前記ワークフローに登録された順に前記アプリケーションが処理したデータに識別情報を付与して保持し、続けて起動される次の順番のアプリケーションに対して該データの識別情報を受け渡す、
請求項１に記載の画像形成装置。
【請求項１０】
前記同期させる処理は、前記操作部で起動させるアプリケーションを起動させる前に、前記操作部で起動させる該アプリケーションに対応する前記本体部で起動させるアプリケーションを起動させてから、前記操作部で起動させるアプリケーションを起動させて同期させる処理である、
請求項１に記載の画像形成装置。
【請求項１１】
前記画像形成装置に、アプリケーションの実行順を示すワークフローの情報を含むデータを送信するコンピュータにより実行可能なプログラムと、
操作を受け付ける操作部と、前記操作部で受け付けた操作に応じて動作する本体部とを備え、前記操作部が第１のオペレーティングシステムを有し、前記本体部が第２のオペレーティングシステムを有した画像形成装置とを含む画像形成システムであって、
受信した前記データに含まれるアプリケーションの実行順を示す前記ワークフローに基づいて、順にアプリケーションを起動させて処理を実行させる制御を行うアプリ連携部と、
前記アプリ連携部から前記第１のオペレーティングシステム上で動作する第１のアプリケーションの起動を要求するアプリ起動要求を受け付けた場合、前記第１のアプリケーションと、前記第２のオペレーティングシステム上で動作する第２のアプリケーションを同期させる処理を行う同期処理部と、
前記同期処理部での同期させる処理が行われた後に、前記第１のアプリケーションを起動させるアプリ起動制御部と、を有する操作部を備える前記画像形成装置と、
を含む、
ことを特徴とする画像形成システム。
【請求項１２】
操作を受け付ける操作部と、前記操作部で受け付けた操作に応じて動作する本体部とを備え、前記操作部が第１のオペレーティングシステムを有し、前記本体部が第２のオペレーティングシステムを有した画像形成装置の画像形成方法であって、
予め登録されたアプリケーションの実行順を示すワークフローに基づいて、順にアプリケーションを起動させて処理を実行させる制御を行うアプリ連携ステップと、
前記アプリ連携ステップから前記第１のオペレーティングシステム上で動作する第１のアプリケーションの起動を要求するアプリ起動要求を受け付けた場合、前記第１のアプリケーションと、前記第２のオペレーティングシステム上で動作する第２のアプリケーションを同期させる処理を行う同期処理ステップと、
前記同期処理ステップでの同期させる処理が行われた後に、前記第１のアプリケーションを起動させるアプリ起動制御ステップと、を含む、
ことを特徴とする画像形成方法。
【請求項１３】
操作を受け付ける操作部と、前記操作部で受け付けた操作に応じて動作する本体部とを備え、前記操作部が第１のオペレーティングシステムを有し、前記本体部が第２のオペレーティングシステムを有した画像形成装置に、
予め登録されたアプリケーションの実行順を示すワークフローに基づいて、順にアプリケーションを起動させて処理を実行させる制御を行うアプリ連携ステップと、
前記アプリ連携ステップから前記第１のオペレーティングシステム上で動作する第１のアプリケーションの起動を要求するアプリ起動要求を受け付けた場合、前記第１のアプリケーションと、前記第２のオペレーティングシステム上で動作する第２のアプリケーションを同期させる処理を行う同期処理ステップと、
前記同期処理ステップでの同期させる処理が行われた後に、前記第１のアプリケーションを起動させるアプリ起動制御ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、画像形成システム、画像形成方法およびプログラムに関する。
【背景技術】
【０００２】
スマートフォン等に用いられるＯＳ（Operating  System）では、アプリケーションが他のアプリケーションを呼び出すことで、複数のアプリケーションを連携したワークフローを実現する仕組みが知られている。また画像形成装置が有する操作部にＯＳ（例えばAndroid  OS）を搭載することで、従来の操作部に比べて容易に機能拡張を行えるものがある。以下、アプリケーションを「アプリ」とも表記する。
【０００３】
例えば、特許文献１には、ネットワークを介して提供されるサービスの柔軟性を向上させることができる情報処理装置が開示されている。特許文献１に記載の情報処理装置は、複数の処理を実行させる順序を決定し、決定した順序に従ってそれぞれの処理に関連付けられている処理装置に処理を実行させるものである。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＯＳを搭載した画像形成装置の操作部においても、スマートフォン等と同様に、複数のアプリを連携したワークフローを実現することを考える。ワークフローに登録された複数の処理を順番に実行させる場合、操作部側のアプリを起動させる時には、操作部側のアプリに対応する本体部（コントローラ）側で起動させるアプリを起動させて、操作部側で起動させるアプリと本体部側で起動させるアプリとを同期させる必要がある。以下、本体部を「コントローラ」とも表記する。
【０００５】
すなわち、同期とは、操作部側のアプリがコントローラ側のアプリの機能を使用する場合に、操作部側のアプリに対応するコントローラ側で使用する機能のコントローラ側のアプリを起動させる処理のことを示す。また、操作部側のアプリがコントローラ側のアプリの機能を使用しない場合には、コントローラ側ではホームアプリを起動させる処理のことを示す。なお、操作部側のアプリとは、操作部で動作中であり操作パネルに表示されているアプリのことを示し、コントローラ側のアプリとは、本体部で動作中のアプリのことを示す。
【０００６】
操作部側のアプリと、コントローラ側のアプリとを同期させる理由として、例えば、コントローラ側の画面を操作部側に表示させる場合に、操作部側のアプリと操作部側のアプリに対応するコントローラ側のアプリが同期していないと狙いと違う画面が表示されるためである。コントローラ側の画面を操作部に表示させる場合として、例えば、エラーが発生した時にユーザに通知する画面や、ストップキーを押下した時にジョブを停止させる画面等が挙げられる。
【０００７】
また、複数のアプリを連携したワークフローを実現する際に、ワークフローの処理を実行させるアプリが直接に操作部で起動させるアプリを呼び出すと、操作部側で起動させるアプリとコントローラ側で起動させるアプリとの同期がとれなくなる、という問題がある。
【０００８】
しかしながら特許文献１に記載の情報処理装置では、ワークフローに登録された複数の処理を順番に実行させる場合、操作部側のアプリを起動させる時には、操作部側のアプリに対応する本体部（コントローラ）側で起動させるアプリを起動させて、操作部側で起動させるアプリと本体部側で起動させるアプリとを同期させる、という問題を解決することはできていない。
【０００９】
本発明は、上記に鑑みてなされたものであって、ワークフローに登録された複数の処理を順番に実行させる場合、操作部側で起動させるアプリと、操作部側のアプリに対応する本体部側で起動させるアプリとを同期させることができる画像形成装置、画像形成システム、画像形成方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明の画像形成装置は、操作を受け付ける操作部と、前記操作部で受け付けた操作に応じて動作する本体部とを備え、前記操作部が第１のオペレーティングシステムを有し、前記本体部が第２のオペレーティングシステムを有した画像形成装置であって、前記操作部は、予め登録されたアプリケーションの実行順を示すワークフローに基づいて、順にアプリケーションを起動させて処理を実行させる制御を行うアプリ連携部と、前記アプリ連携部から前記第１のオペレーティングシステム上で動作する第１のアプリケーションの起動を要求するアプリ起動要求を受け付けた場合、前記第１のアプリケーションと、前記第２のオペレーティングシステム上で動作する第２のアプリケーションを同期させる処理を行う同期処理部と、前記同期処理部での同期させる処理が行われた後に、前記第１のアプリケーションを起動させるアプリ起動制御部と、を備える、ことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、操作部側で起動させるアプリと、操作部側のアプリに対応する本体部側で起動させるアプリとを同期させることができる、という効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施形態のＭＦＰのハードウェア構成の一例を示す図である。
【図２】図２は、本実施形態のＭＦＰのソフトウェア構成の一例を示す模式図である。
【図３】図３は、本実施形態のＭＦＰの機能構成の一例を示す図である。
【図４】図４は、アプリ対応情報の一例について説明する図である。
【図５】図５は、アプリを連携したワークフローの利用の概要について説明する図である。
【図６】図６は、アプリを連携したワークフローの利用の概要について説明する図である。
【図７】図７は、ワークフロー作成画面表示のシーケンス図である。
【図８】図８は、各機能のメタデータの一例を示す図である。
【図９】図９は、操作部の複数の機能を利用するための操作受付画面（ＵＩ画面）を呼び出す初期画面（ホーム画面）の一例を示す図である。
【図１０】図１０は、アプリ連携機能を利用するための操作受付画面（ＵＩ画面）の一例を示す図である。
【図１１】図１１は、ワークフロー作成画面（ＵＩ画面）の一例を示す図である。
【図１２】図１２は、ワークフローのデータの一例を示す図である。
【図１３】図１３は、ワークフローを作成する際に組み合わせられる機能の一例を示す図である。
【図１４】図１４は、ワークフローを作成する際に組み合わせられない機能の一例を示す図である。
【図１５】図１５は、ワークフローに登録する機能（アプリ）の組み合わせの一例を示す図である。
【図１６】図１６は、ワークフロー登録のシーケンス図である。
【図１７】図１７は、ホーム画面に登録されたワークフローを示す図である。
【図１８】図１８は、ワークフローの処理の実行について説明するフローチャート図である。
【図１９】図１９は、アプリ連携の操作受付画面の一例を示す図である。
【図２０】図２０は、コントローラ側のアプリ起動のシーケンス図である。
【図２１】図２１は、コントローラ側のホームアプリ起動のシーケンス図である。
【図２２】図２２は、コントローラ側のアプリ起動が失敗した場合の処理の一例を示すシーケンス図である。
【図２３】図２３は、実行する機能（アプリ）の間でのデータ受け渡し処理のシーケンス図である。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照しながら、本発明に係る画像形成装置、画像形成システム、画像形成方法およびプログラムの一実施形態を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。また、各実施形態は、内容を矛盾させない範囲で、適宜組み合わせることができる。
【００１４】
本実施形態の画像形成装置は、アプリケーションの実行順を示すワークフローに登録された順番にアプリケーションのアプリ起動要求を受け付けた場合、起動要求された操作部のアプリが本体部の機能（例えば、コピー、スキャナ、ファックス、プリンタ機能等）を使用するアプリの場合に、操作部のアプリに対応する本体部のアプリを起動させて、操作部で起動させるアプリと、本体部で起動させるアプリを対応させて同期させる処理を行う。本実施形態の画像形成装置では、同期処理部が操作部のアプリと、操作部のアプリに対応する本体部のアプリを同期させる処理を行うことで、操作部で起動するアプリと本体部で起動中のアプリを同期させる（揃える）ことができる。また、本実施形態の画像形成装置では、起動要求されたアプリの処理の実行が完了した後に、本体部でホームアプリを起動させる制御を行う。本体部でホームアプリを起動させることで、次に操作部で起動させるアプリと、本体部で起動させるアプリとの同期がとれなくなるという不具合が発生しない。すなわち、ワークフローの順番で複数のアプリを実行させた場合でも、操作部で起動させるアプリの切り換えと、切り換える操作部のアプリに対応する本体部で起動させるアプリへの切り換えを同期させることができる。本実施形態の画像形成装置によれば、ワークフローに登録された複数の処理を順番に実行させる場合でも、操作部側で起動させるアプリと、操作部側のアプリに対応する本体部側で起動させるアプリとを同期させることができる。なお、操作部側のアプリと本体部（コントローラ）側のアプリとの同期は操作部側のアプリがコントローラ側の機能（アプリ）を利用し始めるまでに完了する必要がある。
【００１５】
以下では、本実施形態の画像形成装置を、複合機（ＭＦＰ：Multifunction  Peripheral）に適用した場合を例に挙げて説明するが、これに限定されるものではない。なお、複合機とは、コピー機能、スキャナ機能、ファックス（ＦＡＸ：Facsimile（ファクシミリ））機能、およびプリンタ機能のうち少なくとも２つの機能を有する装置である。
【００１６】
図１は、本実施形態のＭＦＰ１のハードウェア構成の一例を示す図である。図１に示すように、ＭＦＰ１は、コピー機能、スキャナ機能、ファックス機能、プリンタ機能などの各種の機能を実現可能な本体部１０と、ユーザの操作に応じた入力を受け付ける操作部２０と、を備える。なお、操作部２０は、画面を表示する表示部を有し、ユーザの操作を受け付ける。そして、本体部１０は、操作部２０で受け付けた操作に応じて動作する。なお、ユーザの操作を受け付けるとは、ユーザの操作に応じて入力される情報（画面の座標値を示す信号等を含む）を受け付けることを含む概念である。本体部１０と操作部２０は、専用の通信路３００を介して相互に通信可能に接続されている。通信路３００は、例えばＵＳＢ（Universal  Serial  Bus）規格のものを用いることもできるが、有線か無線かを問わず任意の規格のものであってよい。
【００１７】
なお、本体部１０は、操作部２０で受け付けた操作に応じた動作を行うことができる。また、本体部１０は、クライアントＰＣ（Personal  Computer、パーソナルコンピュータ）などの外部装置とも通信可能であり、外部装置から受信した指示に応じた動作を行うこともできる。
【００１８】
まず、本体部１０のハードウェア構成について説明する。図１に示すように、本体部１０は、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、ＨＤＤ（ハードディスクドライブ）１４と、通信Ｉ／Ｆ（インタフェース）１５と、接続Ｉ／Ｆ１６と、プリントエンジン１７とを備え、これらがシステムバス１８を介して相互に接続されている。
【００１９】
ＣＰＵ１１は、本体部１０の動作を統括的に制御する。ＣＰＵ１１は、ＲＡＭ１３をワークエリア（作業領域）としてＲＯＭ１２またはＨＤＤ１４などに格納されたプログラムを実行することで、本体部１０全体の動作を制御し、上述したコピー機能、スキャナ機能、ファックス機能、プリンタ機能などの各種機能を実現する。
【００２０】
通信Ｉ／Ｆ１５は、ネットワーク３０と接続するためのインタフェースである。また、通信Ｉ／Ｆ１５は、ＰＣ（Personal  Computer、パーソナルコンピュータ）などの外部装置からプリンタデータを受信可能に、ネットワーク３０と接続している。
【００２１】
接続Ｉ／Ｆ１６は、通信路３００を介して操作部２０と通信するためのインタフェースである。
【００２２】
プリントエンジン１７は、印刷処理を実行するユニットであり、例えば白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタ等を含み、更にスキャナユニット、ファックスユニット等を含んでもよい。なお、プリントエンジン１７には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散およびガンマ変換などの画像処理部分が含まれる。
【００２３】
次に、操作部２０のハードウェア構成について説明する。図１に示すように、操作部２０は、ＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、フラッシュメモリ２４と、通信Ｉ／Ｆ２５と、接続Ｉ／Ｆ２６と、操作パネル２７と、外部接続Ｉ／Ｆ２８と、を備え、これらがシステムバス２９を介して相互に接続されている。
【００２４】
ＣＰＵ２１は、操作部２０の動作を統括的に制御する。ＣＰＵ２１は、ＲＡＭ２３をワークエリア（作業領域）としてＲＯＭ２２またはフラッシュメモリ２４などに格納されたプログラムを実行することで、操作部２０全体の動作を制御し、ユーザから受け付けた入力に応じた情報（画像）の表示などの後述する各種機能を実現する。
【００２５】
通信Ｉ／Ｆ２５は、ネットワーク３０と接続するためのインタフェースである。接続Ｉ／Ｆ２６は、通信路３００を介して本体部１０と通信するためのインタフェースである。
【００２６】
操作パネル２７は、ユーザの操作に応じた各種の入力を受け付けるとともに、各種の情報（例えば受け付けた入力に応じた情報、ＭＦＰ１の動作状況を示す情報、設定状態などを示す情報など）を表示する。この例では、操作パネル２７は、タッチパネル機能を搭載した液晶表示装置（ＬＣＤ）で構成されるが、これに限られるものではない。例えばタッチパネル機能が搭載された有機ＥＬ表示装置で構成されてもよい。さらに、これに加えて又はこれに代えて、ハードウェアキー等の操作部やランプ等の表示部を設けることもできる。なお、操作パネル２７は、この構成に限られるものではなく、画像を表示するとともに当該画像に応じた操作を受け付けるものであればよい。
【００２７】
外部接続Ｉ／Ｆ２８は、ＩＣカードリーダなどの周辺装置と接続するためのインタフェースである。
【００２８】
次に、ＭＦＰ１のソフトウェア構成について説明する。図２は、ＭＦＰのソフトウェア構成の一例を示す模式図である。図２に示すように、本体部１０は、アプリ層１０１と、サービス層１０２と、ＯＳ層１０３とを有する。アプリ層１０１、サービス層１０２、及びＯＳ層１０３の実体は、ＲＯＭ１２やＨＤＤ１４などに格納されている各種ソフトウェアである。ＣＰＵ１１が、これらのソフトウェアを実行することにより、各種の機能が提供される。
【００２９】
アプリ層１０１のソフトウェアは、ハードウェア資源を動作させて所定の機能を提供するためのソフトウェアであり、アプリケーションソフトウェア（以下の説明では、単に「アプリ」と称する場合がある）と言われる。例えばアプリとしては、コピー機能を提供するためのコピーアプリ、スキャナ機能を提供するためのスキャナアプリ、ファックス機能を提供するためのファックスアプリ、プリンタ機能を提供するためのプリンタアプリなどが挙げられる。
【００３０】
サービス層１０２のソフトウェアは、アプリ層１０１とＯＳ層１０３との間に介在し、アプリに対し、本体部１０が備えるハードウェア資源を利用するためのインタフェースを提供するためのソフトウェアである。より具体的には、ハードウェア資源に対する動作要求の受付、動作要求の調停を行う機能を提供するためのソフトウェアである。サービス層１０２が受け付ける動作要求としては、スキャナによる読み取りやプリンタによる印字などの要求が考えられる。
【００３１】
なお、サービス層１０２によるインタフェースの機能は、本体部１０のアプリ層１０１だけではなく、操作部２０のアプリ層２０１に対しても提供される。すなわち、操作部２０のアプリ層２０１（アプリ）も、サービス層１０２のインタフェース機能を介して、本体部１０のハードウェア資源（例えばプリントエンジン１７）を利用した機能を実現することができる。
【００３２】
ＯＳ層１０３のソフトウェアは、本体部１０が備えるハードウェア資源を制御する基本機能を提供するための基本ソフトウェア（オペレーティングシステム）である。サービス層１０２のソフトウェアは、各種アプリからのハードウェア資源の利用要求を、ＯＳ層１０３が解釈可能なコマンドに変換してＯＳ層１０３に渡す。そして、ＯＳ層１０３のソフトウェアによりコマンドが実行されることで、ハードウェア資源は、アプリの要求に従った動作を行う。
【００３３】
同様に、操作部２０は、アプリ層２０１と、サービス層２０２と、ＯＳ層２０３とを有する。操作部２０が備えるアプリ層２０１、サービス層２０２、及びＯＳ層２０３も、階層構造については本体部１０側と同様である。ただし、アプリ層２０１のアプリにより提供される機能や、サービス層２０２が受け付け可能な動作要求の種類は、本体部１０側とは異なる。アプリ層２０１のアプリは、操作部２０が備えるハードウェア資源を動作させて所定の機能を提供するためのソフトウェアであってもよいが、主として本体部１０が備える機能（コピー機能、スキャナ機能、ファックス機能、プリンタ機能）に関する操作や表示を行うためのＵＩ（ユーザインタフェース）の機能を提供するためのソフトウェアである。
【００３４】
操作部２０側のアプリ層２０１のアプリとしては、プリンタ機能に関する操作や表示を行うためのＵＩの機能を提供するためのプリンタアプリ、コピー機能に関する操作や表示を行うためのＵＩの機能を提供するためのコピーアプリ、ファックス機能に関する操作や表示を行うためのＵＩの機能を提供するためのファックスアプリなどが挙げられるが、これに限られるものではない。
【００３５】
なお、本実施形態では、機能の独立性を保つために、本体部１０側のＯＳ層１０３のソフトウェアと操作部２０側のＯＳ層２０３のソフトウェアは、別々の互いに独立したソフトウェアとなっている。つまり、本体部１０と操作部２０は、別々のオペレーティングシステムで互いに独立して動作する。例えば、本体部１０側のＯＳ層１０３のソフトウェア（第２のオペレーティングシステム）としてＬｉｎｕｘ（登録商標）を用い、操作部２０側のＯＳ層２０３のソフトウェア（第１のオペレーティングシステム）としてＡｎｄｒｏｉｄ（登録商標）を用いることも可能である。また、本体部１０、操作部２０ともにＡｎｄｒｏｉｄを用いるといった、同種のＯＳを用いることも可能である。すなわち、第１のオペレーティングシステムと第２のオペレーティングシステムは、別々のＯＳを用いてもよいし、同じＯＳを用いてもよい。
【００３６】
以上のように、本実施形態のＭＦＰ１において、本体部１０と操作部２０は別々のオペレーティングシステムで動作するため、本体部１０と操作部２０との間の通信は、共通の装置内のプロセス間通信ではなく、異なる装置間の通信として行われる。操作部２０が受け付けた情報（ユーザからの指示内容）を本体部１０へ伝達する動作（コマンド通信）や、本体部１０が操作部２０へイベントを通知する動作などがこれに該当する。ここでは、操作部２０が本体部１０へコマンド通信を行うことにより、本体部１０の機能を使用することができる。また、本体部１０から操作部２０に通知するイベントには、本体部１０における動作の実行状況、本体部１０側で設定された内容などが挙げられる。
【００３７】
また、本実施形態では、操作部２０に対する電力供給は、本体部１０から通信路３００を経由して行われているので、操作部２０の電源制御を、本体部１０の電源制御とは別に（独立して）行うことができる。
【００３８】
なお、この例では、本体部１０と操作部２０は、通信路３００を介して電気的かつ物理的に接続されているが、これに限ることはなく、操作部２０は、本体部１０から取り外し可能に設けられるようにしてもよい。この場合、本体部１０及び操作部２０に、例えば赤外線通信部、ＲＦ（Radio  Frequency）通信部、ブルートゥース（登録商標）通信部などの近距離無線通信部を設ける。または、本体部１０および操作部２０に、Ｗｉ−Ｆｉ（登録商標）などの無線ＬＡＮ通信機能を設け、図２に示すように無線ＬＡＮアクセスポイント（無線ＬＡＮＡＰ）３１及びネットワーク３０を介して相互に通信可能としてもよい。ＬＡＮは、「Local  Area  Network」の略記である。本体部１０から操作部２０を取り外し可能である場合、操作部２０は、通信路３００を介して本体部１０から供給された電力を二次電池に蓄電しておき、本体部１０から取り外された際に、二次電池に蓄電された電力を用いて動作して本体部１０と通信を行う。
【００３９】
次に、図３を用いて、本実施形態のＭＦＰ１の機能構成について説明する。図３は、ＭＦＰの機能構成の一例を示す図である。
【００４０】
まず、ＭＦＰ１の本体部１０側の機能について説明する。図３に示すように、本体部１０は、ＣＰＵ１１がプログラムを実行することで実現される機能（モジュール）である通信部１１１と、起動制御部１１２と、記憶部１１３とを備える。上記各部の一部はＣＰＵ１１がＲＯＭ１２又はＨＤＤ１４からソフトウェア（プログラム）を読み出して実行することにより上記各部がＲＡＭ１３上にロードされ、上記各部がＲＡＭ１３上に生成されるソフトウェア（プログラム）であってもよい。また、上記各部の一部又は全部を、演算処理を行うプロセッサなどのハードウェア回路で置き換えてもよい。
【００４１】
通信部１１１は、ＣＰＵ１１によってＲＯＭ１２から読み出した命令を実行することにより実現される。通信部１１１は、専用の通信路３００を経由して操作部２０と接続し、操作部２０との間でデータを送受信する。例えば、通信部１１１は、操作部２０で受け付けた各種の操作入力を受信して、対応する各部に受け渡す。また、通信部１１１は、各種の情報（例えば受け付けた入力に応じた情報、ＭＦＰ１の動作状況を示す情報、設定状態などを示す情報など）を操作部２０に表示させるためのデータを送信する。
【００４２】
また通信部１１１は、通信Ｉ／Ｆ１５を介してネットワーク３０を経由して、外部装置（クライアントＰＣなど）との間でデータを送受信して、対応する各部に受け渡す。例えば、通信部１１１は、外部装置から機能を実現するための指示やデータを受信して、対応する各部に受け渡す。
【００４３】
起動制御部１１２は、ＣＰＵ１１によってＲＯＭ１２から読み出した命令を実行することにより実現される。起動制御部１１２は、後述する操作部２０のアプリ連携部２１７、アプリ起動制御部２２０、及び同期処理部２２１の制御の下で、アプリ連携部２１７からのアプリ起動要求に対応する操作部２０で動作させる第１のアプリケーションを起動する前に、操作部２０の第１のオペレーティングシステム上で動作する第１のアプリケーションに対して、本体部１０の第２のオペレーティングシステム上で動作する第２のアプリケーションを同期させる制御を行う。すなわち、起動制御部１１２は、操作部２０で起動させるアプリに対応する本体部１０で起動させるアプリを起動させて同期させる処理を行う。本実施形態では、起動制御部１１２は、操作部２０で起動させるアプリが本体部１０の機能を使用するアプリであった場合に同期させる処理を行う。
【００４４】
具体的には、予め登録されたアプリケーションの実行順を示すワークフローに基づいて、受け付けたアプリ起動要求に対応する操作部２０で起動させる第１のアプリケーションが、例えば、本体部１０の機能を使用する「コピー」アプリである場合、起動制御部１１２は、まず、アプリ連携部２１７の同期処理部２２１から、操作部２０の「コピー」アプリに対応する本体部１０のコピーアプリ（第２のアプリケーション）の起動要求を受け付けて、本体部１０でコピーアプリを起動させる。そして、起動制御部１１２は、コピーアプリを起動させた後、コピーアプリの起動要求に対する応答であるコピーアプリ起動完了通知をアプリ連携部２１７の同期処理部２２１に対して送信する制御を行う。すなわち、起動制御部１１２は、操作部２０のアプリ連携部２１７の同期処理部２２１の制御の下で、コピーアプリ（第２のアプリケーション）を起動させることで、操作部２０のコピーアプリ（第１のアプリケーション）に対して本体部１０のコピーアプリ（第２のアプリケーション）を同期させる制御を行う。これにより、操作部２０のコピーアプリに対して本体部１０のコピーアプリを同期させる処理を行っている。
【００４５】
また、アプリ起動要求に対応する操作部２０で起動させる第１のアプリケーションが、例えば、本体部１０の機能を使用しない「メール」アプリである場合、起動制御部１１２は、まず、アプリ連携部２１７の同期処理部２２１から操作部２０の「メール」アプリに対応する本体部１０のホームアプリ（第２のアプリケーション）の起動要求を受け付けて、本体部１０でホームアプリを起動させる。そして、起動制御部１１２は、ホームアプリを起動させた後、ホームアプリの起動要求に対する応答である、ホームアプリ起動完了通知をアプリ連携部２１７の同期処理部２２１に対して送信する制御を行う。すなわち、起動制御部１１２は、操作部２０のアプリ連携部２１７の同期処理部２２１の制御の下で、ホームアプリ（第２のアプリケーション）を起動させることで、操作部２０のホームアプリ（第１のアプリケーション）に対して本体部１０のホームアプリ（第２のアプリケーション）を同期させる制御を行う。これにより、操作部２０のホームアプリに対して本体部１０のホームアプリを同期させる処理を行っている。なお、ホームアプリとは、操作部２０の複数の機能を利用するための操作受付画面を呼び出す初期画面を起動させるアプリケーション（ホームアプリ）に対応する本体部１０のアプリケーション（ホームアプリ）である。
【００４６】
記憶部１１３は、ＲＯＭ１２またはＨＤＤ１４に対応する。記憶部１１３は、各種のデータを記憶する。記憶部１１３は、例えば、本体部１０で起動する各種のアプリケーションを記憶する。アプリケーションとして、例えば、レガシーコピー、レガシースキャナ、レガシーファックス、レガシープリンタ、ホームなどのアプリケーションを記憶する。
【００４７】
また、記憶部１１３は、ＭＦＰ１の識別情報（機種、機番、ＩＤなど）を記憶する。
【００４８】
次に、ＭＦＰ１の操作部２０側の機能について説明する。図３に示すように、操作部２０は、ＣＰＵ２１がプログラムを実行することで実現される機能（モジュール）である通信部２１１と、入出力部２１２と、表示部２１３と、表示制御部２１４と、操作受付部２１５と、通知部２１６と、アプリ連携部２１７と、記憶部２１８とを備える。アプリ連携部２１７は、アプリ起動制御部２２０と、同期処理部２２１と、アプリ登録部２２２とを備える。上記各部の一部はＣＰＵ２１がＲＯＭ２２又はフラッシュメモリ２４からソフトウェア（プログラム）を読み出して実行することにより上記各部がＲＡＭ２３上にロードされ、上記各部がＲＡＭ２３上に生成されるソフトウェア（プログラム）であってもよい。また、上記各部の一部を、演算処理を行うプロセッサなどのハードウェア回路で置き換えてもよい。
【００４９】
通信部２１１は、ＣＰＵ２１によってＲＯＭ２２から読み出した命令を実行することにより実現される。通信部２１１は、専用の通信路３００を経由して本体部１０と接続し、本体部１０との間でデータを送受信する。例えば、通信部２１１は、操作部２０で起動させるコピーアプリに対応するコピーアプリの起動要求を本体部１０の起動制御部１１２に対して送信する。そして、通信部２１１は、コピーアプリの起動要求に対する応答である、コピーアプリ起動完了通知を受信する。
【００５０】
また、通信部２１１は、操作部２０で起動させる、例えば、ホームアプリの起動要求を本体部１０の起動制御部１１２に対して送信する。そして、通信部２１１は、ホームアプリの起動要求に対する応答である、ホームアプリ起動完了通知を受信する。
【００５１】
また、通信部２１１は、例えば、操作部２０で受け付けた各種の入力を本体部１０に送信する。また、通信部２１１は、例えば、各種の情報（例えば受け付けた入力に応じた情報、ＭＦＰ１の動作状況を示す情報、設定状態などを示す情報など）を操作部２０に表示させるためのデータを受信して、対応する各部に受け渡す。
【００５２】
また、通信部２１１は、通信Ｉ／Ｆ２５を介してネットワーク３０を経由して、外部装置（クライアントＰＣなど）との間でデータを送受信して、対応する各部に受け渡す。具体的には、通信部２１１は、外部装置から機能を実現するための指示やデータを受信して、対応する各部に受け渡す。
【００５３】
入出力部２１２は、各種データの入出力を行う。例えば、入出力部２１２は、ネットワークに接続された外部装置（ストレージ）にデータの保存を行ったり、データの読み出しを行ったりする。また、入出力部２１２は、記憶装置にデータの入出力を行う。
【００５４】
表示部２１３は、操作パネル２７の表示画面に対応する。表示部２１３は、表示制御部２１４の制御の下で、例えば、利用者に対して情報を提供するための表示情報（画面）を表示する。また、表示部２１３は、例えば、常時表示される特定の機能を利用するための画面を表示する。
【００５５】
また、表示部２１３は、例えば、後述するアプリ起動制御部２２０で起動されたアプリケーションの操作受付画面（ＵＩ（User  Interface）画面）を表示する。また例えば、表示部２１３は、アプリケーションを実行する順番を受け付ける画面を表示する。また例えば、表示部２１３は、操作部２０の複数の機能を利用するための操作受付画面を呼び出す初期画面（ホーム画面）を表示する（図９参照）。
【００５６】
表示制御部２１４は、ＣＰＵ２１によってＲＯＭ２２から読み出した命令を実行することにより実現される。表示制御部２１４は、ＣＰＵ２１で実行されるＬａｕｎｃｈｅｒとして実現できる。Ｌａｕｎｃｈｅｒはホーム画面を表示し、ユーザが操作部の各アプリを起動するＵＩを提供する。例えば、表示制御部２１４は、例えば、利用者に対して情報を提供するための表示情報（画面）を表示部２１３に表示させる制御を行う。また例えば、表示制御部２１４は、アプリ連携部２１７の制御の下、後述するアプリ登録部２２２でアプリケーションの登録を受け付ける場合に、最後に受け付けたアプリケーションを実行した後に実行可能なアプリケーションだけを表示部２１３に表示させる制御を行う。
【００５７】
また、表示制御部２１４は、アプリ登録部２２２で、実行順にアプリケーションをワークフローに登録した後に、操作部２０の複数の機能を利用するための操作受付画面（ＵＩ画面）を呼び出す初期画面（ホーム画面）に、ワークフローを呼び出すための画像を配置する制御を行う（図１７参照）。本実施形態では、例えば、操作部２０のアプリ層２０１に搭載されているアプリに対応するアイコンをホーム画面に表示させる制御を行う。
【００５８】
また、表示制御部２１４は、アプリ起動制御部２２０で起動されたアプリケーションの操作受付画面（ＵＩ画面）を表示部２１３に表示させる制御を行う。具体的には、表示制御部２１４は、後述するアプリ起動制御部２２０で起動されたアプリケーションが、例えば、「アプリ連携」アプリである場合、アプリ起動制御部２２０は、「アプリ連携」アプリを起動させる処理を行い、表示制御部２１４は、後述する図１０及び図１１に示すような「アプリ連携」アプリの操作受付画面を表示部２１３に表示させる制御を行う。つまり、アプリ起動制御部２２０が操作部２０で「アプリ連携」アプリを起動させると、表示制御部２１４は、表示部２１３に「アプリ連携」アプリの操作受付画面を表示させる制御を行う。
【００５９】
また例えば、表示制御部２１４は、記憶部２１８に記憶されたデータにアクセスするための識別情報（ＱＲコード（登録商標））を表示部２１３に表示させる制御を行う。
【００６０】
操作受付部２１５は、ＣＰＵ２１によってＲＯＭ２２から読み出した命令を実行することにより実現される。操作受付部２１５は、各種の入力を受け付ける。操作受付部２１５は、例えば、操作部２０の表示部２１３に表示された操作受付画面に応じた操作入力を受け付ける。具体的には、操作受付部２１５は、タッチパネル機能が搭載された操作パネル２７の画面（表示部２１３の画像が表示される面）に対するユーザのタッチ操作による入力を受け付ける。すなわち、操作部２０のアプリの操作受付画面が表示されている状態において、何れかのアイコンのタッチ操作が行われたアイコンの操作入力を受け付ける。そして、操作受付部２１５は、受け付けた操作に対応する処理を通知部２１６を介して通知する。
【００６１】
また、操作受付部２１５は、表示部２１３に常時表示される特定の機能を利用するための画面（ファンクションキー（ソフトウェアキー））が押下された場合、当該画面（ファンクションキー（ソフトウェアキー））に対応付けられた特定の機能を利用するための第１のオペレーティングシステム上で動作する第１のアプリケーションの起動を受け付ける。その後、操作受付部２１５は、受け付けた第１のアプリケーションの起動をアプリ起動制御部２２０に対して通知部２１６を介して通知する。具体的には、操作受付部２１５は、例えば、コピーアプリに対応付けられたファンクションキー（コピーキー２３１、図９参照）の画面が押下された場合、コピーアプリの起動を受け付ける。その後、操作受付部２１５は、コピーアプリ起動をアプリ起動制御部２２０に対して通知部２１６を介して通知する。
【００６２】
また、操作受付部２１５は、表示部２１３に常時表示される特定の機能を利用するための画面（ファンクションキー）のストップキー２３６（図９参照）が押下された場合、アプリケーションの停止を受け付ける。その後、操作受付部２１５は、アプリケーションのジョブを一時停止させるアプリ停止通知を本体部１０の起動制御部１１２に対して通知部２１６を介して通知する。
【００６３】
通知部２１６は、ＣＰＵ２１によってＲＯＭ２２から読み出した命令を実行することにより実現される。通知部２１６は、操作部２０の操作受付部２１５で受け付けた各種の操作に対応する処理を通知する。
【００６４】
例えば、通知部２１６は、操作部２０の操作受付部２１５で受け付けた第１のアプリケーションの起動をアプリ起動制御部２２０に対して通知する。
【００６５】
また、例えば、通知部２１６は、操作部２０の操作受付部２１５で受け付けたアプリケーションのジョブを一時停止させるアプリ停止通知を本体部１０の起動制御部１１２に対して通知する。
【００６６】
アプリ連携部２１７は、アプリ起動制御部２２０と、同期処理部２２１と、アプリ登録部２２２とを含む。アプリ連携部２１７、アプリ起動制御部２２０、同期処理部２２１、アプリ登録部２２２は、ＣＰＵ２１によってＲＯＭ２２から読み出した命令を実行することにより実現される。また、アプリ連携部２１７は、アプリ連携の仲介を行うモジュールと捉えることもできる。アプリ連携部２１７は、アプリ連携のためのアプリケーションを実行する順番を受け付けてワークフローを作成する。そして、ワークフローに登録された順番にアプリケーションの処理を実行させる制御を行う。アプリ連携部２１７は、アプリケーションの実行時には操作部２０に表示されるアプリ（起動中のアプリ）切り替えと本体部（コントローラ）１０で起動中のアプリ切り替えを制御して操作部２０のアプリと、本体部１０のアプリとの同期処理を行う。
【００６７】
例えば、アプリ連携部２１７は、予め登録されたアプリケーションの実行順を示すワークフローに基づいて、順にアプリケーションを起動させて処理を実行させる制御を行う。すなわち、アプリ連携部２１７は、ワークフローに登録された順番どおりに操作部２０で実行するアプリの実行要求をアプリ起動制御部２２０に送信する。
【００６８】
また、アプリ連携部２１７は、ワークフローに登録された順番にアプリケーションが処理したデータを、記憶部２１８に記憶させる制御を行う。
【００６９】
また、アプリ連携部２１７は、ワークフローに登録された順番にアプリケーションが処理したデータに識別情報を付与して保持し、続けて起動される次の順番のアプリケーションに対して該データの識別情報を受け渡す。
【００７０】
次に、アプリ起動制御部２２０について説明する。アプリ起動制御部２２０は、アプリ連携部２１７からアプリケーションの実行順を示すワークフローに基づいて、順に第１のオペレーティングシステム上で動作するアプリケーションの起動を要求するアプリ起動要求を受け付けた場合、起動させるアプリケーションのｘｍｌコード内にコード含有アプリ対応情報が記述されているか否かを解析して、操作部２０で起動させるアプリが本体部１０の機能（アプリ）を使用するアプリであるか否かを判断し、本体部１０の機能（アプリ）を使用するアプリである場合（アプリのｘｍｌコード内にコード含有アプリ対応情報が記述されている場合）には同期処理部２２１に対して、操作部２０で起動させるアプリに対応する本体部１０で起動させるアプリを起動させて同期させる処理を要求する。すなわち、アプリ起動制御部２２０は、操作部２０側で起動させるアプリに対応する本体部１０側で起動させるアプリが、「ホームアプリ」でない場合に、同期処理部２２１に対して、操作部２０で起動させるアプリに対応する本体部１０で起動させるアプリを起動させて同期させる処理を要求する。
【００７１】
次に、アプリ起動制御部２２０は、同期処理部２２１で操作部２０の第１のアプリケーション（例えばスキャンアプリ）と、本体部１０の第２のアプリケーション（例えばスキャンアプリ）を同期させる処理が行われた後に、アプリ連携部２１７から処理の実行を要求された操作部２０で動作させる第１のアプリケーション（スキャンアプリ）を起動させる制御を行う。そして、アプリ起動制御部２２０は、処理の実行を要求された第１のアプリケーション（スキャンアプリ）の処理の実行が完了した後に、本体部１０の起動制御部１１２に対して本体部１０側でホームアプリを起動させる要求をする制御を行う。本体部１０でホームアプリを起動させることで、次に操作部２０側で起動させるアプリが、本体部１０の機能（アプリ）を使用しないアプリであった場合、操作部２０で起動させるアプリと、本体部１０で起動させるアプリとの同期がとれないという不具合が発生しないことになる。
【００７２】
また、アプリ起動制御部２２０は、操作部２０で起動させる第１のアプリケーション内に含まれる、当該アプリケーションごとに、本体部１０で起動させるアプリケーションが対応付いたコード含有アプリ対応情報（アプリケーションのｘｍｌコード内のコード含有アプリ対応情報）を解析（参照）して、操作部２０で起動させるアプリケーションに対応する本体部１０で起動させるアプリケーションを指定したアプリ起動要求を本体部１０に対して送信する制御を行う。
【００７３】
例えば、第１のアプリケーションがコピーアプリの場合には、コピーアプリのｘｍｌコード内に「Ｃｏｐｙ」というコード含有アプリ対応情報（ｘｍｌコード）が記述されている。アプリ起動制御部２２０は、ｘｍｌコードを解析（参照）して「Ｃｏｐｙ」が記述されていれば本体部１０のアプリ「コピー」を指定した情報と判断して、本体部１０のアプリ「コピー」を指定したアプリ起動要求を本体部１０に対して送信する。また、例えば、第１のアプリケーションがスキャナアプリの場合には、スキャナアプリのｘｍｌコード内に「Ｓｃａｎ」というコード含有アプリ対応情報（ｘｍｌコード）が記述されている。アプリ起動制御部２２０は、ｘｍｌコードを解析（参照）して「Ｓｃａｎ」が記述されていれば本体部１０のアプリ「スキャナ」を指定した情報と判断して、本体部１０のアプリ「スキャナ」を指定したアプリ起動要求を本体部１０に対して送信する。また、例えば、第１のアプリケーションがファックスアプリの場合には、ファックスアプリのｘｍｌコード内に「Ｆａｘ」というコード含有アプリ対応情報（ｘｍｌコード）が記述されている。アプリ起動制御部２２０は、ｘｍｌコードを解析（参照）して「Ｆａｘ」が記述されていれば本体部１０のアプリ「ファックス」を指定した情報と判断して、本体部１０のアプリ「ファックス」を指定したアプリ起動要求を本体部１０に対して送信する。また、例えば、第１のアプリケーションがホームアプリの場合には、ホームアプリのｘｍｌコード内に「Ｈｏｍｅ」というコード含有アプリ対応情報（ｘｍｌコード）が記述されている。アプリ起動制御部２２０は、ｘｍｌコードを解析（参照）して「Ｈｏｍｅ」が記述されていれば本体部１０のアプリ「ホーム」を指定した情報と判断して、本体部１０のアプリ「ホーム」を指定したアプリ起動要求を本体部１０に対して送信する。
【００７４】
また、例えば、第１のアプリケーションがメールアプリの場合には、本体部１０の機能を利用しないので、メールアプリのｘｍｌコード内にはコード含有アプリ対応情報が記述されていない。アプリ起動制御部２２０は、ｘｍｌコード内を解析（参照）してコード含有アプリ対応情報が記述されていない場合には本体部１０の「ホーム」を指定した情報と判断して、本体部１０の「ホーム」を指定したアプリ起動要求を本体部１０に対して送信する。すなわち、アプリ起動制御部２２０は、アプリのｘｍｌコード内にコード含有アプリ対応情報が記述されていない場合には、全て本体部１０の「ホーム」を指定した情報と判断して、本体部１０の「ホーム」を指定したアプリ起動要求を本体部１０に対して送信する。
【００７５】
このように、アプリ起動制御部２２０は、ワークフローに基づいてアプリ連携部２１７から操作部２０で第１のアプリケーションを起動させるアプリ起動要求を受け付けた場合、アプリのｘｍｌコード内のコード含有アプリ対応情報（ｘｍｌコード）を解析（参照）して、本体部１０で起動させるアプリケーションを指定したアプリ起動要求を本体部１０に送信する。
【００７６】
また、アプリ起動制御部２２０は、記憶部２１８に記憶された操作部２０で起動させるアプリケーションごとに、本体部１０で起動させるアプリケーションを対応付けたアプリ対応情報を参照して、操作部２０で起動させるアプリケーションに対応する本体部１０で起動させるアプリケーションを指定したアプリ起動要求を本体部１０に対して送信する制御を行うようにしてもよい。すなわち、アプリ起動制御部２２０は、上述したように、コード含有アプリ対応情報（アプリケーションのｘｍｌコード内のコード含有アプリ対応情報）を解析（参照）して本体部１０で起動させるアプリケーションを指定するのではなく、予め記憶部２１８に記憶されているアプリ対応情報を直接参照して本体部１０で起動させるアプリケーションを指定したアプリ起動要求を送信することができる。
【００７７】
ここで、図４を用いて、アプリ対応情報について説明する。図４は、アプリ対応情報の一例について説明する図である。図４に示すように、アプリ対応情報は、操作部２０で起動させるアプリケーションごとに、本体部１０で起動させるアプリケーションが対応付いた情報である。
【００７８】
例えば、操作部２０のアプリ「コピー」には本体部１０のアプリ「コピー」が対応付いている。また例えば、操作部２０のアプリ「スキャン」には本体部１０のアプリ「スキャン」が対応付いている。また例えば、操作部２０のアプリ「ファックス」には本体部１０のアプリ「ファックス」が対応付いている。また例えば、操作部２０のアプリ「メール」には本体部１０のアプリ「ホーム」が対応付いている。また例えば、操作部２０のアプリ「データ入出力」には本体部１０のアプリ「ホーム」が対応付いている。このように、アプリ対応情報は、操作部２０のアプリに本体部１０のアプリが対応付いた情報である。従って、アプリ起動制御部２２０は、操作部２０で起動させるアプリケーションごとに、本体部１０で起動させるアプリケーションを対応付けた、図４に示したようなアプリ対応情報を直接参照して、本体部１０で起動させるアプリケーションを指定したアプリ起動要求を送信することができる。
【００７９】
図３に戻り説明を続ける。同期処理部２２１は、ＣＰＵ２１で実行されるＳＤＫサービス、ＯＣＳとして実現できる。ＳＤＫ（Software  Development  Kit）サービスはコントローラ側の起動アプリをコピー、スキャンなどホーム以外のアプリにする要求を行う。ＯＣＳ（オペレーションコントロールサービス）はコントローラ側の起動アプリをホームにする要求を行う。
【００８０】
同期処理部２２１は、アプリ連携部２１７のアプリ起動制御部２２０から、操作部２０で起動させるアプリに対応する本体部１０で起動させるアプリを起動させて同期させる処理の要求を受け付けて、操作部２０の第１のオペレーティングシステム上で動作する第１のアプリケーションに対して、本体部１０の第２のオペレーティングシステム上で動作する第２のアプリケーションを同期させる処理を行う。例えば、同期処理部２２１は、操作部２０での画像を読み込む「スキャン」アプリ（第１のアプリケーション）と、操作部２０の「スキャン」アプリに対応する本体部１０での「スキャン」アプリ（第２のアプリケーション）とを同期させる処理を行う。
【００８１】
また、同期処理部２２１は、特定のアプリケーションを起動する場合に、操作部２０の第１のアプリケーション（例えばスキャンアプリ）と、本体部１０の第２のアプリケーション（スキャンアプリ）を同期させる処理を行う。特定のアプリケーションは、本体部１０の機能を使用するアプリケーションである。すなわち、同期処理部２２１は、操作部２０のアプリケーションが本体部１０の機能（アプリケーション）を使用する場合に、上記の同期処理を行う。本体部１０の機能（アプリケーション）を使用するアプリケーションとは、例えば、コピーアプリ、スキャナアプリ、ファックスアプリ、プリンタアプリ等であるが、これに限ることはなく任意である。なお、本体部１０の機能（アプリケーション）を使用しないアプリケーションとしては、例えば、メールアプリ、ＱＲコード（登録商標）アプリ、入出力アプリ（Docs  Connect）、ブラウザアプリ、ギャラリーアプリ等であるが、これに限ることはなく任意である。
【００８２】
アプリ登録部２２２は、操作部２０の第１のオペレーティングシステム上で動作させるアプリケーションを、実行する順番で受け付けて、実行順に受け付けたアプリケーションをアプリケーションの実行順を示すワークフローに登録する。アプリ登録部２２２は、アプリを実行順に登録したワークフローに識別情報を付けて記憶部２１８の所定領域に記憶させる。なお、登録されたワークフローは、ネットワークに接続された外部装置等のデータベースに記憶させるようにしてもよい。
【００８３】
記憶部２１８は、ＲＯＭ２２またはフラッシュメモリ２４に対応する。記憶部２１８は、操作部２０で起動させるアプリケーションごとに、本体部１０で起動させるアプリケーションを対応付けたアプリ対応情報を記憶する。なお、アプリ対応情報は、操作部２０に新たなアプリが追加された場合や対応情報が変更された場合には更新される。なお、アプリ対応情報は、上記の図４を用いて説明したとおりである。
【００８４】
記憶部２１８は、各種のデータを記憶する。記憶部２１８は、例えば、操作部２０で起動する各種のアプリケーションを記憶する。アプリケーションとして、例えば、かんたんコピー、かんたんスキャナ、かんたんファックス、プリンタ、ホーム、アプリ連携アプリ等のアプリケーションを記憶する。
【００８５】
次に、アプリを連携したワークフローの利用の概要について説明する。図５および図６は、アプリを連携したワークフローの利用の概要について説明する図である。図５に示すように、まずユーザは、ワークフローの作成を行う。ユーザが、ホーム画面からアプリ連携アイコン２４５（図９）を選択してワークフロー作成画面を起動させる（図１０）。アプリ連携部２１７は、各アプリが提供する機能のリストを取得し、ユーザに提示する。ユーザは提示された機能を組み合わせ、ワークフローを作成して登録する。
【００８６】
次に図６に示すように、ユーザが、作成して登録したワークフローの実行を要求する。アプリ連携部２１７は、ワークフローに登録されたとおりの順序で各アプリが提供する機能を実行する。つまり、ワークフローの順番で操作部２０のアプリを起動させて処理を実行させる。
【００８７】
次にワークフロー作成画面表示の流れを説明する。図７は、ワークフロー作成画面表示のシーケンス図である。
【００８８】
ユーザは、操作受付画面を呼び出すホーム画面（図９）で、アプリ連携アイコン２４５を選択し、アプリ連携アプリの操作受付画面（図１０）でワークフロー作成アイコン２５１を押下する（ステップＳ１）。操作受付部２１５は、ワークフロー作成画面表示を受け付けて（ステップＳ２）、表示制御部２１４にワークフロー作成画面表示を通知する（ステップＳ３）。表示制御部２１４は、ワークフロー作成画面起動要求をアプリ連携部２１７に送信する（ステップＳ４）。アプリ連携部２１７は、ワークフロー作成画面起動要求を受け付けて（ステップＳ５）、ワークフローに組み込み可能な機能（アプリ）のリストを記憶部２１８（Ａｎｄｒｏｉｄ  Ｆ／Ｗ）に取得しに行き（ステップＳ６）、記憶部２１８が保持している機能（アプリ）のリストを取得する（ステップＳ７）。アプリ連携部２１７は、機能（アプリ）のリストを用いてワークフロー作成画面を起動させる制御を行う（ステップＳ８）。アプリ連携部２１７は、ワークフロー作成画面表示の指示を表示制御部２１４に行い（ステップＳ９）、表示制御部２１４は、ワークフロー作成画面を表示する（ステップＳ１０）。
【００８９】
上記のアプリ連携部２１７が取得する機能（アプリ）のリストデータの実体は、実際にそれぞれの機能の処理を担うアプリ（例えばスキャンであれば操作部２０のスキャンアプリ）のメタデータに記載されており、以下に示す情報を持っている。図８は、各機能のメタデータの一例を示す図である。図８に示すように、機能のメタデータは、項目と値が対応付いた情報である。図８の例では、名前は「任意の文字列」、入力データ形式は［「なし」もしくは「任意の文字列」もしくは「全て」もしくは「任意のファイル形式（例：ＰＦＤ、ＰＮＧ）」］、出力データ形式は［「なし」もしくは「任意の文字列」もしくは「全て」もしくは「任意のファイル形式（例：ＰＦＤ、ＰＮＧ）」］、使用するコントローラ側の機能は、［「なし」もしくは「コピー、スキャン等のコントローラ側のアプリ」］を示している。
【００９０】
図９は、操作部の複数の機能を利用するための操作受付画面（ＵＩ画面）を呼び出す初期画面（ホーム画面）の一例を示す図である。
【００９１】
図９の例は、操作部２０の複数の機能を利用するための操作受付画面（ＵＩ画面）を呼び出す初期画面（ホーム画面）の一例である。図９の例は、ホーム画面の一例であるため、表示部２１３の中央部分には、操作部２０の複数の機能を利用するためのアイコン２４１〜２４７が表示されている。すなわち、コピーアイコン２４１、ファックスアイコン２４２、スキャンアイコン２４３、プリンタアイコン２４４、アプリ連携アイコン２４５、アプリＢアイコン２４６、ブラウザアイコン２４７の各アプリを起動させるためのアイコン２４１〜２４７が表示されている。これらのアイコン２４１〜２４７が押下されることでアイコン２４１〜２４７に対応する各アプリが起動される。
【００９２】
また、図９に示すように、バナー領域２３０には、常時表示される複数のファンクションキー（ソフトウェアキー）２３１〜２３８が表示されている。上側のバナー領域２３０には、コピーキー２３１、ファックスキー２３２、スキャナキー２３３、プリンタキー２３４、ブラウザキー２３５が並び、各ファンクションキー２３１〜２３５は、それぞれが対応するアプリを直接起動させるためのソフトウェアキーである。下側のバナー領域２３０には、表示中のアプリを停止させるストップキー２３６、ホーム画面を表示するためのホームキー２３７、ＭＦＰ１の状態を確認するための状態確認キー２３８が表示されている。これらは、いずれもファンクションキー（ソフトウェアキー）である。
【００９３】
図１０は、図９において、ホーム画面のアプリ連携アイコン２４５が押下された場合に表示される、アプリ連携機能を利用するための操作受付画面（ＵＩ画面）の一例を示す図である。図１０に示すように、操作受付画面には「ワークフロー作成」を行うためのアイコン２５１、「ワークフロー一覧」を表示するためのアイコン２５２、前の画面に「戻る」ためのアイコン２５３等が表示されている。
【００９４】
図１１は、図１０において、ワークフロー作成アイコン２５１が押下された場合に表示される、ワークフロー作成画面（ＵＩ画面）の一例を示す図である。図１１に示すように、ワークフロー作成画面には、作成しているワークフローが表示される領域２５５と、ワークフローに追加可能な機能リストが表示される領域２５６と、登録名を入力する領域２５７とが表示されている。なお、本実施形態では、機能リストの「機能」とはその機能を実行（処理）できる「アプリ」のことを示す。
【００９５】
図１１の例では、作成しているワークフローは「スキャン（カラー）」、「ネットワーク上のストレージに保存」を示し、上から順番に実行されることになる。領域２５６に表示される機能リストは、上記の図７のステップＳ７で取得した機能リストのうち、現在のワークフローに追加可能な機能（アプリ）が表示されている。すなわち、「ネットワーク上のストレージに保存」に続けて、追加可能な機能（アプリ）を表示（提示）するようになっている。図１１の例では、「ネットワーク上のストレージに保存」に続けて、追加可能な機能（アプリ）リストとして、スキャンアプリ、入出力アプリ、メールアプリ、コピーアプリであることが示されている。
【００９６】
図１１に示すワークフロー作成画面において、領域２５６に表示されている機能（アプル）をドラッグして、領域２５５の追加したい位置でドロップすることで、ワークフローに処理を追加することができる。ワークフローの作成が終了したら、領域２５７に登録名を入力して登録ボタンを押下すると、アプリ連携部２１７の記憶部２１８（データベース）にワークフローが登録される。
【００９７】
図１２は、ワークフローのデータの一例を示す図である。図１２に示すように、ワークフローのデータは、実行順序と、起動情報と、名前と、入力データ形式と、出力データ形式と、使用するコントローラ側の機能とを対応付けた情報である。すなわち、実行順序と、機能を起動するための情報と、図８で示した機能のメタデータとを対応付けた情報である。機能を起動するための情報の一例としては、Ａｎｄｒｏｉｄ  ＯＳにおいて他のアプリを起動するための起動インテントのＵＲＩ表現が挙げられる。
【００９８】
ワークフローに追加可能な機能は、アプリ連携部２１７が、図８で示したデータのうち出力データ形式と入力データ形式が整合するか否かで判断する。図１３は、ワークフローを作成する際に組み合わせられる機能の一例を示す図である。図１３に示すように、機能Ａの出力データ形式は「ＰＮＧ」であり、機能Ｂの入力データ形式は「ＰＮＧ」であるため出力データ形式と入力データ形式が整合する。よって、機能Ａ（アプリ）に続けて機能Ｂ（アプリ）はワークフローに登録することが可能である。図１４は、ワークフローを作成する際に組み合わせられない機能の一例を示す図である。図１４に示すように、機能Ａの出力データ形式は「ＰＮＧ」であり、機能Ｂの入力データ形式は「ＰＤＦ」であるため出力データ形式と入力データ形式が整合しない。よって、機能Ａ（アプリ）に続けて機能Ｂ（アプリ）はワークフローに登録することができない。以上のように、図１３及び図１４の例では、ワークフローを作成する際に、最後に受け付けた機能（アプリ）に続けて、組み合わせられる機能（アプリ）の例と、組み合わせられない機能（アプリ）の例を示したものである。
【００９９】
図１５は、ワークフローに登録する機能（アプリ）の組み合わせの一例を示す図である。図１５に示すように、ワークフローは、１つ目の機能（アプリ）で画像のスキャンを行い、２つ目の機能（アプリ）でネットワーク上のストレージ（サーバ装置）にスキャンした画像データを保存する。次に３つ目の機能（アプリ）で保存した画像データにアクセスするための識別情報（ＵＲＩ）をＱＲコード（登録商標）として表示部２１３に表示または印刷出力する。なお、３つ目の機能（アプリ）をメールアプリに置き換えれば、スキャンした画像データのＵＲＩをメールでユーザに送信することができる。このように、本実施形態のＭＦＰ１はユーザのニーズによって柔軟な処理を行うことが可能になる。
【０１００】
次に、ワークフロー登録の流れを説明する。図１６は、ワークフロー登録のシーケンス図である。まず、アプリ連携部２１７は、上述したようにワークフロー作成画面でワークフローを作成（ステップＳ２１）したワークフローを記憶部２１８（データベース）に登録する（ステップＳ２２）。アプリ連携部２１７は、登録したワークフローを起動するためのアイコンをホーム画面に登録する登録要求を表示制御部２１４に送信する（ステップＳ２３）。表示制御部２１４では、登録名でワークフローの配置を行って、ホーム画面に登録する（ステップＳ２４）。表示制御部２１４は、登録要求に対する応答としてアイコン登録完了通知をアプリ連携部２１７に送信する（ステップＳ２５）。アプリ連携部２１７は、アイコン登録完了通知を受け付けて、ホーム画面表示要求を表示制御部２１４に送信する（ステップＳ２６）。表示制御部２１４は、ホーム画面表示要求を受け付けて、ホーム画面を表示部２１３に表示させる制御を行う（ステップＳ２７）。
【０１０１】
図１７は、ホーム画面に登録されたワークフローを示す図である。図１７に示すように、ホーム画面には、登録したワークフローを呼び出して実行させるためのワークフローＡ（登録名）アイコン２４８が追加されて配置されている。
【０１０２】
次に、ワークフローの処理の実行について説明する。図１８は、ワークフローの処理の実行について説明するフローチャート図である。まずユーザは、図１７で示したワークフローＡアイコン２４８を押下すると、図１９に示すアプリ連携の操作受付画面（ＵＩ画面）が表示される。図１９は、アプリ連携の操作受付画面の一例を示す図である。図１９に示すように、操作受付画面には、登録名：ワークフローＡと、ワークフローを「実行」するためのアイコン２６１、前の画面に「戻る」ためのアイコン２６２等が表示されている。実行アイコン２６１が押下されると、アプリ連携部２１７は、ワークフロー実行を受け付ける（ステップＳ３１）。次にアプリ連携部２１７は、記憶部２１８に登録されたワークフローＡの読み込みを処理する（ステップＳ３２）。この際に読み込まれるデータは、図１２で示した、実行順序と、機能を起動するための情報と、図８の機能のメタデータとを対応付けた対応情報である。次にアプリ連携部２１７は、読み込んだデータから実行する機能（アプリ）の読み出しを行う（ステップＳ３３）。つまり、ワークフローの実行順番すべてのデータから順番ごとに実行する機能（アプリ）の読み出しを行う。
【０１０３】
次にアプリ連携部２１７は、図１２に示した対応情報から、実行する機能（アプリ）の「使用するコントローラ側の機能（アプリ）は「なし」か否かを判断する（ステップＳ３４）。すなわち、ワークフローから読み込んだ図１２の対応情報を参照し、例えば、実行順序１の機能（アプリ）に対応付いた、使用するコントローラ側の機能の項目を確認して、操作部２０側のアプリは、本体部１０側の機能（アプリ）を使用するアプリであるか否かを判断する（図１２の例では、実行順序１のアプリはコントローラ側のスキャン機能を使用するアプリと判断する）。使用するコントローラ側の機能の項目が「なし」でない場合（ステップＳ３４：Ｎｏ）、つまり、本体部１０側の機能（アプリ）を使用する場合、同期処理部２２１は操作部２０のアプリに対応するコントローラ側（本体部１０）のアプリを起動する処理を行う（ステップＳ３５）。すなわち、アプリ起動制御部２２０は、操作部２０で起動させるアプリのｘｍｌコード内のコード含有アプリ対応情報を解析して本体部１０のアプリを指定した情報を取得し、同期処理部２２１に操作部２０で起動させるアプリに対応する本体部１０で起動させるアプリを起動させて同期させる処理の要求を行い、同期処理部２２１は、操作部２０のアプリと、本体部１０のアプリとを同期させる処理を行う。そして、ステップＳ３６に移行する。
【０１０４】
「なし」であった場合（ステップＳ３４：Ｙｅｓ）、つまり、本体部１０側の機能（アプリ）を使用しない場合、アプリ起動制御部２２０は、アプリ連携部２１７から要求された操作部２０で動作させる第１のアプリケーション（例えばスキャンアプリ）を起動させ（ステップＳ３６）処理の実行をする制御を行う（ステップＳ３７）。次にアプリ連携部２１７は、コントローラ側のアプリを起動していたか否かを判断する（ステップＳ３８）。起動していた場合（ステップＳ３８：Ｙｅｓ）、アプリ起動制御部２２０はコントローラ側のホームアプリを起動する処理の要求を本体部１０の起動制御部１１２に送信する。起動制御部１１２はホームアプリの起動要求を受け付けて、ホームアプリを起動する（ステップＳ３９）。
【０１０５】
起動していない場合（ステップＳ３８：Ｎｏ）、アプリ連携部２１７は、データに、次に実行する機能（アプリ）があるか否かを判断する（ステップＳ４０）。次に実行する機能（アプリ）がある場合（ステップＳ４０：Ｙｅｓ）、ステップＳ３３に移行して処理を繰り返す。次に実行する機能（アプリ）がない場合（ステップＳ４０：Ｎｏ）、処理を終了する。
【０１０６】
次に、上記のステップＳ３５での処理について説明する。図２０は、コントローラ側のアプリ起動のシーケンス図である。ステップＳ３４で否定の判断がされる。つまり、実行する機能（アプリ）の「使用するコントローラ側の機能（アプリ）」がある場合である（ステップＳ５１）。
【０１０７】
アプリ連携部２１７のアプリ起動制御部２２０は、操作部２０のアプリに対応するコントローラ側でのアプリ起動要求を同期処理部２２１に送信する（ステップＳ５２）。同期処理部２２１は、操作部２０で起動するアプリに対応するコントローラ（本体部１０）側で起動するアプリ起動要求を本体部１０の起動制御部１１２に送信する（ステップＳ５３）。起動制御部１１２は、アプリ起動要求に基づき、対応するアプリを起動する（ステップＳ５４）。アプリを起動したら起動制御部１１２は、起動完了通知を同期処理部２２１に送信する（ステップＳ５５）。同期処理部２２１は、起動完了通知を受け付けて、アプリ連携部２１７に起動完了通知を送信する（ステップＳ５６）。
【０１０８】
次に、上記のステップＳ３９での処理について説明する。図２１は、コントローラ側のホームアプリ起動のシーケンス図である。ステップＳ３８で肯定の判断がされる。つまり、コントローラ側のアプリを起動していた場合である（ステップＳ６１）。アプリ連携部２１７のアプリ起動制御部２２０は、コントローラ側でのホームアプリ起動要求を同期処理部２２１に送信する（ステップＳ６２）。同期処理部２２１は、コントローラ（本体部１０）で起動するホームアプリ起動要求を本体部１０の起動制御部１１２に送信する（ステップＳ６３）。起動制御部１１２は、ホームアプリ起動要求に基づき、対応するホームアプリを起動する（ステップＳ６４）。ホームアプリを起動したら起動制御部１１２は、起動完了通知を同期処理部２２１に送信する（ステップＳ６５）。同期処理部２２１は、起動完了通知を受け付けて、アプリ連携部２１７に起動完了通知を送信する（ステップＳ６６）。
【０１０９】
このように、以上で説明した図１８、図２０、図２１で説明した処理フローによれば、アプリ連携部２１７からワークフローに登録された順番にアプリケーションのアプリ起動要求を受け付けた場合、起動要求された操作部２０のアプリが本体部１０の機能（アプリ）を使用するアプリの場合に、同期処理部２２１が操作部２０のアプリと、操作部２０のアプリに対応する本体部１０のアプリを同期させる処理を行うことで、操作部２０で起動するアプリと本体部１０で起動中のアプリを同期させることができる。すなわち、本実施形態では、ワークフローの順番で複数のアプリを実行させた場合でも、操作部で起動させるアプリの切り換えと、切り換える操作部のアプリに対応する本体部で起動させるアプリへの切り換えを同期させることができる。
【０１１０】
次に、図２０に示したコントローラ側のアプリ起動のシーケンス図において、ステップＳ５４の対応するアプリを起動する処理が失敗した場合について説明する。図２２は、コントローラ側のアプリ起動が失敗した場合の処理の一例を示すシーケンス図である。
【０１１１】
まず実行する機能（アプリ）の「使用するコントローラ側の機能（アプリ）」がある場合である（ステップＳ７１）。アプリ連携部２１７のアプリ起動制御部２２０は、操作部２０のアプリに対応するコントローラ側でのアプリ起動要求を同期処理部２２１に送信する（ステップＳ７２）。同期処理部２２１は、操作部２０で起動するアプリに対応するコントローラ（本体部１０）側で起動するアプリ起動要求を本体部１０の起動制御部１１２に送信する（ステップＳ７３）。起動制御部１１２は、アプリ起動要求に基づき、対応するアプリを起動する（ステップＳ７４）。アプリの起動に失敗したら起動制御部１１２は、起動失敗通知を同期処理部２２１に送信する（ステップＳ７５）。同期処理部２２１は、起動失敗通知を受け付けて、アプリ連携部２１７に起動失敗通知を送信する（ステップＳ７６）。アプリ起動制御部２２０は、起動要求リトライのタイムアウトタイマを起動する（ステップＳ７７）。その後、起動完了通知を受け付けるまで、又はタイムアウトタイマがタイムアウト（所定の時間が経過する）まで、同様の処理を繰り返す。
【０１１２】
すなわち、アプリ連携部２１７のアプリ起動制御部２２０は、操作部２０のアプリに対応するコントローラ側でのアプリ起動要求を同期処理部２２１に送信する（ステップＳ７８）。同期処理部２２１は、操作部２０で起動するアプリに対応するコントローラ（本体部１０）側で起動するアプリ起動要求を本体部１０の起動制御部１１２に送信する（ステップＳ７９）。起動制御部１１２は、アプリ起動要求に基づき、対応するアプリを起動する（ステップＳ８０）。アプリの起動に失敗したら起動制御部１１２は、起動失敗通知を同期処理部２２１に送信する（ステップＳ８１）。同期処理部２２１は、起動失敗通知を受け付けて、アプリ連携部２１７に起動失敗通知を送信する（ステップＳ８２）。
【０１１３】
次に、アプリ連携部２１７は、タイムアウトになった場合（ステップＳ８３）、表示制御部２１４にエラーメッセージを送信する（ステップＳ８４）。表示制御部２１４は、エラーメッセージを受け付けて、表示部２１３にエラーメッセージ表示をする（ステップＳ８５）。ユーザは、エラーメッセージを見て、エラー確認ボタンを押下する（ステップＳ８６）。操作受付部２１５は、エラー確認を受け付けて、アプリ連携部２１７にエラー確認通知を送信する（ステップＳ８７）。アプリ連携部２１７は、エラー確認通知を受け付けて、起動要求の終了処理を行う（ステップＳ８８）。
【０１１４】
なお、図２１に示したコントローラ側のホームアプリ起動のシーケンス図において、ステップＳ６４のホームアプリを起動する処理が失敗した場合も上記の図２２で説明した起動要求リトライの処理シーケンスを実行する。
【０１１５】
次に、ワークフローに登録された実行順番で実行する機能（アプリ）の間でのデータ受け渡し処理について説明する。図２３は、実行する機能（アプリ）の間でのデータ受け渡し処理のシーケンス図である。すなわち、アプリＡに続いてアプリＢを起動する場合である。
【０１１６】
まずアプリＡは実行中の任意のタイミングでアプリ連携部２１７にデータを含むデータ保存依頼を送信する（ステップＳ１０１）。アプリ連携部２１７は受信したデータにデータを識別するＩＤ（データＩＤ）を付与して記憶部２１８に保存する（ステップＳ１０２）。アプリ連携部２１７は、データＩＤをアプリＡに送信する（ステップＳ１０３）。アプリＡは、実行終了時に、次のアプリＢに送信する（受け渡したい）データのデータＩＤをアプリ連携部２１７に送信する（ステップＳ１０４）。アプリ連携部２１７は、受信したデータＩＤを保持する（ステップＳ１０５）。
【０１１７】
次に、アプリ連携部２１７は、アプリＢの実行開始時に、アプリＡから受信して保持しているデータＩＤをアプリＢに送信する（ステップＳ１０６）。アプリＢは、受信したデータＩＤを保持する（ステップＳ１０７）。アプリＢは、任意のタイミングでデータＩＤを用いて、データの取得要求をアプリ連携部２１７に送信する（ステップＳ１０８）。アプリ連携部２１７は、受信したデータＩＤに紐付く記憶部２１８に保存されているデータをアプリＢに送信する（ステップＳ１０９）。アプリＢは、データを取得する（ステップＳ１１０）。アプリ連携部２１７は、ワークフローに登録されている全ての機能（アプリ）の処理の実行が完了した時に、記憶部２１８で保持しているデータを全て消去して処理を終了する（ステップＳ１１１）。
【０１１８】
以上の処理方式を用いることにより、各アプリは統一的な方法で機能（アプリ）間でデータの送受信（受け渡し）ができるようになり、また、ワークフロー実行時のユーザのデータを消去することができる。
【０１１９】
以上説明したように、本実施形態によれば、アプリ連携部２１７からワークフローに登録された順番にアプリケーションのアプリ起動要求を受け付けた場合、起動要求された操作部２０のアプリが本体部１０の機能（アプリ）を使用するアプリの場合に、同期処理部２２１が操作部２０のアプリと、操作部２０のアプリに対応する本体部１０のアプリを同期させる処理を行うことで、操作部２０で起動するアプリと本体部１０で起動中のアプリを同期させることができる、という有利な効果を達成できる。
【０１２０】
以上、本発明に係る実施形態について説明したが、本発明は、上述の実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上述の実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【０１２１】
また、上述した実施形態の画像形成装置１で実行されるソフトウェア（プログラム）は、インストール可能な形式または実行可能な形式のファイルでフロッピー（登録商標）ディスク、ＣＤ（Compact  Disc）、ＣＤ−Ｒ（Compact  Disc-Recordable）、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）、ＤＶＤ（Digital  Versatile  Disc）、ＳＤメモリカード（SD  memory  card）、ＵＳＢメモリ（Universal  Serial  Bus  memory）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【０１２２】
さらに、本実施形態の画像形成装置１で実行されるソフトウェア（プログラム）を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態の画像形成装置１で実行されるソフトウェア（プログラム）をインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１２３】
本実施形態の画像形成装置１で実行されるソフトウェア（プログラム）は、上述した各機能部を含むモジュール構成となっており、これを実現するハードウェアとしてはＣＰＵ（プロセッサ）１１及び２１が上記ＲＯＭ１２及び２２からソフトウェア（プログラム）を読み出して実行することにより上記各機能部を実現するプログラムの実行コードがＲＡＭ１３及び２３上にロードされ、上記各機能部がＲＡＭ１３及び２３上に生成されるようになっている。
【０１２４】
なお、上記実施形態では、本発明の画像形成装置１を、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも２つの機能を有する複合機に適用した例を挙げて説明したが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置であればいずれにも適用することができる。
【０１２５】
本発明の範囲において、上記実施形態に対して多くの修正、変更が可能である。請求項に記載された発明の範囲において、上記実施形態として記載された形態以外の形態についても、本発明の実施の形態とすることが可能である。
【０１２６】
コンピュータのアーキテクチャや演算処理に関した情報処理技術によって、従来のコンピュータを本明細書に記載の発明を実施するようプログラムすることにより、本発明を実施することが可能である。ソフトウェア技術の分野における知識を有した技術者であれば、本明細書の記載に基づいて、本発明を実施するようコンピュータをプログラムするためのソフトウェアを作成することが可能である。
【０１２７】
さらに、本発明は、情報処理技術の分野における知識を有した技術者であれば、ＡＳＩＣ（Application  Specific  Integrated  Circuits）や、従来の回路モジュールを接続して構成した装置によって実施することが可能である。実施形態に記載された各機能のそれぞれは、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、ソフトウェアによって各機能を実行するようプログラムされたプロセッサや、各機能を実行するよう設計されたＡＳＩＣや回路モジュールなどのハードウェアを含むものとする。
【符号の説明】
【０１２８】
１  ＭＦＰ（画像形成装置）
１０  本体部
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ＨＤＤ
１５  通信Ｉ／Ｆ
１６  接続Ｉ／Ｆ
１７  プリントエンジン（画像形成部）
１８  システムバス
２０  操作部
２１  ＣＰＵ
２２  ＲＯＭ
２３  ＲＡＭ
２４  フラッシュメモリ
２５  通信Ｉ／Ｆ
２６  接続Ｉ／Ｆ
２７  操作パネル
２８  外部接続Ｉ／Ｆ
２９  システムバス
３０  ネットワーク
３１  無線ＬＡＮＡＰ
１０１  アプリ層
１０２  サービス層
１０３  ＯＳ層
１１１  通信部
１１２  起動制御部
１１３  記憶部
２０１  アプリ層
２０２  サービス層
２０３  ＯＳ層
２１１  通信部
２１２  入出力部
２１３  表示部
２１４  表示制御部
２１５  操作受付部
２１６  通知部
２１７  アプリ連携部
２１８  記憶部
２２０  アプリ起動制御部
２２１  同期処理部
２２２  アプリ登録部
２３０  バナー領域
２３１  コピーキー
２３２  ファックスキー
２３３  スキャナキー
２３４  プリンタキー
２３５  ブラウザキー
２３６  ストップキー
２３７  ホームキー
２３８  状態確認キー
２４１  コピーアイコン
２４２  ファックスアイコン
２４３  スキャンアイコン
２４４  プリンタアイコン
２４５  アプリ連携アイコン
２４６  アプリＢアイコン
２４７  ブラウザアイコン
２４８  ワークフローＡアイコン
２５１  ワークフロー作成アイコン
２５２  ワークフロー一覧アイコン
２５３  戻るアイコン
２５５、２５６、２５７  領域
２６１  実行アイコン
２６２  戻るアイコン
３００  通信路
【先行技術文献】
【特許文献】
【０１２９】
【特許文献１】特開２０１４−９５９８６号公報
【図１】
2017123610.tif 000003
【図２】
2017123610.tif 000004
【図３】
2017123610.tif 000005
【図４】
2017123610.tif 000006
【図５】
2017123610.tif 000007
【図６】
2017123610.tif 000008
【図７】
2017123610.tif 000009
【図８】
2017123610.tif 000010
【図９】
2017123610.tif 000011
【図１０】
2017123610.tif 000012
【図１１】
2017123610.tif 000013
【図１２】
2017123610.tif 000014
【図１３】
2017123610.tif 000015
【図１４】
2017123610.tif 000016
【図１５】
2017123610.tif 000017
【図１６】
2017123610.tif 000018
【図１７】
2017123610.tif 000019
【図１８】
2017123610.tif 000020
【図１９】
2017123610.tif 000021
【図２０】
2017123610.tif 000022
【図２１】
2017123610.tif 000023
【図２２】
2017123610.tif 000024
【図２３】
2017123610.tif 000025