フローチャート(フロー図)とは何か?

2020年6月13日

フローチャートの概要

フローチャートのイメージ図

フローチャート(Flowchart)とはアルゴリズムやプロセスを表現する図解する手法のことをいいます。
フローチャートではプロセスの各ステップを箱で表して、箱の間を線や矢印で示すことで、アルゴリズムやプロセスの順序を示します。
フロー図とも呼ばれるこの手法を使い、プログラムの開始から終了までをフローチャート化することで、俯瞰して処理の流れを把握し、プログラムのロジックを掴むことができます。
フローチャートはプログラミングの構造を考えるだけでなく、業務の流れや意思決定の枠組みとしても使われますが、このページではシステム開発で使用するアルゴリズムでの使用を中心に考えていきます。

フローチャートの必要性

プログラム構造の整理

プログラムは、書き方によって処理スピードや可読性が異なってきます。そのため、プログラミング前に最適な設計がされているのが望ましいです。
熟練のプログラマーであればフローチャートを用意しなくとも、プログラミングをする上で問題はないかもしれません。
しかし、経験の浅いプログラマーは処理の順番や書き方などの知識が少ないため、必要な処理が抜けていたり、処理の方法を誤ったり、同じことを何度も書いたりしてしまうことがあります。
こうしたことがないよう、テクニカルディレクターや先輩プログラマーがフローチャートを作成し、必要とされる機能を開発するためにどのようなプログラミングをしていくのかを整理しておくと、開発がしやすくなります。
あるいは訓練を兼ねて、経験の浅いプログラマーがフローチャートを書いて、上司や先輩に確認してもらうとよいでしょう。

開発速度の向上が図れる

フローチャートが作成され、プログラム構造が整理されると、さまざまな副次効果が得られます。
その1つに開発速度の向上が挙げられます。
先ほどもお話ししたように、新人プログラマーなど、経験の浅いプログラマーは、依頼されている機能を開発するために、どのようなコードを書けばよいのかがわからないことがあります。
そうなると、コードの書き方を調べたり、処理の手順を考えたりと、コードを書く時間に加え、考える時間が増えていってしまいます。
時間がある場合はこれも訓練の1つとして捉え、プログラミングの構造を考えることから依頼してもよいのかもしれません。しかし、開発期間が短いという場合は、フローチャートを用意することによってプログラマーが考える時間を削減していくことも大切です。
このように、フローチャートを作成すると、プログラマーが考える時間が減るため、開発の速度を上げることができます。

プログラムの処理速度の向上

フローチャートによりプログラムの構造が整理されれば、処理速度の向上も期待することができます。
正確に言えば、「処理速度の低下を防ぐことができる」という表現の方がよいのかもしれません。
どういうことかといえば、熟練のプログラマーが1行、2行のコードで終わるような処理を、経験の浅いプログラマーは2倍、3倍ものコードを書いて無理やり実現しようとするときがあります。
基本的にプログラムのコードが多くなれば、その分だけ処理にかかる時間というのは多くなってしまいます。
経験の浅いプログラマーのコードが多くなってしまうことには様々な原因がありますが、効率的な処理の仕方のアイデアをもっていないということが一因として挙げられます。
そんなプログラマーと、フローチャートを使ってどのような処理を行うのかをあらかじめ相談しておくと、プログラムが洗練され、不要なコードの記述を防ぎ、ひいてはプログラムの処理速度の向上につなげることができます。

システムの品質・保守性の向上

フローチャートを作成し、プログラムの全体像が明確になると、プログラムの品質や保守性の向上にもつなげることができます。
例えば、プログラムのスタートからゴールまでの流れをプロジェクトメンバーで共有すると、処理の誤りが発見されるでしょうし、先ほどお話ししたように、不要な処理の指摘もが入ることもあります。実際にコードを書いた後にこのような指摘を受けても、修正が難しくなり、部分的に行った修正が他のバグを生み出してしまうこともあります。
そのため、実際にコードを書く前にフローチャートを作成し、周囲と共有することで最終的なシステムの品質を上げることができるでしょう。
また、プログラムの構造が書かれたフローチャートが残されていれば、後からシステムの改修をするという場合でも、どの部分に手を加えればよいのかが容易に見当がつくため、システムの保守性を挙げることも可能です。

フローチャートの記号

フローチャートは記号を組み合わせ記載していきます。
フローチャートで使用する記号の種類はそこまで多くはなく、よく使うものも限られています。
ここからは絶対に知っておきたいフローチャート記号をご紹介していきますので、これらを押さえた上で作成に取り掛かりましょう。

 

フローチャートの記号を説明する参考画像
フローチャートの参考画像1

フローライン

フローラインは処理の流れを線で表したものです。
ただの線で書く時もありますが、処理の流れを分かりやすくするために矢印で書くこともあります。

ターミナル

ターミナルはプロセスの開始と終了に設置する楕円形の記号です。
単に「開始」「終了」と書く場合も多いですが、「ボタンを押す」「画面を閉じる」など、実際の処理の開始と終わりの内容を記述することもあります。

プロセス

プロセスは一連の処理の内容を記述した長方形の記号です。

ディシジョン

ディシジョンは条件分岐で使われるひし形の記号です。
詳しくは後ほどの「分岐構造」の箇所でお話ししていきます。

フローチャートの型

フローチャートは記号を使って処理の流れを表していきます。
フローチャートの型もそこまで種類は多くないので、基本をここで押さえておきましょう。

 

