NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

注目のタグ

    勝負の神様と分岐処理のおはなし

    本記事は NRIネットコム Advent Calendar 2022 4日目の記事です。
    🎁 3日目 ▶▶本記事 ▶▶ 5日目 🎄

    はじめに

    はじめまして。NRIネットコム ITSデザイン事業部 マネージャーの山本です。

    カラオケとサッカーが好きで、Jリーグの川崎フロンターレを応援しています。
    フロンターレからは、谷口選手と山根選手がW杯サッカー日本代表に選ばれています。

    それにしても、スペイン戦での2人の活躍は素晴らしかったですね。

    サイドバックの山根選手がするするとゴール前に侵入し、強烈なボレーシュートで先制ゴール!
    そしてイケメン谷口選手はさわやかかつ鉄壁のディフェンスでスペインの攻撃をシャットアウト!
    決勝トーナメントでの活躍も楽しみです!!

    ※この記事はスペイン戦の前に書いています

    さて今回は、若手のシステムエンジニアや、これからシステムエンジニアを目指す方向けに、1つの分岐処理を例にお話します。

    本題

    とあるお客様から下記の要件が提示され、システム開発を依頼されたとします。

    ◆要件

    • 車の自動運転システムにおいて、走っている車が信号を見て進むか止まるか判断する処理を実装して欲しい

    • 事故を起こさないように安全性を考慮して欲しい


    ◇信号の仕様

    • 表示は、赤と青の2パターンとする

    • 色の意味は、赤:止まれ、青:進んでも良い


    上記要件を実現するために、あなたなら下記2パターンのどちらの分岐処理(IF文)で実装しますか?
    ※他のパターンも考えられますが、本題からそれるのでこの2択に限定します

    ●パターン①
    if 信号 = then
     止まる
    else
     進む
    end if


    ●パターン②
    if 信号 = then
     進む
    else
     止まる
    end if


    2パターンとも、赤は止まる、青は進むことになるので、一見するとどちらも問題ないように見えます。

    では、下記の場合はどうでしょうか?

    「信号機が故障して、赤でも青でもなく黒色が表示されるケース」

    いやいや、そんなん要件に書いてませんやん!
    と思う気持ちをぐっと抑えて、下記について考えてみてください。

    • 外部システムのイレギュラーケースを想定できているか?
      ※車から見ると、信号は外部システムに該当します。外部システムが常に想定通りに動いてくれるとは限りません

    • 要件にある「安全性」を考慮できているか?


    具体的にそれぞれのパターンの処理を見てみましょう。

    パターン①の場合、信号が黒だとelse分岐に入るので、車は進んでしまい事故になる可能性があります。

    一方、パターン②もelse分岐に入りますが、こちらの場合は車は止まります。
    イレギュラー発生時の安全性が考慮されていますね。

    ということで、パターン②で実装した方がよさそうです。

    おわりに

    元サッカー日本代表監督の岡田武さんは

    勝負の神様は細部に宿る


    と仰っています。

    小さなこと、細かいことをおろそかにしてしまうことで、大きな目標を逃してしまうことがある。
    だからこそ細かいこと一つ一つにこだわって物事に取り組むことが大切である。

    とのこと。

    システム開発も同じで、たった1つの分岐処理でもしっかり考えて設計・実装しないと、大きなシステム障害を引き起こす可能性がありますよ。

    というお話でした。

    おわり。

    執筆者 : 山本健太郎

    カラオケと川崎フロンターレとマンガが好き