実は先日、運転免許の更新講習を受けてきました。
そこで改めて聞いた話が、意外と強く印象に残っています。

「事故が多いのは、見通しのいい交差点です」

見通しの悪い交差点ならわかるけど、「見通しのいい交差点で?え、そこ?」と少し意外に感じました。
話を聞いているうちに、「あ〜確かに、なるほど〜」と感じました。
またこの話を聞いて、これは車の運転だけの話じゃないなと思ったのです。

❌ 【イラスト右】ショートカット気味の右折

見通しがいい交差点ほど、ついやってしまいがちなのが
ショートカット気味に右折してしまう走行です。

  • 早く曲がろうとする
  • 交差点の中央を省略する
  • ハンドルを早めに切る

この走り方をすると、車のフロントピラーが進行方向と重なり、
自転車や歩行者が死角に入りやすくなります

しかも、

  • 見通しがいい
  • 危険がなさそう
  • スピードも出やすい

という条件が重なるため、「見えないこと」に気づかないまま右折してしまうのです。

⭕️ 【イラスト左】円弧を描くように、遠回りして右折

一方で、講習で推奨されていたのが円弧を描くように、少し遠回りする右折です。

  • 交差点の中央までしっかり進む
  • 角度をつけてゆっくり曲がる
  • 徐行を保ったまま右折する

この走り方をすると、

  • 視線が安定する
  • ピラーの死角が動く
  • 隠れていた自転車や歩行者が視界に入る

という効果があります。

結果として、「見えていなかった存在」に気づく時間が生まれるのです。
講習で聞いたこの話は、とても当たり前のようでいて、普段の運転では忘れがちなことだと感じました。

ここまで運転中の右折時の話を書いてきましたが、講習を受けて、僕はこんなことも考えました。

これ、プログラミングでもまったく同じ場面がある!

ショートカット気味の右折 = if文の条件漏れ

右折をショートカット気味にすると、

  • 早く終わらせたい
  • 大丈夫そうに見える
  • これ以上確認しなくてもいい気がする

という心理が働きます。

プログラミングでいうと、これはまさにif文の条件を省略してしまう状態です。

if (age >= 18) {
  // OK
}

一見、問題なさそうに見えます。
見通しもいいし、シンプルです。

でも実際には、

  • age が数値じゃなかったら?
  • null や undefined だったら?
  • 想定外の値が来たら?

というケースが、ピラーの死角として残っています。

「たぶん来ないだろう」が一番危険

ショートカット思考の怖さは、

来ない前提でコードを書いてしまう

ことです。

  • この値は必ず入ってくる
  • この関数はこの順番で呼ばれる
  • ユーザーは変な操作をしない

どれも、見通しのいい交差点で
「たぶん大丈夫」と思う感覚とそっくりです。

そして事故(バグ)は、その「たぶん」の隙間から入り込んできます。

円弧を描く右折 = 安全設計のコード

一方、円弧を描くように右折するのは、

  • 少し遠回り
  • 少し遅い
  • 一見、無駄に見える

行動でした。

プログラミングでいうなら、
条件を丁寧に積み重ねる安全設計です。
(以下のコードは、JavaScript および TypeScriptで使われる書き方です)

if (typeof age !== 'number') return;
if (age < 0) return;

if (age >= 18) {
  // OK
}

処理は増えました。
正直、書くのも少し面倒です。

でもその分、

  • 想定外が入り込む余地が減る
  • バグが起きる範囲が限定される
  • 「見えなかったケース」が見える

ようになります。

もちろん、すべてを細かく書けばいいわけではありません。
省略した書き方でシンプルに表現するのは、決して悪いことではありません。

ただし、

  • 前提条件がコードから読み取れない
  • 条件を省きすぎて意図が伝わらない
  • 読んだ人が「察する」必要がある

ような書き方は、結果として不親切なコードになってしまいます。

大切なのは、

「短さ」より「伝わりやすさ」

遠回りに見えても、必要な条件をきちんと書いてあるコードの方が、
あとから読む人にも、自分自身にも、安全です。

大事なのは「速さ」より「見える時間」

右折の話でいえば、

  • 早く曲がる → 危険
  • ゆっくり曲がる → 安全

でした。

プログラミングも同じです。

  • 早く書く
  • 少ないコードで済ませる
  • スマートに見せる

ことよりも、

「何が起きうるかを考える時間」

を取るほうが、結果的に安全です。

プログラミングは「頭の中の交差点」

交差点で大事なのは、

  • 死角がある前提で動く
  • 見えていないものを想定する
  • 慎重すぎるくらいがちょうどいい

という意識でした。

プログラミングも同じで、

  • 思い込みを前提にしない
  • ユーザーを信用しすぎない
  • 「もしも」を潰していく

ことが、バグを防ぎます。

まとめ

見通しのいい交差点での右折も、シンプルに見えるコードも、
一番危険なのは「もう大丈夫だ」と思った瞬間です。

遠回りでもいい。
遅くてもいい。

見える時間を作る設計が、事故もバグも減らしてくれます。