自動販売機のフローチャートで学ぶアルゴリズムの基礎!書き方から応用(スイムレーン)まで徹底解説

プログラミングの授業や新入社員研修で、必ずと言っていいほど課題に出されるのが「自動販売機のプログラム」です。なぜこれほどまでに自動販売機が題材として選ばれるのでしょうか?
それは、自動販売機が「入力・処理・判断・出力」というシステムに必要な基本要素をすべて備えているからです。
入力: お金を入れる、ボタンを押す
判断: 金額は足りているか? 在庫はあるか?
処理: ジュースを出す、お釣りを計算する
出力: ジュースとお釣りを取り出し口に出す
一見シンプルに見えるこの動作ですが、フローチャートに落とし込もうとすると、「小銭がないときはどうする?」「ボタンを押さずに返却レバーを引いたら?」といった例外処理(イレギュラーな動き)を考える必要が出てきます。
この記事では、自動販売機を題材に、論理的思考力を鍛えるフローチャートの書き方を、基本から応用までステップバイステップで解説します。
この記事の内容(目次)
STEP1:まずは基本の「正常系」フローを書こう
最初からすべての機能を盛り込むと図が複雑になりすぎてしまいます。まずは、トラブルや例外がない最もシンプルな流れ(正常系)から書き始めましょう。
想定するシナリオは以下の通りです。
お金を入れる
商品ボタンを押す
商品が出る
フローチャートの基本記号をおさらい
実際に図を描く前に、使う記号を確認しておきましょう。
端子(角丸四角形): 開始と終了

処理(長方形): お金の投入や商品の排出など

判断(ひし形): 条件分岐(Yes/No)

詳しくは、こちらのフローチャートの記号の種類の記事でも解説していますので、自信がない方は併せてご覧ください。
シンプルな図解例
これをつなげると、直線的なシンプルな図が出来上がります。
.png&w=3840&q=75)
まずはこの流れをxGrapherなどのツールを使ってササッと描いてみましょう。これがすべてのベースになります。
STEP2:条件分岐(判断)を加えてリアルにしよう
現実の自動販売機は、お金を入れただけでは動きません。「投入金額が商品価格以上か?」というチェックを機械内部で行っています。ここで登場するのが「判断(ひし形)」の記号です。
金額不足のループ処理
もし投入金額が足りない場合、商品は出ません。「お金を追加する」というアクションに戻る必要があります。これをフローチャートでは矢印を前に戻すことで表現します(ループ処理)。
お金を入れる
【判断】投入金額 ≧ 商品価格 ?
No(足りない) → 1に戻る
Yes(足りている) → 次へ進む
商品ボタンを押す
商品が出る
.png&w=3840&q=75)
このように条件分岐を加えることで、図が一気に「プログラムの設計図」らしくなってきます。
STEP3:応用編「お釣り」と「在庫切れ」を考慮する
さらに解像度を上げていきましょう。より完璧な自動販売機のロジックを作るには、「お釣り」と「在庫」の概念が欠かせません。
考えるべきシナリオ
在庫チェック: お金が足りていても、売り切れなら商品は出せない。

お釣り計算: 商品を出した後、投入金額から価格を引き、残金があれば返却する。

返却レバー: 途中でやめたくなった場合、全額返金する。

これらを盛り込むと、フローチャートは以下のような形になります。
.png&w=3840&q=75)
ここまで書ければ、基本的なアルゴリズムの理解はバッチリです。分岐が増えて図が見にくくなる場合は、フローチャートの色分け術を参考に、処理の種類ごとに色を変えると視認性が劇的に向上します。
視点を変える:「スイムレーン図」でユーザーと機械を分ける
ここまで作成したのは、あくまで「処理の流れ」を中心とした図でした。しかし、システム開発の現場では「誰が(何が)その動作を行うのか」を明確にすることが重要です。
そこで役立つのが「スイムレーン(レーン図)」です。
スイムレーンを使うと、「ユーザー(利用者)」と「自動販売機(システム)」の役割分担を一目で理解できます。
スイムレーンの構成
左側のレーン: ユーザー(お金を入れる、ボタンを押す、取り出す)
右側のレーン: 自動販売機(金額を判定する、ランプを点灯させる、商品を搬出する)

