このWebアプリは、「山の名前」を入れると「その山の山頂・稜線の天気予報」を表にして返すものです。 テレビやアプリの天気予報は麓の街の予報ですが、山の上は気温も風もまったく別物です。 そこを数値でまかなうのがこのアプリの役割です。
1. 全体の流れ
① 山を特定する
ツールの中に百名山・二百名山・三百名山・東北百名山など604座のデータベース(山名・緯度経度・山頂標高)を持っています。 この座標は国土地理院・yamarecoの地名検索と標高データで一座ずつ照合して作りました。 データベースにない山は、国土地理院などの地名検索で自動的に探します。 「大山」のように同名の山が複数ある場合は、候補(鳥取の大山/丹沢の大山)を提示して選んでもらいます。
② 予報データを取得する
気象データは Open-Meteo という無料の気象APIから取ります。ここには 気象庁(日本)・ECMWF(欧州)・GFS(米国)など世界の気象機関の数値予報モデルが集約されていて、 登録もAPIキーも不要です。
PeakWeather が基本に使うのは、日本域に最適化された気象庁モデルです。 予報の前半は日本域モデル=MSM(約5km メッシュの国内向けモデル)、後半は全球モデル=GSMへ 自動的に切り替わります。切り替わる日はモデルの更新時刻によって前後するため「何日目から」とは決まって おらず、実際の境目はその都度データから判定して、10日間の見通しの表に2本の区切り行 (上半分=日本域モデル / 下半分=全球モデル)と「全球」印で出しています。 日本の複雑な地形の山を見るうえで、世界平均のモデルより素性が合っているためです。 切り替わる日は1日の中で途中から切り替わります。その日は表では粗いほう(全球モデル) として扱っています(実際より細かいモデルだと表示するより、そのほうが安全側だからです)。
予報は10日先まで表示します。気象庁モデルはおおむね11日先あたりまで配信していますが、 どこまで届くかはモデルの更新時刻によって前後し、末尾は途中で切れた「半端な日」になります。 半端な日は1日ぶんの最高・最低・合計が作れないため、切れる位置の手前に余裕をとって10日先までに 絞っています。
ただし気象庁モデルは降水確率・突風・CAPE/CIN(雷)・視程・積雪深を配信していません。 これらだけは従来どおり合成モデルから取得し、時刻を突き合わせて1つの表にまとめています。
③ 計算・判定して出力する
取得した生データから「稜線の風」「体感温度」「登山指数」「景色(眺望)」を計算し、表に整形します。 この部分はすべてあらかじめ決めたルール(数式としきい値)で動くので、 同じデータなら誰が実行しても同じ結果になります。
2. 工夫①: 「山頂の気温」をどう出すか
ふつうの天気予報APIに燕岳の座標を渡すと、予報モデルのならされた地形(実際より低い標高)の気温が返ってきます。 このツールは「標高2763mの高さの値をくれ」と明示的に指定して取得しています。 だから真夏でも「山頂は11℃」のような、街の予報と20℃近く違う値を正しく算出できます。
3. 工夫②: 「稜線の風」をどう出すか
ここがこのツールの一番のポイントです。ふつうの「風速」は地面から10mの風で、 山の地形にブロックされた弱めの値が出がちです。しかし稜線に立つ登山者に当たるのは、 遮るもののない上空の風にずっと近い。
そこで気象モデルが計算している気圧面の風(850hPa=上空約1500m、700hPa=約3000mなど)を取得し、 山頂標高を挟む2つの面から比例配分(線形補間)して「稜線風」としています。
補間に使う気圧面は、あらかじめ決め打ちにせずその時刻に実際に値が届いている面から選びます。 予報の後半で切り替わる全球モデル(GSM)は 900hPa・800hPa を配信しないため、 その日は残った面(925・850・700・600hPa)の間で補間します。面の間隔が広くなるぶん、 後半の日は稜線風がやや弱めに出る傾向があります。
気圧面のいちばん下は 925hPa(上空およそ760m)です。これだけだと、標高760m未満の山は すべて「上空760mの風」が稜線風として出てしまいます(標高300mの里山でも同じ値になる)。 そこで地上10mの風を「高さ10mの面」として内挿に加えています。標高760m未満の山は、 地上の風と上空760mの風のあいだで、その山の高さに応じた値になります。 実測では衣張山(122m)の最大風速が 13.3m/s から 5.9m/s になりました。 標高760m以上の山では値は変わりません。
⚠ 表に併記している「突風」は地上10mの値で、稜線風(山頂の高さ)とは高度が違います。 稜線での実際の突風はこの値より強いことがあるため、そのまま「稜線の突風」として読まないでください。
4. 判定基準①: 登山指数 A/B/C
登山指数は「その時間帯に登山行動が適しているか」だけを表す指標で、判定に使うのは 稜線風速と降水量の2つです(そのあとに下記の「降格条件」を安全側にのみ重ねます)。1日を3時間ごとのブロックに割り、各ブロックを下の表で採点します。 複数の項目に引っかかる場合はいちばん悪い評価を採用(安全側に倒す)。 日単位の指数は、行動時間帯(5〜17時)の中の最悪値です。 基準は予報対象日の月で夏山と冬山・残雪期を自動で切り替えます。
夏山モード(6月〜10月)
| 項目 | A 登山適 | B 要注意 | C 登山不適 |
|---|---|---|---|
| 稜線風速 | 10m/s未満 | 10〜15m/s | 15m/s以上 |
| 降水量(3時間) | 1mm未満 | 1〜5mm | 5mm以上 |
冬山・残雪期モード(11月〜5月)
| 項目 | A 登山適 | B 要注意 | C 登山不適 |
|---|---|---|---|
| 稜線風速 | 8m/s未満 | 8〜12m/s | 12m/s以上 |
| 降水量(3時間) | 1mm未満 | 1〜3mm | 3mm以上(降雪リスク) |
降水確率は表に参考として表示しますが、判定には使いません (判定に使うのは実測ベースの降水量です)。
季節の切り替えは「月」だけでなく「その日の山頂の気温」も見ます。 6〜10月であっても、行動時間帯(5〜17時)の山頂気温が最高0℃未満、または最低-3℃未満なら 冬山・残雪期モードに切り替わります。月だけで判断すると、北海道の9月下旬や 3000m級の9月下旬〜10月が「夏山(15m/sでC)」のままになり、実質的な冬の稜線を 甘く判定してしまうためです。逆方向(冬→夏)には切り替えません。
風と降水だけでは足りない条件 —「降格条件」
風と降水の2項目だけだと、実際に人が命を落とす条件がAのまま出てしまいます。 たとえば冬の稜線で気温-20℃・風7m/sは、体感温度-32℃で凍傷の危険域なのに、 風速は8m/s未満なのでAになってしまう。そこで主判定のあとに、以下を 悪い方向にだけ重ねています。
| 名前 | 条件 | 下がる先 |
|---|---|---|
| 低体温 | 気温10℃以下 かつ 3時間降水1mm以上 かつ 稜線風8m/s以上 | B(風12m/s以上なら C) |
| 体感 | 体感温度 -20℃以下 | B(-30℃以下なら C) |
| 視界 | 視程200m未満 かつ 稜線風10m/s以上 | C |
「低体温」は夏でも起こります。2009年のトムラウシ山の遭難(7月・気温8〜10℃・ 風20m/s以上・雨・8名死亡)がこの型で、濡れた体から風で熱を奪われて起こります。 だから季節を問わず判定します。
指数の下には、その評価を決めた条件を表示します。主判定で決まったなら 風/降水、降格条件で下がったなら低体温/体感/視界です。同じBでも 「風が強いから行程を短くする」と「雨だから中止する」では取る行動が違うので、 どちらでBになったのかが分かるようにしています。風と降水が同じ評価で並んだ日は 風・降水と両方出します(片方だけ書くと、もう片方は基準内だったと誤解されるため)。 「雨」ではなく「降水」なのは、降水量が水換算で、冬は同じ数値が雪を意味するからです。
雷(CAPE)は登山指数に含めていません。雷は数kmの広がりしかない局地的な現象で、 「その時間帯に行動できるか」という指数の性質とは大きく異なるためです。雷については 「⚡ 発雷リスク」として独立に表示しています。同じ考え方で、 体感温度(防寒の目安)と🏔 景色(眺望)も指数には混ぜず、別の情報として並べています。 「登れるか」「雷はどうか」「寒さはどうか」「景色はどうか」を、それぞれ切り分けて 判断していただくための構成です。
風速15m/sは「歩行がふらつき、耐風姿勢が必要になり始める」レベルで、 一般的な山岳気象の目安と同じ線を採用しています。冬は同じ風速でも低体温リスクが 段違いに上がるため、閾値を8/12m/sに引き下げています。
雷の条件に「降水も予想されること」を求めているのは、CAPE が高いだけの日は夏にほぼ毎日 現れてしまうためです(実データで数えたところ、この条件だけで警告が10日中3日近く出ていました)。 毎日出る警告は読み飛ばされ、本当に注意すべき日に効かなくなります。ただし発雷リスクが最上位の 「高い」の日は、降水の予想が無くても警告を付けます。
5. ⚡ 発雷リスク(CAPE と CIN)— 参考表示
夏山の午後の雷は、稜線でいちばん避けたい現象のひとつです。時間ごとの詳細表にある 「⚡ 発雷リスク」の欄では、2つの気象指標を組み合わせて 低 / やや注意 / 注意 / 高いの4段階で表示しています。
CAPE = 雷雨の「燃料」
CAPE(ケープ)は、地面近くの空気が持ち上げられたときに、どれだけ勢いよく 上昇できるかを表す数値です(単位 J/kg)。たとえるなら積乱雲を育てる燃料の量。 値が大きいほど雲が高く発達しやすく、夏山の午後の雷雨リスクの先読みに使えます。
CIN = 上昇を抑える「蓋」
CIN(シン)は、地面近くの空気の上にのっている暖かい層がつくる蓋の強さです
(単位は同じ J/kg。表では慣例に合わせて CIN -40 のようにマイナスで表示しています)。
0 から離れているほど蓋が厚く、燃料がたっぷりあっても空気は上昇を始められません。
CAPE だけでは雷を判断できない理由
燃料が満タンでも、厚い蓋がのっていれば積乱雲は育ちません。逆に蓋がほとんど無ければ、 CAPE が中くらいでも、日中に山の斜面を這い上がる風(谷風)だけで引き金が引かれ、 午後になって急に積乱雲が立ち上がることがあります。CAPE の数字だけを見ていると 「値が高かったのに晴れていた」「低かったのに雷が鳴った」のどちらも起こり得るのは このためです。燃料(CAPE)と蓋(CIN)はセットで見る必要があります。
4段階の決め方
まず CAPE で大枠の段階を決めます。区切りの 500・1000・2500 は、一般的に使われている 雷雨の目安に合わせたものです。
| 表示 | CAPE の目安 | 読み方 |
|---|---|---|
| ⚡ 低 | 500 未満 | 積乱雲を育てる燃料が乏しい状態 |
| ⚡⚡ やや注意 | 500 〜 1000 | 条件がそろえば発達しうる。空の様子を気にしておきたい |
| ⚡⚡⚡ 注意 | 1000 〜 2500 | 燃料は十分。午後の行動は早めに切り上げる判断を |
| ⚡⚡⚡⚡ 高い | 2500 以上 | 激しい雷雨が起きうる量。稜線での長時間行動は避けたい |
そのうえで CIN(蓋)の厚さで段階を下げます。蓋が 50 以上で 1 段、 100 以上で 2 段下げます。逆に「蓋が薄いから」という理由で段階を上げることはしません。 予報データでは蓋がほとんど無い状態が普通(半分近くの時刻が 0)で、上げる補正を入れると ほとんどの時刻が上振れしてしまい、段階の意味が無くなるためです。
3時間ごとの表では、CAPE はその時間帯の最大値、CIN は蓋がいちばん薄い時刻の値を
採っています。どちらも安全側(リスクを低く見積もらない側)に倒すための決め方です。
段階の下には CAPE 820 / CIN -40 のように元の数値も併記しているので、
慣れている方はそちらを直接ご覧ください。
6. 判定基準②: 体感温度
気温・風・湿度の3つから、体感温度(Apparent Temperature)を計算しています。 豪州気象局が使っている式で、寒いときも暑いときも同じ式で扱えます。
体感温度 = 気温 + 0.33×e − 0.70×稜線風速(m/s) − 4.00
例: 気温0℃・風14m/s → 体感約−12℃。夏でも稜線では防寒着が要る、が数字で見えます。 雨や汗で濡れるとさらに下がるため、表の値は「良くてこれくらい」と読んでください。
以前は風冷指数(JAG/TI式)を使っていましたが、この式は気温10℃以下でしか使えません。 式の作りから、約22℃を超えると「風が吹くほど暖かい」という値が出てしまいます (気温25℃・風14m/sで25.9℃)。かといって10℃で打ち切って気温をそのまま出すと、 今度は10〜22℃で風による冷えがまったく表れません。 実際、飯豊山で気温13.8℃・稜線風17m/s・雨のときに「体感13.8℃」と表示され、 穏やかな日に見えてしまう問題が起きました(現在の式では体感3.0℃)。
なお日射は考慮していません。日なたでは表示より暑く感じます。
7. 判定基準③: 🏔 景色(眺望)◎○△✕
景色(眺望)は「山頂付近の雲・視程・降水」の3つを組み合わせて判定しています。 視程は景色判定に利用しており、詳細表では景色の補足情報として併記しています (視程だけの列は設けていません。最終的な「🏔 景色」の4段階を見れば判断できます)。
雲の予報は「下層(〜2km)・中層(2〜7km)・上層(7km〜)」の3階建てで出てきます。 これを山頂の高さと見比べるのがミソです。
4つのアイコン
同じ山のシルエットに、上空の天候だけを重ねた4種類のアイコンで表示します。 色だけに頼らずに済むよう、◎○△✕ の記号と言葉も必ず添えています。
| 表示 | 条件(山頂の高さにかかる雲+視程+雨で判定) |
|---|---|
| ◎ 展望良好 | 山頂レベルの雲20%以下 かつ 視程20km以上(快晴・展望良好) |
| ○ 良好 | 山頂レベルの雲50%未満(薄い雲。おおむね見える) |
| △ ガス | 山頂レベルの雲50%以上 または 視程10km未満(山頂に雲がかかり、景色は限定的) |
| ✕ 雨 / 濃霧 | 雨(3時間1mm以上)=「雨」 / 視程2km未満・山頂レベルの雲80%以上=「濃霧」 |
| (雲海) | 山頂より下の雲60%以上+山頂レベル30%以下 → ○/◎に付記 |
景色の欄には、判定に使った視程を下段に小さく併記しています (例: ◎ 展望良好 / 視程 25km)。「なぜこの判定になったのか」を 確かめたいときの手がかりとしてお使いください。
日別表の「景色(朝)」は4〜8時のいちばん良い時間帯の値で、ご来光が狙えるかの目安です (併記する視程も、その採用した時刻の値です)。
日別表の「天気」は行動時間帯から自前で代表を決める
予報APIが返す「その日の天気」は24時間の中で最も悪い1時間を採用する仕様のため、 朝霧や通り雨がひと晴れの日を丸ごと「霧雨」にしてしまいます。そこでこのアプリは、 行動時間帯(4〜17時)の1時間ごとの天気から、その日の代表天気を自前で決めています。 時間が最も長い天気を代表にし、雷雨・強い雨など安全上重要な悪天は短時間でも必ず代表として残します。 代表にならなかった霧・霧雨・にわか雨は消さずに「夕方に霧雨」のような注記で併記します。
8. 予報の前に「直近の実況」も表示
予報の表の前に、直近3日の実況(モデル解析値)を小さな表で出します。 「これからの天気」だけでなく「ここ数日、山でなにが起きていたか」が分かると、 登山道の状態 — ぬかるみ、沢の増水、残雪・凍結 — をある程度見立てられるからです。
| 日付 | 天気 | 山頂気温 | 稜線風max(5-17時) | 降水量 |
|---|---|---|---|---|
| 07/10(金) | 霧雨 | 8〜16℃ | 南西 5.0m/s | 1.5mm |
| 07/11(土) | 曇り | 9〜16℃ | 西南西 7.9m/s | 0.0mm |
| 07/12(日) | 霧雨 | 9〜13℃ | 北西 17.7m/s | 2.7mm |
読み方の例: 直近に雨が続いていれば「ぬかるみや沢の増水がありそう」、冬に降雪が続いていれば 「新雪のラッセルになりそう」。表示するのは事実データだけで、コンディションの断定はしません。 登山指数(A/B/C)の判定にも使いません。見立てるための材料としてお使いください。
雪のある期間は「積雪」列が自動で現れる
山に雪がある期間だけ、実況・日別サマリ・3時間ごと詳細の各表に積雪max(新雪)列が追加されます。 「85cm(+12)」なら積雪深85cm・その日に降った新雪12cmという意味です。 雪のない夏山では列ごと非表示になるので、表はすっきりしたままです。
9. 予報はどこまで信じられる? — 確度
見通し表の指数の隣に確度の列があります。気象庁・ECMWF(欧州)・GFS(米国)の3つの予報に まったく同じ判定手順を回して、出てきた登山指数がどれだけ揃うかを見たものです。 ◎=3つとも同じ / ○=1段階の差 / △=2段階以上の差 / -=判定不能。
これは飾りではありません。過去の予報を実際の天気(ERA5再解析)と突き合わせて測ったところ、 3日前時点の的中率は ◎77% / ○43% / △26%でした。危険な外し方——「Aと言っていたのに実際はC」——は ◎で2.8%、△では17.0%と6倍の開きがあります。指数だけを見ていては見えない情報です。
確度はA/B/Cの判定そのものには一切使っていません(併記するだけです)。 モデルごとの内訳を見たいときは、表の下の「確度の内訳」を開くと3モデルそれぞれの指数が並びます。
10. 電波が無くても、直前に見た予報は見られる
山では電波が届かないことのほうが多く、しかも予報を見返したいのはまさにその場所です。 そこで、予報を表示するたびにその気象データをまるごとお使いの端末の中に保存しています (サーバへ送るものは何もありません)。圏外で同じ山を検索すると、通信をあきらめる代わりに 保存しておいた予報を描き直します。
「現在地の予報」「座標を指定して予報」の予報データは保存の対象外です。
ただし座標指定のページで「この地点を保存する」を選んだ地点(最大5件)は例外で、 地点ごとに最後に見た予報を1件ずつ残します。山の「直近3座」とは別枠なので、 山をいくつ見ても押し出されません。沢の中など圏外でも、山名欄の候補(📍)から開けます。 地点を削除すると、その予報もあわせて消えます。
この場合は表の上に「📴 オフライン表示」と、いつ取得した予報なのかを必ず出します。 中身は保存した時点のままで、その後の更新は反映されていないからです。各表の見出し下の 「取得 ○月○日 ○時○分」も保存した時刻を指します。電波が入ったら必ず取り直してください。
アプリの画面そのもの(ページ・アイコン)も端末内に持っているので、 一度開いたことのある端末なら圏外でもアプリを起動できます。 オンラインのときは常に最新のページを読みに行くので、更新が届かないことはありません。
11. 限界と正しい使い方
・数値予報の解像度は数km四方。稜線ぴったりの滝雲、局地的な突風、雷の正確な位置と時刻は表現できません
・予報は10日先まで出ますが、実用的な精度は3日先程度まで。それ以降は「傾向」として読む
・雲海・ガスの判定は雲の高さの推定に基づく近似です。「◎でもガスることはある」
・「直近の実況」はモデルの解析値で、アメダス等の観測実測とは差があります
・最終判断は、直前の最新予報(登山専門の気象予報サービスも併用)と現地の空を見て、自分で行ってください
12. まとめ
② 世界の気象モデルの予報を「山頂の高さ」を指定して取得する
③ 上空の風から「稜線の風」を、雲の高さ・視程・降水から「景色(眺望)」を、 稜線風と降水量の悪いほうから「登山指数A/B/C」を計算する
④ 予報の前に直近3日の実況(モデル解析値)も表示。雪のある期間は積雪列を自動追加
⑤ 見た予報は端末内に保存し、圏外では「いつ取得したか」を断ったうえで再表示する
⑥ 数字はぜんぶ決まったルール(数式としきい値)の計算