WeatherStar 4000+:NOAA API を使った90年代風の天気予報画面
Web ベースの WeatherStar 4000。代わりに、このプロジェクトは、構成の手間を最小限に抑えて、使いやすいインターフェイスを作成することを目的としています。
ひと目でわかる
- これは何?
- 1990年代のウェザーチャンネルの見た目を再現するJavaScript製ウェブアプリ。2つのデプロイ方法、パーマリンク共有、そして実際の気象緊急時に頼るべきではないという警告を備える。
- 誰に向いている?
- WeatherStar 4000+ は、再現物であって複製品ではないと自覚したノスタルジアプロジェクトです。ソースは米国限定のNOAA APIに依存し、2つのデプロイ経路を説明し、パーマリンクやカスタムフック、音楽ファイルの差し替えによる改変の余地を残しています。
- 商用利用できる?
- できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 1 日前です。
- 何の言語で書かれている?
- 主に JavaScript です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
再現であり、完全なエミュレーションではない
WeatherStar 4000+ は、1990年代のウェザーチャンネルで放送されていたローカル予報の見た目、青とオレンジのグラフィックスとおおよその進行感覚を取り戻すことを目指したウェブベースのプロジェクトです。READMEは、このグラフィックスを作っていたWeatherStar 4000ハードウェアの完全なエミュレーションではないと明言し、より正確な再現を求める人にはWS4000 Simulatorを紹介しています。その代わり、設定に手間をかけずに使えるシンプルなインターフェースを重視し、現在の予報データには90年代より多い項目と少ない項目があるため、一部の画面を変更しています。作者は動機をノスタルジアと、特に激しい嵐に対する関心だと述べ、日々の仕事とは別にプログラミングの腕を保つ場にもなっているとしています。プロジェクトのオンライン版は https://weatherstar.netbymatt.com で公開されています。このリポジトリは2020年8月にMike Battagliaの成果からフォークされ、READMEの謝辞には天気画面の描画と背景グラフィックスを担当した原作者の貢献が残されています。
学習用に書かれたコードベース
リポジトリはオープンソースのまま、コメントを充実させ、できるだけライブラリへの依存を減らし、プログラミングを学ぶ人がそのまま読み始められるようにしています。使用技術には api.weather.gov のREST API、ES6のアロー関数、Promise、async/await、クラス、JavaScriptモジュールが含まれ、async/awaitは予報リソースの並行読み込みに使われます。APIコードとUIコードを分離し、日付解析にはluxonを使い、APIレートの実用的なキャッシュと静的アセットのキャッシュを適用しています。HTMLは手書き、CSSはSASSで管理し、コードスタイルを保つためのlintライブラリもあります。GulpとWebpackによるビルド統合で、ブラウザが読み込むスクリプト数を減らしています。READMEはこれらを、特定の本番環境スタックを推すのではなく、一般的なインターネット技術がどう協調するかを示す例として挙げています。
クイックスタートと実行モード
クイックスタートはNodeがインストールされていることを前提にしています。記載されているコマンドは git clone https://github.com/netbymatt/ws4kp.git、cd ws4kp、npm install、npm start で、その後 http://localhost:8080 を開きます。開発モードは個別のJavaScriptモジュールファイルを配信するためデバッグしやすく、本番モードは npm run build を実行したあと DIST=1 npm start で圧縮・連結されたバンドルを配信します。STATIC=1 環境変数を付けるとNodeのプロキシキャッシュが無効になり、STATIC=1 npm start はキャッシュなしで開発サーバーを動かし、STATIC=1 DIST=1 npm start は静的Dockerデプロイをシミュレートします。Dockerでは ghcr.io/netbymatt/ws4kp が静的デプロイ用、Dockerfile.server がサーバーデプロイ用です。READMEには各モードの具体的な性能値や負荷時の応答時間は書かれていません。
サーバーデプロイと静的デプロイの違い
2つのデプロイモードが説明されています。サーバーデプロイはNode.jsサーバーにキャッシュプロキシを含み、サーバー側のリクエスト重複排除とキャッシュ、天気APIの可観測性とログを備え、npm start、DIST=1 npm start、Dockerfile.server で使われます。静的デプロイは純粋なクライアントサイドで、nginxが静的ファイルを配信し、各ブラウザが天気サービスに直接APIリクエストを送ります。キャッシュもブラウザ側で行われ、静的ファイルホスティングとデフォルトのDockerfileがこの構成です。静的デプロイは運用が軽い反面、APIトラフィックがすべて各クライアントに集中します。複数のクライアントがローカルサーバーに接続する場合、READMEはサーバーデプロイを勧めています。静的デプロイがサーバーデプロイより速いとは書いておらず、用途の違いだけが述べられています。
オリジナル機から変えた点
READMEには意図的な変更がいくつか並んでいます。レーダーは画像のタイムスタンプを表示するようになりました。新しい1時間ごとのグラフは、今後36時間の気温、雲量、降水確率を示します。24時間先までの1時間ごとの予報も旅行都市予報と同じスタイルで追加されましたが、時間ごとのグラフと重複するため初期状態ではオフです。SPC Outlook画面は今後3日間の激しい天気の確率を表示し、場所がハイライトされたリスク領域の内側にある場合だけ表示されます。ローカル予報と拡張予報は90年代の元の形式より日数が増えています。著作権のある元の音楽は、リポジトリに含まれるAI生成のトラックに置き換えられ、追加トラックは関連リポジトリ ws4kp-music にあります。海洋予報と元の flavors の表示順序はなく、表示順序は固定され、各画面はチェックボックスで個別にオン・オフできます。旅行都市予報は初期状態でオフになり、新規ユーザーにはまずローカル情報だけが表示されます。
パーマリンク、キオスクモード、既定の環境変数
選択した表示項目、予報都市、ワイド画面設定はセッションをまたいで保持されます。ページには Copy Permalink または Get Permalink があり、選択した表示項目と位置をすべて含むURLを生成して共有やブックマークに使えます。省略した設定は既定値に戻ります。キオスクモードのチェックボックスは、ブラウザの全画面やキオスクモードを有効にせずにビューポートいっぱいまで表示を広げ、ページ内からはその表示を終了できません。ページを再読み込みすると通常表示に戻ります。パーマリンクの末尾に &kiosk=true を追加してキオスクモードに入ることもできます。組み込みのExpressサーバーでは、WSQS_ プレフィックス付きの環境変数を使って既定のクエリ文字列を設定でき、例えばパーマリンクの travel-checkbox=true は環境変数 WSQS_travel=true に対応します。Dockerは起動時にこれらの変数を読み、リダイレクト用HTMLを生成します。設定パネルには再生速度、標準またはワイド画面表示モード、縦向き拡張(進行中と記載)、スキャンライン、単位、音量があります。
音楽、カスタマイズ、運用上の注意
背景音楽は初期状態でミュートされていますが、前回の訪問でミュートを解除していた場合は自動再生を試みます。ブラウザの自動再生ポリシーは依然として適用され、READMEはChromeとFirefoxのドキュメントをリンクし、mediaPlaying と mediaVolume のクエリパラメータで再生状態と音量をあらかじめ設定できると説明しています。Expressサーバーモードでは、サーバーが ./server/music 内の .mp3 ファイルを走査して playlist.json を生成します。静的ホスティングで playlist.json がない場合はディレクトリ走査にフォールバックし、nginx設定が X-Weatherstar レスポンスヘッダを設定します。カスタマイズフックは server/scripts/custom.js と custom.mjs にあり、サンプルファイルをリネームして使います。RSSテキスト機能を有効にすると、下部の青いバーにカスタムテキストをスクロール表示でき、複数の文字列はパイプ文字で区切ります。READMEはFFmpegストリーミング、Raspberry Piセットアップ、Channels DVR統合といったコミュニティリンクも集めています。作者は問題報告で api.weather.gov の停止を報告しないよう求め、メートル法への変換がすべてのテキスト製品に適用されるわけではないと注記しています。免責事項は、生命に関わる天気にこのサイトを使うべきではないと明言しています。Androidラッパーアプリはクローズドベータで、iOSネイティブアプリは作者がAppleデバイスを持っていないため存在しません。ライセンスはMITで、条件付きで使用、複製、変更、配布を許可しますが、サポートや保証、適合性については標準的な免責事項以外に何も述べていません。
編集部の結論
WeatherStar 4000+ は、再現物であって複製品ではないと自覚したノスタルジアプロジェクトです。ソースは米国限定のNOAA APIに依存し、2つのデプロイ経路を説明し、パーマリンクやカスタムフック、音楽ファイルの差し替えによる改変の余地を残しています。正確さや安全性を主張しているわけではなく、READMEは生命に関わる天気に使ってはいけないと明記し、MITライセンスもソフトウェアを現状のまま提供します。
コミュニティノート