パスワードを忘れた? アカウント作成
136035 story
バグ

緊急地震速報の「誤報」はプログラム中の「単位」間違えが原因と判明 108

ストーリー by hylom
これはひどい 部門より

papa-pahoo 曰く、

8月25日朝、関東地方で緊急地震速報の誤報が流れた。幸いにも大きな混乱は起こらなかったのだが、気象庁によると、この誤報の原因はソフトウェアに誤った変更が加えられていたためと判明したそうだ。さらに、この変更は作業を担当した明星電気が無断で行っていたことも分かった(朝日新聞の記事ITmediaの記事)。振幅の単位を「マイクロメートル」とすべきところを、間違って「ミリメートル」としてしまったため、本来は「マグニチュード4.1」と計算されるべきものが「マグニチュード6.6」と計算されてしまったという。

今回の誤報の原因となった千葉県南房総市の地震計を含む、計4台の地震計に誤った変更が加えられていたそうだ。明星電気は現在、無断での変更がなぜ行われたのか、その経緯を調査しているとのこと。(明星電気のお詫び公告

タレコミ人としては、このような社会インフラ・システムが簡単に改変できるような設計になっているとしたら、セキュリティ上の重大な脅威であると感じる。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Tatenon (20311) on 2009年08月26日 14時56分 (#1629510) 日記
    通勤中にラジオで聞いた話だと、
    小数点以下を切り捨て→四捨五入に仕様変更しようとして、
    0.5umを0.5mmにしてしまい、
    2.5umが525umになってしまったと。

    謎なのはこの間違いをやらかすロジック。

    四捨五入がなぜ単位違いになるのか。
    単位だけ変えてなぜそのまま加算するのか。
    なぜ10倍でなくて1000倍なのか。

    どういう間違いをすればこうなるのか、さっぱり予想できない。
    う~ん。みすてりぃ。

    # 誰かさんは昔うるう年計算の処理間違えたけどな。
    ## 15年も前の話だ。
    • by taka2 (14791) on 2009年08月26日 15時35分 (#1629528) ホームページ 日記

      記事によると、
      > 振幅が実際よりも常に500マイクロメートル大きくなるようになった
      とのことなので、単位を間違えたというより、四捨五入の桁処理を間違えたって感じじゃないですかね。

      想像ですが、mm単位な変数でμm単位の四捨五入するのに、
      data = int((data*1000.0)+0.5)*0.001;
      みたいなコードを書くつもりが、
      data = int((data+0.5)*1000.0)*0.001;
      ってやっちゃった、とか。

      親コメント
      • by Anonymous Coward on 2009年08月26日 21時57分 (#1629693)

        1998年に打ち上げられた米国の火星探査機マーズ・クライメイト・オービターは
        1999年に火星周回軌道投入の為の軌道修正後に消息不明に・・・。

        調査委員会の報告によるとこの失敗の原因は、探査機のあるデータがメートル法で
        報告されるはずが、ヤード・ポンド法によって報告されていたという、
        航行上のミスによるものと判明した。これにより、探査機は、軌道進入の際に、
        予定されていた火星の140-150 km上空の軌道ではなく、57 km上空の軌道に進入した。
        このような低軌道では探査機は、大気の圧力と摩擦に耐え切れずに破壊されてしまった。

        日本に限らずこんな事ってあるんですな。

        親コメント
    • 自己レス (スコア:2, 興味深い)

      by Tatenon (20311) on 2009年08月26日 15時24分 (#1629522) 日記
      朝日の記事を読み返していて気づいた。

      『常に500マイクロメートル大きくなる』

      要するに0.5を足した後小数点以下切り捨てで四捨五入しようとしたと。
      そしたら0.5じゃなくて500を足すようになっていたと。

      ラジオだと25.5の0.5が500になって25+0.5ではなく25+500で525になったと言ってたので、
      このロジックとは異なる。

      # でも1000倍の謎は残るなぁ。浮動小数点じゃなくてBCD計算なんだろうか。
      親コメント
      • by SS1 (6823) on 2009年08月26日 19時09分 (#1629635) ホームページ 日記

        # でも1000倍の謎は残るなぁ。浮動小数点じゃなくてBCD計算なんだろうか。

        つーか。単位がよくわからないね。マイクロメートル/秒なのか,マイクロメートル/毎秒毎秒なのか,特定時刻:マイクロメートル変異量なのか。各社の科学部は何をしているんだか・・・

        「浮動小数点じゃなくてBCD計算なんだろうか。」

        組み込み用プロセッサって,たいていがコプロ無しなのと,入力データが大抵はAD値(多くて16ビットくらいの)なので,普通は(固定小数点の)整数演算ですが,(震度やマグニチュードのように)Log演算を伴う場合は,言語の演算ライブラリを使って浮動小数点数を使うのが一般的です。

        ただ地震計のように,重力加速度(9.8m/s2)超から,潮汐1cm/h(??)近くまで測定するやつとなると,それなりにノウハウが必要になってくるはず。私にはセンサの方式が思いつかない。

        でもって組み込みシステムは,前述のようにCPUが貧弱な場合が多いので計算量が増えるとADサンプリングとか通信する暇がなくなるのね。おまけに緊急速報用ってことは,応答時間(最後のサンプリングから,緊急信号出力までの時間)が1秒以下とか,そういう要求仕様になってるわけでしょ。

        もとから無理のある要求仕様(&方式設計)だったんじゃないかな。

        --
        斜点是不是先進的先端的鉄道部長的…有信心
        親コメント
        • by Tatenon (20311) on 2009年08月27日 11時16分 (#1629961) 日記
          浮動小数点でなく整数演算ってのは私も考えたんですよね。
          小数点以下切捨てって言ってたので、単純に浮動小数点→整数で
          やってんじゃないのかと。

          で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)

          全ては予想の範囲を出てませんが、何にしてもテストも検証も一度もやらなかったのが
          最悪のミスであることは確実なので、どうこう言っても始まりませんけどね・・・
          親コメント
    • 当時の気象庁のホームページの「魚拓」 [megalodon.jp]によると、震度5弱の速報をだしたのとは別に、マグニチュードが214748364.7と算出された記録もあるんです。

      プログラム的には、あぁなるほどー と思わなくも無い数字ですけど、どうしてこんな数字になるんでしょうね…… 単位間違いとは別の問題なんでしょうか。

      --
      人生は七転び八起き、一日は早寝早起き
      親コメント
    • マイクロ、マイクロ、綴りは……microか!
      よし、mm と。

      ……だったりして。

      --
      Your 金銭的 potential. Our passion - Micro$oft

      Tsukitomo(月友)
      親コメント
    • Re:今朝聞いた話だと (スコア:1, おもしろおかしい)

      by Anonymous Coward on 2009年08月26日 15時15分 (#1629519)

      ここが今日のエスパースレですね。

      ドキュメント「m単位で四捨五入すること」
      実装者「ばーかメートルなわけねーだろどんだけ大雑把だよwwwミリメートルだろwww」
      実際はもっと小さかったというオチ

      # まさかね・・・

      親コメント
  • by shiroiwanisan (12855) on 2009年08月26日 14時10分 (#1629480) 日記
     テストで実際に揺さぶって見なかったのか?

    # 昔、振動計とかいうものを作っていたが、センサーが超いい加減だった
     ので、実際に揺さぶって校正してました。
  • > タレコミ人としては、このような社会インフラ・システムが簡単
    > に改変できるような設計になっているとしたら、セキュリティ上の重大な脅威であると感じる。

    ってあるけど、普通この手の計測警報システムってファームと同時上書くらいしか、
    ベースデータの書き換えできないと思うけど。。
    もっとも設定なんかはネット経由で出来るだろうけどね。<現物がどうかは知らんが
    なので、別に「社会インフラ・システムが簡単に改変できるような設計」とはなっていないんじゃないかな。
    今回の件では、納品元会社の多分担当PGが勝手に余計な所まで直しちゃった+チェックが甘かった+そのまま納品。
    発注元の検収ミス(検収してない!?)で、そのまま設置。しかも、バグ入りファームで前設置機器の
    アップデートもしてしまった。みたいな流れで。。

  • by Anonymous Coward on 2009年08月26日 15時37分 (#1629529)

    このときNHKでは、民主党神奈川県の政見放送が終わって、自民党神奈川県が始まってすぐのタイミングだった。
    画面下半分に千葉県沖に×印がついた関東地方の地図がばーんと出て、元の映像はほとんど見えなくなった。

    放送局では政見放送はとてもデリケートな素材で、民放のCM並みかそれ以上に気を使って放送をするものらしい。
    気象庁や明星電気に、NHKや自民党からどれだけクレーム(心理的なものも含む?)が入るのか考えると恐ろしい.....

  • 「クロスチェックぐらい常識だろ!次は誤報をださないように、発報前にクロスチェックをしなさい。」とか言うお偉いさんが現れたりするよね。

typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...