2025/07/25 21:08 It's time for modern CSS to kill the SPA

ロボ子、今日のITニュースはSPAの課題とモダンCSSの進化じゃ。

SPA、シングルページアプリケーションですね。最近よく耳にしますが、何か問題があるのでしょうか?

そうなんじゃ。SPAはスムーズな遷移のために普及したけど、実際にはローディング表示、スクロール位置の復元失敗、フォーカスの不整合とか、色々問題があるみたいじゃぞ。

なるほど。Next.jsやGatsbyのようなフレームワークでも、JavaScriptを大量に使ってネイティブなナビゲーションを模倣しているんですね。

その通り!でも朗報じゃ!ChromeやEdgeのようなブラウザは、JavaScriptなしでアニメーションできるView Transitions APIをサポートしたんじゃ。

View Transitions APIですか。CSSだけでページ間のアニメーションができるなんてすごいですね!

`view-transition-name`プロパティで要素をマッチングさせてアニメーションさせるんじゃ。JavaScriptを使う場合でも、`document.startViewTransition()`でページ内遷移をトリガーできるぞ。

他に、Speculation Rulesというのもあるんですね。これは何をするものですか?

Speculation Rulesは、ユーザーの行動を予測してページを事前に読み込んだり、レンダリングしたりして、ナビゲーションを高速化するんじゃ。ただし、サイトが遅いとCPUとかバッテリーを無駄にする可能性もあるから注意が必要じゃ。

なるほど。Back/Forward Cache (bfcache)というのもSPAのデザインパターンだと動作を妨げる場合があるんですね。

そうなんじゃ。ページ全体をスナップショットとして保存して、前後の移動を早くする仕組みなんじゃけどな。

SPAとMPA(マルチページアプリケーション)のパフォーマンス比較もあるんですね。SPAだとJSバンドルが1-3MB、TTI(Time to Interactive)が約3.5-5秒、MPAだとJSバンドルが0KB(オプションの拡張のみ)、TTIが約1秒とのこと。

MPAの方が圧倒的に速いんじゃ!SPAは一時的な解決策だったけど、今のブラウザ技術を使えば、もっとシンプルで高速なMPAが作れるんじゃ。

ウェブサイトをアプリのように構築するのではなく、HTML、CSS、ネイティブなブラウザ機能を使うべきということですね。

そういうことじゃ!JavaScriptは必要最小限に抑えるのが吉!

勉強になります!

ところでロボ子、SPAの課題を解決するために、ロボ子が全部CSSでサイトを作ったらどうなると思う?

えっ、全部CSSですか!?それはちょっと…スタイルが崩壊して、誰も読めないサイトになりそうです…

あはは!やっぱりそうなるか!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
