「電池を入れてください」
今回はメカAGさんのブログからご寄稿いただきました。
「電池を入れてください」
週刊スピリッツだったか忘れたけど、こんなマンガがあった(タイトルも忘れたw)。大量のシャボン玉を吹き出す玩具があって、久しぶりに動かそうとする。
しかし動かない。あれこれいじってると、近所の友だちも集まってきて、口々にあーしたらどうだ、こーしたらどうだ、という。中でも「電池はいってる?」とみんな開口一番聞いてくる。
主人公は最初の内は「入ってるよ」と答えてたのだが、来る人来る人が「電池(ry」と言ってくるので、だんだん苛立ってくる。近所のお姉ちゃんに聞いても「電池(ry」。友人も「思いついたんだけど、電池(ry」。ウガー!!!
最後に玩具の取説を読んでみることにする。YES・NOで症状を答えていくと、たどり着いた先は「電池が入っていません。電池正しく入れてください」。コノヤローと玩具を蹴飛ばすと、その拍子に動き出してメデタシメデタシ。
* * *
まあこういうのってよくあるよね。プログラムがうまく動かなくて悩んでる時も、「○○はちゃんと処理してる?」と口々にアドバイスをくれる(笑)。
多少気を使ってくれる人だと「たぶん100回は見なおしたと思うけど、本当に○○はちゃんと(ry」と。いやー、まあ自分がアドバイスする側だったらやっぱ同じ事を真っ先に確認するから、まあ仕方ないと諦めてるのだが。
むかし2つのシステムがデュアルポートRAMを介して通信しあうプログラムを作ったことがある。デュアルポートRAMというのは双方向から読み書きできるメモリで、データバスも2つある。
ただ同時に同じアドレスにデータを書いたら、わけのわからないことになるから、手順を決めて排他制御しなきゃならない。これはプログラムでやる。
で、この部分の動作がどうもおかしい。おかしいといっても稀におかしくなるという程度で再現性が悪い。そのバグが取れず随分永い間悪戦苦闘していた。
* * *
普通に考えれば、ソフトのバグだよね。セマフォの処理に隙があって、絶妙なタイミングでアクセスが衝突すると、うまく排他制御できない。
当然そういうことがないように、俺は最初から細心の注意を払ってその部分を設計した。なのに動作がおかしい。当然何度もロジックを見なおした。しかしどうしても「おかしくない」。
で、俺が手こずってるのを聞きつけて、いろんな人がアドバイスをくれる。「セマフォの処理が不十分なんじゃないの?」と。来る人来る人みんな!多分俺も当事者じゃなければ同じ事を言っただろう。だってそれしか考えられない!(笑
結局はハードウェアの設計ミスだったんだけどね。それを証明するのに偉いエネルギーを使った。だってどう考えてもプログラムのバグに見えるじゃん。しかもこの手のバグは作った本人は「ちゃんと考えて作ってあります。絶対見落としはありません」と言い張るものだ。だから自分が説明してて、自分で「ああ、これは信じてもらえないな」とわかる悲しさ。もうね…「それでも地球は回っている」と叫んだガリレオの心境(苦笑)。
自分のプログラムは何度チェックしても間違っていない。それなのに動作がおかしいなら、あとはハードウェアが仕様通り動いてないとしか考えられない。ハードウェアにどういう動作不良が起きれば、こういう症状になるか?それはどうすればチェックできるかを考え、チェック用のシンプルなプログラムを作って何日も連続で走らせた。動作がおかしくなった時に止まるようにして。
予感はあったんだよね。プログラムのバグならどの製品でも均等に問題が起きるはずなのに、妙に個体によって起きる頻度にばらつきがあった。とはいえそれだけじゃ「たぶんハードのバグでしょ」「いえいえ、やっぱソフトのバグでは?」とお互い押し付けあって解決しなかった。憶測だけではなかなか人は動いてくれない(もちろん俺も例外ではないが)。動かぬ証拠をつきつけないと。
* * *
…というようなことを、これを読んで思い出したのであった。
「本当の包容力とは何か?あるいは「余計なお世話」について」 2013年04月21日 『ihayato.書店』
http://www.ikedahayato.com/index.php/archives/23069
(画像が見られない方は下記URLからご覧ください)
https://px1img.getnews.jp/img/archives/2013/04/dennchi.jpg
あ…ありのまま 今 起こった事を話すぜ!
『おれは奴の前で階段を登っていたと思ったらいつのまにか降りていた』
な… 何を言ってるのか わからねーと思うがおれも何をされたのかわからなかった…
頭がどうにかなりそうだった…
催眠術だとか超スピードだとかそんなチャチなもんじゃあ 断じてねえ
もっと恐ろしいものの片鱗を味わったぜ…
執筆: この記事はメカAGさんのブログからご寄稿いただきました。
寄稿いただいた記事は2013年04月22日時点のものです。
ガジェット通信はデジタルガジェット情報・ライフスタイル提案等を提供するウェブ媒体です。シリアスさを排除し、ジョークを交えながら肩の力を抜いて楽しんでいただけるやわらかニュースサイトを目指しています。 こちらのアカウントから記事の寄稿依頼をさせていただいております。
TwitterID: getnews_kiko
- ガジェット通信編集部への情報提供はこちら
- 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。