v1.2.0 (2025-11-25)
Part 1: 最小セット
ルール(エンドユーザ向けに画面表示名で説明)
- 本セクションでは、実際の画面に表示される名称(ランチャー・メニューなど)をそのまま用いて説明します。
- 技術用語や内部モジュール名はできる限り避け、操作手順と見た目を優先して記載しています。
- PyInstaller でビルドした exe を使うことを前提に、インストール済みアプリとしての挙動を説明します(コマンドライン操作が不要なユーザ向け)。
- ボタンやメニューの表記は画面表示どおり(例: 「水文データ取得」「気象庁 雨量データ取得」「メニュー」「ヘルプ」)を使い、内部のファイル名やモジュール名は出しません。
- 画面の流れを優先し、設定ファイルや実行パスの詳細は最小限(必要なら Part 2 を参照)。
- 出力先・ログ先は「標準の保存先」として案内し、実際のパスは補足レベルにとどめます。
- スクリーンショットを載せる場合は、ランチャー・水文・気象庁の3画面に絞り、デバッグ出力は含めません。
- exe を主経路として説明し、Python 実行時の注意は補足扱いとします。
今回の変更(要約)
- アプリを起動すると「ランチャー」が開き、「水文データ取得」と「気象庁 雨量データ取得」をボタンで選べます。どちらを開いても、上部の「メニュー」からもう一方へ移動できます。
- ランチャーのタイトルにバージョンを表示し、画面上のボタン名やメニュー名を統一しました。
- 「気象庁 雨量データ取得」では、都道府県リストの読み込み中にリスト上へ「読み込み中」を重ねて表示し、完了後に通常表示へ戻ります。設定ファイルが無くても標準の保存先に出力・ログが書き出されます。
変更内容詳細
- 「ランチャー」を起動すると「水文データ取得」「気象庁 雨量データ取得」を選んで開けます。どちらも別ウィンドウ(Toplevel)で表示されます。
- ランチャーのタイトルにバージョンを表示し、画面上のボタン名やメニュー名は統一しています。
- 「気象庁 雨量データ取得」画面:
- 都道府県リストをバックグラウンドで読み込み、リスト上に「読み込み中」を重ねて表示し、完了したら自動で消えます。
- 出力先を指定しなくても標準の保存先(csv/excel/logs)に保存します。
- 画面上部の「メニュー」から「水文データ取得」へ移動でき、「ヘルプ」も同じ「メニュー」にあります。
- ログは標準の保存先に出力され、exe の場合は実行ファイルのあるフォルダを基準に保存します。
注意点
- 「気象庁 雨量データ取得」を初めて開くときは都道府県リストを読み込むため、しばらく「読み込み中」の表示が出ます(通信状況で時間が変わります)。
- exe 版の場合は追加の操作は不要ですが、Python 実行環境から起動する場合は事前に依存ライブラリ(例: BeautifulSoup)をインストールしてください。
- exe を自作する場合は、ビルド時に
--paths src と pyproject.toml を同梱するオプションを付ける必要があります。
画面イメージ
ランチャー: 「水文データ取得」「気象庁 雨量データ取得」のボタンを表示し、タイトルにバージョンを表示。

気象庁 雨量データ取得画面

気象庁 雨量データ取得:「メニュー」に「水文データ取得」への遷移と「ヘルプ」

出力例

Part 2: 詳細版
ルール(開発者向け / Part 1 の補足)
- 内部実装や設定ファイル・パスの詳細、ビルド手順などを記載します。画面表示名よりも技術的な用語を優先します。
- PyInstaller ビルドや Python 実行時のオプション、依存ライブラリなど、運用・開発に必要な情報を補足します。
概要
- JMA(気象庁雨量データ取得モジュール)を統合し、ランチャーから water_info と並列起動できるようにした。Toplevel 子ウィンドウ方式を採用し、メニューで相互遷移を可能にした。
- 出力先/ログ/パス解決を JMA 側も本体と揃え、config.yml 不在時でもデフォルトパスで動作。ログのデフォルトは
jma_rainfall/logs/app.log(凍結時は exe 親基準)。
主要な技術変更
- エントリポイント:
main.py → src/launcher.py。単一 Tk ルートでランチャーを起動し、各モジュールは Toplevel で生成。
- 名称/バージョンの一元管理:
src/app_names.py(importlib.metadata → pyproject.toml → fallback)でアプリ・モジュール名とバージョンを提供。ランチャー/メニューで参照。
- JMA GUI 起動高速化:
browse_tab.py で都道府県取得を非同期化し、リスト上にオーバーレイ表示。観測所リストは通常表示のまま。
- fetcher/controller の import を遅延化。
- 出力先強制指定を撤廃し、config 不在時はデフォルト(
jma_rainfall/csv, .../excel, .../logs)へ自動フォールバック。
- ログ初期化:
app_logger.py で import 時初期化を廃し、get_logger() 呼び出し時に遅延実行。デフォルトログを jma_rainfall/logs/app.log に固定し、凍結時は sys.executable 親基準。
- メニュー整理: water_info / JMA 相互遷移をメニューに集約、JMA ヘルプもメニュー配下に移動。
ビルド / 実行メモ
- PyInstaller (Windows)
- onedir:
uv run pyinstaller water_info_acquirer_onedir.spec
- onefile:
uv run pyinstaller water_info_acquirer_onefile.spec
- GitHub Actions:
v* タグ push で build.yml が実行。spec から version 付き成果物名を組み立てて zip し、ドラフトリリースへ添付。
- パス解決:
path_utils.get_project_root() が pyproject.toml/.git を上位探索。凍結時は sys.executable 親を返し、出力/ログはこのルート基準。
- 依存:
requirements.txt に beautifulsoup4 など。JMA GUI は依存未導入だと ImportError になるため、ビルド前に uv pip install -r requirements.txt 推奨。
既知の注意事項 / 運用
- 初回起動時は都道府県一覧の取得に時間がかかる場合がある(通信状況依存)。オーバーレイは非同期取得完了で消える。
- config.yml 不在でも
jma_rainfall/csv / jma_rainfall/excel / jma_rainfall/logs/app.log に自動出力される(ルートは get_project_root() 基準)。
- ランチャーと各モジュールは Toplevel 子ウィンドウで起動し、子を閉じると終了する挙動で統一。