イメージ
SPA:リクエストに応じて1枚のキャンバスに上書きを続ける
MPA:リクエストに応じて新しいキャンバスがどんどん提供される
UX
イメージから考えるに、SPAだとユーザーが画面を自ら描いているような体感を得られるのでは?
ユーザーの自己効力感に貢献しやすいデザイン。
ユーザーに万能感を与えやすいデザイン。
SPAは営利をもたらすか?
UXより、ユーザーに万能感を与えたい場面で活躍すると思う
自分のコントロールによって物事が動くという自己効力感が顧客満足度に貢献してリピーターを増やすと思う
タッチパネルと相性がよさそう
SPAの極致はSF映画あるあるの視界に広がる透明なタッチパネルを操作するあの感じができるのだと解釈した
SPAの想定活用ケース
→chat
→検索
→タイムライン
→ランキング
→在庫表示
→編集全般(画像編集、文字編集)
→統計情報表示
など
SPAの素敵な実装例
https://chatgpt.com/
chatGPTのサイトは要件を考えてもSPAにぴったりに思える
UX的にはchat送信のたびに逐一画面遷移してほしくない
また、表示上画面の一部を書き換えることが続く
GoogleMaps
個人的に前述のSF映画あるあるに近い操作感。
SPAはReactなどを使わないとできない?jsだけじゃダメ?
SPAと聞くとReact、Vue、コンポーネント指向などを学ばないと実現できないのかなどと思っていたが、そんなことはない。
javascriptのAjax通信で十分実現できる。
そしてそのAjax通信をもっと楽に実装しようぜ!というモチベーションで前述のフレームワークが生まれたと理解した。
SPAをReactやVueなどで実装する場合
ルーティングの定義とviewの定義は明確に分離される。MVCにおけるVとCの分離と同様。
SPAをBlazorで実装する場合
Blazorが活用されているコード(https://github.com/dotnet/eShop)
を見てみるとMVCに慣れていることもあり、VとCが同じ場所に定義されていることに違和感を感じた。(例:@page、@code)
view:見た目の定義
controller:エンドポイントの定義
これらは別問題なので分離すべきではないだろうか?
単一責務の原則に反しているように感じた。
エンドポイントが必ずしもviewを返すとは限らない。
※自分の認知が狭くこのような実感になっている可能性も大いにあるので、ぜひ認知の拡大を促す意見をいただけると幸いです。優しい言葉でお願いします。