【初心者向け】JavaScript「fetch」が分からない?郵便配達で理解してみよう
こんにちは、とまだです。
JavaScriptを学習していて、「fetchとは?」「APIとの通信がよくわからない」と悩んでいませんか?
実は私も最初、fetchという概念でつまずきました。サーバーとの通信って、目に見えないから理解しづらいんですよね。プログラミングスクールで教えていた時も、受講生の約8割が「fetchがピンとこない」と相談してきたんです。
でも大丈夫です。今回は、JavaScriptのfetchを「郵便配達」に例えながら、誰でも理解できるように解説していきます。
fetchとは?郵便配達で理解する基本概念
JavaScriptのfetchって、難しく感じますよね。
でも実は、毎日使っている郵便配達と同じようなものなんです。
郵便配達を想像してみてください。
- あなたが手紙を書いてポストに投函します
- 郵便局員さんが手紙を配達してくれます
- 相手から返事が返ってきます
JavaScriptのfetchも同じです。
// fetchの基本形
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data));
ここで、fetch
が郵便配達員、'https://api.example.com/data'
が宛先、返ってくるdata
が返事にあたります。
なぜfetchが必要なのか
「JavaScriptだけで完結すればいいのに、なぜ外部と通信する必要があるの?」
そう思うかもしれません。
例えば、天気予報アプリを作る場合を考えてみましょう。
fetchを使わない場合:
- 全国の天気データを自分で集める必要がある
- データを毎日更新しなければならない
- 膨大な情報を管理することになる
fetchを使う場合:
- 気象庁のAPIから最新データを取得するだけ
- 常に最新の情報が手に入る
- データ管理の手間がない
つまり、fetchを使えば他の人が管理している便利なデータを簡単に使えるんです。
同期処理と非同期処理の違いを理解しよう
fetchを理解するには、「非同期処理」という概念を知る必要があります。
でも「非同期」って言葉、分かりづらいですよね。
レストランで例える同期と非同期
レストランを想像してみてください。
同期処理(効率が悪い):
- お客さんAの注文を聞く
- 料理を作る(10分待つ)
- 料理を運ぶ
- やっとお客さんBの注文を聞く
これでは、お客さんBは10分以上待たされてしまいます。
非同期処理(効率的):
- お客さんAの注文を聞く
- 厨房に注文を伝える
- すぐにお客さんBの注文も聞く
- 料理ができたら順番に配膳
fetchは非同期処理なので、データの取得を待っている間も、他の処理を続けられるんです。
fetchの基本的な使い方
では、実際にfetchを使ってみましょう。
一番シンプルな形から始めます。
基本形:データを取得する
// ユーザー情報を取得する例
fetch('https://jsonplaceholder.typicode.com/users/1')
.then(response => response.json())
.then(userData => {
console.log('ユーザー名:', userData.name);
});
このコードを郵便配達に例えると:
fetch()
で「ユーザー情報をください」という手紙を送る.then(response => response.json())
で返事を開封する.then(userData => {...})
で返事の内容を読む
エラーが起きた時の対処法
郵便配達でも、宛先不明で手紙が戻ってくることがありますよね。
fetchでも同じようなことが起きます。
fetch('https://api.example.com/data')
.then(response => {
if (!response.ok) {
throw new Error('データの取得に失敗しました');
}
return response.json();
})
.then(data => {
console.log('取得成功:', data);
})
.catch(error => {
console.log('エラーが発生:', error.message);
});
.catch()
は、「もし手紙が届かなかったら」という保険のようなものです。
よくあるつまずきポイントと解決法
1. 「Promiseとは?」問題
fetchを使うと「Promise」という言葉が出てきて混乱しますよね。
Promiseは約束手形のようなものです。
レストランで注文した時、「料理ができたらお持ちします」という約束をもらいますよね。その約束がPromiseです。
- 約束が守られた(料理が来た)→
.then()
が実行される - 約束が破られた(売り切れだった)→
.catch()
が実行される
2. 「なぜ.json()が必要?」問題
APIから返ってくるデータは、最初は封筒に入った手紙のような状態です。
.json()
は、その封筒を開けて中身を読める状態にする作業なんです。
3. 「async/awaitって必要?」問題
最近はasync/await
という書き方もよく見かけますよね。
async function getUserData() {
const response = await fetch('https://jsonplaceholder.typicode.com/users/1');
const userData = await response.json();
console.log('ユーザー名:', userData.name);
}
これは、.then()
を使った書き方をより読みやすくしたものです。
どちらを使っても同じ結果になるので、最初は.then()
から覚えるのがおすすめです。
fetchを使いこなすための実践的なコツ
APIのURLを確認する習慣をつけよう
fetchでよくある失敗は、URLの間違いです。
郵便で例えると、住所を間違えて書いてしまうようなものです。
確認ポイント:
https://
から始まっているか- スペルミスはないか
- 最後の
/
(スラッシュ)は必要か不要か
開発者ツールを活用しよう
ブラウザの開発者ツール(F12キー)は、fetchのデバッグに欠かせません。
Networkタブを開くと、実際にどんなデータがやり取りされているか見えます。
まるで郵便配達員の動きを追跡できるGPSのようなものです。
fetchマスターへの第一歩
fetchは最初は難しく感じるかもしれません。
でも、「データを取りに行って、返事を待つ」という基本さえ理解すれば、あとは慣れの問題です。
私も最初は「非同期処理とは?」という状態でしたが、今では当たり前のように使えるようになりました。
大切なのは、完璧に理解しようとしないこと。
まずは簡単な例から始めて、少しずつ慣れていけばいいんです。
もし「もっと体系的に学びたい」「練習問題で理解を深めたい」という方は、Learning Next SchoolのJavaScriptカリキュラムがおすすめです。
特に「非同期処理の基礎」のチャプターでは、fetchを含む非同期処理を段階的に学べるよう設計されています。
また、JavaScriptでよく遭遇するエラーについては、JavaScript エラー解決完全ガイドでも詳しく解説していますので、fetchでエラーが出た時の参考にしてください。
fetchは現代のWeb開発に欠かせない技術です。
一緒に一歩ずつマスターしていきましょう!
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →