概要
- FediMeteo は、天気予報を ActivityPub タイムラインに自動投稿するプロジェクト
- インスピレーションは 祖父 と個人的な天気への関心から
- FreeBSD jails と snac を活用した設計、国ごとに分離管理
- アクセシビリティ重視、 多言語・絵文字・テキストブラウザ対応
- 2025年12月時点で 38カ国 に拡大、安定運用中
FediMeteoの誕生と背景
- 天気が生活に与える影響を実感した経験、特に スポーツ時代や通学 の判断
- 祖父が 家庭の気象予報士、その影響を受けてプロジェクトを発案
- ふとしたきっかけで ドメイン取得、計画を開始
- 目標: 自分のタイムラインで定期的に天気情報を受け取る 仕組み
設計思想と選択
- 国ごとにインスタンスを分離、FreeBSD jailによる管理
- VPS は低コスト(4ユーロ/月)のものをイタリア・ミラノで利用
- 各国を分離することで 管理性・セキュリティ・移設性 を確保
- 天気データは wttr.in または Open-Meteo から取得
- アクセシビリティ重視
- 地元言語対応、テキストブラウザ閲覧可、絵文字で直感的理解
- JavaScript不要、母語での情報提供
- UNIX哲学 :小さな部品の連携でシンプルに構築
- インスタンス管理は snac を採用
- ActivityPub対応、RSS出力、低リソース消費、安定性
- 開発者の対応力も高評価
- 自己満足のためにも運用、反響がなくても継続する心構え
技術的実装
- 各jailが全て内包、Pythonスクリプトで都市ごとにデータ取得・Markdown生成
- 都市座標は geopy で計算し、APIコールで天気取得
- ローカル保存なし、都度取得・投稿
- snacの snac note コマンドで直接投稿、APIキー管理不要
イタリア用セットアップ
- 主要都市リストを正規化(例:La Spezia→la_spezia、Forlì→forli)
- スクリプトで都市ごとにsnacユーザー作成、プロフィール自動設定
- 都市追加もスクリプトで簡単に対応、cities.txtに自動反映
コアアプリ開発
- Pythonアプリで都市名・国コードを受け取り、 現在・12時間後・7日間 の天気を取得
- Markdownで出力、snacに直接渡して投稿
- 更新用の post.sh (shスクリプト)で全都市巡回・自動投稿
- Uptime-Kuma で監視、失敗時はアラート通知
- cronで 6時間ごと に自動実行、都市ごとに順次投稿
拡大と反響
- イタリア全都市でテスト、調整を重ねて運用安定化
- 投稿の言語設定問題も snac開発者の迅速な対応 で解決
- 他国展開を開始し、 多言語・絵文字 でアクセシビリティ確保
- ユーザーからのフィードバックで 翻訳ミスや多言語対応 を改善
- FediFollows による紹介で一気に認知度拡大、追加要望も増加
- 非公開投稿(unlisted) 要望もsnac開発者の対応で実現
スケール課題とグローバル対応
- 新規国追加で 単位系(C/F)・タイムゾーン ・同名都市問題が発生
- 都市名__州名 の形式で都市区別(例:new_york__new_york)
- VPSリソースの限界に挑戦、 snacとFreeBSDの効率性 を実感
- Open-Meteo のAPI制限も、運営側の協力で専用キーを取得
北米展開と運用状況
- アメリカ・カナダ 主要都市1200超をカバー
- 初期の米国での反応は意外にも低調、カナダ・ドイツ・英国で人気
- VPSは安定稼働、 日本・オーストラリア・ニュージーランド にも展開
- 2025年12月末時点で 38カ国 対応、安定した自動運用体制
今後の展望
- ユーザー要望・多国語対応 の継続的改善
- VPS・APIリソースの監視と最適化
- シンプルかつ堅牢な設計 を維持しつつ、さらなる拡大を模索