(57)【特許請求の範囲】
【請求項１】
画面に表示された複数のオブジェクト間においてフォーカスが移動したことを示すイベントを検出した場合に、当該フォーカスの移動が、マウスカーソルを移動させる指示を入力するための装置に対する、マウスカーソルを動かすためのユーザ操作により生じたか否かを判定する判定処理と、
当該フォーカスの移動が、当該装置に対する、マウスカーソルを動かすためのユーザ操作により生じたと判定された場合を除き、当該フォーカスの移動先のオブジェクトを特定し、当該移動先のオブジェクトの位置を特定し、当該移動先のオブジェクトの位置に基づいてマウスカーソルを移動させる終点を設定する設定処理と、
前記マウスカーソルの位置が前記終点に至るまで、前記終点により近い位置への前記マウスカーソルの移動を複数回行う移動処理
をコンピュータに実行させるためのプログラム。
【請求項２】
前記移動処理において、前記マウスカーソルの位置が前記終点に至る直前の複数回の移動における移動速度を、前記マウスカーソルの位置が前記終点に至る中間付近における移動速度よりも遅くする
請求項１記載のプログラム。
【請求項３】
更に、
ユーザのマウス操作による前記マウスカーソルの移動が生じたと判定した場合に、前記移動処理における前記マウスカーソルの前記移動を中断させる中断処理
を含む請求項１又は２記載のプログラム。
【請求項４】
前記設定処理において、前記移動先のオブジェクトの種類がテキスト入力フィールドである場合に、前記テキスト入力フィールドに含まれるキャレットの位置を特定し、特定した前記キャレットの位置を前記マウスカーソルを移動させる前記終点に設定する
請求項１乃至３のいずれか１つ記載のプログラム。
【請求項５】
画面に表示された複数のオブジェクト間においてフォーカスが移動したことを示すイベントを検出した場合に、当該フォーカスの移動が、マウスカーソルを移動させる指示を入力するための装置に対する、マウスカーソルを動かすためのユーザ操作により生じたか否かを判定する判定処理と、
当該フォーカスの移動が、当該装置に対する、マウスカーソルを動かすためのユーザ操作により生じたと判定された場合を除き、当該フォーカスの移動先のオブジェクトを特定し、当該移動先のオブジェクトの位置を特定し、当該移動先のオブジェクトの位置に基づいてマウスカーソルを移動させる終点を設定する設定処理と、
前記マウスカーソルの位置が前記終点に至るまで、前記終点により近い位置への前記マウスカーソルの移動を複数回行う移動処理
をコンピュータにより実行するマウスカーソル制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、グラフィカル・インターフェースを備えたコンピュータにおけるマウスカーソルの制御に関する。
【背景技術】
【０００２】
グラフィカル・インターフェースを備えたコンピュータにおいて、ウインドウやダイアログボックスが、ボタンやテキスト入力フィールドなどの複数のオブジェクトを有することがある。このようなウインドウやダイアログボックスの場合には、ユーザは、フォーカスされているオブジェクトに限り、データの入力や選択を行うことができる。従って、ユーザはその時点でどのオブジェクトにフォーカスがあるかを認識していなければ、正常な操作を行うことができない。
【０００３】
しかし、どのオブジェクトにフォーカスがあるかは、視覚的に認識しづらいことが多い。例えば、オブジェクトの領域を破線で囲むことによりフォーカスの存在を表示することもあるが、破線の囲いはあまり目立たたず、ユーザは、そのオブジェクトにフォーカスがあることを直感的に理解できないことがある。
【０００４】
また、ショートカットキー、アクセラレーションキー、あるいはタブ移動（タブキー、シフトキー＋タブキー）などのキー操作によって、オブジェクト間のフォーカスを移動させることが可能なグラフィカル・インターフェースでは、キー操作によるフォーカスの移動を、ユーザが見失うことも多い。
【０００５】
例えば、オブジェクト間をフォーカスが移動する順番に規則性がない場合には、ユーザはフォーカスの存在箇所を見失いやすい。プログラムの製作者がフォーカスを移動させる順番に気を配らない場合や、予期しないプログラムの修正が行われる場合などに、このような事態が生じやすい。
【０００６】
また、オブジェクトの配置が整然としていない画面においても、ユーザはキー操作によるフォーカスの移動先を予測し難く、フォーカスの存在箇所を見失いやすい。
【０００７】
このように、キー操作によるオブジェクト間のフォーカスの移動は、慣れているユーザには操作の手間が省ける利点がある一方、不慣れなユーザにとっては、データの入力や選択の対象を認識できず、混乱するという欠点もある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０３−１９１４１１号公報
【特許文献２】特開２００８−１７６５７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従って、本技術の目的は、一側面において、複数のオブジェクト間におけるフォーカスの移動先をユーザが見失うことを防止することである。
【課題を解決するための手段】
【００１０】
本技術の一側面に係るプログラムは、（Ａ）画面に表示された複数のオブジェクト間においてフォーカスが移動したことを示すイベントを検出した場合に、当該フォーカスの移動先のオブジェクトを特定し、当該移動先のオブジェクトの位置を特定し、当該移動先のオブジェクトの位置に基づいてマウスカーソルを移動させる終点を設定する設定処理と、（Ｂ）マウスカーソルの位置が終点に至るまで、終点により近い位置へのマウスカーソルの移動を複数回行う移動処理をコンピュータに実行させる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施の形態におけるプログラムの構成例を示す図である。
【図２】図２は、複数のオブジェクトを含むウインドウの例を示す図である。
【図３】図３は、第１の実施の形態におけるアプリケーションプログラムの構成例を示す図である。
【図４】図４は、メッセージ処理のフローを示す図である。
【図５】図５は、フォーカス移動処理のフローを示す図である。
【図６】図６は、設定処理のフローを示す図である。
【図７】図７は、チェックボックスにおいてフォーカスを表示する例を示す図である。
【図８】図８は、ラジオボタンにおいてフォーカスを表示する例を示す図である。
【図９】図９は、ボタンにおいてフォーカスを表示する例を示す図である。
【図１０】図１０は、テキスト入力フィールドにおいてフォーカスを表示する例を示す図である。
【図１１】図１１は、終点決定処理のフローを示す図である。
【図１２】図１２は、マウスカーソルの始点と終点の関係を示す図である。
【図１３】図１３は、移動ベクトル算出処理のフローを示す図である。
【図１４】図１４は、移動ベクトル算出処理のフローを示す図である。
【図１５】図１５は、移動ベクトル算出処理のフローを示す図である。
【図１６】図１６は、タイマーイベント処理のフローを示す図である。
【図１７】図１７は、状況判定処理のフローを示す図である。
【図１８】図１８は、移動処理のフローを示す図である。
【図１９】図１９は、終了処理のフローを示す図である。
【図２０】図２０は、マウス移動処理のフローを示す図である。
【図２１】図２１は、中断判定処理のフローを示す図である。
【図２２】図２２は、中断処理のフローを示す図である。
【図２３】図２３は、第２の実施の形態におけるプログラムの構成例を示す図である。
【図２４】図２４は、第２の実施の形態における常駐プログラムの構成例を示す図である。
【図２５】図２５は、イベントフック処理のフローを示す図である。
【図２６】図２６は、第３の実施の形態におけるプログラムの構成例を示す図である。
【図２７】図２７は、第３の実施の形態におけるマウスドライバの構成例を示す図である。
【図２８】図２８は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１２】
［実施の形態１］
本実施の形態では、画面を表示させるアプリケーションプログラム内にマウスカーソル制御部を設ける例について説明する。マウスカーソル制御部は、画面に表示されたオブジェクト間でフォーカスが移動する場合に、フォーカスが移動した先のオブジェクトに向かって、マウスカーソルが自動的に移動するように、マウスカーソルを制御する。マウスカーソル制御部の制御により、フォーカス移動に連動してマウスカーソルがフォーカスの移動先に追従するようになる。
【００１３】
図１は、第１の実施の形態におけるプログラムの構成例を示す図である。コンピュータ１は、オペレーティングシステム２とアプリケーションプログラム３を有している。
【００１４】
オペレーティングシステム２は、グラフィカル・インターフェースをサポートする機能を有している。例えば、オペレーティングシステム２は、イベント間のフォーカスの移動などの画面制御などを行い、フォーカスの移動、マウスの移動あるいはタイマーなどにより発生するイベントをメッセージ形式でアプリケーションプログラム３に通知するように動作する。
【００１５】
アプリケーションプログラム３は、アプリケーション処理部４とマウスカーソル制御部５を含み、アプリケーションプログラム３を実行することで、アプリケーション処理部４とマウスカーソル制御部５をコンピュータ１内に実現する。
【００１６】
アプリケーション処理部４は、アプリケーション機能の主たる処理を行う。アプリケーション処理部４は、アプリケーション機能を実現するために、データの入力や選択を受け付ける。そのため、アプリケーション処理部４は、例えば、複数のオブジェクトを含むウインドウやダイアログボックスをオペレーティングシステム２を介して画面に表示させ、ユーザの操作によりデータの入力や選択を受け付け、受け付けたデータの入力や選択に基づいて、データ処理を行うように構成されている。
【００１７】
マウスカーソル制御部５は、アプリケーションの機能とは無関係に、フォーカスの移動先となったオブジェクトに、マウスカーソルが追従するように制御するためのモジュールである。
【００１８】
図２に、画面に表示されたウインドウの例を示す。ウインドウ１０には、複数のオブジェクト１１ａ〜１１ｅが配置されている。例えば、タブキーが押されると、オブジェクト１１ａ〜１１ｅ間を順にフォーカスが移動する。移動する順番は、主にアプリケーションプログラムに依存する。
【００１９】
キー操作によりオブジェクト１１間でフォーカスの移動が生じると、マウスカーソル１２は、フォーカスのあるオブジェクト１１へ向かって移動を開始し、オブジェクト１１内あるいはオブジェクト１１の近傍まで移動する。
【００２０】
移動の速度は、常に一定である例と、始点から終点までの距離に応じて定まる例と、移動中に変化する例などが考えられる。特に、終点付近において移動速度を遅くすることによって、終点への注目を集めるようにしてもよい。
【００２１】
移動の開始時にマウスカーソル１２の形態を変更し、オブジェクト１１に向かって進行中であることをユーザが認識できるようにしてもよい。また、移動の終了時には、マウスカーソル１２をアニメーション表示させ、終点であることをユーザに認識させるようにしてもよい。
【００２２】
続いて、マウスカーソル制御部５を中心として、アプリケーションプログラム３の構成について説明する。図３は、第１の実施の形態におけるアプリケーションプログラム３の構成例を示す図である。
【００２３】
図３に示す通り、アプリケーションプログラム３は、メッセージ処理部２０、フォーカス移動処理部３０、タイマーイベント処理部４０、マウス移動処理部５０、記憶領域６０及びオブジェクトテーブル８０を有している。図中太線で囲まれているモジュールは、マウスカーソル制御部５の一部である。
【００２４】
メッセージ処理部２０は、オペレーティングシステム２からイベントに関するメッセージを受信し、イベントの内容に応じて、フォーカス移動処理部３０、タイマーイベント処理部４０、マウス移動処理部５０などのいずれかのイベント処理部にイベントを振り分けるように動作する。
【００２５】
フォーカス移動処理部３０は、メッセージの内容がフォーカス移動のイベントである場合に、そのイベントに応じて動作する。フォーカス移動処理部３０は、マウスカーソル制御部５の一部である設定部３１を有している。設定部３１は、マウスカーソル１２を自動的に移動させるための設定を行うように動作する。
【００２６】
タイマーイベント処理部４０は、メッセージの内容がタイマーイベントである場合に、そのイベントに応じて動作する。タイマーイベント処理部４０は、マウスカーソル制御部５の一部である状況判定部４１、移動部４３、終了部４５及び中断部４７を有している。
【００２７】
状況判定部４１は、マウスカーソル１２の制御に関する状況を判定するように動作する。移動部４３は、オペレーティングシステム２を介してマウスカーソル１２を移動させるように動作する。終了部４５は、マウスカーソル１２の制御を終了させるように動作する。中断部４７は、マウスカーソル１２の制御を中断させるように動作する。
【００２８】
マウス移動処理部５０は、メッセージの内容がマウス移動のイベントである場合に、そのイベントに応じて動作する。マウス移動処理部５０は、マウスカーソル制御部５の一部である中断判定部５１を有している。中断判定部５１は、ユーザのマウス操作を検出して中断を判定するように動作する。
【００２９】
記憶領域６０は、マウスカーソル制御部５における制御に用いるデータを記憶させるための領域である。記憶領域６０は、作動中フラグ６１、中断フラグ６３、タイマーイベント番号６５、終点位置６７、移動ベクトル６９及び元のマウスカーソルの種類７１を記憶できるように構成されている。
【００３０】
作動中フラグ６１は、マウスカーソル１２の制御が作動中であるか否かを判定するためのフラグである。中断フラグ６３は、マウスカーソル１２の制御を中断するか否かを判定するためのフラグである。タイマーイベント番号６５は、マウスカーソル１２の制御に用いるタイマーイベントの番号である。終点位置６７は、マウスカーソル移動の終点である。移動ベクトル６９は、マウスカーソル１２の一回の移動における始点から終点へのベクトルである。一定の速度で移動する場合には、共通の移動ベクトルを一つ保持し、速度を変えながら移動する場合には、複数の移動ベクトルを保持する。元のマウスカーソルの種類７１は、マウスカーソル１２の移動を開始する前のマウスカーソルの種類である。
【００３１】
オブジェクトテーブル８０は、アプリケーション処理部４で表示させるウインドウやダイアログボックスに含まれるオブジェクト１１の情報を記憶している。オブジェクト１１の情報として、例えばオブジェクトの大きさ、位置及び種類を記憶している。マウスカーソル制御部５の有無にかかわらず、アプリケーション処理部４は、通常オブジェクトテーブル８０を用いて動作する。
【００３２】
続いて、メッセージ処理部２０の処理について説明する。図４に、メッセージ処理部２０によるメッセージ処理の例を示す。
【００３３】
メッセージ処理部２０は、自プロセス宛にオペレーティングシステム２から通知されるメッセージを受け取る（Ｓ１０１）。そして、メッセージ処理部２０は、メッセージに含まれるイベントの内容を読み取り、イベントの種類に応じて処理を振り分けるように動作する。
【００３４】
図４に示すように、メッセージ処理部２０は、イベントの内容がフォーカスの移動であるか否かを判定し（Ｓ１０３）、フォーカスの移動である場合には、フォーカス移動処理部３０によるフォーカス移動処理（Ｓ１０５）に移行する。フォーカス移動処理（Ｓ１０５）の後は、メッセージ処理部２０によるメッセージの受け取り（Ｓ１０１）に戻る。
【００３５】
一方、イベントの内容がフォーカスの移動でない場合には、メッセージ処理部２０は、イベントの内容がタイマーイベントであるか否かを判定する（Ｓ１０７）。イベントの内容がタイマーイベントである場合には、タイマーイベント処理部４０によるタイマーイベント処理（Ｓ１０９）に移行する。タイマーイベント処理（Ｓ１０９）の後は、メッセージ処理部２０によるメッセージの受け取り（Ｓ１０１）に戻る。
【００３６】
一方、イベントの内容がタイマーイベントでない場合には、メッセージ処理部２０は、イベントの内容がマウス移動であるか否かを判定し（Ｓ１１１）、イベントの内容がマウス移動である場合には、マウス移動処理部５０によるマウス移動処理（Ｓ１１３）に移行する。マウス移動処理（Ｓ１１３）の後は、メッセージ処理部２０によるメッセージの受け取り（Ｓ１０１）に戻る。
【００３７】
一方、イベントの内容がマウス移動でない場合には、通常他のイベントに関する判断に移るが、これらの判断はマウスカーソル制御部５の動作と関わりがないので説明を省略する。尚、他のイベントに関する判断が行われ、そのイベントに関する処理が行われる場合でも、メッセージ処理部２０によるメッセージの受け取り（Ｓ１０１）に戻る。
【００３８】
このようにして、メッセージ処理部２０はメッセージの内容に応じて、イベントに対する処理に振り分ける制御を行う。尚、イベントの判定の順序は、この例に限られるものではなく、他の順序であってもよい。
【００３９】
続いて、フォーカス移動処理部３０によるフォーカス移動処理（Ｓ１０５）について説明する。まず、フォーカスの移動を検出することが、マウスカーソル１２の制御の契機となる。
【００４０】
図５は、フォーカス移動処理のフローを示す図である。フォーカス移動処理部３０は、マウスによるイベントであるか否かを判定する（Ｓ２０１）。マウスは、マウスカーソル１２を移動させる指示を入力するための装置の例である。他に、フラットポイントやマウスタブレットなどの場合も、マウスと同様に判定するようにしてもよい。以下、同様である。
【００４１】
フォーカス移動のイベントには、フォーカス移動を指示した装置の情報が含まれている。装置の情報により、マウス操作によるフォーカス移動とキー操作によるフォーカス移動を区別することができる。
【００４２】
マウス操作によるフォーカス移動の場合には、ユーザの混乱を避けるために、フォーカス移動に連動した本制御によるマウスカーソルの移動は行わない。
【００４３】
マウス操作によらないフォーカス移動の場合には、設定部３１による設定処理（Ｓ２０３）に移行する。これにより、キー操作によるフォーカス移動の場合には、設定部３１による設定処理（Ｓ２０３）が行われることになる。
【００４４】
このように判定することによって、例えば、ショートカットキー、アクセラレーションキー、あるいはタブ移動（タブキー、シフトキー＋タブキー）などのキー操作によってフォーカスが移動する場合に、マウスカーソルが連動する。
【００４５】
更に、数字入力フィールドに入力された数字が所定桁数を越え、あるいはテキスト入力フィールドに入力された文字数が所定数を越えたことにより、自動的にフォーカスが移動されるような場合にも、マウスカーソル１２が連動する。
【００４６】
次に、設定部３１による設定処理（Ｓ２０３）について説明する。図６に、設定処理のフローを示す。設定部３１は、まず移動先のオブジェクト１１を特定する（Ｓ３０１）。移動先のオブジェクト１１を示す情報は、フォーカスの移動のイベントに含まれているので、設定部３１は、これを読み取る。
【００４７】
設定部３１は、更に、移動先のオブジェクトの大きさ、位置及び種類の情報を、オブジェクトテーブル８０から取得する（Ｓ３０３）。
【００４８】
尚、オブジェクト１１には幾つかの種類がある。図７乃至図１０に、チェックボックスにおいてフォーカスを表示する例と、ラジオボタンにおいてフォーカスを表示する例と、ボタンにおいてフォーカスを表示する例と、テキスト入力フィールドにおいてフォーカスを表示する例を示す。
【００４９】
図７では、「ｃｈｅｃｋＢｏｘ１」のチェックボックスにフォーカスがあることが、破線の囲み線により示されている。図８では、「ｒａｄｉｏＢｕｔｔｏｎ１」のラジオボタンにフォーカスがあることが、破線の囲み線により示されている。図９では、「ＯＫ」のボタンにフォーカスがあることが、破線の囲み線により示されている。図１０では、「ｔｅｘｔｂｏｘ  ｓａｍｐｌｅ」の末尾でキャレットが点滅するが、破線の囲み線がないので、フォーカスがあることがわかりにくい。
【００５０】
図６に戻って、設定部３１は、オペレーティングシステム２からマウスカーソル１２の位置を取得する（Ｓ３０５）。更に、設定部３１は、終点決定処理（Ｓ３０７）により、マウスカーソルの移動先となる終点を決定する。
【００５１】
終点決定処理（Ｓ３０７）について説明する。図１１に、終点決定処理のフローを示す。この例で、設定部３１は、オブジェクト１１の種類がチェックボックス、ラジオボタン及びボタンのいずれかであるか、あるいはテキスト入力フィールドであるかを判定する（Ｓ４０１）。
【００５２】
まず、オブジェクトの種類が、チェックボックス、ラジオボタン及びボタンのいずれかである場合の処理について説明する。これらのオブジェクトの場合には、右下の付近にマウスカーソル１２を表示することにより、マウスカーソル１２がオブジェクト１１の表示に重なることを避ける。
【００５３】
図１２は、マウスカーソル１２ａの始点と終点の関係を示す図である。図中原点は、画面の左上隅であると仮定する。
【００５４】
この例では、オブジェクトの位置（ｘ，ｙ）は、オブジェクトの矩形における左上の端点の座標を示している。また、オブジェクトの大きさ（Ａ，Ｂ）は、オブジェクトの矩形の横幅Ａと縦幅Ｂを示している。従って、オブジェクトの矩形における右下の端点の位置は、オブジェクトの横軸座標ｘにオブジェクトの横幅Ａを加えた横軸座標ｘ＋Ａと、オブジェクトの縦軸座標ｙにオブジェクトの縦幅Ｂを加えた縦軸座標ｙ＋Ｂとにより求めることができる。
【００５５】
この例で、マウスカーソル１２ａの位置は、マウスカーソル１２ａのホットスポットの座標を示している。また、終点におけるマウスクリックがイベントに対する操作として認識されることが望ましいので、マウスカーソル１２ｂのホットスポットがオブジェクトの内側に重なるように調整する。従って、オブジェクトの矩形における右下の端点から、原点側に横軸座標をｐドット減じ、更に同じく原点側に縦軸座標をｑドット減ずる。そのため、終点は、（ｘ＋Ａ−ｐ，ｙ＋Ｂ−ｑ）となる。ｐとｑは、例えば２〜４ドットとする。
【００５６】
図１１に戻って、設定部３１は、上述の位置関係を前提として、オブジェクトの矩形における右下の端点の位置を算出する（Ｓ４０３）。つまり、設定部３１は、オブジェクトの位置（ｘ，ｙ）にオブジェクトの大きさ（Ａ，Ｂ）を加算して、右下位置（ｘ＋Ａ，ｙ＋Ｂ）を求める。
【００５７】
更に、設定部３１は、左上方に微小幅だけ位置を修正する（Ｓ４０５）。設定部３１は、上述の位置関係によれば、右下位置（ｘ＋Ａ，ｙ＋Ｂ）から調整幅（ｐ，ｑ）を減じて、終点（ｘ＋Ａ−ｐ，ｙ＋Ｂ−ｑ）を求める。
【００５８】
図１１に示したオブジェクトの種類（Ｓ４０１）の判定に戻って、オブジェクト１１の種類がテキスト入力フィールドである場合には、設定部３１は、オペレーティングシステム２からキャレット位置を取得し（Ｓ４０７）、取得したキャレット位置を終点に設定する。
【００５９】
マウスカーソル１２の種類の変更に伴いホットスポットが変更される場合には、その差分で修正するようにしてもよい。その場合には、マウスカーソル表示範囲内における変更後のホットスポットの位置から変更前のホットスポットの位置を引いて、変動量を求める。そして、その変動量を終点に加えることにより終点を修正する。
【００６０】
図６に戻って、設定部３１は、移動ベクトル算出処理（Ｓ３０９）により、一回の移動に伴う移動方向と移動距離を特定する移動ベクトルを算出する。
【００６１】
移動ベクトル算出処理（Ｓ３０９）について、常に一定の速度で移動する例と、始点と終点間の距離に応じて速度を変えて始点と終点間の移動に要する時間を一定とする例と、始点と終点間の移動中に速度が変化する例とについて説明する。
【００６２】
まず、図１３に従って、常に一定の速度で移動する例について説明する。設定部３１は、まず始点を算出する（Ｓ５０１）。通常、設定部３１は、Ｓ３０５で取得したマウスカーソル位置を始点とする。
【００６３】
マウスカーソル１２の種類の変更に伴いホットスポットが変更される場合には、その差分で修正するようにしてもよい。その場合には、マウスカーソル表示範囲内における変更後のホットスポットの位置から変更前のホットスポットの位置を引いて、変動量を求める。そして、その変動量を始点に加えることにより始点を修正する。
【００６４】
設定部３１は、続いて移動の方向を算出する（Ｓ５０３）。設定部３１は、始点から終点へのベクトルの方向を求める。移動の方向は、始点から終点へのベクトルの方向と同じにする。
【００６５】
設定部３１は、一定長ベクトルを算出する（Ｓ５０５）。この例では、ベクトル長を一定とするので、設定部３１は、移動の方向と一定長のベクトルを求め、移動ベクトルとして記憶領域６０に格納する。
【００６６】
次に、図１４に従って、始点と終点間の移動に要する時間を一定とする例について説明する。この例では、移動距離が長い場合には早く移動し、移動距離が短い場合には遅く移動することになる。
【００６７】
始点の算出（Ｓ６０１）と方向の算出（Ｓ６０３）は、図１３のＳ５０１とＳ５０３と同様であるので、説明を省略する。
【００６８】
設定部３１は、移動距離を算出する（Ｓ６０５）。具体的には、設定部３１は始点と終点間の距離を求め、移動距離とする。
【００６９】
設定部３１は、次に、個別移動距離を算出する（Ｓ６０７）。具体的には、設定部３１は、移動距離を所定の移動回数で割ることによって、個別移動距離を求める。
【００７０】
そして、設定部３１は、移動の方向と個別移動距離を有する個別移動距離ベクトルを算出する（Ｓ６０９）。この場合、個別移動距離ベクトルは各移動において共通であるので、一つで足りる。設定部３１は、個別移動距離ベクトルを記憶領域６０の移動ベクトル６９の領域に格納する。
【００７１】
最後に、図１５に従って、始点と終点間の移動中に速度が変化する例について説明する。始点の算出（Ｓ７０１）と方向の算出（Ｓ７０３）は、図１３のＳ５０１とＳ５０３と同様であるので、説明を省略する。また、移動距離の算出（Ｓ７０５）は、図１４のＳ６０５と同様であるので、説明を省略する。
【００７２】
設定部３１は、変動長を算出する（Ｓ７０７）。設定部３１は、例えば、移動の各回における変動量を求める。変動長の求め方は限定されないが、設定部３１は、変動長の合計が移動距離と一致するようにする。設定部３１は、滑らかな曲線を有する関数を用い、移動回数分の変数に対する関数値を求め、それらの関数値の比と同じになるように、変動長を求めることも有効である。例えば、Ｎ−１回の移動を行う場合に、ｓｉｎ（π／Ｎ）、ｓｉｎ（２π／Ｎ）、ｓｉｎ（３π／Ｎ）、・・・、ｓｉｎ（（Ｎ−１）π／Ｎ））に比例するように変動長を設定する。このようにすることによって、滑らかな移動が実現される。
【００７３】
特に、終点に至る直前の複数回の移動における変動長を、始点と終点の中間付近における変動長よりも短くすることが有効である。これにより、終点付近の移動速度が遅くなり、終点位置への注意を引くことができるようになる。
【００７４】
また、始点からの直後の複数回の移動における変動長を、始点と終点の中間付近における変動長よりも短くするようにしてもよい。これにより、移動開始時の移動速度を遅くし、マウスカーソルが自動的に動くことへの違和感を減ずることができるようになる。
【００７５】
設定部３１は、移動の方向と変動長を有する変動長ベクトルを算出する（Ｓ７０９）。設定部３１は、変動長ベクトルを移動の回毎に特定できるようにする。設定部３１は、例えば、各回に対応する変動長ベクトルを算出し、移動回数と同数の変動長ベクトルを記憶領域６０の移動ベクトル６９の領域に格納する。
【００７６】
図６に戻って、設定部３１は、作動中フラグがＯＮであるか、あるいはＯＦＦであるかを判定する（Ｓ３１１）。作動中フラグがＯＦＦである場合には、マウスカーソル１２の制御を始めるための設定（Ｓ３１３〜Ｓ３１９）を行う。作動中フラグがＯＮである場合には、すでにこれらの設定がなされているのでそのまま終了する。
【００７７】
設定部３１は、オペレーティングシステム２に対してタイマーイベントの登録を行う（Ｓ３１３）。これにより、所定間隔で、オペレーティングシステム２からメッセージ処理部２０へタイマーイベントのメッセージが通知されるようになる。設定部３１は、タイマーイベントの登録において、マウスカーソル１２の動きが連続的に見える程度の所定間隔を設定する。例えば、０．１秒程度に設定するようにしてもよい。これにより、ユーザは、マウスカーソル１２の位置の変化に追従できるようになる。更に、設定部３１は、オペレーティングシステム２に対して、タイマーイベントの番号を指定する。設定部３１は、タイマーイベントの指定した番号を記憶領域６０のタイマーイベント番号６５の領域に格納する。
【００７８】
設定部３１は、更に、オペレーティングシステム２からマウスカーソル１２の種類を取得し、記憶領域６０の元のマウスカーソルの種類７１の領域に格納する（Ｓ３１５）。Ｓ３０５で取得したマウスカーソル位置に、マウスカーソル１２の種類を示す情報が付随されている場合には、設定部３１はそれを用いてもよい。
【００７９】
設定部３１は、オペレーティングシステム２に対して、本制御により移動中であることを示すマウスカーソルの表示形態になるように、マウスカーソル１２の種類を変更する命令を出す（Ｓ３１７）。最後に、設定部３１は、記憶領域６０の作動中フラグ６１をＯＮにする（Ｓ３１９）。
【００８０】
以上で、図５の設定処理（Ｓ２０３）を含む図４のフォーカス移動処理（Ｓ１０５）の説明を終える。
【００８１】
続いて、図４のタイマーイベント処理（Ｓ１０９）について説明する。上述の通り、タイマーイベントを登録している状態では、オペレーティングシステム２から所定の間隔でタイマーイベントのメッセージが通知される。このメッセージを受けた場合に、タイマーイベント処理部４０によるタイマーイベント処理（Ｓ１０９）が開始される。
【００８２】
図１６に、タイマーイベント処理のフローを示す。タイマーイベント処理部４０は、受け付けたタイマーイベントが、登録したタイマーイベントであるか否かを判定する（Ｓ８０１）。具体的には、受け付けたタイマーイベントに付随するタイマーイベント番号を特定し、記憶領域６０に記憶しているタイマーイベント番号６５と比較する。タイマーイベント番号が一致する場合には、登録したタイマーイベントであるので、タイマーイベント処理部４０は、Ｓ８０３以降の処理を継続する。一方、タイマーイベント番号が一致しない場合には、登録したタイマーイベントではないので、他のタイマーイベントの処理に移行する。但し、他のタイマーイベントの処理は本実施例とは関係ないので説明を行わない。
【００８３】
続く状況判定部４１による状況判定処理（Ｓ８０３）について説明する。図１７に、状況判定の処理フローを示す。状況判定部４１は、まず中断フラグ６３がＯＮであるかＯＦＦであるかを判定する（Ｓ９０１）。中断フラグ６３がＯＮである場合には、状況判定部４１は状況を「中断」であると判定する（Ｓ９０９）。尚、中断フラグ６３は、中断判定部５１により設定される。この処理については、図２１を用いて後述する。
【００８４】
中断フラグ６３がＯＦＦである場合には、状況判定部４１は、マウスカーソル１２が終点に到達したか否かを判定する（Ｓ９０３）。具体的には、状況判定部４１は、オペレーティングシステム２からマウスカーソル１２の位置を取得し、終点位置６７と比較する。マウスカーソル１２の位置と終点位置６７が一致する場合には、状況判定部４１は、マウスカーソル１２が終点に到達したと判定し、状況を「終了」と判定する（Ｓ９０７）。一方、マウスカーソル１２の位置と終点位置６７が一致しない場合には、状況判定部４１は、マウスカーソル１２が終点に到達していないと判定し、状況を「継続」と判定する（Ｓ９０５）。
【００８５】
図１６に戻って、タイマーイベント処理部４０は、状況が「継続」であるか否かを判定する（Ｓ８０５）。状況判定処理（Ｓ８０３）により判定された状況が「継続」である場合には、移動部４３による移動処理（Ｓ８０７）に移行する。
【００８６】
図１８に、移動処理のフローを示す。移動部４３は、まずオペレーティングシステム２からマウスカーソル位置を取得する（Ｓ１００１）。続いて、移動部４３は、移動ベクトル６９を読み、マウスカーソル位置に移動ベクトル６９を加算して移動先位置を算出する（Ｓ１００３）。
【００８７】
移動部４３は、移動先が終点の近傍であるか否かを判定する（Ｓ１００５）。この場合の近傍の範囲は、終点及び終点を越える範囲を含み、更にベクトルの方向や距離の計算上の誤差により生じるずれを想定した範囲も含む。
【００８８】
移動先が終点の近傍である場合には、移動部４３は、終点を移動先位置とし（Ｓ１００７）、オペレーティングシステム２へ移動先位置へのマウスカーソル１２の移動命令を出す（Ｓ１００９）。これにより、最終的なマウスカーソル位置が終点に修正されるようになる。  一方、移動先が終点の近傍でない場合には、移動部４３は、そのままオペレーティングシステム２へ移動先位置へのマウスカーソル１２の移動命令を出す（Ｓ１００９）。このようにして、終点までマウスカーソルの移動が繰り返される。
【００８９】
図１６に戻って、状況が「継続」ではない場合には、タイマーイベント処理部４０は、状況が「終了」であるか「中断」であるかを判定する（Ｓ８０９）。状況が「終了」である場合には、終了部４５による終了処理（Ｓ８１１）に移行する。
【００９０】
図１９に、終了処理のフローを示す。終了部４５は、タイマーイベントを解除する（Ｓ１１０１）。具体的には、終了部４５は、オペレーティングシステム２に対してタイマーイベントの解除命令を出し、記憶領域６０のタイマーイベント番号６５をクリアする。
【００９１】
終了部４５は、更に、中断フラグ６３をＯＦＦに設定し（Ｓ１１０３）、作動中フラグ６１をＯＦＦに設定する（Ｓ１１０５）。また、終了部４５は、マウスカーソル１２の終点表示を行う（Ｓ１１０７）。終了部４５は、例えば、マウスカーソル１２のアニメーション表示を行う。具体的には、終了部４５は、オペレーティングシステム２へマウスカーソル１２の種類を変更する命令を、間隔を置いて複数回出す。
【００９２】
また、終了部４５は、マウスカーソル１２の種類の復元を行う（Ｓ１１０９）。具体的には、終了部４５は、記憶領域６０の元のマウスカーソルの種類７１を読み、オペレーティングシステム２へ元のマウスカーソルの種類への変更命令を出す。
【００９３】
上述の動作により、始点から終点までのマウスカーソル１２の移動は完了する。
【００９４】
続いて、ユーザの操作に従ってマウスカーソル１２の制御を中断する場合について説明する。この例では、ユーザのマウス操作を検出した場合に、マウスカーソル１２の制御を中断させる。
【００９５】
図４のＳ１１１でメッセージ処理部２０が、イベントの内容がマウス移動であると判定した場合には、マウス移動処理部５０によるマウス移動処理（Ｓ１１３）に移行する。
【００９６】
図２０に、マウス移動処理のフローを示す。移動部４３は、作動中フラグ６１がＯＮであるかＯＦＦであるかを判定する（Ｓ１２０１）。作動中フラグがＯＦＦである場合には、マウスカーソル１２を制御していないので処理は終了する。作動中フラグがＯＮである場合には、中断判定部５１による中断判定処理（Ｓ１２０３）に移行する。
【００９７】
図２１に、中断判定処理のフローを示す。中断判定部５１は、マウス移動の方向が本制御による移動ベクトル６９の方向と一致するか否かを判定する（Ｓ１３０１）。マウス移動の方向は、マウス移動のイベントに付随するマウス移動のベクトルから特定することができる。マウス移動の方向が本制御による移動ベクトル６９の方向と一致する場合には、本制御によるマウスカーソル１２の移動であると想定されるので、中断判定部５１は、そのまま終了する。
【００９８】
一方、マウス移動の方向が本制御による移動ベクトル６９の方向と一致しない場合には、ユーザのマウス操作によるマウスカーソル１２の移動であると想定されるので、中断判定部５１は、中断フラグ６３をＯＮに設定して終了する（Ｓ１３０３）。
【００９９】
この例では、方向の一致と不一致のみを判定したが、マウス移動の距離と、移動ベクトルの長さとを比較し、それらが一致することを中断の条件に加えるようにしてもよい。
【０１００】
中断フラグ６３がＯＮの状態で、メッセージ処理部２０がタイマーイベントを通知するメッセージを受けると、図４のＳ１０７でタイマーイベントであると判定し、Ｓ１０９のタイマーイベント処理に移行する。図１６に示したタイマーイベント処理のＳ８０１からＳ８０５を経て、タイマーイベント処理部４０はＳ８０９で状況が「中断」であると判定する。そして、中断部４７による中断処理（Ｓ８１３）に移行する。
【０１０１】
図２２は、中断処理のフローを示す図である。中断部４７は、図１９に示した終了処理のＳ１１０１と同様にタイマーイベントを解除する（Ｓ１４０１）。更に、中断部４７は、図１９に示した終了処理のＳ１１０３と同様に中断フラグ６３をＯＦＦに設定し（Ｓ１４０３）、図１９に示した終了処理のＳ１１０５と同様に作動中フラグ６１をＯＦＦに設定する（Ｓ１４０５）。最後に、中断部４７は、図１９に示した終了処理のＳ１１０９と同様にマウスカーソル１２の種類を復元する（Ｓ１４０７）。
【０１０２】
このようにして、中断が完了する。以上で、実施の形態１の説明を終了する。
【０１０３】
［実施の形態２］
第１の実施の形態では、マウスカーソル制御部５を画面を表示させるアプリケーションプログラム３内に設ける例について説明したが、本実施の形態では、アプリケーションプログラム３とは別に、マウスカーソル制御部５を有する常駐プログラムを設ける例について説明する。
【０１０４】
図２３は、第２の実施の形態におけるプログラムの構成例を示す図である。常駐プログラム６は、他のアプリケーションプログラム３ａ，３ｂのプロセスに依存せずに、独立したプロセスとして常駐する。本実施例における常駐プログラム６は、アプリケーションプログラム３へのイベントを通知するメッセージをフックし、フックしたメッセージのイベント内容を判断して動作する。
【０１０５】
図２４は、第２の実施の形態における常駐プログラムの構成例を示す図である。常駐プログラム６は、第１の実施の形態におけるメッセージ処理部２０に代えてイベントフック部２１を有する。また、第１の実施の形態におけるオブジェクトテーブル８０を保持していない。以下、第１の実施の形態と異なる点を中心に説明する。
【０１０６】
イベントフック部２１によるイベントフック処理について説明する。図２５は、イベントフック処理のフローを示す図である。イベントフック部２１は、画面表示に関するイベントをフックする（Ｓ１５０１）。具体的には、イベントフック部２１は、アプリケーションプログラム３ａ、３ｂのプロセスに対して通知されるメッセージを受信し、イベントの内容を特定する。Ｓ１０３〜Ｓ１１３の処理は、図４と同様である。
【０１０７】
図６に示した設定処理のオブジェクトの特定（Ｓ３０１）とオブジェクトの大きさ、位置、種類の取得（Ｓ３０３）の動作が第１の実施の形態と異なる。これについて、説明する。
【０１０８】
設定部３１は、フォーカス移動のイベントに付随するアプリケーションハンドルとオブジェクトＩＤを特定する。更に、設定部３１は、オペレーティングシステム２からアプリケーションハンドルにより特定されるアプリケーションプログラム３ａ、３ｂのキャプチャを取得する。キャプチャには、アプリケーションプログラム３ａ、３ｂが画面に表示させているウインドウやダイアログボックスに含まれるオブジェクト１１の情報が含まれている。設定部３１は、キャプチャからオブジェクトＩＤに対応するオブジェクトの大きさ、位置、種類を抽出する。Ｓ３０５以降の処理は、第１の実施の形態と同様である。
【０１０９】
このように、イベントをフックし、オペレーティングシステム２からオブジェクトの情報を取得することによって、アプリケーションプログラム３ａ、３ｂの外からも、オブジェクト間のフォーカス移動に連動してマウスカーソル１２を制御することができる。
【０１１０】
［実施の形態３］
本実施の形態では、マウスドライバ内にマウスカーソル制御部５を設ける例について説明する。基本的には、第２の実施の形態と同様の仕組みによって、マウスドライバで常駐プログラムと同様の処理を行う。
【０１１１】
図２６は、第３の実施の形態におけるプログラムの構成例を示す図である。マウスドライバ７は、第２の実施の形態における常駐プログラム６と同様に、他のアプリケーションプログラム３ａ、３ｂのプロセスに依存せずに、独立して常駐する。
【０１１２】
マウスドライバ７は、第２の実施の形態における常駐プログラム６と同様に、アプリケーションプログラム３ａ、３ｂへのイベントを通知するメッセージをフックし、イベント内容を判断して動作する。
【０１１３】
図２７は、第３の実施の形態におけるマウスドライバ７の構成例を示す図である。マウスドライバ７は、第２の実施の形態における常駐プログラム６と同様に、第１の実施の形態におけるメッセージ処理部２０に代えてイベントフック部２１を有する。この場合も、オブジェクトテーブル８０を保持しない。
【０１１４】
図６に示した設定処理のオブジェクトの特定（Ｓ３０１）とオブジェクトの大きさ、位置、種類の取得（Ｓ３０３）については、第２の実施の形態と同様である。
【０１１５】
マウスドライバ７は、マウスカーソル１２の位置など、マウスの操作に伴う情報を保持しているので、これらの情報をオペレーティングシステム２から取得せずに、自ら保持する情報を用いて動作するようにしてもよい。
【０１１６】
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上述の機能ブロック構成は必ずしも実際のプログラムモジュール構成に対応するものではない。
【０１１７】
また、上で説明した各記憶領域の構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１１８】
なお、上で述べたマウスカーソル制御装置は、コンピュータ装置であって、図２８に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１１９】
以上述べた本実施の形態をまとめると、以下のようになる。
【０１２０】
本実施の形態に係るプログラムは、（Ａ）画面に表示された複数のオブジェクト間においてフォーカスが移動したことを示すイベントを検出した場合に、当該フォーカスの移動先のオブジェクトを特定し、当該移動先のオブジェクトの位置を特定し、当該移動先のオブジェクトの位置に基づいてマウスカーソルを移動させる終点を設定する設定処理と、（Ｂ）マウスカーソルの位置が終点に至るまで、終点により近い位置へのマウスカーソルの移動を複数回行う移動処理をコンピュータに実行させる。
【０１２１】
このようにすれば、フォーカス移動先のオブジェクトに向かう移動軌跡を表示することになるので、フォーカス移動先のオブジェクトまでユーザの視点を誘導することができる。また、複数回に分けてマウスカーソルの位置をフォーカス移動先のオブジェクトまで移動させるので、ユーザは移動するマウスカーソルを視覚的に捕らえやすい。
【０１２２】
更に、ウインドウが開かれた瞬間のみならず、ウインドウが開かれている状態で移動するフォーカスを随時追いかけるので、データの入力や選択の項目が多いウインドウであっても、ユーザに混乱を生じさせない。
【０１２３】
また、フォーカスの移動が、マウスカーソルを移動させる指示を入力するための装置以外の装置（例えば、キーボード）に対する操作により生じた場合に、設定処理を行うようにしてもよい。
【０１２４】
このようにすれば、ユーザによるマウスやフラットポイントやマウスタブレットなどの操作によるフォーカス移動を阻害しないようにすることができる。
【０１２５】
また、設定処理において、更に、移動先のオブジェクトの大きさを特定し、移動先のオブジェクトの位置と特定された移動先のオブジェクトの大きさとに基づいて、終点を設定するようにしてもよい。
【０１２６】
このようにすれば、オブジェクトの表示を害さず、オブジェクトへのデータ入力や選択を促すことに適した終点を設定することができるようになる。
【０１２７】
また、設定処理において、マウスカーソルの現在位置を特定し、特定された当該現在位置から終点への方向を有する移動ベクトルを算出し、移動処理において、移動ベクトルに従って、マウスカーソルの移動を繰り返すようにしてもよい。
【０１２８】
このようにすれば、マウスカーソルの現在位置から移動を開始するようになるので、ユーザの認識を促しやすい。
【０１２９】
また、移動処理において、ユーザが移動によるマウスカーソルの位置の変化を追従できる移動距離と時間間隔で、マウスカーソルの移動を繰り返すようにしてもよい。
【０１３０】
このようにすれば、マウスカーソルの移動をユーザが認識しやすくなる。更に、マウスカーソルの見失いを防ぎ、唐突感を生じさせない。
【０１３１】
また、移動処理において、マウスカーソルの位置が終点に至る直前の複数回の移動における移動速度を、マウスカーソルの位置が終点に至る中間付近における移動速度よりも遅くするようにしてもよい。
【０１３２】
このようにすれば、終点の指すオブジェクトへの注目を促すことができる。また、終点の予測もしやすくなる。
【０１３３】
更に、マウスカーソルを移動させる指示を入力するための装置に対するユーザの操作によるマウスカーソルの移動が生じたと判定した場合に、移動処理におけるマウスカーソルの移動を中断させる中断処理を含むようにしてもよい。
【０１３４】
このようにすれば、マウスカーソルの移動中に、ユーザがマウスやフラットポイントやマウスタブレットなどを操作した場合には、その操作を阻害しないようにすることができる。
【０１３５】
また、設定処理において、マウスカーソルの表示形態を変更するようにしてもよい。
【０１３６】
このようにすれば、移動中のマウスカーソルの表示形態が変わり、フォーカスに連動して移動していることをユーザに認識させることができる。
【０１３７】
更に、マウスカーソルの位置が終点に至った場合に、設定処理における変更を行う前のマウスカーソルの表示形態を復元する終了処理を含むようにしてもよい。
【０１３８】
このようにすれば、元のマウスカーソルの表示形態に戻るので、マウスカーソル移動の前後で状態を継続し、操作上の違和感を生じさせないようにすることができる。
【０１３９】
更に、マウスカーソルの位置が終点に至った場合に、マウスカーソルのアニメーション表示を行う終点表示処理を含むようにしてもよい。
【０１４０】
このようにすれば、マウスカーソルのあるオブジェクトにフォーカスがあり、フォーカスに連動した移動が終了したことをユーザに認識させることができる。
【０１４１】
また、設定処理において、画面を表示させるプロセスへのイベントをフックすることにより、画面に表示された複数のオブジェクト間においてフォーカスが移動したことを示すイベントを検出するようにしてもよい。
【０１４２】
このようにすれば、アプリケーションプログラムに手を加えることなく、様々なアプリケーションプログラムに対して、マウスカーソルのフォーカス連動を実現することが可能である。
【０１４３】
また、設定処理において、更に、移動先のオブジェクトの種類を特定し、移動先のオブジェクトの位置と移動先のオブジェクトの大きさと特定された移動先のオブジェクトの種類とに基づいて、マウスカーソルを移動させる終点を設定するようにしてもよい。
【０１４４】
このようにすれば、オブジェクトの種類に応じて、適した終点を設定することができる。
【０１４５】
また、設定処理において、移動先のオブジェクトの種類がテキスト入力フィールドである場合に、テキスト入力フィールドに含まれるキャレットの位置を特定し、特定したキャレットの位置をマウスカーソルを移動させる終点に設定するようにしてもよい。
【０１４６】
このようにすれば、既に入力されているテキストデータの表示を害することなく、テキストデータの追加入力を促すことができる。
【０１４７】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【図１】
0005867595.tif 000002
【図２】
0005867595.tif 000003
【図３】
0005867595.tif 000004
【図４】
0005867595.tif 000005
【図５】
0005867595.tif 000006
【図６】
0005867595.tif 000007
【図７】
0005867595.tif 000008
【図８】
0005867595.tif 000009
【図９】
0005867595.tif 000010
【図１０】
0005867595.tif 000011
【図１１】
0005867595.tif 000012
【図１２】
0005867595.tif 000013
【図１３】
0005867595.tif 000014
【図１４】
0005867595.tif 000015
【図１５】
0005867595.tif 000016
【図１６】
0005867595.tif 000017
【図１７】
0005867595.tif 000018
【図１８】
0005867595.tif 000019
【図１９】
0005867595.tif 000020
【図２０】
0005867595.tif 000021
【図２１】
0005867595.tif 000022
【図２２】
0005867595.tif 000023
【図２３】
0005867595.tif 000024
【図２４】
0005867595.tif 000025
【図２５】
0005867595.tif 000026
【図２６】
0005867595.tif 000027
【図２７】
0005867595.tif 000028
【図２８】
0005867595.tif 000029