
緊急地震速報の「誤報」はプログラム中の「単位」間違えが原因と判明 108
ストーリー by hylom
これはひどい 部門より
これはひどい 部門より
papa-pahoo 曰く、
8月25日朝、関東地方で緊急地震速報の誤報が流れた。幸いにも大きな混乱は起こらなかったのだが、気象庁によると、この誤報の原因はソフトウェアに誤った変更が加えられていたためと判明したそうだ。さらに、この変更は作業を担当した明星電気が無断で行っていたことも分かった(朝日新聞の記事、ITmediaの記事)。振幅の単位を「マイクロメートル」とすべきところを、間違って「ミリメートル」としてしまったため、本来は「マグニチュード4.1」と計算されるべきものが「マグニチュード6.6」と計算されてしまったという。
今回の誤報の原因となった千葉県南房総市の地震計を含む、計4台の地震計に誤った変更が加えられていたそうだ。明星電気は現在、無断での変更がなぜ行われたのか、その経緯を調査しているとのこと。(明星電気のお詫び公告)
タレコミ人としては、このような社会インフラ・システムが簡単に改変できるような設計になっているとしたら、セキュリティ上の重大な脅威であると感じる。
今朝聞いた話だと (スコア:2, 興味深い)
小数点以下を切り捨て→四捨五入に仕様変更しようとして、
0.5umを0.5mmにしてしまい、
2.5umが525umになってしまったと。
謎なのはこの間違いをやらかすロジック。
四捨五入がなぜ単位違いになるのか。
単位だけ変えてなぜそのまま加算するのか。
なぜ10倍でなくて1000倍なのか。
どういう間違いをすればこうなるのか、さっぱり予想できない。
う~ん。みすてりぃ。
# 誰かさんは昔うるう年計算の処理間違えたけどな。
## 15年も前の話だ。
Re:今朝聞いた話だと (スコア:3, 興味深い)
記事によると、
> 振幅が実際よりも常に500マイクロメートル大きくなるようになった
とのことなので、単位を間違えたというより、四捨五入の桁処理を間違えたって感じじゃないですかね。
想像ですが、mm単位な変数でμm単位の四捨五入するのに、
data = int((data*1000.0)+0.5)*0.001;
みたいなコードを書くつもりが、
data = int((data+0.5)*1000.0)*0.001;
ってやっちゃった、とか。
単位のミスはNASAでも (スコア:1, 興味深い)
1998年に打ち上げられた米国の火星探査機マーズ・クライメイト・オービターは
1999年に火星周回軌道投入の為の軌道修正後に消息不明に・・・。
調査委員会の報告によるとこの失敗の原因は、探査機のあるデータがメートル法で
報告されるはずが、ヤード・ポンド法によって報告されていたという、
航行上のミスによるものと判明した。これにより、探査機は、軌道進入の際に、
予定されていた火星の140-150 km上空の軌道ではなく、57 km上空の軌道に進入した。
このような低軌道では探査機は、大気の圧力と摩擦に耐え切れずに破壊されてしまった。
日本に限らずこんな事ってあるんですな。
自己レス (スコア:2, 興味深い)
『常に500マイクロメートル大きくなる』
要するに0.5を足した後小数点以下切り捨てで四捨五入しようとしたと。
そしたら0.5じゃなくて500を足すようになっていたと。
ラジオだと25.5の0.5が500になって25+0.5ではなく25+500で525になったと言ってたので、
このロジックとは異なる。
# でも1000倍の謎は残るなぁ。浮動小数点じゃなくてBCD計算なんだろうか。
Re:自己レス (スコア:2)
# でも1000倍の謎は残るなぁ。浮動小数点じゃなくてBCD計算なんだろうか。
つーか。単位がよくわからないね。マイクロメートル/秒なのか,マイクロメートル/毎秒毎秒なのか,特定時刻:マイクロメートル変異量なのか。各社の科学部は何をしているんだか・・・
「浮動小数点じゃなくてBCD計算なんだろうか。」
組み込み用プロセッサって,たいていがコプロ無しなのと,入力データが大抵はAD値(多くて16ビットくらいの)なので,普通は(固定小数点の)整数演算ですが,(震度やマグニチュードのように)Log演算を伴う場合は,言語の演算ライブラリを使って浮動小数点数を使うのが一般的です。
ただ地震計のように,重力加速度(9.8m/s2)超から,潮汐1cm/h(??)近くまで測定するやつとなると,それなりにノウハウが必要になってくるはず。私にはセンサの方式が思いつかない。
でもって組み込みシステムは,前述のようにCPUが貧弱な場合が多いので計算量が増えるとADサンプリングとか通信する暇がなくなるのね。おまけに緊急速報用ってことは,応答時間(最後のサンプリングから,緊急信号出力までの時間)が1秒以下とか,そういう要求仕様になってるわけでしょ。
もとから無理のある要求仕様(&方式設計)だったんじゃないかな。
斜点是不是先進的先端的鉄道部長的…有信心
Re:自己レス (スコア:1)
小数点以下切捨てって言ってたので、単純に浮動小数点→整数で
やってんじゃないのかと。
でSS1氏のコメントで思いついたのですが、
『実は最初から整数のみのデータ』だったかもしれない。
つまり25.5nmは浮動小数点数25.5でなく10倍した整数255で保持してたかも。
計測器からのデータだとよくある話ですよね。
つまり従来の小数点以下切捨ては
nm=255
nm/10 → 25
で行っていたと考えられます。
で、『nmの四捨五入』を『mmの四捨五入』と勘違いしたマヌケが(ここが一番謎だが)
nm=255
(nm+5000)/10 → 525
↑マテ
とやらかした。でもこれ実際にmmで四捨五入するつもりなら
nm=255
(nm+5000)/10000 → 0
になってるべきであり、正しく実装されたらモノホンの大地震でも速報が出なかった可能性があると。(gkbr)
全ては予想の範囲を出てませんが、何にしてもテストも検証も一度もやらなかったのが
最悪のミスであることは確実なので、どうこう言っても始まりませんけどね・・・
Re:今朝聞いた話だと (スコア:2)
当時の気象庁のホームページの「魚拓」 [megalodon.jp]によると、震度5弱の速報をだしたのとは別に、マグニチュードが214748364.7と算出された記録もあるんです。
プログラム的には、あぁなるほどー と思わなくも無い数字ですけど、どうしてこんな数字になるんでしょうね…… 単位間違いとは別の問題なんでしょうか。
人生は七転び八起き、一日は早寝早起き
Re:今朝聞いた話だと (スコア:1)
マイクロ、マイクロ、綴りは……microか!
よし、mm と。
……だったりして。
Your 金銭的 potential. Our passion - Micro$oft
Tsukitomo(月友)
Re:今朝聞いた話だと (スコア:1)
大きい方に間違えて発見が早まったのは不幸中の幸いだったのかもしれないですね・・・
Re:今朝聞いた話だと (スコア:1, おもしろおかしい)
ここが今日のエスパースレですね。
ドキュメント「m単位で四捨五入すること」
実装者「ばーかメートルなわけねーだろどんだけ大雑把だよwwwミリメートルだろwww」
実際はもっと小さかったというオチ
# まさかね・・・
テスト (スコア:1)
# 昔、振動計とかいうものを作っていたが、センサーが超いい加減だった
ので、実際に揺さぶって校正してました。
Re:テスト (スコア:2, おもしろおかしい)
そんな大人修正してやる!
セキュリティー上の脅威!? (スコア:1)
> タレコミ人としては、このような社会インフラ・システムが簡単
> に改変できるような設計になっているとしたら、セキュリティ上の重大な脅威であると感じる。
ってあるけど、普通この手の計測警報システムってファームと同時上書くらいしか、
ベースデータの書き換えできないと思うけど。。
もっとも設定なんかはネット経由で出来るだろうけどね。<現物がどうかは知らんが
なので、別に「社会インフラ・システムが簡単に改変できるような設計」とはなっていないんじゃないかな。
今回の件では、納品元会社の多分担当PGが勝手に余計な所まで直しちゃった+チェックが甘かった+そのまま納品。
発注元の検収ミス(検収してない!?)で、そのまま設置。しかも、バグ入りファームで前設置機器の
アップデートもしてしまった。みたいな流れで。。
Re:セキュリティー上の脅威!? (スコア:1)
重大な問題ではありますが、セキュリティーうんぬんとは関係ないって話の方向でw
ただ、今回のケースみたいなバグ混入は大手の民生品でも結構あるのよ。
実際に担当開発者に知らされないで、他部署の開発者が触ってしまうみたいな。
それでもって、しっかりテストを実施する会社だと、テスターor会議室から
担当開発者が呼び出しされて、頭に???が浮かぶ。。<ええ、実際に経験しましたとも。。
「誰にも知られないうちに勝手に改修されたBug」ですが、多分仕様変更依頼が入っていて、
それ以外の場所も触ってしまったのが真相な気がする。よって誰も知らないってのは
単なる言い逃れ。<レビュー位しろって。。
今回の場合、テストの実施が双方で不味かったってのが一番の問題な気がします。
運用テスト(実際の加震テスト?)を実施していれば、直ぐに分かったと思いますけどねぇ~。
このときNHKは政見放送中だった(ちょいオフトピ) (スコア:1, 興味深い)
このときNHKでは、民主党神奈川県の政見放送が終わって、自民党神奈川県が始まってすぐのタイミングだった。
画面下半分に千葉県沖に×印がついた関東地方の地図がばーんと出て、元の映像はほとんど見えなくなった。
放送局では政見放送はとてもデリケートな素材で、民放のCM並みかそれ以上に気を使って放送をするものらしい。
気象庁や明星電気に、NHKや自民党からどれだけクレーム(心理的なものも含む?)が入るのか考えると恐ろしい.....
Re:このときNHKは政見放送中だった(ちょいオフトピ) (スコア:2)
民主党の政見放送がNHKラジオで途切れる事故 [yomiuri.co.jp]があったからちょうどいいんじゃない?
・・・いや、どっちにしてもよくないだろう。
見たような聞いたような・・・
itinoe
こういうミスが発生した時って (スコア:1)
「クロスチェックぐらい常識だろ!次は誤報をださないように、発報前にクロスチェックをしなさい。」とか言うお偉いさんが現れたりするよね。
検証以前 (スコア:1, すばらしい洞察)
そういうことを(する/できる)体制ってどうなのよ
Re:検証以前 (スコア:1)
Re:検証以前 (スコア:1)
というストーリーを妄想してしまいました。
巧妙に潜伏したバグは心霊現象と区別が付かない。
Re:検証以前 (スコア:2)
変更点についてコードレビューを経ないとコミットできないというルールでどうでしょう?
単位が違うくらいならコードレビューで落とせそうな気がします。
#そうすると今度は、レビューしたのと違うコードをコミットしてしまうミスとかが発生するんですけどね。
Re:検証以前 (スコア:1)
そういう時のための多数決方式だと思う.
Re:業者に潜り込めば何でも出来るのか (スコア:1)
>変える必要性を発注者が認めていなかったところで、
>勝手に変えた事で引き起こされたトラブルと言う事ですから、
>その変更が行われた背景が判明するまでの間は、
>社会を混乱させる事を狙ったテロの可能性を疑う
マイクロソフトがWindowsUpdateを失敗するたびに社会を混乱させることを狙ったテロの可能性が疑われるのでしょうか?
ゴルゴ13が活躍しないと予告なしに改変できないようなセキュリティシステムの有無が判明するまでの間は
単なるコミュニケーション不足や検証漏れを疑うほうが頗る建設的だと思います!!
ハンロンの剃刀 http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%83%AD%E3%83%B3%E3%8... [wikipedia.org]
Re:業者に潜り込めば何でも出来るのか (スコア:2)
テロならそんな足つきそうなことやらなくても、
震度計の隣でランマー [google.co.jp]でも使えばいいと思う。
# 絶対やるなよ!?
Re:業者に潜り込めば何でも出来るのか (スコア:1)
工事の振動は地震と区別がつくと聞いたことが。
でも交通量の多い道沿いは震度計が地震と誤るとかなんとか。
もう20年以上前に聞いた話なので、今もそうなのかは不明。
車に乗ってるときにラジオで聞いたことなので出典無。
☆大きい羊は美しい☆
Re:勝手に変更 (スコア:2, すばらしい洞察)
とかね
Re:この会社 (スコア:3, おもしろおかしい)
Re:この会社 (スコア:2)
今度は単位の間違いじゃないはず
Re:この会社 (スコア:3, 興味深い)
むしろこういうトラブルのときに、作業委託した会社名まで公表されるのは珍しいなと思いました。
(いろいろなウワサレベルでばれてることはあるでしょうけど)
明星電気はもうだめかもわからんね (スコア:2, おもしろおかしい)
Re:明星電気はもうだめかもわからんね (スコア:1)
その前に 平凡 [google.co.jp]電器 では?
# というのはジジイだけか...
会社案内 (スコア:1)
カノープスと取引があるんですね。
1999年から取引開始ということは、DVraptorあたりからは、ここで生産されていたのかな。
この会社の社歌は「スパ~ク一発、やり逃げ~」ではないと思うけどね・・・。
Re:この会社 (スコア:2, 興味深い)
実は天下りさきとか、
OBの経営している会社とか
そんな大人の理由のあるかも知れないですしね。
Re:この会社がwinかもしれない (スコア:2, 興味深い)
担当者レベルで文書に残したくない場合が多々あります。
計算式も実験やらを経て設計書に書いて発注が普通です。
気象庁側が別の改修時に計算式の変更を闇発注したと経験上思いますよ。
そして間違った式を渡されてそのままコードに落としてしまったんじゃないでしょうか。
作業者が間違いに気づいても営業が書かれている通りにやれという場合もありますし
判子の押された文書も残っていないので表面上は勝手に変更して間違えたということに
されたのかもしれません。ですが現場では分かっている事なので今後の仕事上ではプラス
になるかも。
役人は露骨に逃げ足が速いのでお互い注意しましょう。
#ドラマで看護師が医者に間違いを指摘して怒られるシーンとかを見ると心が痛む。
#事故ったら看護師の責任にされる。
Re:この会社 (スコア:1, 興味深い)
原因なんてどうでもいいからとりあえず別の会社に委託せよ、みたいな展開になる方が後々怖い。
Re:この会社 (スコア:1, 興味深い)
今回はあの業者の責任ってことで、 あ、でも○○理事のバカが天下ったところだからやばいか?
#みたいな会話をして5時を待つ 超絶楽チンな職場にいたんだけど正義感でやめちゃった10年前の俺が一番バカな件について
Re:この会社 (スコア:1, 興味深い)
http://www.meisei.co.jp/products/meteo/ [meisei.co.jp]
に色々載っていますが、取引停止なんてなったら気象庁の高層観測は
壊滅なんじゃないでしょうか。アメダスも?
Re:よかった、大きな地震は来なかったんだね (スコア:3, 興味深い)
今朝、テレビでやってましたけど、
この計測器を導入後に何回(かorも)大きな地震をスルーしてしまっているようです。
# それで、精度向上のために行ったアップデートがバグ入りだったようです。
Re:よかった、大きな地震は来なかったんだね (スコア:1)
でも、何度も続くとオオカミ少年化しちゃいますよ?
~パタポン教徒~
Re:よかった、大きな地震は来なかったんだね (スコア:1)
> これが逆に大地震をスルーしてたらどんだけ叩かれたか。
この機能の方も、まだ「動いて当然」とは思われていないので、「なにぶん初めてなもので…」とか「急に地震が来たので」とか言い訳できるかもしれませんよ。
あ、でもH2ロケットの時も、一発目から「成功して当然」だったし、やっぱりたたかれますね・・・。
Re:よかった、大きな地震は来なかったんだね (スコア:1)
Re:よかった、大きな地震は来なかったんだね (スコア:1)
その元ネタはどっかのゴルファーだったような……と調べたら、
Roberto De Vicenzo [wikipedia.org]だった。→参考 [google.co.jp]
Re:ドコモのエリアメール (スコア:1)
今のガスの計量器は地震が来たら自動的にガスは停止します。
ガスコンロに向かうよりも自信の身の安全を確保したほうがいいですよ。
#家の中で安全な場所ったらどこだろう?
Re:ドコモのエリアメール (スコア:2, 参考になる)
> #家の中で安全な場所ったらどこだろう?
・部屋が狭い=床面積あたりの壁・柱の強度が高い、
・周りに地震で倒れてきたりするものがない、
ってことで、トイレがいいらしいですよ。
前者は、最近のプレハブ的建築では怪しいらしいですが、
後者の点では、揺れる前の地震速報でトイレに待機はアリだと思ってます。
あと、建物が歪んでドアが開かなくなって閉じ込められる危険を避けるために、
ドアは開けっ放しにしておくのが重要。
Re:ドコモのエリアメール (スコア:1)
トイレの中も、横揺れが激しいと壁にガンガン打ち付けられるので危ない
という話をどこかで読んだ気がします
Re:バグに強いシステムとは (スコア:3, 興味深い)
某実験で、64の独立した素子で計測して平均を取ることで、高信頼・高精度な結果を出すシステムに携わったのですが、複数の素子での多数決も、なかなかやっかいです。
難しいことをせず、全ての結果の中央値が一番使える気がしましたが、まだ下っ端だったので、複雑なカットを加えた平均値が採用されました。
Re:バグに強いシステムとは (スコア:1)
もちろん、あまりに外れた値は無視しているのですが、
それを判断するアルゴリズムには、経験的なパラメータがたくさん入ってきますしね。
中央値は、とてもシンプルな割に、わりとどんなときでも、そこそこ正しそうな値を返すんですよね。
Re:バグに強いシステムとは (スコア:2)
中央値=「あまりに外れた値は無視」を最大にした、サンプル数=1な平均値
これを選択すること自体(ピークは2つなさそうとか)、経験的なパラメータの権化。
私もよく使います。
Re:バグに強いシステムとは (スコア:1)
中央値は、ピークが2つあった場合、大きなほうのピークに収まることが多いですので、平均値より破綻しにくいです。
平均値には平均値で、平均を取ることで、ここの素子の分解能以上の制度で測定できるメリットもあり、結局用途で組み合わせるのが良いのでしょうが。
Re:バグに強いシステムとは (スコア:3, おもしろおかしい)
カスパー「地震と判定」
メルキオール「地震と判定」
バルタザール「使徒による攻撃の可能性を推測」
マギにより今回の揺れは「条件つきでの地震と判定」されました。
とかになると嫌だな。