分野 03 全体像に戻る

サーバー・API

画面の裏側で、頼まれた処理をしてデータを返す係

画面とデータの間に立ち、「誰が何をしてよいか」を決める。アプリのルールはここにある。

最初に触るなら

Supabase :PostgreSQLを中核に認証・ストレージ・リアルタイムをまとめたBaaS
データベース・認証・API が最初から揃っていて、サーバーを書かずに「裏側」の役割を体感できる。仕組みが分かったら FastAPI で自分で書く。

隣の分野とのつながり

分野 どうつながるか
データの保存 データを保存し、取り出すのはサーバーの仕事。画面から保存場所に直接触らせない
画面・フロントエンド 画面に対して API(決まった形の窓口)を用意し、頼まれたデータを返す
認証・セキュリティ 「本人か」「この操作をしてよいか」の判断はここで行う
実行基盤・ホスティング サーバーは動かし続ける場所が要る。自前で持つか、BaaS に任せるかを選ぶ
言語・実行環境 (から見ると) サーバー側の処理は Python・Go・TypeScript などで書く。言語を決めると、使えるフレームワークが決まる
画面・フロントエンド (から見ると) 画面は自分ではデータを持たない。API を呼んでデータを受け取り、表示する
データの保存 (から見ると) 読み書きの主体はサーバー。画面から直接は触らない
実行基盤・ホスティング (から見ると) 常時動くサーバーか、呼ばれたときだけ動く関数かで、置き方と料金が変わる
監視・可観測性 (から見ると) 不具合の多くはサーバー側で起きる。例外を集めて原因をたどる
認証・セキュリティ (から見ると) 「本人か」「この操作をしてよいか」の判断はサーバー側で行う
AI・機械学習 (から見ると) API の呼び出しはサーバー側から行う。鍵を画面に出さない

この分野を理解する

API とは何か。 画面がサーバーに頼み事をするときの「窓口」を API と呼ぶ。「このユーザーの注文一覧をください」と決まった形で頼むと、決まった形で返ってくる。窓口の形(URL と入出力)を決めて実装するのがバックエンドの中心作業である。

自分で書くか、借りるか。 FastAPI や Hono のようなフレームワークを使えば、窓口を自分で書ける。自由度は高いが、動かす場所・データベース・認証も自分で用意することになる。Supabase や Firebase のような BaaS(Backend as a Service)は、それらをまとめて貸してくれる。最初は借りて全体の流れを掴み、借り物の制約に当たったら自分で書く、という順序が無理がない。

サーバーが「決める」ということ。 画面のコードは利用者の手元にあるので、書き換えられる前提で考える。「この人は管理者か」「在庫はあるか」のような判断をサーバー側で行うのはそのためである。画面は表示に徹し、判断と保存はサーバーが担う。

隣の分野との境界。 データの置き場所そのものは「データの保存」、動かす場所は「実行基盤」、本人確認の仕組みは「認証」の分野に分かれる。サーバーはそれらを呼び出してつなぐ役である。

最初の一歩。 BaaS で表を1つ作り、画面からデータを1件書き込んで読み戻す。次に同じことを FastAPI で自分で書いてみると、BaaS が何を肩代わりしていたかが見える。

この分野のツール(4件)

種別(自分で書く土台か、借りて使うサービスか)で分けている。「主要制約」は各ツールで最も先に当たる限界。

フレームワーク(2件)自分で書くコードの土台になるライブラリ。動かす場所は自分で用意する

サーバー・API の比較:フレームワーク
ツール学習料金成熟主要制約検証
FastAPI
型ヒントからAPI仕様と検証を自動生成する、Pythonの非同期Webフレームワーク
無料安定対応 Python バージョン:Python 3.10 以上(3.10〜3.14 を公式サポート)
Hono
Web標準APIのみで書かれ、エッジからNode.jsまで同一コードで動く軽量フレームワーク
無料成長中対応ランタイムと Node.js の要件:Node.js は 18.x なら 18.14.1 以上、19.x なら 19.7.0 以上、20.x 以上で、@hono/node-server アダプタ経由で動く。Bun・Deno は Fetch ハンドラをネイティブに実行

マネージドサービス(2件)事業者が運用していて、借りて使うサービス。運用を任せられる代わりに、プランの上限が乗る

サーバー・API の比較:マネージドサービス
ツール学習料金成熟主要制約検証
Firebase
Google Cloud上で動く、モバイル/Web向けのドキュメント指向BaaS
無料枠あり安定Cloud Functionsのデプロイ条件:Blaze(従量課金)プランへの登録が必須。無料枠(2M回/月など)の範囲内の利用でも課金設定と支払い方法の登録が前提になる
Supabase
PostgreSQLを中核に認証・ストレージ・リアルタイムをまとめたBaaS
無料枠あり成長中無料プロジェクトの自動一時停止:7日間(1週間)操作がないと自動的に一時停止される

どれを選ぶか

ツール 種別 どういう時に選ぶか/避けるか
FastAPI フレームワーク Python でデータ処理や AI 推論を HTTP API として公開する用途では第一候補。CPU 負荷の高い処理を1プロセスで並列に捌く必要がある場合、エッジ配置や単一バイナリ配布が要る場合は避け、Go か Hono へ
Hono フレームワーク TypeScript で HTTP API を書き、Cloudflare Workers・Deno・Bun・Node.js のどこに置くか後から決めたい場合の第一候補。Express 系ミドルウェアの資産を引き継ぐ必要がある場合や、ORM・認証込みのフルスタックが欲しい場合は避け、Next.js か既存の Node.js フレームワークへ
Firebase マネージドサービス モバイル/Webアプリでリアルタイム同期とGoogle認証を素早く組み込みたい用途では第一候補。関係データの結合や複雑な集計、SQLでの運用が必要ならSupabaseかPostgreSQLへ。Cloud Functionsを使う時点でクレジットカード登録(Blazeプラン)が前提になることは早い段階で確認しておく
Supabase マネージドサービス 認証・DB・ストレージ・リアルタイムをPostgreSQLベースで一式揃えたい小〜中規模のアプリでは第一候補。無料プランの一時停止や500MBの上限に触れた時点でProへの移行を検討する。MySQL前提の既存資産がある場合や、Google認証・Firestoreのドキュメント構造を前提にしたい場合はFirebaseへ

この分野が担う目的

目的ごとのページでは、他の分野のツールも含めて横断比較できる。