まず「すべての記号を使おうとしない」ということだ。フローチャートにはJIS規格(JIS X 0121:1986 情報処理用流れ図・プログラム網図・システム資源図記号)があるが,同氏は「JISの規格は具象化されすぎている」と指摘する。

図1●フローチャートで使う記号

 使う記号は,「開始」と「終了」を示す記号(端子),長方形の「処理」(図1上),ひし形の「分岐」(図1中),左辺と右辺が2重線になった長方形で表す「定義済み処理(モジュール)」(図1下),それに「矢印」に限定する。要するに,処理と分岐とモジュールの三つの記号だけで徹底的に描くということだ。「最小限の道具を完璧に使いこなすことが重要」だと同氏は語る。

分岐は白黒はっきりさせる

 構造化プログラミングの基本は「連接」「分岐」「繰り返し」の三つの構造である。これらはいずれも分岐が関係している。羽生氏によると,連接は「無分岐」という意味で分岐の一種ととらえることができるという。また,繰り返しは分岐を使って描ける(図2)。「繰り返し記号は要らない」(同氏)。

図2●繰り返しは分岐で描く

 分岐で羽生氏が重要性を強調するのが,「必ず2分岐にする」ということだ。「三つに分かれるのは許せない。そういうのは市中引き回しの刑」と同氏は冗談交じりに話す。3分岐なら必ず2分岐に分解する必要がある。

 なぜなら,分岐は論理であり集合だからだ。「世界をはっきり二つに分ける」「どこに論理の境目があるかを意識する」ことが重要だ。「いったんギョウザを注文すると決めたらギョウザ」(羽生氏)なのである。ソースコードはあいまいさを許さない。境界があいまいなのはトラブルの元になる。「きちんと分岐に向き合うと,道具が(フローチャートから)変わっても本質が見えるようになる」と同氏は言う。

処理をモジュール化してまとめる

 分岐に加えて,定義済み処理を利用したモジュール化も重要だ。「モジュールでうまくまとめる癖がないとフローチャートはきれいに書けない」と羽生氏は語る。一つのフローチャートにすべての処理をだらだらと記述するのではなく,「はじめの処理」「メインの処理」「おわりの処理」の三つのモジュールにまとめる(図3)。モジュールの中は,さらに三つのモジュールで構成するように割っていく。これを繰り返していき,最終的に,三つ以下あるいは四つ程度の処理(定義済みではない処理)になるまで分解する。

図3●モジュールを使って全体を階層化していく

 三つの処理で気を付けなくてはならないのは,真ん中の「メイン」の処理は一番最後に考えるようにすること。人間は大事な処理は忘れないからだ。まずは忘れがちな周辺支援(「はじめ」と「おわり」)から手を付けることが重要だと羽生氏は指摘する。

 羽生氏は講演を「抽象化能力を極限まで高めるにはフローチャート程度がちょうどいい」と締めくくった。「最近,抽象化能力が鈍ってきたな」と感じたら,フローチャートを使って研ぎ直してみるのも悪くないかもしれない。少なくとも私はこの記事を書いていてフローチャートが描きたくなった。