湘南の潮汐・風・波データを分析する方法

― TideLogを使った可視化・AI活用ガイド(PHP版) ―

はじめに:なぜ「潮汐 × 風 × 波」を分析すると良いのか

湘南は、潮汐・風向・波の組み合わせで波質が劇的に変化するエリアだ。
「昨日は良かったのに今日は全然違う」「同じポイントでも割れ方が変わる」
この原因の大半は、次の3要素によって説明できる。

  • 潮汐(潮位) … 浅すぎればダンパー化しやすく、高すぎると割れにくい
  • 風(向き・強さ) … オンショアで面が乱れ、オフショアで面が整う
  • 波(サイズ・周期・向き) … ブレイクのクオリティを支配する要素

これらを“勘”ではなく“データ”で理解すると、次のようなメリットが得られる。

  • 良い波が立ちやすい時間帯がパターン化して分かる
  • サーフログとの照合で「自分に合う良い波の条件」を抽出できる
  • 波予測サイトを“根拠を理解して読む”ことが可能になる
  • 湘南の海の傾向を長期的に学べる

この記事では、Surf-OK が販売する TideLog CSV Lite版(湘南2024) を使い、
潮汐 × 風 × 波データを PHPで読み込み → 可視化 → 活用 する方法をまとめる。


TideLog CSV Lite版とは

8,784行、欠損0%、湘南2024年を1年分まるごと収録

TideLog CSV Lite版は、江の島周辺の 2024年・毎時データ を整形したCSVデータだ。

収録カラム

  • datetime(日本時間)
  • tide_cm(潮位)
  • wind_dir(16方位)
  • wind_speed(m/s)
  • wave_height(m)
  • wave_period(s)
  • swell_dir(°)
  • swell_period(s)

特徴

  • 1年分 8,784行(24 × 366日)
  • 欠損 0%のクリーンデータ
  • Webアプリ・WordPress・PHPスクリプトで扱いやすい構成
  • カラム名がシンプルなのでコードに組み込みやすい
  • ローカルで自由に加工可能(API不要)

まずはシンプルなファイル1つで、湘南の海を「数値の形」で理解できるようになる。


TideLogを PHP で読み込む方法

― そのままコピペで動くサンプルコード付き ―

① 基本の読み込み(CSV → 配列)

<?php
$path = "tidelog_shonan_2024_lite.csv";
$data = [];

if (($handle = fopen($path, "r")) !== false) {
    $header = fgetcsv($handle); // 先頭行(カラム名)

    while (($row = fgetcsv($handle)) !== false) {
        $data[] = array_combine($header, $row);
    }
    fclose($handle);
}

echo "Loaded rows: " . count($data);
?>

これで 8,784行の連想配列 $data ができる。


② 直近のデータを10件だけ確認

<?php
foreach (array_slice($data, 0, 10) as $row) {
    echo $row['datetime'] . " | Tide: " . $row['tide_cm'] . "cm | Wave: " . $row['wave_height'] . "m\n";
}
?>

③ 特定の年月だけ抽出(例:2024年8月)

<?php
$aug = array_filter($data, function ($row) {
    return strpos($row['datetime'], "2024-08") === 0;
});

echo "August rows: " . count($aug);
?>

④ 必要なカラムだけ取り出す

<?php
$subset = array_map(function($row){
    return [
        'datetime'     => $row['datetime'],
        'tide_cm'      => (int)$row['tide_cm'],
        'wind_speed'   => (float)$row['wind_speed'],
        'wave_height'  => (float)$row['wave_height'],
    ];
}, $data);
?>

PHPだけで“軽いデータ分析”まで可能だ。


PHP × グラフ化の方法

― ライブラリ不要で可視化リンクを作る、または画像生成も可能 ―

PHPでグラフを作る方法は2種類ある。


方法①:Google Charts(最も簡単・Web向け)

PHPで配列 → JSON に変換し、Google Charts に渡すだけ。

<?php
$json = json_encode(array_slice($subset, 0, 200)); // 最初の200行だけ表示
?>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<script>
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {
    const raw = <?php echo $json; ?>;
    const rows = raw.map(r => [new Date(r.datetime), Number(r.tide_cm), Number(r.wave_height)]);

    const data = new google.visualization.DataTable();
    data.addColumn('datetime', 'Date');
    data.addColumn('number', 'Tide (cm)');
    data.addColumn('number', 'Wave (m)');
    data.addRows(rows);

    const chart = new google.visualization.LineChart(document.getElementById('chart'));
    chart.draw(data);
}
</script>
<div id="chart" style="width:100%; height:300px;"></div>

これだけで 潮位 × 波高の折れ線グラフ を描画できる。


方法②:PHP-GD / ImageMagick で画像生成(高度)

PHP内で画像生成も可能だが、
Surf-OK や WordPressに組み込むなら Google Charts / Chart.js 連携が最適


