0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

無料で簡単!天気予報サイトを公開する方法をやさしく解説

Last updated at Posted at 2025-02-22

1.はじめに

前回、天気予報を大きな画面に表示するシステムを作りました。デジタルサイネージを活用し、Raspberry Piを使って低コストで実現する方法を紹介しました。

image.png

しかし、この記事を読んだ友人から「WebやRaspberry Piの知識がないと運用が難しい」「スマホなど色々なデバイスで見られる方法がほしい」といった声をいただきました。たしかに、Raspberry Piの設定や専用の環境が必要なのは手間ですよね。

そこで今回は、誰でも簡単に天気予報サイトを公開できる方法を紹介します。GitHub Pagesを使って無料でWebページを作り、URLを発行して、スマホやPCから簡単にアクセス可能にする方法を紹介します。最後まで読んで、ぜひ試してみてください。

2.使用するソースコードの紹介

今回のHTMLコードは、気象庁のAPIから天気予報を取得し、画面にシンプルに表示するWebページです。黒い背景に白文字で見やすくデザインされており、Bootstrapを使用して中央に天気情報を表示します。

2.1.ソースコード

real-time-weather.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>天気予報</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-dark text-white d-flex justify-content-center align-items-start vh-100">
    <div class="mt-5 text-center">
        <p id="time" class="display-6"></p>
        <p id="weather" class="display-1 fw-bold mt-3"></p>
    </div>

    <script>
        function fetchWeatherForecast() {
            const url = "https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json";
            let todayForecast;

            const xhr = new XMLHttpRequest();
            xhr.open("GET", url, false);  // 同期実行
            try {
                xhr.send();
                if (xhr.status === 200) {
                    const data = JSON.parse(xhr.responseText);
                    todayForecast = data[0].timeSeries[0].areas[0].weathers[0];
                } else {
                    throw new Error("ステータスコード: " + xhr.status);
                }
            } catch (error) {
                todayForecast = "エラーが発生しました: " + error.message;
            }

            return todayForecast;
        }

        function getCurrentTime() {
            const now = new Date();
            const hours = now.getHours().toString().padStart(2, '0');
            const minutes = now.getMinutes().toString().padStart(2, '0');
            return `${hours}:${minutes}`;
        }

        function reloadPage() {
            location.reload();
        }

        document.addEventListener('DOMContentLoaded', () => {
            const weather = fetchWeatherForecast();
            const currentTime = getCurrentTime();
            document.getElementById('time').innerText = `今日の天気予報(${currentTime}現在)`;
            document.getElementById('weather').innerText = weather;
            setTimeout(reloadPage, 180000); // 3分ごとにページをリロード
        });
    </script>
</body>
</html>

2.2.主な動作

  1. 天気予報の取得

    • 気象庁のAPIから天気データを取得し、JSON形式で処理
    • 天気情報を抽出して画面に表示
    • 取得エラーが発生した場合はエラーメッセージを表示
  2. 現在時刻の表示

    • 現在の時刻を「HH:MM」形式で表示
  3. ページの初期化と表示

    • ページが読み込まれると、天気予報と時刻を自動で表示
  4. 3分ごとの更新

    • 最新の天気情報を表示するため、3分ごとにページを自動リロード

シンプルな構成なので、すぐに試せます!

2.3.使用するAPIについて

https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json は、東京都の天気予報データを取得できる公式のAPIです。

このURLにアクセスすると、東京都の天気予報がJSON形式で提供されます。データはプログラムで扱いやすいように構造化されており、特定の情報を簡単に取得できます。

なお、URL内の 「130000」 は東京都の都道府県コードを指しており、他の地域の天気予報を取得するには、異なる都道府県コードを使用します。 都道府県コードの詳細については、こちらのドキュメントを参考にしてください。

3.GitHub Pages を使ってWebサイトを無料で公開する

この章では、GitHub Pages を利用して、作成したWebページを無料で公開する方法を紹介します。GitHub Pages を使うと、簡単な手順でWebサイトをインターネット上に公開できます。

3.1. GitHubにソースコードをプッシュする

次に、GitHubにリポジトリを作成し、2.使用するソースコードの紹介 で作成したソースコードをコミットしてから、GitHubへプッシュしてください。 GitやGitHub がよくわからない方は、以下の記事を参考にしてください。また、個人的に GitHub Desktop のインストールをおすすめします。今回リポジトリを作成する際は、 Public に設定してください。

3.2. GitHub Pages を有効にする

  1. 今回使用しているリポジトリの「Settings(設定)」タブを開きます。
    image.png

  2. 左側のメニューで「Pages」をクリック。
    image.png

  3. 「Branch」セクションで「main」ブランチと「/root」を選択し、「Save」ボタンをクリック。
    image.png

  4. 「Visit site」をクリック。
    image.png

今回は、real-time-weather.htmlというファイルにソースコードを記入してプッシュしました。そのため、表示されたURLの後ろに「/real-time-weather.html」を追加してください。なお、今回公開したURLは次の通りです。

https://nakkinakki55.github.io/real-time-weather/real-time-weather.html
image.png

以上です。

さいごに

今回はGitHub Pagesを使ってWebページのURLを発行できました。GitHub Pagesは無料でWebサイトを公開できるため、とても便利だと感じました。しかし、注意が必要なのは、GitHub PagesがPHP、Ruby、Pythonなどのサーバーサイド言語をサポートしていないことです。

一方で、HTML、CSS、JavaScriptなどのフロントエンド技術には対応しているので、デザイナーの方やフロントエンドだけで完結するプロジェクトには最適です。この点で、非常に便利なサービスだと思います。

ただし、GitHubは実際の開発現場でもよく使われており、レポジトリは通常 Private に設定されています。今回のように Public にして外部に公開する際は、注意が必要です。過去には、誤って Public にしたことでアクセストークンやデータベース接続情報が漏れ、大きな問題になった事例もあります。運用時は、本当に気をつけましょう。

それでも、GitHub Pagesは本当に便利なサービスで、個人的には非常に満足しています。将来的にはPHPやRuby、Pythonなどのサーバーサイド言語にも対応してほしいと思っています。

今回はここまでてす。最後まで読んでくださりありがとうございます。ではまた。

参考文献

GitHub Pages について - GitHub Docs
【webサイトを無料で公開できる】GitHub Pagesの使い方について #HTML - Qiita

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?