バックエンドの用語一覧へ
このページの目次
バックエンド中級図解あり

app.useとは?

読み方:app.use

最終更新:2026/08/18

3秒でわかる

Express でミドルウェアを登録するメソッド。ログや認証など全リクエスト共通の処理を、各ルートに書かず一箇所にまとめて差し込むために使う。

30秒図解

app.useはログ、JSON解析、admin認証を登録順に通し、nextを呼んだ要求だけを50個のルートへ進めるExpressの処理
app.useは共通処理を一か所に置き、登録順で全ルートへ差し込みます。

もう少し詳しく

どういうものか

Express でミドルウェアを登録するメソッドです。ミドルウェアとは、リクエストがルートの処理に届く前後に通る関数のことで、reqresnext の 3 つを受け取ります。

第 1 引数にパスを渡すと、そのパスで始まるリクエストにだけ適用されます。省略すると全てのリクエストが通ります。登録した順に上から下へ実行され、next() を呼ばない限りそこで流れが止まります。この「順番が全て」という性質が、app.get などのルート定義との一番の違いです。

なぜ必要か

共通の処理を各ルートへ書き写さずに済むからです。ログの記録、JSON 本文の解析、ログイン確認、CORS の設定などは、どのエンドポイントでも同じことをします。ルートが 50 個あっても登録は一箇所で済みます。

もう一つは、関心事を分けて並べられることです。認証、権限確認、本処理という段階を別々の関数として書き、通す順に並べるだけで組み立てられます。共通処理を止めたいときは 1 行コメントアウトすれば外れます。

具体例

const express = require("express"); const app = express(); // 1. 全リクエストに適用される。next() を呼ばないとここで止まる app.use((req, res, next) => { console.log(req.method, req.url); next(); }); // 2. 組み込みミドルウェア。これが無いと req.body は undefined のまま app.use(express.json()); // 3. パスを指定すると /admin 以下だけに適用される app.use("/admin", (req, res, next) => { if (!req.headers.authorization) { return res.status(401).json({ error: "unauthorized" }); } next(); }); app.get("/admin/users", (req, res) => { res.json([{ id: 1, name: "sato" }]); }); // 4. 引数 4 つならエラー処理用。ルートより後ろに置く app.use((err, req, res, next) => { console.error(err); res.status(500).json({ error: "internal error" }); }); app.listen(3000);

つまずきやすいところ

  • next() を呼び忘れてリクエストが返ってこない。エラーも出ずブラウザが待ち続けるので、原因が分かりにくい種類の不具合です

  • express.json() をルート定義より後ろに書き、req.body が undefined になる。ミドルウェアは上から順なので、使う側より前に置きます

  • エラー処理のミドルウェアを先頭に置いて動かない。引数が 4 つの関数はエラー用と判別され、全ルートの後ろに置いたときだけ機能します

  • パス指定を完全一致だと思い込む。app.use("/admin")/admin/users にも当たる前方一致です

  • next() を呼んだ後にさらに res.send() を書き、ヘッダー送信済みのエラーになる。返すなら return を付けて抜けます
  • 似た用語との違い

    書き方対象
    app.useメソッドを問わず、指定パス配下の全リクエスト
    app.get / app.post指定したメソッドとパスの完全一致
    app.all全メソッド。ただしパスは完全一致

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地app.useバックエンド

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    この用語を扱うコース

    コース

    Node.js入門

    55レッスン
    コース

    Express道場 fleama開発室のIssue10件

    10レッスン
    コース

    モダンJavaScript:データ処理とコード設計

    36レッスン
    Node.jsコースの全編を見る