こんにちは!
フリーランスエンジニアのかたやまです。
今回は、プログラミングの基本ルール「順次」のよくあるバグ(後編)を解説します。
前編はこちら
よくある順番抜け
順次処理では、順番が抜けている(処理が不足している)ことが原因でバグになっていることがよくあります。2つの例で見ていきましょう!
1.自動ドア

バグ
自動ドアが開かない
原因
原因を調査すると、自動ドアの順次処理が以下のように設定されていました。
- センサーが人を感知する
- センサーで人がいないことを確認する
- とびらを閉める
「とびらを開ける」という処理が無く、これでは自動ドアはいつまでたっても開きません。1の「センサーが人を感知する」のあとに、「とびらを開ける」という処理があるべきです。
原因とセットで見ると簡単なことに聞こえると思いますが、実際のプログラミングはバグの情報だけで原因を調査しなければなりません。次の例では、バグの情報を見て原因を想像してみてください。
2.洗濯機

バグ
洗濯終了の音が鳴ったので、洗濯機を服が濡れたまま
原因
原因を調査すると、自動扉の順次処理が以下のように設定されていました。
- スタートボタンが押されたらスタート
- 水を入れる
- 洗い
- すすぎ
- 終了の音で知らせる
この例では、「脱水」処理が不足しているため、洗濯物が濡れたままになってしまっています。このように処理が1つ不足しているだけで、うまく動作しないことは頻繁にあります。4の「すすぎ」のあとに、「脱水」という処理があるべきです。
まとめ
今回の「順次のよくあるバグを学ぼう」は以上です。前編、後編と分けて解説しましたが、いかがだったでしょうか?
実際のプログラミングは手順が何百~何万とあったり、分岐処理や反復処理が複雑に組み合わされたりすることがほとんどです。その場合でも「順番抜けがないかな?」と考えることができれば、問題解決に役立つと思います。
では、また次回!