本発明の実施形態に係る情報機器としてMFPを挙げる。MFPは、オフィスワークに有用な複数の機能を集約した複合型の情報機器である。
図1に例示されるMFP1は、企業のオフィスに構築されたLAN(Local Area Network)7に接続され、複数のユーザーによって共用される。LAN7には、1以上のユーザー端末3を含む各種の情報機器が接続される。図1では、ユーザー端末3としてラップトップ型(ノート型)のパーソナルコンピューター4,5およびタブレット6が描かれている。MFP1は、LAN7上の情報機器およびLAN7に接続される他のネットワーク上の情報機器との通信が可能である。また、MFP1は公衆電話回線に接続されることによって、公衆電話回線を用いるファクシミリ通信を行なうことができる。
MFP1は、MFP1の操作の関わるWebサーバー200を備えている。Webサーバー200は、ユーザー端末3上のWebブラウザからのアクセスに応じて、操作画面ととして表示されることになるWebページをユーザー端末3に送信する。ユーザー端末3上のWebブラウザがWebサーバー200から送られてきたWebページをユーザー端末3に備わるディスプレイに表示させ、これによってユーザー端末3を用いるリモートアクセス環境がユーザーに提供される。
また、Webサーバー200は、MFP1上で稼働するWebブラウザからのアクセスに対して、ユーザー端末3からのアクセスと同様に応答する。MFP1上のWebブラウザは、MFP1に備え付けられている操作パネルのタッチパネルディスプレイに、Webサーバー200から取得したWebページを表示させる。
図2はMFPのハードウェア構成の概略を示している。
ADF(Auto Document Feeder)14は、ユーザーによってセッティングされた原稿シートをイメージスキャナー15の読取り位置へ搬送する。イメージスキャナー15は、搬送された原稿シートに記録されている画像を光学的に読み取る。プリンターエンジン16は、コピー、プリントおよびファクシミリ受信において、例えば電子写真法によって画像を用紙に印刷する。印刷方法はインクジェット法または他の方法であってもよい。
操作パネル17は、タッチパネルディスプレイを有している。操作パネル17のタッチパネルディスプレイはフリックおよびマルチタッチ操作を検出することができる。
通信インタフェース18は、MFP1と外部装置との通信を可能にする。通信インタフェース18は、MFP1をLAN7に通信可能に接続するネットワーク・インタフェース・カード(NIC)、および公衆電話回線によるファクシミリ通信のためのモデムを含んでいる。
ストレージ19は例えばハードディスクドライブであり、アプリケーションプログラムや設定データの保存、およびデータ処理におけるデータの一時的な記憶に用いられる。Webサーバー200の機能を実現するサーバー用のアプリケーションプログラム200Pがストレージ19に記憶される。他にも、ユーザー認証に際して参照される登録ユーザー情報、ファクシミリやデータ送信の宛先の登録情報もストレージ19に記憶される。
ストレージ19のメモリエリアの一部分190は、ボックス(BOX)と呼ばれる文書保存エリアとして利用される。通常、個々のユーザーに割り当てられる個人ボックス(ユーザーボックスとも呼ばれる)および複数のユーザーが共有する共通ボックスといった複数のボックスがストレージ19内に設けられる。複数のボックスは所定の識別子(例えばボックス名またはボックス番号)によって特定される。
MFP1の制御を統括するメインコントローラー10は、各種のプログラムを実行するコンピューターとしてのCPU11、MFP1の多様な機能を実現するための組み込みプログラムを含むソフトウェアを記憶するROM(Read Only Memory)12、およびプログラム実行のワークエリアとして使用されるRAM(Random Access Memory)13を有する。
図3はユーザー端末のハードウェア構成の概略を示している。ユーザー端末3は、CPU31、ROM32、RAM33、ストレージ34、操作入力部35、ディスプレイ36、および通信インタフェース37を備える。
CPU31は、ROM32またはストレージ34に格納されているプログラムをRAM33にロードして実行する。ストレージ34は、ハードディスクドライブまたはソリッドステートドライブ(SSD:Solid State Drive)であり、ブラウジング用のプログラム300Pを記憶することができる。このプログラム300Pは、所定のサーバーからのダウンロード、またはリムーバブルメディアからのインストールによってストレージ34に格納することができる。CPU31がプログラム300Pを実行することによって実現されるWebブラウザが、後述するWebブラウザ300である。
操作入力部35は、ユーザーの操作に応じた信号を出力する1以上の入力デバイスを備える。例えば、ユーザー端末3がラップトップ型のパーソナルコンピューター4または5である場合、キーボードおよびポインティングデバイスとしてのタッチパッドが操作入力部35に含まれる。ユーザー端末3がデスクトップ型のパーソナルコンピューターである場合、一般にキーボードおよびマウスが操作入力部35に含まれる。ユーザー端末3がタブレット5である場合、タッチパネルディスプレイが操作入力部35に含まれる。また、音声による操作を受け付ける構成のユーザー端末3では、マイクロフォンが操作入力部35に含まれる。
ディスプレイ36は、液晶パネル、有機エレクトロルミネッセンスパネル、または画面表示の可能な他のデバイスである。ユーザー端末3がデスクトップ型のパーソナルコンピューターである場合、一般に、ディスプレイ36はCPU31を備える本体と別体であって、外部接続ケーブルを介して本体と接続される。
通信インタフェース37は、有線通信のためのデバイスおよび無線通信のためのデバイスを備える。無線通信にはWLAN(Wireless Local Area Network)の規格に準拠した通信、およびBluetooth(登録商標)の規格に準拠した通信が含まれる。
図4はWebサーバーの機能構成を示し、図5はWebブラウザの機能構成を示している。図4および図5では、MFP1の操作の態様としてユーザー端末3によるリモートアクセスが想定されており、ユーザー端末3がMFP1の操作のためのWebページ50を表示する操作処理装置となる。
図4に示されるように、MFP1に設けられたWebサーバー200は、通信部201、リクエスト処理部202、およびレスポンス生成部203を備える。これらの要素は、CPU11がサーバー用のアプリケーションプログラム200Pを実行することによって実現される機能要素である。アプリケーションプログラム200PはMFP1に電源が投入されたときに自動的に起動される。MFP1に電源が投入されている間、Webサーバー200はユーザー端末3からの随時のアクセスに応答する。
通信部201は、HTTP(Hypertext Transfer Protocol)を含む所定のプロトコルを用いてユーザー端末3のWebブラウザ300と通信する。通信部201は、Webサーバー200宛てに送られてきたデータを受信し、リクエスト処理部202から引き渡されるWebブラウザ300宛てのレスポンスをユーザー端末3へ送信する。
リクエスト処理部202は、通信部201が受信したデータからWebブラウザ300からのリクエストを抽出してレスポンス生成部203に引き渡す。そして、リクエスト処理部202は、レスポンス生成部203によって生成されたレスポンスを通信部201に引き渡してユーザー端末3へ送信させる。
なお、レスポンス生成部203に引き渡すリクエストおよびレスポンス生成部203が生成するレスポンスにリクエストの送信元を特定する情報を含めておくことにより、複数のユーザー端末3のそれぞれからのリクエストに対してそれぞれに対応するレスポンスを正しくリクエストの送信元に返すことができる。
レスポンス生成部203は、リクエスト処理部202から入力されるリクエストに応じたレスポンスを生成してリクエスト処理部202に引き渡す。リクエストがWebページのデータの送信を求めるものである場合、レスポンス生成部203は求められたWebページのデータをレスポンスとして生成する。Webページのデータは、文書の構造をHTML(Hypertext Markup Language)で記述したHTMLファイルに、必要に応じて図表ファイルおよび写真ファイルといったコンテンツファイルを付属させたデータである。なお、Webページの文書の構造を記述するマークアップ言語として、HTMLに代えてXML(Extensible Markup Language)を用いてもよい。
あらかじめストレージ19には操作画面となる各種のWebページを構成するコンテンツのデータベース200Cが記憶されており、レスポンス生成部203はこのデータベース200Cに登録されたコンテンツを公知の手法を用いて組み合わせることによってWebページのデータを生成する。
求められたWebページがスクリプトを組み込むものである場合、レスポンス生成部203は、例えばJavaScript(登録商標)で記述したスクリプトを実行させるHTMLファイルを生成する。スクリプトには、入力のエラーをチェックしたりボタンがクリックされたときにボタンの色を変えたりするいわゆるクライアントサイドスクリプトの他に、例えばユーザーによって指定される処理をユーザー端末3がMFP1に実行させるもの(これを「MFP制御スクリプト」と呼称する)がある。
図5(A)に示されるように、ユーザー端末3のWebブラウザ300は、通信部301、レンダリングエンジン302、およびスクリプトエンジン303を有している。これらの要素は、CPU31がブラウジング用のプログラム300Pを実行することによって実現される機能要素である。プログラム300Pは、例えば、ユーザー端末3を使用するユーザーが起動を指示したときにオペレーティングシステムによって起動される。
通信部301は、HTTPを含む所定のプロトコルを用いてMFP1のWebサーバー200と通信する。通信部301は、レンダリングエンジン302から引き渡されるWebサーバー200宛てのリクエストをMFP1へ送信し、Webブラウザ300宛てに送られてきたデータを受信する。また、通信部301は、スクリプトエンジン303からのMFP1に対する指示をMFP1へ送信する。
レンダリングエンジン302は、ディスプレイ36にWebページを表示させる表示処理部の役割をもつ。以下、レンダリングエンジン302が表示させる各種のWebページを総称してWebページ50という。レンダリングエンジン302は、Webブラウザ300の起動時に、あらかじめホームページに定められているWebページ50を表示させる。その後、ユーザーによる操作に応じて表示内容を変更する。
レンダリングエンジン302は、表示すべきWebページ50の送信を求めるリクエストを通信部302を介してWebサーバー200に送る。そして、レンダリングエンジン302は、リクエストに対するレスポンスとして受け取ったHTMLの記述を解釈してWebページ50を表わすページ画像データを作成する。このページ画像データに基づいてWebページ50がディスプレイ36によって表示される。
スクリプトエンジン303は、レンダリングエンジン302が受け取るHTMLファイルに含まれるスクリプトを実行する。スクリプトに従ってスクリプトエンジン303からMFP1へ通信部301を介して動作の指示が与えられる。図5(B)に示されるように、スクリプトエンジン303は、第1実行部310と第2実行部320とを有する。
第1実行部310は、MFP制御スクリプトを含む何らかのスクリプトの組み込まれたWebページ50が表示されている状態において、当該スクリプトを実行する。第2実行部320は、MFP制御スクリプトの実行中に当該MFP制御スクリプトの組み込まれたWebページ50の表示を終了させる表示変更が行なわれるときに、第1実行部310から当該MFP制御スクリプトを引き継いで実行する。
次に、MFP1に対するユーザー端末3によるリモートアクセスにおいてユーザー端末3上のWebブラウザ300によって表示される操作画面を例示する。操作画面は、MFP1の操作のためのWebページ50である。
Webブラウザ300によって開かれるウィンドウの構成が図6に示されている。図6のように、ウィンドウ40は、上端部に設けられたブラウジング操作エリア41とブラウジング操作エリア41の下側の部分であるページ表示エリア42とを有する。ブラウジング操作エリア41には、戻すキー43、進めるキー44、アドレスバー45、ホームページキー47、お気に入りキー48、および閉じるキー49などが配置されている。ページ表示エリア42は、Webサーバー200または他のWebサーバーから取得した任意のWebページ50を表示するためのエリアである。図6の状態ではページ表示エリア42にWebサーバー200からWebページ50として取得される操作画面501が表示されている。
Webブラウザ300は、ページ表示エリア42に表示するWebページ50をユーザーによる操作に応じて遷移させる。詳しくは次のとおりである。なお、ここでの説明では画面上のキーに対する操作がマウス操作であるものとする。
ウィンドウ40を開いたとき、Webブラウザ300は、あらかじめホームページに定められているWebページ50をページ表示エリア42に表示させる。ホームページはWebサーバー200が管理するWebページ50であってもよいし、他の任意のWebページ50であってもよい。
ホームページが表示された後、例えばアドレスバー45に任意のWebページ50のURL(Uniform Resource Locator)が入力され、操作入力デバイス35であるキーボードのエンターキーが押下されたとき、Webブラウザ300は、現在表示されているWebページ50に代えて、アドレスバー45に入力されたURLで特定されるWebページ50を表示させる。また、お気に入りキー48がクリックされたとき、Webブラウザ300は、登録されているWebページ名のリストをポップアップ表示させる。そして、リスト内のいずれかのWebページ名がクリックされたとき、Webブラウザ300は、クリックされたWebページ名に対応するWebページ50をページ表示エリア42に表示させる。
既にWebページ50の遷移が1回以上行われた後の状態において、戻すキー43がクリックされたとき、Webブラウザ300は、最後に行なった遷移の直前に表示されていたWebページ50に戻すようにWebページ50を遷移させる。また、進めるキー44がクリックされたとき、Webブラウザ300は、戻すキー43の操作に従って戻した表示を逆に戻すようにWebページ50を遷移させる。
ホームページ以外のWebページ50が表示されている状態でホームページキー47がクリックされたとき、Webブラウザ300は、現在表示されているWebページ50からホームページへWebページ50を遷移させる。
閉じるキー49は、ユーザーがウィンドウ40の表示の終了(すなわちウィンドウ40を閉じること)を指示するためのキーである。閉じるキー49がクリックされたとき、Webブラウザ300はウィンドウ40を閉じる。ウィンドウ40を閉じるとディスプレイ36においてそれまで表示されていたWebページ50が消失する。すなわち、ウィンドウ40を閉じるという表示内容の変更は、Webページ50の表示を終了させることの一態様である。
このようにWebブラウザ300は、ブラウジング操作エリア41における操作に応じてページ表示エリア42に表示されるWebページ50を遷移させたり、ウィンドウ40を閉じたりする。ユーザーは、ブラウジング操作エリア41における操作を、ページ表示エリア42の表示内容とは無関係に随時に行なうことができる。つまり、ウィンドウ40が開いている間、ユーザーはいつでもWebページ50の遷移を指示することができ、ウィンドウ40を閉じることを指示することができる。Webページ50の遷移が行なわれ、またはウィンドウ40が閉じると、それまで表示されていたWebページ50の表示が終了する。したがって、Webページ50の遷移を指示する操作およびウィンドウ40を閉じることを指示する操作は、それを行なう時点で表示されているWebページ50の表示の終了を指示する操作に相当する。
図6においてページ表示エリア42に表示されている操作画面501は、入力されたファイルをMFP1内のボックス190に保存する処理をMFP1に行なわせる操作のための画面である。操作画面501は、ユーザーのログインが承認されたときに表示される機能選択画面においてボックス処理を選択する操作が行なわれ、それにより表示されるボックス処理選択画面で送信処理が選択された場合に表示される。
操作画面501は、保存させたいファイルを指定するための入力エリア71、保存先のボックスを指定するための入力エリア72、送信ボタン81、およびキャンセルボタン82を有する。そして、操作画面501にはMFP制御スクリプトが組み込まれている。操作画面501のMFP制御スクリプトは、入力エリア71で指定されたファイルをMFP1へ送信する処理をユーザー端末3に行なわせるとともに、受信したファイルを入力エリア72で指定された保存先ボックスへ格納する処理をMFP1に行なわせるスクリプトである。
ユーザーが所望のファイルを特定するパスを入力エリア71し、保存先とする個人ボックまたは共通ボックスの識別子を入力エリア72に入力し、送信ボタン81をクリックしたとき、MFP制御スクリプトが実行される。MFP制御スクリプトの実行中にユーザーがキャンセルボタン82をクリックすると、MFP制御スクリプトの実行が中止される。
ユーザーがMFP制御スクリプトの実行を指示した後、ユーザー端末3のCPU31に大きな負荷が掛かっていたりMFP1がMFP制御スクリプトの実行指示時点でスリープ状態であったりしたために、MFP制御スクリプトの実行が完了するまでに例えば数秒以上の時間を要することがある。したがって、MFP制御スクリプトの実行中(実行が指示されてから完了までの期間)に、ユーザーがWebページ50の表示の終了を指示する上述の操作を行なうことがあり得る。本実施形態において、Webブラウザ300のスクリプトエンジン303は、上述のとおり第2実行部320を備えており、MFP制御スクリプトの実行中にユーザーの指示に従ってWebページ50を遷移させる場合、およびMFP制御スクリプトの実行中にウィンドウ40を閉じる場合に、MFP制御スクリプトの実行を継続することができる。
図7はMFP制御スクリプトが実行中であることを示すお知らせウィンドウの例を示している。図7のお知らせウィンドウ91は、スクリプトの実行中にユーザーがWebページ50の切替えを指示したときに表示される画面であり、MFP制御スクリプトに従う処理が進行中であることを知らせる文字列74を有している。
MFP制御スクリプトの実行中にユーザーがWebページ50の遷移を指示したとき、Webブラウザ300はMFP制御スクリプトが実行されていない場合と同様に、指示に従ってWebページを遷移させる。このとき、Webブラウザ300は、現在表示されているWebページ50の表示を終了させてよいかどうかをユーザーに尋ねることはしない。それは、例えばユーザーに尋ねるための確認画面を表示すると、ユーザーが自己の操作に誤りがあったとか、MFP制御スクリプトに従う処理にエラーが生じたとかというような誤解をしてしまうおそれがあるからである。また、ユーザーに尋ねることは返答を入力する手間を強いることになるからである。
お知らせウィンドウ91は、MFP制御スクリプトの実行中にユーザーの指示に従って遷移した後のWebページ50をできるだけ隠さないように、例えばページ表示エリア42の下端部に遷移後のWebページ50に重ねて表示される。ウィンドウ40がディスプレイ36の表示面よりも小さい場合、ウィンドウ40の外側にお知らせウィンドウ91を表示するようにしてもよい。お知らせウィンドウ91は、MFP制御スクリプトの実行中に閉じるキー49がクリックされてウィンドウ40が閉じた場合にも表示される。いずれの場合も、MFP制御スクリプトの実行が完了したときに、お知らせウィンドウ91は閉じられる。
図8は、Webブラウザによって表示される操作画面の第2例を示している。図8の操作画面502は図6の操作画面501の変形例である。操作画面502には図6の操作画面501と同様の要素である入力エリア71,72、送信ボタン81、およびキャンセルボタン82が配置されており、送信ボタン81によって実行が指示されるMFP制御スクリプトが組み込まれている。
操作画面502と操作画面501との相違点は、操作画面502がログアウトボタン83を有する点である。ログアウトボタン83がクリックされたとき、Webブラウザ300はWebサーバー200にログアウトリクエストを送信する。ログアウトリクエストを受けたWebサーバー200は、ユーザーのログインを解除し、その旨を知らせる画面であるWebページ50のデータをレスポンスとしてWebブラウザ300に送信する。レスポンスを受信したWebブラウザ300は、ページ表示エリア42における操作画面502の表示を終了させ、代わりにログインの解除を知らせる画面を表示させる。つまり、ログアウトボタン83のクリックは、ログアウトを指示する操作であるとともに、Webページ50の遷移を指示する操作でもある。
このようにページ表示エリア42における操作がWebページの遷移を指示する操作になる場合がある。すなわち、Webページ50の遷移を指示する操作はブラウジング操作エリア41における操作に限らない。
図9は、Webブラウザによって表示される操作画面の第3例を示している。図9の操作画面503は、入力されたファイルをMFP1内のボックス190に保存する第1の処理および保存した当該ファイルを電子メールに添付して送信する第2の処理をMFP1に行なわせる操作のための画面である。操作画面501は、ボックス処理選択画面において送信・電子メール処理がユーザーによって選択された場合に表示される。
操作画面503は、図6の操作画面501と同様の要素である入力エリア71,72、送信ボタン81、およびキャンセルボタン82に加えて、電子メールの宛先を指定するための入力エリア73を有している。また、操作画面503には、送信ボタン81によって実行が指示されるMFP制御スクリプトが組み込まれている。操作画面503のMFP制御スクリプトは、入力エリア71で指定されたファイルをMFP1へ送信する処理をユーザー端末3に行なわせるとともに、上記の第1の処理および第2の処理をMFP1に行なわせるスクリプトである。
操作画面503のMFP制御スクリプトの実行中にWebページ50が切り替えられ、かつMFP制御スクリプトの実行が継続されている場合、図7のお知らせウィンドウ91が表示される。
図10は、Webブラウザによって表示される操作画面の第4例を示している。図10の操作画面504は、入力されたファイルをMFP1内のボックス190に保存する第1の処理および保存した当該ファイルの複製を保存先に関連付けられている宛先に転送する第2の処理をMFP1に行なわせる操作のための画面である。操作画面501は、ボックス処理選択画面において送信・転送処理が選択された場合に表示される。
操作画面504は、図6の操作画面501と同様の要素である入力エリア71、送信ボタン81、およびキャンセルボタン82に加えて、保存先を指定するための入力エリア76を有している。また、操作画面504には、送信ボタン81によって実行が指示されるMFP制御スクリプトが組み込まれている。操作画面504のMFP制御スクリプトは、入力エリア71で指定されたファイルをMFP1へ送信する処理をユーザー端末3に行なわせるとともに、上記の第1の処理および第2の処理をMFP1に行なわせるスクリプトである。
入力エリア76は、保存先の選択肢となる個人ボックスおよび共通ボックスと各選択肢に関連付けられた宛先とを表形式で一覧表示するエリアである。入力エリア76における各選択肢の欄にチェックボックス751が配置されている。ユーザーは、チェックボックス751をクリックすることにより、1つまたは複数の保存先を指定することができる。選択されたことを表わすチェックマークが付加されたチェックボックス751をクリックすると、選択が解除されてチェックマークが消える。宛先として関連付けられる情報の形式によって転送の態様が決まる。例えば、宛先がメールアドレスであれば、電子メールに添付してファイルが送信され、宛先がIPアドレスであれば、ファイル転送プロトコルを用いてデータが送信される。
操作画面504のMFP制御スクリプトの実行中にWebページ50が切り替えられ、かつMFP制御スクリプトの実行が継続されている場合、図7のお知らせウィンドウ91が表示される。
以下、フローチャートを参照してWebブラウザ300の動作を説明する。
図11はレンダリングエンジンの動作を示すフローチャートである。
レンダリングエンジン302は通信処理を行なう(S10)。この通信処理は、ユーザーによる操作に従ってWebサーバー200にリクエストを送ったり、リクエストに対するレスポンスを受け取ったりする処理である。通信処理において、レンダリングエンジン302は、操作入力部35を管理するオペレーティングシステムからWebブラウザ300に与えられる操作情報を取得し、この操作情報が示す操作の内容に応じたリクエストを作成してWebサーバー200に送る。なお、操作情報はスクリプトエンジン303に伝えられる。
通信処理を行なったレンダリングエンジン302は、Webページ切替えイベントが発生したかどうかをチェックする(S11)。Webページ切替えイベントとは、通信部301からのHTMLファイルの入力、すなわちWebページ50の表示要求である。Webページ切替えイベントは、ユーザーがWebページ50の遷移を指示する操作をしたときに発生し、Webブラウザ300の起動直後にホームページを自動的に表示するときにも発生する。
Webページ切替えイベントが発生したと判断した場合(S10でYES)、レンダリングエンジン302はスクリプト実行中フラグがONであるかどうかをチェックする(S12)。スクリプト実行中フラグはスクリプトエンジン303によってMFP制御スクリプトの実行ごとに設けられ、かつこれの状態を示す値を変更することによってONおよびOFFのいずれかに切り替えられるフラグである。ステップS11においてWebページ切替えイベントが発生していないと判断した場合、フローはステップS16へ進み、後述の処理が行なわれる。
スクリプト実行中フラグがONである場合(S12でYES)、レンダリングエンジン302は、スクリプトエンジン303からの子ウィンドウ表示指示があるかどうかをチェックする(S13)。子ウィンドウ表示指示がある場合(S13でYES)、レンダリングエンジン302は、現在表示されているWebページ50に関連付けられている子ウィンドウをディスプレイ36上に開く(S14)。子ウィンドウは、図7のお知らせウィンドウ91のように、MFP制御スクリプトの組み込まれたWebページ50の表示が終了される際に、MFP制御スクリプトの実行が継続されている場合に表示される小画面である。
スクリプト実行中フラグがONではない場合(S12でNO)、フローはステップS13およびステップS14を経ずにステップS12からステップS15へ進む。また、子ウィンドウ表示指示がない場合(S13でNO)、フローはステップS14を経ずにステップS12からステップS15へ進む。
ステップS15において、レンダリングエンジン302はWebページ切替え処理を実行する。Webページ切替え処理は、ステップS11でその発生を検知したWebページ切替えイベントに対応するWebページ50を現在表示されているWebページ50に代えてディスプレイ36に表示させる処理である。レンダリングエンジン302は通信部301から受け取ったHTMLファイルの記述内容を解釈してページ画像データを生成し、生成したページ画像データをディスプレイ36のコントローラーに送る。フローはステップS15からステップS10へ戻る。
一方、Webページ切替えイベントが発生していないと判断した場合(S11でNO)、レンダリングエンジン302は、スクリプト実行中フラグがOFFであるかどうかをチェックする(S16)。スクリプト実行中フラグがOFFである場合(S16でYES)、レンダリングエンジン302は、現在開かれている子ウィンドウを閉じる(S17)。このとき、レンダリングエンジン302は、子ウィンドウの開閉状態を示す所定のレジスタの値を調べ、開かれている子ウィンドウを検知する。子ウィンドウが開いていない場合には、ステップS17はスキップされ、フローはステップS10へ戻る。
ステップS16でスクリプト実行中フラグがOFFではない場合、フローはステップS16からステップS10へ戻る。また、フローはステップS17からステップS10へ戻る。
なお、複数の子ウィンドウが開かれている場合、子ウィンドウごとに設けられるスクリプト実行中フラグのそれぞれがステップS16においてチェックされる。そして、OFFであるスクリプト実行中フラグに対応する子ウィンドウがステップS16において閉じられ、ONであるスクリプト実行中フラグに対応する子ウィンドウは閉じられない。
図12はスクリプトエンジンの第1実行部の動作を示すフローチャートである。
スクリプトエンジン303の第1実行部310は、表示されたWebページに組み込まれているMFP制御スクリプトの実行を指示する操作が行なわれたかどうかをチェックする(S20)。詳しくは、レンダリングエンジン302から逐次に伝えられる最新の操作情報の示す操作が、MFP制御スクリプトの実行の契機としてHTMLファイルに記述されている特定のコンテンツに対する操作であるかをチェックする。例えば、図6の操作画面501においては、送信ボタン81のクリックが特定のコンテンツに対する操作である。
ステップS20のチェックがNOである場合、ON状態のスクリプト実行中フラグがあるかどうかのチェックが行なわれる(S27)。スクリプト実行中フラグはMFP制御スクリプトの実行ごとに設けられるので、以前に実行が開始された複数のMFP制御スクリプトにそれぞれ対応する複数のスクリプト実行中フラグの中にON状態のものがあるという状況が起こり得る。ON状態のスクリプト実行中フラグがなければ(S27でNO)、フローはステップS20へ戻る。ON状態のスクリプト実行中フラグが1つでもあれば(S27でYES)、フローはステップS23へ進む。
ステップS20のチェックがYESである場合、第1実行部310は、実行が指示されたMFP制御スクリプトに対応するスクリプト実行中フラグを新たに設け、当該スクリプト実行中フラグをONとする(S21)。そして、第1実行部310は、当該MFP制御スクリプトの実行を開始する(S22)。
ステップS22の次のステップS23において、第1実行部310は、第2実行部320からの停止指示があるかどうかをチェックする。複数のMFP制御スクリプトを並行して実行する場合があることから、停止指示には停止すべきMFP制御スクリプトを指定する情報が含まれる。停止指示がある場合(S23でYES)、第1実行部310は、停止指示によって指定されているMFP制御スクリプトの実行を停止し(S28)、停止時の処理段階を特定するステップ番号を保存する(S29)。その後、フローはステップS20へ戻る。
ステップS23において停止指示がないと判断した場合(S23でNO)、第1実行部310は、MFP制御スクリプトの実行を進め(S24)、それによって実行が完了したかどうかをチェックする(S25)。実行が完了した場合(S25でYES)、第1実行部310は実行が完了したMFP制御スクリプトに対応するスクリプト実行中フラグをOFFにする(S26)。実行が完了していない場合(S25でNO)、フローがステップS20へ戻った後に再びステップS24へ進むことによってMFP制御スクリプトの実行が続く。
図13はスクリプトエンジンの第2実行部の動作を示すフローチャートである。
スクリプトエンジン303の第2実行部320は、ON状態のスクリプト実行中フラグがあるかどうかをチェックする(S40)。ON状態のスクリプト実行中フラグがなければ(S40でNO)、ステップS40のチェックが繰り返される。ON状態のスクリプト実行中フラグが1つでもあれば(S40でYES)、フローはステップS41へ進む。すなわち、第2実行部320は、MFP制御スクリプトが実行されているときに以下の処理を行なう。
ステップS41において、第2実行部320は、上述したWebページ切替えイベントが発生したかどうかをチェックする。Webページ切替えイベントが発生していない場合(S41でNO)、フローはステップS46へ進む。
Webページ切替えイベントが発生した場合(S41でYES)、第2実行部320は判定ルーチンを実行する(S42)。判定ルーチンにおいて、第2実行部320は、現在表示されているWebページ50(遷移する前のWebページ)のスクリプトであって実行中であるMFP制御スクリプトを判定の対象とし、その実行を継続するか停止するかを判定する。
判定ルーチンの判定結果によってフローは分岐する(S43)。判定結果が「継続する」である場合、第2実行部320は継続実行ルーチンを実行する(S44)。この場合、フローはステップS44からステップS46へ進む。一方、判定結果が「停止する」である場合、第2実行部320は第1実行部320に対して当該判定の対象とされたMFP制御スクリプトの実行の停止を指示する(S45)。この場合、ステップS45からステップS40へ戻る。
ステップS46において、第2実行部320は、継続実行ルーチンで継続されたMFP制御スクリプトの実行が完了したかどうかをチェックする。チェック結果がYESである場合、第2実行部320は、実行が完了したMFP制御スクリプトに対応するスクリプト実行中フラグをOFFにする(S47)。その後、フローはステップS40へ戻る。
図14は図13の判定ルーチンのフローチャートである。
第2実行部320は、スクリプト実行中フラグがON状態であることから実行中であると判断したMFP制御スクリプトが、MFP1に対して複数の処理を行なわせるスクリプトであるかどうかをチェックする(S421)。ここでいう「処理」とは、ユーザーが1つの作業として認識するMFP1の動作であり、行なわせるか行なわせないかをユーザーが操作画面で指定することができるものである。
例えば、図9の操作画面503で指定される“入力されたファイルをボックス190に保存し、かつ保存したファイルを電子メールに添付して送信する”という動作は、ボックス190への保存という第1の処理と電子メールによる送信という第2の処理とを行なう動作である。
これに対して、図6の操作画面501で指定される“入力されたファイルをボックス190に保存する”という動作は、単一の処理を行なう動作である。この“入力されたファイルをボックス190に保存する”という動作は、実際には入力先との通信およびMFP1内でのデータ転送を含む種々の処理を伴う。しかし、これら種々の処理はユーザーが操作に際してそれぞれを1つの作業として認識するものではない。したがって、ステップS421のチェックにおいては“入力されたファイルをボックス190に保存する”という動作は単一の処理とされる。
MFP制御スクリプトがMFP1に対して複数の処理を行なわせるスクリプトではないと判断した場合(S421でNO)、第2実行部320は判定結果を「継続する」にする(S422)。つまり、MFP1に対して単一の処理を行なわせるMFP制御スクリプトについては、対応するWebページ50の表示が終了される場合に必ず実行を継続すると判定する。
これに対して、MFP制御スクリプトがMFP1に対して複数の処理を行なわせるスクリプトである場合(S421でYES)、実行中の処理の実行順位によって判定結果が異なる。すなわち、MFP制御スクリプトがMFP1に対してn(n≧2)個の処理を行なわせるものであるとき、実行中の処理の実行順位が1位ではないあらかじめ設定された順位k(k≧2)以降の順位のいずれかである場合、第2実行部320は判定結果を「継続する」にする(S422a、S422)。そして、実行中の処理の実行順位が1位から(k−1)位までの順位のいずれかである場合、第2実行部320は判定結果を「停止する」にする(S422a、S423)。
このように処理の実行順位によって判定結果を異ならせるのは、次の推測に基づいている。ユーザーがMFP制御スクリプトを実行させてからある程度の時間が経過した時点でWebページ50の切替え操作をする場合は、MFP制御スクリプトの実行が完了したと勘違いをした場合であると考えられる。つまり、指定した複数の処理がMFP1によって完結されるのをユーザーが望んでいると考えられる。したがって、この場合はMFP制御スクリプトの実行を継続させる。これとは反対に、ユーザーがMFP制御スクリプトを実行させて直ぐにWebページ50の切替え操作をする場合は、ユーザーは処理の完結を望んではおらず、MFP制御スクリプトの実行指示をキャンセルする意図をもってWebページ50の表示の終了を指示する操作をすると考えられる。したがって、この場合はMFP制御スクリプトの実行を停止させる。
判定結果を左右する順位kの値を、図15のように処理の数nに応じて設定しておくことができる。ステップS423のチェックに際して、第1実行部310がMFP制御スクリプトを実行する過程で判別したnの値を第2実行部320が取得し、nの値に対して設定されているkの値に基づいて、実行中の処理の実行順位x(1≦x≦n)が1〜kであるか1〜(k−1)であるかを判別するようにすればよい。
図16は図13の継続実行ルーチンのフローチャートである。
第2実行部320は、判定ルーチンで判定の対象とされたMFP制御スクリプトの実行の停止を第1実行部320に対して指示し(S440)、指示を受けた第1実行部310によって保存された実行中断時のステップ番号を取得する(S441)。そして、第2実行部320は、取得したステップ番号からMFP制御スクリプトの実行を再開し(S442)、レンダリングエンジン301に対して子ウィンドウの表示を指示する(S443)。
以上のように動作するWebブラウザ300を用いるリモートアクセスの例が図17および図18に示される。例示されるリモートアクセスでは、図9の操作画面503に組み込まれたMFP制御スクリプト600が実行される。MFP制御スクリプト600は、受信した文書の保存(処理1)をMFP1に行なわせる部分610と、受信した文書の電子メールによる送信(処理2)をMFP1に行なわせる部分620とを有している。図17の例ではMFP制御スクリプト600の実行中にWebページ50の表示に関わる操作が行なわれず、図18の例ではMFP制御スクリプト600の実行中にWebページの表示に関わる操作が行なわれる。
図17において、既に操作画面503が表示され、保存する文書の指定、保存先のボックスの指定および電子メールの送信先の指定をユーザーが済ませた状態を想定する。この状態において、ユーザーが送信ボタン81をクリックすると、それを示すイベント通知を受けてスクリプトエンジン303がMFP制御スクリプト600の実行を開始する。
まず、MFP制御スクリプト600のうちの処理1に対応する部分610が実行されることによって、ユーザー端末3からユーザーの指定した文書のファイルがMFP1にアップロードされ、ユーザーの指定したボックスに保存される。保存が終わると、アップロードの完了がMFP1からスクリプトエンジン303へ通知される。アップロードの完了通知を受け取ることで、MFP制御スクリプト600のうちの部分610の実行が正常に終了することになる。
次に、MFP制御スクリプト600のうちの処理2に対応する部分620が実行されることによって、ユーザー端末3からMFP1に対して電子メールの送信が指示される。指示を受けてMFP1が先に保存した文書を電子メールに添付して送信する。送信が終わると、メール送信の完了がMFP1からスクリプトエンジン303へ通知される。メール送信の完了通知を受け取ることで、MFP制御スクリプト600のうちの部分620の実行が正常に終了することになる。
図18において、ユーザーが送信ボタン81をクリックしてから文書のアップロードの完了が通知されるまでの動作は、図17と同様である。MFP制御スクリプト600のうちの部分610の実行が終了した後、続いて処理2に対応する部分620が実行されることによって、ユーザー端末3からMFP1に対して電子メールの送信が指示される。図18の例では、MFP1が電子メールの送信指示を受けてから送信を行なってメール送信の完了を通知するまでの間に、ユーザーが閉じるキー49をクリックするというWebページ50の表示に関わる操作を行なう。
Webページ切替えイベントの通知を受けて、スクリプトエンジン303はレンダリングエンジン302に対して子ウィンドウの表示を指示する。この指示に従ってレンダリングエンジン302によって子ウィンドウとしてお知らせウィンドウ91が表示される。このとき、スクリプトエンジン303は第1実行部310と第2実行部320との連携によってMFP制御スクリプト600の実行を継続する。
お知らせウィンドウ91を表示させたレンダリングエンジン302は、ユーザーによる閉じるキー49のクリックに応答して親ウィンドウであるウィンドウ40を閉じる。その後、MFP1において文書を添付した電子メールの送信が終わり、メール送信の完了通知を受け取ることでMFP制御スクリプト600の実行が終了すると、レンダリングエンジン302はお知らせウィンドウ91(子ウィンドウ)を閉じる。
図19は図13の判定ルーチンの変形例のフローチャートである。
第2実行部320は、実行中のMFP制御スクリプト600がMFP1に対して複数の処理を行なわせるスクリプトであるかどうかをチェックする(S421)。MFP制御スクリプトが複数の処理を行なわせるスクリプトであると判断した場合(S421でYES)、第2実行部320は判定結果を「継続する」にする(S422)。これに対して、MFP制御スクリプトが複数の処理を行なわせるスクリプトではないと判断した場合(S421でNO)、第2実行部320は判定結果を「停止する」にする(S423)。つまり、MFP1に対して単一の処理を行なわせるMFP制御スクリプト600については、対応するWebページ50の表示が終了される場合に実行を停止すると判定する。
図20は図13の継続実行ルーチンの変形例のフローチャートである。
第2実行部320は、判定ルーチンで判定の対象とされたMFP制御スクリプトの実行の停止を第1実行部320に対して指示し(S440)、指示を受けた第1実行部310によって保存された実行中断時のステップ番号を取得する(S441)。そして、第2実行部320は、取得したステップ番号からMFP制御スクリプトの実行を再開する(S442)。
再開に際して、第2実行部320は、MFP制御スクリプトの実行するステップに対応する処理が当該MFP制御スクリプトのMFP1に行なわせる処理のうちの最後の処理ではないかどうかをチェックする(S443a)。MFP制御スクリプトがMFP1に単一の処理を行なわせるスクリプトである場合、当該単一の処理は最後の処理とみなされる。
実行するステップに対応する処理が最後の処理ではない場合(S443aでYES)、第2実行部320は、レンダリングエンジン301に対して子ウィンドウの表示を指示する(S443b)。
実行するステップに対応する処理が最後の処理である場合(S443aでNO)、子ウィンドウの表示は指示されず、フローは図14のフローに戻る。この場合、子ウィンドウの表示が省略されることになる。その理由は、MFP制御スクリプトの実行が完了するまでに長い時間はかからないであろうから、MFP制御スクリプトの実行の継続をユーザーに知らせることの必要性が小さいと考えられるからである。本例のように子ウィンドウを開かないことにすると、ユーザーがWebページの切替えを指示したときに、子ウィンドウが開くというユーザーが予期していなかった表示にユーザーが戸惑うという状況は起こらない。
図21はMFPの要部の機能構成の他の例を示している。図21の例では、MFP1においてWebブラウザ300bが起動される。Webブラウザ300bの構成は図5のWebブラウザ300の構成と同様である。Webブラウザ300bは、MFP1内に設けられたWebサーバー200から操作画面501,502,503,504のいずれかとなるWebページ50を取得し、そのWebページ50を操作パネル17のディスプレイに表示させる。
Webブラウザ300bのスクリプトエンジン303は、Webページ50に組み込まれたMFP制御スクリプト600を実行する。その過程でスクリプトエンジン303は、ユーザーが指定した処理をMFP1に行なわせるための制御をメインコントローラー10に依頼したり、処理の完了通知をメインコントローラー10から受けたりする。
以上の実施形態の変形例として、MFP制御スクリプト600の実行によって発生するWebブラウザ300からの要求を受け付けるサービス機能をWebサーバー200に設け、このサービス機能を利用してユーザー端末3がMFP1に所定の処理を行わせるようにすることができる。
上述の実施形態によれば、Webページ50が表示されたときに自動的に実行されるスクリプトが当該Webページに組み込まれている場合において、当該Webページに組み込まれたMFP制御スクリプト600の実行中に、ユーザーは当該Webページの表示を終了させることができる。当該Webページの表示が終了するときに、MFP制御スクリプト600以外のスクリプトの実行を中止することにより、ユーザー端末3におけるリソース負荷(CPU稼働率、メモリ使用量、ウィンドウサイズ)を低減することができる。
上述の実施形態ではWebサーバー200をMFP1に設ける構成を例示したが、必ずしもWebサーバー200をMFP1に設ける必要はない。例えばサーバー機や他のMFPといったMFP1とは別の情報機器にWebサーバー200を設けることができる。そのようする場合、ユーザー端末3上のWebブラウザ300に、MFP1の外部のWebサーバー200からWebページ50を取得させる。そして、Webページ50に組み込まれたMFP制御スクリプト600が実行されるとき、指定された処理をユーザー端末3がMFP1に行なわせる。