# バックエンドサーバ — 「何を返すか」を考える頭脳

> レベル: 初級 ／ 対象: 大人
> 出典: Kotowary — https://kotowary.com/learn/units/backend-server?level=beginner&audience=adult
フロントが「顔」なら、バックエンドは「頭脳」。表には出ませんが、**「何を返すか」を考えて決める**のがバックエンドサーバです。

## これは何をする係？

厨房のシェフにたとえられます。ホール（フロント）から注文（※1 API）を受け、材料（DBのデータ）を出し入れして、料理（返すデータ）を作る。**判断・計算・データの指示**が仕事です。

::image{src="/images/web-services/server.webp" alt="サーバ機器" caption="サーバ — 要求に応えるコンピュータ"}

大事なのは、動く前に2つを確かめること：

- **認証（※2）** — そもそも「誰か」を確かめる（ログインしているか）
- **認可（※3）** — その人が「その操作をしてよいか」を決める（権限）

**登場人物メモ**:

- **※1 API** — フロントとバックの会話の窓口。決まった形でお願いして、決まった形で返す約束
- **※2 認証** — 本人確認（あなたは誰？）
- **※3 認可** — 権限の確認（あなたはこれをしてよい？）

## 仕事の流れ

1. フロントから API でお願いを受ける
2. **認証**を確認（ログインしているか）
3. **認可**を確認（その操作をしてよいか）
4. 中身のロジックを実行（計算・判断）
5. 必要なデータを DB・キャッシュ・ストレージに出し入れする
6. 結果を決まった形にまとめてフロントへ返す

::diagram{name="backend-role"}

## 重い処理は後回し

すぐ返せない重い処理（メール送信・大量集計など）は、その場でやると待たされます。そういうものは**「後でやるリスト（キュー）」に積んで、返事だけ先に返す**——これが非同期処理です。

## ⚠️ うまくいかないとき

- **403（権限なし）** — 認証はOKだが認可で止められた
- **500（内部エラー）** — バックの処理そのものが失敗した
- **遅い** — DBへの問い合わせが重い／多すぎる（後述のキャッシュで軽くする）
