「潮見アプリ」を公開しました:全国の地点で「潮が動く時間帯」を調べられます
潮位の変化速度から時合いを予測する分析を、ブラウザ上で誰でも使えるアプリにしました。全国の地点に対応し、潮位グラフ・昼夜別の時合いランキング・潮回り・日の出日の入・天気予報までまとめて表示します。仕組みの解説つき。
先日の記事「潮汐データで時合いを予測する」で、潮位の変化速度(cm/h)を計算して「潮が動く時間帯」を割り出す方法を紹介しました。あの記事ではPythonスクリプトを配布する形でしたが、環境構築なしにブラウザだけで同じ分析ができるアプリとして拡張し、公開しました。
→ 潮見アプリを使ってみる(メニューの「潮見アプリ」からもアクセスできます)
できること
- 全国239地点に対応。プルダウンから地点を選ぶだけ(前回の記事は大洗のみでした)
- 「現在地から探す」を押すと、いる場所から最も近い観測地点を自動で選びます。遠征先や初めての釣り場でも、地名から地点を探す手間がありません
- 初期表示は「いま±12時間」。ページを開くだけで、現在時刻(赤い縦破線)を挟んで前後12時間の潮の動きが見えます。釣り場で開いてすぐ使える形です
- その左右の「前日 / 翌日」で、1日分(0時〜24時)の表示に切り替えて日送りできます
- 潮位と潮位変化速度の2段グラフ。背景のアンバーの濃淡が「潮の動きやすさ」を表し、色が濃い時間帯ほど潮がよく動いています
- **夜間・昼間それぞれの「潮がよく動く時間帯TOP8」**を、曜日付き・上げ下げの区別付きでランキング表示
- 潮回り(大潮・中潮・小潮・長潮・若潮)・月齢・日の出/日の入・月の出/月の入を日別の表で表示
- その地点の天気予報(今日・明日・明後日)
- その地点の潮汐特性(潮齢・平均高潮間隔)。詳しくは後述します
使い方の例としては、こんな場面を想定しています。
- 今夜の釣行前に、何時ごろ潮が動くかを確認して入り時間を決める
- 週末しか行けないので、土日のどちらの夜が動くかを比較する
- 遠征先の地点を選んで、現地の潮のクセ(いつ・どちら向きに動くか)を事前に掴む
仕組みの解説:このアプリの中で起きていること
ここからは、アプリが裏側で何をしているかの解説です。シーバス釣りとは直接関係ありませんが、データを扱う面白さが詰まっているので、専門知識がなくても読めるよう、できるだけ平易な言葉で書いてみます。数式は最小限です。
1. データはどんな形で配られているのか
気象庁は全国の潮位の予測値を、1年分を1つのテキストファイルにまとめて公開しています。中身をそのまま覗くと、こんな数字の羅列です。
78 97111118119116111108108112118125131132126111 90 63 37 15 1 0 10 2926 1 1D3 ...
一見すると意味不明ですが、これは決まった位置に決まった意味の数字が入っているという形式です。「1文字目から72文字目までが、0時から23時までの潮位を3文字ずつ24個並べたもの」「73〜78文字目が年月日」「79〜80文字目が地点の記号」という具合に、場所で意味が決まっています。こういう形式を固定長フォーマットと呼びます。
上の例なら、こう読みます。
- 最初の3文字
78→ 0時の潮位は78cm - 次の3文字
97→ 1時の潮位は97cm - 73〜78文字目
26 1 1→ 2026年1月1日 - 79〜80文字目
D3→ 大洗
カンマ区切り(CSV)のような分かりやすい形式ではないので最初は戸惑いますが、ルールさえ分かれば機械には非常に読みやすい形式です。プログラムは「何文字目から何文字目を切り出す」という作業を淡々と繰り返すだけで、1年分8760時間の潮位を数字の列に変換できます。
2. 「潮が動く速さ」をどうやって計算するか
潮位のデータが手に入っても、それは「何時に何cmか」でしかありません。知りたいのは「いま潮がどれくらい勢いよく動いているか」です。
ここで使うのが「変化の速さ」という考え方です。難しく聞こえますが、やっていることは引き算だけです。
たとえば大洗の2026年7月22日、深夜のデータは実際にこうなっています。
| 時刻 | 潮位 |
|---|---|
| 0時 | 94cm |
| 1時 | 79cm |
| 2時 | 66cm |
0時から2時までの2時間で、潮位は94cmから66cmへ28cm下がりました。1時間あたりに直すと14cm。これが「1時の時点で、潮は1時間に14cmの速さで下がっている」という意味になります。この14cm/hという数字が、アプリが計算している「変化速度」です。
グラフで言えば、潮位の曲線の傾きの急さそのものです。坂道を思い浮かべてください。同じ標高でも、なだらかな場所と急な場所があります。潮位の曲線も同じで、満潮や干潮の前後は「山のてっぺん」「谷の底」なので傾きがほぼゼロ(=潮止まり)、満潮と干潮のちょうど中間あたりが一番急な斜面(=潮がよく動く時間)になります。
前後の値の差から傾きを求めるこのやり方は、数値微分と呼ばれます。高校で習う微分と考え方は同じですが、数式が分からなくても「前後の差を取って時間で割る」だけで計算できるのがポイントです。アプリでは、前後1時間ずつの値を使って傾きを求めています(前後を使うほうが、片側だけを使うより誤差が小さくなります)。
3. 日の出や月の出は、なぜ計算だけで分かるのか
アプリは日の出・日の入・月の出・月の入も表示しますが、これらはどこかから取ってきたデータではなく、その場で計算した値です。
天体の動きは物理法則に従って正確に決まっているので、「西暦何年何月何日の何時に、地球から見て太陽はどの方向にあるか」を数式で計算できます。必要な材料は日時と、その場所の緯度経度だけです。
大まかな手順はこうです。
- 日時から、太陽が空のどのあたりにあるかを計算する
- その場所の緯度経度から、太陽が地平線(高度0度)を通過する時刻を逆算する
- その時刻が日の出・日の入
月も同じ考え方ですが、月の動きは太陽より複雑で、地球のまわりを回りながら軌道が伸び縮みするため、単純な式では誤差が出ます。そこでアプリでは、15分刻みで月の高度を計算して地平線をまたぐ瞬間を探し、その前後で範囲を半分ずつに狭めていくという方法を使っています。「答えがこの区間のどこかにある」と分かっているとき、真ん中で二つに割って答えがある側を残す、を繰り返す方法です。20回ほど繰り返すと、15分の区間が1秒以下まで絞り込めます。数当てゲームで「もっと大きい/小さい」を聞きながら範囲を半分にしていくのと同じ発想で、二分法と呼ばれます。
この計算が正しいかどうかは、答え合わせで確かめられます。気象庁が公表している大洗の値と比べると、日の出は1分違い、月の出は2分違いでした。手作りの計算がプロの公表値とほぼ一致するのは、なかなか気持ちのいい瞬間です。
潮回り(大潮・小潮など)も同じく計算で出しています。潮回りは月の満ち欠けで決まるので、太陽と月がそれぞれ空のどの方向にあるかを計算し、その角度差から「新月から何日目か」を求めて、そこから名前を引いています。
4. データの中から「その海の性格」を見つける
アプリの下のほうに、こんな表示があります。
この地点の潮汐特性: 潮齢 約1.2日 / 平均高潮間隔 約4時間16分
これは前の2つとは違って、潮位データそのものを1年分ぜんぶ調べて見つけ出した数字です。
潮齢は「新月・満月の日から、実際に潮の動きが最大になるまでの遅れ」です。「大潮の日なのに思ったより動かないな」と感じたことがある人は多いと思いますが、実は潮の動きのピークは新月・満月の当日ではなく、1〜2日遅れてやってきます。海の水は量が膨大なので、月の引力の変化にすぐには追いつけず、反応が遅れるのです。
これをデータから求める手順はシンプルです。
- 1年分のデータから、日ごとの「その日の最高潮位 − 最低潮位」を計算する(=その日どれだけ潮が動いたか)
- 月の満ち欠けの計算から、1年間の新月・満月の日時をすべて求める
- それぞれの新月・満月について、その前後で「その日どれだけ動いたか」が最大になる日を探す
- 新月・満月からその日までが何日ずれているかを測り、1年分を平均する
大洗でこれをやると1.2日という答えが出ます。気象庁が公表している大洗の潮齢は1.3日なので、ほぼ一致です。自分でデータから見つけた数字が、公表値と重なる——これは分析が正しくできている何よりの証拠になります。
平均高潮間隔は「月がその土地の真南(南中)に来てから、満潮になるまでの時間」です。月の引力で海面が持ち上がるなら、月が真上に来た瞬間が満潮になりそうなものですが、実際にはそうなりません。海には地形があり、水が押し寄せるのに時間がかかるからです。大洗では約4時間16分の遅れがありました。この値は場所ごとに違い、その海の「性格」を表す数字になります。
こちらもデータから求めます。月が南中する時刻を計算で出し、潮位データの中からその直後の満潮時刻を探して、差を取って平均する。気象庁の公表値は4.3時(4時間18分)なので、これも2分違いで一致しました。
ちなみに、この方法がいつでも通用するわけではありません。同じやり方で「大潮差」(大潮のときの潮の高低差)も計算してみたところ、公表値と大きくズレました。調べてみると、気象庁の「大潮差」は日々の実測の差ではなく、潮の波を成分ごとに分解した理論値から定義されているものでした。同じ名前でも定義が違えば答えは合わない——これはデータを扱うときの、地味ですが大事な教訓です。合わないときは計算ミスを疑う前に、まず「そもそも同じものを測ろうとしているか」を確認する必要があります。
5. なぜサーバーが要らないのか
このアプリには、計算をするための専用サーバーがありません。あなたのスマホやパソコンのブラウザの中だけで、すべての計算が完結しています。
理由は、潮位の予測値が1年先まで決まっているデータだからです。天気予報のように刻々と変わるものではないので、1年分のファイルをあらかじめサイトに置いておけば、あとはブラウザがそれを読み込んで計算するだけで済みます。地点の選択も、期間の変更も、その場で再計算されます。
こうすると、サーバー代がかからないうえに、気象庁のサーバーに何度もアクセスして負荷をかけることもありません(天気予報だけは最新の情報が必要なので、表示するときに気象庁のデータを読みに行っています)。1年分の潮位データはたった50KBほど。文字だけのデータは、写真1枚よりずっと軽いのです。
この「全部ブラウザの中でやる」という作りは、位置情報を扱ううえでも効いています。「現在地から探す」を押したとき、アプリがやっているのは、いまいる場所と239地点それぞれの距離を計算して一番近いものを選ぶ、それだけです。地点の一覧はすでに手元(ブラウザ)にあるので、現在地の座標をどこかへ送る必要がまったくありません。
距離の計算には、地球が丸いことを考えに入れた式(球面三角法)を使っています。地図の上で定規を当てるように「縦の差と横の差」から求めてしまうと、日本のような南北に長い範囲では誤差が出るためです。この式で計算すると、東京と大洗は102km、那覇と石垣は410kmと出ます。実際の距離とよく合っています。
同じ機能を「位置情報を外部のサービスに送って、最寄りの地点を教えてもらう」という作り方で実装することもできます。しかしそれをすると、閲覧している人の居場所が第三者に渡ってしまいます。必要なデータを手元に持っておけば、送らずに済む——これは設計を考えるときに、けっこう大事な視点だと思います。
注意点
前回の記事の「この分析の限界」で書いた内容がそのまま当てはまります。
- 潮位変化と実際の流速は同じではありません(特に河川では、河川流量・地形・風の影響でズレや時間差が生じます)
- 潮位表は推算値であり、気圧や風による実際の潮位との差があります
- 時合いは潮だけでは決まりません。ベイト・水温・濁り・月明かり・プレッシャーなど多くの要因が絡みます
- 天気予報は府県予報区の代表的な地域のもので、釣り場のピンポイント予報ではありません
「潮が動く時間帯に釣り場に立つ確率を上げる」ための道具として、タイドグラフの相棒くらいの気持ちで使ってください。
今後
まずは実際に使ってみて、体感と照らし合わせるところから始めます。使ってみて気づいた点や欲しい機能(満干潮の時刻表示など)があれば、今後の改良の参考にするのでぜひ教えてください。