13 ポイント 投稿者 GN⁺ 2025-03-28 | 4件のコメント | WhatsAppで共有
  • Next.js の開放性とガバナンスの問題を扱う記事: アダプターの不在、公式のサーバーレス対応不足、Vercel専用のコードパス、そしてセキュリティ事故に対するVercelの対応姿勢など
  • 技術スタックの選定は、プロジェクトの開発速度、品質、チーム構成などに長期的な影響を与える重要な決定である
  • オープンソースソフトウェアは、ユーザーにコードの拡張・修正の自由を与え、ベンダーロックインを避けられる利点がある
  • Next.jsはオープンソースとして提供されているが、それを作ったVercelのインフラと密接に結びついている
  • 企業が自社で作ったオープンソースから収益を得ること自体は問題ではないが、オープンソースと企業の境界が明確であってこそ持続可能なモデルになる

著者の背景と利害関係

  • 著者はNetlifyに所属して4年以上勤務しており、NetlifyはVercelの競合である
  • NetlifyでNext.jsの全機能を支えるためのインフラとツール群を直接構築する中で、Next.jsの内部構造への深い理解を得た
  • 長い間、公に問題提起することを避けてきたが、最近のVercelのセキュリティ問題への対応がコミュニティに害を及ぼしたと判断し、この文章を書くことになった

# Next.jsの開放性とガバナンスの問題

Fact #1: アダプターの不在

  • ほとんどの現代的なフレームワークは、デプロイ先に応じてアダプターで柔軟に設定できる
  • Next.jsはアダプターを公式にはサポートしておらず、出力形式はVercelでのみ使われる独自かつ非公開の構造になっている
  • VercelはBuild Output APIを作ったが、Next.jsは依然としてこれをサポートしていない
  • その結果、Vercel以外のプロバイダーは文書化されていないAPIを前提に構築せざるを得ず、予期しない変更に弱い
  • CloudflareとNetlifyはOpenNextを通じてNext.js向けアダプターの開発に協力しており、Vercelもこれに参加し始めているが、まだ具体的な日程はない

Fact #2: 公式のサーバーレス対応不足

  • Next.jsの公式セルフホスティング方式は長時間稼働するサーバー前提であり、実運用で柔軟なスケーリングやコスト削減を実現しにくい
  • 過去にはserverlessモードがあったが、2022年10月に特に説明もなく削除された
  • React公式ドキュメントではサーバーレスデプロイが可能だと言及されているが、実際にそれを実現するための公式ドキュメントは存在しない
  • サーバーレス環境を望むホスティングプロバイダーは、Next.jsをリバースエンジニアリングして独自実装する必要がある

Fact #3: Vercel専用のコードパスの存在

  • Next.jsにはVercelへデプロイしたときにしか動作しない非公開のコードパスが含まれている(例: minimal mode)
  • このモードにより、Vercelはミドルウェアをエッジで実行するなどの性能最適化を可能にしている
  • ミドルウェアは、キャッシュ前段の経路で高速にロジックを実行できる機能だが、この機能を使えるのはVercelだけである
  • Netlifyはこの機能をサポートするために専任のエンジニアチームを置いて独自実装したが、これは小規模なプロバイダーには不可能なレベルのリソースを要求する
  • VercelだけがNext.jsの全機能を公式に提供する唯一のプラットフォームであるという現実は、フレームワークのオープンソース哲学と食い違っている

セキュリティ事故とVercelの対応

  • 2025年3月21日、Next.jsで認証バイパスを許す深刻なセキュリティ脆弱性(CVE 9.1)が公開された
  • この脆弱性は、リクエストに特定のヘッダーを含めるとミドルウェアを無効化でき、保護されたリソースへアクセスできてしまう問題だった
  • 脆弱性は2月27日に報告されたが、Vercelがこれの調査を始めたのは3月14日だった
  • 問題を認識した後は素早くパッチを配布したが、Netlifyなど他のプロバイダーへ知らせるまでに8日もかかった
  • 初期のブログ記事では、Vercelのファイアウォールが顧客を保護していたかのように記述されていたが、実際にはそうではなかった
  • その結果、複数のプロバイダーや開発者が誤った情報をもとに対応したり混乱したりし、今なお多くのサイトが脆弱な状態にある可能性もある

