バイブコーディング入門①|あなたのWebアプリは「手紙のやりとり」で動いている
冒頭
Cursor や Claude Code を使ってWebアプリを作ってみた。見た目はそれっぽく動いている。でも、いざエラーが出ると何が起きているのか分からない。赤い文字が並ぶ画面を眺めて、AIに「直して」と投げて、別のエラーが出て、また投げて。30分経っても先に進まない。
そんな経験がある方は多いと思う。バイブコーディング(AIにコードを書かせるスタイルの開発)は、コードを書く負担を劇的に減らしてくれる。でも「なぜ動いているのか」が分からないまま進むと、どこかで必ず詰まる。
この記事では、Webアプリが動く最も基本的な仕組みを「手紙のやりとり」にたとえて解説する。リクエスト(手紙を送ること)とレスポンス(返事が届くこと)。この2つの概念が分かるだけで、エラーの原因を自分で特定できる場面が増える。
記事の最後に、バイブコーディングで使える「Webの仕組みチェックシート」を無料配布している。手元に置いておくと、エラーに遭遇したとき何を確認すればいいか迷わなくなる。
Webは「手紙のやりとり」で動いている

Webアプリの仕組みを一言で言うと、手紙のやりとりだ。
あなたがブラウザ(ChromeやSafari)でWebサイトを開くとき、裏側ではこんなことが起きている。
- あなたのブラウザが「このページを見せてほしい」という手紙を送る
- 手紙はインターネットを通って、相手のコンピュータ(サーバー)に届く
- サーバーが手紙を読んで「はい、このページの内容です」という返事を送り返す
- ブラウザが返事の中身を画面に表示する
これだけだ。Webで起きていることの99%は、この「手紙を送る → 返事が届く → 画面に表示する」の繰り返しにすぎない。
この手紙を送る行為を「リクエスト」と呼ぶ。返事を「レスポンス」と呼ぶ。英語だが、Webの世界ではこの2つの言葉が頻繁に出てくるので、このまま覚えてしまうのが早い。
リクエスト = あなたが送る手紙 レスポンス = 相手から届く返事
バイブコーディングで Cursor や Claude Code を使っていると、エラーメッセージに「request」「response」という言葉がよく出てくるはずだ。これは「手紙」と「返事」のことだと分かれば、メッセージの意味が格段に読みやすくなる。
手紙には「宛先」と「用件」がある
普通の手紙に住所と用件を書くように、リクエストにも「どこに送るか」と「何を頼むか」が含まれている。
宛先 = URL
ブラウザのアドレスバーに入力するあの文字列が、手紙の宛先にあたる。たとえば「https://example.com/products」と入力すると、example.com というサーバーの products という場所に手紙が届く。
URLは「住所+部屋番号」のようなものだ。
- https://example.com → 建物の住所(どのサーバーか)
- /products → 部屋番号(サーバーの中のどの情報か)
バイブコーディングでよく遭遇する「404 Not Found」というエラーは「その部屋番号は存在しません」という返事だ。手紙の宛先が間違っていた、ということ。AIにコードを生成してもらったとき、URLの綴りが1文字違っていただけでこのエラーが出ることがある。
用件 = HTTPメソッド
手紙の用件にも種類がある。Webでよく使うのは4つだけだ。
- GET(ゲット): 「情報を見せてほしい」→ ページを表示するとき
- POST(ポスト): 「新しい情報を送る」→ フォームの送信や会員登録
- PUT(プット): 「情報を書き換えてほしい」→ プロフィールの更新
- DELETE(デリート): 「情報を消してほしい」→ 投稿の削除
あなたがブラウザでWebサイトを見ているとき、ほとんどの操作はGET(見せて)とPOST(送る)の2つだ。
バイブコーディングでフォームの送信がうまくいかないとき、原因の多くは「GETで送るべきところをPOSTで送っている」か「その逆」だ。手紙の用件の種類が間違っていた、ということ。
返事にも「ステータス」がある

