疑似コードでフローチャート
処理の流れを if や while の入れ子のまま文章で書くと、フローチャートを自動で描きます。図形をドラッグして並べる作業も、線を引き直す作業もありません。条件や処理の中身は日本語の自由文でよいので、設計レビューや業務フローの説明にそのまま使えます。
書いたものと、出てくる図
// 「牛乳を買ってきて。卵があったら6個お願い」
// と言われたプログラマーの処理
店に着く;
if (卵がある) {
for (6回くりかえす) {
牛乳をかごに入れる;
}
} else {
牛乳を1本かごに入れる;
}
if (レジに並んでいる人が
3人以上) {
「また来ればいいか」;
return;
}
会計する;
帰宅する;
「なんで牛乳が6本あるの?」;上の図はこのページを開いたときに、左の疑似コードから生成しています(画像を貼っているのではありません)。文の途中の改行は、書き手が意図した折り返しとしてノードの中でも保たれます。
特徴
- 構造をそのまま書く — Mermaid や PlantUML のようにノードに名前を付けて矢印を並べる必要はありません。
ifの入れ子を分解するのはこちらの仕事です。 - 日本語の自由文でよい — 記号・かぎ括弧・連番を含む文をそのまま書けます。長い文は途中で改行すれば、その位置でノード内も改行します。
- 回数制限もアカウント登録もありません — すべて端末内(ブラウザ)で処理し、書いた内容を外部へ送信しません。
- 持ち出せる — 図は SVG と PNG でダウンロードでき、Mermaid / PlantUML のテキストとしてもコピーできます。書いた疑似コードは
.txtで保存・読み込みできます。 - 例からはじめられる — 作業画面の「例」から、ログインの認証・月末の請求処理・CSV の取り込み・在庫の引き当てといった見本を読み込んで、書き換えながら試せます。
- 図から書いた場所へ戻れる — 図のノードをクリックすると、対応する行にカーソルが移動します。
- 記号は JIS X 0121 に沿う — 端子(角丸)・処理(長方形)・判断(ひし形)・定義済み処理(両側が二重線)の 4 種類だけを使います。
記法
キーワードは英語(if や while)で、その中身に書く文が日本語です。文の区切りは ;、ブロックの区切りは { } で、インデントは図に影響しません(見やすさのためだけに付けてかまいません)。
| 書き方 | 図 | 説明 |
|---|---|---|
処理の内容; | 長方形(処理) | 中身は日本語の自由文。手数料(税込)を計算; のように括弧を含めてもかまいません。 |
if (条件) { } else { } | ひし形(判断) | Yes 側が真下、No 側が右に並びます。else if をつなげて書けます。else は省略できます。 |
while (条件) { } | ひし形+帰還線 | 前判定のループ。左を回り込む線で先頭に戻ります。 |
do { } while (条件); | ひし形+帰還線 | 後判定のループ。本体を必ず 1 回通ります。 |
for (全ての座席) { } | ひし形+帰還線 | 括弧の中は自由文です。i=0; i<n; i++ のような書式は要りません。 |
switch (区分) { case 一般: … } | ひし形+多分岐 | case のラベルも自由文。default: は「その他」の枝になります。default を書かないときは、どれにも当たらない経路を自動で足します。 |
break; / continue; | 外側を回る線 | 最も内側のループを抜ける/先頭へ戻る。break は switch の中でも使えます。 |
return; | 角丸(終了の端子) | その場に「終了」を置きます。長い線を引き回さないので、深い入れ子から抜けても図が読めます。 |
名前() { } | 別の図 | 関数の定義。名前(); と書いた箇所が定義済み処理の記号になり、中身は続けて別の図として描かれます。 |
// メモ | (図に出ません) | コメント。行頭に書いたときだけコメントになります(https://example.com/ のような URL が消えないようにするため)。 |
区切り文字を文の中に書きたいとき
「…」と"…"の内側では;{}():が区切りになりません。改行をまたいでもかまいません。\;\{\}\/と書くと、その文字そのものになります(\は図に出ません)。- 処理の文に含まれる括弧はそのまま書けます。エスケープが必要なのは
;{}だけです。
書きかけでも図が消えません
if ( まで打った状態のように文法として不完全なときも、解析できたところまで図を描き、足りないものを 1 件だけ知らせます。入力のたびに図が消えることはありません。