(57)【要約】【課題】ブラウザアプリの不具合が生じた場合であっても、ユーザが継続して操作を行なうことができる画像形成装置を提供すること。【解決手段】画像形成装置は、第１および第２のブラウザアプリケーションプログラム（１００Ａ，１００Ｂ）を含む複数のブラウザアプリケーションを格納する記憶装置（２３０）を備える。制御装置（２１０）は、記憶装置に格納された第１のブラウザアプリケーションに基づく第１ブラウザを表示装置（２６０）に表示し、第１のブラウザアプリケーションに対して受け付けたユーザ操作を示す操作情報を記憶装置に記憶し、第１のブラウザアプリケーションの不具合が検知された場合に、第１ブラウザに替えて、第２のブラウザアプリケーションに基づく第２ブラウザを、記憶装置に記憶された操作情報に基づいてユーザ操作を反映した状態で表示装置に表示する。【選択図】図１
2018073347.tif 000002
【特許請求の範囲】
【請求項１】
画像形成のための操作画面を含む画像を表示するための表示装置と、
入力装置と、
第１および第２のブラウザアプリケーションプログラムを含む複数のブラウザアプリケーションを格納するための記憶装置と、
前記複数のブラウザアプリケーションを実行可能に構成される制御装置とを備え、
前記複数のブラウザアプリケーションの各々は、前記表示装置に対応するブラウザを表示した状態で、前記入力装置を介してユーザ操作を受け付け可能に構成され、
前記制御装置は、
前記記憶装置に格納された前記第１のブラウザアプリケーションに基づく第１ブラウザを前記表示装置に表示し、
前記第１のブラウザアプリケーションに対して受け付けたユーザ操作を示す操作情報を前記記憶装置に記憶し、
前記第１のブラウザアプリケーションの不具合が検知された場合に、前記第１ブラウザに替えて、前記第２のブラウザアプリケーションに基づく第２ブラウザを、前記記憶装置に記憶された操作情報に基づいて前記ユーザ操作を反映した状態で前記表示装置に表示する、画像形成装置。
【請求項２】
前記制御装置は、前記第１のブラウザアプリケーションで利用するコンテンツのアドレス情報、前記第１ブラウザ上で選択された操作を示す情報、前記第１ブラウザ上で選択された位置を示す座標情報、および前記第１ブラウザ上で入力された文字情報のうち少なくともいずれかの情報を、前記第１のブラウザアプリケーションに対して受け付けたユーザ操作を示す操作情報として前記記憶装置に記憶するように構成される、請求項１に記載の画像形成装置。
【請求項３】
前記制御装置は、
前記第１のブラウザアプリケーションに基づく前記第１ブラウザを前記表示装置に表示している間に、前記第２のブラウザアプリケーションも実行し、
前記第１のブラウザアプリケーションに対するユーザ操作を受け付けた場合に、当該ユーザ操作を反映させた後の前記第１のブラウザアプリケーションが正常に動作していると判断した後に、当該ユーザ操作を前記第２のブラウザアプリケーションにも反映させる、請求項１または２に記載の画像形成装置。
【請求項４】
サーバ装置と通信するための通信インターフェイスをさらに備え、
前記複数のブラウザアプリケーションの各々は、
前記入力装置が受け付けたユーザ操作を示す操作情報を前記サーバ装置に送信し、
前記サーバ装置から前記操作情報に対応するコンテンツを受信して、
前記受信したコンテンツを前記表示装置に表示するように構成され、
前記制御装置は、
前記第１のブラウザアプリケーションに基づく前記第１ブラウザを前記表示装置に表示し、かつ、前記第２のブラウザアプリケーションを実行している状態において、前記入力装置からユーザ操作を受け付けた場合に、前記第１のブラウザアプリケーションによって前記ユーザ操作を示す操作情報を前記サーバ装置に送信し、前記第２のブラウザアプリケーションによる前記ユーザ操作を示す操作情報の前記サーバ装置への送信を制限する、請求項１〜３のいずれか１項に記載の画像形成装置。
【請求項５】
前記制御装置は、前記第１のブラウザアプリケーションの不具合が検知されたことに応じて前記第１ブラウザに替えて前記第２ブラウザを前記表示装置に表示した後に、前記第１のブラウザアプリケーションを初期化する、請求項１〜４のいずれか１項に記載の画像形成装置。
【請求項６】
前記第１のブラウザアプリケーションの種類と前記第２のブラウザアプリケーションの種類とは、同じである、請求項１〜５のいずれか１項に記載の画像形成装置。
【請求項７】
前記制御装置は、前記第１のブラウザアプリケーションの不具合が検知されたことに応じて前記第１ブラウザに替えて前記第２ブラウザを前記表示装置に表示した後に、前記第２のブラウザアプリケーションに対して、前記第１のブラウザアプリケーションの不具合を引き起こしたユーザ操作を再び受け付けた場合に、前記表示装置に不具合が発生する旨を警告するメッセージを表示する、請求項６に記載の画像形成装置。
【請求項８】
前記制御装置は、前記第１のブラウザアプリケーションの不具合が検知されたことに応じて前記第１ブラウザに替えて前記第２ブラウザを前記表示装置に表示した後に、前記第２のブラウザアプリケーションに対して、前記第１のブラウザアプリケーションの不具合を引き起こしたユーザ操作を再び受け付けた場合に、前記第２ブラウザに替えて前記第１および第２のブラウザアプリケーションとは種類の異なる第３のブラウザアプリケーションに基づく第３ブラウザを前記表示装置に表示する、請求項１〜７のいずれか１項に記載の画像形成装置。
【請求項９】
前記複数のブラウザアプリケーションは、前記第１および第２のブラウザアプリケーションの種類とは異なる種類の第３のブラウザアプリケーションをさらに含み、
前記制御装置は、前記第１のブラウザアプリケーションの不具合を検知したことに応じて前記第１ブラウザに替えて前記第２ブラウザを前記表示装置に表示した後に、予め定められた条件を満たす前に前記第２のブラウザアプリケーションの不具合が検知された場合に、前記第２ブラウザに替えて前記第３のブラウザアプリケーションに基づく第３ブラウザを前記表示装置に表示する、請求項６に記載の画像形成装置。
【請求項１０】
前記予め定められた条件は、前記第２ブラウザを前記表示装置に表示してから予め定められた時間を経過すること、および前記第２ブラウザを前記表示装置に表示してから予め定められた回数のユーザ操作を前記入力装置が受け付けたこと、のうち少なくともいずれかを含む、請求項９に記載の画像形成装置。
【請求項１１】
前記複数のブラウザアプリケーションは、前記第１および第２のブラウザアプリケーションの種類とは異なる種類の第３のブラウザアプリケーションをさらに含み、
前記制御装置は、同一のユーザ操作に対して前記第１および第２のブラウザアプリケーションの不具合が検知された回数の総和が予め定められた回数に到達した場合に、前記第３のブラウザアプリケーションに基づく第３ブラウザを前記表示装置に表示する、請求項６に記載の画像形成装置。
【請求項１２】
前記第１のブラウザアプリケーションの種類と前記第２のブラウザアプリケーションの種類とは、異なる、請求項１〜５のいずれか１項に記載の画像形成装置。
【請求項１３】
前記制御装置は、
前記第１のブラウザアプリケーションの不具合が検知された場合に、ユーザから前記第１のブラウザアプリケーションを除く前記複数のブラウザアプリケーションのうち一のブラウザアプリケーションの選択を受け付け、
前記第１ブラウザに替えて、前記選択された一のブラウザアプリケーションに基づくブラウザを、前記記憶装置に記憶された操作情報に基づいて前記ユーザ操作を反映した状態で前記表示装置に表示する、請求項１〜１２のいずれか１項に記載の画像形成装置。
【請求項１４】
前記制御装置は、
前記第１ブラウザ上で選択された位置を示す座標情報を、前記第１のブラウザアプリケーションに対して前記入力装置が受け付けたユーザ操作を示す操作情報として前記記憶装置に記憶し、
前記第１のブラウザアプリケーションの不具合を検知した場合に、前記第１のブラウザアプリケーションの種類と、前記選択された一のブラウザアプリケーションの種類とが同じであるか否かを判断し、
前記第１のブラウザアプリケーションの種類と、前記選択された一のブラウザアプリケーションの種類とが異なると判断した場合に、前記第１ブラウザで表示されるコンテンツの配置位置と、前記一のブラウザアプリケーションに基づくブラウザで表示されるコンテンツの配置位置とに基づいて、前記第１ブラウザ上で選択された位置を示す座標情報を補正して、
前記第１ブラウザに替えて、前記一のブラウザアプリケーションに基づくブラウザを、前記補正後の座標情報を反映した状態で前記表示装置に表示する、請求項１３に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、画像形成装置に関し、より特定的には、画像形成装置に搭載されるブラウザアプリケーションの制御に関する。
【背景技術】
【０００２】
近年の画像形成装置は、ブラウザアプリケーション（以下、「ブラウザアプリ」とも称する）を実行して、画像形成装置がクライアント端末として機能することがある。この場合、画像形成装置は、外部のサーバ装置から送信されるコンテンツを、ディスプレイに表示する。
【０００３】
このような画像形成装置において、ブラウザアプリがフリーズするなどの不具合が発生すると、ブラウジングのみならず、画像形成装置そのものが一時的に使用できなくなる可能性がある。
【０００４】
上記の問題に対し、特開２０１２−０６６４５３号公報（特許文献１）は、「エラー状態を検知した際に、サーバより提供されてブラウザにより表示部に表示されている操作画面１２０１に代えて、エラー状態に応じた画面１２０３を新規タブで表示し、検知手段がエラー解除を検知した際に、表示部に表示されている画面１２０３からＲＡＭ等に管理されている元の操作画面１２０１に切り替える」技術を開示している（「要約」参照）。
【０００５】
一方、画像形成装置に限らずブラウザを制御する技術として、特開２０１０−０４９５８２号公報（特許文献２）は、「導入仲介部によってマスタとなるアプリケーションに対する操作入力をスレーブ側に通知し、同期する処理が可能なアプリケーション切換実行装置」を開示している。さらに、このアプリケーション切替実行装置は、「マスタとなるアプリケーションにエラーが発生した場合に、円滑にスレーブのアプリケーションに切り換える」ように構成されている（「要約」参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−０６６４５３号公報
【特許文献１】特開２０１０−０４９５８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示される技術は、ブラウザアプリのタグ機能を利用して、エラー状態に応じた画面を表示するものであって、ブラウザアプリそのものがエラーにより動作不能となった場合の制御に関するものではない。
【０００８】
また、特許文献２に開示される技術は、Ｗｅｂアプリケーションと同じソースコードのＯＳで起動するアプリケーション（ソフト）をダウンロードして、これらのアプリケーションを並行処理するものである。このような技術は、豊富なストレージ容量とメモリ機能とを有するパソコン上で実行されることを想定している。そして、画像形成装置は、製造コストの問題から、一般的に限られたストレージ容量とメモリ機能としか有しておらず、この技術をそのまま転用することは難しい。したがって、ブラウザアプリの不具合が生じた場合のユーザの負担を軽減する画像形成装置が必要とされている。
【０００９】
本開示は、上記のような問題を解決するためになされたものであって、ある局面における目的は、ブラウザアプリの不具合が生じた場合であっても、ユーザが継続して操作を行なうことができる画像形成装置を提供することである。他の局面における目的は、ブラウザアプリの不具合が生じた場合に、不具合が生じるまでにユーザが操作した内容を、ユーザが継続して利用できる画像形成装置を提供することである。
【課題を解決するための手段】
【００１０】
ある実施形態に従う画像形成装置は、画像形成のための操作画面を含む画像を表示するための表示装置と、入力装置と、第１および第２のブラウザアプリケーションプログラムを含む複数のブラウザアプリケーションを格納するための記憶装置と、複数のブラウザアプリケーションを実行可能に構成される制御装置とを備える。複数のブラウザアプリケーションの各々は、表示装置に対応するブラウザを表示した状態で、入力装置を介してユーザ操作を受け付け可能に構成される。制御装置は、記憶装置に格納された第１のブラウザアプリケーションに基づく第１ブラウザを表示装置に表示し、第１のブラウザアプリケーションに対して受け付けたユーザ操作を示す操作情報を記憶装置に記憶し、第１のブラウザアプリケーションの不具合が検知された場合に、第１ブラウザに替えて、第２のブラウザアプリケーションに基づく第２ブラウザを、記憶装置に記憶された操作情報に基づいてユーザ操作を反映した状態で表示装置に表示する。
【００１１】
好ましくは、制御装置は、第１のブラウザアプリケーションで利用するコンテンツのアドレス情報、第１ブラウザ上で選択された操作を示す情報、第１ブラウザ上で選択された位置を示す座標情報、および第１ブラウザ上で入力された文字情報のうち少なくともいずれかの情報を、第１のブラウザアプリケーションに対して受け付けたユーザ操作を示す操作情報として記憶装置に記憶するように構成される。
【００１２】
好ましくは、制御装置は、第１のブラウザアプリケーションに基づく第１ブラウザを表示装置に表示している間に、第２のブラウザアプリケーションも実行し、第１のブラウザアプリケーションに対するユーザ操作を受け付けた場合に、当該ユーザ操作を反映させた後の第１のブラウザアプリケーションが正常に動作していると判断した後に、当該ユーザ操作を第２のブラウザアプリケーションにも反映させる。
【００１３】
好ましくは、画像形成装置は、サーバ装置と通信するための通信インターフェイスをさらに備える。複数のブラウザアプリケーションの各々は、入力装置が受け付けたユーザ操作を示す操作情報をサーバ装置に送信し、サーバ装置から操作情報に対応するコンテンツを受信して、受信したコンテンツを表示装置に表示するように構成される。制御装置は、第１のブラウザアプリケーションに基づく第１ブラウザを表示装置に表示し、かつ、第２のブラウザアプリケーションを実行している状態において、入力装置からユーザ操作を受け付けた場合に、第１のブラウザアプリケーションによってユーザ操作を示す操作情報をサーバ装置に送信し、第２のブラウザアプリケーションによるユーザ操作を示す操作情報のサーバ装置への送信を制限する。
【００１４】
好ましくは、制御装置は、第１のブラウザアプリケーションの不具合が検知されたことに応じて第１ブラウザに替えて第２ブラウザを表示装置に表示した後に、第１のブラウザアプリケーションを初期化する。
【００１５】
好ましくは、第１のブラウザアプリケーションの種類と第２のブラウザアプリケーションの種類とは、同じである。
【００１６】
さらに好ましくは、制御装置は、第１のブラウザアプリケーションの不具合が検知されたことに応じて第１ブラウザに替えて第２ブラウザを表示装置に表示した後に、第２のブラウザアプリケーションに対して、第１のブラウザアプリケーションの不具合を引き起こしたユーザ操作を再び受け付けた場合に、表示装置に不具合が発生する旨を警告するメッセージを表示する。
【００１７】
好ましくは、制御装置は、第１のブラウザアプリケーションの不具合が検知されたことに応じて第１ブラウザに替えて第２ブラウザを表示装置に表示した後に、第２のブラウザアプリケーションに対して、第１のブラウザアプリケーションの不具合を引き起こしたユーザ操作を再び受け付けた場合に、第２ブラウザに替えて第１および第２のブラウザアプリケーションとは種類の異なる第３のブラウザアプリケーションに基づく第３ブラウザを表示装置に表示する。
【００１８】
さらに好ましくは、複数のブラウザアプリケーションは、第１および第２のブラウザアプリケーションの種類とは異なる種類の第３のブラウザアプリケーションをさらに含む。制御装置は、第１のブラウザアプリケーションの不具合を検知したことに応じて第１ブラウザに替えて第２ブラウザを表示装置に表示した後に、予め定められた条件を満たす前に第２のブラウザアプリケーションの不具合が検知された場合に、第２ブラウザに替えて第３のブラウザアプリケーションに基づく第３ブラウザを表示装置に表示する。
【００１９】
さらに好ましくは、予め定められた条件は、第２ブラウザを表示装置に表示してから予め定められた時間を経過すること、および第２ブラウザを表示装置に表示してから予め定められた回数のユーザ操作を入力装置が受け付けたこと、のうち少なくともいずれかを含む。
【００２０】
さらに好ましくは、複数のブラウザアプリケーションは、第１および第２のブラウザアプリケーションの種類とは異なる種類の第３のブラウザアプリケーションをさらに含む。制御装置は、同一のユーザ操作に対して第１および第２のブラウザアプリケーションの不具合が検知された回数の総和が予め定められた回数に到達した場合に、第３のブラウザアプリケーションに基づく第３ブラウザを表示装置に表示する。
【００２１】
好ましくは、第１のブラウザアプリケーションの種類と第２のブラウザアプリケーションの種類とは、異なる。
【００２２】
好ましくは、制御装置は、第１のブラウザアプリケーションの不具合が検知された場合に、ユーザから第１のブラウザアプリケーションを除く複数のブラウザアプリケーションのうち一のブラウザアプリケーションの選択を受け付け、第１ブラウザに替えて、選択された一のブラウザアプリケーションに基づくブラウザを、記憶装置に記憶された操作情報に基づいてユーザ操作を反映した状態で表示装置に表示する。
【００２３】
さらに好ましくは、制御装置は、第１ブラウザ上で選択された位置を示す座標情報を、第１のブラウザアプリケーションに対して入力装置が受け付けたユーザ操作を示す操作情報として記憶装置に記憶し、第１のブラウザアプリケーションの不具合を検知した場合に、第１のブラウザアプリケーションの種類と、選択された一のブラウザアプリケーションの種類とが同じであるか否かを判断し、第１のブラウザアプリケーションの種類と、選択された一のブラウザアプリケーションの種類とが異なると判断した場合に、第１ブラウザで表示されるコンテンツの配置位置と、一のブラウザアプリケーションに基づくブラウザで表示されるコンテンツの配置位置とに基づいて、第１ブラウザ上で選択された位置を示す座標情報を補正して、第１ブラウザに替えて、一のブラウザアプリケーションに基づくブラウザを、補正後の座標情報を反映した状態で表示装置に表示する。
【発明の効果】
【００２４】
ある実施形態に従う画像形成装置は、ブラウザアプリの不具合が生じた場合であっても、ユーザの操作を継続して受け付けることができる。そのため、この画像形成装置は、ユーザの作業が中断されることを抑制し得る。
【００２５】
開示された技術的特徴の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解されるこの発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００２６】
【図１】実施形態に従う画像形成装置の構成および制御の概要を説明する図である。
【図２】ある実施形態に従う画像形成装置の構成例について説明する図である。
【図３】実施形態に従う制御装置のハードウェア構成および記憶装置のデータ構造を説明する図である。
【図４】ある実施形態に従う、サブブラウザアプリの制御について説明する図である。
【図５】ある実施形態に従うブラウザアプリの切替制御について説明するフローチャートである。
【図６】図５のブラウザ切替処理を説明するフローチャートである。
【図７】ある局面に従うブラウザアプリの切替処理について説明する図である。
【図８】図６のサブブラウザアプリに切り替わったブラウザアプリの処理を説明するフローチャートである。
【図９】ある局面に従うブラウザアプリの切替処理について説明する図である。
【図１０】図９のステップＳ９４０〜ステップＳ９６０の処理を説明する図である。
【図１１】図８のサブブラウザアプリへのユーザ操作の反映処理を説明するフローチャートである。
【図１２】ある実施形態に従う座標情報の補正処理について説明する図である。
【図１３】ある実施形態に従うブラウザアプリの不具合の検知処理、および不具合の警告処理について説明するフローチャートである。
【発明を実施するための形態】
【００２７】
以下、この技術的思想の実施形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００２８】
［技術思想］
図１は、実施形態に従う画像形成装置２００の構成および制御の概要を説明する図である。図１の分図（Ａ）を参照して、画像形成装置２００は、主な構成要素として、制御装置２１０と、記憶装置２３０と、操作パネル２６０とを有する。記憶装置２３０は、ブラウザアプリ１００Ａと、ブラウザアプリ１００Ｂとが格納される。操作パネル２６０は、ディスプレイ（表示装置）と、ユーザ操作を受け付けるためのタッチパネル（入力装置）とを含む。
【００２９】
制御装置２１０は、ブラウザアプリ１００Ａまたはブラウザアプリ１００Ｂを実行して、操作パネル２６０に対応するブラウザウィンドウを表示する。また、制御装置２１０は、ブラウザに対するユーザ操作を示す情報（以下、「操作情報」とも称する）を外部サーバ（不図示）に送信し、当該外部サーバから受信したコンテンツをブラウザウィンドウの中に表示する。ある局面において、ユーザは、操作パネル２６０を用いて操作情報を制御装置２１０に入力する。
【００３０】
分図（Ｂ）は、ある局面に従う操作パネル２６０の表示内容および制御装置２１０による制御を説明する図である。分図（Ｂ）を参照して、ある局面において、制御装置２１０は、ブラウザアプリ１００Ａを実行して、ブラウザアプリ１００Ａに対応するブラウザウィンドウ（１００Ａ）を表示している。このブラウザウィンドウ（１００Ａ）には、文字入力フォーム１１０と、チェックボックス１２０と、ボタン１３０とが表示されている。分図（Ｂ）に示される例において、ユーザは、文字入力フォーム１１０に「あいうえお」と入力し、チェックボックス１２０を有効化している。制御装置２１０は、このような、ブラウザアプリに対して受け付けたユーザ操作を示す情報（以下、「操作情報」とも称する）を記憶装置２３０に格納する。
【００３１】
一例として、分図（Ｂ）に示される状態において、ユーザがボタン１３０を押下した結果、外部サーバから受信したコンテンツにブラウザアプリ１００Ａが対応しておらず、ブラウザアプリ１００Ａがエラー状態（ユーザが操作不能な状態）になったとする。
【００３２】
制御装置２１０は、ブラウザアプリ１００Ａの不具合（エラー状態）を検知すると、ブラウザウィンドウ（１００Ａ）に替えて、ブラウザアプリ１００Ｂに対応するブラウザウィンドウ（１００Ｂ）を操作パネル２６０のディスプレイに表示する。
【００３３】
さらに、制御装置２１０は、記憶装置２３０に格納される操作情報をブラウザアプリ１００Ｂに反映する。その結果、ブラウザウィンドウ（１００Ｂ）には、「あいうえお」の文字が入力された文字入力フォーム１６０と、有効化されたチェックボックス１７０と、ボタン１８０とが表示される。文字入力フォーム１６０、チェックボックス１７０、ボタン１８０は、文字入力フォーム１１０、チェックボックス１２０、ボタン１３０にそれぞれ対応する。
【００３４】
上記によれば、画像形成装置２００は、操作パネル２６０に表示されるブラウザウィンドウに対応するブラウザアプリの不具合を検知した場合に、当該ブラウザアプリとは異なる他のブラウザアプリに対応するブラウザウィンドウを操作パネル２６０に表示する。これにより、ユーザは、継続して画像形成装置２００の操作を実行できる。
【００３５】
また、画像形成装置２００は、不具合が生じるまでにユーザが操作した内容を、切替後のブラウザウィンドウに反映する。そのため、ユーザは、不具合が生じるまでに操作した内容を、再び行なうといった手間が省ける。
【００３６】
また、一般的に画像形成装置の操作画面は、ファームウェアに組み込んだ構成を採用している。このような画像形成装置は、操作画面の修正や更新を行なう場合、ファームウェアをアップデートする必要があり、開発コストやユーザ負担が大きかった。このような問題に対し、実施形態に従う画像形成装置２００は、操作画面をウェブコンテンツとして外部サーバから提供され得る。これにより、画像形成装置２００の製造者または開発者は、操作画面の開発コストの低減、およびサービス提供のスピードを向上し得る。以下、このような画像形成装置の構成および制御の詳細について説明する。
【００３７】
［実施形態］
（画像形成装置２００）
図２は、ある実施形態に従う画像形成装置２００の構成例について説明する図である。図２を参照して、画像形成装置２００は、制御装置２１０と、通信インターフェイス（Ｉ／Ｆ）２２０と、記憶装置２３０と、給紙カセット２３５と、搬送経路２４０と、プリントエンジン２５０と、排紙トレイ２５５と、操作パネル２６０と、スキャナ２６５と、ＡＤＦ（Auto  Document  Feeder）２７０とを備える。
【００３８】
制御装置２１０は、画像形成装置２００の動作を制御する。通信インターフェイス２２０は、外部の外部装置２９０と通信可能に構成される。通信インターフェイス２２０は、一例として、無線ＬＡＮ（Local  Area  Network）カードであるとする。画像形成装置２００は、通信インターフェイス２２０を介してＬＡＮまたはＷＡＮ（Wide  Area  Network）に接続された外部装置２９０と通信する。
【００３９】
ある局面において、制御装置２１０は、操作情報を外部装置２９０に送信し、外部装置２９０から操作情報に対応するコンテンツを受信する。制御装置２１０は、受信したコンテンツを操作パネル２６０に表示する。
【００４０】
記憶装置２３０は、制御装置２１０が実行するための各種制御プログラムなどを格納する。記憶装置２３０に格納されるデータの詳細は、図３を用いて後述される。
【００４１】
給紙カセット２３５は、印刷ジョブの入力に応答して、自身に積載される用紙を、１番上のものから１枚ずつ搬送経路２４０へと送り出す。プリントエンジン２５０は、画像形成装置２００に入力される画像データ、およびスキャナ２６５で取り込んだ画像を用紙に形成した後に、排紙トレイ２５５に用紙を排紙する。
【００４２】
操作パネル２６０は、ユーザが画像形成装置２００を操作するための入力を受け付ける。一例として、操作パネル２６０は、タッチパネルおよび液晶ディスプレイを有する画面と、物理ボタンとから構成される。画像形成装置２００を操作するための操作画面が、操作パネル２６０のディスプレイに表示される。
【００４３】
スキャナ２６５は、プランテンガラス上に載置された原稿を読み取り、制御装置２１０に出力する。ＡＤＦ２７０は、スキャナ２６５に向けて原稿を１枚ずつ自動的に搬送する。
【００４４】
（制御装置２１０のハードウェア構成）
図３は、実施形態に従う制御装置２１０のハードウェア構成および記憶装置２３０のデータ構造を説明する図である。図３を参照して、制御装置２１０は、ＣＰＵ（Central  Processor  Unit）３１０と、ＲＡＭ（Random  Access  Memory）３２０と、ＲＯＭ（Read  Only  Memory）３３０と、インターフェイス（Ｉ／Ｆ）３４０と、第１ＶＲＡＭ（Video  Random  Access  Memory）３５０と、第２ＶＲＡＭ３５５とを有する。
【００４５】
ＣＰＵ３１０は、記憶装置２３０に格納される各種制御プログラムを読み出して実行することで、画像形成装置２００の動作を制御する。
【００４６】
ＲＡＭ３２０は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などであり、ＣＰＵ３１０がプログラムを動作するために必要なデータや画像データを一時的に記憶する。したがって、ＲＡＭ３２０は、いわゆるワーキングメモリとして機能する。
【００４７】
ＲＯＭ３３０は、典型的には、フラッシュメモリなどであり、ＣＰＵ３１０で実行されるプログラムや、画像形成装置２００の動作にかかる各種設定情報を記憶する。
【００４８】
Ｉ／Ｆ３４０は、通信Ｉ／Ｆ２２０と、プリントエンジン２５０と、操作パネル２６０と、記憶装置２３０とそれぞれ信号を送受信する。Ｉ／Ｆ３４０は、ＵＳＢ（Universal  Serial  Bus）、ＤＶＩ（Digital  Visual  Interface）、ＨＤＭＩ（登録商標）（High-Definition  Multimedia  Interface）、ＲＳ−２３２Ｃその他の端子を用いて実現される。なお、Ｉ／Ｆ３４０は上述のものに限られない。
【００４９】
（記憶装置２３０のデータ構造）
記憶装置２３０には、ブラウザアプリ１００Ａ−１と、ブラウザアプリ１００Ａ−２と、ブラウザアプリ１００Ｂと、操作記憶部３６０と、ブラウザ切替アプリケーション（以下、「ブラウザ切替アプリ」とも称する）３７０と、画面コンテンツＤＢ（データベース）３９０とを有する。
【００５０】
ブラウザアプリ１００Ａ−１、１００Ａ−２、および１００Ｂは、操作パネル２６０が受け付けた、自身のブラウザアプリに対するユーザ操作を示す操作情報を外部装置２９０に送信するように構成される。さらに、これらのブラウザアプリは、外部装置２９０から受信した操作情報に対応するコンテンツ（例えば、操作画面、動画など）を操作パネル２６０のブラウザウィンドウに表示するように構成される。
【００５１】
ブラウザアプリ１００Ａ−１の種類とブラウザアプリ１００Ａ−２の種類とは同じものとする。ここでいうブラウザアプリの種類とは、例えば、バージョン、エンジン、製品名などを表す。また、ブラウザアプリ１００Ａ−１、１００Ａ−２の種類と、ブラウザアプリ１００Ｂの種類とは異なるものとする。また、ある局面において、ブラウザアプリ１００Ａ-１、１００Ａ−２、および１００Ｂは、いずれも共通するＯＳ（Operating  System）上で動作するものとする。
【００５２】
ある局面において、制御装置２１０のＣＰＵ３１０は、上記複数のブラウザアプリのうち１のブラウザアプリを実行して、当該ブラウザアプリに対応する画面情報（ブラウザウィンドウ）を第１ＶＲＡＭ３５０に展開する。また、ＣＰＵ３１０は、第１ＶＲＡＭ３５０に展開された画面情報を操作パネル２６０のディスプレイに表示する。これにより、ユーザは、当該１のブラウザアプリに対する操作を操作パネル２６０に入力できる。以下、ユーザが操作可能な状態にあるブラウザアプリを、「メインブラウザアプリ」とも称する。
【００５３】
ＣＰＵ３１０は、メインブラウザアプリを実行するとともに、メインブラウザアプリとは異なるサブブラウザアプリも実行し得る。サブブラウザアプリとは、ＣＰＵ３１０によって実行はされているものの、ユーザが操作可能な状態にないブラウザアプリのことをいう。ＣＰＵ３１０は、サブブラウザアプリに対応する画面情報を第２ＶＲＡＭ３５５に展開する。
【００５４】
操作記憶部３６０は、メインブラウザアプリに対するユーザ操作を示す操作情報を記憶する。ブラウザ切替アプリ３７０は、メインブラウザアプリの不具合を検知した場合に、メインブラウザアプリと、他のブラウザアプリ（例えば、サブブラウザアプリ）とを切り替える。画面コンテンツＤＢ３９０は、各ブラウザアプリで動作するコンテンツを保持する。
【００５５】
（サブブラウザアプリの制御）
図４は、ある実施形態に従う、サブブラウザアプリの制御について説明する図である。図４に示される例において、制御装置２１０のＣＰＵ３１０は、ブラウザアプリ１００Ａ−１をメインブラウザアプリとして、ブラウザアプリ１００Ａ−２をサブブラウザアプリとしてそれぞれ同時に実行している。
【００５６】
ブラウザアプリ１００Ａ−１に対応するブラウザウィンドウ（１００Ａ−１）、換言すれば操作パネル２６０には、文字入力フォーム４１０、チェックボックス４２０、およびボタン４３０，４４０が表示されている。ユーザは、文字入力フォーム４１０に「あいうえお」と入力し、チェックボックス４２０を有効化している。ボタン４３０，４４０には、ＵＲＬ（Uniform  Resource  Locator）が関連付けられている。
【００５７】
ある局面において、ＣＰＵ３１０は、ユーザがボタン４３０，４４０を押下したことを検知すると、当該ボタンに関連付けられたＵＲＬを外部装置２９０に送信する。外部装置２９０は、受信したＵＲＬに対応するコンテンツを画像形成装置２００に送信する。したがって、このＵＲＬは、コンテンツのアドレス情報として機能する。
【００５８】
ＣＰＵ３１０は、メインブラウザアプリであるブラウザアプリ１００Ａ−１に対するユーザ操作を受け付けると、当該ユーザ操作を示す操作情報を操作記憶部３６０に格納する。操作情報は、例えば、コンテンツのアドレス情報（ＵＲＬ）、ブラウザウィンドウ（１００Ａ−１）においてユーザが選択した位置を示す座標情報、ユーザが入力した文字を示す文字情報、ユーザが押下した物理ボタンの情報などを含む。
【００５９】
ＣＰＵ３１０は、メインブラウザアプリであるブラウザアプリ１００Ａ−１に対して何らかの操作を受け付けると、当該操作を実行した後に、ブラウザアプリ１００Ａ−１が正常に動作しているか否かを判断する。ＣＰＵ３１０は、ブラウザアプリ１００Ａ−１が正常に動作していると判断すると、操作記憶部３６０に記憶される操作情報に基づいて、ブラウザアプリ１００Ａ−１に対して受け付けたユーザ操作を、ブラウザアプリ１００Ａ−２に反映する。
【００６０】
その結果、第２ＶＲＡＭ３５５に展開されるブラウザウィンドウ（１００Ａ−２）には、「あいうえお」の文字が入力された文字入力フォーム４６０と、有効化されたチェックボックス４７０と、ボタン４８０，４９０とが表示される。
【００６１】
ある局面において、ＣＰＵ３１０は、操作パネル２６０に表示されるボタン４３０の押下を検知すると、当該ボタンに関連付けられたＵＲＬを外部装置２９０に送信する。ＣＰＵ３１０は、このＵＲＬに対応するコンテンツを外部装置２９０から受信して、ブラウザウィンドウ（１００Ａ−１）にコンテンツを表示する。その後、ＣＰＵ３１０は、ブラウザアプリ１００Ａ−１が正常に動作していると判断すると、ブラウザアプリ１００Ａ-１が受け付けた一連のユーザ操作を、ブラウザアプリ１００Ａ-２にも反映する。このとき、ボタン４３０に対応するボタン４８０が押下されることになるが、ＣＰＵ３１０は、ボタン４８０に関連付けられたＵＲＬを外部装置２９０に送信しない。ボタン４３０に関連付けられたＵＲＬと、ボタン４８０に関連付けられたＵＲＬとは同じＵＲＬであるためである。これにより、画像形成装置２００は、不必要なネットワークトラフィックを軽減し得る。次に、図５を用いて上記一連のブラウザアプリの切替制御について説明する。
【００６２】
（ブラウザ切替の制御フロー）
図５は、ある実施形態に従うブラウザアプリの切替制御について説明するフローチャートである。図５に示される処理は、ＣＰＵ３１０が、記憶装置２３０に格納されるブラウザ切替アプリ３７０を実行することにより実現され得る。他の局面において、処理の一部または全部が、回路素子その他のハードウェアによって実行されてもよい。図５に示される例において、制御装置２１０のＣＰＵ３１０は、ブラウザアプリ１００Ａ−１をメインブラウザアプリとして、ブラウザアプリ１００Ａ−２をサブブラウザアプリとしてそれぞれ同時に実行しているものとする。これらの条件は、後述する図６，７，８，９，１１および１３に示される処理においても同様とする。
【００６３】
ステップＳ５１０において、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、メインブラウザアプリであるブラウザアプリ１００Ａ-１に対するユーザ操作を受け付けたか否かを判断する。ある局面において、ＣＰＵ３１０は、操作パネル２６０が何らかのユーザ操作を受け付けた場合に、メインブラウザアプリに対するユーザ操作を受け付けたと判断し得る。
【００６４】
ＣＰＵ３１０は、メインブラウザアプリに対するユーザ操作を受け付けたと判断した場合（ステップＳ５１０においてＹＥＳ）、処理をステップＳ５２０に進める。そうでない場合（ステップＳ５１０においてＮＯ）、ＣＰＵ３１０は、処理をステップＳ５１０に戻し、メインブラウザアプリに対するユーザ操作の入力を待機する。
【００６５】
ステップＳ５２０において、ＣＰＵ３１０は、ステップＳ５１０で受け付けたユーザ操作がメインブラウザプリを終了するための操作であるか否かを判断する。ＣＰＵ３１０は、受け付けたユーザ操作が、メインブラウザアプリを終了するための操作であると判断した場合（ステップＳ５２０においてＹＥＳ）、一連の処理を終了する。ＣＰＵ３１０は、受け付けたユーザ操作が、メインブラウザアプリを終了するための操作でないと判断した場合（ステップＳ５２０においてＮＯ）、処理をステップＳ５３０に進める。
【００６６】
ステップＳ５３０において、ＣＰＵ３１０は、メインブラウザアプリ（ブラウザアプリ１００Ａ-１）に対するユーザ操作を示す操作情報を、操作記憶部３６０に格納する。
【００６７】
ステップＳ５４０において、ＣＰＵ３１０は、ステップＳ５１０で検出したユーザ操作を反映した後のメインブラウザアプリが正常に動作しているか否かを判断する。ある局面において、各ブラウザアプリは、何らかのユーザ操作に従い動作した後に、自身が正常に動作していることを示す正常レスポンス通知をブラウザ切替アプリ３７０に通知する。ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、ステップＳ５１０でユーザ操作を検出してから予め定められた時間内にメインブラウザアプリから正常レスポンス通知を受信した場合、メインブラウザアプリが正常に動作していると判断し得る。一方、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、当該予め定められた時間内にメインブラウザアプリから正常レスポンス通知を受信しない場合、メインブラウザアプリが不具合状態（例えば、ユーザ操作不能な状態）であると判断し得る。
【００６８】
ＣＰＵ３１０は、メインブラウザアプリが正常に動作していると判断した場合（ステップＳ５４０においてＮＯ）、処理をステップＳ５５０に進める。一方、ＣＰＵ３１０は、メインブラウザアプリに不具合が生じたと判断した場合（ステップＳ５４０においてＹＥＳ）、処理をステップＳ５６０に進める。
【００６９】
ステップＳ５５０において、ＣＰＵ３１０は、ステップＳ５３０で操作記憶部３６０に記憶された操作情報に基づいて、メインブラウザアプリが受け付けたユーザ操作をサブブラウザアプリ（ブラウザアプリ１００Ａ-２）に反映する。これにより、サブブラウザアプリは、第２ＶＲＡＭに展開するブラウザウィンドウ（１００Ａ−２）を更新する。その後、ＣＰＵ３１０は、処理をステップＳ５１０に戻す。
【００７０】
ステップＳ５６０において、ＣＰＵ３１０は、ブラウザ切替処理を実行する。図６を用いてこの処理について説明する。ＣＰＵ３１０は、ブラウザ切替処理を実行した後、処理をステップＳ５１０に戻す。
【００７１】
図６は、図５のブラウザ切替処理を説明するフローチャートである。図６を参照して、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、ステップＳ６１０の処理を実行するとともに、ステップＳ６２０の処理を並行して行なう。なお、他の局面において、ステップＳ６２０の処理は、一連のブラウザ切替処理が終了するまでの任意のタイミングで実行され得る。
【００７２】
ステップＳ６１０において、ＣＰＵ３１０は、メインブラウザアプリであるブラウザアプリ１００Ａ-１が不具合状態であると判断したことに応じて、操作パネル２６０に表示される画像を、ブラウザウィンドウ（１００Ａ−１）からブラウザウィンドウ（１００Ａ−２）に切り替える。換言すれば、ＣＰＵ３１０は、ブラウザアプリ１００Ａ-２を、サブブラウザアプリから、ユーザが操作可能な状態であるメインブラウザアプリに切り替える。ある局面において、ＣＰＵ３１０は、第２ＶＲＡＭ３５５に展開される画像情報を第１ＶＲＡＭ３５０に展開することにより、ステップＳ６１０の処理を実行し得る。他の局面において、ＣＰＵ３１０は、操作パネル２６０のディスプレイに表示する画像情報を、第１ＶＲＡＭ３５０に展開される画像情報から、第２ＶＲＡＭ３５５に展開される画像情報に切り替えることにより、ステップＳ６１０の処理を実行し得る。
【００７３】
ステップＳ６２０において、ＣＰＵ３１０は、メインブラウザアプリからバックグラウンドで処理されるサブブラウザアプリに移行したブラウザアプリ１００Ａ-１を処理する。この処理の詳細は、図８において後述される。
【００７４】
ステップＳ６３０において、ＣＰＵ３１０は、メインブラウザアプリに切り替わったブラウザアプリ１００Ａ-２に、操作記憶部３６０に記憶された操作情報（ユーザ操作）を反映する。なお、ある局面において、図５に示される処理によって、ブラウザアプリ１００Ａ-２には操作記憶部３６０に記憶される操作情報をすべて反映している場合もある。この場合、ＣＰＵ３１０は、ステップＳ６３０を省略し得る。
【００７５】
上記図５および図６に示される処理によれば、画像形成装置２００は、メインブラウザアプリが不具合状態となった場合に、サブブラウザアプリとして動作していたブラウザアプリをメインブラウザアプリに切り替える。これにより、ユーザは、代替のメインブラウザアプリによって画像形成装置２００の操作を継続できる。
【００７６】
さらに、画像形成装置２００は、操作記憶部３６０に格納される操作情報に基づいて、サブブラウザアプリとして動作していたブラウザアプリを、不具合が生じるまでに受け付けたユーザ操作を反映した状態でメインブラウザアプリに切り替える。そのため、ユーザは、代替のメインブラウザアプリに対して、再び同じ操作を入力する必要がない。
【００７７】
加えて、画像形成装置２００は、メインブラウザアプリに対するユーザ操作を、バックグラウンドでサブブラウザアプリにも反映する。そのため、この画像形成装置２００は、不具合が生じた際に、迅速に、上記のブラウザアプリの切替処理を実行できる。これにより、画像形成装置２００は、ユーザが画像形成装置２００を操作できない時間を、より低減し得る。
【００７８】
（サブブラウザの種類の切り替え−その１）
図７は、ある局面に従うブラウザアプリの切替処理について説明する図（その１）である。図７に示される処理の開始時点において、制御装置２１０のＣＰＵ３１０は、ブラウザアプリ１００Ａ−１をメインブラウザアプリとして、ブラウザアプリ１００Ａ−２をサブブラウザアプリとしてそれぞれ同時に実行しているものとする。
【００７９】
ステップＳ７１０において、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、メインブラウザアプリとして動作するブラウザアプリ１００Ａ-１が、ユーザ操作ＸＸＸ（例えば、動画コンテンツを再生する操作）を受け付けたことによって、不具合状態になったことを検知する。
【００８０】
ステップＳ７２０において、ＣＰＵ３１０は、サブブラウザアプリとして動作していたブラウザアプリ１００Ａ-２を、メインブラウザアプリに切り替える。
【００８１】
ステップＳ７２５において、ＣＰＵ３１０は、メインブラウザアプリとして動作していたブラウザアプリ１００Ａ-１を、サブブラウザアプリに切り替える。
【００８２】
ステップＳ７３０において、ＣＰＵ３１０は、メインブラウザアプリとして動作するブラウザアプリ１００Ａ-２が、ユーザ操作ＸＸＸを受け付けたことによって、不具合状態になったことを検知する。
【００８３】
ステップＳ７４０において、ＣＰＵ３１０は、ステップＳ７３０のユーザ操作ＸＸＸが、ステップＳ７１０でブラウザアプリ１００Ａ-１が受け付けた操作と同じであると判断する。これを受け、ＣＰＵ３１０は、バックグラウンドで動作させるサブブラウザアプリの種類を変更する必要があると判断し、サブブラウザアプリの種類を変更する旨の通知を、操作パネル２６０に表示する。ある局面において、ＣＰＵ３１０は、この通知をポップアップ形式で、ブラウザウィンドウ（１００Ａ−２）に表示する。
【００８４】
ステップＳ７５０において、ＣＰＵ３１０は、サブブラウザアプリとして動作していたブラウザアプリ１００Ａ-１を、メインブラウザアプリに切り替える。
【００８５】
ステップＳ７５５において、ＣＰＵ３１０は、メインブラウザとして動作していたブラウザアプリ１００Ａ-２ではなく、ブラウザアプリ１００Ａ-１および１００Ａ−２とは種類の異なるブラウザアプリ１００Ｂをサブブラウザアプリとして起動する。
【００８６】
ステップＳ７６０において、ＣＰＵ３１０は、メインブラウザアプリとして動作するブラウザアプリ１００Ａ-１が、ユーザ操作ＸＸＸを受け付けたことによって、不具合状態になったことを検知する。
【００８７】
ステップＳ７７０において、ＣＰＵ３１０は、サブブラウザアプリとして動作していたブラウザアプリ１００Ｂを、メインブラウザアプリに切り替える。
【００８８】
ステップＳ７７５において、ＣＰＵ３１０は、メインブラウザアプリとして動作していたブラウザアプリ１００Ａ-１を、サブブラウザアプリに切り替える。
【００８９】
上記のように、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、同一のユーザ操作に対して、同じ種類のブラウザアプリの不具合を検知した回数の総和が予め定められた回数（上記の例では、３回）に到達した場合に、異なる種類のブラウザアプリをメインブラウザとして動作させ得る。これにより、画像形成装置２００は、同じ不具合を何度も繰り返す事態を抑制し得る。その結果、画像形成装置２００は、ユーザが画像形成装置２００を操作できない時間を、より低減し得る。さらに、画像形成装置２００は、ユーザが同じ操作を何度も繰り返すといった事態を抑制し得る。
【００９０】
なお、他の局面において、ＣＰＵ３１０は、図７に示される処理のうち、ステップＳ７５０〜Ｓ７６０の処理を省略し得る。すなわち、ＣＰＵ３１０は、同一のユーザ操作に対して、同じ種類のブラウザアプリの不具合を検知した回数の総和が２回に到達した場合に、異なる種類のブラウザアプリをメインブラウザとして動作させ得る。
【００９１】
上記の例では、ブラウザ切替アプリ３７０は、同一のユーザ操作に対する不具合の回数に応じて、ブラウザアプリの種類を変更する構成であった。他の局面において、ブラウザ切替アプリ３７０は、メインブラウザアプリを変更してから予め定められた回数のユーザ操作を受け付ける前に、変更後のメインブラウザアプリの不具合を検知した場合に、メインブラウザアプリの種類を変更する構成であってもよい。
【００９２】
（バックグラウンドへの移行処理）
図８は、図６のサブブラウザアプリに切り替わったブラウザアプリの処理（ステップＳ６２０）を説明するフローチャートである。
【００９３】
ステップＳ８１０において、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、サブブラウザアプリの種類を変更するか否かを判断する。一例として、ＣＰＵ３１０は、図７で説明したように、同一のユーザ操作に対して、同じ種類のブラウザアプリの不具合を検知した回数の総和が予め定められた回数に到達した場合に、サブブラウザアプリの種類を変更すると判断する。
【００９４】
ＣＰＵ３１０は、サブブラウザアプリの種類を変更すると判断した場合（ステップＳ８１０においてＹＥＳ）、処理をステップＳ８２０に進める。ＣＰＵ３１０は、サブブラウザアプリの種類を変更しないと判断した場合（ステップＳ８１０においてＮＯ）、処理をステップＳ８３０に進める。
【００９５】
ステップＳ８２０において、ＣＰＵ３１０は、今までメインブラウザアプリおよびサブブラウザアプリとして動作していたブラウザアプリの種類とは異なる種類のブラウザアプリ１００Ｂを起動する。
【００９６】
ステップＳ８３０において、ＣＰＵ３１０は、サブブラウザアプリに切り替わったブラウザアプリ（ブラウザアプリ１００Ａ-１）を初期化する。一例として、ＣＰＵ３１０は、ブラウザアプリ１００Ａ-１を再起動することにより、ブラウザアプリ１００Ａ-１を初期化する。
【００９７】
ステップＳ８４０において、ＣＰＵ３１０は、操作記憶部３６０に記憶された操作情報に基づいて、不具合が発生するまでにメインブラウザアプリが受け付けたユーザ操作をサブブラウザアプリに反映する。この処理の詳細は、図１１を用いて後述される。
【００９８】
ステップＳ８５０において、ＣＰＵ３１０は、サブブラウザアプリが正常に動作しているか否かを判断する。ある局面において、ＣＰＵ３１０は、ステップＳ８４０を実行してから予め定められた時間が経過するまでに、サブブラウザアプリから正常レスポンス通知を受信した場合、サブブラウザアプリが正常に動作していると判断し得る。一方、ＣＰＵ３１０は、当該予め定められた時間内にサブブラウザアプリから正常レスポンス通知を受信しない場合、サブブラウザアプリが不具合状態であると判断し得る。
【００９９】
ＣＰＵ３１０は、サブブラウザアプリが正常に動作していると判断した場合（ステップＳ８５０においてＮＯ）、一連のサブブラウザアプリに移行したブラウザアプリの処理を終了する。一方、ＣＰＵ３１０は、サブブラウザアプリに不具合が生じたと判断した場合（ステップＳ８５０においてＹＥＳ）、処理をステップＳ８６０に進める。
【０１００】
ステップＳ８６０において、ＣＰＵ３１０は、サブブラウザアプリを初期化して、その後に処理をステップＳ８４０に戻す。
【０１０１】
（サブブラウザの種類の切り替え−その２）
図９は、ある局面に従うブラウザアプリの切替処理について説明する図（その２）である。図９に示される処理の開始時点において、制御装置２１０のＣＰＵ３１０は、ブラウザアプリ１００Ａ−１をメインブラウザアプリとして、ブラウザアプリ１００Ａ−２をサブブラウザアプリとしてそれぞれ同時に実行しているものとする。
【０１０２】
ステップＳ９１０において、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、メインブラウザアプリとして動作するブラウザアプリ１００Ａ-１が、ユーザ操作ＸＸＸ（例えば、動画コンテンツを再生する操作）を受け付けたことによって、不具合状態になったことを検知する。
【０１０３】
ステップＳ９２０において、ＣＰＵ３１０は、サブブラウザアプリとして動作していたブラウザアプリ１００Ａ-２を、メインブラウザアプリに切り替える。
【０１０４】
ステップＳ９２５において、ＣＰＵ３１０は、メインブラウザアプリとして動作していたブラウザアプリ１００Ａ-１を、サブブラウザアプリに切り替える。
【０１０５】
ステップＳ９３０において、ＣＰＵ３１０は、メインブラウザアプリとして動作するブラウザアプリ１００Ａ-２が、ユーザ操作ＸＸＸを受け付けたことを検知する。ある実施形態において、各ブラウザアプリは、操作パネル２６０を介してユーザ操作を受け付けると、ユーザ操作の内容を示す操作情報をブラウザ切替アプリ３７０に通知し得る。これにより、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、ステップＳ９３０において、メインブラウザアプリがユーザ操作ＸＸＸを受け付けたことを検知し得る。
【０１０６】
ステップＳ９４０において、ＣＰＵ３１０は、ブラウザアプリ１００Ａ−１の不具合を引き起こしたユーザ操作ＸＸＸを、ブラウザアプリ１００Ａ−１と同じ種類のブラウザアプリ１００Ａ−２が再び受け付けたと判断する。ＣＰＵ３１０は、その旨を警告するメッセージを操作パネル２６０に表示する。さらに、ＣＰＵ３１０は、メインブラウザアプリ（ブラウザアプリ１００Ａ−２）とは種類の異なるブラウザアプリを利用するか否かを問い合わせるメッセージを操作パネル２６０に表示し得る。
【０１０７】
ステップＳ９５０において、ＣＰＵ３１０は、ユーザから種類の異なるブラウザアプリを利用する旨の指示、換言すれば、ＣＰＵ３１０は、メインブラウザアプリの種類の切替指示を受け付ける。
【０１０８】
ステップＳ９６０において、ＣＰＵ３１０は、上記の切替指示に応じて、メインブラウザアプリをブラウザアプリ１００Ａ−２からブラウザアプリ１００Ｂに切り替える。これにより、操作パネル２６０に、ブラウザウィンドウ（１００Ｂ）が表示される。
【０１０９】
ステップＳ９６５において、ＣＰＵ３１０は、メインブラウザアプリとして動作していたブラウザアプリ１００Ａ-２を、サブブラウザアプリに切り替える。
【０１１０】
図１０は、図９のステップＳ９４０〜ステップＳ９６０の処理を説明する図である。ある局面において、ＣＰＵ３１０は、ステップＳ９４０においてメッセージ１０００（例えば、「前回の不具合発生時と同じ操作をしています。別ブラウザを利用しますか」）を操作パネル２６０に表示する。このメッセージ１０００には、ボタン１０１０および１０２０が含まれる。
【０１１１】
ステップＳ９５０において、ユーザが「はい」のボタン１０１０を押下する。ステップＳ９６０において、ＣＰＵ３１０は、ボタン１０１０の押下に応じて、ブラウザアプリ１００Ａ−２とは異なる種類のブラウザアプリ１００Ｂをメインブラウザに切り替える。
【０１１２】
図９を再び参照して、ステップＳ９７０において、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、ブラウザアプリ１００Ｂにユーザ操作ＸＸＸを実行させる。他の局面において、ブラウザアプリ１００Ｂは、ブラウザ切替アプリからの指示ではなく、ユーザによる操作ＸＸＸの入力を受け付けたことに応じて、ユーザ操作ＸＸＸを実行してもよい。
【０１１３】
なお、上記に示される例では、画像形成装置２００は、メインブラウザアプリとして動作するブラウザアプリ１００Ａ−２と異なる種類のブラウザアプリとして、ブラウザアプリ１００Ｂの１種類しか格納していない。他の局面において、画像形成装置２００は、ブラウザアプリ１００Ａ−２と異なる種類のブラウザアプリを２以上格納し得る。この場合、ＣＰＵ３１０は、当該２以上のブラウザアプリを操作パネル２６０に表示し、ユーザによる一のブラウザアプリの選択を受け付けてもよい。
【０１１４】
上記によれば、画像形成装置２００は、同じ不具合が生じる確率を低減し得る。その結果、画像形成装置２００は、ユーザが画像形成装置２００を操作できない時間を、より低減し得る。
【０１１５】
（座標情報の補正）
図１１は、図８のサブブラウザアプリへのユーザ操作の反映処理（ステップＳ８４０）を説明するフローチャートである。
【０１１６】
ステップＳ１１１０において、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、メインブラウザアプリの種類とサブブラウザアプリの種類とが同じであるか否かを判断する。
【０１１７】
ＣＰＵ３１０は、メインブラウザアプリの種類とサブブラウザアプリの種類とが同じであると判断した場合（ステップＳ１１１０においてＹＥＳ）、処理をステップＳ１１４０に進める。一方、ＣＰＵ３１０は、メインブラウザアプリの種類とサブブラウザアプリの種類とが異なると判断した場合（ステップＳ１１１０においてＮＯ）、処理をステップＳ１１２０に進める。
【０１１８】
ステップＳ１１２０において、ＣＰＵ３１０は、メインブラウザアプリに基づくブラウザウィンドウに配置されるコンテンツの位置（画面レイアウト）と、サブブラウザアプリの画面レイアウトとに差異があるかないかを判断する。
【０１１９】
図１２は、ある実施形態に従う座標情報の補正処理について説明する図である。分図（Ａ）は、メインブラウザアプリの画面レイアウトを、分図（Ｂ）はサブブラウザアプリの画面レイアウトを表す。
【０１２０】
図１２に示される例において、メインブラウザアプリに基づくブラウザウィンドウ（すなわち、操作パネル２６０のディスプレイ）におけるチェックボックス１２１０の配置位置と、サブブラウザアプリに基づくブラウザウィンドウにおけるチェックボックス１２２０の配置位置とが異なる。このような場合に、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、メインブラウザアプリの画面レイアウトと、サブブラウザアプリの画面レイアウトとが異なると判断する。ある局面において、画像形成装置２００は、各ブラウザアプリの画面レイアウト（コンテンツの配置座標）を予め記憶装置２３０に記憶している。一例として、ＣＰＵ３１０は、ステップＳ９４０において、記憶装置２３０に記憶しているメインブラウザアプリおよびサブブラウザアプリのコンテンツの配置座標が異なる場合に、メインブラウザアプリの画面レイアウトと、サブブラウザアプリの画面レイアウトとが異なると判断し得る。
【０１２１】
図１１を再び参照して、ステップＳ１１３０において、ＣＰＵ３１０は、操作記憶部３６０に格納されるユーザが選択した位置を示す座標情報を補正する。図１２を用いてこの補正処理の具体例を説明する。ユーザが選択した位置を示す座標情報を（Ｘ，Ｙ）、補正後の座標情報を（Ｘｃ，Ｙｃ）、チェックボックス１２１０の配置座標を（Ｘｍ，Ｙｍ）、チェックボックス１２２０の配置座標を（Ｘｓ，Ｙｓ）とする。この場合、ＣＰＵ３１０は、補正後の座標情報を以下の式（１）で計算し得る。
【０１２２】
（Ｘｃ，Ｙｃ）＝（Ｘ，Ｙ）＋｛（Ｘｓ，Ｙｓ）−（Ｘｍ，Ｙｍ）｝  ・・・（１）
上記のように、ＣＰＵ３１０は、メインブラウザアプリのコンテンツの配置位置と、サブブラウザアプリのコンテンツの配置位置とに基づいて、ユーザが選択した位置を示す座標情報を補正する。
【０１２３】
図１１を再び参照して、ステップＳ１１４０において、ＣＰＵ３１０は、操作記憶部３６０に記憶される操作情報に基づいて、不具合が発生するまでにメインブラウザアプリが受け付けたユーザ操作をサブブラウザアプリに反映する。以上で、ＣＰＵ３１０は、サブブラウザアプリへのユーザ操作の反映処理を終了する。
【０１２４】
上記によれば、画像形成装置２００は、メインブラウザアプリの種類とサブブラウザアプリの種類とが異なる場合であっても、メインブラウザアプリに対するユーザ操作を、正確にサブブラウザアプリに反映できる。
【０１２５】
（不具合の検知，警告に関する制御）
図１３は、ある実施形態に従うブラウザアプリの不具合の検知処理、および不具合の警告処理について説明するフローチャートである。
【０１２６】
ステップＳ１３１０において、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、メインブラウザに基づくブラウザウィンドウ上で、ユーザが操作するカーソルの座標位置をモニタする。
【０１２７】
ステップＳ１３１５において、ＣＰＵ３１０は、前回不具合が生じたときのユーザの操作位置範囲に、現在モニタしているカーソルの座標位置が含まれるか否かを判断する。一例として、ユーザの操作位置範囲は、ユーザが操作するカーソルが指し示すコンテンツの表示範囲であり得る。他の例として、ユーザの操作位置範囲は、ユーザの操作位置を中心とした所定領域であり得る。
【０１２８】
ＣＰＵ３１０は、前回不具合が生じたときのユーザの操作位置範囲に、現在モニタしているカーソルの座標位置が含まれると判断した場合（ステップＳ１３１５においてＹＥＳ）、処理をステップＳ１３２０に進める。そうでない場合（ステップＳ１３１５においてＮＯ）、ＣＰＵ３１０は、処理をステップＳ１３１０に戻す。
【０１２９】
ステップＳ１３２０において、ＣＰＵ３１０は、不具合が生じた直前のメインブラウザアプリの種類と、現在実行しているメインブラウザアプリの種類とが同じであるか否かを判断する。
【０１３０】
ＣＰＵ３１０は、異なる種類であると判断した場合（ステップＳ１３２０においてＮＯ）、一連の処理を終了する。一方、ＣＰＵ３１０は、同じ種類であると判断した場合（ステップＳ１３２０においてＹＥＳ）、処理をステップＳ１３２５に進める。
【０１３１】
ステップＳ１３２５において、ＣＰＵ３１０は、メインブラウザアプリがプログラムコンテンツ（例えば、動画コンテンツ、外部プラグイン）の実行指示を受け付けたか否かを判断する。例えば、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、メインブラウザアプリからの通知に基づいてこの判断を行ない得る。他の局面において、ＣＰＵ３１０は、ステップＳ１３１５で前回不具合発生時のユーザ操作位置範囲に、カーソルの座標位置が含まれると判断した状態において、ソフトウェアキーボードまたは物理ボタンの実行キーの押下に応じて、この判断を行ない得る。
【０１３２】
ＣＰＵ３１０は、メインブラウザアプリがプログラムコンテンツの実行指示を受け付けたと判断した場合（ステップＳ１３２５においてＹＥＳ）、処理をステップＳ１３３５に進める。一方、ＣＰＵ３１０は、メインブラウザアプリが未だプログラムコンテンツの実行指示を受け付けていないと判断した場合（ステップＳ１３２５においてＮＯ）、処理をステップＳ１３３０に進める。
【０１３３】
ステップＳ１３３０において、ＣＰＵ３１０は、カーソルが指し示すプログラムコンテンツが、前回不具合を引き起こした旨を通知するメッセージを、操作パネル２６０に表示する。一例として、ＣＰＵ３１０は、このメッセージをポップアップ形式で操作パネル２６０に表示する。ＣＰＵ３１０は、ステップＳ１３１５でＮＯと判断するまで、当該メッセージの表示を継続する。
【０１３４】
ステップＳ１３３５において、ＣＰＵ３１０は、現在実行しているメインブラウザアプリとは異なる種類のブラウザアプリを、メインブラウザアプリとして実行する旨を通知するメッセージを操作パネル２６０に表示する。
【０１３５】
ステップＳ５６０において、ＣＰＵ３１０は、図６に示される一連のブラウザ切替処理（ステップＳ６１０〜ステップＳ６３０）を実行する。
【０１３６】
ステップＳ１３４０において、ＣＰＵ３１０は、実行指示を受け付けたプログラムコンテンツを実行する。
【０１３７】
ステップＳ１３４５において、ＣＰＵ３１０は、メインブラウザアプリが正常に動作しているか否かを判断する。上記の例では、ＣＰＵ３１０（ブラウザ切替アプリ３７０）は、メインブラウザアプリから受信する正常レスポンス通知に基づいて、この判断を行なう構成であった。他の局面において、プログラムコンテンツが動画コンテンツの場合、ＣＰＵ３１０は、この動画コンテンツの再生時間がゼロで止まっている場合に、メインブラウザアプリが不具合状態であると判断し得る。
【０１３８】
ＣＰＵ３１０は、メインブラウザアプリが正常に動作していると判断した場合（ステップＳ１３４５においてＹＥＳ）、一連の処理を終了する。一方、ＣＰＵ３１０は、メインブラウザアプリが不具合状態であると判断した場合（ステップＳ１３４５においてＮＯ）、処理をステップＳ１３５０に進める。
【０１３９】
ステップＳ１３５０において、ＣＰＵ３１０は、一連の処理の中で起動を試していないブラウザアプリがあるか否かを、判断する。
【０１４０】
ＣＰＵ３１０は、起動を試していないブラウザアプリがあると判断した場合（ステップＳ１３５０においてＹＥＳ）、処理をステップＳ５６０に戻し、起動を試していないブラウザアプリをメインブラウザに切り替える処理を実行する。
【０１４１】
一方、ＣＰＵ３１０は、起動を試していないブラウザアプリがないと判断した場合（ステップＳ１３５０においてＮＯ）、処理をステップＳ１３５５に進める。
【０１４２】
なお、他の局面において、ＣＰＵ３１０は、ステップＳ１３５０において、一連の処理の中で起動を試していない種類のブラウザアプリがあるか否かを判断する構成であってもよい。
【０１４３】
ステップＳ１３５５において、ＣＰＵ３１０は、画像形成装置２００が、実行指示を受け付けたプログラムコンテンツを実行できない旨を示すメッセージを操作パネル２６０に表示する。以上により、ＣＰＵ３１０は、一連の処理を終了する。
【０１４４】
上記によれば、画像形成装置２００は、ユーザに対して、不具合が生じる可能性がある旨を警告できるため、不具合が生じることを抑制し得る。さらに、画像形成装置２００は、実行指示を受け付けたプログラムコンテンツが正常に動作するようなブラウザアプリを、自動で検索する。その結果、画像形成装置２００は、ユーザが種々のブラウザアプリを試すといったユーザ負担を軽減し得る。
【０１４５】
以上説明した各種処理は、１つのＣＰＵ３１０によって実現されるものとしてあるが、これに限られない。これらの各種機能は、少なくとも１つのプロセッサのような半導体集積回路、少なくとも１つの特定用途向け集積回路ＡＳＩＣ（Application  Specific  Integrated  Circuit）、少なくとも１つのＤＳＰ（Digital Signal Processor）、少なくとも１つのＦＰＧＡ（Field  Programmable  Gate  Array）、および／またはその他の演算機能を有する回路を含む回路によって実装され得る。
【０１４６】
これらの回路は、有形の読取可能な少なくとも１つの媒体から、１以上の命令を読み出すことにより図５，６，７，８，９，１１および１３等に開示される各種処理を実現しうる。
【０１４７】
このような媒体は、磁気媒体（たとえば、ハードディスク）、光学媒体（例えば、コンパクトディスク（ＣＤ）、ＤＶＤ）、揮発性メモリ、不揮発性メモリの任意のタイプのメモリなどの形態をとるが、これらの形態に限定されるものではない。
【０１４８】
揮発性メモリはＤＲＡＭ（Dynamic  Random  Access  Memory）およびＳＲＡＭ（Static  Random  Access  Memory）を含み得る。不揮発性メモリは、ＲＯＭ、ＮＶＲＡＭを含み得る。半導体メモリは、少なくとも１つのプロセッサとともに半導体回路の１部分であり得る。
【０１４９】
今回開示された実施形態はすべての点で例示であって制限的なものではないと考えられるべきである。また今回開示された各種処理は、適宜組み合わせが可能であると考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１５０】
１００Ａ，１００Ｂ  ブラウザアプリ、２００  画像形成装置、２１０  制御装置、２２０  通信インターフェイス、２３０  記憶装置、２３５  給紙カセット、２４０  搬送経路、２５０  プリントエンジン、２５５  排紙トレイ、２６０  操作パネル、２６５  スキャナ、２９０  外部装置、３２０  ＲＡＭ、３３０  ＲＯＭ、３５０  第１ＶＲＡＭ、３５５  第２ＶＲＡＭ、３６０  操作記憶部、３７０  ブラウザ切替アプリ、１０００  メッセージ。
【図１】
2018073347.tif 000003
【図２】
2018073347.tif 000004
【図３】
2018073347.tif 000005
【図４】
2018073347.tif 000006
【図５】
2018073347.tif 000007
【図６】
2018073347.tif 000008
【図７】
2018073347.tif 000009
【図８】
2018073347.tif 000010
【図９】
2018073347.tif 000011
【図１０】
2018073347.tif 000012
【図１１】
2018073347.tif 000013
【図１２】
2018073347.tif 000014
【図１３】
2018073347.tif 000015