茅ヶ崎市は2005年10月~2006年2月,「国民健康保険オンラインシステム」で5回のシステム障害を経験した。12月に発生したパッケージ・ソフトのカスタマイズに起因する障害を機に,設計仕様までさかのぼった総点検を実施。開発ベンダーのNECは「品質は万全と確信した」(公共システム事業部 統括マネージャー 市川隆氏)(「中編」を参照)。しかし,障害はまだ終わりではなかった。

[障害5]正しいプログラムを勝手に“修正”

 2月10日に市民に発送した「納入通知書兼納付書(自主納付分)」に記載したコンビニエンス・ストア収納用のバーコード691件の内容が間違っていた。原因は,NECがシステム開発を委託していたNECソフトの中堅SEが1月31日に月例賦課処理に立ち会った際,なんら問題が無いプログラムを「間違っている」と勘違いし,市職員や同僚に知らせることなく勝手に“修正”したことにあった。この“修正”にバグがあり,一部で他人のバーコードを取り違えて印刷する現象が生じた。

 納入通知書兼納付書は,(1)納付額が30万円を超える場合,(2)転入/転出が有る場合,(3)転入/転出が無い場合−−のそれぞれで,異なる用紙に異なる書式で出力する必要がある。このため(1)~(3)の印刷処理は,別々のプログラムとして実装されており,(1)から(3)の順に実行されていた。例えば(1)は,2005年4月からコンビニエンス・ストアが防犯上の理由で30万円を超える収納を見合わせるようになったので,例外処理として(2)や(3)の処理に先んじて実行するようになっている。コンビニエンス・ストア収納用紙の代わりに,金融機関の振り込み用紙を印刷するのだ。

 ところがNECソフトのSEは,この仕様を失念したか,誤解していたようだ。(3)を処理するソースコードをたまたま見ていて,納付額が30万円を超える場合の判定ロジックが無いことに気づいた。現実には,(3)を処理する前に(1)の処理を実行しているので,納付額が30万円を超えるデータが(3)の処理に流れることは無い。しかも,月例処理は8月から繰り返し実行されており,コンビニエンス・ストア収納用バーコードの間違いを過去に指摘されたことは無かった。ところが,SEは誰にも相談せずに納付額が30万円を超える場合の判定ロジックを(3)のプログラムに追加してしまう。「(SEに聞いてみた限りでは)これ以上バグを出してはいけないという焦りがあったようだ」(NEC 市川氏)。不幸にもこの判定ロジックにバグがあり,他人のバーコードを取り違えて印刷する結果となった。

 もともと茅ヶ崎市では,プログラムを修正する前にベンダーから市職員に報告をもらい,影響範囲を共同で分析した上で,テストを実施,本番環境に適用するルールになっていた。しかしこのときは,このルールが完璧に無視された。NECからはほかにもう1人,ダブル・チェックのために月例処理に立ち会っていたが,プログラムが修正されたことは知らなかったという。

 実は,開発担当者が本番環境のプログラムを勝手に修正するといった“独走”を許してしまう温床があった。新システムはNECの汎用機「ACOS」で構築していたが,このACOSは開発用アカウントでログインすれば本番環境のファイルにもアクセス可能だった。標準構成のACOSは,ファイル単位でユーザーの読み書きを許可/拒否するなど細かなアクセス制御はできない(使うコマンドを制限することは可能)。こうしたきめ細かな制御が必要ならば,「RUAF」と呼ぶオプション製品が必要になるのだが,茅ヶ崎市のシステムにはRUAFが導入されていなかったのだ。

再発防止に挑む

 茅ヶ崎市では,新システムのカットオーバーに際し,例年の3倍規模の件数とパターンを用意してテストを実施したという。10人程度の職員が国民健康保険の賦課などを手計算し,新システムで算出した賦課と比較する作業を続けてきた。「市としては十分な事前テストをしたつもり。そもそも同じパッケージ・ソフトは,全国50自治体,神奈川県下でも14自治体が利用している。なぜ茅ヶ崎市でだけトラブルが続くのか理解しがたい」(茅ヶ崎市役所 保険年金課長 小山明氏)。

 2005年12月の市議会では,「NECや([障害1]の原因となった運用オペレータが所属する)YECソリューションは指名停止に相当するのではないか」という声も挙がったが,市役所全体や関連組織がNECのシステムに頼り切りで,「現実的にベンダーの入れ替えは難しい」(関係者)という。

 そこで茅ヶ崎市は,苦肉の策として,NEC湘南支店と結んでいた契約をNEC神奈川支社との契約に切り替えた。「統括責任を本社に近づけることで,少しでも状態が改善すれば……」(茅ヶ崎市役所 保険年金課 保険料担当主査 須田豊和氏)と期待を込める。

 一方のNECは,他地区で同様のシステムを担当するベテラン技術者を茅ヶ崎市の担当に加え,チェック体制の拡充やノウハウの継承を試みる考えだ。また,バグの修正手順や障害対処の方法などについて,改めて周知徹底する。茅ヶ崎市に対しては,RUAFを導入してアクセス制御を徹底することを提案する予定だ。

(実森 仁志=日経SYSTEMS)