CSV自動化を作ったけど最初に失敗した設計|Python実践ログ | SORAXIOM

CSV自動化を作ったけど最初に失敗した設計

スポンサーリンク
Python実践ログ
スポンサーリンク

きっかけは「CSVを整えるだけ」

CSVを読み込んで、
少し加工して出力する。

それだけの作業でした。

手作業だとミスが出やすいので、
「これは自動化できそうだ」
と思ったのが始まりです。


最初に書いたコード

最初は、処理の流れをそのまま
1つの関数に書きました。

def process_csv(file):
    rows = read_csv(file)
    result = []
    for row in rows:
        if row["status"] == "active":
            row["price"] = int(row["price"]) * 1.1
            result.append(row)
    write_csv(result)

この時点では、

  • 条件も
  • 加工も
  • 出力も

全部まとめて書いています。


すぐに困ったこと

しばらくすると、
要件が少し変わりました。

  • 条件が1つ増える
  • 別のCSVにも使いたい
  • 加工ロジックを切り替えたい

すると、
この関数は一気に触りにくくなりました。

「直せるけど、毎回怖い」
という状態です。


失敗の原因

振り返ると、
失敗の原因ははっきりしていました。

  • 条件
  • 加工
  • 出力

を分けて考えていなかったことです。

「CSV処理」という言葉で、
全部を一つにまとめてしまっていました。


設計を変えた後

そこで、役割ごとに処理を分けました。

def filter_active(rows):
    return [r for r in rows if r["status"] == "active"]

def apply_price_change(rows):
    for r in rows:
        r["price"] = int(r["price"]) * 1.1
    return rows

処理を分けただけですが、

  • 条件変更が楽になる
  • テストしやすくなる
  • 他のCSVにも流用できる

ようになりました。


作って分かったこと

このCSV自動化で分かったのは、

  • CSV処理は意外とすぐ変わる
  • 最初の「まとめ書き」は後で効いてくる
  • 分けておくと判断が楽

ということです。

完成形よりも、
「どこで失敗したか」を覚えておく方が、
次に活きると感じました。


おわりに

この話は、
CSV自動化を作ってみて
最初に設計でつまずいた経験を
そのまま残した実践ログです。

コメント

タイトルとURLをコピーしました