JS初めてのJavaScript

Day 4ブラウザを動かす — JSでページを操作する

fetchとasync/await — ネットからデータを取る

fetchでインターネットからデータを取ってくる。async/awaitは「待つ」印。全部書けなくてよい、読めて説明できればよい。最後にReactへの励まし。

ネットの向こうからデータを取る

アプリの多くは、天気やユーザー情報など、ネットの向こう(サーバー)からデータを取ってきて表示します。この「取りに行く」役目が fetch(フェッチ)です。fetch に住所(URL)を渡すと、そのURLへデータを取りに行ってくれます。

たとえるなら、出前を注文するようなものです。注文(fetch)したら、料理が届くまで少し待ちます。ネット越しのやり取りは一瞬では終わらないので、必ず“待ち時間”があるのがポイントです。

async / await は「待つ」印

この“待つ”を表す合図が async と await です。関数の頭に async を付けると「この中では待つことがあるよ」という宣言になり、時間のかかる処理の前に await を付けると「これが終わるまでここで待つ」という意味になります。

JAVASCRIPT
async function getUser() {
  const res = await fetch("https://api.example.com/user");
  const data = await res.json();
  console.log(data);
}
URLへ取りに行き(待つ)、届いたら中身をJSON化(また待つ)して表示

読み方はこうです。(1)fetch でURLへデータを取りに行き、await で届くまで待つ。(2)返ってきた返事(res)を res.json() で“JSという扱いやすい形”に変換し、これも await で待つ。(3)出来上がった data を使う。全部自分で書けなくて大丈夫。「取りに行って、待って、使う」の3拍子が読めれば十分です。

なぜ「待つ」が必要なのか

ネット越しのやり取りは時間がかかります。もし待たずに次へ進むと、まだ料理が届いていないのに「いただきます」をしてしまう状態になり、データが空っぽのままエラーになります。await は「届いてから次へ」を保証する安全装置です。

await は async の中でだけ

await は、async を付けた関数の中でしか使えません。「await is only valid in async functions」というエラーが出たら、その処理を async function で包み忘れています。まずそこを確認しましょう。

つまずきやすい進め方

最初から何も見ずに、エラー処理まで全部を白紙から書こうとして、途中で止まってしまう。

おすすめの進め方(まず読む)

「fetch でURLへ取りに行き、await で届くまで待ち、res.json() で使える形に直して使う」——この3拍子を読んで説明できればOK。書くのは後から、AIと一緒に。

AIにはこう聞く

「このfetchのコードを、出前にたとえて1行ずつ説明して。await が付いている行では何を待っているの?」

おつかれさま — JSの土台は完成

ここまでで、JSの土台がそろいました。値と変数、条件と繰り返し、関数、そしてページを操作するDOM・イベント・fetch。「全部を白紙から書ける」必要はありません。コードを読めて、何をしているか説明できて、AIと一緒に直せる。それが今のあなたです。もう立派な“読める人”です。

そして次はいよいよ React。今日書いたような「要素をつかんで、イベントで、中身を書き換える」を、もっと楽に・きれいに書くための道具です。今日の人形劇のたとえは、Reactでもそのまま効いてきます。土台はできています。安心して次の舞台へ進みましょう。ここまで本当におつかれさまでした。

次のコースへ

Reactコースでは、今日の「つかんで書き換える」を“部品(コンポーネント)”という形でまとめていきます。JSで学んだ関数・アロー関数・イベントの知識が、そのまま活きます。楽しみに進んでください。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

fetch は何をするもの?

Q2

await が付いている行は、何をしている?

Q3

async/await と fetch の関係を、出前のたとえを使って説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。