
不正が見つかった毎月勤労統計、手続きだけでなくプログラムにも不適切な部分があったことで問題が判明 113
ストーリー by hylom
COBOLが悪い訳ではない 部門より
COBOLが悪い訳ではない 部門より
maia曰く、
厚生労働省の「毎月勤労統計」において2004年から2017年まで不適切な調査や統計処理が行われていた問題で(過去記事)、すでに発表されていた統計値を補正した再集計値が発表された(朝日新聞)。また、厚生労働省は1月22日付けで毎月勤労統計調査を巡る不適切な取扱いに係る事実関係とその評価等に関する報告書を発表している。
統計の信頼性は重大な問題だが、経緯は少々複雑で、手続き上の問題もさることながら、初歩的な計算上のミスがあった(池田信夫氏の勤労統計問題の原因は「COBOLプログラムのバグ」)。
経緯としては、2004年に中小企業の抽出率を上げるのと同時に東京都の大企業(従業員500人以上)だけを対象とした抽出調査にしたが(大企業は本来全数調査)、システム更改時に抽出した調査結果を復元処理するのを忘れていたという。3分の1を抽出したら3倍に復元しないと全国平均がずれてしまう。統計調査に係るシステムの言語はCOBOLで、改修は外注ではなく内部で行っているが、「システム担当係でCOBOLを扱える者は1人又は2人に過ぎなかった」。バグがあっても、ダブルチェックが働かなかった。そして2018年にサンプルの入替方法の変更にともなう改修に併せ、復元処理を入れた。14年間気づかなかったバグに、システム更改時に気づいて(黙って)修正したようだ。その後、統計数値の上振れについて指摘されたという。
問題をCOBOLプログラムに押しつけるような印象の記事に対しては多数のツッコミも寄せられている。
そろばんでもいいから.... (スコア:5, すばらしい洞察)
集計結果があっているかぐらい計算しようよ....
COBOLのせいじゃない。
Re:そろばんでもいいから.... (スコア:2)
だから、その集計方法の「仕様」が、おそらくは表沙汰に出来ない理由で、何度も変った結果がコレなんですよ
中の人がどんなに優秀でも、最早、中の人の誰も正しい方法がナニか判んなくなってるパターン
Re: (スコア:0)
検算する、あるいは前年度データで試してみればすぐ分かるよね…。
プログラムにはバグがつきものなのだから、試験過程で発見できないプロセスの方に問題がある。
COBOLだろうがJavaだろうが、Pythonだろうが違いはないよな。
臭いな (スコア:3)
コンピューターに責任を押し付けて、内部の職員の責任を有耶無耶にしようと
企んでいるという陰謀の臭いがプンプンする
Re: (スコア:0)
実際そうなんじゃないの?
ファイル共有ソフトを職務中に動かしてた事件なんかも、
問題のパソコンを紛失したり、手違いにより初期化されてしまったり、有耶無耶に~
COBOLer (スコア:2)
やはり、儂の出番 [srad.jp]じゃのぅ
コードレビューなしとは (スコア:2)
今時内部ツールとはいえコードレビュー無しとか、平成も終わるというのにどこの昭和ですか。
ほえほえ
Re:コードレビューなしとは (スコア:2)
コードレビューで見つけられるのは、
処理方式や書き方が難解(属人化してるとか、
処理の流れが読みづらくバクを埋め込みやすくなっているとか)
となっていないかであって、
計算間違い(プログラムのバグなのか、実装しようとした処理自体が
目的と合っていなかったか)は、テスト(前者なら単体テストで、
後者ならシステムテスト)で見つけるものではないでしょうか?
ソースコードが読めない人ではテストを実施できないというわけではないでしょうし、
テスト仕様書がコードを読める人でないと書けなかったとしても、
さすがにそれは日本語で書かれているだろうし、
何を修正するかは実装者以外も把握しているだろうから、
COBOLが読めない人でも、内容が妥当かのチェックはできると思うのですが...
COBOLが読める人が1~2人しかいないというより、仕様を把握している人が少ないのが原因だと
思うのですが、どうでしょう?
# 昭和というより、テストしないでリリースする某ゲームry
Re:コードレビューなしとは (スコア:2)
実際の所は、情報が不足しているのでどうなのかは全くわかりませんですよ。というのを前提として。
私がコードレビューの話を持ち出したのは、アゴラの記事にある
という部分から。内容のチェックすら誰もしてないのが見て取れるからです。
でまぁ、一般的な開発現場における話は、お書きになったとおりです。COBOLは単体テストが極めてやりにくそうでありますが…。原因は、正直これだけでは判断つかないですが、根本は人材不足、労働管理能力不足かなぁとはにらんでおります。おそらく、設計能力のある人がいたら、さっさと書き直せるレベルじゃないのかなぁと。
ほえほえ
Re: (スコア:0)
もっと言えば、妥当な内容を保つインセンティブが何もないんだろ
Re:コードレビューなしとは (スコア:2, 荒らし)
コードレビューをしてない事にしないと、プログラムのせいに出来ないじゃないですか!!
Re: (スコア:0)
お役所の体制が空洞化してるってことなんじゃないかなあ。「役人がCOBOLやRを学ぶべき」という結論にはならんだろ。
何の決裁機構も文書化もないまま本番系を漫然と改変し続け、作業者から大臣に至るまで誰も指摘せずできずできることを求められもしなかった、そういうことだと思う。
厚生労働省ですらアマチュアが椅子に座って数字を送り出していれば問題とされないというレベルまで中央政府が崩壊してるんだよ。
Re: (スコア:0)
中堅企業でさえ3割がひとり情シスなのに。コードレビューだけ外注に出すか。
Re:コードレビューなしとは (スコア:2)
パーキンソンの凡俗法則やな。
https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%AD%E3%83%B3%E3%... [wikipedia.org]
なにも言えなきゃ黙ってりゃいいのにな。
命名とかタブ幅とかなんかどうでもいいんやから好きにさせろっつーのに、そういうことをわざわざ言うヤツは何を考えてんのかな?ヒマなんかな?
Re:コードレビューなしとは (スコア:1)
> カンマやスペースの入れ方と言ったコーディングスタイルの違いばかり指摘している。
git commit 時のフックでフォーマッター噛ませないの?
Re:コードレビューなしとは (スコア:2)
おぉぅ、私は時代に取り残されてしまったようデスね…。(追いつきたくもないが)
ほえほえ
そしてCOBOLは消えゆく (スコア:2, 参考になる)
ちょうど今日
基本情報技術者試験から COBOL の問題が廃止される [twitter.com]ことが発表 [ipa.go.jp]されたところ。
代わりは Python らしいですよ。
Re: (スコア:0)
専門家=プロすら扱わない(扱えない)システムを、素人がメンテしてるんじゃ仕方がない。
一人情シスの悲劇ということかなぁ (スコア:1)
以前は情報システム部門がIT系人材を育てていたんだけど、その機能がなくなって、こういった仕様変更時のリスク認識とか組織内で見えなくなっちゃったというのはあるでしょうね。
Re:一人情シスの悲劇ということかなぁ (スコア:2)
他のシステムとの絡みがあるのかな。
統計上の歪みが問題のような気もするが (スコア:1)
仮に1/3に減っても正しい抽出なら平均は変わらないよね。
だいたい1/3に減った瞬間ガクッて落ちる集計方法なら、大問題になるでしょうに。
つまりこういうこと? (スコア:1)
東京都内の会社は数が多くて全数調査が困難なので抽出調査とすることになった
→抽出調査する場合は抽出率逆数という係数をかける処理が必要になる
→その係数をかける処理が抜けてるのにクロスチェックができなくて気が付きませんでした
→クロスチェックできてなかったのはCOBOL技術者が少ないせいです
→つまり、扱えるものの少ないレガシーシステム使ってるのが根本的な問題である
#なんだよ、やっぱりCOBOLが元凶じゃねぇか、という感想しか出てこない
しもべは投稿を求める →スッポン放送局がくいつく →バンブラの新作が発売される
是非プログラムをオープンソースにしてもらいたい (スコア:0)
多くの人の目にとまると思うし
数字を操作しにくくなるので不正の抑止につながると思う
でもこういうことを書くとソースクレクレコジキがーと言われるんだろうな
汎用機のプログラムを読める人、手を上げて (スコア:1)
という問題になってしまうような。
ソースコードを公開しても、その開発環境を理解している人で無いと、レビューできないと思うんだよね。
COBOL自体は標準化されていても、個票データを取り扱うデータベースが汎用機独自のデータベースだったりすれば、プログラムの理解にはかなりの支障があると思うし。
大元の記事を正しいと見做した場合、解決策の第1番としては、プログラム担当者にも統計処理の原則を理解させることだと思うな。
厚生労働省内部で抽出にすることが共有されていたなら、全数調査していた階層のデータが一部減るわけだし、その減る分を補完する処理が必要と気がつけば問題はかなり押さえ込まれていたと思う(担当官でその情報が共有されていないならプログラム担当側には落ち度はないと思う)。
Re: (スコア:0)
プロマネ経験のある人にもツッコミをしてる人がいたけど、原因は「毎月勤労統計プロジェクト」が全くマネジメントされてないことだよ。
「理解させる」「自覚させる」なんて精神論で末端の自傷行為に頼って解決するわけがない。
Re:是非プログラムをオープンソースにしてもらいたい (スコア:1)
プログラムをオープンソースにするのは反対する立場のひとに阻まれるので、
生データをオープンデータ(パブリックドメイン)
にしたらいいと思う。
そうすれば、物好きな人がオープンソースのプログラムを公開することと思う。
Re: (スコア:0)
OSIの言うオープンソースが理想なんでしょうが、目的はソースの査読なので
ソースが自由に読める環境を用意すればいいんではないかと。
GitHubにAll rights reserved.で上げるだけでも済むし。
まあ公開したからといって誰がチェックするんだ、という話はある。
で、今回の問題ってCOBOLがどうこうという問題でなく、適当なサンプルデータで
プログラムの正当性すらチェックしていなかったって事じゃね???
という事でCOBOLでもTDDを必須に(ry
Re:是非プログラムをオープンソースにしてもらいたい (スコア:1)
オープンソースにしたところで、誰もコードレビューなんてしない。
断言できます。
ましてや、どこの誰が好き好んでサンプルデータでの検証を"無償で"するというのか。
もうそろそろ、歴史から学ぼうよ。
Re:是非プログラムをオープンソースにしてもらいたい (スコア:2)
引退後の老後の余暇に読んでみるとか。
Re:是非プログラムをオープンソースにしてもらいたい (スコア:1)
そんな余暇があるような老後って自分にはくるのかな
# 余暇があってもそんなコード読みたくねぇよってのはあると思います
Re:是非プログラムをオープンソースにしてもらいたい (スコア:2)
トンプソン先生のバックドアの話 [itmedia.co.jp]はもっと知られてもいいと思うんですよ。
ほとんどの人は読まないし、読んだとしてももっと巧妙な細工がされていたら把握できない。
Re:是非プログラムをオープンソースにしてもらいたい (スコア:1)
login.cのバックドアは「コードレビューでは発見不可能」(ソースコードは問題ない)のが脅威なのであって、
元コメのいうような、(コードレビューする人がいないなどの理由で)「コードレビューが機能しない」とかととはレイヤーが別の問題でしょう。
Re:是非プログラムをオープンソースにしてもらいたい (スコア:1)
レビューしたとして、実際にそれが使われてる確認もできないよね……
Re: (スコア:0)
2004年の変更でも結果のずれはあったはずだが、
同時に中小企業の抽出率を上げていたので変動の中身がチェックされなかった可能性が?
二か所を同時に変更するな、って教訓がここに
プログラムにも不適切な部分があった (スコア:0)
ふーむ。不適切な部分がないプログラムなんて存在するんだろうか?
それはともかく (スコア:0)
意図としては都合のいい数字を作ろうとしてたんでしょ?
事実は無視して。
Re: (スコア:0)
ですね。
全数調査しないで誤魔化したという事実は変わらない
おまけでプログラムにもミスがあったというだけで
ソフトウェアに手を加えるほどの組織的犯行だったというだけで
Re: (スコア:0)
むしろ微増するでしょうね
一般に大企業の方が給与水準が高いですから
Re: (スコア:0)
公務員の給料算出時の参考データとして使われるとしたら…
Re:それはともかく (スコア:2)
官僚が自爆テロしてまうやろ!
ろくに関係もないのに、なんでも適当に「責任」をとらせりゃいいってもんやないで。
個人的には、関係する部署や省庁の官僚を全員減給したるくらいが妥当やと思う。
官僚の無責任体質がマシになるんやないか?
なるほど (スコア:0)
調査してないのにやたら簡単に昔の正しい数字が出てくるからどうなってんだろと不思議だったわ
統計処理の計算がすっぽ抜けてるからそれをやれば本来の調査と同じ水準のデータにはなるのね
オーウェル (スコア:0)
こういうときのために真理省を作っておけば...
お前らCOBOL大好きだな (スコア:0)
PHPはPHPであるというだけで理由もなく叩くくせに
https://developers.srad.jp/comment/3553273 [developers.srad.jp]
Re: (スコア:0)
JSON氏ね
Re: (スコア:0)
私を含め、COBOL一本でメシを食い家を建て家族を養ってきた者にとって
好きも嫌いもない
COBOLは人生そのものなのだ
こっちより少し前の賃金伸び率の偽装のほうが悪質なのでは? (スコア:0)
実際にはぜんぜん賃金伸びてないし実質マイナスなのに偽造データが人事院勧告の資料にされてるはずだから査定しなおさないとおかしいのでは?
Re:ミス? (スコア:1)
単に正常性バイアスの影響で、望む方向でないミスは検出しやすいってだけじゃないの?
・望んだ結果が出る→ミスは無いというバイアスがかかる
・望んだ結果が出ない→ミスがあるはずといバイアスがかかる
Re:池田信夫クオリティ (スコア:1)
本人の持論主張には同意できないところがあっても一次情報源へのポータルとして
利用する便が良いたとえばこんな書籍 [google.com]の擬人化と思えばさほど腹も立たない。
Re:池田信夫クオリティ (スコア:1)
池田信夫氏曰く [developers.srad.jp]
ちなみに、タレブの指摘 [agora-web.jp]とはこんな内容
些細なミスが許されないので「動いている部分のコードは触るな」が過剰に言われるようになり、リファクタリング、改良、改善が後回しにされる。
触らないから扱える人が時間とともに減っていき、触る必要が出てきたときに致命的なバグを埋め込んでしまう。
というのが池田信夫氏の主張のようです。
まあ、システムをこまめに改善していたのなら、とっくの昔にCOBOLで統計計算するのやめてたろうとは思いますが……。
しもべは投稿を求める →スッポン放送局がくいつく →バンブラの新作が発売される
Re:池田信夫クオリティ (スコア:1)
あちゃ、リンクミスってた
池田信夫氏曰く [livedoor.biz]
しもべは投稿を求める →スッポン放送局がくいつく →バンブラの新作が発売される