【要約】pandas を使うエンジニアが嫌い ~DataFrame がプロダクトコードを壊す理由~ [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
ソフトウェアエンジニアが、利便性を優先してpandasをプロダクトコードに導入することで、システムの堅牢性が損なわれる問題に直面している。具体的には以下の課題がある。
- ・型ヒントがDataFrameの内部構造を保証できず、型安全性が失われる。
- ・ベクトル演算による複雑なロジックが、コードの可読性を著しく低下させる。
- ・欠損値の表現が混在し、予期せぬ型エラーを誘発する。
- ・C言語依存のライブラリにより、実行環境のアーキテクチャに制約を受ける。
// Approach
著者は、pandasの利用範囲を限定し、アプリケーションの核となる部分には型安全な設計を導入することを提案している。
- ・業務ロジックには dataclass 等を用いたオブジェクト指向的な記述を採用する。
- ・pandasの利用は、初期のEDA(探索的データ分析)に限定する。
- ・ファイルI/Oの境界層でのみpandasを使用し、内部では型定義されたクラスへ変換する。
// Result
設計を見直すことで、開発チームは以下の成果を得られる。
- ・型ヒントによる厳格なインターフェース定義が可能になり、実装ミスが減る。
- ・ロジックが明示的になり、コードの可読性と保守性が向上する。
- ・環境差異によるデプロイ失敗のリスクを低減できる。
- ・データ構造の不整合によるランタイムエラーを未然に防げる。
Senior Engineer Insight
> 現場視点では、pandasの便利さは負債と隣り合わせだ。大規模トラフィックを捌くAPIや、厳格な型安全性が求められる環境において、DataFrameを引数に渡す設計は極めて危険である。データ構造がブラックボックス化し、デバッグコストを増大させるからだ。データサイエンス領域とソフトウェアエンジニアリング領域の境界を明確に引き、境界線では必ず型定義されたDTOへ変換する設計を徹底すべきである。