Next.jsがサードパーティサービスに向かわせる理由

Published:  at 

目次


「メタNext」は本当にアプリ構築についてではない — 特定の経済的・建築的 worldview を最適化することについてだ。

その worldview はたまたまサードパーティサービスを強く支持している。

マーケティングの bullshit を抜きにして分解してみよう。

核心的な理由

Next.js はステートレス、分散、エッジファーストのインフラのために最適化されている。

この前提を受け入れると、多くのことが避けられなくなる: • ローカルステート → 悪い • 長寿命プロセス → 悪い • メモリ内の何もかも → 悪い • ステートフルサーバー → 悪い • 「アプリの隣に Postgres を実行するだけ」 → 非推奨

では、そのものはどこに行くのか?

➡️ サードパーティサービス。

なぜこのバイアスが存在するのか

Vercelのプラットフォーム制約

Next.js は Vercel によって構築され、Vercel のプラットフォームは: • サーバーレス • 水平スケーリング • 一時的 • エッジ分散

つまり: • 保証されたプロセス寿命なし • ローカルファイルシステムなし • バックグラウンドワーカーなし • 信頼できるメモリ内キャッシュなし

永続性が必要なものはすべてアプリの外にある必要がある: • DB → Neon、PlanetScale、Supabase • 認証 → Clerk、Auth0 • キュー → Upstash、Inngest • キャッシュ → Redis(ホスト型) • 検索 → Algolia • メール → Resend • ストレージ → S3/R2

Next はこれを強制しない — これを前提としている。

サーバーアクションの影響

サーバーアクションは DX 的には素晴らしいが、以下のことももたらす: • フロントエンド/バックエンドの境界を曖昧にする • 明示的なサービスレイヤーを阻害する • 「ここで DB を呼ぶだけ」を普通にする

これは以下の場合にのみうまく機能する: • DB がグローバルに到達可能 • コネクションプーリングが外部で処理される • どこからでも許容可能なレイテンシ

再度 → ホスト型 DB。

エッジランタイムの制限

エッジランタイム: • TCP ソケットなし • ネイティブドライバーなし • 長いクエリなし • ローカル DB なし

突然: • Postgres ドライバーが動作しない • Redis は HTTP ベースである必要がある • すべてが API 形状になる

どの企業がすでに提供しているか?

➡️ サードパーティサービス。

DXインセンティブ

Next エコシステムは以下のために最適化されている: • 「5分で動作する」 • 「インフラ知識不要」 • 「考えずにデプロイ」

つまり: • より少ない決定 • ローカルでのより少ない移動部分 • より多くのマネージドサービス

悪意があるわけではない — DX マキシマリズムだ。

しかしトレードオフは:

「誰かに支払ってステートを保持してもらう。」

経済的な層

Vercel は以下の場合にお金を稼がない: • VPS を実行する • Postgres を自分でホストする • 自分で認証を管理する • バックグラウンドワーカーを実行する

彼らは以下の場合にお金を稼ぐ: • アプリが水平にスケールする • プラットフォーム制限に達する • ネットワーク化されたサービスに依存する • インフラ支出が断片化する

Next の「メタ」パターンは偶然にも意図的にそこへ誘導する。

彼らが悪だからではない — なぜなら:

フレームワークはメンテナーのビジネスモデルを反映する。

経験豊富なエンジニアがこれを間違っていると感じる理由

歴史的に: • バックエンド = もの • サーバーは生きていた • プロセスは持続した • ステートはローカルで制御されていた

Next はこれを逆転させる: • バックエンドは「関数が実行される場所」 • ステートは他人の問題 • インフラはお金がかかるまで抽象化される

VPS ファーストシステムに慣れたエンジニアにとって、これは以下のように感じる: • 脆弱 • 不透明 • 過度にエンジニアリングされている • ベンダーロックインされている

想像しているわけではない。

重要な区別

Next.js ≠ Vercel

Next を実行できる: • VPS 上で • ローカル Postgres で • 自分の Redis で • バックグラウンドワーカーで • エッジランタイムなしで • SaaS 認証なしで

しかし、ドキュメント、例、インフルエンサーによって押し付けられるデフォルトのメンタルモデルは:

「すべてを外部委託する。」

それは選択であり、法律ではない。

正直なトレードオフ

メタNext(SaaSファースト) ✅ 狂気的な DX ✅ 迅速なシッピング ✅ 容易なスケーリング ❌ コストの増加 ❌ ベンダーロックイン ❌ システムの推論が困難

VPSファースト / モノリス ✅ 完全な制御 ✅ 予測可能なコスト ✅ シンプルなメンタルモデル ❌ より多くの運用 ❌ 初期セットアップが遅い

どちらも「正しい」わけではない。異なる段階のために最適化されている。

本当の答え

なぜメタNextがすべてのためにサードパーティサービスに向かうのか?

なぜなら:

  1. プラットフォームは設計上ステートレス
  2. エッジランタイムは従来のインフラを禁止する
  3. DXインセンティブは外部委託に報いる
  4. ビジネスモデルはマネージドサービスと一致する

イデオロギーではない。物理学 + 経済学。

代替アプローチ

Next を UI + ルーティングレイヤーとして使用し、「システム全体」として使用しない。

一般的な合理的なセットアップ: • Next.js(App Router、RSC、shadcn) • VPS バックエンド(Go / Node) • 同じボックス上の Postgres • ローカル Redis • 24時間365日稼働のバックグラウンドワーカー • Next はバックエンドと通信する

これにより得られるもの: • Next の UX の強み • アーキテクチャを放棄することなく

もし望むなら、スケッチできる: • 「アンチメタNext」アーキテクチャ • VPSファースト Next セットアップ • またはハイブリッド:Next フロントエンド + Go バックエンド

どの方向で反逆したいか言ってくれれば 😏