【要約】git pullでデータが消えた - 保存先設計を3回変えた話 - Day 8 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、ツールのデータ保存先設計において、ユーザーの利便性とデータの安全性という相反する課題に直面した。具体的には以下の問題が発生した。
- ・環境変数によるパス指定は、ユーザーに手動設定を強いる。
- ・リポジトリ直下への配置は、git pull 時に管理外ファイルが消失する。
- ・外部操作によるデータへの干渉を完全に防げない。
// Approach
開発者は、外部操作による干渉を避けるため、OSが管理するユーザーデータ領域への移行を決定した。以下の手法を採用している。
- ・OS標準のパス(Linux:
~/.local/share/, Windows:%APPDATA%, macOS:~/Library/Application Support/)を採用。 - ・
platformdirsを使わず、platform.system()による軽量な自前実装を選択。 - ・
create_path関数により、各OSのベースパス取得とディレクトリ作成を自動化。
// Result
開発者は、設計変更により、データの安全性と運用の容易性を両立させた。これにより以下の成果を得ている。
- ・Git操作やアプリ更新によるデータ消失リスクを排除。
- ・環境変数設定なしで、全モジュールが同一パスを参照可能。
- ・外部ライブラリを排除し、配布バイナリの軽量化を実現。
Senior Engineer Insight
> データとバイナリの分離は、アプリケーションの堅牢性を保つ鉄則である。本件のように、Gitの挙動による意図しないデータ消失は、実務でも起こりうる深刻な問題だ。
platformdirs を使わず自前実装する判断は、配布サイズを重視するCLIツールとしては合理的である。ただし、OSごとの権限管理やパスの差異による不具合を防ぐため、マルチプラットフォームでの検証は必須となる。