フローチャートの型を説明する参考画像
フローチャートの参考画像2

1.順次構造

順次構造とは、上から順番に処理を記述する構造です。
上から下に流れるシンプルな処理を示すもので、処理の順番を組み立てる際に活用されます。

2.分岐構造

分岐構造とは、条件により処理の流れが分かれる構造です。ディシジョンの記号を使い、条件に該当する方向へと分岐していきます。
分岐条件は「正しい(True)/誤り(False)」といういわゆる「はい/いいえ」の二択を問うだけのものもありますが、「入力金額が1,000円未満だったら」「参加者が10人以上だったら」というような分岐も可能です。
分岐構造を使う場合は、分岐の漏れに注意しなければなりません。
例えば、売上をxという変数で表し、「x < 1000」「x > 1000」という分岐構造つくったとします。この場合、売上が1,000という数値であると、どちらにも該当せずにエラーがでてしまいます。
このように、分岐の漏れはそのままエラーにつながるため、分岐の漏れがないかを確認するとともに、どの分岐にも該当しない場合の処理を用意しておくとよいでしょう。

3.ループ

ループは処理を繰り返し行う際に使われます。条件を満たした場合にループから抜け出せるものと、条件を満たしている間はループし続けるものがあります。
例えば「ドラゴンクエスト」などのRPGで村人が「どうにか助けてくれませんか?」という質問をし、「はい/いいえ」の選択肢がでることがあります。ここで「はい」を選択しなければ「そんなことは言わずにお願いします」などといわれて、もとの選択肢に戻されることがありますが、こうした処理がループです。
また、ループでは正しく条件を設定しなければ、いわゆる「無限ループ」と呼ばれる処理エラーになることがあるので注意が必要です。

フローチャートの作成ツール

フローチャートが作成できるツールはさまざまあります。
例えばMicrosoft社のExcelやPowerPointには、あらかじめフローチャートを作成することを想定した図が用意されています。
また、図が作れればいいだけであるため、Adobe社のPhotoshopやIllustrator、極端なことを言えばパソコンにはじめから入っているお絵かきツールでも作成することはできます。
また、フローチャートの作成を想定したツールも数多く存在し、これらのツールを使えばフローチャート作成の手間を大幅に削減することができます。
近頃のツールは、簡単に作成できるだけではなく、チームメンバーとシェアすることもできます。
ここからはフローチャート作成で使えるWebサービスをいくつか紹介していきます。

Lucidchart

Lucidchartは、プロジェクト管理や開発管理などのフローチャート図などの豊富なテンプレートが用意されているので、簡単に専門的なフローチャートを作成することができます。記号や図形をドラッグ&ドロップしてエディター内に追加していくだけなので、抵抗なくツールを操作することができるはずです。
また、チームメンバーとシェアすることができて、複数のメンバーで同時作業することも可能です。コメント機能を活用すれば、より効率的にフローチャートを改善していくことができます。180ヵ国に1,500万人をこえるユーザーがおり、Googleやamazon、Adobeなどの有名企業も活用しているフローチャート作成ツールです。

Miro

Miroは、オンライン上にホワイトボードを実装したサービスです。図形を自由に書き込み、複数人で共同作業することができます。図形の移動や文字の追加などの作業がリアルタイムに反映されるため、同じ空間にいなくても、スムーズなディスカッションが行えます。
コロナウイルスの影響で在宅勤務を行う人が増えましたが、オンライン会議時に威力を発揮するツールです。NETFLIX社やTwitter社など500万社が導入しています。

フローチャート作成のコツ

1.丁寧に処理の洗い出しを行う

フローチャート作成のコツは、丁寧に処理の洗い出しを行うことです。
例えば、「売上を自動で計算する機能」を開発するという場合、「何をすればその機能が動き始めるのか?」、「システムはどのような処理を行うのか?」「どうなったら機能の処理は終了するのか?」をリストアップしていくとよいでしょう。

2.言葉の定義を正確に行う

処理の洗い出しと並行し、あいまいな言葉があれば、言葉の定義をしていく必要があります。
人間の会話の中では、主語が無かったり、あいまいな定義の言葉でも、なんとなくニュアンスで伝わることがあります。
しかし、システムに主語のない指示や、あいまいな表現は伝わりません
例えば「データを入れる」というような処理があったとしても、「何のデータなのか?」「入れるとはどこに何をすることなのか?」を詳しくつめていかなければ、いざ開発する際に何をすればよいのかわからないフローチャートになってしまいます。

3.基本の型のみで作成する

フローチャートの作成は、若手エンジニアの仕事になることが多いです。
フローチャートの書き方が良く分からないという方は、まずは「フローチャートの型」で紹介した基本の型だけを使用し、フローチャートを作成していくことをおススメします。
なれない内に特殊な型をつかうのではなく、順次構造・分岐構造・ループという3種だけで作成することをおススメします。

3.過去の資料を参考にしながら作成する

フローチャートの作成で一番のお手本になるのは、過去に先輩が作成したフローチャートです。
なれない内は過去の資料を参考にし、可能であればその作者に質問しながら、フローチャートの作成スキルを身に着けていくとよいでしょう。

フローチャートを学ぶためにおすすめの本

フローチャートの作成や読み方を解説する本はありますが、まったくの初学者であれば『教養としてのプログラミング的思考』 をおすすめしています。
同書はクイズ形式でプログラムの処理を学べるため、「そもそもプログラミングって何だ?」という方にもおすすめです。