所定機能を有するマクロ回路を含み、ターゲットプログラムを実行し、ブレークポイントにおいて前記ターゲットプログラムの実行を中断するマイクロコンピュータを備えるエミュレータ装置と、前記ターゲットプログラムを解析して前記マクロ回路の動作を制御する命令を示すブレーク対象部分を抽出するプログラム解析部と、前記ブレーク対象部分に内部設定ブレークポイントを設定するブレークポイント制御部と、前記マイクロコンピュータが前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マイクロコンピュータの動作環境を示す復元ポイント情報を収集して保存するデータ保存制御部と、前記マイクロコンピュータがユーザによって設定されるユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の初期化を実行するプログラム部分を示す前記内部設定ブレークポイントを復元ポイントに設定する復元ポイント制御部と、前記復元ポイントから実行させるプログラム実行制御部とを備えるデバッガと、前記ブレークポイント情報と、前記復元ポイント情報とを格納するデータメモリとを具備するソフトウェア開発支援装置。前記復元ポイント制御部は、前記ユーザブレークポイントのうちの第1ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記復元ポイントを設定し、前記第1ユーザブレークポイントから実行再開後、前記ユーザブレークポイントのうちの第2ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記プログラム実行制御部は、前記第1ユーザブレークポイントからの実行を指示されると、前記マイクロコンピュータに前記復元ポイントから実行させる請求項1に記載のソフトウェア開発支援装置。前記復元ポイントから実行するとき、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときの状態に戻すように、前記マイクロコンピュータの動作環境を前記データメモリに保持される前記復元ポイント情報に基づいて書き戻す請求項1または請求項2に記載のソフトウェア開発支援装置。前記データメモリは、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の状態と、中断したアドレスとを記録するマクロ状態テーブルを格納し、前記復元ポイント制御部は、前記マクロ状態テーブルを参照して前記復元ポイントを決定する請求項1から請求項3のいずれかに記載のソフトウェア開発支援装置。所定機能を有するマクロ回路を含み、ターゲットプログラムを実行し、ブレークポイントにおいて前記ターゲットプログラムの実行を中断するマイクロコンピュータを制御して、前記ターゲットプログラムのデバッグを行うソフトウェア開発支援方法であって、前記ターゲットプログラムを解析して前記マクロ回路の動作を制御する命令を示すブレーク対象部分を抽出するステップと、前記ブレーク対象部分に内部設定ブレークポイントを設定するステップと、前記マイクロコンピュータが前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マイクロコンピュータの動作環境を示す復元ポイント情報を収集して保存するステップと、前記マイクロコンピュータがユーザによって設定されるユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の初期化を実行するプログラム部分を示す前記内部設定ブレークポイントを復元ポイントに設定するステップと、前記復元ポイントから実行させるステップと前記ブレークポイント情報と、前記復元ポイント情報とをデータメモリに格納するステップとを具備するソフトウェア開発支援方法。前記復元ポイントに設定するステップは、前記ユーザブレークポイントのうちの第1ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記復元ポイントを設定するステップを含み、前記復元ポイントから実行させるステップは、前記第1ユーザブレークポイントから実行再開後、前記ユーザブレークポイントのうちの第2ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記第1ユーザブレークポイントからの実行を指示されると、前記マイクロコンピュータに前記復元ポイントから実行させるステップを含む請求項5に記載のソフトウェア開発支援方法。前記復元ポイントから実行するとき、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときの状態に戻すように、前記マイクロコンピュータの動作環境を前記データメモリに保持される前記復元ポイント情報に基づいて書き戻すステップをさらに具備する請求項5または請求項6に記載のソフトウェア開発支援方法。前記データメモリは、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の状態と、中断したアドレスとを記録するマクロ状態テーブルを格納し、前記復元ポイントに設定するステップは、前記マクロ状態テーブルを参照して前記復元ポイントを決定するステップを含む請求項5から請求項7のいずれかに記載のソフトウェア開発支援方法。所定機能を有するマクロ回路を含み、ターゲットプログラムを実行し、ブレークポイントにおいて前記ターゲットプログラムの実行を中断するマイクロコンピュータを備えるエミュレータ装置を制御するデバッガ装置であって、前記ターゲットプログラムを解析して前記マクロ回路の動作を制御する命令を示すブレーク対象部分を抽出するプログラム解析部と、前記ブレーク対象部分に内部設定ブレークポイントを設定するブレークポイント制御部と、前記マイクロコンピュータが前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マイクロコンピュータの動作環境を示す復元ポイント情報を収集して保存するデータ保存制御部と、前記マイクロコンピュータがユーザによって設定されるユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の初期化を実行するプログラム部分を示す前記内部設定ブレークポイントを復元ポイントに設定する復元ポイント制御部と、前記復元ポイントから実行させるプログラム実行制御部とを具備し、前記ブレークポイント情報と、前記復元ポイント情報とをデータメモリに格納するデバッガ装置。前記復元ポイント制御部は、前記ユーザブレークポイントのうちの第1ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記復元ポイントを設定し、前記第1ユーザブレークポイントから実行再開後、前記ユーザブレークポイントのうちの第2ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記プログラム実行制御部は、前記第1ユーザブレークポイントからの実行を指示されると、前記マイクロコンピュータに前記復元ポイントから実行させる請求項9に記載のデバッガ装置。前記復元ポイントから実行するとき、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときの状態に戻すように、前記マイクロコンピュータの動作環境を前記データメモリに保持される前記復元ポイント情報に基づいて書き戻す請求項9または請求項10に記載のデバッガ装置。前記データメモリは、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の状態と、中断したアドレスとを記録するマクロ状態テーブルを格納し、前記復元ポイント制御部は、前記マクロ状態テーブルを参照して前記復元ポイントを決定する請求項9から請求項11のいずれかに記載のデバッガ装置。所定機能を有するマクロ回路を含み、ターゲットプログラムを実行し、ブレークポイントにおいて前記ターゲットプログラムの実行を中断するマイクロコンピュータを備えるエミュレータ装置を制御する処理をコンピュータに実行させるデバッガプログラムであって、前記ターゲットプログラムを解析して前記マクロ回路の動作を制御する命令を示すブレーク対象部分を抽出するステップと、前記ブレーク対象部分に内部設定ブレークポイントを設定するステップと、前記マイクロコンピュータが前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マイクロコンピュータの動作環境を示す復元ポイント情報を収集して保存するステップと、前記マイクロコンピュータがユーザによって設定されるユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の初期化を実行するプログラム部分を示す前記内部設定ブレークポイントを復元ポイントに設定するステップと、前記復元ポイントから実行させるステップと、前記ブレークポイント情報と、前記復元ポイント情報とをデータメモリに格納するステップとを具備する処理をコンピュータに実行させるデバッガプログラム。前記復元ポイントに設定するステップは、前記ユーザブレークポイントのうちの第1ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記復元ポイントを設定するステップを含み、前記復元ポイントから実行させるステップは、前記第1ユーザブレークポイントから実行再開後、前記ユーザブレークポイントのうちの第2ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記第1ユーザブレークポイントからの実行を指示されると、前記マイクロコンピュータに前記復元ポイントから実行させるステップを含む請求項13に記載の処理をコンピュータに実行させるデバッガプログラム。前記復元ポイントから実行するとき、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときの状態に戻すように、前記マイクロコンピュータの動作環境を前記データメモリに保持される前記復元ポイント情報に基づいて書き戻すステップをさらに具備する請求項13または請求項14に記載の処理をコンピュータに実行させるデバッガプログラム。前記データメモリは、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の状態と、中断したアドレスとを記録するマクロ状態テーブルを格納し、前記復元ポイントに設定するステップは、前記マクロ状態テーブルを参照して前記復元ポイントを決定するステップを含む請求項13から請求項15のいずれかに記載の処理をコンピュータに実行させるデバッガプログラム。本発明の目的は、デバッグ時間を短縮することができるソフトウェア開発支援装置およびその制御方法を提供することにある。以下に、[発明を実施するための形態]で使用される番号符号を用いて、課題を解決するための手段を説明する。これらの番号符号は、[特許請求の範囲]の記載と[発明を実施するための形態]との対応関係を明らかにするために付加されたものである。ただし、それらの番号符号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。本発明の観点では、ソフトウェア開発支援装置100は、エミュレータ装置111と、デバッガ126と、データメモリ125とを具備する。エミュレータ装置111は、所定機能を有するマクロ回路130を含み、ターゲットプログラム118を実行し、ブレークポイントにおいてターゲットプログラム118の実行を中断するマイクロコンピュータ112を備える。デバッガ126は、プログラム解析部141と、ブレークポイント制御部143と、データ保存制御部144と、復元ポイント制御部145と、プログラム実行制御部142とを備える。プログラム解析部141は、ターゲットプログラム118を解析してマクロ回路の動作を制御する命令を示すブレーク対象部分を抽出する。ブレークポイント制御部143は、ブレーク対象部分に内部設定ブレークポイントを設定する。データ保存制御部144は、マイクロコンピュータ112が内部設定ブレークポイントまたはユーザブレークポイントにおいてターゲットプログラム118の実行を中断したときに、マイクロコンピュータ112の動作環境を示す復元ポイント情報を収集して保存する。復元ポイント制御部145は、マイクロコンピュータ112がユーザによって設定されるユーザブレークポイントにおいてターゲットプログラム118の実行を中断したときに、マクロ回路の初期化を実行するプログラム部分を示す内部設定ブレークポイントを復元ポイントに設定する。プログラム実行制御部142は、復元ポイントから実行させる。データメモリ125は、ブレークポイント情報と、復元ポイント情報とを格納する。本発明の他の観点では、ソフトウェア開発支援方法は、所定機能を有するマクロ回路130を含み、ターゲットプログラム118を実行し、ブレークポイントにおいてターゲットプログラム118の実行を中断するマイクロコンピュータ112を制御して、ターゲットプログラム118のデバッグを行うソフトウェア開発支援方法であって、ターゲットプログラム118を解析してマクロ回路の動作を制御する命令を示すブレーク対象部分を抽出するステップと、ブレーク対象部分に内部設定ブレークポイントを設定するステップと、マイクロコンピュータ112が内部設定ブレークポイントにおいてターゲットプログラム118の実行を中断したときに、マイクロコンピュータ112の動作環境を示す復元ポイント情報を収集して保存するステップと、マイクロコンピュータ112がユーザによって設定されるユーザブレークポイントにおいてターゲットプログラム118の実行を中断したときに、マクロ回路の初期化を実行するプログラム部分を示す内部設定ブレークポイントを復元ポイントに設定するステップと、復元ポイントから実行させるステップと、ブレークポイント情報と復元ポイント情報とをデータメモリ125に格納するステップとを具備する。また、本発明の他の観点では、デバッガ装置は、所定機能を有するマクロ回路130を含み、ターゲットプログラム118を実行し、ブレークポイントにおいてターゲットプログラム118の実行を中断するマイクロコンピュータ112を備えるエミュレータ装置111を制御するデバッガ装置であって、プログラム解析部141と、ブレークポイント制御部143と、データ保存制御部144と、復元ポイント制御部145と、プログラム実行制御部142とを具備する。プログラム解析部141は、ターゲットプログラム118を解析してマクロ回路の動作を制御する命令を示すブレーク対象部分を抽出する。ブレークポイント制御部143は、ブレーク対象部分に内部設定ブレークポイントを設定する。データ保存制御部144は、マイクロコンピュータ112が内部設定ブレークポイントまたはユーザブレークポイントにおいてターゲットプログラム118の実行を中断したときに、マイクロコンピュータ112の動作環境を示す復元ポイント情報を収集して保存する。復元ポイント制御部145は、マイクロコンピュータ112がユーザによって設定されるユーザブレークポイントにおいてターゲットプログラム118の実行を中断したときに、マクロ回路の初期化を実行するプログラム部分を示す内部設定ブレークポイントを復元ポイントに設定する。プログラム実行制御部142は、復元ポイントから実行させる。ブレークポイント情報と、復元ポイント情報とをデータメモリ125に格納する。さらに、本発明の他の観点では、デバッガプログラムは、所定機能を有するマクロ回路130を含み、ターゲットプログラム118を実行し、ブレークポイントにおいてターゲットプログラム118の実行を中断するマイクロコンピュータ112を備えるエミュレータ装置111を制御する処理をコンピュータに実行させるデバッガプログラムであって、ターゲットプログラム118を解析してマクロ回路130の動作を制御する命令を示すブレーク対象部分を抽出するステップと、ブレーク対象部分に内部設定ブレークポイントを設定するステップと、マイクロコンピュータ112が内部設定ブレークポイントにおいてターゲットプログラム118の実行を中断したときに、マイクロコンピュータ112の動作環境を示す復元ポイント情報を収集して保存するステップと、マイクロコンピュータ112がユーザによって設定されるユーザブレークポイントにおいてターゲットプログラム118の実行を中断したときに、マクロ回路の初期化を実行するプログラム部分を示す内部設定ブレークポイントを復元ポイントに設定するステップと、復元ポイントから実行させるステップと、ブレークポイント情報と復元ポイント情報とをデータメモリ125に格納するステップとを具備する処理をコンピュータに実行させる。本発明によれば、後に通過するポイントにおいてプログラム実行停止後、リスタートせずに先に通過したポイントからプログラム実行開始することができ、デバッグ時間を短縮することができるソフトウェア開発支援装置およびその制御方法を提供することができる。図面を参照して発明を実施するための形態を説明する。図3は、本発明の実施の形態に係るソフトウェア開発支援装置100の構成を示すシステムブロック図である。ソフトウェア開発支援装置100は、デバッガ126と、エミュレータ装置111と、データメモリ125とを具備する。エミュレータ装置111は、制御用MCU117と、評価用MCU112と、エミュレーションメモリ113と、スチルメモリ114とを備え、デバッガ126を経由してデータメモリ125に接続される。エミュレーションメモリ113には、デバッグ対象であるターゲットプログラム118が格納される。スチルメモリ114には、評価用MCU112が実行するエミュレータ用プログラム120が格納される。制御用MCU117は、評価用MCU112とデバッガ126とを接続する。したがって、デバッガ126は、制御用MCU117を介して評価用MCU112を制御する。制御用MCU117は、ターゲットプログラムをデバッガ126から入力し、評価用MCU112に供給する。また、制御用MCU117は、ターゲットプログラムに組み込まれる疑似命令のアドレス情報をデバッガ126から受け取る。アドレス情報は、内部ブレークポイントの設定時に使用される。評価用MCU112は、ターゲットプログラムを取り込み、エミュレーションメモリ113に格納する。スチルメモリ114には、エミュレーション機能を実現するためのデバッグ制御プログラムが予め格納されている。また、評価用MCU112は、所定の機能を有するマクロ回路130を備える。デバッガ126は、プログラム解析、プログラム実行制御等の機能を有し、エミュレータ装置111の制御を行なう。また、デバッガ126は、データメモリ125をアクセスしてデータの入出力を行なう。データメモリ125は、マクロ状態テーブル122と、疑似命令テーブル123と、保存用メモリ116とを格納する。疑似命令テーブル123は、疑似命令がターゲットプログラム内に組み込まれた位置を示すアドレスをマクロ名に関連付けて格納する。マクロ状態テーブル122は、疑似命令の実行状況に応じて、マクロ回路の動作状態をマクロ名に関連付けて格納する。保存用メモリ116は、ブレークポイント情報115と復元ポイント情報124とを格納する。本実施の形態では、評価用MCU112に搭載されるマクロ回路は、マクロ回路制御命令が実行されることにより制御される。マクロ回路制御命令は、マクロ回路のレジスタ等に所定のデータを設定したり、マクロ回路を起動したり、停止させたりするための命令群である。プログラムリストの表記として、名称がマクロ1であるマクロ回路に、所定のデータを設定するマクロ回路制御命令をマクロ1設定命令、マクロ回路を起動するマクロ回路制御命令をマクロ1起動命令、マクロ回路を停止するマクロ回路制御命令をマクロ1停止命令と表記する。マクロ回路マクロ2に対しても、マクロ2設定命令、マクロ2起動命令、マクロ2停止命令が定義される。ここでは、説明を簡単にするために、それぞれ1命令によって設定、起動、停止を行うものとして記述するが、複数の命令によりその動作を実現してもよいし、また、設定、起動、停止以外の動作を指示するマクロ回路制御命令があってもよい。また、本実施の形態において、デバッグ用に疑似命令が定義される。疑似命令は、ターゲットプログラム118のデバッグに関連するマクロ回路制御命令の位置を示すために、ユーザによってデバッグに先立って設定される。疑似命令は、マクロ回路制御命令の機能毎に区別できるようになっている。ここでは、上記に示されるように、疑似命令は、マクロ回路制御命令の設定命令に対応するSet命令、起動命令に対応するStart命令、停止命令に対応するStop命令を有している。すなわち、マクロ回路マクロ1に対して、疑似命令は、Setマクロ1、Startマクロ1、Stopマクロ1を有する。さらに、疑似命令は、Setマクロ2、Startマクロ2、Stopマクロ2のように、マクロ回路毎に用意される。また、マクロ回路制御命令が他にあれば、それに対応する疑似命令が用意される。また、ターゲットプログラム118に対して疑似命令が自動的に設定されてもよい。図4は、疑似命令テーブル123の構成を模式的に示す図である。疑似命令テーブル123は、ターゲットプログラム118に組み込まれている疑似命令のアドレス一覧を示す。疑似命令テーブル123には、エミュレータ装置111に搭載されるマクロ回路130のマクロ名と、ターゲットプログラム118に組み込まれるSet命令、Start命令、Stop命令のアドレスとを関連付けて、組み込まれている数分だけ格納される。図4では、マクロ回路は、マクロ1~マクロnのn個あり、疑似命令は、それぞれSet命令、Start命令、Stop命令を備え、それぞれの疑似命令が格納されるターゲートプログラム118上の位置アドレスが示される。マクロ回路を制御するマクロ回路制御命令は、ターゲットプログラム118の複数個所にあり、また、設定箇所数、起動箇所数、停止箇所数が同数とは限らず、疑似命令もマクロ回路毎、機能毎に数が異なり、疑似命令テーブル123の全て欄がデータで満たされるわけではない。図5は、マクロ状態テーブル122の構成を模式的に示す図である。マクロ状態テーブル122は、エミュレータ装置111に搭載されるマクロ回路の動作状態を示す。デバッガ126は、起動時に、マクロ状態テーブル122を初期化する。ターゲットプログラム118が実行されると、疑似命令の出現毎に、デバッガ126は、その後実行されるマクロ回路制御命令によってマクロ回路がどのような動作状態になるかをマクロ状態テーブル122に記録する。すなわち、疑似命令Set命令、Start命令、Stop命令の位置にデバッガ126によって設定される内部設定ブレークポイントにおいて、実行中のプログラムがブレークすると、疑似命令によって示されるマクロ回路の動作状態と、ブレークした疑似命令の位置とがマクロ状態テーブル122に記録される。マクロ状態は、マクロ回路が設定中かSet命令、マクロ回路が起動中かStart命令、マクロ回路が停止中かStop命令の状態を示す情報であり、コード化されて示される。ここでは、停止状態は0x00、起動中状態は0x01、設定開始状態は0x02により示される。図5では、マクロ回路マクロ1~マクロnのマクロ状態、および、Set命令、Start命令、Stop命令の実行位置が初期化された状態で示される。疑似命令は、マクロ回路制御命令の前に設定されるため、マクロ状態テーブル122に示されるマクロ状態は、ブレークしたときのマクロ回路の動作状態を示すものではなく、実行が再開されたときのマクロ回路の動作状態を示す。デバッガ126は、機能的に、プログラム解析部141と、プログラム実行制御部142と、ブレークポイント制御部143と、データ保存制御部144と、復元ポイント制御部145とを備え、パーソナルコンピュータに例示される情報処理装置により実現される。したがって、データメモリ125は、デバッガ126として動作する情報処理装置に搭載されるディスク装置等の記憶装置とすることが可能である。プログラム解析部141は、ターゲットプログラム118を解析し、ブレーク位置を抽出する。ブレーク位置は、ユーザにより設定されたユーザブレークポイントと、マクロ回路130を制御するマクロ回路制御命令の箇所である。ユーザブレークポイントは、ターゲットプログラム118が停止したときの要因を解析するときに識別できるように、その位置が登録される。マクロ回路130を制御するマクロ回路制御命令の箇所には、本実施の形態では、ユーザによって疑似命令が設定されている。したがって、プログラム解析部141は、ターゲットプログラム118に設定されている疑似命令を抽出する。抽出された疑似命令は、疑似命令テーブル123に登録される。ブレークポイント制御部143は、疑似命令テーブル123に基づいて、抽出されたマクロ回路制御命令の箇所、すなわち、疑似命令が設定されている箇所の直前の命令に内部設定ブレークポイントを設定する。内部設定ブレークポイントは、デバッガ126の処理のために設定されるブレークポイントであるため、ユーザに通知する必要はない。したがって、内部設定ブレークポイントにおいてブレークした場合、デバッガ126の処理が終了すると、ターゲットプログラム118の実行が続行される。データ保存制御部144は、ターゲットプログラム118がブレークしたときに、制御用MCU117を介して評価用MCU112から各種情報を収集して保存用メモリ116に保存する。ブレーク箇所がユーザブレークポイントBP1の場合、ブレークポイント情報115BP1として、BP1の復元ポイントのアドレスが保存用メモリ116に保存される。ブレーク箇所が内部設定ブレークポイントIB1の場合、復元ポイント情報124IB1として、そのときのスタック領域132や変数領域133の内容、マクロ回路130の動作状態を示す出力端子情報等が収集され、保存用メモリ116に保存される。ブレークポイント情報115、復元ポイント情報124は、ターゲットプログラム118のブレークの発生毎に別々に保存される。ターゲットプログラム118の実行再開時に、データ保存制御部144は、保存されたブレークポイント情報115、復元ポイント情報124を、必要に応じて保存用メモリ116から読み出して評価用MCU112に提供する。評価用MCU112は、受け取ったデータを書き戻してターゲットプログラム118の実行を再開する。プログラム実行制御部142は、評価用MCU112の動作状態を管理する。プログラム実行制御部142は、評価用MCU112にターゲットプログラム118の実行を指示し、評価用MCU112がブレークするまで待機する。評価用MCU112がブレークすると、そのブレーク要因を解析し、ブレーク要因に応じた処理を行う。また、プログラム実行制御部142は、ユーザの指示に基づいてターゲットプログラム118の実行再開位置を変更する場合、復元ポイント制御部145によって選択された復元ポイントから実行させる。復元ポイント制御部145は、内部設定ブレークポイントにおいてブレークしたとき、復元ポイント情報124に基づいて、マクロ状態テーブル122を更新する。ユーザブレークポイントにおいてブレークしたとき、復元ポイント制御部145は、マクロ状態テーブル122を参照して復元ポイントを検索し、登録する。登録される復元ポイントは、別のユーザブレークポイントにおいてブレークして実行再開をこのユーザブレークポイントに指定されたときに使用される。復元ポイント検索処理の詳細は後述する。図6、図7を参照して、本発明の実施の形態に係るソフトウェア開発支援装置100の動作を説明する。図6に示されるように、まず、エミュレータ装置111を制御するデバッガ126が起動され、図示されない外部装置からターゲットプログラム118がダウンロードされるステップS100。デバッガ126がパーソナルコンピュータ等の情報処理装置により実現されている場合、ターゲットプログラム118は、その記憶装置内に記憶されていてもよい。ターゲットプログラムがダウンロードされると、デバッガ126のプログラム解析部141は、ターゲットプログラム118内の疑似命令を抽出し、疑似命令テーブル123のその疑似命令の区分に対応する欄にアドレスを登録する。また、プログラム解析部141は、ユーザブレークポイントを抽出し、そのアドレスをデバッガの内部情報として保持する。疑似命令がターゲットプログラム118に含まれていない場合ステップS101-NO、ユーザの指示を待つ待機状態に移行するステップS120。ここでは、疑似命令が用いられるが、同様の機能を実現できるものであればそれでも良い。ターゲットプログラム118内に疑似命令が組み込まれている場合ステップS101-Yes、ブレークポイント制御部143は、疑似命令の位置でターゲットプログラムをブレークさせるために、それぞれの疑似命令の一つ前の命令の位置にブレークポイントを設定するステップS102。内部ブレークポイントを設定する処理が終了すると、ユーザの指示を待つ待機状態に移行するステップS120。ユーザからターゲットプログラム118を実行する指示があると、プログラム実行制御部142は、制御用MCU117を介して評価用MCU112にターゲットプログラム118の実行を指示する。したがって、エミュレータ装置111は、ブレーク状態からターゲットプログラム118の実行を開始して実行中状態に移行するステップS103。デバッガ126のプログラム実行制御部142は、エミュレータ装置111のプログラム実行がブレークしているか否かをブレークするまで監視し続けるステップS121-NO。エミュレータ装置111のプログラム実行がブレークするとステップS121-YES、デバッガ126のプログラム実行制御部142は、制御用MCU117を介して評価用MCU112から取得したブレークアドレスを参照し、ブレーク要因を解析するステップS104。疑似命令が設定されている内部設定ブレークポイントにおいてブレークしたと判定されるとステップS104-内部設定BPステップS110へ進む。ユーザブレークポイントにおいてブレークしたと判定されるとステップS104-ユーザBP、デバッガ126の復元ポイント制御部145は、ブレークポイントの復元ポイントを検索するステップS200。ブレークポイントでなければステップS104-その他、プログラム実行中の強制ブレーク、不正なアドレスのアクセス、または不正なコマンドの実行等により致命的なエラーの発生か、デバッガ126の想定外で実行上支障のない特殊なブレークの発生かを判定するステップS122。特殊なブレークで続行可能である場合ステップS122-YES、そのままステップS103に戻ってプログラム実行を再開する。続行不可能な場合ステップS122-NO、ステップS120に戻って実行中状態からユーザからの指示を待つ待機状態に移行する。内部設定ブレークポイントでブレークしたと判定された場合ステップS104-内部設定BP、デバッガ126の復元ポイント制御部145は、制御用MCU117を介して、ブレークした時点でのスタック領域132、変数領域133および出力端子領域の内容等を収集し、ブレークした時点の復元ポイントデータ124として保存用メモリ116に保存する。また、復元ポイント制御部145は、ブレークした内部設定ブレークポイントの区分に応じて、マクロ状態テーブル122を更新するステップS112。その後、プログラム実行を再開するステップS103。ここで、マクロ状態テーブル122の更新について説明する。ブレークした箇所の疑似命令がSetマクロ1命令である場合、マクロ回路マクロ1が設定開始されるところである。したがって、図5に示されように、マクロ状態テーブル122のマクロ1の行のマクロ状態欄に設定開始中状態を示すコード0x02が書き込まれ、Set命令の位置欄にブレークした箇所のアドレスが書き込まれる。また、ブレークした箇所の疑似命令がStartマクロ1命令の場合、マクロ回路マクロ1が起動されるところである。したがって、マクロ状態テーブル122のマクロ1の行のマクロ状態欄に起動中状態を示すコード0x01が書き込まれ、Start命令の位置欄にブレークした箇所のアドレスが書き込まれる。また、ブレークした箇所の疑似命令がStopマクロ1命令の場合、マクロ回路マクロ1が停止されるところである。したがって、マクロ状態テーブル122のマクロ1の行のマクロ状態欄に停止中状態を示すコード0x00が書き込まれ、Stop命令の位置にブレークした箇所のアドレスが書き込まれる。さらに、Start命令の位置、Set命令の位置のそれぞれの列には、アドレス情報が無効であることを示す0xFFFFFFFFが書き込まれる。ユーザが設定したユーザブレークポイントでブレークした場合ステップS104-ユーザBP、デバッガ126の復元ポイント制御部145は、ブレークポイントの復元ポイントを検索するステップS200。復元ポイント検索処理の詳細は後述する。復元ポイント制御部145は、検索した復元ポイントのアドレスをユーザブレークポイントのブレークポイント情報115のアイテムとして保存用のメモリ116に記録するステップS107。ただし、復元ポイントの検索処理において、復元ポイントがユーザブレークポイントに設定されたとき図7ステップS211、ユーザブレークポイントの復元ポイントの情報として、その時点でのデバッグ情報スタック領域132、変数領域133および出力端子領域の内容等が保存されていない。そのため、復元ポイントがユーザブレークポイントに設定されたか否かを判定し、設定されたときステップS114-YES、登録した復元ポイントの情報にブレークした時点でのスタック領域132、変数領域133および出力端子領域の内容等をそのブレークポイントの復元ポイント情報として追加登録するステップS111。ここで記録された復元ポイントは、別のユーザブレークポイントでブレークしたときに、実行再開をこのブレークポイントから行うと指示されたときに使用される。デバッガ126は、ユーザから以前のブレークポイントへの戻り指示があるかを判定するステップS108。戻り指示がなく、そのまま続行であればステップS108-NO、プログラム実行が再開されるステップS103。以前のブレークポイントへの戻り指示がある場合ステップS108-YES、復元ポイント制御部145は、マクロ状態テーブル122を参照して起動中のマクロ回路があるか否か調べるステップS116。起動中のマクロ回路がある場合ステップS116-YES、復元ポイント制御部145は、その起動中のマクロ回路を停止させるステップS118。データ保存制御部144は、保存メモリ116に格納されているブレークポイント情報115から戻り指定のブレークポイントの情報を読み出す。データ保存制御部144は、指定されたブレークポイントのブレークポイント情報115に登録されている復元ポイントにおいて記録された復元ポイント情報124を取り出して、制御用MCU117を介して評価用MCU112に提供する。評価用MCU112は、スタック領域132、変数領域133、出力端子領域等を戻り指定のブレークポイントの復元ポイントにおいて記録された復元ポイント情報124に基づいて書き換え、プログラムカウンタPCに復元ポイントのアドレスを設定するステップS109。そして、プログラム実行が再開されるステップS103。以前のブレークポイントへの戻り指示がある場合ステップS108-YES、そのブレークポイントの復元ポイントで保存したデータを置き換えたあと、そのユーザブレークポイントの復元ポイントからプログラムは再開されるため、例え以前のブレークポイントの時点でマクロの一部の設定が済んだ場合であっても、そのマクロを、復元ポイント以降の命令の再実行により、改めて再設定することができ、マクロ回路の動作状況を以前のブレークポイントの状態に戻してプログラムを実行させることができる。図7は、復元ポイント検索処理の詳細を説明するためのフロー図である。復元ポイント検索処理ステップS200では、デバッガ126復元ポイント制御部145は、それぞれのマクロ回路が、起動中か、停止中か、設定中かを判定するためにマクロ状態テーブル122図5を参照する。復元ポイント検索処理は、ユーザが設定したユーザブレークポイントにおいてターゲットプログラム118が停止したときに起動される図6ステップS104-ユーザBP。デバッガ126復元ポイント制御部145は、ターゲットプログラム118によって利用されている全てのマクロ回路が停止中であるか調べるステップS201。マクロ回路が停止中か否かを判定するためには、図5に示されるように、マクロ状態テーブル122のマクロ状態の欄を参照する。この欄の内容が停止中を示すコード0x00であれば、そのマクロ回路は停止中と判定される。全てのマクロ回路が停止中である場合ステップS201-YES、マクロ回路を設定する必要がないため、復元ポイント制御部145は、ユーザブレークポイントのアドレス、すなわち、ブレークしたときのプログラムカウンタPCの値をユーザブレークポイントにおける復元ポイントとして登録する。復元ポイント情報124として、デバッグ情報スタック領域132、変数領域133および出力端子領域の内容が保存メモリ116に記録され、復元ポイント検索処理を終了するステップS211。停止中ではないマクロ回路がある場合ステップS201-NO、復元ポイント制御部145は、マクロ状態テーブル122を参照して設定開始中のマクロ回路があるか調べるステップS202。設定開始中のマクロ回路があるかを判定するためには、図5に示されるように、マクロ状態テーブル122のマクロ状態の欄を参照する。この欄の内容が設定開始中を示すコード0x02であれば、そのマクロ回路は設定開始中と判定される。設定開始中のマクロ回路がある場合ステップS202-YES、設定開始中のマクロ回路のSet命令の位置に記録されているアドレスの中から、一番前に実行された命令のアドレスを復元ポイントとして一時保存するステップS203。次に、デバッガ126の復元ポイント制御部145は、マクロ状態テーブル122を参照して起動中のマクロ回路があるか調べるステップS204。起動中のマクロ回路があるかを判定するためには、図5に示されるように、マクロ状態テーブル122のマクロ状態の欄を参照する。この欄の内容が起動中を示すコード0x01であれば、そのマクロ回路は起動中と判定される。起動中のマクロ回路がない場合ステップS204-NO、復元ポイント制御部145は、復元ポイント検索処理を終了する。起動中のマクロ回路がある場合ステップS204-YES、起動中のマクロ回路のSet命令の位置欄が有効な値初期値以外の値であるか調べるステップS205。起動中のマクロ回路のSet命令の位置の値が有効である場合ステップS205-YES、有効であるアドレスの中から、一番前に実行された命令のアドレスを復元ポイントの候補としてデバッガ126内に一時的に保存するステップS206。起動中のマクロ回路のSet命令の位置欄が有効でない場合ステップS205-NO、起動中のマクロ回路のStart命令の位置欄に記録されているアドレスの中から、一番前に実行された命令のアドレスを復元ポイントの候補としてデバッガ126内に一時的に保存するステップS207。復元ポイントの候補を保存した復元ポイント制御部145は、復元ポイントの候補のアドレスと、設定開始中マクロ回路の処理ステップS203において復元ポイントに設定したアドレスとを比較する。復元ポイント制御部145は、そのうちのより前に実行されたアドレスを復元ポイントとして設定するステップS208。以上により、ユーザブレークポイントのアドレス、Set命令のアドレス、Start命令のアドレスのうちのいずれかが復元ポイントとして設定され、復元ポイント検索処理が終了する。次に、図8を参照して、本実施の形態に係るソフトウェア開発支援装置の動作を経時的に説明する。図8は、ターゲットプログラム118のリストイメージを示す図であり、既にユーザによって、ユーザブレークポイントBP1、BP2、BP3と、疑似命令Setマクロ1、Startマクロ1、Stopマクロ1とが設定されている。マクロ回路マクロ1に対するマクロ回路制御命令として、マクロ1設定命令が行番号122の位置に、マクロ1起動命令が行番号147の位置に、マクロ1停止命令が行番号160の位置に、それぞれ組み込まれている。したがって、マクロ回路制御命令の位置を示す疑似命令は、Setマクロ1が行番号121の位置、Startマクロ1が行番号146の位置、Stopマクロ1が行番号160の位置に設定される。行番号100に示される命令1が実行開始ポイントであり、行番号210に示される終了命令が実行終了ポイントである。ユーザブレークポイントBP1は、行番号133の位置に設定され、ユーザブレークポイントBP2は、行番号181の位置に設定され、ユーザブレークポイントBP3は、行番号195の位置に設定されている。したがって、ターゲットプログラム118の実行状態は、ユーザブレークポイントで区切られる実行1部分、実行2部分、実行3部分、実行4部分がそれぞれ連続して実行されるようにユーザから見える。実行1部分は、実行開始ポイントである行番号100の命令1からブレークポイントBP1の直前にある行番号132の命令itまでの間のコマンド列を含む。実行2部分は、ブレークポイントBP1直後にある行番号134の命令mからブレークポイントBP2の直前にある行番号180の命令pqまでの間のコマンド列を含む。実行3部分は、ブレークポイントBP2直後にある行番号182の命令uからブレークポイントBP3の直前にある行番号194の命令uvまでの間のコマンド列を含む。実行4部分は、ブレークポイントBP3の直後にある行番号196の命令eから最後にある行番号210の終了命令までの間のコマンド列を含む。このようなターゲットプログラム118がソフトウェア開発支援装置100にダウンロードされると、デバッガ126は、ターゲットプログラム118を解析して疑似命令を抽出し、疑似命令テーブル123を生成する。疑似命令は、その後続にマクロ回路制御命令があることを示している。したがって、デバッガ126は、復元ポインタを設けるために、この疑似命令の前の命令の位置に内部設定ブレークポイントを設定する。行番号122に示されるマクロ1設定命令は、ターゲットプログラム118内のマクロ回路マクロ1の制御に関連する最初の命令であり、マクロ回路マクロ1の設定を開始したことを示す。その前の行番号121に、マクロ回路マクロ1用のSet疑似命令であるSetマクロ1が、ユーザによってデバッガ126等を介して設定されている。その前の行番号120に示される命令nの位置に内部設定ブレークポイントIB1がデバッガ126により設定される。行番号147に示されるマクロ1起動命令は、マクロ回路マクロ1の初期化後にマクロ回路マクロ1を起動するための最初の命令であり、マクロ回路マクロ1の停止後に、再設定あるいは再起動する際の最初の命令でもある。したがって、行番号146の位置にマクロ回路用マクロ1のStart疑似命令であるStartマクロ1が、ユーザによってデバッガ126等を介して設定されている。その前の行番号145に示される命令mkの位置に内部設定ブレークポイントIB2がデバッガ126により設定される。行番号160に示されるマクロ1停止命令は、マクロ回路マクロ1を停止するための命令であり、その前の行番号159の位置にマクロ回路マクロ1用のStop疑似命令であるStopマクロ1が、ユーザによってデバッガ126等を介して設定されている。その前の行番号158に示される命令jlの位置に内部設定ブレークポイントIB3がデバッガ126により設定される。このように、デバッガ126は、各疑似命令の1命令前のアドレスに内部設定ブレークポイントを設定し、その情報をデバッガ126の内部で管理する情報として保持する。ここでは、内部設定ブレークポイントは、行番号120、145、158の位置に設定される。デバッガ126により内部設定ブレークポイントが設定されると、ターゲットプログラム118は、内部設定ブレークポイントにおいても実行が中断されるため、さらに細分化されて実行されることになる。すなわち、実行1部分は、2つに分断され、行番号100の命令1からSetマクロ1の直前にある行番号120の命令nまでのコマンド列が連続実行されて内部設定ブレークポイントIB1で中断される実行1-1部分。実行が再開されて、マクロ1設定命令からユーザブレークポイントBP1の前にある行番号132の命令itまでのコマンド列が連続して実行される実行1-2部分。実行2領域は、3つに分断され、ブレークポイントBP1直後にある行番号134の命令mからStartマクロ1の直前にある行番号145の命令mkまでのコマンド列が連続的に実行され、内部設定ブレークポイントIB2で中断される実行2-1部分。内部設定ブレークポイントIB2において実行が再開されると、マクロ1起動命令からStopマクロ1の直前にある行番号158の命令jlまでのコマンド列が連続的に実行されて、内部ブレークポイントIB3で中断される実行2-2部分。内部設定ブレークポイントIB3において実行が再開されると、マクロ1停止命令からブレークポイントBP2の直前にある行番号180の命令pqまでのコマンド列が連続的に実行されて、ブレークポイントBP2で中断される実行2-3部分。ブレークポイントBP2において実行が再開されると、ユーザブレークポイントBP3まで連続して実行され実行3部分、ユーザブレークポイントBP3から実行再開すると行番号210の終了命令まで連続して実行される。デバッグの準備が終わると、デバッガ126は、ユーザからの指示を待つ。ユーザからターゲットプログラム118の実行が指示されると、行番号100の先頭の命令1からリアルタイムでプログラムが実行される。行番号120の位置に設定された内部設定ブレークポイントIB1においてプログラムの実行が一旦停止する。デバッガ126は、行番号120の命令nの位置における復元ポイント情報124として復元ポイント情報IB1を保存メモリ116に保存し図6ステップS110、マクロ状態テーブル122を更新する図6ステップS112。保存される復元ポイント情報IB1は、例えば、図9aに示されるように、そのときのスタック領域132の内容を示すスタック情報IB1、変数領域133の情報である変数情報IB1、出力端子領域の情報である出力端子情報IB1等がある。マクロ状態テーブル122の更新は、行番号120の命令nでターゲットプログラム118を停止させたので、マクロ状態テーブル122のマクロ1に対応するマクロ状態が0x02に更新され、Set命令の位置に命令nのアドレスが書き込まれる。復元ポイント情報124の収集が終了すると、行番号120の命令nからプログラム実行が再開される。行番号133のユーザブレークポイントBP1まで連続して実行されて、ターゲットプログラム118の実行が停止される。ユーザブレークポイントBP1であるから、ユーザブレークポイントBP1における復元ポイントが検索される図6ステップS200/図7。ユーザブレークポイントBP1でプログラムが停止したとき、マクロ状態テーブル122を参照すると、マクロ回路マクロ1のマクロ状態が0x02であり、マクロ回路マクロ1が設定開始中の段階であると判定される図7ステップS202-YES。しかし、マクロ回路マクロ1はまだ起動されていない状態であるため図7ステップS204-NO、マクロ状態テーブル122のSetマクロ1命令の前に格納されている命令nのアドレスが、このときの復元ポイントとして決定される図7ステップS203。したがって、図9bに示されるように、ブレークポイント情報BP1の復元ポイントとして命令nのアドレスが保存メモリ116に保存される図6ステップS107。このとき、マクロ回路マクロ1は起動していない。Setマクロ1命令が行番号121にあるため、マクロ回路マクロ1の一部の制御レジスタが設定されている。したがって、他のユーザブレークポイントにおいて、ユーザブレークポイントBP1から実行を再開する指示があるときは、起動前の設定を行ってからマクロ回路マクロ1を再起動させるため、内部設定ブレークポイントIB1マクロ回路マクロ1の設定を開始する前の命令nのアドレスがユーザブレークポイントBP1から実行再開するときの復元ポイントとされる。ユーザブレークポイントBP1へ戻って実行再開する指示があると、この復元ポイント命令nから実行が再開され、マクロ回路マクロ1の設定は、復元ポイント命令nの情報が保存された時点における状態に再設定することが可能になる。次に、ユーザブレークポイントBP1におけるユーザの作業が終了すると、ユーザは、ターゲットプログラム118の実行再開を指示する。ユーザの指示に基づいて、実行が再開される図6ステップS108-NOと、実行2-1部分が実行され図6ステップS103、行番号145に設定される内部設定ブレークポイントIB2において実行が中断される。上記と同じように、復元ポイント情報IB2が保存された後、ターゲットプログラム118の実行が再開される。このとき保存される復元ポイント情報IB2は、例えば、図9cに示されるように、スタック領域132の内容を示すスタック情報IB2、変数領域133の内容を示す変数情報IB2、出力端子領域の内容を示す出力端子情報IB2等がある。マクロ状態テーブル122の更新は、マクロ回路マクロ1のマクロ状態を0x01起動中に更新し、Start命令の位置に命令mkのアドレスを入れる。次に、内部設定ブレークポイントIB3においてターゲットプログラム118の実行が停止され、復元ポイント情報IB3が保存され図6ステップS110、その後ターゲットプログラム118の実行が再開される。このとき保存される復元ポイント情報IB3は、例えば、図9dに示されるように、スタック領域132の内容を示すスタック情報IB3、変数領域133の内容を示す変数情報IB3、出力端子領域の内容を示す出力端子情報IB3等がある。マクロ状態テーブル122の更新は、行番号158の命令jlにおいてターゲットプログラム118を停止させたので、マクロ回路1のマクロ状態に0x00停止状態を書き込み、Set命令の位置とStart命令の位置に0xFFFFFFFF無効アドレスを、Stop命令の位置に命令jlのアドレスを書き込む。次に、復元ポイントIB3からターゲットプログラム118が実行され、行番号161のユーザブレークポイントBP2において停止する。ユーザブレークポイントであるから、復元ポイントが検索される図6ステップS200/図7。ユーザブレークポイントBP2においてプログラムが停止したとき、マクロ状態テーブル122のマクロ回路マクロ1のマクロ状態は0x00停止中を示し図7ステップS201-YES、ユーザブレークポイントBP2が復元ポイントとして設定される。したがって、復元ポイント情報BP2およびブレークポイント情報BP2が保存用メモリ116に保存される図6ステップS107、図7ステップS211。保存される復元ポイント情報BP2は、例えば、図9fに示されるように、スタック領域132の内容を示すスタック情報BP2、変数領域133の内容を示す変数情報BP2、出力端子領域の内容を示す出力端子情報BP2等がある。ここで、ユーザブレークポイントBP2から以前に実行されたユーザブレークポイントBP1へ戻って実行するときの動作を示す。エミュレータ装置111を過去にブレークしたユーザブレークポイントBP1の状態に戻す場合、ユーザは、デバッガ126にユーザブレークポイントBP1からの戻り実行を指示する図6ステップS108-YES。戻り指示を受けたデバッガ126は、戻り指定のポイントである行番号133のユーザブレークポイントBP1において保存したブレークポイント情報BP1を保存用メモリ116から読み出す。ブレークポイント情報BP1に含まれる復元ポイントは内部設定ブレークポイントIB1を示している。復元ポイント内部設定ブレークポイントIB1に基づいて、復元ポイント情報IB1を保存用メモリ116から読み出し、スタック領域132および変数領域133の内容、出力端子領域の内容が書き戻されるステップS109。戻り指示を受けたときのプログラムポインタPC:ブレークポイントBP2において停止したとき値を、戻り指定されたブレークポイントBP1から実行するときの復元ポイントである内部設定ブレークポイントIB1において停止したときのプログラムポインタPCの値に書き換えられ、実行が再開される。評価用MCU112は、ユーザが戻り指定したユーザブレークポイントBP1までプログラムを実行しステップS103、戻り指定のユーザブレークポイントBP1で一旦停止する。ユーザは、ここからの実行を指示していたので、ブレークポイントにおける退避処理が終了するとすぐに実行を再開する。ユーザが指定した戻りポイントではなく、その復元ポイントから実行する理由は、マクロ回路マクロ1がユーザブレークポイントBP1において起動中を示しており、そのまま実行を再開するとマクロ回路マクロ1の設定が不完全となり、期待通りの動作とならない可能性があるためである。したがって、ユーザブレークポイントBP1に実行ポイントを戻すときは、ユーザブレークポイントBP1の復元ポイントに遡り、そこからユーザ指定のポイントまでプログラムを実行する。マクロ回路マクロ1は、ユーザブレークポイントBP2の時点では停止中を示すが、ユーザブレークポイントBP1に到達する前に一部の設定がされている。ユーザブレークポイントBP1以降において、マクロ回路マクロ1は、その設定された値に基づいて起動される。ステップS109において、プログラムカウンタPCおよびスタック領域132、変数領域133、出力端子領域等の情報を書き換えると、ターゲットプログラム118の実行がユーザブレークポイントBP2から行番号120の内部設定ブレークポイントIB1に移動するため、ユーザブレークポイントBP2において停止中であったマクロ回路マクロ1を再び起動前の設定開始の状態にすることができる。また、行番号120の内部設定ブレークポイントIB1からプログラムを実行して、ユーザの戻り指定のポイントでは、マクロ回路の設定を含め、プログラムをユーザ指定のポイントの状態に戻すことができる。このように、本発明では周辺マクロが設定開始中または起動中のマクロ回路があれば、一旦設定開始前または起動前の状態に戻してからマクロ回路を再起動してプログラム実行を行なうため、書き込みシーケンスがあるようなレジスタや周辺マクロ回路内にあり外から見えていないメモリマッピングされていないレジスタやリードオンリーのマクロ回路内のレジスタなどの復元が出来る。したがって、デバッグ時間を短縮できる効果がある。以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。