1980年代、NECは自社のメインフレームやミニコン向けの開発支援環境を展開していましたが、その設計フェーズを支える中核図法として使われていたのがSPD(Structured Programming Diagram、構造化プログラム設計図)です。
SPDは、当初から罫線文字(├ └ ─ │ )や記号(◇ ↻)を使って、テキストとして書ける図法でしたが、それを生かすにはNEC製の専用ツールが必要でした。そのため、SPDの知識があってもツールが使えない場合は、手書きするしかありませんでした(P.〇参照)。
SPDは社内向けの技術だったので、やがて業界のトレンドがオブジェクト指向とUML(Unified Modeling Language)へと移っていく中で、あまり知られないままフェードアウトしていきました。
著者はプログラミング教育のために長い間SPDを利用しています。アルゴリズムを考えるツールとしてとても有効なので、(もっぱら紙に手書きする方法で)教えてきました。SPDを使うと大枠から徐々に詳細化していく段階的詳細化の手法が自然に身に付くからです。
しかし、ユニコード文字の普及とAIエージェントの急速な発達により、事情は一変しました。SPDを書くと、AIエージェントに依頼して、そのままソースコードに変換できるようになったからです。
SPDは、プログラムの処理をわかりやすいことばで系統的に表記したものです。処理の構造を示すために分岐や反復の記号を使って、ツリー状にまとめます。
最初に処理の骨格を考え、内容を徐々に詳細化していく、段階的詳細化の考え方を、図の中に自然に表現できます。アルゴリズムを考える力を養成する目的にも、とても効果的な図法です。
SPDの特徴
簡単なSPDの例
SPDは、罫線、記号、文字の組み合わせなので、エディタやワープロでも作成できますが、SPDエディタを使うと、もっと軽快に作成できます。また、修正や再利用も簡単です。
SPDエディタ (https://k-webs.jp/spd/spd-editor.html)
SPDエディタは、HTML + CSS + JavaScriptによる単一のHTMLファイルです。上記のURLを開くだけで使えます。著者のGitHub(https://github.com/kawaba/spd-editor)からソースをダウンロードするとローカルでも起動できます。誰でも無償で使用できます。
使い方は、「5. SPDエディタの使い方」を見てください。
フォントのインストールについて
SPDエディタは、等幅フォントで、全角スペースを□で表示しないPlemolJP HSフォントを優先フォントとしています。OS固有のフォントでも使用できますが、このフォントをインストールするとより快適に使えます。次のURLからダウンロードできます。
https://github.com/yuru7/PlemolJP/releases/tag/v3.0.0
URLを開いて、PlemolJP_HS_v3.〇.〇.zipをダウンロードし展開します。いくつかのフォントセットが含まれていますが、"35"や"console"などの接尾辞が付かないフォルダを開き、PlemolJPHS-Regular.ttfとPlemolJPHS-Bold.ttfの2つをインストールしてください。
(1) 基本構造
タイトルを書いて、具体的な処理を上から下へ順に、罫線でつないだものが基本のSPDです。プログラムの知識が無い人でもわかるような、平易なことばで書きます。
(2) 選択構造
◇ は条件判断の記号です。if文やmatch文で使います。"◇─条件" のように書き、条件から└─ の罫線を引いて実行する内容を書きます。また、"それ以外"は、"└─else"です。
※は、SPDではコメントです。※から行末までがコメントになります。
多重の選択構造は◇─ を縦に並べます。
(3) 反復(繰り返し)構造
↻ は繰り返しの記号です。for文は "↻─for:反復範囲"、while文は"↻─while:条件"のように使います。反復実行する内容は、↻記号の下に└─を引いて書きます。
"n ← numbers"は、「取り出す要素がある間、numbersから毎回1つずつ要素を取り出して変数nに代入する」をコンパクトに表現する書き方です。JavaでもPythonでも同じ書き方ができます。
繰り返し処理の内容が複数ある場合は、├─ を使って複数の枝を作ります。次の例はwhile文の例です。
(4) 段階的詳細化
まず、処理の骨格(部分的な処理のタイトル)を先に決めて、全体を完成し、詳細は後から考えます。
次に、詳細を書き足して完成します。このような書き方を段階的詳細化といいます。部分ごとに詳細化すればよいので、手順を考えやすくなります。
★SPDエディタでは、段階的詳細化をしやすいように、後から行を挿入したり削除したりが簡単にできるようになっています。行の挿入、削除に応じて縦罫線が自動補完されます。
SPDが横に広がりすぎた場合は、枝を折り曲げるとコンパクトになります。
(5) 書き方のTips
最初に骨格(部分的な処理のタイトル)を作ると、処理の手順を作成しやすくなります。また、処理内容もわかりやすくなります。
★具体的な書式文字列などを書くのは避けます。細かな文法要素はAIが生成します。
データ操作をことばで書いておき、└─ を引いて詳細説明として代入操作を書きます。
(注)=の代わりに←を使うと、JavaでもPythonでも同じ表現で済みます。
★この他の書き方については、書籍「わかりやすいPython」(2026.9 秀和システム新社)をご覧ください。Javaについても順次書籍化する予定です。また、SPDエディタで💡ボタンを押すと、すべての書き方のパターンと生成されるソースコードを対比して見ることができます。
(注)SPDエディタは将来のバージョンアップにより仕様が変更される場合があります。
(1) セルポインタ
エディタ上の□をセルポインタといいます。
文字入力中でなければ、
(2) 文字と罫線の入力
(3) 文字の削除と消去(文字入力モードでない時)
(4) ツールバー
1段目にはSPD記号を入力するボタンがあります。2段目には罫線入力ボタン、代入(←)、型ヒント記号(->)、その他の機能ボタンがあります。右端の保存、開くのボタンは作成したSPDデータの保存と読み込みです。
★言語選択のラジオボタンを押すと各言語用に表示されるボタンが変わります。
機能ボタンの機能
| 機能ボタン | 機 能 |
|---|---|
| ↩ | 元に戻す |
| ↪ | やり直し |
| 行+ | セルポインタがある行の上に、必要な罫線を補完して1行挿入する |
| 行ー | セルポインタがある行を削除する |
| コピー | 選択した範囲をコピーする |
| 貼付け | コピーした内容をセルポインタのある位置に貼り付ける |
| 削除 | 文字削除、連続して押すと複数文字を削除できる |
| 挿入 | 文字挿入、連続して押すと複数の空白文字を挿入できる |
| 全消去 | 画面全体をクリアする |
| Export | SPD全体をクリップボードにコピーする |
| Import | クリップボードにあるSPDを取り込む |
| Shift + Export | 選択範囲をクリップボードにコピーする |
| Shift + Import | 現在のセル位置にSPDを取り込む |
| 保存 | SPDをJSON形式でファイルに保存する |
| 開く | SPDをJSON形式のファイルから読み込む |
(5) 範囲選択とコピー、移動・消去
(6) VS Codeなどのエディタとのやり取り
(7) ファイルに保存・ファイルから読み出す