サーバーから届く返事(レスポンス)には、必ず「番号」が付いている。これをステータスコードと呼ぶ。3桁の数字で、返事の意味を教えてくれる。
全部覚える必要はない。バイブコーディングで特によく見る4つだけ押さえておけば十分だ。
200 — 成功。問題なくデータが返ってきた。正常な状態。
404 — 見つからない。URLの綴りが間違っているか、そのページが削除されている。AIが生成したコードのURLパスを確認してみる。
500 — サーバー内部エラー。サーバー側のプログラムに問題がある。バイブコーディングでは、AIが生成したサーバー側のコード(API Route や Server Action と呼ばれる部分)にバグがある可能性が高い。
403 — アクセス拒否。ログインしていない、または権限がない。Supabase(スーパーベース: データベースサービス)を使っている場合、RLS(行レベルセキュリティ: 誰がどのデータにアクセスできるかを制御する仕組み)の設定が原因であることが多い。
エラーが出たとき、まずこの番号を見る。番号が分かれば「手紙の宛先が間違っていたのか」「返事を作る側の問題なのか」「権限の問題なのか」が一瞬で判断できる。
実際に手紙のやりとりを見てみよう
理屈だけでは実感が湧かないと思う。ここで、実際にブラウザの中で手紙のやりとりを「見る」方法を紹介する。
少しだけ画面操作が出てくるが、そのまま真似すれば動く。意味は分からなくてOKだ。
ステップ1: ブラウザの「開発者ツール」を開く
Chromeを使っている場合、キーボードで以下を押す。
- Mac: Command + Option + I
- Windows: F12 または Ctrl + Shift + I
画面の右側や下側に、英語が並んだパネルが開く。これが開発者ツール(DevTools: ブラウザに内蔵されている検査機能)だ。怖がらなくて大丈夫。何かを壊す操作ではない。ただ「裏側を見る窓」が開いただけだ。
ステップ2: Network(ネットワーク)タブを開く
パネルの上部にタブが並んでいる。「Network」と書かれたタブを押す。日本語設定の場合は「ネットワーク」と表示されていることもある。
ステップ3: ページを再読み込みする
そのまま、ページを再読み込みする(F5 キーまたは Command + R)。
すると、Networkタブにズラッと行が並ぶ。これが「手紙のやりとりの記録」だ。1行が1通の手紙(リクエスト)に対応している。
ステップ4: 1行を押して中身を見る
どれか1行を押すと、右側に詳細が表示される。ここで確認できるのは:
- Request URL: 手紙の宛先(URL)
- Request Method: 用件の種類(GET、POSTなど)
- Status Code: 返事の番号(200、404など)
この3つが読めれば、エラーが出たときに「どこに送った手紙が、どんな返事で返ってきたか」を自分の目で確認できる。
バイブコーディングで「これを知っていると助かる」3つの場面

