見出し画像

ハザードランプとプログラマの精神

先日、

JAFは「サンキューハザード」をなくしたい! 背景にある「最新の運転支援装備」に組み込まれる「本来の使い方」とは

という記事が自動車系のサイトに上がって話題になっていた。というか疑問の声が上がって軽く炎上してた。
現在はその記事は削除されているようだが、インターネットでの反応は以下のはてなブックマークで見ることができる。

内容としては、車線変更時に譲ってもらった後ろの車に出す、ハザードランプを1,2回点灯させる「サンキューハザード」というのがあるが、ハザードランプは本来緊急事態を知らせるものなのでよろしくないというものだ。

また、渋滞の末尾の車はハザードランプを点灯させるという習慣も、ブレーキペダルを軽く数回に分けて踏んでブレーキランプを点滅させる「ポンピングブレーキ」で対応すべきだという記述もあった。

これらに対して、
まずサンキューハザード に関しては

ハザードランプの意味を今から変えるのはかなり難しかろうなぁ。とは言え、サンキューハザードは、一回光らせるくらいしか出さないから勘違いされる事もそうはないと思うんだけど。

https://b.hatena.ne.jp/entry/4714195287449753794/comment/otchy210

ポンピングブレーキに関しては

渋滞の末尾に近づいたときに後続車にそれを知らせる手法としてハザードランプを使うというのも見直すべきだろう。” 気がついた時にはもう末尾だから停止して踏むブレーキがもうないんだよ。運転したことあるの?

https://b.hatena.ne.jp/entry/4714195287449753794/comment/Dai44

といったコメントがあった。
なるほど両方とも納得できる。というか私も記事読んでいて筆者の論理展開がガバガバすぎるなと思っていた。(ゆえに流石にまずいと思い削除されたのだろうか)

私自身も、サンキューハザード /渋滞末尾のサインとしてのハザード、両方ともやることがある。そしてその使用方法に違和感を感じたことはないし、他のドライバーがやった場合も同様である。
なぜか?
同じハザードであってもシチュエーションと組み合わせることで、どういう意味なのか明らかに伝わるからである。

これはプログラミングで言うと「変数スコープ」に似ている。
変数スコープというのは、同じ名前の変数(プログラム上で一時的に数字や文字列といった値を格納しておく領域)であっても、それがどこで「宣言」(変数を命名してこの後の処理で使いますよという記述)されるかによって別物として扱えるという仕組みだ。

例えば「cnt」という変数があったとして、それが
・繰り返し処理その1
の中でも宣言されていて、その後に出てくる
・繰り返し処理その2
の中でも改めて宣言されていた場合、
cnt」は繰り返し処理その1・その2でそれぞれ全くの別物になる。

私はこの「cnt」という変数がハザードランプ、繰り返し処理その1・その2はそれぞれハザードランプを使うシチュエーション(合流時/渋滞末尾)と考えた。

もう一つ別の考え方もある。
コンピュータは、0と1だけの「2進数」で動作するというのはシステム屋であれば誰もが知っているだろう。
0と1では1桁なら2通りしか表現できなくても、8桁なら256通り、16桁なら65536通りの表現ができる。

65536通りはオーバーだが、要は「ハザードランプ」という、ON/OFFしか表現できない原始的な仕組みでも、シチュエーションと組み合わせることで複数の意味を持たせることができるというのはプログラマ的にはとても納得感のある工夫だと思う。

明文化されていないマナーとしてはハザード以外にも、パッシングやクラクションを使った合図もある。
いずれも本来は別の目的で実装されている視覚・聴覚に作用するクルマの機能をコミュニケーションに転用したものだ。ハザードランプと同様の考え方ができるだろう。

「面倒くさい」「やらないとマナー違反というのも息苦しい」など、いろいろ反対意見はあるだろうが、プログラマの精神としては、危険を伴わない前提であればこういう工夫は悪くないと思うのである。

この記事が気に入ったらサポートをしてみませんか?