住基ネット「個人離脱」、1人削除に最大3500万

 まぁこんくらい掛かるだろうなぁ……。
 「3500万円」という費用は、この記事から読み取ると、

  • 市のサーバー内のデータを、「住民が死亡した場合」「日本国籍を離脱」のどちらも入力せずに削除しても問題なく動くよう市のシステムを改修する。
  • 府と国のデータは削除しない。
  • 府と国のシステムを変更しない。

 という要件で、これはまたかなり大変な気がする。

  • まず、市のサーバー内の個人情報は、「住民が死亡した場合」「日本国籍を離脱」の場合でも削除されないのではないだろうか。
  • 多くのシステムでは、「情報を削除」するとき、データベースからDELETEで削除する(物理削除)のではなく、「この情報はありませんよ」というフラグを加えて削除したことにする(論理削除)ことが多い。
  • このシステムも「住民が死亡した場合」「日本国籍を離脱」というフラグがあることを考えると、これらの削除は論理削除ではないだろうか。
  • だが、今回の判決では完全な削除を求められているので「物理削除」を行う必要がある。
  • ただしその場合、削除されるのは市のサーバーの情報だけで、府や国のデータベースからは削除されない。
  • おそらく府も国も含めて削除できれば問題ないのだろうけど、まぁプライドや訴訟の問題で無理なのだろう、と。
  • そのため、市のシステムを「府や国には情報があるが市にはない」という要件で作り替えなければいけない。
  • これが実はかなり大変。プログラムは、「データが絶対にある」のと「データがあるのかないのか分からない」のとでは作る手間が全く違う。
  • 「データがないかもしれない」場合、データがあるかどうかの有無チェックをプログラムにいれなきゃいけない。そして「無だった場合」の処理をいれなきゃいけない。
  • これが凄まじく複雑になりやすくて、はっきり言ってプログラマーはできるだけこれをやりたくない。有無チェックはifを入れまくる単純作業でそのくせバグを作りやすい。
  • また、「無」を状況ごとにNULLや-1や""で表す必要があってそのあたりも間違えやすい。
  • さらに「無」だった場合、画面の表示を変えなきゃいけない。それぞれにエラーメッセージとエラーコードを割り振って、エラー画面に飛ぶ処理を加えなきゃいけない。エラー画面に飛んだときに入力値を再セットする処理も書かなきゃいけないかもしれないし。
  • エラー画面に飛ぶということは画面遷移図を書き直す必要もあるので、結局仕様も含めて修正が必要。画面遷移の整合性がうまくつかないと大幅な変更が必要なことに。
  • だから、有無のチェックはできるかぎり入力画面のみに任せて、内部での有無チェックはしないようにするし、そういったことを防ぐためにデータベースではNOT NULLやFOREIGN KEYしてもらうわけで。
  • まぁこの辺の仕様がきっちり決まってなくて、「データが絶対ある」という仕様で作ったら、使う側は「いえこれデータない場合ありますよ」なんてことになって、あとで数ヶ月かけて改修、なんてこともたくさん……。
  • で、有無チェックを入れると、それだけ工数がかかる。今回はすでに作ってあるものを改修するので、仕様書をチェックして、さらに実際にプログラムをチェックしなきゃいけない。
  • 数年前のシステムだから、作った人はもういなかったりして、知らん人が書いたプログラムを徹底的に洗い出して、有無チェック入れてくのは大変だろうなぁ……。
  • さらにテストが大変。「データがある」場合にはテストは1通りだけだけど、それが「データがあるかないのかわからない」場合はテストが2通りになる。
  • しかも有無チェックをしていく箇所が増えるとそれがべき乗で増えていく可能性がある。たとえば3つの関連した処理で、有無チェックをその3つの処理に入れた場合、全部の有無チェックのパターンをしらみつぶしに調べて8通りのテストをしなきゃいけないかもしれない。
  • 加えて、府のシステムにも対応しなければいけない。つまり府のシステムから見て「物理削除されたデータをあるように見せかけなきゃいけない」とゆーえらく面倒なことをしなきゃいけない。
  • これはIDだけ残してダミーデータを入れば解決できそうだけど、その場合に影響が必要か、これまた仕様書とコードレベルでチェックが必要で、さらにテストも必要、と。
  • あ、あとデータベースの仕様変更も必要ですね。一部でNOT NULLやFOREIGN KEYを外す必要が出てきそう。そのためにまた有無チェックが必要になったり……。

 まぁシステムの規模はわからないけど、人件費だけでも1人月150万円で20人月3000万円だしこんくらいは行くんじゃないかなぁ。つか調査とテストを考えると10人で2ヶ月はきついよな……。
 まぁこれは作り手側からの考え。使う側としては、中身が「どんなか」想像できる分、こんなのに個人情報入れたくないが(爆)。