【要約】AIと作った「CSV・Excel結合ツール」、汚いデータを食わせたら設計が変わった話 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
Python初心者がAIを用いて作成した結合ツールが、実務特有の非定型データによって破綻した。開発者は、理想的なデータ構造を前提としたコードでは現場で通用しないという問題に直面した。
- ・見出し行の不在:1行目が空行やタイトル行である場合、列名が正しく認識されない。
- ・列構成の不一致:列名が異なるファイルが混在し、意図しない列の増殖やデータの混濁が発生する。
- ・ファイルシステム上の制約:Excelの一時ファイル(~$)を読み込み、エラーが発生する。
- ・文字コードの混在:UTF-8とShift-JIS(cp932)が混在し、読み込みエラーが発生する。
// Approach
開発者は、AIのコードを実務レベルへ引き上げるため、入力の不確実性を前提とした防御的設計を採用した。
- ・動的なヘッダー検出:header=Noneで全読み込み後、notna().sum() >= 2を用いて有効な見出し行を特定する。
- ・集合演算による整合性チェック:isdisjointを用い、共通の列名を持たない無関係なファイルを結合対象から除外する。
- ・ファイルフィルタリング:os.path.basenameで~$から始まる一時ファイルを除外する。
- ・文字コードのフォールバック:try-exceptを用い、UTF-8で失敗した場合はcp932で再試行する。
// Result
開発者は、実務における「入力の汚さ」を吸収できる、堅牢なデータ結合ツールを実現した。
- ・エラー耐性の向上:非定型なExcel構造や文字コードの差異による停止を回避した。
- ・データの信頼性確保:共通列の有無によるスキップや、元ファイル名の付与により、検証を容易にした。
- ・運用の安定化:出力ファイル名への日時付与により、意図しない上書きを防止した。
Senior Engineer Insight
> 本記事は、AI生成コードの限界と、実務における例外処理の重要性を鋭く突いている。単なる結合よりも、入力の不備を検知・排除する視点が、プロのツール開発には不可欠である。ただし、大規模データに対しては、pandasのメモリ消費や、動的なヘッダー探索のコストが課題となる。スケーラビリティを考慮するなら、Polarsへの移行や、スキーマ定義の厳格化を検討すべきだ。