先日、データの保持方法について書きました。
ajya.hatenablog.jp
テスト用のデータを用意し、データを取得して処理を行った結果、正しく処理が行われているのを確認しました。
条件を変えたテスト用のデータを用意して同様に試したところ、処理結果が正しくありませんでした。
処理結果が正しくなかった原因を調べると、2次元配列に保持したデータを処理する部分が正しくありませんでした。
日付と特有の番号を2次元配列の添字にして、データを連想配列として保持しているデータを、日付毎に処理するようになっていたのが原因でした。
特有の番号が異なっていれば別々に処理すべきですが、別々に処理されていませんでした。
原因が分かったので、日付と特有の番号を用いて処理をするように修正すればいいのですが、修正のために後続の処理も含めて改めて考えなおすと、単純には直せそうもありません。
単純には直せそうもないと考えたのが正しいのか、実際試してみましたが、考えた通り後々の処理も含めてややこしい処理を追加しなければなりません。
元々複雑な処理の実装を完了したシステムを、なるべくわかりやすく単純な処理に置き換えていけないか、2次元配列は止められないかと検討しつつテストをしていました。
さらに複雑な処理を追加するのは、今後のメンテナンスや、現状気がついていない新たな不具合への対応を考えたら、破綻が予想されます。
データの保持方法として2次元配列を止め、単純な連想配列に置き換え、関連する部分の処理を全て置き換えるという決断をしてシステムを大幅修正しました。
影響範囲は大きく、2日間にわたって修正を行い、テストに1日かけてやっと修正が終わりました。
2次元配列にしたおかげで楽にデータを出し入れできていた部分ができなくなった分、時間がかかりました。
これで不具合が全てなくなったとは思いませんが、新たな不具合が発生した場合でも、修正がしやすくなったと考えています。