バックエンドフレームワーク
概要
Web アプリケーションやAPI等のサーバーサイド処理を効率的に開発するためのツールキット
ルーティング
バックエンドフレームワークにおけるルーティングは、クライアントからのリクエストを受け取り、それに対応する処理を実行するための手段。
(FastAPIを例に説明)
-
ルートの定義
- エンドポイントを設定すること
-
〇〇.com/home
-
〇〇.com/user
-
HTTPメソッドの設定
- クライアントからのHTTPリクエストのメソッドに応じて、異なる処理を行う
- Fast APIではデコレータを使用して設定
-
@app.get("/user")
-
パラメーターの設定
- URLにパラメーターを含めることができる
-
@app.get("/users/{user_id}")
バックエンドフレームワークの種類
1. フルスタックフレームワーク
- DBアクセス用ライブラリなどを含めて、 Webアプリケーションを構成する機能を全て提供するフレームワーク
フレームワーク | 言語 | 特徴・思想 |
---|---|---|
Rails (Ruby on Rails) | Ruby |
「規約より設定」、レールの上に乗ってれば楽をできる
(レールから外れると辛くなる) |
Django | Python | Python版Rails |
Laravel | PHP | モダン、Vueとの連携 |
Spring Boot | Java | Java王道、DI & AOP、HTMLテンプレート連携 |
-
テンプレートエンジン
- 動的なウェブページやドキュメントを生成する際に使用されるツール
- 静的なコンテンツと動的なデータを組み合わせて、最終的な出力を生成するための仕組み
- テンプレートの中に変数を埋め込むことで、動的なコンテンツを表示
-
アーキテクチャ例
-
MVC(モデル・ビュー・コントローラー)
- Model:システムの中でデータアクセス、ビジネスロジックを担当
- View:ユーザーが見ることや操作することができる部分全体を担当
- Controller:ユーザーからのリクエストを受け取り、Modelの操作とViewの更新を担当
MTV(補足)
-
MTV(モデル・テンプレート・ビュー)
- Model:システムの中でデータアクセス、ビジネスロジックを担当
-
Template:ウェブページやその他の出力の表示を定義するためのマークアップとロジックを担当
- ≒htmlファイル
- View:テンプレートのレンダリングやクライアントに提供される出力の生成を担当
ChatGPTにViewの違いを聞いてみた
主な違いは以下のとおりです
MVCのViewはユーザーインターフェースの定義とロジックを含むのに対し、MTVのViewはテンプレートファイルに特化している点
MVCのViewはコントローラーと密結合しているが、MTVのViewはコントローラーから独立している点
MVCのViewはユーザー入力の処理を行うが、MTVのViewはそうではない点
つまり、MVCのViewはより動的で複雑な機能を持つのに対し、MTVのViewはプレゼンテーション層に特化したシンプルな構造となっています。
-
MVC(モデル・ビュー・コントローラー)

2. マイクロフレームワーク
- Webサーバ・ルーティング機能のみを持つフレームワーク
- その他の機能は自分でライブラリを選んで導入する
フレームワーク | 言語 | 特徴・思想 |
---|---|---|
Flask | Python | 古くから使われるPython向けマイクロフレームワーク |
FastAPI | Python | モダン、非同期処理(async/await)に対応、型注釈で自動バリデーション、OpenAPIドキュメント自動生成 |
Express.js | Node.js | Node.js で最もメジャー |
NestJS | Node.js | Express.jsに多数の規約・機能を足したもの |
Gin | Go | 高速、シンプル、パフォーマンス重視 |
-
アーキテクチャ例
- レイヤードアーキテクチャ
- クリーンアーキテクチャ
- オニオンアーキテクチャ