全国オンライン対応受付 平日 9:00-18:00
お問い合わせ

開発記録 / 現場の実装ノート / Vol.44 現場の実装ノート Vol.2 見えないところの、ほころび

記事 01

「4」は、数字じゃなかった——全角のまま、計算に混ざっていた

四百件の出荷データを、一括で別の形式に変換する。そういう処理を動かした朝だった。件数も多いし、手作業では追いつかない。だから自動でやる。動かして、出てきたファイルを開いて、血の気が引いた。

2026-07-04 公開

四百件の出荷データを、一括で別の形式に変換する。そういう処理を動かした朝だった。件数も多いし、手作業では追いつかない。だから自動でやる。動かして、出てきたファイルを開いて、血の気が引いた。

個数の欄が、そろっていない。ある行は正しく、ある行はゼロ。金額の合計も、明らかに合わない。ロジックは何度も見た。おかしいところはない。なのに、数が壊れていた。

見た目は同じ、中身が違う

原因は、数字そのものにあった。

元のデータに並んでいた数字は、全角だった。「4」や「12」。人の目には、半角の「4」や「12」と区別がつかない。同じ数に見える。けれど、コンピュータにとっては、まったくの別物だった。

「数」ではなく「文字」だった

全角の「4」は、数字の顔をした文字だ。

プログラムがそれを数として読もうとすると、うまく読めない。ゼロになったり、計算から抜け落ちたりする。並べ替えれば、想定と違う順に並ぶ。エラーで止まってくれればまだいい。多くの場合、止まらずに、静かに間違った結果を出す。

四百件の中に、全角と半角が混ざっていた。人が手で打った行、別のシステムから来た行。出どころが違えば、数字の種類も違っていた。

入口で、形をそろえる

直し方は、読み込む入口に一つ処理を足すことだった。

外から来た文字を、まず半角にそろえる。全角の数字を半角へ、ついでに全角の空白や記号も、扱いやすい形に直す。そのうえで、はじめて数として読む。この一段を入口に置いてから、四百件が正しく通るようになった。

人が打った文字は、揺れる

この件で、改めて思い知ったことがある。

人が入力した文字は、見た目が同じでも中身が揺れる。全角と半角、余分な空白、似て非なる記号。打った本人に悪気はない。ただ、入力という行為には、必ず揺れがついてくる。

だから、外から来た文字はそのまま信じない。数として使う前に、いちど自分の形にそろえる。境目で整えておけば、その先の処理は、きれいな数字だけを相手にできる。

「見えないほうが怖い」を、覚えておく

全角数字のこわいところは、目で見て気づけないことだ。

エラーは出ない。画面上は、正しい数字がちゃんと並んでいるように見える。なのに、裏では計算が狂っている。「動いているのに、間違っている」。この種のバグは、探そうとしても目に映らない。

だから今は、数字を受け取る場所を作るたび、一度手を止める。この数字は、どこから来たのか。人が打ったのか、機械が吐いたのか。出どころを思い出すことが、揺れに備える第一歩になっている。