- 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件のコメント
Hacker Newsの意見
筆者はNetlify所属で、自らVercelの直接的な競合相手だと言っています。これは少し客観性に欠けるように見えますね。
本文の内容は、最近 tanstack や remix などの競合フレームワーク間の比較を見てきた人であれば、程度の差こそあれ皆が知っている話です。現時点では nextjs のシェアが非常に大きく、Vercel もあからさまな動きを見せていないため、表面化していないだけです。
競合他社で働いているという理由だけで、その文章が伝えようとしている情報の客観性が欠けていると主張するのは人格攻撃です。著者の背景や利害関係を省いて読んでも、おかしな文章でしょうか? 私は有益な情報だと思います。