第1章 Webアプリの登場人物
📖 この章のゴール:Webアプリが「魔法」ではなく、4人の登場人物の連携で動いていることが分かる。 ← 目次・はじめにへもどる
📱 Twitterではこう見える
Twitter(X)を開くと、投稿がずらっと並んでいます。文章を書いて「ポスト」ボタンを押すと、自分の投稿が一番上に増えます。スマホでもパソコンでも、別の人の画面でも、同じ投稿が見えます。
あたりまえに使っていますが、この裏側では何が起きているのでしょう? ここが分かると、これから作るものが「魔法」ではなく「部品の組み合わせ」に見えてきます。
🤔 登場人物は4人(🟢 基礎)
Webアプリは、ざっくり 4人の登場人物 で動いています。レストランにたとえると分かりやすいです。
| 登場人物 | 役割 | レストランでいうと |
|---|---|---|
| ブラウザ | あなたが見て・触る画面 | 席に座っているお客さん(あなた) |
| API(窓口) | 注文を受け渡しする窓口・メニュー | 注文を取りにくるウェイター |
| サーバー | 注文を処理する司令塔 | 料理を作るキッチン |
| データベース | データをしまっておく倉庫 | 食材をしまう冷蔵庫・倉庫 |
ひとつずつ、もう少しだけ。
- ブラウザ(Chrome や Safari)… あなたの目の前にある画面です。ボタンを押したり文字を打ったりするのは、全部ここ。
- サーバー(さーばー)… ネットの向こうにある、いつも動いているコンピュータ。注文を受けて「保存して」「探してきて」を実際にやる司令塔です。
- データベース(でーたべーす、略してDB)… データをしまう倉庫。イメージは 超巨大な表計算(Excel)。1行が1件のデータです。
- API(えーぴーあい)… ブラウザとサーバーをつなぐ 「注文窓口」とそのメニュー。「この投稿を保存して」「最新の投稿をちょうだい」といった注文の決まった受け渡し口です。
🍔 たとえ話:あなた(ブラウザ)は、冷蔵庫(データベース)を直接あさったりしません。ウェイター(API)にメニューから注文し、キッチン(サーバー)が冷蔵庫から食材を出して料理してくれる。お客さんが勝手に厨房や冷蔵庫に入らない——これは後で出てくる「データを守る」話にそのままつながります。
🔁 「あなたのツイートが画面に出るまで」
2つの場面で、4人がどう動くか追ってみましょう。
① ツイートを投稿するとき
あなた(ブラウザ)
│ 「この文章を保存して」とお願い
▼
API(窓口)
│ 注文をサーバーに渡す
▼
サーバー(司令塔)
│ データベースに1行 追加
▼
データベース(倉庫) ← ここに投稿が保存される
│ 「保存できたよ」
▼
あなたの画面が更新され、投稿が一番上に増える
② タイムラインを見るとき
あなた(ブラウザ)
│ 「最新の投稿をちょうだい」
▼
API(窓口) → サーバー(司令塔)
│ データベースから新しい順に取り出す
▼
データベース(倉庫)
│ 投稿のデータを返す
▼
あなたの画面に、投稿がずらっと並ぶ
ポイントは、投稿は「あなたのスマホの中」ではなく、ネットの向こうのデータベースに保存されていること。だからこそ、別の人の画面からも同じ投稿が見えるのです。
🛠 Supabaseだと、3人は用意済み(🟢 基礎)
ふつう、サーバー・データベース・APIを自分でゼロから用意するのは大変です。でも、この教材で使う Supabase(すーぱーべーす) は、
サーバー + データベース + API(窓口)を、最初からまとめて用意してくれます。
つまりあなたが作るのは、おもに ブラウザ側(画面) だけ。あとはSupabaseの窓口に「保存して」「取り出して」とお願いするだけです。
あなたが作る Supabaseが用意してくれる
┌──────────┐ ┌───────────────────────────┐
│ ブラウザ │ ──→ API ──→ │ サーバー + データベース │
│ (画面) │ ←── 窓口 ←── │ (ログインの仕組みも) │
└──────────┘ └───────────────────────────┘
これが「できる限り簡素に」作るための近道です。むずかしい部分をSupabaseに任せて、あなたは大事な考え方(誰のデータか)に集中できます。
⚠️ ハマりどころ
- 「全部ブラウザの中で動いている」と思い込む → 実際は、データはネットの向こうのデータベースにあります。ここを誤解すると、次章以降の「そのデータは誰のもの?」がピンと来ません。「画面(手元)」と「倉庫(向こう)」は別、と覚えてください。
- 「サーバー」と「データベース」をごっちゃにする → サーバーは働く人(司令塔)、データベースはしまう倉庫。役割が別です。
- APIを難しく考えすぎる → いまは「決まった形でお願いする窓口」くらいの理解で十分。くわしい設計は第5章でやります。
🤖 AIに頼むなら(Vibe codingのコツ)
AIに「Twitterみたいなアプリ作って」とだけ頼むと、何ができたのか分からないまま動くものが出てきます。登場人物を意識して頼むと、出てきたコードが読めるようになります。
🗣 プロンプト例: 「Supabaseを使ってシンプルなツイート投稿画面を作って。ブラウザ側のコードと、Supabase(サーバー・DB)に何をお願いしているかを分けて、コメント付きで説明して」
出てきたコードを見るときは、「これは画面(ブラウザ)の部分? それともSupabaseの窓口(API)にお願いしている部分?」と自問してみましょう。
📝 ことばメモ
- ブラウザ:あなたが見て触る画面(Chrome・Safariなど)
- サーバー:注文を処理する、ネットの向こうの司令塔コンピュータ
- データベース(DB):データをしまう倉庫。イメージは超巨大な表計算
- API:ブラウザとサーバーをつなぐ「注文窓口」
- Supabase:サーバー・DB・API・ログインをまとめて貸してくれるサービス
➡️ 次の章へ
第2章では、いよいよ ログイン を扱います。テーマは 「『ユーザー』って何?」。Twitterで「ログインしている自分」とは、システムから見ると何なのか——ここから「データは誰のもの」の話が始まります。