バイブコーディングの土台

Day 6外とつながる — Web・API

リクエストとレスポンス(注文と提供)

外とのやり取りは「頼み(リクエスト)」と「返り(レスポンス)」の一往復でできている。

やり取りは伝票の往復

クライアントが厨房に頼むこと、それが [[requesclienrequest リクエスト(注文)です。厨房が作って返してくること、それが [[responsclienrequest レスポンス(提供)です。外とのやり取りは、この「頼み」と「返り」の一往復が基本の単位になります。

たとえるなら

リクエストは「注文の伝票」です。伝票には『何を』『いくつ』『どのテーブルへ』が書いてあります。レスポンスは運ばれてくる『料理そのもの』か、あるいは『申し訳ありません、本日は売り切れです』というお詫びの返事です。うまくいっても、いかなくても、必ず何かが返ってきます。

この「必ず何か返ってくる」というのが大事です。注文したのに何も返ってこない、というのは、料理でもトラブルですよね。プログラムでも同じで、返りが来ないとアプリは「待ちぼうけ」になります。だから返りには『成功の料理』だけでなく『失敗のお知らせ』も含まれます。

返事には「状態を表す番号」がついてくる

レストランの返事に『はい、できました』『満席です』『そのメニューはありません』があるように、レスポンスにも状態を表す番号(ステータスコード)が付いてきます。有名なのは『404(見つかりません)』です。ページが消えているときに見たことがあるかもしれません。番号は暗記しなくて大丈夫。「成功系」「頼み方の間違い系」「厨房の失敗系」の3グループがある、とだけ覚えておきましょう。

  • 200番台:うまくいった(料理が無事に届いた)。
  • 400番台:頼み方に問題があった(存在しないメニューを頼んだ=404など)。
  • 500番台:厨房側で失敗した(コンロが壊れた、のような向こうの問題)。

返りを見ないコード

頼んだ結果を確認せず、料理が来た前提で話を進める。売り切れでもお皿を出そうとして混乱する。

返りを確認するコード

『成功だった?失敗だった?』をまず確認し、失敗ならユーザーに『今できませんでした』と伝える。

TEXT
【リクエスト(伝票)】
  何を: 今日の天気
  どこの: 東京

【レスポンス(返り)】
  状態: 200(成功)
  中身: 晴れ、最高気温32度
頼みと返りの中身のイメージ(実際はJSONという形式で運ばれることが多い)

返りの中身は、多くの場合 [[jsoclienrequest という「機械にも人にも読める書き方」で運ばれてきます。JSONはDay5で触れた『ラベル付きの箱』を文字にしたようなもの、と思っておけば今は十分です。

なぜ基礎を知ると強いのか

「必ず返りが来る」「返りには成功/失敗の番号がある」を知っていると、AIに作ってもらったコードで不具合が出たとき、『どんな返りが来ているか見せて』と頼めます。原因が『頼み方(404)』か『向こうの失敗(500)』かで、直す場所がまるで変わるからです。

AIにはこう頼む

「このリクエストのレスポンスのステータスコードと中身をログに出して。失敗したときはユーザーに分かる文言を表示して」と頼むと、返りをきちんと扱うコードになります。

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

理解度チェック

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

Q1

ステータスコード「404」が意味するのは、たとえるとどれ?

Q2

「必ず何かが返ってくる」という性質が大事なのはなぜ?

Q3

リクエストとレスポンスの関係を、注文のたとえで説明してください。

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