◀ Files Kohei Hakoishi — File Browser
Location:
/blog/20260514_MPAにした.md

MPA にした

2026/05/14

20260506_リニューアル.md で自作 SPA でハッシュルーティングにしたよ,ということを書いたのだが,早々に撤退して ASP.NET Core による MPA に移行した. 見た目は変えていないが,きちんとした MPA として動くようになったので, SEO という観点でも申し分ないし,外部からリンクを貼られた場合でもまったく問題なく動作する.

なぜ SPA をやめたかというと,単純にSPAが間違っていたからである. 以前「ひっそりやるからSPAでも困らない」「AIエージェントに読んでもらうつもりはない」ということを書いたが,やはり微力ながらもコミュニティに貢献していくには,web 検索に一切ひっかからないような記事を書いてもあまり意味がないし,AI エージェントが読めるようにする必要も(多少は)あるだろう. Claude Code などの AI エージェントは単純に curl して情報を引っ張ってきたりするので,クライアントサイドで動的にレンダリングするのはあまり好ましくないともいえる.

しかし,だからといってフロントエンドフレームワークにおける SSR をやるのはやはりオーバーエンジニアリングだなということで, ASP.NET Core で MPA を作ることにした. いまどきの ASP.NET Core は非常に優秀なので,HTML のレンダリング,ファイルエクスプローラに表示するツリーのレンダリングなどすべて含めて,Program.cs 1ファイルに 200 行ぐらい書けば済む. (今後サイトマップなど整備するならもうちょっと書かないといけないだろう). しかも非常に高速に,arm64 でも動作するので,ランニングコストも低く抑えられる. JavaScript も一切不要になり,表示速度もまずまずである. SSG 的にすべてのページをビルド時に静的に生成しておく案もあったし,そちらのほうが合理的なのだが,将来もうちょっと凝ったことをしたいかもしれないのと,こういった小さなウェブサーバーを動かす経験は仕事ではなかなかない(仕事では大規模なクラスタであったり,Fargate などのサーバーレス環境を選びがちである)ので,遊びとして Linux ウェブサーバーを持っているのもありかな,ということでこういう構成にしてみた.

blog/20260514_MPAにした.md — 2.6 KB