OSS探訪

Express — routingとmiddlewareを薄いHTTP層として組み立てる、Node.jsの定番Webフレームワーク

OSS健全度 82
スコアの見方

発掘スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした独自指標(上限なし)。成長モメンタムは観測期間内の同スコアの差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
69,450
主要言語
JavaScript
ライセンス
MIT
リポジトリ最終更新
2026/09/14

概要

Expressは、Node.js上でHTTP server・Web API・Web applicationを構築するためのminimalistなWeb frameworkです。routing、middleware chain、request/response helper、template engine連携を小さなcoreへまとめ、ORMやview engineを強制しない設計を採ります。2026年9月15日時点の最新安定版はExpress 5.2.1で、Node.js 18以上を要件とし、Express 5ではPromise rejectionをerror flowへ渡しやすくする一方、route path syntaxや古いAPIにはbreaking changeがあります。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

routingとmiddleware chainを中心に、HTTP request処理を小さな責務へ分割する

Expressの中心は、HTTP methodとpathに応じてhandlerを選ぶroutingと、request/responseを順番に処理するmiddlewareです。READMEはrobust routing、HTTP helper、content negotiation、view systemを主要featureとして挙げています。認証、logging、validation、session、static file、API endpointなどをmiddleware単位へ分け、application固有のbusiness logicをHTTP transportから分離しやすい構成です。

ExpressはORMやtemplate engineを固定せず、必要な機能をmiddleware・packageとして追加します。full-stack規約を強制するframeworkよりも、HTTP layerだけを薄く組み立てたいprojectで採用しやすい設計です。

出典:[2]

Express 5ではasync handlerのrejected Promiseをerror handlingへ流しやすくする

Express 5のerror handlingでは、route handlerやmiddlewareが返したPromiseがrejectされた場合、そのerrorをExpressのerror flowへ渡せます。async function内でthrowされたerrorも同じ経路へ載せやすく、Express 4で必要だった手動のtry/catchやnext(error) boilerplateを減らせます。

一方、custom error handlerは通常のmiddlewareとはsignatureが異なり、(err, req, res, next)としてmiddleware stackの後段へ置く基本構造は変わりません。error responseのpolicy、logging、secret leakage防止はapplication側で設計する必要があります。

出典:[6][5]

API serverからserver-rendered Webまで、特定のdatabaseやview stackに縛られず使える

READMEはExpressをsingle-page application、website、hybrid、public HTTP APIに使えるframeworkとして位置づけています。response helper、redirect、caching、static file、content negotiationに加え、多数のtemplate engineを組み合わせられるため、JSON API専用frameworkではありません。

Node.js ecosystemのpackageを自由に組み合わせる前提なので、database access、validation、authentication、observabilityなどをproject要件に応じて選べます。既存Node applicationへ一部分だけrouting layerとして導入する構成も可能です。

出典:[2]

Node.jsでAPIやWeb backendを小さく始め、middleware単位で必要機能を足したいチームに

REST/JSON API、BFF、server-rendered Web、small serviceなどで、HTTP routingとmiddlewareを明示的に組みたいprojectに向きます。大規模frameworkの規約より、Node.jsの標準HTTP modelに近い薄い抽象化を好むチームや、既存packageを自由に選びたいチームでは扱いやすい選択肢です。

Express 5はNode.js 18以上。Express 4からはroute pathや削除APIを含むbreaking changeを確認する

Express 5はNode.js 18以上が必須です。migration guideは、基本APIはExpress 4に近い一方で互換性を壊す変更があると明記しています。app.del()req.param()、旧res.send()/res.json() signatureなどが削除され、route path matching syntaxも変更されています。upgrade時はofficial codemodとautomated testを使い、単純なmajor version更新として扱わない方が安全です。

express.static()res.sendFile()ではdotfile/hidden directoryの扱いも変わっています。.well-knownなどを配信しているapplicationでは、Express 4から5へ上げた際に404へ変わる可能性があるため、static file policyを明示的に確認する必要があります。

出典:[5][2]

minimalistである分、security・validation・authentication・rate limitはapplication側の設計責任が大きい

Express coreはroutingとHTTP helperを中心とするため、input validation、authentication/authorization、CSRF、rate limiting、secure cookie、TLS terminationなどを自動で完成させるframeworkではありません。公式security best practicesもTLS、user inputの検証、secure cookie、dependencyの安全性などを個別に設計するよう案内しています。

productionではtrust proxy、redirect target、file path、request body size、session storeなどの設定次第でsecurity postureが変わります。middlewareを追加するだけで安全になると考えず、reverse proxyとapplication双方のboundaryを確認する必要があります。

出典:[7][2]

5.2.1では5.2.0のquery parser変更をrevert。security情報はrelease noteとadvisoryを分けて読む

最新安定版5.2.1は、5.2.0で入ったextended query parserのbreaking changeをrevertしたpatch releaseです。release noteはこの挙動に実際のsecurity vulnerabilityはなく、CVE-2024-51999がrejectされたことを明記しています。security-relatedな変更に見えても、CVE番号だけで判断せず、official release note・security advisory・dependency updateを突き合わせる必要があります。

Expressは依存packageを複数組み合わせてHTTP behaviorを構成しています。framework versionだけでなくlockfileとtransitive dependencyの更新状況もproduction maintenanceに含める方が安全です。

出典:[4][3]

参考にした公式資料

  1. [1]expressjs/express — GitHub repository(2026-09-15)
  2. [2]expressjs/express — README(2026-09-15)
  3. [3]expressjs/express — package.json(2026-09-15)
  4. [4]expressjs/express — Express 5.2.1 release(2026-09-15)
  5. [5]Express Docs — Upgrade to Express 5(2026-09-15)
  6. [6]Express Docs — Error handling(2026-09-15)
  7. [7]Express Docs — Production Best Practices: Security(2026-09-15)
編集部からの補足

Expressは「全部入りbackend framework」ではなく、HTTP routingとmiddlewareを小さく組み立てる基盤として評価しました。Express 5ではasync handlerが扱いやすくなる一方、route pathや旧API、static file挙動にbreaking changeがあるためmigration guide前提での更新が必要です。

3ステップで試す

  1. 1

    ソースを取得

    git clone --depth 1 https://github.com/expressjs/express.git
  2. 2

    リポジトリへ移動

    cd express
  3. 3

    公式手順を確認

    READMEのInstallation / Quick Start / Getting Startedにある公式コマンドを続けて実行してください。

    find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
公式READMEで確認

成長

成長の推移 · 直近30日

69,450 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
11
Open PR
123

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • javascript
  • nodejs
  • express
  • server
Stars
69,450
Forks
24,997
Watchers
1,708
Open Issues
106
主要言語
JavaScript
ライセンス
MIT
リポジトリ最終更新
2026/09/14
情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。