【要約】ファイル読み込みモジュールの設計 - NN機能を見据えたクラス設計 - Day 10 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、既存の
goals.py内に読み込み処理を実装していた際に、設計上の課題に直面した。単一のファイルに処理を詰め込むことで、以下の問題が発生した。- ・機能ごとに読み込み処理を個別に実装する必要が生じた。
- ・修正時の影響範囲が広がり、保守性が低下した。
- ・NN機能と
goals.pyの依存関係により、責務が不明確になった。
// Approach
開発者が、将来の機能拡張を見据えて、ファイル操作専用の
FileSearchクラスを設計した。設計の核となる手法は以下の通りである。- ・
file_operations.pyとしてモジュールを独立させた。 - ・年月をインスタンス変数で保持し、参照範囲を明示的に固定した。
- ・パース処理の違いに基づき、CSVとJSONLのメソッドを分離した。
- ・読み込みモジュールの責務を全件返却に限定し、フィルタリングを呼び出し側に委ねた。
// Result
開発者が、モジュールを独立させたことで、保守性と拡張性を両立させた。この設計により、以下の成果が得られた。
- ・読み込み処理の再利用性が向上した。
- ・NN機能でのデータ混入を防ぎ、予測精度を担保した。
- ・フロントエンドでの柔軟なフィルタリングが可能になった。
Senior Engineer Insight
> 責務の分離と拡張性の確保という設計思想は、実戦的で評価できる。しかし、大規模トラフィックを想定する現場では、以下の懸念がある。
- ・全件返却は、ファイル肥大化時にメモリを圧迫する。ジェネレータによるストリーム処理を検討すべきだ。
- ・エラーを文字列で返す設計は、型安全性を損なう。例外を適切にスローすべきだ。
- ・設計の意図を記録する姿勢は、チーム開発において極めて重要である。