AIseed Weather 開発マニュアル

初期開発段階 コードは AGPL-3.0-or-later で公開している。このページは開発に参加する (あるいは自分用に改造する)人向けで、使い方は 紹介ページにある。 内容の正本はリポジトリの README.md / AGENTS.md / CLAUDE.md。

環境構築

環境はリポジトリの中に ./.venv として作る。 名前つきのグローバル環境にはしない。

mamba env create --prefix ./.venv -f environment.yml
mamba activate ./.venv
python -m aiseed_weather.main

パッケージは Miniforge / conda-forge(uv ではない)。 cartopy と cfgrib はネイティブ依存(PROJ・GEOS・ecCodes)を持ち、 pip だけで揃えるのが難しいため。 environment.yml が開発環境の正本で、 pyproject.toml は配布メタデータ。

リポジトリの構成

場所中身
src/aiseed_weather/ アプリ本体。components(UI 部品)/ figures(描画)/ models / products / services(データ取得)に分かれる。 入口は main.py
.agents/skills/ 領域ごとの開発ガイド 13 本(下記)
WeatherStatic/ Web サイト(個人開発気象統計)。アプリとはデータ基盤を共有する
docs/ Web サイトとデータ基盤の文書(目次は docs/README.md)。運用手順・配信仕様。 アプリが読むデータの形はここで決まる

進め方 — スキルを読んでから書く

変更する領域に対応するスキル(.agents/skills/)を 編集の前に読む。これが唯一のハードルール。 Flet の API 取り違えなど、実際に起きたバグはどれも読んでいれば防げた。

どのスキルを読むかは、作業の種類ごとに AGENTS.md の表で決まっている。 複数が当てはまるときは下の順に読む。いつも読むのは aiseed-conventions、 データを表示するビューに触れるなら user-action-fetch も。

順スキル何のガイドか
1aiseed-conventionsプロジェクト全体の決まりと想定利用者(いつも最初に)
2flet-declarativeこのプロジェクトでの Flet UI の書き方
3flet-component-basicsFlet 0.85+ の入口・@ft.component・hooks
4user-action-fetchいつ・どうデータを取ってよいか(データを出すビュー全部に関係)
5first-run-setupconfig.toml の読み込みとデータソースの選択(設定画面は無い)
6ecmwf-data-accessECMWF Open Data と ERA5(データの中核)
7data-flow地図ビューで取得・GRIB キャッシュ・層・描画がどうつながるか
8climatology-analysisERA5 の気候値・アノマリ・パーセンタイル(差別化の核)
9jma-data-access気象庁のレーダーと AMeDAS(日本の現況)
10weather-rendering総観規模の地図描画
11chart-base-design図の層構造(base / data / isoline / pill)
12figure-export出典つきの書き出し
13open-meteo-access補助の地点予報(優先度は低い)

二つの設計原則

1 データソースは利用者が選ぶ。 ~/.config/aiseed-weather/config.toml を 起動前に編集する。アプリは勝手に選ばないし、設定 UI も出さない。 気象庁だけは機能ごとに有効(公開・無料の API のため設定キー不要)
2 取得は利用者の操作時だけ。 ビューを開く・更新を押す・パラメータを変える。 バックグラウンドポーリングなし、自動更新なし、先読みなし

データ層(それぞれ役割が違う)

層出所役割
予報格子ECMWF Open Data。config.toml で選んだミラー(GCP / AWS / Azure / ECMWF 直)から (cycle, step) ごとに一括 GRIB を HTTPS で取る。aiseed の再配布パックも選べる 未来・地図ビュー
気候値・アノマリERA5(AWS)。サービスはまだ無く、地点予報の平年値は今は Open-Meteo の過去データから歴史的文脈。差別化の核
日本の現況気象庁レーダー + AMeDAS「いま」のナウキャスト
地点予報Open-Meteo補助ビュー

気象庁の観測は、このサイトでもまとめて配っている。気象庁では約 9 日で消える AMeDAS の 10 分値・1 時間値は アメダス 10 分値アーカイブ、 日別の気温・降水・日照(1880 年〜)は 日別の観測データ。 配信の形は docs/ を参照。

技術構成

UIFlet(Python、宣言的コンポーネント)
処理xarray + cfgrib(GRIB2)、numpy
地図の描画numpy + PIL + contourpy(figures/_layered_renderer.py)。 cartopy は海岸線のマスクを前もって作るためだけに使う
地点予報のグラフ画面は flet.canvas、PNG のダウンロードは matplotlib
書き出し予定(figure-export スキル)

ライセンスと帰属

コードAGPL-3.0-or-later
ECMWF・Open-Meteo のデータCC-BY-4.0。書き出す図に帰属を埋め込む
気象庁のデータ出典: 気象庁ホームページ(加工した場合はその旨も)

帰属表示は UI と書き出した図の両方に入る。ここは削らない。