jeyseni's diary

「ジェイセニ」と呼んでください。批判ではなく提案をするのが生き甲斐です。

消費税0%を想定しなかったシステムエンジニアを糾弾すべき--システム設計のミスであり、即刻廃棄すべし

食料品の消費税を0%にして一般国民の負担を軽減しようという政策が議論されている。しかし、係数を0にすると計算結果に不具合が出るというレジシステムがあることが明らかになった。0%で正しく計算できるようにプログラムを改修するのに1年掛かるという。一方で、1%にしたとしても改修に半年掛かるという。

 いずれにしてもおかしな話ではないかと思うのである。

 消費税が始まった後に開発された電卓には「消費税」というボタンがあり、あらかじめ税率をセットしておけば一発で計算できるようになっている。税率が変われば、係数を変更するだけである。おそらく0%にも対応しているし、消費税が0%ならそもそも係数を掛けずに計算すれば済む。

 ところが現在のレジシステムのプログラムにおいては、消費税を0にすると正しい結果が出なかったり、エラーになったりするものが多数作られているという。さらに税率が小数点以下の数字を入れられないものもあるという。

 つまり、「消費税率は正の整数」とフィールドを定義したと思われる。そうすると、消費税として入力できる最小値が1%ということになるのである。

 おそらく、システム開発の最初の定義書に、税率のフィールドを正の整数にするように指示があったと思われる。それは政府からの指示かも知れない。そう定義しないと検査を通せなかったのかもしれない。

 それでも、小数点以下や0%の定数にも対応できるようにシステムを組むのが、プログラマーの常識なのではないのだろうか。どうせ、%で計算するのなら「×0.01」をし、結果となる数字の整数での切り上げ処理をしなければならないのだから、消費税フィールドは0でも問題ないはずではないか。

 もちろん、10進数を2進数で内部計算するコンピュータには、さまざまな落とし穴がある。普通に使われているExcelでも、単純な四則演算でおかしな答が出てくる。プログラマーならそれを回避するテクニックは持っていて当然だと思うのである。

 消費税が1989年に導入されて既に37年が経つ。その間にバージョンアップするチャンスはいくらでもあったはずである。

 こんなプログラムばかり作る日本のプログラマーやシステム開発企業には退場してもらいたい。

 アンソロピックという生成AIは,コンピュータシステムの不具合を強力に検出できるという。日本でもまず銀行システムからチェックが始まるようだが、消費税システムやマイナンバーシステム、年金システムなどもチェックすべきかも知れない。ただし、おそらくマイナンバーシステムは旧態依然な大型コンピュータ時代のプログラムをベースにしていると考えられる(マイナポータルへのアクセスに不満--毎回カードをPCカードリーダーやスマホで認識する必要があることが不便【追記-いずれもカードなしで使える方法にアップデート】 - jeyseni's diary 2024/2/12)ので、「検査対象外」とされるように思える。情けない限りである。