「マイナンバーカードが配達されない」とか「詐欺に使われている」というニュースを見た。この中で特に深刻だと思えるのが、配送ラベルに印刷されている?の問題だ。今の日本のダメなところが凝縮している。
ガラパゴス化した組織は全体でミスをなかった事にする。なかったことにするから、いつまでも失敗から学べないのだ。
住所ラベルに?が印刷されたのは、全角スペースにすべきところを半角スペースにしたからなのだそうだ。これをプログラムが処理しきれず?が印刷されてしまったのだという。
なぜ、半角スペースを入れると?が印字されてしまうのだろうか。報道では詳しく説明されないのだが、多分COBOLを利用しているからではないかと思われる。ビジネス分野でよく使われるCOBOLは全角と半角の取り扱いが苦手なのだという。これを「克服」するためには、予め半角になりやすい文字種を決めておいて、手作業で対照表を作って置き換えるのだという。この処理を失敗すると、文字コードが半角分(全角を基準にすると0.5文字になる)ずれてて、全体が文字化けを起すはずだ。
文字化けを防ぐために、エラーとして「手作業で」?を印字しているのではないかと思われる。?は当てはまる文字が有りませんよとか「データが間違っていますよ」いう意味の「エラーコード」なのだ。プログラマが意図して組み込んでいるのだ。そういう「仕様」なのだろう。
ここまで書いても「だからどうしたの」と言う人が多そうだ。
第一に「なぜ未だに、日本語処理が苦手なCOBOLを使っているのか」という問題がある。1959年に仕様が統一されたCOBOLはもう50年以上もの歴史のあるプログラミング言語だ。多分、役所関係の仕事だけをやっていれば済む(他に仕事がない)会社や部署が使い続けているのだろう。こうした会社では、他の言語を習得する意欲がないはずだ。ガラパゴス化しているのだ。
もし、MicrosoftやAppleのように家庭用機器を作っている会社であればそんな製品を放置する事はなかっただろう。COBOL言語そのものの問題というよりは、改良されたCOBOLが使えないコンピュータを使っている人たちが多いということなのかもしれない。メーカーは古いアーキテクチャに無駄なリソースを割くよりも新しいアーキテクチャに移って欲しいと思うはずだ。いわば、MS-DOSあたりを使っている感覚だといえば分かりやすいかもしれない。
こうした世界では、倒錯した価値観が支配することになる。不完全な状態を「改善しよう」とは思わない。それを使いこなす事に不思議な快感を覚え、それを「職人技」だと賞賛することになるのだ。目的を達成するよりも、職人技を磨く事が尊敬される不毛な世界だ。
しかし、これは問題の半分だ。もしこれがエラーコードだったとしたら、どこかで抽出ができたはずだ。?が印刷されたら、ログを吐いて出荷を止めるようなことができたのではないかと思う。しかし、システムインテグレータはそれをしなかった。これは推測になるが「納期の問題」があったのかもしれない。「納期に間に合わせる為には絶対に半角スペースは入れないでくださいね」というわけだ。
役所の方も納品物をチェックしなかったのだろう。役所側(あるいは業者の営業)が、納品する住所録にある半角スペースを一括で全角に変換してやればよかった。また、納入したものを目視確認すれば問題は表面化しなかったはずである。プログラマは半角スペースをイレギュラーとする仕様で書いているのだから、チームメンバーは(それがクライアントや営業であっても)イレギュラーなデータが流れ込まないようにする責任がある。
「時間がないからミスはあってはならない」が「ミスはあってはならないから、ないはずだ」に変わってしまう。最後には「ミスはないはずだから、これはミスではない」になる。だから、誰も学習しないのだ。そして学習しないから「これをどうにかしよう」とは思わないのだ。
このように考えると、マイナンバーが外部に流出するのも時間の問題だといえる。?で収まっているうちに問題を解決すれば良かったと思う日が来るだろう。
残念なことに、これを伝えるマスコミ側にもコンピュータのことが分かる人がいなかったようだ。政治部や社会部に専門家がいなかったのかもしれない。だから、深刻な問題が起きたとき、初めて専門家を呼んで大騒ぎして「責任者を首にしろ」などと叫ぶわけである。
まあ、問題が起きた時に多額の税金で処理をするのもいいかもしれないし、何度でも叫び続ければいい。何回でも同じ間違いを繰り返せば、そのうち学習するだろう。