(57)【要約】【課題】簡易な操作でユーザの意図したフローチャートを描画すること。【解決手段】フローチャート描画装置１００は、フローチャートを表示画面２５０に描画する。表示部２１０は、フローチャートの開始記号、フローチャートの終了記号、および開始記号と終了記号とを接続する接続記号を表示画面２５０に表示する。入力部２２０は、フローチャート内において接続記号によって接続されたフローチャート記号間に、あらたなフローチャート記号の挿入を指示する指示入力を受け付ける。描画部２３０は、入力部２２０に指示入力があった場合、フローチャート記号間にあらたなフローチャート記号を描画するとともに、フローチャート記号とあらたなフローチャート記号とを接続するあらたな接続記号をそれぞれのフローチャート記号ごとに描画する。【選択図】図２
2011048477.tif 000002
【特許請求の範囲】
【請求項１】
フローチャートを表示画面に描画するフローチャート描画装置であって、
前記フローチャートの開始記号、前記フローチャートの終了記号、および前記開始記号と前記終了記号とを接続する接続記号を前記表示画面に表示する表示手段と、
前記フローチャート内において接続記号によって接続されたフローチャート記号間に、あらたなフローチャート記号の挿入を指示する指示入力を受け付ける入力手段と、
前記入力手段に前記指示入力があった場合、前記フローチャート記号間に前記あらたなフローチャート記号を描画するとともに、前記フローチャート記号と前記あらたなフローチャート記号とを接続するあらたな接続記号をそれぞれの前記フローチャート記号ごとに描画する描画手段と、
を備えることを特徴とするフローチャート描画装置。
【請求項２】
前記入力手段は、前記表示画面上に表示された前記接続記号に対する所定の操作入力を、前記あらたなフローチャート記号の挿入を指示する指示入力とすることを特徴とする請求項１に記載のフローチャート描画装置。
【請求項３】
前記入力手段は、前記指示入力とともに前記あらたなフローチャート記号の種類の指定を受け付けることを特徴とする請求項１または２に記載のフローチャート描画装置。
【請求項４】
前記描画手段は、前記あらたなフローチャート記号の種類に基づいて前記フローチャート内の前記フローチャート記号および接続記号を描画する位置を決定することを特徴とする請求項３に記載のフローチャート描画装置。
【請求項５】
前記入力手段で選択可能な前記フローチャート記号の種類は、処理記号、判断記号、ループ記号であることを特徴とする請求項３または４に記載のフローチャート描画装置。
【請求項６】
前記描画手段は、
前記フローチャートの構造を、前記フローチャート記号を含む矩形の入れ子構造として解析する解析手段と、
前記入れ子構造の内側にある前記矩形から順番に、それぞれの前記矩形の大きさを決定する大きさ決定手段と、
前記入れ子構造の外側にある前記矩形から順番に、それぞれの前記矩形の前記描画位置を決定する矩形位置決定手段と、
前記矩形内における前記フローチャート記号の描画位置を決定する記号位置決定手段と、を備え、
前記大きさ決定手段は、それぞれの前記矩形の大きさを、当該矩形に含まれるフローチャート記号の種類および前記入れ子構造において当該矩形の内側にある前記矩形の大きさに基づいて決定し、
前記矩形位置決定手段は、それぞれの前記矩形の前記描画位置を、当該矩形に含まれるフローチャート記号の種類および前記入れ子構造において当該矩形の内側にある前記矩形の大きさに基づいて決定し、
前記記号位置決定手段は、前記フローチャート記号の種類に基づいて、当該フローチャート記号の描画位置を決定することを特徴とする請求項１〜５のいずれか一つに記載のフローチャート描画装置。
【請求項７】
フローチャートを表示画面に描画するフローチャート描画方法であって、
前記フローチャートの開始記号、前記フローチャートの終了記号、および前記開始記号と前記終了記号とを接続する接続記号を前記表示画面に表示する表示工程と、
前記フローチャート内において接続記号によって接続されたフローチャート記号間に、あらたなフローチャート記号の挿入を指示する指示入力を受け付ける入力工程と、
前記入力手段に前記指示入力があった場合、前記フローチャート記号間に前記あらたなフローチャート記号を描画するとともに、前記フローチャート記号と前記あらたなフローチャート記号とを接続するあらたな接続記号をそれぞれの前記フローチャート記号ごとに描画する描画工程と、
を含んだことを特徴とするフローチャート描画方法。
【請求項８】
請求項７に記載のフローチャート描画方法をコンピュータに実行させることを特徴とするフローチャート描画プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ユーザの操作に基づいて表示画面などにフローチャートを描画するフローチャート描画装置、フローチャート描画方法およびフローチャート描画プログラムに関する。
【背景技術】
【０００２】
従来、ユーザの操作に基づいて表示画面上などにフローチャートを描画する際には、画像描画ソフトウェア（ドローツール）を用いるのが一般的である。図１４〜図１７は、既存のドローツールを用いたフローチャートの描画方法の一例を模式的に示した説明図である。ユーザがドローツールを起動して、フローチャートの作成を指示すると、図１４に示すように、フローチャートの開始記号、終了記号、およびこれらをつなぐ矢印が表示される。つぎに、図１５に示すように、ユーザは矢印を消去して、開始記号と終了記号との間に処理記号を挿入する。つづいて、図１６に示すように開始記号から処理記号に向かう矢印と、処理記号から終了記号に向かう矢印とを描画する。最後に、図１７に示すように記号間の間隔が等間隔になるように記号の位置や矢印の長さを調整する。
【０００３】
このように、ドローツールを用いてフローチャートを描画する場合、フローチャート内の記号をユーザが所望の順番に並べ、それらの記号間を矢印でつなぎ、それぞれの記号や矢印の位置や大きさ、長さなどを調整する、という手順を取るのが一般的である。また、たとえば、フローチャート作画システムにおいて、結線元ボックス（処理記号）と結線ボックスの間を操作者の望む自由な経路で結線することにより、操作者に見やすく、また、ボックス間に図や文字を自由に配置することができる結線装置および結線方法が知られている（たとえば、下記特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１６３２５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、ユーザの操作でフローチャートのレイアウトを整える必要があるため、フローチャートの作成に多くの時間や労力を費やさなくてはならないという問題点がある。特に、複雑なフローチャートを描く場合には、記号および矢印の数が多くなるため、これらの位置関係を調整するのが困難となり、さらに多くの労力を必要とする。また、完成したフローチャートを修正する場合には、記号や矢印の追加、削除、変更などをおこなった後、再度レイアウトを調整する必要がある。
【０００６】
また、上記の従来技術では、各記号を単なる図形として扱うため、ユーザの意図にそぐわない、または、フローチャート作成上のルールを逸脱するフローチャートを作成してしまう可能性があるという問題点がある。具体的には、たとえば、判断記号から１つの矢印だけしか出ていない、矢印の向きが逆、ループ端の片方がない、というようなフローチャートが作成される可能性がある。
【０００７】
この発明は、上述した従来技術による問題点を解決するため、簡易な操作でユーザの意図したフローチャートを描画することができるフローチャート描画装置、フローチャート描画方法およびフローチャート描画プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、請求項１の発明にかかるフローチャート描画装置は、フローチャートを表示画面に描画するフローチャート描画装置であって、前記フローチャートの開始記号、前記フローチャートの終了記号、および前記開始記号と前記終了記号とを接続する接続記号を前記表示画面に表示する表示手段と、前記フローチャート内において接続記号によって接続されたフローチャート記号間に、あらたなフローチャート記号の挿入を指示する指示入力を受け付ける入力手段と、前記入力手段に前記指示入力があった場合、前記フローチャート記号間に前記あらたなフローチャート記号を描画するとともに、前記フローチャート記号と前記あらたなフローチャート記号とを接続するあらたな接続記号をそれぞれの前記フローチャート記号ごとに描画する描画手段と、を備えることを特徴とする。
【０００９】
この請求項１に記載の発明によれば、フローチャート記号間にあらたなフローチャート記号の挿入が指示された場合、そのフローチャート記号間にあらたなフローチャート記号およびあらたな接続記号を描画する。これにより、複雑な構造のフローチャートであっても簡易な操作で描画することができる。また、請求項１に記載の発明によれば、あらたなフローチャート記号を挿入できる位置が特定されているため、フローチャート作成上のルールを逸脱することなくフローチャートの作成をおこなうことができる。
【００１０】
また、請求項２の発明にかかるフローチャート描画装置は、請求項１に記載の発明において、前記入力手段は、前記表示画面上に表示された前記接続記号に対する所定の操作入力を、前記あらたなフローチャート記号の挿入を指示する指示入力とすることを特徴とする。
【００１１】
この請求項２に記載の発明によれば、ユーザは接続記号に対する所定の操作入力によって、あらたなフローチャート記号の挿入を指示することができる。これにより、あらたなフローチャート記号を挿入する位置を特定しやすくなり、より簡易な操作でフローチャートを描画することができる。
【００１２】
また、請求項３の発明にかかるフローチャート描画装置は、請求項１または２に記載の発明において、前記入力手段は、前記指示入力とともに前記あらたなフローチャート記号の種類の指定を受け付けることを特徴とする。
【００１３】
この請求項３に記載の発明によれば、ユーザは挿入するフローチャート記号の種類をあらかじめ指定することができる。これにより、フローチャートの描画を効率的におこなうことができる。
【００１４】
また、請求項４の発明にかかるフローチャート描画装置は、請求項３に記載の発明において、前記描画手段は、前記あらたなフローチャート記号の種類に基づいて前記フローチャート内の前記フローチャート記号および接続記号を描画する位置を決定することを特徴とする。
【００１５】
この請求項４に記載の発明によれば、あらたなフローチャート記号の種類に基づいてフローチャート内のレイアウトを決定する。これにより、あらたなフローチャート記号を挿入された後のフローチャートのレイアウトを適切に調整することができる。
【００１６】
また、請求項５の発明にかかるフローチャート描画装置は、請求項３または４に記載の発明において、前記入力手段で選択可能な前記フローチャート記号の種類は、処理記号、判断記号、ループ記号であることを特徴とする。
【００１７】
この請求項５に記載の発明によれば、一般的なフローチャートの作成に必要なフローチャート記号のみを選択可能としている。これにより、選択操作のインターフェースを簡素化することができる。
【００１８】
また、請求項６の発明にかかるフローチャート描画装置は、請求項１〜５のいずれか一つに記載の発明において、前記フローチャートの構造を、前記フローチャート記号を含む矩形の入れ子構造として解析する解析手段と、前記入れ子構造の内側にある前記矩形から順番に、それぞれの前記矩形の大きさを決定する大きさ決定手段と、前記入れ子構造の外側にある前記矩形から順番に、それぞれの前記矩形の前記描画位置を決定する矩形位置決定手段と、前記矩形内における前記フローチャート記号の描画位置を決定する記号位置決定手段と、を備え、前記大きさ決定手段は、それぞれの前記矩形の大きさを、当該矩形に含まれるフローチャート記号の種類および前記入れ子構造において当該矩形の内側にある前記矩形の大きさに基づいて決定し、前記矩形位置決定手段は、それぞれの前記矩形の前記描画位置を、当該矩形に含まれるフローチャート記号の種類および前記入れ子構造において当該矩形の内側にある前記矩形の大きさに基づいて決定し、前記記号位置決定手段は、前記フローチャート記号の種類に基づいて、当該フローチャート記号の描画位置を決定することを特徴とする。
【００１９】
この請求項６に記載の発明によれば、フローチャートの構造をフローチャート記号の入れ子構造として捉え、入れ子構造の内側にあるフローチャート記号から順番に大きさを決定した後、入れ子構造の外側にあるフローチャート記号から順番に描画位置を決定する。これにより、フローチャート内のフローチャート記号の位置を適切に調整することができ、複雑なフローチャートであっても簡易な操作で描画することができる。
【００２０】
また、請求項７の発明にかかるフローチャート描画方法は、フローチャートを表示画面に描画するフローチャート描画方法であって、前記フローチャートの開始記号、前記フローチャートの終了記号、および前記開始記号と前記終了記号とを接続する接続記号を前記表示画面に表示する表示工程と、前記フローチャート内において接続記号によって接続されたフローチャート記号間に、あらたなフローチャート記号の挿入を指示する指示入力を受け付ける入力工程と、前記入力手段に前記指示入力があった場合、前記フローチャート記号間に前記あらたなフローチャート記号を描画するとともに、前記フローチャート記号と前記あらたなフローチャート記号とを接続するあらたな接続記号をそれぞれの前記フローチャート記号ごとに描画する描画工程と、を含んだことを特徴とする。
【００２１】
この請求項７に記載の発明によれば、フローチャート記号間にあらたなフローチャート記号の挿入が指示された場合、そのフローチャート記号間にあらたなフローチャート記号およびあらたな接続記号を描画する。これにより、複雑な構造のフローチャートであっても簡易な操作で描画することができる。また、請求項７に記載の発明によれば、あらたなフローチャート記号を挿入できる位置が特定されているため、フローチャート作成上のルールを逸脱することなくフローチャートの作成をおこなうことができる。
【００２２】
また、請求項８の発明にかかるフローチャート描画プログラムは、請求項７に記載のフローチャート描画方法をコンピュータに実行させることを特徴とする。
【００２３】
この請求項８に記載の発明によれば、請求項７に記載のフローチャート描画方法をコンピュータに実行させることができる。
【発明の効果】
【００２４】
以上説明したように、本発明によれば、簡易な操作でユーザの意図したフローチャートを描画することができる。
【図面の簡単な説明】
【００２５】
【図１】フローチャート描画装置のハードウェア構成を示すブロック図である。
【図２】フローチャート描画装置の機能的構成を示すブロック図である。
【図３】フローチャート描画装置によるフローチャート描画処理の手順を示すフローチャートである。
【図４】フローチャート描画装置が表示する初期画面の一例を示す説明図である。
【図５】記号の挿入操作がおこなわれた際の表示画面の一例を示す説明図である。
【図６】記号挿入後の表示画面の一例を示す説明図である。
【図７】完成したフローチャートの一例を示す説明図である。
【図８】論理矩形の構造を説明するための説明図である。
【図９】論理矩形を用いた入れ子構造を説明するための説明図である。
【図１０】フローチャート描画装置によるレイアウト算出方法の手順を示すフローチャートである。
【図１１】レイアウト算出処理の疑似プログラムコードの一例を示す説明図である。
【図１２】レイアウト算出処理の疑似プログラムコードを示す説明図である。
【図１３】レイアウト算出処理の疑似プログラムコードを示す説明図である。
【図１４】既存のドローツールを用いたフローチャートの描画方法の一例を模式的に示した説明図である。
【図１５】既存のドローツールを用いたフローチャートの描画方法の一例を模式的に示した説明図である。
【図１６】既存のドローツールを用いたフローチャートの描画方法の一例を模式的に示した説明図である。
【図１７】既存のドローツールを用いたフローチャートの描画方法の一例を模式的に示した説明図である。
【発明を実施するための形態】
【００２６】
以下に添付図面を参照して、この発明に係るフローチャート描画装置、フローチャート描画方法およびフローチャート描画プログラムの好適な実施の形態を詳細に説明する。
【００２７】
（実施の形態）
まず、実施の形態にかかるフローチャート描画装置１００のハードウェア構成について説明する。図１は、フローチャート描画装置のハードウェア構成を示すブロック図である。図１のように、フローチャート描画装置１００は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、ＦＤ（フレキシブルディスク）１０７と、ＣＤ−ＲＷＤ（ＣＤ−ＲＷドライブ）１０８と、ＣＤ−ＲＷ１０９と、ディスプレイ１１０と、入力デバイス１１１と、ネットワークＩ／Ｆ１１２とを含んで構成されている。なお、上記の各構成１０１〜１１２は、それぞれバス１２０に接続されている。また、ネットワークＩ／Ｆ（インターフェース）１１２には、ＮＥＴ（ネットワーク）に接続するための通信ケーブル１１３が備えられている。
【００２８】
上述のような構成のフローチャート描画装置１００において、ＣＰＵ１０１は、フローチャート描画装置１００全体を制御する。また、ＲＯＭ１０２は、本発明にかかるフローチャート描画プログラムを記憶している。ＲＯＭ１０２に記憶されたフローチャート描画プログラムは、ＣＰＵ１０１からの制御に応じて読み出され実行される。また、ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。
【００２９】
ＨＤＤ１０４は、ＣＰＵ１０１の制御にしたがってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御にしたがって書き込まれたデータを記憶する記憶媒体である。また、ＨＤ１０５に記憶されたデータは、ＨＤＤ１０４の制御に応じて適宜読み出される。
【００３０】
ＦＤＤ１０６は、ＣＰＵ１０１の制御にしたがってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御にしたがって書き込まれたデータを記憶する着脱自在の記憶媒体である。また、ＦＤ１０７に記憶されたデータは、ＦＤＤ１０６の制御に応じて適宜読み出される。
【００３１】
ＣＤ−ＲＷＤ１０８は、ＣＰＵ１０１の制御にしたがってＣＤ−ＲＷ１０９に対するデータのリード／ライトを制御する。ＣＤ−ＲＷ１０９は、ＣＤ−ＲＷＤ１０８の制御にしたがって書き込まれたデータを記憶する着脱自在な記憶媒体である。また、ＣＤ−ＲＷ１０９に記憶されたデータは、ＣＤ−ＲＷＤ１０８の制御に応じて適宜読み出される。
【００３２】
ディスプレイ１１０は、ＣＰＵ１０１の制御によって、カーソル、メニュー、ウィンドウ、あるいは文字や画像などの各種データを表示する。また、入力デバイス１１１は、文字、数値、各種指示などの入力のための複数のキーを備えたリモコン、キーボード、タッチパネルなどである。入力デバイス１１１は、リモコン、キーボード、タッチパネルのうちいずれか１つの形態によって実現されてもよいが、複数の形態によって実現することも可能である。
【００３３】
ネットワークＩ／Ｆ１１２は、通信ケーブル１１３を介してＬＡＮやＷＡＮなどのネットワークに接続され、当該ネットワークとＣＰＵ１０１とのインターフェースとして機能する。
【００３４】
本実施の形態にかかるフローチャート描画装置１００は、上述したようなハードウェアを備えており、ＣＰＵ１０１の制御によりＲＯＭ１０２に記憶されたフローチャート描画プログラムを実行することにより、フローチャートの描画をおこなうことができる。
【００３５】
（フローチャート描画装置の機能的構成）
つぎに、フローチャート描画装置１００の機能的構成について説明する。図２は、フローチャート描画装置の機能的構成を示すブロック図である。フローチャート描画装置１００は、表示部２１０、入力部２２０、描画部２３０によって構成される。描画部２３０は、さらに解析部２３１、大きさ決定部２３２、矩形位置決定部２３３、記号位置決定部２３４によって構成される。フローチャート描画装置１００は、ユーザの操作に基づいて表示画面２５０にフローチャートを描画する。表示画面２５０は、たとえばディスプレイ１１０である。
また、フローチャート描画装置１００の描画対象は、データ流れ図やプログラム流れ図など情報処理分野における一連の流れを示す流れ図（フローチャート）に限らず、たとえばワークフローと呼ばれる作業プロセスを示すグラフなどを含む。すなわち、フローチャート描画装置１００は、描画ルールが詳細に規定されたフローチャートのみならず、処理の流れを説明するための図全般を描画対象としている。
【００３６】
表示部２１０は、フローチャートの開始記号、フローチャートの終了記号、および開始記号と終了記号とを接続する接続記号を表示画面２５０に表示する。表示部２１０は、たとえばフローチャート描画装置１００においてフローチャート描画プログラムが起動され、フローチャートの描画開始が指示された際に、表示画面２５０にフローチャートの開始記号、終了記号、および接続記号を表示する。表示部２１０は、開始記号をフローチャートの上流側に、終了記号をフローチャートの下流側に表示する。
【００３７】
入力部２２０は、フローチャート内において接続記号によって接続されたフローチャート記号間に、あらたなフローチャート記号の挿入を指示する指示入力を受け付ける。接続記号によって接続されたフローチャート記号間とは、たとえば、表示部２１０によって開始記号および終了記号の表示がおこなわれた直後においては、開始記号と終了記号との間である。また、フローチャート中に開始記号および終了記号以外のフローチャート記号がある場合には、接続記号に接続された任意のフローチャート記号間にあらたなフローチャート記号を挿入することができる。なお、本明細書において、フローチャート記号とは、フローチャートに用いられる記号のうち、接続記号（線記号）を除く記号を示す。
【００３８】
入力部２２０は、たとえば表示画面２５０上に表示された接続記号（あらたなフローチャート記号を挿入する位置にある接続記号）に対する所定の操作入力を、あらたなフローチャート記号の挿入を指示する指示入力とする。また、入力部２２０は、あらたなフローチャート記号の指示入力とともにあらたなフローチャート記号の種類の指定を受け付ける。入力部２２０で選択可能なフローチャート記号の種類は、たとえば処理記号、判断記号、ループ記号とする。この３種類の記号を使用すれば、一般的な処理を表すフローチャートを描画することができる。なお、処理記号および判断記号の形状をさらに指定できるようにしてもよい。
【００３９】
描画部２３０は、入力部２２０に指示入力があった場合、フローチャート記号間にあらたなフローチャート記号を描画するとともに、フローチャート記号とあらたなフローチャート記号とを接続するあらたな接続記号をそれぞれのフローチャート記号ごとに描画する。具体的には、たとえば、開始記号と終了記号との間にあらたなフローチャート記号の挿入指示があった場合、描画部２３０は、開始記号と終了記号との間にあらたなフローチャート記号を描画するとともに、開始記号とあらたなフローチャート記号とを接続する接続記号およびあらたなフローチャート記号と終了記号とを接続する接続記号を描画する。
【００４０】
あらたなフローチャート記号を描画する際、描画部２３０は、フローチャート全体で均整のとれたレイアウトになるようにフローチャート内のすべての記号の位置を再計算して描画する。このため、描画部２３０は、さらに解析部２３１、大きさ決定部２３２、矩形位置決定部２３３、記号位置決定部２３４によって構成される。
【００４１】
解析部２３１は、フローチャートの構造を、フローチャート記号を含む矩形の入れ子構造として解析する。解析部２３１は、たとえば、フローチャート記号がタスク記号の場合は、そのタスク記号およびその下流にあるフローチャート記号を囲む矩形を１つの入れ子とし、タスク記号の下流にある記号群をさらに囲む矩形を内側の入れ子とする。条件分岐記号の場合は、条件分岐記号から分岐の合流点、および合流点の下流にあるフローチャート記号を囲む矩形を１つの入れ子とし、合流点の下流に位置する記号群をさらに囲む矩形および分岐内にある記号群をさらに囲む矩形をそれぞれ内側の入れ子とする。ループ記号の場合は、ループの開始記号から終了記号、および終了記号の下流にあるフローチャート記号を囲む矩形を１つの入れ子とし、終了記号の下流にある記号群をさらに囲む矩形およびループ内にある記号群をさらに囲む矩形をそれぞれ内側の入れ子とする。
【００４２】
大きさ決定部２３２は、入れ子構造の内側にある矩形から順番に、それぞれの矩形の大きさを決定する。大きさ決定部２３２は、それぞれの矩形の大きさを、当該矩形に含まれるフローチャート記号の種類および入れ子構造において当該矩形の内側にある矩形の大きさに基づいて決定する。
【００４３】
矩形位置決定部２３３は、入れ子構造の外側にある矩形から順番に、それぞれの矩形の描画位置を決定する。矩形位置決定部２３３は、それぞれの矩形の描画位置を、当該矩形に含まれるフローチャート記号の種類および入れ子構造において当該矩形の内側にある矩形の大きさに基づいて決定する。
【００４４】
記号位置決定部２３４は、それぞれの矩形内におけるフローチャート記号の描画位置を決定する。記号位置決定部２３４は、フローチャート記号の種類に基づいて、当該フローチャート記号の描画位置を決定する。
【００４５】
（フローチャート描画処理の詳細）
つづいて、フローチャート描画装置１００によるフローチャート描画処理について説明する。図３は、フローチャート描画装置によるフローチャート描画処理の手順を示すフローチャートである。フローチャート描画装置１００は、フローチャートの作成開始が指示されるまで待機する（ステップＳ３０１：Ｎｏのループ）。フローチャートの作成開始指示は、たとえば、フローチャート描画装置１００においてフローチャート描画プログラムを起動し、「新規作成」などのボタンを押下することによっておこなう。
【００４６】
フローチャートの作成開始が指示されると（ステップＳ３０１：Ｙｅｓ）、フローチャート描画装置１００は、ディスプレイ１１０にフローチャートの初期画面を表示する（ステップＳ３０２）。図４は、フローチャート描画装置が表示する初期画面の一例を示す説明図である。図４には、フローチャート描画プログラムのインターフェース４００が示されている。インターフェース４００は、編集中のフローチャートが表示される編集領域４１０、フローチャート中に挿入する記号の種類を選択する記号選択領域４２０、プログラム中のコマンド（「編集」「終了」など）が表示されるツールバー４３０などを含んでいる。
【００４７】
図４において、編集領域４１０には、初期画面として、フローチャートの開始記号４０１、終了記号４０２、および開始記号４０１から終了記号４０２に向かう矢印４０３が表示されている。初期画面に開始記号４０１および終了記号４０２が表示されるのは、完結したフローチャートには必ず開始記号４０１および終了記号４０２が存在するからである。また、矢印４０３は、記号間をつなぐ接続記号の１つである。
【００４８】
接続記号（たとえば矢印４０３）は、初期画面およびその後の編集画面において、あらたな記号の挿入点となる。ユーザは、接続記号（すなわち記号と記号との間）にあらたな記号を挿入していくことによって、フローチャートの編集を進める。図４では、矢印４０３上に円上のアイコン４０４を表示して、記号の挿入位置をユーザが認識しやすいようにしている。
【００４９】
図３の説明に戻り、フローチャート描画装置１００は、ユーザによってフローチャートの編集操作がおこなわれるまで待機する（ステップＳ３０３：Ｎｏのループ）。フローチャートの編集には、たとえば、記号の挿入、削除、コピー、切り取り、貼り付け、記号の種類の変更、記号内の文字の編集などの操作がある。このうち、記号の挿入は、記号を挿入したい位置の矢印４０３（またはアイコン４０４）に対する操作によっておこなう。
【００５０】
図５は、記号の挿入操作がおこなわれた際の表示画面の一例を示す説明図である。ユーザがアイコン４０４の位置にポインタ５０１を合わせてマウスを右クリックすると、アイコン４０４の近傍に編集メニュー５０２が表示される。編集メニュー５０２には、たとえば、「タスクを追加」、「条件分岐を追加」、「ループを追加」、「貼り付け」などのメニューが表示されている。タスク、条件分岐、ループは、それぞれフローチャート記号の種類を表す。タスク記号は、直前のステップとの接続記号（矢印）や直後のステップとの接続記号（矢印）が１つずつある記号を示す。これに対して、条件分岐記号やループ記号は、直前のステップとの接続記号（矢印）や直後のステップとの接続記号（矢印）が複数ある。
【００５１】
図５では、タスク記号として７つの種類の記号が示されている。タスク記号を挿入する場合、ユーザは、記号選択領域４２０のタスク選択領域５２０ａに示された７つのタスク記号から挿入したいタスク記号を選択する。具体的には、選択したいタスク記号のラジオボタンをオンにする。その状態で編集メニュー５０２の「タスクを追加」を実行すると、所望のタスク記号がフローチャート内に挿入される。
【００５２】
また、図５では、ループとして２つの種類の記号が示されている。ループ記号を挿入する場合、タスク記号を挿入する場合と同様に、ユーザは、記号選択領域４２０のループ選択領域５２０ｂに示された２つの記号から挿入したいループ記号を選択し、編集メニュー５０２の「ループを追加」を実行する。一方、条件分岐の記号は１つの種類しかないため、記号選択領域４２０における選択はおこなわず、編集メニュー５０２の「条件分岐を追加」を実行する。なお、図５に示した記号の種類は一例であり、他のフローチャート記号を選択可能としてもよい。
【００５３】
フローチャートの編集操作があると（ステップＳ３０３：Ｙｅｓ）、フローチャート描画装置１００は、編集後のフローチャートのレイアウトを算出する（ステップＳ３０４）。レイアウトの算出方法については、後ほど詳細に説明する。そして、ステップＳ３０４で算出したレイアウトのフローチャートをディスプレイ１１０に表示する（ステップＳ３０５）。
【００５４】
図６は、記号挿入後の表示画面の一例を示す説明図である。図６では、開始記号４０１と終了記号４０２との間に、処理を示すタスク記号６０１が挿入されている。開始記号４０１とタスク記号６０１との間には、開始記号４０１からタスク記号６０１に向かうあらたな矢印６０２およびアイコン６０３が表示されている。また、タスク記号６０１と終了記号４０２との間には、タスク記号６０１から終了記号４０２に向かうあらたな矢印６０４およびアイコン６０５が表示されている。ユーザは、矢印６０２（またはアイコン６０３）や矢印６０４（またはアイコン６０５）に操作をおこなうことによって、フローチャート内に記号を挿入していく。
【００５５】
フローチャートの編集終了が指示されるまで（ステップＳ３０６：Ｎｏ）、フローチャート描画装置１００は、ステップＳ３０３に戻り、以降の処理を継続する。ユーザは、編集操作の末、所望のフローチャートが完成するとフローチャートの編集を終了する。フローチャートの編集終了が指示されると（ステップＳ３０６：Ｙｅｓ）、フローチャート描画装置１００は、作成したフローチャートをデータとして保存して（ステップＳ３０７）、本フローチャートによる処理を終了する。保存したデータは、フローチャート描画プログラムを用いて再度編集することができる。
【００５６】
図７は、完成したフローチャートの一例を示す説明図である。図７のフローチャートは、開始記号７１１、終了記号７１２、ループの始点記号７１３および終点記号７１４、第１の条件分岐記号７１５および分岐の合流点７１６、第２の条件分岐記号７１７および分岐の合流点７１８、第１のタスク記号７１９、第２のタスク記号７２０、第３のタスク記号７２１、第４のタスク記号７２２、およびこれらをつなぐ接続記号によって構成される。図３のフローチャートで説明したように、任意の記号間にあらたに記号を挿入していくことによって、図７のような複雑なフローチャートも容易に描画することができる。
【００５７】
図７のフローチャートを描画する際の具体的な手順の一例を以下に示す。まず、初期画面では開始記号７１１、終了記号７１２、およびこれらをつなぐ矢印が表示されている。ユーザは、まず開始記号７１１と終了記号７１２との間にループ記号を挿入する操作をおこない、ループの始点記号７１３および終点記号７１４を挿入する（第１の操作）。つぎに、ユーザはループの始点記号７１３と終点記号７１４との間に条件分岐記号を挿入する操作をおこない、第１の条件分岐記号７１５および分岐の合流点７１６を挿入する（第２の操作）。
【００５８】
つづいて、第１の条件分岐記号７１５のＹｅｓ分岐側にタスク記号を挿入する操作をおこない、第１のタスク記号７１９を挿入する（第３の操作）。また、第１の条件分岐記号７１５のＮｏ分岐側に条件分岐記号を挿入する操作をおこない、第２の条件分岐記号７１７および分岐の合流点７１８を挿入する（第４の操作）。さらに、第２の条件分岐記号７１７のＹｅｓ分岐側にタスク記号を挿入する操作をおこない、第２のタスク記号７２０を挿入する（第５の操作）。また、第２の条件分岐記号７１７のＮｏ分岐側にタスク記号を挿入する操作をおこない、第３のタスク記号７２１を挿入する（第６の操作）。そして、第３のタスク記号７２１と合流点７１８との間にタスク記号を挿入する操作をおこない、第４のタスク記号７２２を挿入する（第７の操作）。このように、フローチャート描画装置１００によれば、図７のような複雑なフローチャートを７回の操作で描画することができる。
【００５９】
つづいて、フローチャートのレイアウト算出方法（図３のステップＳ３０４参照）について説明する。フローチャート描画装置１００では、フローチャートのレイアウトを論理矩形を用いて算出する。論理矩形とは、フローチャート内の各要素の位置を決めるための概念上の矩形である。論理矩形はディスプレイ上には描画されない。論理矩形には、開始終了矩形、タスク順列矩形、条件順列矩形、ループ順列矩形、空矩形の５種類がある。
【００６０】
図８は、論理矩形の構造を説明するための説明図である。開始終了矩形８０１は、開始記号、終了記号、および開始記号と終了記号との間にある入れ子論理矩形を含む。通常、フローチャートの最も上流には開始記号が位置し、最も下流には終了記号が位置する。このため、開始終了矩形は、フローチャート内で最も外側の論理矩形となる。入れ子論理矩形は、タスク順列矩形、条件順列矩形、ループ順列矩形、空矩形のいずれかとなる。開始終了矩形の高さは、開始記号の上端から終了記号の下端までとなる。また、開始終了矩形の幅は、開始記号、終了記号、入れ子論理矩形のうち最も幅が大きいものと同じとなる。なお、図８においては、図を見やすくするため、矩形内の記号と矩形との間に隙間が示されているが、実際は各矩形の上下左右の辺が矩形内の記号の上下左右の辺と一致している。
【００６１】
タスク順列矩形８０２は、タスク記号およびタスク記号の下に位置する次位論理矩形を含む。次位論理矩形は、タスク順列矩形、条件順列矩形、ループ順列矩形、空矩形のいずれかとなる。タスク順列矩形の高さは、タスク記号の上端から次位論理矩形の下端までとなる。また、タスク順列矩形の幅は、タスク記号または次位論理矩形のうち幅がより大きいものと同じとなる。
【００６２】
条件順列矩形８０３は、条件分岐記号、条件分岐記号の下に位置する次位論理矩形、および各分岐内にある入れ子論理矩形を含む。条件順列矩形８０３の高さは、条件分岐記号の上端から次位論理矩形の下端までとなる。また、条件順列矩形８０３の幅は、条件分岐記号、次位論理矩形、入れ子論理矩形のうち最も左側に位置するものの左辺から、これらのうち最も右側に位置するものの右辺までの距離となる。
【００６３】
ループ順列矩形８０４は、ループ記号、ループ記号の下に位置する次位論理矩形、およびループ記号間にある入れ子論理矩形を含む。ループ順列矩形の高さは、ループ記号の上端から次位論理矩形の下端までとなる。また、ループ論理矩形の幅は、ループ記号、ループ記号間を結ぶ接続記号、次位論理矩形、入れ子論理矩形のうち最も左側に位置するものの左辺から、これらのうち最も右側に位置するものの右辺までの距離となる。
【００６４】
空矩形は、要素を持たない矩形である。空矩形は、高さや幅を持たないため図示を省略する。上述した次位論理矩形や入れ子論理矩形が空矩形の場合、その位置には要素がない。
【００６５】
図９は、論理矩形を用いた入れ子構造を説明するための説明図である。図９のフローチャートは、図７に示したフローチャートと同一のフローチャートなので、対応する記号には図７と同一の符号を付している。一番外側の入れ子となっている矩形は、開始記号７１１から終了記号７１２までを含む開始終了矩形Ａである。開始終了矩形Ａの入れ子矩形はループ順列矩形Ｂである。
【００６６】
ループ順列矩形Ｂは、ループの始点記号７１３から終点記号７１４までを含む。ループ順列矩形Ｂの次位論理矩形は空矩形なので、ループの終点記号７１４がループ順列矩形Ｂの下端となっている。また、ループ順列矩形Ｂの入れ子矩形は、条件順列矩形Ｃである。
【００６７】
条件順列矩形Ｃは、第１の条件分岐記号７１５から分岐の合流点７１６までを含む。条件順列矩形Ｃの次位論理矩形は空矩形なので、合流点７１６が条件順列矩形Ｃの下端となっている。条件順列矩形ＣのＹｅｓ分岐側の入れ子矩形はタスク順列矩形Ｄである。また、条件順列矩形ＣのＮｏ分岐側の入れ子矩形は、条件順列矩形Ｅである。
【００６８】
タスク順列矩形Ｄは、第１のタスク記号７１９を含む。タスク順列矩形Ｄの次位論理矩形は空矩形なので、第１のタスク記号７１９の下に要素はない。すなわち、タスク順列矩形Ｄの大きさは第１のタスク記号７１９の大きさそのものとなる。
【００６９】
条件順列矩形Ｅは、第２の条件分岐記号７１７から分岐の合流点７１８までを含む。条件順列矩形Ｅの次位論理矩形は空矩形なので、合流点７１８が条件順列矩形Ｅの下端となっている。条件順列矩形ＥのＹｅｓ分岐側の入れ子矩形は、タスク順列矩形Ｆである。また、条件順列矩形ＥのＮｏ分岐側の入れ子矩形は、タスク順列矩形Ｇである。
【００７０】
タスク順列矩形Ｆは、第２のタスク記号７２０を含む。タスク順列矩形Ｆの次位論理矩形は空矩形なので、第２のタスク記号７２０の下に要素はない。すなわち、タスク順列矩形Ｆの大きさは第２のタスク記号７２０の大きさそのものとなる。
【００７１】
タスク順列矩形Ｇは、第３のタスク記号７２１を含む。タスク順列矩形Ｇの次位論理矩形は、タスク順列矩形Ｈである。このため、タスク順列矩形Ｇの下端はタスク順列矩形Ｈの下端となる。タスク順列矩形Ｈは、第４のタスク記号７２２を含む。タスク順列矩形Ｈの次位論理矩形は空矩形なので、第４のタスク記号７２２の下に要素はない。すなわち、タスク順列矩形Ｈの大きさは第４のタスク記号７２２の大きさそのものとなる。
【００７２】
フローチャート描画装置１００は、フローチャート内の各論理矩形を適当な位置に配置することによって、フローチャートのレイアウトを調整する。図１０は、フローチャート描画装置によるレイアウト算出方法の手順を示すフローチャートである。図１０のフローチャートは、編集中のフローチャートに対して何らかの編集操作（たとえば、記号の挿入など）がおこなわれた際に、フローチャートのレイアウトを調整する処理である。
【００７３】
図１０のフローチャートにおいて、フローチャート描画装置１００は、編集中のフローチャートに対して編集操作がおこなわれるまで待機する（ステップＳ１００１：Ｎｏのループ）。編集操作がおこなわれると（ステップＳ１００１：Ｙｅｓ）、フローチャート描画装置１００は、入れ子構造の一番内側に位置する論理矩形を特定し（ステップＳ１００２）、その論理矩形の大きさを決定する（ステップＳ１００３）。図９の例では、入れ子構造の一番内側の論理矩形はタスク順列矩形Ｈである。このため、フローチャート描画装置１００は、はじめにタスク順列矩形Ｈの大きさを決定する。
【００７４】
つぎに、フローチャート描画装置１００は、ステップＳ１００３で大きさを決定した論理矩形の外側に論理矩形があるか否かを判断する（ステップＳ１００４）。外側に論理矩形がある場合には（ステップＳ１００４：Ｙｅｓ）、ステップＳ１００３に戻り、外側の論理矩形の大きさを決定する。図９の例では、タスク順列矩形Ｈの外側にはタスク順列矩形Ｇがあるので、タスク順列矩形Ｈにつづいてタスク順列矩形Ｇの大きさを決定する。また、タスク順列矩形Ｇの外側には条件順列矩形Ｅがあるので、タスク順列矩形Ｇにつづいて条件順列矩形Ｅの大きさを決定する。
【００７５】
なお、外側の論理矩形内に、ステップＳ１００３で大きさを決定した論理矩形以外の他の論理矩形が含まれている場合は、外側の論理矩形の大きさを決定する前に、他の論理矩形の大きさを決定する。たとえば、タスク順列矩形Ｇの外側には条件順列矩形Ｅがあるが、条件順列矩形Ｅ内には、タスク順列矩形Ｇの他、タスク順列矩形Ｆが含まれている。この場合、条件順列矩形Ｅの大きさを決定する前にタスク順列矩形Ｆの大きさを決定する。また、フローチャート描画装置１００は、各論理矩形の大きさを決定した際、各論理矩形の左側の幅の値（左幅値）および右側の幅の値（右幅値）を記憶しておく。
【００７６】
ステップＳ１００４において、外側に論理矩形がなくなると（ステップＳ１００４：Ｎｏ）、すなわち、すべての論理矩形の大きさを決定すると、フローチャート描画装置１００は、最も外側の論理矩形から順番にそれぞれの論理矩形の位置および論理矩形内の記号の位置を決定する（ステップＳ１００５）。論理矩形の位置は、たとえば論理矩形の左上の頂点の座標を定めることによって決定する。
【００７７】
すべての論理矩形および記号の位置を決定するまで（ステップＳ１００６：Ｎｏ）、フローチャート描画装置１００は、ステップＳ１００５に戻り、位置の決定をおこなう。そして、すべての論理矩形および記号の位置を決定すると（ステップＳ１００６：Ｙｅｓ）、フローチャート内の記号を結ぶ接続記号の位置を決定し（ステップＳ１００７）、本フローチャートによる処理を終了する。
【００７８】
図１０のフローチャートに示した処理を、図９に示したフローチャートの条件順列矩形Ｅ内の要素を例にしてより具体的に説明する。まず、各論理矩形の大きさを決定する（図１０ステップＳ１００３参照）。条件順列矩形Ｅ内には入れ子の論理矩形（タスク順列矩形Ｆ、タスク順列矩形Ｇ、タスク順列矩形Ｈ）があるので、入れ子となった論理矩形の大きさを先に決定する。Ｙｅｓ分岐側にあるタスク順列矩形Ｆ内には入れ子がないので、第２のタスク記号７２０の幅および高さをタスク順列矩形Ｆの幅および高さとする。また、タスク順列矩形Ｆの左幅値および右幅値を、それぞれ第２のタスク記号７２０の幅の１／２とする。
【００７９】
Ｎｏ分岐側にあるタスク順列矩形Ｇにはタスク順列矩形Ｈが入れ子になっているので、タスク順列矩形Ｈの大きさを先に決める。タスク順列矩形Ｈには入れ子がないので、第３のタスク記号７２０の幅および高さをタスク順列矩形Ｈの幅および高さとする。また、タスク順列矩形Ｈの左幅値および右幅値を、それぞれ第４のタスク記号７２２の幅の１／２とする。
【００８０】
タスク順列矩形Ｇの大きさは、第３のタスク記号７２１と第４のタスク記号７２２に基づいて決める。タスク順列矩形Ｇの幅は、第３のタスク記号７２１の幅と第４のタスク記号７２２の幅とのうち大きい方の値とする。図９においては、第２のタスク記号７２１の幅と第４のタスク記号７２２の幅とは同じなので、第３のタスク記号７２１の幅とする。また、タスク順列矩形Ｇの高さは、第３のタスク記号７２１の高さ＋第４のタスク記号７２２の高さ＋第３のタスク記号７２１と第４のタスク記号７２２との間の縦方向のマージンＶＭとする。また、タスク順列矩形Ｇの左幅値および右幅値は、第３のタスク記号７２１の幅と第４のタスク記号７２２の幅とのうち大きい方の１／２とする。図９においては、第３のタスク記号７２１の幅と第４のタスク記号７２２の幅とは同じなので、タスク順列矩形Ｇの左幅値および右幅値は、第３のタスク記号７２１の幅の１／２とする。
【００８１】
つづいて、条件順列矩形Ｅの大きさを決定する。条件順列矩形Ｅの幅は、以下の３つの値のうち最も大きい値とする。図９の場合、値Ａが最も大きい値なので値Ａを条件順列矩形Ｅの幅とする。
値Ａ）タスク順列矩形Ｆの幅＋タスク順列矩形Ｇの幅＋タスク順列矩形Ｆとタスク順列矩形Ｇとの間の横方向のマージンＨＭ
値Ｂ）第２の条件分岐記号７１７の幅
値Ｃ）合流点７１８の幅
【００８２】
条件順列矩形Ｅの高さは、条件順列矩形Ｅ内に入れ子になっているタスク順列矩形Ｆの高さとタスク順列矩形Ｇの高さとのうち値が大きい方（図９ではタスク順列矩形Ｇの高さ）＋第２の条件分岐記号７１７の高さ＋合流点７１８の高さ＋縦方向のマージンＶＭの２倍（第２の条件分岐記号７１７と第２のタスク記号７１９との間隔ＶＭおよび第３のタスク記号７２０と合流点７１８との間隔ＶＭ）とする。また、条件順列矩形Ｅの左幅はタスク矩形Ｆの幅＋横方向のマージンＨＭの１／２とし、右幅値はタスク順列矩形Ｇの幅＋横方向のマージンＨＭの１／２とする。
【００８３】
つぎに、各論理矩形および記号の位置を決定する。以下の説明において、フローチャートの横方向をｘ座標、縦方向をｙ座標とする。ｘ座標、ｙ座標は、たとえば最も外側の論理矩形Ａの左上の点を原点Ｏ（０，０）として、この点からのｘ方向、ｙ方向の距離をそれぞれ表す。論理矩形および記号の位置を決定する際には、まず論理矩形の位置を決め、つぎに論理矩形内の記号の位置を決める。
【００８４】
まず、一番外側にある条件順列矩形Ｅの左上の角の位置を点Ｐ（ｘ，ｙ）とする。点Ｐの位置（座標）は、条件順列矩形Ｅの外側にある矩形などの位置によって決めるが、詳細な説明は省略する。つぎに、第２の条件分岐記号７１７の位置を決める。第２の条件分岐記号７１７の位置は、第２の条件分岐記号７１７と同じ高さおよび幅を有する矩形７１７’の座標として決定する。矩形７１７’の左上の点Ｑのｘ座標は、点Ｐのｘ座標＋条件順列矩形Ｅの左幅−第２の条件分岐記号７１７の幅の１／２とする。また、点Ｑのｙ座標は、点Ｐのｙ座標と同じにする。
【００８５】
つづいて、合流点７１８の位置を決める。合流点７１８の位置は、合流点７１８と同じ高さおよび幅を有する矩形７１８’の座標として決定する。矩形７１８’の左上の点Ｒのｘ座標は、条件順列矩形Ｅの左幅値から合流点７１８の幅値の１／２を引いた値を、点Ｐのｘ座標に加えたものとする。また、点Ｒのｙ座標は、点Ｐのｙ座標に矩形Ｅの高さを加えた値から合流点７１８の高さを引いた値とする。
【００８６】
つぎに、タスク順列矩形Ｆの位置を決める。タスク順列矩形Ｆの左上の点Ｔのｘ座標は、点Ｐのｘ座標と同じにする。点Ｔのｙ座標は、第２の条件分岐記号７１７の高さとタスク順列矩形Ｇの高さの１／２と間隔ＶＭとを点Ｐのｙ座標に加えた値からタスク順列矩形Ｆの高さの１／２を引いた値とする。これにより、タスク順列矩形Ｆの縦方向の位置は、第２の条件分岐記号７１７の下端と合流点７１８の上端との中間となる。タスク順列矩形Ｆ内の要素である第２のタスク記号７２０の左上の点の座標は、タスク順列矩形Ｆの左上の点Ｔと同じにする。
【００８７】
つづいて、タスク順列矩形Ｇの位置を決める。タスク順列矩形Ｇの左上の点Ｕのｘ座標は、条件順列矩形Ｅの左幅値と横方向のマージンＨＭの１／２とを点Ｐのｘ座標に加えた値とする。これにより、タスク順列矩形Ｇの右辺は条件順列矩形Ｅの右辺と同じ位置になる。点Ｕのｙ座標は、第２の条件分岐記号７１７の高さと縦方向のマージンＶＭとを点Ｐのｙ座標に加えた値とする。これにより、タスク順列矩形Ｇの縦方向の位置は、第２の条件分岐記号７１７の下端と合流点７１８の上端との中間となる。タスク順列矩形Ｇ内の要素である第３のタスク記号７２１の左上の点の座標は、タスク順列矩形Ｇの左上の点Ｕと同じにする。
【００８８】
つぎに、タスク順列矩形Ｈの位置を決める。タスク順列矩形Ｈの左上の点Ｖのｘ座標は、タスク順列矩形Ｇの左上の点Ｕと一致させる。これは、タスク順列矩形Ｈの幅とタスク順列矩形Ｇの幅とが同じであるためである。点Ｖのｙ座標は、第４のタスク記号７２２の高さと縦方向のマージンＶＭとを点Ｕのｙ座標に加えた値とする。タスク順列矩形Ｈ内の要素である第４のタスク記号７２２の左上の点の座標は、タスク順列矩形Ｈの左上の点Ｖと同じにする。
【００８９】
以上のようにフローチャート内の記号の位置を定めると、フローチャート全体で均整のとれたレイアウトを実現することができる。この後、フローチャート描画装置１００は、各記号間を接続する接続記号を描画し、図９に示すようなフローチャートの描画が完了する。
【００９０】
上述したレイアウト算出処理を、疑似プログラムコードを用いてさらに詳細に説明する。図１１〜図１３は、レイアウト算出処理の疑似プログラムコードの一例を示す説明図である。図１１〜図１３の疑似プログラムコードにおいて、「ＨＭ」は横方向のマージンを、「ＶＭ」は縦方向のマージンを表す。また、「ＥＭＰＴＹ」は空矩形、すなわちその順列矩形が１つも要素を持たないことを表す。「ＳＥＱＵＥＮＣＥ」はその論理矩形が１つ以上の要素を持つことを表す。「ＴＡＳＫ」はタスク順列矩形を表す。「ＣＯＮＤＩＴＩＯＮ」は条件順列矩形を表す。「ＬＯＯＰ」はループ順列矩形を表す。「ＳＴＡＲＴＥＮＤ」は開始終了矩形を表す。「Ｂｏｘ」は最も外側の矩形領域を指し示す。
【００９１】
１行目から４行目は、一連の手続きの定義である。一連の手続きでは、まず、すべての論理矩形の大きさ（Ｓｉｚｅ）を決定し、つぎに論理矩形に配置する要素の座標（Ｐｏｓｉｔｉｏｎ）を決定する。５行目から５５行目は、論理矩形の大きさを計算する処理である。６行目から１０行目は、論理矩形が空矩形であれば、その大きさを０とすることを示す。１１行目から１２行目は、論理矩形内に次位論理矩形（ｎｅｘｔＢｏｘ）があれば、次位論理矩形の大きさを先に求めることを示す。１３行目から１５行目は、次位論理矩形が空矩形の場合は縦方向のマージンを０とし、次位論理矩形が空矩形ではない場合は縦方向のマージンＶＭをとることを示す。
【００９２】
１８行目から５５行目では、論理矩形内の要素の種類に応じて各論理矩形の高さ（ｈｅｉｇｈｔ）、幅（ｗｉｄｔｈ）、左右の片寄り（ｌｅｆｔＷｉｄｔｈ，ｒｉｇｈｔＷｉｄｔｈ）を求める処理を示す。論理矩形がタスク順列矩形の場合は（１９行目）、２０行目から２３行目に示すように論理矩形の高さ、幅、左右の片寄りを求める。なお、「ｍａｘ（Ａ，Ｂ，・・）」（Ａ，Ｂは要素名）とは、（）内の要素のうち最も大きいものを示す。論理矩形が条件順列矩形の場合は（２５行目）、２６行目から３５行目に示すように論理矩形の高さ、幅、左右の片寄りを求める。なお、条件順列矩形において「ｓｔａｒｔＮｏｄｅ」とは条件分岐記号を、「ｅｎｄＮｏｄｅ」とは合流点を示す。
【００９３】
論理矩形がループ順列矩形の場合は（３７行目）、まず、３８行目に示すように、論理矩形内に入れ子論理矩形（ｉｎｎｅｒＢｏｘ）があれば先に大きさを求める。そして、３９行目から４６行目に示すように論理矩形の高さ、幅、左右の片寄りを求める。なお、ループ論理矩形において、「ｓｔａｒｔＮｏｄｅ」とはループの開始記号を、「ｅｎｄＮｏｄｅ」とはループの終了記号を示す。論理矩形が開始終了矩形の場合は（４９行目）、まず、５０行目に示すように、論理矩形内に入れ子論理矩形があれば先に大きさを求める。そして、５１行目から５４行目に示すように論理矩形の高さ、幅、左右の片寄りを求める。これにより、各論理矩形の大きさが決まる。
【００９４】
５７行目から９１行目では、各要素を配置する座標を決定する。論理矩形が空矩形の場合は（５８行目）、座標を決定すべき要素はないためそのまま処理を終了する。一方、論理矩形内に要素がある場合は（６１行目）、各要素の種類に応じて位置を決定していく。タスク順列矩形の場合は（６３行目）、６４行目および６５行目に示すようにタスク記号の座標を決める。条件順列矩形の場合は（６７行目）、まず６８行目から７１行目に示すように条件分岐記号および合流点の位置を決める。そして、７１行目から７５行目に示すように、分岐の左右それぞれにある入れ子論理矩形の座標を求める。
【００９５】
ループ順列矩形の場合は（７７行目）、７８行目から８１行目に示すようにループの開始記号および終了記号の位置を求める。そして、入れ子論理矩形がある場合は、開始記号および終了記号の位置を基点として８２行目に示すようにその位置を求める。また、開始終了矩形の場合は（８６行目）、８７行目から９０行目に示すように開始記号および終了記号の位置を求める。そして、入れ子論理矩形がある場合は、開始記号および終了記号の位置を基点として９１行目に示すようにその位置を求める。
【００９６】
以上説明したように、実施の形態にかかるフローチャート描画装置１００は、表示されているフローチャート記号間にあらたなフローチャート記号を挿入していくことにより、フローチャートの編集処理をおこなうことができる。これにより、複雑な構造のフローチャートであっても簡易な操作で描画することができる。また、フローチャート描画装置１００では、あらたなフローチャート記号を挿入できる位置が特定されているため、フローチャート作成上のルールを逸脱することなくフローチャートの作成をおこなうことができる。
【００９７】
また、フローチャート描画装置１００は、接続記号に対する所定の操作入力によって、あらたなフローチャート記号の挿入を指示することができる。これにより、あらたなフローチャート記号を挿入する位置を特定しやすくなり、より簡易な操作でフローチャートを描画することができる。また、フローチャート描画装置１００では、挿入するフローチャート記号の種類をあらかじめ指定することができる。これにより、フローチャートの描画を効率的におこなうことができる。このとき、一般的なフローチャートの作成に必要なフローチャート記号のみを選択可能としているので、選択操作のインターフェースを簡素化することができる。
【００９８】
また、フローチャート描画装置１００は、フローチャートの構造をフローチャート記号の入れ子構造として捉え、入れ子構造の内側にあるフローチャート記号から順番に大きさを決定した後、入れ子構造の外側にあるフローチャート記号から順番に描画位置を決定する。これにより、フローチャート内のフローチャート記号の位置を適切に調整することができ、複雑なフローチャートであっても簡易な操作で描画することができる。
【００９９】
なお、本実施の形態で説明したフローチャート描画方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【０１００】
以上のように、本発明にかかるフローチャート描画装置、フローチャート描画方法およびフローチャート描画プログラムは、表示画面上においてフローチャートを描画、編集する場合に適しており、特に、コンピュータ装置などにおいてフローチャートを描画するフローチャート描画アプリケーションや各種図形を描画する画像描画ソフトウェア（ドローツール）への適用に適している。
【符号の説明】
【０１０１】
１００  フローチャート描画装置
２１０  表示部
２２０  入力部
２３０  描画部
２３１  解析部
２３２  大きさ決定部
２３３  矩形位置決定部
２３４  記号位置決定部
２５０  表示画面
【図１】
2011048477.tif 000003
【図２】
2011048477.tif 000004
【図３】
2011048477.tif 000005
【図４】
2011048477.tif 000006
【図５】
2011048477.tif 000007
【図６】
2011048477.tif 000008
【図７】
2011048477.tif 000009
【図８】
2011048477.tif 000010
【図９】
2011048477.tif 000011
【図１０】
2011048477.tif 000012
【図１１】
2011048477.tif 000013
【図１２】
2011048477.tif 000014
【図１３】
2011048477.tif 000015
【図１４】
2011048477.tif 000016
【図１５】
2011048477.tif 000017
【図１６】
2011048477.tif 000018
【図１７】
2011048477.tif 000019