茅ヶ崎市は2005年10月~2006年2月,「国民健康保険オンラインシステム」で5回のシステム障害を経験した。8月と9月に発生した障害(「前編」を参照)を乗り越え,システムが安定するかと思われた矢先,さらなる障害に見舞われた。

[障害3]パッケージのカスタマイズ部分にバグ

 3度目の障害は11月2日に発生した。1万9792世帯に送付した医療通知書のうち,228世帯分が誤った住所に送られたのだ。

 医療通知書の作成業務は,神奈川県の国民健康保険団体連合会(国保連合会)に委託している。そのため,国保連合会が指定した書式で,保険番号,住所,氏名などの情報を磁気テープに記録して引き渡す。この磁気テープを11月から新システムで作成するようにしたが,新システムに含まれていたバグによって,離婚や独立などで世帯分離した新世帯の住所を,世帯分離する前の旧世帯主の住所と取り違えた。例えば,夫を世帯主とする夫婦が離婚して,妻が別の世帯を設けた場合に,元妻の医療通知書が元夫の住所に送られた。

 新システムで使ったパッケージ・ソフトは,世帯分離すると旧世帯も新世帯も新たな保険番号を採番する仕様だった。だが,茅ヶ崎市の旧システムでは,世帯分離しても世帯主に変化がない旧世帯の保険番号を継続利用する仕様だった。NECはパッケージの仕様に合わせることを提案したが,茅ヶ崎市は市民や病院などへの影響を最小限に抑えるため,旧システムの仕様に合わせるようにNECに求めた。NECが,茅ヶ崎市の要求に応えて開発したアドイン部分に,バグが紛れ込んだ。世帯分離を想定したテスト・ケースはあったが,世帯分離後も名字が変わらないテスト・データを使ったため,住所が同じことが誤りだと気づきにくかった。

 バグの修正に伴い,NECは新システムの再点検を実施した。手始めに,近い将来(年末から年度末)に市民に発行する予定がある帳票関連の機能を中心に,設計書,プログラム,テスト・ケースの見直しを進めた。テスト・ケースに漏れがあった場合には,テストをやり直し,必要に応じてプログラムも修正した。

[障害4]過去に発生していた障害が判明

 将来の処理への備えを進めるかたわらで,既に障害は起きていた。パッケージ・ソフトのカスタマイズ部分のバグに起因した障害が8月に発生していたことが,12月5日になって新たに判明したのだ。同じ8月に発生した[障害1]と現象は異なっていたが,保険料賦課の本算定に誤りがあったという点で根っこは同じだった。

 具体的には,発送済みの保険料決定通知書(介護分)に賦課誤りがあった。介護分が賦課限度額に達していて,年度途中に65歳になる構成員がいる55世帯に対して,賦課限度額を超えて賦課していた。市民の相談を受けた市職員が,たまたま気づいた。

 実は,賦課の決定に必要な年間保険料の算出方法が,パッケージ・ソフトに元々実装されていた方法と,茅ヶ崎市で採用していた方法では,微妙に異なっていた。算出方法の違いで,小数点以下の差が出る場合がある。茅ヶ崎市は新システムを8月に切り替えたため,年度途中で算出方法を変えることはできないと構築当初に判断,NECにカスタマイズを求めていた。このカスタマイズ部分にバグがあった。

 保険料の賦課は,医療分と介護分を一連の流れで計算する。NECは,医療分の計算ロジックを開発した後,それをコピーして介護分の計算ロジックを作成した。コピーした部分については,介護分の賦課限度額8万円を格納した変数名に置き換えたが,限度額を超えているかどうかを判定する個所に,医療分の賦課限度額53万円の変数名が残ってしまった。変数名は長さの割に1文字しか違わなかったので,間違いが目立たず,コード・レビューの段階で見逃した。

 バグを修正する一方で,NECはシステム再点検の範囲を広げた。実施済みの処理を含むカスタマイズ部分を重点的に,市民に直接影響のない統計処理や市役所内処理についても検査した。新たに数件の軽微なバグが見つかったが,これを改めた。12月末には「品質は万全と確信した」(NEC 公共システム事業部 統括マネージャー 市川隆氏)という。さらに2006年1月中旬には,茅ヶ崎市のシステム開発担当者らに対し,障害時の報告手順や障害分析方法などを再教育した。現場では今後の障害撲滅に向けて誓いを新たにした−−はずだった。

(実森 仁志=日経SYSTEMS)