Monthly Archives: 8月 2009

バグとミス

緊急地震速報の誤報は、結構話題になっているようだ。

結論は、業者が勝手にプログラムを改修したことが原因だったらしい。

時事通信より

————-

全国237カ所の震度計の機能強化のための改修を明星電気(本社・群馬県伊勢崎市)に委託。初日の24日は、誤ったデータを送った千葉県南房総市の観測点など4カ所のソフト改修作業を行ったが、この際、同庁が依頼していなかった緊急地震速報処理機能についても作業が行われた。

同社担当者から話を聞いたところ、地震波の振幅の小数点以下が切り捨てになっているのを、四捨五入の方がいいと判断して改修。この際に単位を誤り、過大な振幅データが送られるようになったという。

————–

http://www.jiji.com/jc/c?g=soc&rel=j7&k=2009082500836

これは、ずさんだ。

この記事を鵜呑みに理解したら、明星電気は、プログラムテストを行っていないと言うことになる。

切り捨てから四捨五入に変更は、ある意味正しい判断だと思われる。

しかし、プログラムを書き換えたら、デバッグを行い、その上テストを実施しなきゃ。

この程度の内容なら、デバッグで見つかると思う。

そもそも、あり得ない数値が結果として戻ってくるのだから、気が付かないわけがない。

それを気が付かず、差し替えを行ってしまうのだから、デバッグもテストも実施していないと言うことになる。

この状態で、「不具合」とか「バグだ!」と言う人がいるが、これはミスであって不具合やバグではない。

結果としては不具合ではあるが、人為的ミスと言った方が正しい。

バグとは、デバックもテストも行い、なおかつ本番で稼働していて、一見問題ないように稼働しているが、特定の条件で、特定の操作を行うと再現できてしまったなどの、まるで予期できない状況で発生する、プログラムの不具合の事を指している。

そのため、テストを行っても、本番で問題なく稼働し、気が付かないケースが多い。

しかし、今回の場合は、1回でもテストをすれば、見つけだせる範囲だと思う。

最低なプログラマが犯す、過ちの代表例である。

で、思いつくことは、本当は別の原因が存在するが、あまりに初歩的ミス過ぎて、発表できない。そのため今回のような理由を思いつき、「これで行こう」と判断した人がいるのでは無いかと言うこと。

いずれにしても、本番切り換え時に、入念なテストが行われなかったことが、一番の原因だと思う。

JR東日本も2008年末に、プログラムの仕様ミスで新幹線が稼働させられなかった事故があった。

1,午前5時までに入力したデータが当日のデータとして保存され、そのデータを基に列車を走らせる。

仕様としては問題ないと思う。

2,午前5時以降に入力したデータは、翌日のデータとして保存される。

ここも仕様として問題ないと思う。

で、年末に起こったこと

雪でダイヤが乱れ、定位置に列車が揃っていなかった、そのため全列車の停車位置や、そのほか必要な情報を、徹夜で入力していた。全データが入力終わったのが午前5時過ぎ。

始発が6時なので、職員は「やったー!何とか始発に間に合ったぞー。ふぅー疲れたぁ、お疲れー。あとは6時の始発を待って、微調整をすればOKでしょう」と思ったに違いない。

それ以上に「ふふふ、俺たち職人だぜ、始発まで間に合わせた。ポッポやとはこういう仕事のことを言うんだぜ、後輩達よ。」と責任感と達成感に溢れていたかもしれない。

これも問題ないと思う。

ところが、6時始発を迎えてみると、データが反映されない、それどころが白紙状態でデータが無い。

職員は、さぞかし心臓が止まるほどゾッとしたことだろう。

そこで、再度すべてのデータを再入力し、スタートさせるも、同じ状態でデータが反映されない。

これもいい判断だと思う。

「まずは自分たちを疑え」という基本が出来ている。

一晩掛かったデータ入力を、今度は2時間ほどで終わらせている。

さっきの職人魂が溢れている。

それからが大変だったろう、導入当初の担当者など存在せず、納入業者もすでに担当者は過去の人。

その過去の人たちを探しだし、仕様を確認し、原因を見つけることにした。

そこでわかったことは、先の「午前5時を境に、自動的に反映日時が決定されること」だった。

その上、入力時に「反映日時の確認画面が存在しない」「反映日時の設定が出来ない」という仕様の欠落だった。

