Day 4・ブラウザを動かす — JSでページを操作する
fetchとasync/await — ネットからデータを取る
fetchでインターネットからデータを取ってくる。async/awaitは「待つ」印。全部書けなくてよい、読めて説明できればよい。最後にReactへの励まし。
ネットの向こうからデータを取る
アプリの多くは、天気やユーザー情報など、ネットの向こう(サーバー)からデータを取ってきて表示します。この「取りに行く」役目が fetch(フェッチ)です。fetch に住所(URL)を渡すと、そのURLへデータを取りに行ってくれます。
たとえるなら、出前を注文するようなものです。注文(fetch)したら、料理が届くまで少し待ちます。ネット越しのやり取りは一瞬では終わらないので、必ず“待ち時間”があるのがポイントです。
async / await は「待つ」印
この“待つ”を表す合図が async と await です。関数の頭に async を付けると「この中では待つことがあるよ」という宣言になり、時間のかかる処理の前に await を付けると「これが終わるまでここで待つ」という意味になります。
async function getUser() {
const res = await fetch("https://api.example.com/user");
const data = await res.json();
console.log(data);
}読み方はこうです。(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に噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
fetch は何をするもの?
await が付いている行は、何をしている?
async/await と fetch の関係を、出前のたとえを使って説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。