場面1: AIが生成したコードで画面が真っ白になった
画面が真っ白になったとき、多くの人は「コードが間違っている」と思ってAIに「直して」と投げる。でも、その前にNetworkタブを開いてみてほしい。
もし赤い行があって、ステータスコードが500なら、サーバー側のコードに問題がある。404なら、URLの設定が間違っている。エラーがないのに画面が白いなら、画面を描画するコード(フロントエンド)の問題だ。
この切り分けができるだけで、AIへの質問が「画面が真っ白です。直してください」から「/api/products にGETリクエストを送ると500エラーが返ってきます。サーバー側のコードを確認してください」に変わる。
後者の質問のほうが、AIは圧倒的に正確な答えを返してくれる。
場面2: フォームを送信しても何も起きない
お問い合わせフォームや会員登録フォームを送信しても、画面が変わらない。これもNetworkタブで確認する。
フォームの送信ボタンを押したとき、Networkタブに新しいリクエストが追加されたか。追加されていなければ、そもそもリクエストが送られていない。ボタンとフォームの接続がされていないということだ。
リクエストが送られているのに画面が変わらないなら、レスポンスのステータスコードを確認する。200なのに画面が変わらないなら、レスポンスの内容は正しく届いているが画面の更新処理がない。500なら、送信先のサーバー側のコードに問題がある。
このように「リクエストが送られたのか」「レスポンスは何が返ってきたのか」を見るだけで、原因の方向性が分かる。
場面3: ログイン後のページで「権限がない」と言われる
Supabase を使ったアプリで、ログインしたはずなのにデータが表示されない。403 Forbidden が返ってきている。
これは「ログインはできたが、データへのアクセス権限がない」という状態だ。Supabaseを使っている場合、RLSポリシー(誰がどのデータを見られるかのルール)が設定されていないか、設定が間違っている可能性が高い。
AIへの質問は「Supabaseの products テーブルにGETリクエストを送ると403が返ってきます。RLSポリシーを確認してください」となる。「データが表示されません」よりも、はるかに的確な修正が返ってくる。
リクエストとレスポンスの「中身」をもう少しだけ
手紙のたとえをもう1段階だけ掘り下げる。実際のリクエストとレスポンスには、手紙の封筒にあたる部分と、中に入っている便箋にあたる部分がある。
封筒にあたるのが「ヘッダー」。手紙の差出人、日時、手紙の形式(日本語か英語か)などが書いてある。
便箋にあたるのが「ボディ」。実際のデータ、つまりページのHTML(画面の構造を書いたファイル)やJSON(ジェイソン: データをやりとりするための書式)が入っている。
バイブコーディングで特に重要なのはボディだ。APIを使うアプリでは、レスポンスのボディにJSONという形式でデータが入っている。開発者ツールのNetworkタブでレスポンスの「Response」や「Preview」を開くと、実際のデータを見ることができる。
ここで「APIから返ってきたデータにユーザー名が入っていない」と気づけば、AIに「APIのレスポンスにusernameフィールドが含まれていません。サーバー側のSELECT文を確認してください」と的確に伝えられる。
よくある不安と答え
開発者ツールを開くと何か壊れないか?
壊れない。開発者ツールは「見る」ための機能であって、何かを変更する機能ではない。プロのエンジニアも毎日使っている道具だ。閉じれば元の画面に戻る。
ステータスコードを全部覚える必要があるか?
必要ない。200(成功)、404(見つからない)、500(サーバーエラー)、403(権限なし)の4つだけ覚えれば、実務の9割はカバーできる。残りは遭遇したときに調べれば十分だ。
リクエストやレスポンスが英語で読めない
全部読む必要はない。見るべきは3つだけ。URL(宛先)、Method(GET/POST)、Status Code(番号)。この3つは英単語というより「記号」として見ればいい。数字と単語の組み合わせだけで意味が分かるようになっている。
これを知らなくてもバイブコーディングはできるのでは?
動くものを作るだけなら、知らなくても進められることはある。でも「動かなくなったとき」に詰まる。エラーの原因が分からないまま何度もAIに投げ直して、結局30分以上かかるパターンは多い。リクエストとレスポンスの概念を知っているだけで、エラー解決の時間が半分以下になる。
まとめ
Webアプリは「手紙のやりとり」で動いている。ブラウザがリクエスト(手紙)を送り、サーバーがレスポンス(返事)を返す。返事には番号(ステータスコード)が付いていて、200は成功、404は宛先不明、500はサーバーの問題、403は権限不足。ブラウザの開発者ツールを開けば、この手紙のやりとりを自分の目で見ることができる。バイブコーディングでエラーに遭遇したとき、まずNetworkタブを開いてステータスコードを確認する。それだけで「何が起きているか」が分かり、AIへの質問の精度が上がり、解決が早くなる。
🎁 特典
この記事で解説したリクエストとレスポンスの仕組みを、1枚のチェックシートにまとめた。エラーが出たときに見るべきポイント、ステータスコードの早見表、開発者ツールの開き方が書いてある。バイブコーディング中に手元に置いておくと、エラーの切り分けに迷わなくなる。
→ バイブコーディング Webの仕組みチェックシート(PDF)を無料ダウンロード /resources
📚 参考リファレンス
- Anthropic公式サイト: claude.ai
- MDN Web Docs: HTTP の概要(Mozilla による Web 技術の公式リファレンス)
- バイブコーディング入門 連載ページ: /vibe-coding
- Claude Works 関連記事:生成AIの使い方 初心者向けガイド
- Claude Works 関連記事:生成AIの使い方 コツ|頼み方の技術