VercelのNext.js所有権とオープンソースの責任

  • VercelがNext.jsを所有しているという事実は否定できず、収益化も正当である
  • しかしオープンソースとして提供されている以上、他のプロバイダーも平等に利用できるべきであり、その点でVercelは期待に達していない
  • Redis、Grafana、WordPressなども商用サービスとオープンソースプロジェクトを並行して運営しながら、開放性と相互運用性を維持している

結論

  • どのフレームワークを選ぶかはユーザーの判断であり、Next.jsが課題解決に最適ならそのまま使うのもよい
  • ただし、Next.jsが現在抱えている構造的な問題と制約を理解したうえで選ぶことが重要だ

4件のコメント

 
GN⁺ 2025-03-28
Hacker Newsの意見
  • 自分は next.js を使っていたが、ページルーターから App Router に移行したときにプロジェクトを諦めた。App Router の体験があまりにもひどく、その後は next.js を二度と使いたいと思わなくなった
    • Vercel はオープンソースを装っているが、ユーザーを自社のホスティングプラットフォームに囲い込もうとする壁を作っている
  • Vercel については以前から少し不安があった。VPS で Next.js をセルフホストしようとしたとき、彼らが仕込んだ小さな罠にはまった
    • その脆弱性への対処の仕方を見て、さらに不安になった
    • Vercel のファイアウォールが顧客を「積極的に保護した」と主張する当初の説明は、悪い印象を残した
    • 他のプラットフォームへの通知が遅れたことで、Vercel には Next.js に脆弱性が入り込むのを防ぐ動機があまりないことが示された
  • 自分はみんなに next.js を避けるよう警告している。V0 が採用を大きく押し上げる可能性がある
    • 多くの新しい開発者は、デプロイやシステム管理について考えたがらない
    • React だけ知っていれば、SSR を学ばなくても得られるものがあるのが利点だ
  • 自分が next.js を捨てた理由は、小さなプロジェクトでも変更がブラウザに反映されるまで 6〜7 秒かかったからだ
    • 今は React SPA と Vite を使っている
  • 自分たちは去年 Next.js から Vike に移行した。開発者体験は大きく改善した
    • 必要なことの大半は、ページを事前レンダリングすることで満たせる
  • Next.js には複雑な感情を抱いている。一方では、投資家と一緒にフレームワークを作っている会社だ
    • MIT ライセンスなので、Netlify や他社がフォークしてより良い代替を提供することもできる
    • もし自分が Vercel の投資家なら、競合を助けることで投資リスクを増やす理由はない
    • Vercel はオープンソースを支持しつつも、自社のホスティングプラットフォームを最良の選択肢にするための摩擦を残そうとしている
  • 自分は勤務先の React スタックを選定している最中だが、Next.js を代替より選ぶ理由が思い浮かばない
    • SSR が欲しいなら、Remix や React Router v7、TanStack のほうが合理的な選択だ
  • サーバーレスのアプローチが良いデフォルトだとは確信していない。不必要な複雑さを加える
    • バックエンドで JavaScript を使うのは好きではない
    • サーバーコンポーネントと Next.js への集中は、自分にはトンネルビジョンのように感じられた
    • サーバーレスのアプローチが、HTTP ヘッダーを使った特権的な通信の理由だった可能性が高い
  • 開発ビルド時間は最悪で、長年にわたって多くの不満があったのに解決されていない
  • Vercel と NextJS は存在すべきではない
    • 一度 Next を試したとき、本番環境で大量のハイドレーションエラーに遭遇した
    • このフレームワークは、サーバー側レンダリングの潜在的な利点のために、あらゆるものを複雑にしている
    • フレームワーク全体が、彼らの高価なクラウドサービスを売るための立派な見せかけとして作られている
 
ahwjdekf 2025-03-28

筆者はNetlify所属で、自らVercelの直接的な競合相手だと言っています。これは少し客観性に欠けるように見えますね。

 
preserde 2025-03-28

本文の内容は、最近 tanstack や remix などの競合フレームワーク間の比較を見てきた人であれば、程度の差こそあれ皆が知っている話です。現時点では nextjs のシェアが非常に大きく、Vercel もあからさまな動きを見せていないため、表面化していないだけです。

 
alpharoom 2025-03-28

競合他社で働いているという理由だけで、その文章が伝えようとしている情報の客観性が欠けていると主張するのは人格攻撃です。著者の背景や利害関係を省いて読んでも、おかしな文章でしょうか? 私は有益な情報だと思います。