🚀 ニフティ’s Notion

【Webアプリ2025 #10】(バックエンド)フレームワークとは

バックエンドフレームワーク

概要

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はプレゼンテーション層に特化したシンプルな構造となっています。
image block

2. マイクロフレームワーク
  • Webサーバ・ルーティング機能のみを持つフレームワーク
  • その他の機能は自分でライブラリを選んで導入する

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