Water-Info-Acquirer リファクタリング計画(案)¶
最終更新: 2025-10-10 JST
対象リポジトリ: Pckk-solvers/Water-Info-Acquirer
Note
これは「内部構造の改善」を目的とした計画書です。外部仕様(GUI/CLI、Excel体裁)の変更は最小限に留めます。
1. 目的(ゴール)¶
- 重複ロジックの排除(日/時データ取得・Excel出力の共通化)
- 責務分離(GUI と 取得/整形/出力 の分離)
- テスト容易性の確保(最小ユニットテスト導入)
- 運用性の改善(ログ/例外ハンドリング整備)
- 将来の拡張に耐えるパッケージ構造 への再編
2. 背景と現状(要約)¶
- 実装の集中:
src/water_info/main_datetime.pyに取得・整形・Excel出力・GUIが同居。 - 重複:
src/water_info/datemode.py側にも類似の取得/出力処理。 - 入口:
main.py(ランチャー)、python -m water_info(water_info単体)。 - 課題: 重複/結合度高/抽出処理の脆さ/ログ不足/テスト整備の余地。
3. スコープ¶
- 対象: データ取得/整形、Excel 出力、GUI 呼び出し部、エラー/ログ、パッケージ構成、最小テスト。
- 非対象: 新機能追加、外部仕様変更(CLI・Excel体裁)。
4. 目標パッケージ構成(最終像)¶
text
src/
wia/
__init__.py
data_source.py # 取得・整形(URL生成/観測所名抽出/日・時系列の共通パス)
excel_writer.py # Excel出力(全期間/年別/summary/チャート共通)
gui.py # WWRApp(UIは入力/表示のみ)
errors.py # EmptyExcelWarning など
constants.py # モード→KIND/単位/ラベル等のマップ
types.py # TypedDict / Protocol / 型定義
5. ブランチ計画(優先順位 / ブランチ名 / 概要)¶
| P | ブランチ | 概要 |
|---|---|---|
| 1 | refactor/p1-parse-fetch-core |
取得コア統合・共通API化 |
| 2 | refactor/p2-excel-writer |
Excel出力の共通レイヤ分離 |
| 3 | refactor/p3-gui-separation |
GUI分離(UI薄く/サービス呼び出し) |
| 4 | refactor/p4-error-logging |
logging導入・例外/終了コード整理 |
| 5 | refactor/p5-package-layout |
最終パッケージ構成へ移行 |
| 6 | refactor/p6-tests |
pytest最小導入・回帰テスト |
| 7 | refactor/p7-perf-session-concurrency |
Session化・任意の並列 |
| 8 | refactor/p8-style-typing-ci |
Ruff/Black/mypy・CI補強 |
6. 開発ワークフロー(どう進めるか)¶
- 小PRの連続(1PR=1目的)
- 互換性維持(出力やUIは原則維持)
- テスト/ログを並走(破壊的変更を避ける)
7. 元資料¶
docs/water_info_acquirer_リファクタリング計画書_v_1.md(初版)