生死を握るソフトウェア

新型プリウスが、ブレーキの問題で揺れているようです。路面が荒れている時(雪道や荒地で)、ブレーキを踏むと一瞬抜けたような感覚になるようです。これをトヨタの経営者は「フィーリングの問題で問題ない」と当初言ってました。しかし、これは認識が甘いと言わざるを得ません。

ちょっと前までブレーキはブレーキホースの中の油圧によってのみ制御されていました。しかしこれは大変な踏力を必要とするためマスターバック(油圧のアシスト)機能によって踏力を補助することとなり、軽くブレーキを踏んでもブレーキは効くようになっていきました。もし、マスターバックが壊れても強く踏めばブレーキは効きました。

さらに、路面抵抗が少ない(凍った状況)時は今度は効きすぎてブレーキがロックしてしまうという問題も出てきたため、アンチロック・ブレーキ(ABS)という油圧を制御して、ロックを防ぐ機能も追加されました。

この時点で、ソフトウェアがブレーキに関与しだします。タイヤの回転と車の速度にある矛盾を検出するとブレーキがロックして滑っていると認識し、油圧を(少し)抜いてタイヤのロックを防ぐのです。油圧を抜くと言っても1秒に何百回という細かい制御ですから、運転者には抜けたようには感じないものです。

プリウスは回生ブレーキというアクセルオフによる発電機能を持っています。アクセルを踏んでいない時は回転力を発電に使って充電しようという大変リサイクル的にはよい仕組みです。発電にはエネルギーを多く使いますので、ブレーキのように使えるのです。自転車の発電式ライトはこぐのが重くなりますよね。これと原理は同じです。

しかし、これらを全部矛盾なく制御するのは、ソフトウェア的には大変高度な作業です。今タイヤは滑っているのか、単なるアクセスオフ状態なのか、発電してもよいのか、左右のタイヤは同じように動いているのか・・・ちょっと考えても、一筋縄ではいかないハードウェア制御です。いったい幾つの要素を考慮しなければならないのか・・・

ソフトウェアがブレーキを制御することは、世の中の流れから言ってもこれは正しい流れだと思います。しかし、ちょっとしたソフトの変更で制御がガラっと変わってしまう危険性もはらんでいます。

過去に、ソフトウェアの変更が原因で飛行機の管制システムがストップしたり、電車のキップが発券できなかったり、電車が暴走したりと多くの障害を出してきました。

人の生死に関わるソフトウェアを開発しているのだ、という認識をもっと強く持つべきです。試験環境やスケジュールの都合云々などと言い訳してはいけません。これこそ、あらゆるケースを想定して試験し、万全を期してリリースすべき類です。

ソフトウェア業界に身を置くものとして、戒めを込めてこの問題について私見を述べます。