記入日:2023-03-08 編集日:2023-03-08
SQL見るだけクエリ。今回は、天気予報のデータをAPIで取得してみます。天気予報API:Open-Meteoの続きです。取得するデータを少し間引いてみようと思います。
この記事を読むと(約5分)
APIで天気予報のデータを取得し、表示する方法がイメージできます。また、必要な時間帯のデータだけを表示する方法もイメージできます。
前回同様、Open-Meteoは、非商用利用であれば無料で使えるオープンソースの天気予報APIです。 APIキーは不要で、すぐに利用できます。世界中の場所に対して、時間ごとの7日間の天気予報を提供しています。
東京の、湿度と風速を取得してみます。
// 緯度、経度、天気変数の変数を定義する $lat = 35.6895; $lon = 139.6917; $vars = "relativehumidity_2m,windspeed_10m"; $zone = "Asia%2FTokyo"; // Open-Meteo APIのURLとパラメータを作成する $url = "https://api.open-meteo.com/v1/forecast?latitude=$lat&longitude=$lon&hourly=$vars&timezone=$zone"; // URLからJSONデータを取得 $json = file_get_contents($url); // JSONデータを連想配列に変換 $data = json_decode($json, true);
表示テーブルを整形する際に関して、
前回は、APIで取得した全ての時間帯の表示ループにしましたが。
// 配列の値を表のセルとして出力する
for ($i = 0; $i < count($hourly["time"]); $i++) {
echo "";
foreach ($hourly as $key => $value) {
echo "".$value[$i]." ";
}
echo " ";
}
今回は下記の様に、表示する時間帯を4つの時間に絞って、ループさせました。
// 配列の値を表のセルとして出力する
for ($i = 0; $i < count($hourly["time"]); $i++) {
// $key[0]の$valueの値から最初の11文字と最後の3文字を取り除く
$hour = substr($hourly["time"][$i], 11, 2);
// $hourが00か06か12か18なら
if ($hour == "00" || $hour == "06" || $hour == "12" || $hour == "18") {
echo "";
foreach ($hourly as $key => $value) {
echo "".$value[$i]." ";
}
echo " ";
}
}
東京の0時・6時・12時・18時の湿度と風速(1週間)
| time | relativehumidity_2m | windspeed_10m |
|---|---|---|
| 2026-01-10T00:00 | 66 | 3.1 |
| 2026-01-10T06:00 | 62 | 2.3 |
| 2026-01-10T12:00 | 46 | 9.7 |
| 2026-01-10T18:00 | 66 | 9.4 |
| 2026-01-11T00:00 | 81 | 12.1 |
| 2026-01-11T06:00 | 57 | 8.3 |
| 2026-01-11T12:00 | 36 | 10.5 |
| 2026-01-11T18:00 | 33 | 12 |
| 2026-01-12T00:00 | 42 | 6.6 |
| 2026-01-12T06:00 | 54 | 4.3 |
| 2026-01-12T12:00 | 39 | 3.4 |
| 2026-01-12T18:00 | 66 | 3.1 |
| 2026-01-13T00:00 | 74 | 2.4 |
| 2026-01-13T06:00 | 73 | 0.5 |
| 2026-01-13T12:00 | 42 | 10.7 |
| 2026-01-13T18:00 | 49 | 9.6 |
| 2026-01-14T00:00 | 63 | 2.1 |
| 2026-01-14T06:00 | 68 | 3.4 |
| 2026-01-14T12:00 | 32 | 7.6 |
| 2026-01-14T18:00 | 39 | 8.1 |
| 2026-01-15T00:00 | 60 | 3.3 |
| 2026-01-15T06:00 | 65 | 3.1 |
| 2026-01-15T12:00 | 39 | 0.5 |
| 2026-01-15T18:00 | 68 | 5.5 |
| 2026-01-16T00:00 | 60 | 7.4 |
| 2026-01-16T06:00 | 75 | 2.9 |
| 2026-01-16T12:00 | 36 | 12.6 |
| 2026-01-16T18:00 | 42 | 9.4 |
正午のみの表示だと以下の様になります。
// 配列の値を表のセルとして出力する
for ($i = 0; $i < count($hourly["time"]); $i++) {
// $key[0]の$valueの値から最初の11文字と最後の3文字を取り除く
$hour = substr($hourly["time"][$i], 11, 2);
// $hourが12なら
if ($hour == "12") {
echo "";
foreach ($hourly as $key => $value) {
echo "".$value[$i]." ";
}
echo " ";
}
}
東京の正午の湿度と風速(1週間)
| time | relativehumidity_2m | windspeed_10m |
|---|---|---|
| 2026-01-10T12:00 | 46 | 9.7 |
| 2026-01-11T12:00 | 36 | 10.5 |
| 2026-01-12T12:00 | 39 | 3.4 |
| 2026-01-13T12:00 | 42 | 10.7 |
| 2026-01-14T12:00 | 32 | 7.6 |
| 2026-01-15T12:00 | 39 | 0.5 |
| 2026-01-16T12:00 | 36 | 12.6 |
SQLの使いどころ
サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。
SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。
また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。
KK
機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。