Hotwire
2020年末にDHHが発表した、既存のJSやJSONでやるのとは違うアプローチでモダンなwebアプリケーション(まあSPAだろう)を作る手法 HTML中心的な考え方で、サーバーはJSONではなくHTMLを送信する JSを書かずにSPAの速度を実現する(と主張している)
A set of complementary techniques for speeding up page changes and form submissions, dividing complex pages into components, and stream partial page updates over WebSocket. All without writing any JavaScript at all. こちらもHTML-centricなアプローチでアレする
モバイル(ハイブリッド)アプリについては更にStradaというものが考えられているようで、これも気になる StradaはTurbo NativeからiOS/AndroidのネイティブAPIのブリッジらしい
一々HTMLもらって描画し直してたらコスト掛かるし遅いから、サーバーからは必要に応じてデータだけもらってViewの書き換えはクライアントサイドで動的に……というのがSPAへの流れだったと思うのだが、それも別アプローチで解決できるよというのがHotwire(Turbo)だという理解
そもそもブラウザで使えるのが実質JS一択だからViewはJSで書いてサーバーとのデータのやり取りにはJSON使った方がいいよねという考え方に対して、ブラウザはHTMLだけ解釈すればよいのだという力強さは良い
JSONを介したクライアントサイドとサーバーサイドで同じロジックを二つの言語で書くのか?という問題はあって、サーバーサイドJSがそれに対しての一つの解だった
Turboはロジックをサーバーサイドに集中させる考え方
ただ、計算リソースは各クライアントのCPUを燃やせばいいのだ、という考え方もあって、その辺りどうなんだろう
所感
UIをUIから考えるのにはちょっと厳しい印象
Stimulusまでも含めて
Railsというフルスタックなフレームワークで労力少なく開発するのに向いている感じで、言い換えるとMVC全部やること前提(ViewだけとかViewから考えるわけにはいかない)という感じ Model"も"考えることになるのはコンポーネントの単位を適切にするギプスとしては良いと思っているが、新しいUIを実装しながら考えたい時もあるので、それには厳しいかなという意味