いや、もっと言えば仕様の欠落に気が付かず、この二点を実装しなかったプログラマーの問題でもある。

そこで解決策を考えて出されたやり方が「サーバーの日時を過去の日時に変更し、データを入力すること」だった。

過去の人間の不誠実を押しつけられた感じが拭えない。

大手デベロッパーの下請けをしている友人などの話を聞いていても、まともに稼働しているシステムの少ないこと。

破綻を来しているプログラムをさらに改修し、見た目だけでも動かして納品し、さらにそのプログラムの改修に別のベンダーを指名する。指名されたベンダーは、1からプログラムを読み直し、さらに改修し収拾がつかない状態で納品。

これらが延々と繰り返されている。

職人プログラマーなど、夢のまた夢。

使い捨ての人材ばかり育成している気がしてならない。

Facebook にシェア
[`evernote` not found]

緊急地震速報

 我が家にはケーブルテレビを利用した緊急地震速報装置が設置されている。

既に、何回もの地震速報が発報されている。

岩手県内陸地震の際も、50秒近く前から、発報された。

震度2以上で発報するように設定しているので、小さい地震でも「地震、地震、震度3、20秒後、10秒後、5、4、3、2,1、」とカウントダウンする。

何度も聞いていると、震度と到達時間である程度の地震規模がわかるようになる。

例えば、

小さな揺れで時間が長いと、遠くの震源地で、中規模の地震。

小さな揺れで時間が短いと、近くの震源地で、小規模の地震。

これが震度4以上で、時間が短いと、「おっ!でかそうだぞ、避難!」となる。

最短は、発報と同時に地震が来ることもあった。

この場合は、カウントダウンもない。

今日の誤報も、鳴った。

近所からも緊急地震速報の音が聞こえた。

でかいのが来るのかと思ったが、揺れなかった。

誤報は大した問題にならない。

経験を積むと、その数秒から数十秒の間に身を守ることが出来るようになる。

40秒もあれば、400メートルも走れるということだ。

世界最速であればだが。

10秒でも、結構余裕になる。

うちの子どもたちも、この数十秒を冷静に対応している。

しかし、「地震!震度7。 5、4、3、2、1、」なんて発報されたら、覚悟を決めるしかないと思う。

後は祈るだけだ。

Facebook にシェア
[`evernote` not found]

鉄の日 東京総合車両センター

行ってきました、東京総合車両センター。

大井工場と言った方が、自分にはしっくりする。

息子3人連れて、工場見学に行ってきた。

11時頃に到着し、まずは社員食堂へ

ポケモン弁当を3つ買って、少し早めの昼食。

12時前後に食堂に行くと、とにかく混んでいて、席すら確保できない。

空いているときにのんびりと食事を済ませ、後は思う存分工場をうろうろする計画。

その後、工場内をうろうろする。

ドアの開閉体験とかパンタグラフの上げ下げ体験などは、息子達には興味なし

と言うよりそもそも鉄ではない。

鉄道シミュレーターは遊びたがっていたが、長蛇の列、

家のPS2でワンハンドルマスコンがあるのだから、それで良いと思うのだが、家にある路線と違うことが、興味をそそられる理由らしい。

しかしそれもパスして、結局見学だけして、ささやかな露天で風船ヨーヨーをもらって大はしゃぎの息子達。

鉄な奴なら欲しがる、鉄道グッツを目の前にして、アヒルの風船とマンボウの風船を手に入れるために奮闘する息子達。

とおちゃんは、息子達にとってハズレの、鉄道グッツのおこぼれをもらって、ささやかに喜ぶ。

今回は特別思い入れのある目玉車両が無かったので、それなりだったが、やはり目の前に沢山の実物大車両があるというのは、本当に楽しい。

イスとか窓ガラスとかドアとか、設置場所とお金があれば、本当は家に持っていきたい。

今年は、シート生地で作られた「鍋敷き」の販売に気が付かなかったので、買えなかったが、シート生地の製品があれば、是非買いたい。

以前買った「鍋敷き」は、さすが難燃素材だけのことはあり、「敷き」にとどまらず、シナ鍋の「鍋つかみ」としても使っている。めっぽう火に強いというのがいい。

来年もまた、夏の終わりには大井工場へ。

Facebook にシェア
[`evernote` not found]