fetchとは?API通信を理解するための基本3ステップ

プログラミング学習

これまで肉体労働を中心に働いてきたが、キャリアチェンジを決意し、未経験からIT企業への転職が決まった。
TypeScriptの学習を進める中で、「急に出てくるけど、よく分からない」と感じたのが fetch だった。

APIからデータを取得する、と説明されても、
「APIってそもそも何?」
「どこから何を取ってきているのか分からない」
という状態だった。

この記事では、初心者の自分が fetchを学びながら整理した考え方 をもとに、
データ取得の流れをシンプルに解説していく。


fetchとは何をするものなのか

fetchとは、サーバーと通信してデータを取得するための関数だ。
主にAPIからデータを取得する際に使われる。

基本形は以下のようになる。

fetch("/api/data");

この一文だけでは何も起きていないように見えるが、
裏ではサーバーへリクエストを送り、レスポンスを受け取る処理が動いている。

重要なのは、fetchは 非同期処理 であり、
戻り値として Promise を返すという点だ。


fetchとPromiseの関係

fetchを理解するためには、Promiseの存在を避けて通れない。

fetch("/api/data")
  .then((res) => res.json())
  .then((data) => {
    console.log(data);
  });

fetchの戻り値は、すぐにデータそのものではなく、
「将来データが返ってくる」というPromiseである。

そのため、thenやawaitを使って、
結果が返ってきた後の処理 を書く必要がある。

この関係性が分かってから、
fetchが単体で完結するものではないことに気づいた。


async/awaitを使ったfetchの書き方

学習が進むと、fetchはasync/awaitとセットで書くことが多くなる。

async function getData() {
  const res = await fetch("/api/data");
  const data = await res.json();
  return data;
}

この書き方では、

  • fetchでレスポンスを取得
  • json()で中身を取り出す

という流れが、上から順に読める。

内部ではPromiseが使われているが、
見た目は同期処理のように書けるため、初心者でも理解しやすい。


レスポンスとデータは別物という考え方

fetchを学んで最も混乱したのが、
「fetchしたらすぐにデータが使えない」点だった。

fetchで返ってくるのは Responseオブジェクト であり、
JSONデータそのものではない。

const res = await fetch("/api/data");
const data = await res.json();

この2段階処理を理解しないと、
「なぜもう一度awaitが必要なのか」が分からなくなる。

レスポンスとデータは別物、
この前提を知ってから、コードが一気に読みやすくなった。


fetchでエラー処理が必要な理由

通信処理では、必ず成功するとは限らない。
そのため、fetchとtry/catchはセットで使われることが多い。

try {
  const res = await fetch("/api/data");
  const data = await res.json();
  console.log(data);
} catch (error) {
  console.error(error);
}

ネットワークエラーやサーバーエラーは、
こちらでは制御できない問題だ。

だからこそ、
失敗した場合の処理をあらかじめ用意しておく
という考え方が重要になる。


fetchを学んで見えてきた全体像

fetch単体では難しく感じていたが、
Promise、async/await、try/catchと一緒に理解することで、
ようやく全体像がつながった。

  • fetchは通信を開始する
  • Promiseで結果を待つ
  • awaitで処理を止める
  • try/catchで失敗に備える

これらはバラバラの知識ではなく、
一連の流れとして使われるものだった。


まとめ

fetchは、TypeScriptやフロントエンド開発において、
避けて通れない重要な機能だ。

  • サーバーと通信するための関数
  • Promiseを返す非同期処理
  • async/awaitとセットで理解する

このポイントを押さえることで、
API通信への苦手意識はかなり減った。

未経験からのIT転職で不安は尽きないが、
学んだことをこうして言葉にすることで、
確実に理解が深まっていると感じている。

今後も、TypeScript学習でつまずいたテーマを中心に、
記事としてアウトプットを続けていく予定だ。

コメント

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