Weather.gov 2.0 アップデート発表
(github.com/weather-gov)- Weathergov 2.0 リポジトリは、以前の Drupal コードベースに続く 2 回目の実装であり、Wagtail/Django への移行のために作られたプロジェクト
- 開発者はリポジトリをクローンした後、
just zapでコンテナを設定し、http://localhost:8080でアプリを、http://localhost:8081で API プロキシの状態を確認できる - ドキュメントディレクトリには、プロダクトオーナー、開発者、デザイナー、研究者などのためのガイドと アーキテクチャ決定記録 が含まれる
- AI 支援コードも通常のコード・レビュー基準に従って受け入れ可能だが、提出者はコード実行とテストを自ら行い、モデル名・バージョン・環境 などの出典情報をマージリクエストで開示しなければならない
- コードベースは、Wagtail CMS、Django サブアプリ、Node.js API レイヤーとプロキシ、Terraform インフラコード、Playwright E2E テストなどに分かれて運用されている
Weathergov 2.0 の性格
- この Git リポジトリは Weathergov 2.0 の 2 回目の反復 にあたる
- 以前のリポジトリには Drupal コードベースが含まれており、このリポジトリは Wagtail/Django への移行 のために作成された
ローカル実行方法
- リポジトリをクローンした後、
just zapを実行するとコンテナを設定できる - コンテナが起動したら、次のアドレスで確認できる
http://localhost:8080: アプリケーション実行画面http://localhost:8081: API プロキシの状態
ドキュメントと意思決定記録
docs/配下には、さまざまな役割向けのガイドがある- プロダクトオーナー向けドキュメント
- 開発者向けドキュメント
- デザイナー向けドキュメント
- 研究者向けドキュメント
- その他の役割向けドキュメント
docs/architecture/decisions/には アーキテクチャ決定記録 があり、現在の構造とその決定理由を説明している
AI 支援コードのポリシー
- プロジェクトは NAO 216-218 Artificial Intelligence in NOAA Policy, Executive Order 14179 "Removing Barriers to American Leadership in Artificial Intelligence", America's AI Action Plan に沿って AI 支援コード を受け入れることができる
- AI 支援コードは通常のコードと同じレビュー基準に従う必要があり、より高い品質基準が適用される
- 提出者は人間が書いたコードと同様に、次を満たす必要がある
- コードとテストを自ら実行していること
- コードが何をするかをチームに説明できること
- 解決しようとしている問題と提案した解決策を理解していること
- 提出されたコードの動作、バグ、副作用に対する責任は常に 人間の貢献者 にある
- すべてのマージリクエストは、AI 支援コードの有無を開示しなければならない
- 使用したモデル名とバージョン
- IDE、Copilot などの関連環境
- コードの出典を理解する助けになるその他の情報
- チェックリストでは、AI 生成コードの変更であることを明示し、自ら実行済みであり、専門家と非専門家の両方に対して変更点・問題・改善点を説明できることを求めている
コード構成
api-interop-layer: サイトと API の間に位置する Node アプリapi-proxy: API 呼び出しをプロキシし、静的データを挿入する開発・デバッグツールforecast/backend: 予報ページを提供する Wagtail CMSforecast/frontend: JavaScript とその他のクライアントサイド資産forecast/locale: 翻訳生成のためのメッセージファイルforecast/spatial: 空間データベースを管理する Django サブアプリケーションspatial-data: WFO マップを生成する Node.js ユーティリティアプリterraform: インフラ管理とサイトデプロイのためのコードtests/playwright: 実行中サイトに対する Playwright E2E テストtests/translations: 翻訳キーの存在を確認するテストスクリプトで、deprecated 状態justfile: 開発者コマンドを実行するファイルで、最新のmakefileに近い役割を持つ
1件のコメント
Hacker News の意見
18F(GSA)との契約/パートナーシップで進められているように見える: https://18f.gsa.gov/
「weather.gov はユーザーのニーズよりも組織のサイロをより強く反映している(コンウェイの法則)」と公開 README に書いてあるのは驚き。自分の組織なら、公開文書にあんなふうに書く度胸はなさそう
ステークホルダーが防御姿勢を解き、一貫した解決策のために協力できる安心感が勝負の半分であり、こうした「官僚制ハック」では信頼と関係構築が過小評価されている
サイロはどうしても生まれるもので、誰かのせいにしたいわけではない。問題が認められ、解決する意志があると分かれば、苛立ちはある程度抑えられる
ただし現地観測データは実際には USGS から来ており、データと Web サービスも waterdata.usgs.gov で提供されている
馬鹿げた質問かもしれないが、この 2.0 はどこかで実際に試せる状態なのか、それとも開発中のソースコードにすぎないのか気になる
8年ほど前、米国政府の航空気象プロダクトの一つに「実験的」サイトがあったが、本当に良かった。モダンで使いやすく、すっきりしていて、よくあるぎこちない政府系 Web サイトのようではなく、チームも良さそうだったが、数年単位の政府予算の仕組みに縛られていた。結局閉鎖され、記憶ではその成果物が本サイトに載ることはなかった
米国は、優れた気象サービスと、それを無料の公共財として提供すべき義務があるので幸運だ。ただし、良くなりすぎないようにする政治的圧力も多く、その結果、商業企業が利益を上げられるようになっている。少なくとも2005年の AccuWeather はそのような企業の一つだった: https://www.onthecommons.org/privatizing-weather/index.html
https://github.com/weather-gov/weather.gov/blob/smh--researc...
よくやっている。radar.weather.gov は素晴らしいサイトで、あらゆるデバイスで動作し、広告なしで非常によく機能しているので、このまま維持してほしい
速度もものすごく遅く、以前のバージョンに比べて有用な情報もさらに限られている
これが api.weather.gov にも影響するのか気になる。以前 Weather Underground に触発された小さなダッシュボード(https://weather.nikolaj.dev)を作って、今でもほとんどの日に使っている
ただ、サーフィンレポート用の海洋予報を自作しようとしていた作業は少し止まっている。あのフィールドを最終的に埋めてくれるとありがたい。そうすれば GRIB ファイルを自分で読み解く手間が省ける
些細な問題として、別の場所をすでに入力していたのに、数秒後に San Diego の天気へリダイレクトされた。位置情報リクエストをブロックしていたからかもしれない
政府関連のオープンソースプロジェクトがすべて一か所にまとまっているとよい。たとえば GitHub に usa-gov 組織があり、すべてのリポジトリに簡単にアクセスできるとよい
[0] https://code.gov/agencies
[1] https://github.com/nationalsecurityagency
政府向け GitHub [0] はあるにはあるが、コントリビューションに依存しており完成度は高くない
GSA は Obama 政権時代に、すべての政府プロジェクトの単一インデックスを作ることを目標に code.gov を始めた。Trump 政権で勢いが弱まり、Biden 政権では事実上予算が絶たれ、今では主要機関へリンクする程度で、タイムリーなインデックス作成の要件ももうない
私たちの組織だけでもリポジトリが約1000個あり、そうした機関が数百あるので、多少の努力なしに全部を集めることは想像できない。もともと code.gov は各自が Web サイトに code.json ファイルを置くと、GSA がそれらを収集して一つにまとめる方式で、かなりうまく機能していた。だからそれを止め、code.json の公開依頼も中止したのは本当に残念だ。よいアイデアだった
[0] https://government.github.com/community/
https://git.sr.ht/~codegouvfr/
すべての連邦機関が進める未来の姿のように思える。National Weather Service が先頭に立っていることに拍手したい
weather.gov の予報グラフは、私が知る中で最も有用なものの一つで、天気が気になるときに最初に見るものだ
例: https://forecast.weather.gov/MapClick.php?lat=37.7771&lon=-1...
ターミナルで kitten icat を使って表示するシェルエイリアスもあるが、mpv のショートカットのほうをよく使う。テキストの天気エイリアスもあり、以下のパスから自分の場所に合うファイルを curl で取得している:
https://tgftp.nws.noaa.gov/data/forecasts/zone/
自分の州のファイルをざっと見て適切なファイルを見つけたが、7日間予報ページの “More Local Wx” リンクにも正しいファイル名があるようだ。私の場合は ORZ006 だ
レーダーを表示する icat エイリアスもいくつか作ってある。現在、連続、ループ表示用で、レーダー名は radar.weather.gov と同じものを以下のページから取得している:
https://radar.weather.gov/ridge/standard/
ただし 1時間積算降水量ビュー(One hour accumulation view)が最もよいと思っているが、そのビューの画像を取得する方法が見つからず、普段は radar.weather.gov を見ている。最近は少しましになったが、ときどき私の環境ではまったく動かない
頻繁には見ないが、6〜10日および月間の気温・降水見通しを表示する icat エイリアスも作ってある:
https://www.cpc.ncep.noaa.gov/products/predictions/610day/
https://www.cpc.ncep.noaa.gov/products/predictions/30day/
contributing.MD ファイルは見えるが、実際にどう貢献できるのか判断しにくい。潜在的なコントリビューターとしては、どのような形で貢献するのが最善なのか分かるとうれしい
揚げ足を取るつもりではなく、役に立てばと思って共有する
直接、特化した体験を作る人たちのためのAPIについて、もっと話があることを期待していた。NOAA は生データの提供はうまくやっているが、政府サービスの消費と活用は、より具体的なケースになることが多い
ここで緊急対応ツールを作っている。生成 AI 優先で、継続的な監視 → 通知、チャットボット、カスタム状況報告書のようなものだ。興味があれば連絡してもよい
複数の機関やユーティリティなどが特化したバリエーションを必要としているため、weather.gov が内部で解いているであろう最後の区間のデータ・UI の難しさが、他の機関にも役立つということをより実感している
私の理解では Weather.gov は NOAA 傘下の NWS が運営しているので、今回のミッション刷新にその内容がないのは興味深い
少し関連する話ですが、個人的に weather.gov で最も便利な単一のURLはこれです。緯度/経度だけ変えれば使えます
https://forecast.weather.gov/MapClick.php?FcstType=graphical...
同じレイアウトで過去データも見られるといいのですが