• Imagix 4D ユーザガイド
  • 目次

フローチャート

フローチャートはソフトウェアの関数内に出現するシーケンス図、すなわちプログラム・ロジックを、ビジュアル化します。例えば、数百行のソースコードから成るような関数の場合には、これらのダイアグラムを利用することで、ルーチンの内部ロジックをより迅速に把握する際に、役立つことがあります。

フローチャート・ダイアグラムは、同時にある1つの関数の完全な内部ロジックを提示します。複数の関数で構成されるにもかかわらず内部ロジックが縮減する、さらに高度な抽象レベルである次の段階では、[シーケンス図] を使用します。

ディスプレイ / レイアウト

void WhileControl() {
    int pos = do_init();
    int ext = 1;
    while (pos != 1) {
        if (!pos) {
            if (ext != get_meter()) {
                ext = reset_valve(ext);
	    }
	}
	else if (check_pos(pos)) {
	    raise_valve(ext);
	}
	else {
	    lower_valve(ext);
	}
	pos = read_pos();
    }
    signal_done(pos);
}
通常、ダイアグラムではシンボルを使用して、関数内のあらゆる条件分岐(if 文や switch 文など)が表示されます。それ以外のシンボルは、コードのインライン・ブロックを示すために利用されるのです。また、実際のシーケンス図は、これらのシンボルを繋ぐ直線によって示されます。使用される特定のシンボルやダイアグラムに表示されるシンボルの配置を調整するは、レイアウト([表示] > [レイアウト])を選択してください。

レイアウトは、4種類のものが用意されています。プログラム・ロジックおよび関数の制御構造の異なる一面を表示するよう、各レイアウトは最適化されています。さらに [表示] メニューにある、その他のオプションを使用することで、ダイアグラムに表示される追加の詳細情報を操作することができます。

右記のソースコードを例に説明をします。

デフォルトのレイアウトは [ロジック] です。シーケンス図は、上から下に向かって表示されます。さらに、本レイアウトは、分岐構造を構成する制御文の細部を重視することよりも、むしろプログラム・ロジックの理解と追跡を目的に最適化されています。

所定のレイアウト内で、詳細情報の表示レベルを制御することができます。多くの場合、ダイアグラムに表示される菱型の条件分岐のシンボルには、その条件を判定するソースコードが記述されます。これに対して、表示内容を割愛し条件分岐文の名前のみ(if / else など)を表示する、別のレイアウト設定も用意されています。インライン・コードのブロックは長方形で表示され、その中には関数呼び出し(右記参照)やインライン・ソースコードの全文が記述されるか、もしくは空欄のままとなります。

一方で、制御構造は [構造] レイアウトで明確に表現されるのです。ロジックのフローは、前述のものと同様に上から下へ向かって表示されます。ただし、条件分岐は明示的に平行に展開され、それぞれの制御文の開始部には、対応する終了部が示されます。

[構造] レイアウトをレビューすることによって、ロジックのみならず、そのロジックの基盤となる if / for / while / switch の制御構造を理解することができるのです。

残り2つのレイアウトは、前述のものよりも小さく、簡素なシンボルを使用して、条件分岐やインラインコードを表現します。[簡易] レイアウト(右記の左側)は、条件分岐のパスに対する開始 / 終了部を含め、[構造] レイアウトを忠実に再現します。ただし、実際のソースコードに関する情報はすべて省略されるため、構造そのものを確認することに、全体的な焦点を置いていると言えます。

[シーケンス] レイアウト(右記の右側)は、条件分岐やコードのブロックが並行に描写されません。フローチャートの上から下に向かう描写は、ソースファイル内のコード行のシーケンスを再現しています。このレイアウトは制御ロジック内に存在する、特定のコード行の場所を把握するための有用な図解となります。

ダイアグラムの縮図

規模の大きい複雑な関数において、ダイアグラムで表現されるプログラム・ロジックには、その複雑性が反映されることがあるため、初期段階での理解が難しくなります。そのような場合には、シーケンス図の特定の部分を詳しく調べる前に、上位レベルの制御ループを確認する作業から着手することを推奨します。

フローチャートではこの作業を効果的に行うため、下位階層を非表示にする機能が搭載されています。この機能を使用するには右クリック・メニューを開き、非表示にする分岐ポイントの内部的なプログラム・ロジックを選択します。これにより適合する閉じる側の波括弧までの、あらゆる内部分岐が非表示となり、選択したレベルまでのシーケンス図を表すダイアグラムのみが表示されます。

ツールの連携

フローチャートを使用したコードの理解における真価は、Imagix 4D の他の機能を連携させることよって発揮される側面があるのです。

[ハイライト] メニューでは、シーケンス図内に存在する特定のアイテムの場所を確認することができます。主に、これらのアイテムはシンボルを示し、ハイライトされるオプションが数多く存在します。関数が呼び出されたり、変数が設定されたり、もしくは使用されたりする箇所であれば、場所を問わずに把握することが可能です。また、[グラフ] ウィンドウで選択することによって使用される特定の関数や変数が存在する位置も、場所を選ばず確認することができます。右記のダイアグラムは、[グラフ] ウィンドウで変数 "ext" を指定して作成されたものであり、その結果が黄色のハイライトで表示されています。

フローチャートは特に、Imagix 4D の [ファイルエディタ] に密接に関連付けられています。[ハイライト] メニューでは、[エディタの選択] および [エディタ検索] を利用することができます。例えば、各ユーザが使用しているファイルエディタで何かしらの文字列を検索し、関数のシーケンス図内でそれらの文字列が存在する場所を確認することが可能です。

フローチャートと [ファイルエディタ] は、コードのブラウジングに対しても連携して動作します。プログラム・ロジックとソースコードを並べて表示することで同時に特定の箇所へスクロールでき、片方に存在する対応箇所を即座に把握することが可能です。このように、複雑な関数における理解と確認を促進することができます。

ショートカット: フローチャートで、ダブルクリックまたは Shift キーを押下しながら左クリックをすることで、対応する箇所を [ファイルエディタ] 上に開いて表示することができます。ただし、インラインの長方形の中にリストされている関数をクリックすると例外が発生し、この場合 Imagix 4D は関数名 / シンボルをクリックしたときと同じような動作を取ります。

ショートカット: [ファイルエディタ] で関数定義の中を Ctrl キーを押下しなが左クリックすることで、対応する箇所をフローチャート上に開いて表示することができます。