Xcratch 用の天気予報拡張機能です。
郵便番号を指定するだけで、天気予報の値を返すレポーターブロックを追加します。
天気データは無料の Open-Meteo API、郵便番号→緯度経度の変換は Zippopotam.us を利用しています(APIキー不要・インターネット接続が必要です)。
サンプルプロジェクトを開くと、この「天気予報」拡張で何ができるかを試せます。
| ブロック | 説明 |
|---|---|
郵便番号 [100-0001] 付近の [1] 時間後の (天気▼) |
指定した郵便番号付近の、現在からn時間後の予報値を返します |
郵便番号 [100-0001] 付近の [1] 日後の (天気▼) |
指定した郵便番号付近の、週間予報(最大7日先)の値を返します |
郵便番号 [100-0001] 付近の気象予報地点名 |
その郵便番号付近で天気データに使われる地点の名前(日本語)を返します |
ℹ️ 「付近」の意味(予報地点について)
このブロックが返すのは「郵便番号ピンポイントの天気」ではなく、「その郵便番号付近(数km四方のエリア)の予報」です。内部では次の2段階の近似が入ります。
- 郵便番号 → そのエリアの代表点1つ(Zippopotam.us による緯度経度変換)
- その代表点 → 気象モデルの最寄り格子点(Open-Meteo が数km四方のセルにスナップ)
どの地点に解決されたかは
郵便番号 [ZIP] 付近の気象予報地点名ブロックで確認できます(日本語表記、例:東京都千代田区)。これは郵便番号→緯度経度の変換のあと、Open-Meteo Geocoding API で最寄りの地名へ変換したものです。郵便番号そのものの地名とは一致しない場合があり、厳密な1点の天気ではない点にもご注意ください。
郵便番号 [ZIP] 付近の [n] 時間後の [項目▼] は、現在からn時間後の予報値を返します。「n」は数字を直接入力します(デフォルト 1)。
選べる項目(表示順):
| 項目 | 内容 |
|---|---|
| 天気 | 日本語の天気(快晴 / 晴れ / 曇り / 雨 / 雪 / 雷雨 など。WMO天気コードを日本語化) |
| 気温 | 摂氏(℃) |
| 降水確率 | パーセント(%) |
| 風速 | メートル毎秒(m/s) |
| 風向き | 16方位の日本語(北 / 北北東 / 北東 … 風が吹いてくる方向) |
| WBGT(暑さ指数) | 摂氏(℃)の推定値(後述) |
| WBGT(危険度ラベル) | ほぼ安全 / 注意 / 警戒 / 厳重警戒 / 危険 のいずれか(後述) |
「n時間後」は 0以上の数字を直接入力します(半角・全角どちらでも可。例: 3 / 12)。毎正時のデータに最も近い値を返すため、最大±30分程度のずれがあります。予報期間(約3日先まで)を超える時間や負の数・数字以外を入力した場合、誤った値を返さないよう空の値を返します。郵便番号が見つからない・通信に失敗した場合も空の値です。
郵便番号は 半角・全角どちらの数字でも、ハイフンの有無も問わず入力できます(例: 100-0001 / 1000001 / 1000001 / 100-0001)。7桁の数字として認識できない入力は空の値を返します。
郵便番号 [ZIP] 付近の [n] 日後の [項目▼] は、日単位(週間)の予報値を返します。
| 項目 | 内容 |
|---|---|
| 天気 | その日の代表的な天気(日本語) |
| 最高気温 | 摂氏(℃) |
| 最低気温 | 摂氏(℃) |
| 降水確率 | その日の最大降水確率(%) |
| 日の出 | 時刻(HH:MM) |
| 日の入り | 時刻(HH:MM) |
時間別ブロックとは別系統の、Open-Meteo の日別データ(temperature_2m_max / temperature_2m_min / precipitation_probability_max / weather_code / sunrise / sunset)を利用しています。
WBGT(湿球黒球温度=暑さ指数)は、気温・湿度・日射・風速から熱中症のリスクを表す指標です。本拡張では Open-Meteo の予報値(気温・相対湿度・日射量・風速)から、小野ら(2014)の屋外WBGT推定回帰式を用いて計算しています。これは環境省が暑さ指数の実況・予測の算出に用いているのと同じ式です。
WBGT = 0.735×Ta + 0.0374×RH + 0.00292×Ta×RH
+ 7.619×SR − 4.557×SR² − 0.0572×WS − 4.064
| 記号 | 意味 | 元データ(Open-Meteo) |
|---|---|---|
| Ta | 気温(℃) | temperature_2m |
| RH | 相対湿度(%) | relative_humidity_2m |
| SR | 全天日射量(kW/m²) | shortwave_radiation(W/m² を 1/1000 換算) |
| WS | 風速(m/s) | wind_speed_10m |
危険度ラベルは、日本生気象学会「日常生活における熱中症予防指針」の区分に従います。
| WBGT(℃) | ラベル |
|---|---|
| 21 未満 | ほぼ安全 |
| 21 以上 25 未満 | 注意 |
| 25 以上 28 未満 | 警戒 |
| 28 以上 31 未満 | 厳重警戒 |
| 31 以上 | 危険 |
プログラムで「熱中症アラート」を出したい場合は、WBGT が 28 以上(=「厳重警戒」以上)かどうかで判定するのがおすすめです。環境省・日本生気象学会の指針でも、WBGT 28℃以上は熱中症の危険が高まり「激しい運動は中止」が推奨される目安とされています。
作例はこちらのサンプルプロジェクトで確認できます。

