## What — 通信は「頼む側」と「返す側」の役割分担
通信は、**リクエスト(依頼)を出す側=クライアント、応えてレスポンスを返す側=サーバー**という役割分担でできている。この依頼→応答の往復が、ネットの基本動作。
- クライアント … 「見たい!」と頼む側(ブラウザやアプリ)
- サーバー … 「どうぞ、見てください!」と返す側
情報は「もともとそこにあるのを自分が見に行く」のではない。**自分が頼んだ瞬間に、サーバーがすごいスピードで見せてくれている**。
> [!info]
> 例えるなら**サーバー=店員さん(serve=「仕える」)、クライアント=お客さん**。カフェで「コーヒーください」と頼むお客さんと、出してくれる店員さんの関係を、そのままインターネットに持ち込めばいい。
## サーバーは機械の種類ではなく役割
**「依頼に応えて情報を返す役」を担っていれば、どんなコンピュータでもサーバーになれる**。今使っている MacBook だってなれる。「サーバー」という特別な機械がどこかにあるわけではない。
- 普段アクセスしているのは、たいてい世界のどこかにあるドデカいコンピュータ
- Google Drive や iCloud のようなクラウドの正体も同じ。自分の端末ではなく、そのコンピュータに「保存して」「出して」と頼んでいるだけ
## 相手の居場所は「住所の仕組み」で見つける
頼む相手を一意に指すのが **ドメイン → DNS → IPアドレス** という住所の仕組み。
| 部品 | 役割 |
| --- | --- |
| ドメイン(`api.example.com`) | 人間が覚えやすい名前 |
| IPアドレス(`142.251.42.78`) | コンピュータが使う数字の住所 |
| DNS | ドメインを IP アドレスに変換する電話帳 |
ドメインと IP アドレスは 1:1 で対応している。この変換がリクエストのどの段階で起きるかは [[HTTPリクエストの流れ|HTTPリクエストの流れ]] に書いた。
> [!success]
> サーバーとクライアントは**機械の種類ではなく役割の名前**。「見たい!」と頼むお客さんがクライアント、応えて返す店員さんがサーバー。その店員さんの居場所を一意に指すのがドメイン→DNS→IPアドレス。
## 関連
- [[HTTPリクエストの流れ|HTTPリクエストの流れ]] — 頼んでから返ってくるまでの全行程
- [[API]] — この役割分担にプログラム向けの「窓口」を開けたもの。API まわりの地図
- 元ネタ: https://www.youtube.com/watch?v=rEMutn29HwM