このようにレーンをまたいで矢印が行き来することで、「ユーザーのアクションに対してシステムがどう応答するか」という相互作用(インタラクション)が明確になります。
より詳しい書き方は、スイムレーン図の解説をご覧ください。
きれいなフローチャートを簡単に作成するには?
自動販売機のような分岐の多いフローチャートを手書きやExcelで作成しようとすると、矢印の調整や配置換えだけで時間がかかってしまいがちです。
思考を整理するためには、直感的に操作できる専用ツールを使うのが近道です。
オンライン作図ツールのxGrapherなら、インストール不要ですぐにフローチャート作成を始められます。

ドラッグ&ドロップで記号を配置し、自動整列機能を使えば、今回解説したような図があっという間に完成します。作成した図は画像として保存できるので、レポートやプレゼン資料にもそのまま使えます。
まとめ
自動販売機のフローチャートは、プログラミング的思考を養うための最高の教材です。
まずは正常系(基本の流れ)を書く
判断(ひし形)を入れて条件分岐を作る
例外(在庫切れやお釣り)を盛り込んで完成度を高める
スイムレーンで役割分担を明確にする
このステップで作成していけば、どんな複雑なシステムでも怖くありません。まずは身近な自動販売機の動きを思い出しながら、実際に手を動かして図を描いてみてください。
フローチャートの基本を体系的に学びたい方は、フローチャートの基本やフローチャートの種類の記事も参考にしてみてください。

よくある質問(Q&A)
Q1. フローチャートを書くときは手書きでも良いですか?
A1. もちろん、思考の整理段階では手書きでも構いません。しかし、修正が発生した際や、チームで共有したりレポートに提出したりする場合は、デジタルツールで作成することをおすすめします。xGrapherのようなツールを使えば、後からの修正も簡単で、見た目も美しく仕上がります。
Q2. 「判断」の記号から出る矢印にルールはありますか?
A2. はい、あります。ひし形の記号からは必ず「Yes(真)」と「No(偽)」の2つの矢印が出るのが基本です。どちらに進むのか条件を矢印の近くに明記しておくと、誰が見ても分かりやすい図になります。
Q3. 自動販売機以外でおすすめの練習題材はありますか?
A3. 他にも「駅の自動改札機(残高不足なら閉まる)」や「ATM(暗証番号の照合)」、「信号機(時間経過で色が変わる)」などがおすすめです。どれも身近な例で「入力→判断→処理」の流れが明確なので、フローチャートの練習に適しています。
Q4. 作成したフローチャートが複雑になりすぎて見づらいです。
A4. 処理が複雑すぎる場合は、1枚の図にすべてを詰め込まず、「サブルーチン(定義済み処理)」を使って別の図に切り出すのが有効です。また、色分けを行ったり、コメントを追記したりして視認性を高める工夫をしましょう。
Q5. 状態遷移図(ステートマシン図)との違いは何ですか?
A5. フローチャートは「処理の流れ(手順)」に注目した図であるのに対し、状態遷移図は「システムの状態(待機中、販売中、釣銭返却中など)の変化」に注目した図です。自動販売機の設計ではどちらも使われますが、初心者がロジック(アルゴリズム)を学ぶには、まずは手順を追うフローチャートから入るのが分かりやすいでしょう。
&w=3840&q=75)
&w=3840&q=75)
&w=3840&q=75)
&w=3840&q=75)
&w=3840&q=75)
&w=3840&q=75)
&w=3840&q=75)
&w=3840&q=75)
&w=3840&q=75)
&w=3840&q=75)
&w=3840&q=75)