Web・インターネットの用語一覧へ
このページの目次

リクエストスコープとは?

読み方:リクエストスコープ

最終更新:2026/08/18

3秒でわかる

1回の HTTP リクエストを受けてからレスポンスを返すまでの間だけ生きるデータの範囲。リクエストごとの情報を安全に持ち回るために使います。

もう少し詳しく

どういうものか

リクエストスコープは、サーバーがリクエストを受け取った瞬間に作られ、レスポンスを返し終えた時点で捨てられる入れ物です。認証済みのユーザー情報、リクエスト ID、トレース用の開始時刻など、その1回の処理でだけ意味を持つ値を入れます。

サーバーは同時に何十件ものリクエストを扱いますが、それぞれが自分専用の入れ物を持つため、他のリクエストの値と混ざりません。

なぜ必要か

ログインユーザーをグローバル変数に置くと、同時アクセスした別の利用者の情報で上書きされます。他人の注文履歴が表示される、という事故はこの取り違えが原因です。かといって、すべての関数の引数にユーザー情報を足していくと、実際には使わない中間の層まで引数だらけになります。リクエスト単位の入れ物は、この2つの間を取るための仕組みです。

具体例

Express なら res.locals、Spring なら @RequestScope の Bean が該当します。

// 入り口の1か所で詰めておく app.use((req, res, next) => { res.locals.requestId = crypto.randomUUID(); res.locals.user = verifyToken(req.headers.authorization); next(); }); app.get("/orders", (req, res) => { // 引数で持ち回らずに取り出せる。応答を返した時点で消える const orders = findOrdersByUser(res.locals.user.id); res.json({ requestId: res.locals.requestId, orders }); });

つまずきやすいところ

  • 起動時に1つだけ作られる部品へ、リクエスト単位の部品をそのまま持たせる。最初の1件が固定され、以降ずっとその値を返し続けます

  • setTimeout やジョブキューへ処理を逃がした後で読み出す。その頃にはレスポンスが終わっていて中身は消えています

  • 使い回されるスレッドに値を置いたまま消し忘れる。次に同じスレッドを掴んだ別の利用者へ前の値が見えます

  • 何でも入れて肥大化させる。入れてよいのは、そのリクエストが終われば不要になる値だけです
  • 似た用語との違い

    スコープ生存期間入れるもの
    アプリケーションプロセスが起動している間ずっと設定値、接続プール
    セッション同じ利用者のログイン中ログイン状態、カート
    リクエスト応答を返すまでユーザー情報、リクエスト ID


    覚え方

    寿命の長い順にアプリケーション、セッション、リクエスト。短いほど安全なので、迷ったら一番短いところに置きます。

    知識のつながり

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

    現在地リクエストスコープWeb

    LEARN BY DOING

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

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

    Javaコースの全編を見る