Insights·2026-09-14

FastAPI と API 設計とは何か — バックエンドがする仕事

昔のバックエンド道具はデータと画面とその二つをつなぐ部分を一つの枠に置き、画面まで描いていた。画面を描く仕事がフロントエンドへ移ると、バックエンドに残ったのは何の値を返すかという一つだけになり、その仕事だけをする軽い道具である FastAPI がその席に着いた。やり取りの形式は JSON で、API を設計するとは住所の規則と作る・読む・直す・消すの区別と応答の形の三つを決めることである。

화면이 빠진 백엔드, FastAPI가 정하는 세 가지 — 글의 요약 도식

バックエンドの仕事が減った経緯

バックエンドの三つの部分のうち画面を描く部分が抜け、どんな値を返すかだけが残った構造を上下で対比した図

フロントエンドが画面のどこに何があるかを決めるなら、バックエンドはそこに何を表示するかを決める。どちらも結局はサーバーで要求を受けて値を返す仕事だ。

この区分は昔からこうだったわけではない。バックエンドの道具が画面まで一緒に描いていたからだ。データの形を決める部分、画面を描く部分、その間をつなぐ部分を一つの枠に置く方式で、この構成を MVC パターンと呼んだ。Python では Django が長くその席にいた。

そして前回見たとおり画面を描く仕事が Next.js 側へ移った。すると三つの部分のうち画面を描いていた部分が抜け、残ったのは何の値を返すかという一つになった。

その仕事だけをする軽い道具が席に着いた。それが FastAPI である。バイブコーディングでこの名前が頻繁に出るのは、いまその席がここにあるからだ。言語ごとにこうした道具は複数あり、Java の Spring、PHP の Laravel が同じ位置にある。

API と JSON

API はプログラム同士がつながる窓口だ。人とコンピュータが出会う場所をユーザーインターフェースと呼ぶように、プログラムとプログラムが出会う場所もそう呼ぶ。

フロントエンドとバックエンドも結局この窓口で会話する。フロントエンドが画面に描く枠を用意し、バックエンドにここへ入れる値をくれと要求すると、バックエンドが答えを返す。

その答えの形式が JSON である。波括弧を開き、名前と値を組にしてカンマでつなぐ形だ。決まった形式があってこそ、受け取る側が機械的に解釈できる。

バックエンドもフロントエンドと構造は同じだ。他人が作ったライブラリを pip で受け取り自分のコードと合わせる。npm と同じ位置で、名前が違うだけである。

一覧を要求して受け取った JSON
要求   GET /api/posts?page=2

応答   {
         "items": [
           { "id": 11, "title": "最初の記事" },
           { "id": 12, "title": "二つ目の記事" }
         ],
         "total": 57,
         "page": 2,
         "pageSize": 10
       }

API 設計は三つを決めること

API にも設計という言葉が付く。決めるべきものが三つあるからだ。

一つ目は住所の規則である。どの住所で呼べば一覧で、どの住所なら一件の詳細かを決める。規則があってこそ、次の人が住所を見ただけで何をするか分かる。

二つ目は動作の区別だ。利用者がすることは結局、作る・読む・直す・消すの四つに整理される。頭文字を取って CRUD と呼ぶ。同じ住所でもどの方式で要求したかでこの四つを分ける。

三つ目は応答の形である。これが最も抜けやすい。一覧を返すなら項目だけでは足りない。全部で何件か、いまが何ページ目かが一緒にあってこそ画面でページ送りを描ける。ログインの応答もエラーの応答もそれぞれ形を決めておく。

動作要求方式住所の例
一覧を読むGET/api/posts
一件を読むGET/api/posts/12
作るPOST/api/posts
直すPUT · PATCH/api/posts/12
消すDELETE/api/posts/12

エージェントに任せるときは先にこの三つを渡す

この三つを決めるのは、もともと他の開発者と協働するためだった。規則があってこそ、他人の作った API を当て推量で使わずに済む。

エージェントに任せるときも同じ理由で価値がある。決めておかないと毎回違う形が出てくる。昨日の一覧には total があったのに今日作ったものにはなく、エラーの形式が画面ごとに違う。すると画面側のコードが揺れ続ける。

だから順番を変える。コードを作ってくれと言う前に、住所の規則・動作の区別・応答の形の三つを文書として決めて渡す。そのうえでこの規格どおりに作ってくれと言う。

この三つを前に置くだけで、後ろに付くコードははるかに揺れなくなる。次回はこのバックエンドが値を取り出す場所、データベースを見る。