【JS応用-5】世界中のデータを使いたい放題!「API通信」の超・基本

JavaScriptを学ぶ人の多くが「ここで挫折した…」と言う難関。それが「API通信」です。

でも安心してください。
昔は書くのが大変でしたが、現代のJavaScriptでは「たった数行」で書けるようになりました。

これさえ覚えれば、あなたのサイトに「最新ニュース」や「天気予報」を表示できるようになります!

1. API(エーピーアイ)って何?

Application Programming Interface の略ですが、覚える必要はありません。
一言で言うと「データの窓口(コンセント)」です。

例えば、気象庁やGoogleなどの大きなサービスは、「データを配るための窓口(URL)」を用意してくれています。
そこに「東京の天気をください!」とアクセスすると、データが返ってくる仕組みです。

2. 魔法の言葉「async / await」

API通信をするために覚える呪文は、以下の3つセットです。

  • async(エイシンク): 「今から通信などの時間がかかる処理をしますよ」という宣言。
  • await(アウェイト): 「データが届くまで待ちますよ」という合図。
  • fetch(フェッチ): 「データを取りに行って!」という命令。

通信は一瞬では終わりません。データが返ってくる前に次のプログラムが動くとエラーになってしまうので、「await(待て)」をするのが一番のポイントです。

基本の型(コピペ用)

// async function で箱を作る
const getWeather = async () => {
    
    // fetch でデータを取りに行く(URLはAPIごとに違う)
    // await で返事を待つ
    const response = await fetch("https://api.....");
    
    // 届いたデータをJavaScriptで使える形式(JSON)に変換する
    // ここも変換が終わるまで await で待つ
    const data = await response.json();

    // 中身を表示
    console.log(data);
};

3. 実践:天気予報アプリを作ろう

では、登録不要・無料で使える「Open-Meteo」というAPIを使って、「現在の東京の気温」を表示してみましょう。

<!DOCTYPE html>
<html lang="ja">
<head>
    <style>
        body { text-align: center; padding: 50px; font-family: sans-serif; }
        #temperature { font-size: 80px; font-weight: bold; color: #ff9800; }
        button { padding: 10px 20px; font-size: 18px; cursor: pointer; }
    </style>
</head>
<body>

    <h1>東京の天気</h1>
    <div id="temperature">--°C</div>
    <button id="btn">天気を取得</button>

    <script>
        // APIのURL(東京の緯度経度を指定しています)
        const url = "https://api.open-meteo.com/v1/forecast?latitude=35.6895&longitude=139.6917¤t_weather=true";

        const btn = document.querySelector("#btn");
        const display = document.querySelector("#temperature");

        // 天気を取得する関数(async を忘れずに!)
        const getWeather = async () => {
            
            // 1. データを取りに行く(待機中...)
            const response = await fetch(url);
            
            // 2. データをJSで使えるように変換(待機中...)
            const data = await response.json();
            
            console.log(data); // ← コンソールで中身を見てみよう!

            // 3. 必要なデータを取り出す
            // 今回のAPIでは、dataの中に current_weather があり、その中に temperature がある
            const temp = data.current_weather.temperature;

            // 4. 画面に表示
            display.textContent = `${temp}°C`;
        };

        // ボタンクリックで実行
        btn.addEventListener("click", getWeather);

    </script>

</body>
</html>

解説:データの取り出し方

APIから返ってくるデータ(JSON)は、巨大なオブジェクトです。
コンソールを見ると、以下のような構造になっています。

{
    "latitude": 35.6895,
    "current_weather": {
        "temperature": 18.5,  // ← これが欲しい!
        "windspeed": 12.0,
        "weathercode": 3
    }
}

だから、data.current_weather.temperature とドットで繋いでいくことで、ピンポイントで気温を取り出せるのです。

まとめ

  • 外部データを使うなら API
  • async / await / fetch は3点セットで覚える。
  • 返ってきたデータ(オブジェクト)の中身をよく見て、必要な情報を取り出す。

これができれば、Googleマップを表示したり、Instagramの写真を埋め込んだりすることも夢ではありません。
次回はJavaScript編の最終回! 「データ保存(localStorage)」 です。
ブラウザを閉じても消えない「Todoリスト」を作って卒業制作としましょう!

📝 今日のミニテスト

クリックで答え合わせ!

Q1. fetchjson() など、時間がかかる処理の結果を「待つ」ためのキーワードは?

正解:await
これを書かないと、データが届く前に次の行が実行されてエラーになります。

Q2. await を使う関数に必ずつけなければならないキーワードは?

正解:async
const func = async () => { ... } のように関数の前につけます。

Q3. APIから取得できるデータの形式(オブジェクトの親戚)を何と呼ぶ?

正解:JSON(ジェイソン)
JavaScript Object Notation の略です。見た目はJSのオブジェクトとそっくりです。

タイトルとURLをコピーしました