見出し画像

バルス

宮崎駿監督の名作冒険活劇アニメーション作品に登場する滅びの呪文です。映画のテレビ放送を見ながらTwitterで呟く遊びが広がって、映画公開当時には生まれていない世代でも知っている有名なフレーズでしょう。物語の終盤、悪役に追い詰められた主人公の二人が起死回生を果たすキーワードですが、無敵の空中要塞都市ラピュタが一瞬にして自己瓦解するコマンドとしては短すぎないでしょうか? 「ヴァル研」とか「バルサミコ酢」で滅びのコマンドが発動しては一大事です。

UNIXに由来するコマンドには "cd (Change Directory)" や "rm (ReMove)" といった短いコマンドが多いですが、システムを終了させるコマンドは "shutdown" と長い綴りです。


事の始まりはこんな感じです。製品の故障部品交換のためサービスマンが顧客ユーザーの元に出向き部品を交換して製品を再起動しようとしたところ、ユーザーが装置に保存していた設定情報が全て消えてしまった。というトラブルでした。

装置に搭載されているフラッシュメモリにはファームウェアの一部として、装置の設定情報や出荷仕向けの違い、オプション部品の有無などの情報も書き込まれていました。それらの情報が部品交換とともに消失してしまったのです。

フラッシュメモリ初期化のトリガーはたった1ビットでした。元々は試作機の電子基板に不具合があり、ユーザーがフラッシュメモリにある設定を保存してしまうと、次の起動のときにマイコンが立ち上がらなくなってしまう、というものでした。この不具合を回避するために、フラッシュメモリの「あるアドレス」の「あるビット」に1を立てることでマイコンが再起動するたびにフラッシュメモリ上の設定情報を初期値に戻す隠し機能が仕込まれていました。しかし、そんな経緯も忘れられてはや幾年。同じビットを別の目的のために転用したがためにフラッシュメモリをクリアする滅びの呪文が十数年ぶりに復活しました。

「開発の途上で必要となった機能をプロダクションコードに含めて出荷すべきではない」、「開発用の機能はデバッグ・ビルドのときのみ有効にすべきだった」などツッコミどころ満載なのですが、フラッシュメモリを全クリアする滅びの呪文がたった1ビットで発動したことも不幸でした。不具合が発生してからの結果論ですが、もしも複数のビット列でチェックをしていれば… もしもフラッシュメモリをクリアする前にさらにワンステップ確認操作があれば… とさまざまな「もしも」が脳裏をよぎっていきます。

開発の途中で割り込んでくる「xxxのための暫定対策」はその場限りの一時凌ぎのため深い仕様検討も将来のためのドキュメント化も疎かにしてしまいがちです。しかし、そのコードが5年後、10年後のあなたやあなたの同僚を窮地に陥れるかもしれないと想像力を働かせましょう。

ラピュタの滅びの呪文を設計した開発者は、どんな気持ちで「バルス」を実装したのでしょうか???

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