より厳しめにしたい場合は 31 以上(「危険」)で判定します。
⚠️ 重要 — この値は推定値です
本拡張のWBGTは「屋外・日向」を前提とした推定値であり、環境省が公表する公式の暑さ指数(WBGT)そのものではありません。計算式は同じでも、入力に用いる気象データの出どころが環境省(気象庁の数値予報など)とは異なるため、公式値とは一致しません。また日射量予報の精度に影響されます。運動・作業の可否や熱中症対策などの最終判断は、必ず環境省 熱中症予防情報サイトの公式値を参照してください。
この拡張は、Xcratch 上で他の拡張と組み合わせて使えます。
入力欄に次のモジュールURLを入力する
https://asondemita.github.io/xcx-weather/dist/weatherForecast.mjs
npm install
./scripts/setup-dev.js 内の vmSrcOrg を、ローカルの scratch-vm ディレクトリに合わせて変更してから、セットアップスクリプトを実行します。
npm run setup-dev
APM (Agent Package Manager) をインストールし、次を実行します。
apm install --target copilot
これで各エージェントクライアントにスキルが自動設定されます。インストール後は、次のような自然言語のトリガーフレーズが使えます。
| トリガーフレーズ | 呼び出されるスキル |
|---|---|
xcratch-create, scaffold extension |
xcratch-extension-create — 新しい拡張リポジトリを生成し、開発環境をセットアップ |
breakpoints not hit, debug on dev-server |
xcratch-extension-debug — ソースマップやローカルHTTPSの問題を修正 |
verify extension loads, check console errors |
xcratch-extension-debug-auto — エディタへ自動で移動し、読み込まれた拡張を検査 |
add to stretch3, stretch3-install |
xcratch-extension-stretch3 — stretch3 用のインストールスクリプトとエントリファイルを生成 |
ビルドスクリプトを実行すると、この拡張を Xcratch で読み込めるモジュールファイルにバンドルします。
npm run build
監視スクリプトを実行すると、ソースファイルの変更を検知して自動でバンドルします。
npm run watch
テストスクリプトを実行して、この拡張をテストします。
npm run test
このプロジェクトでは、npm version コマンドと GitHub Actions を使ってバージョン管理とデプロイを行います。
npm version コマンドでバージョン番号を更新します。これにより、次が自動で行われます。
package.json のバージョン更新dist/{version}/)の作成dist/versions.json への新バージョン情報の追記# パッチ版 (1.3.0 → 1.3.1)
npm version patch
# マイナー版 (1.3.1 → 1.4.0)
npm version minor
# メジャー版 (1.4.0 → 2.0.0)
npm version major
新しいバージョンを作成したら、タグをプッシュすると自動デプロイがトリガーされます。
# バージョンタグをプッシュ
git push origin v1.4.0
# またはすべてのタグをプッシュ
git push --tags
GitHub Actions のワークフローが次を実行します。
dist/・projects/・README.md を GitHub Pages へデプロイGitHub の Actions タブから手動でデプロイをトリガーすることもできます。
すべてのビルドバージョンは dist/versions.json に記録されます。
{
"extensionId": "weatherForecast",
"latest": "1.0.0",
"versions": [
{
"version": "1.0.0",
"buildDate": "2025-10-19T12:34:56.789Z",
"module": "1.0.0/weatherForecast.mjs"
}
]
}
本拡張は、無料・非商用の教育目的で提供する個人プロジェクトです。
本拡張のソースコードは MIT License です。
このページは https://asondemita.github.io/xcx-weather/ から開けます。