ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

同じようにやっているつもりでできていない

お客さんから、複数のCSVファイルを同じようにシステムに登録したが、1ファイルだけある列のデータが他のファイルと異なる結果になったとの連絡がありました。

原因:なぜ1ファイルだけ異なる結果になるのか

登録されたファイルを見てみると、他のファイルでは該当の列は「62107」という形式になっています。
1ファイルだけ該当の列は「062017」という形式になっています。
1文字目の「0」の有無の違いだけですが、システムとしては扱いが違ってきます。
テスト時点でも、1文字目に「0」があるデータが登録されるとはお客さんからは知らされていません。

f:id:AJYA:20180206055628j:plain
photo credit: marcoverch Dominoschlange via photopin (license)

対処:数値として扱う

後半4文字と残りの文字に分けて処理するようにシステムはなってます。
どちらも数値として扱える前提ができます。
前提通り、残りの文字が数値として扱えるかチェックを追加しました。
数値として扱えるなら文字から数値に変換して「0」を外して処理するように修正しました。

不思議な点:他システムから出力されたファイルをそのまま登録していない?

システムに登録するCSVファイルは、他のシステムから出力されたファイルをそのまま登録しているという認識をしていました。
実際はファイルによって結果が異なっているので、他システムから出力されたファイルをExcelで加工をされているようです。
お客さんは「同じように」Excelで加工の操作した認識をしていますが、実際には出来ていなかったようです。


本番運用が始まる前のテスト段階で、今回の現象は発生させて対応しておきたかったです。