サーフログを照合し「良い波の日の条件」を探る

― PHPでも十分に分析できる ―

サーフログ(CSV)をPHPで読み込み、TideLogと突き合わせると“自分の良い波条件”が抽出できる。

① サーフログを読み込む

<?php
$log = [];
if (($h = fopen("my_surf_log.csv", "r")) !== false) {
    $header = fgetcsv($h);
    while (($row = fgetcsv($h)) !== false) {
        $log[] = array_combine($header, $row);
    }
    fclose($h);
}
?>

② datetime をキーにして結合

<?php
$indexedTide = [];
foreach ($data as $row) {
    $indexedTide[$row['datetime']] = $row;
}

$merged = [];
foreach ($log as $l) {
    $dt = $l['datetime'];
    if (isset($indexedTide[$dt])) {
        $merged[] = array_merge($l, $indexedTide[$dt]);
    }
}
?>

③ “良かった日”を抽出(score ≥ 4)

<?php
$good = array_filter($merged, fn($r) => (int)$r['score'] >= 4);

$stats = [
    'tide' => [],
    'wind' => [],
    'wave' => []
];

foreach ($good as $g) {
    $stats['tide'][] = $g['tide_cm'];
    $stats['wind'][] = $g['wind_speed'];
    $stats['wave'][] = $g['wave_height'];
}

echo "Average tide: " . array_sum($stats['tide']) / count($stats['tide']);
echo "\nAverage wind: " . array_sum($stats['wind']) / count($stats['wind']);
echo "\nAverage wave: " . array_sum($stats['wave']) / count($stats['wave']);
?>

これで次のような傾向が分かる。

  • 良い日ほど 潮位が特定の範囲に集中
  • 風速が弱め
  • 波高や周期も偏りがある

“自分に合った波”の条件を、
完全に データ起点で分析 できるようになる。


研究・アプリ開発での応用例

― PHPでも実装しやすい用途が多数 ―

1. Webアプリの波スコア判定

  • 潮位×風×うねりから独自スコアを返すAPI
  • 「今の湘南の波は◯点」と返す判定ロジック

2. WordPressプラグインとしての活用

  • TideLogを WP Cron で読み込み、
    毎朝「今日の湘南予報」を自動生成
  • Surf-OK Auto Poster と組み合わせれば強力な自動化が可能

3. AI要約 × PHP

  • ChatGPT APIと組み合わせて“波傾向の要約”を毎日投稿
  • 予測サイトの解説を自動で人間的な文章に整形

4. 学術用途

  • 四季の波高分布分析
  • 風向と波向の整合性検証
  • 潮位とブレイク質の相関研究

TideLogは欠損ゼロ・整形済みなので、
機械学習・統計・Webアプリすべてに使いやすい


まとめ:湘南の波を“データで理解する”時代へ

TideLogを使えば、以下のことができるようになる。

  • 潮位・風速・波高の関係性が見えてくる
  • グラフ化すれば傾向が一目で分かる
  • サーフログとの照合で“良い波の再現性”を掴める
  • PHPだけでWebアプリ開発まで発展できる

サーフィンの経験値が“データ”と組み合わさることで、
湘南の海を読む力は確実にワンランク上がる。


TideLog CSV Lite版(湘南2024)はこちら

👉 https://surf-ok-tools.booth.pm/

TideLog 湘南データセットのご案内

 

湘南エリアの 2024年1年分の潮汐・風・波データ を 1時間ごとにまとめたCSVデータセット「TideLog」を公開しています。
サーフィンの記録・研究、AI分析、Webアプリ開発用の素材としてご利用いただけます。

👉 TideLog 湘南データセットを見る

最近の記事
  1. 【サーフィン波予報】西湘・大磯磯高前 (12/01月–12/07日)

  2. 【サーフィン波予報】西湘・大磯源二 (12/01月–12/07日)

  3. 【サーフィン波予報】西湘・大磯メイン (12/01月–12/07日)

  4. 【サーフィン波予報】西湘・大磯花水川河口 (12/01月–12/07日)

  5. 【サーフィン波予報】西湘・平塚虹ヶ浜 (12/01月–12/07日)

  6. 【サーフィン波予報】西湘・平塚プール下 (12/01月–12/07日)

  7. 【サーフィン波予報】西湘・平塚袖ヶ浜 (12/01月–12/07日)

  8. 【サーフィン波予報】西湘・平塚生コン前 (12/01月–12/07日)

  9. 【サーフィン波予報】西湘・吉浜海岸(湯河原吉浜) (12/01月–12/07日)

  10. 【サーフィン波予報】湘南・長者ヶ崎(葉山) (12/01月–12/07日)

サーフポイント一覧
カレンダー
2025年12月
1234567
891011121314
15161718192021
22232425262728
293031