概要
- ネイティブCSSトランジション の登場により、SPA(Single Page Application)を選ぶ最大の理由が消滅
- 多くのWebサイトが 本来不要な複雑さ をSPAで実装し、パフォーマンス低下を招く現状
- View Transitions API や Speculation Rules など、モダンブラウザによる新機能の進化
- SPAとMPA(Multi Page Application) のパフォーマンス比較で、MPAが圧倒的に優位
- 本質的なWeb開発の指針は「 必要なものだけを使い、プラットフォームの力を活かす」こと
ネイティブCSSトランジションがSPAの優位性を無効化
- 「アプリのような体験」 を求める声から、安易にSPAアーキテクチャを選択する傾向
- 実際には、 SPAの導入理由は「滑らかなページ遷移」 のみが主な動機
- しかし、 View Transitions API のようなネイティブ機能により、 JavaScript不要で滑らかな遷移 が実現可能
- SPAでは、 本物の滑らかさではなく「シミュレーション」 に過ぎないケースが大半
- 例:Next.jsやGatsbyなどのSPAは、 大量のJavaScript でネイティブ挙動を模倣
SPAの「滑らかさ」は幻想
- SPAでよく見られる問題点
- ページ遷移のローディング状態間のフェード
- スクロール位置の復元失敗
- フォーカス挙動の不一致
- コンポーネント再ハイドレーションによる遅延
- レイアウトシフトやスケルトン画面
- 効果に見合わないパフォーマンス低下
- SPAの本質は「ネイティブ機能の再発明」 であり、結果的に重く脆いUXに
Webプラットフォームの進化
- Chromium系ブラウザ(Chrome, Edge等) で、 View Transitions API が利用可能
- CSSのみでページ間アニメーション を実現
- 例:@view-transition { navigation: auto; } などのシンプルな記述
- 共通要素のアニメーション も、view-transition-name属性で簡単指定
- JavaScriptドリブンなトランジション も、document.startViewTransitionで柔軟に対応可能
Speculation Rulesによる高速ナビゲーション
- Speculation Rules で、ユーザーの行動を元に 事前プリロード・プリレンダ を自動化
- 例:リンクにhoverやタッチした瞬間にページを先読み
- 瞬時のページ遷移 を実現、ローディングスピナー不要
- ただし、 ページが重いと逆効果 (無駄なCPU・バッテリー消費)
ブラウザの進化と「シンプルさ」への回帰
- Back/Forward Cache(bfcache) など、ブラウザ標準の高速化機能が充実
- SPAの設計パターン(クライアントサイドルーティング等)はbfcacheと相性が悪い
- HTML+CSS中心のクリーンな実装 が、パフォーマンス・安定性・SEOで圧倒的有利
SPA vs MPA:パフォーマンス比較
- SPA(Next.js等)
- JSバンドル:1〜3MB
- TTI(操作可能までの時間):3.5〜5秒
- ルート遷移:シミュレーション
- SEO:複雑・脆弱
- スクロール/アンカー挙動:不安定
- MPA + View Transitions + Speculation Rules
- JSバンドル:0KB(必要時のみ追加)
- TTI:約1秒
- ルート遷移:ネイティブ
- SEO:簡単・堅牢
- スクロール/履歴処理:ブラウザ標準で完璧
本当に必要な「アプリ的」要素とは
- 多くのWebサイトはアプリではなく、SPAの恩恵を受けない
- 例:ECサイト、ドキュメント、マーケティングサイト、ブログ
- シンプルな構造・高速なマークアップ・クリーンなURL が最優先
- 必要な場合のみ最小限のインタラクションを追加 すれば十分
意図的な技術選定のすすめ
- ReactやTailwind、Vite等の利用自体は否定しない
- 「必要なものだけを必要な分だけ」 ブラウザに届ける設計が重要
- HTML、CSS、ネイティブナビゲーションの活用 で、誰にとっても快適なWeb体験
2025年型Web開発の指針
- SPAは一時的な制約の解決策だったが、今や不要
- View Transitions APIによるネイティブなページ間遷移
- Speculation Rulesによる瞬時のプリレンダナビゲーション
- クリーンなマークアップと高速なロード、実URLの維持
- 「プラットフォームの力を活かす」ことが最適解
まとめ:Webの本質に立ち返ろう
- SPAで「滑らかさ」を追求するのは時代遅れ
- モダンなサーバーレンダリング、CSSアニメーション、意図的なプリロード戦略 の組み合わせが最適
- 不要なJavaScriptを減らし、2025年らしいWeb開発 を実践
- ユーザーも開発者も、より速く・シンプルで・後悔の少ないWeb体験 を実現