【要約】時間記録をCSVで行う理由 - Day 9 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者は、ローカルツールにおけるデータ保存形式の選定において、以下の課題に直面した。
- ・SQLite等のDB採用によるバイナリサイズと依存関係の増加。
- ・データ処理機能(NN機能)へのデータ受け渡しにおける実装負荷。
- ・深夜から翌朝にかけての作業など、日付をまたぐ記録の正確性確保。
// Approach
開発者は、軽量性とデータ処理の容易さを両立するため、CSV形式による設計を採用した。
- ・日付(start-date/end-date)と時刻(start-time/end-time)を分離したカラム設計。
- ・ファイル名に年月を含める(time_YYYY-MM.csv)ことによる、月単位の自動分割管理。
- ・Pythonによる追記型(append)の実装と、TypeScriptによるフロントエンド描画。
// Result
開発者は、低コストかつ高精度な記録システムを実現した。
- ・DBエンジンを排除したことによる、パッケージの軽量化。
- ・日付と時刻の分離により、日付をまたぐ作業も正確に記録可能となった。
- ・月別ファイル分割により、長期間の使用でもファイルが肥大化しない設計を実現した。
Senior Engineer Insight
> ローカルツールにおける「KISS原則」に基づいた合理的な設計である。DBを排除し、ファイル分割で肥大化を防ぐ手法は、運用コストを最小化する。ただし、フロントエンドで
row[1] のようにインデックスで列を指定する実装は、スキーマ変更時に即座にバグを誘発する。実戦では、ヘッダー名に基づいたマッピング処理を導入すべきだ。