middleware という名前を知っていましたが、proxy.ts は初耳です。中身も変わったのですか。
主にはファイル名の変更で、コードモッドが書き換えます。ただし proxy は Node.js ランタイム固定です。Edge で動かしたい場合は、非推奨の middleware.ts を使い続けるよう公式は案内しています。
面接官が見ているのは🔴 改名を「名前が変わっただけ」と正しく扱えるか。知ったかぶりを検出する。
これは「全ルートに共通で認証チェックを入れたい。どこに書きますか。」への追撃質問です。
よくある答えと、面談でどう見られるか
- 主にファイル名の変更。15 以前は middleware.ts のまま
コードモッドが自動で書き換えます。両方知っていると答えるのが実務的です。 - 別物の新機能なので、middleware とは使い分ける
別物の新機能ではありません。同じ役割のファイルが改名されたものです。ただし proxy は Node.js ランタイム固定なので、Edge で動かしたい場合だけは非推奨の middleware.ts を使い続けるよう公式が案内しています。 - 改名されたもので、役割に合わせて名前が変わったと理解している
背景まで押さえられています。公式は、Express.js のミドルウェアと混同されやすかったこと、最後の手段のはずが多用されがちだったことを理由に挙げています。 - middleware が非推奨になり、proxy に移行が必要になった
その通りです。公式も middleware を非推奨としたうえで proxy に改名しています。非推奨のファイルはまだ動くので、急いで直す必要はありません。移行時に気をつけるのは、proxy が Node.js ランタイム固定になった点です。
面接官は何を見ているか
- 主にファイル名の変更だと理解している
- 15 以前は middleware.ts のままだと知っている
- 名前が変わった理由を推測できた
模範解答
主にはファイル名の変更ですが、中身も1点変わっています。公式のアップグレード手順にも「middleware.<拡張子> を proxy.<拡張子> に改名する」という項目があり、コードモッドが自動で書き換えます。middleware.ts は非推奨になりましたが、まだ動きます。
変わったのはランタイムです。proxy は Node.js ランタイム固定で、変更できません。Edge ランタイムで動かしていた場合は、公式は middleware.ts を使い続けるよう案内しています。移行するときは、Edge 前提の書き方をしていないかを確認します。
名前が変わった背景として、公式は2つを挙げています。1つは、middleware という語が Express.js のミドルウェアと混同されやすかったこと。もう1つは、何でもできるために多用されがちだが、本来は他に手段が無いときの最後の手段であること。Next.js は middleware に頼らずに済む API を整えていく方針で、proxy は「アプリの手前に立つ」という実際の振る舞いに近い名前として選ばれました。
面談での扱い方としては、両方知っていると答えるのが一番良いです。現場のコードは 15 以前のままであることも多いので、「16 で proxy.ts になったが、参画先が 15 なら middleware.ts のままのはず」と言えると、実際に手を動かしている感じが出ます。
逆に危ないのは、改名を知らずに「middleware.ts が無いのはおかしい」と決めつけることです。バージョンを確認する癖があるかを見られています。
対象: Next.js 16(App Router) 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。