なぜ同じ「○」なのに、システムが動かぬ理由

システム・IT活用

「スペース?コマンドのミス?なんで動かないんだ…」

鶏肉加工品の生産予定を管理するシステムをVBAで開発していたときにおきた今日の話です。

4つの班のデータを処理するプログラムを書いたのですが、1班・3班は正常に動いて、2班・4班だけスルーされる。

おかしい。条件式は全部同じはずなのに。

Loopで同じプログラムを数字と参照を変えて 1→2→3→4 と回しているだけ。

スペースが混入しているのか、コマンドのミスか、いろいろ確認しましたが、どこも間違っていない。バグ!?

あっちゃ、こっちゃ探して……しばらく悩んで、ようやく犯人を見つけました。


こちらをご覧ください。

違いわかりますか?

4つ全部、同じ「○」に見えますよね?

でも、プログラムの内部ではこう見えています。

1班 → 〇(漢数字のゼロ U+3007)
2班 → ○(記号の白丸  U+25CB)
3班 → 〇(漢数字のゼロ U+3007)
4班 → ○(漢数字のゼロ U+3007)

人間の目では、絶対に区別がつきません。特に、プログラムのエディター画面は文字も小さくて・・・

Excelのセルに入力された「〇」と、プログラムが比較している「○」が微妙にズレていた。たったそれだけで、条件が一切マッチしなくなっていたのです。
確かに、太字で見やすいなと思っていたけど、まさかこんなことが・・ 42分 時間溶かしましたよ 涙


これは「○」だけの話ではありません。

たとえばこちら。

コーヒー
コーヒー

「長いのと短いの、2種類だな」

…と思うじゃないですか。

実は4つ全部、別の文字です。

「ー」→ 長音符 U+30FC
「ー」→ 全角ダッシュ U+2014
「ー」→ 半角長音符 U+FF70
「ー」→ 半角ハイフン U+002D

システムには4種類の「コーヒー」が存在しています。

手入力のデータが混在する現場では、こういうことが静かに起きています。


データを目で見て「合ってるはず」と思っても、システムには別物として映っていることがある。

「動くはずなのに動かない」という場面に遭遇したら、文字コードの混在を一度疑ってみてください。


株式会社京都みえる化デザイン研究所
中小企業診断士 平澤貴啓