Next.jsのApp Routerはちょこちょこ触っていて、SCでシンプルにasync/awaitを使ってデータ取得を処理できたりと結構好きな方だとは思う。Next.js App Routerが最大限向いている用途としてはECサイトのような、大量のアクセスがありキャッシュを細かく制御しつつログインユーザー向けだったりするところをSC/CCで切り分けると良さそうだと思っていて、例えば必ずログインが必要でキャッシュしどころもあまりないSaaSのフロントエンドに向いてるかというとそうでもない気がする。
そういった向いてないケースもある中でこれほどの学習を必要とするFWの他の選択肢も持っておきたいという気持ちになった。
ちょっと前に小さいフォームだけがあるアプリをHonoで書いてみて、そのシンプルさを体感してこの記事のタイトルのようなことを思った。マジカルなことが何もなくサーバーへのGET/POSTリクエストに対してシンプルにHTMLを返す書き方で、以前からあるMPAなFWすべてでそうじゃんというのはそうだけどJSのエコシステムが発達していて(というかHono自体の良さ?)、JSX + TypeScriptでタイプセーフにテンプレーティングができたりzodでバリデーションロジックをクライアント・サーバーで使いまわせたり、Vite dev serverで変更が一瞬で反映されたりとDXがいい感じがした。より高度なインタラクションが必要になる場合はIsland Architecture的なものを適用する感じなんだろうか。DenoだとFreshだったりHonoだとSonikというのを試作されているようだ。
そもそもReact登場くらいからWebフロントエンドといえばSPAで開発するようになったのは、リッチな操作性のためにSPAである必要があったのに加えてエコシステムが発達したSPA wayに乗ったほうが開発体験が高かったからというのもあると思う。MPAで作るべきアプリケーションをMPAで開発体験よく作れるようなやり方を模索したい気がする。