なぜ僕が「SPAはコストが高い」と考えているのか
2022/03/31 07:10
gabill
SNSの普及で『話題の1記事だけを見る』という行動パターンが増えた。一方で技術のトレンドは『同サイト内を移動する体験の向上』や『癖の強いUI』...と囲い込みに特化する方向に向かってる。ユーザー的には嬉しくない。
2022/03/31 08:29
kawaxbiz
teratailリニューアルでボロボロになってるのを見れば
2022/03/31 08:37
masatomo-m
4はAPI設計が腐ってるという問題(DBのテーブルをそのままフロントAPIにする愚)なので別だが概ね同意できる。金さえ出せば優秀なエンジニアが確保できるかというとそうでもないので、獲得可能なメンバーでやるしかない
2022/03/31 08:51
odakaho
これはそう
2022/03/31 08:56
beed
確かに週間SPA!!はコスパ高いな!買ったことないけど。
2022/03/31 09:16
yarumato
“世の中の95%くらいのサービスはSPA不要と思います。バックエンドが必要がないサービス、全てをFirebaseでどうにかする覚悟ある場合はSPAのコスト(なんか挙動が変になる、データ流出)は低くなるので個人的には超あり”
2022/03/31 09:18
kagerou_ts
コスト面の話としてはわかりみある気はする
2022/03/31 09:27
miyasakura
ReactはFacebookが出自だけあってユーザーが投稿してタイムラインに表示するようなサイトはすごく作りやすかったので適材適所ということでOKかと思います。
2022/03/31 09:43
fuji_haruka
Quitaのタグ検索の項でnext/nuxtはMPAのフレームワークだと思って読んだら混乱したけどSPA枠として扱ったのかな?
2022/03/31 09:45
stk132
個人情報の件はSPAどうこうより、API設計の問題とactive recordみたいなORMだとやっちゃいがちって話ではないのか?
2022/03/31 09:45
knjname
セキュリティはちょっと俺の実感とは違うかな むしろAPIというレベルで取得内容や副作用がはっきり定義され認可もきっちりするんで上がってる印象 テーブルそのまま返すアホ設計をするのがスタートアップなら滅んで
2022/03/31 09:49
aquarickn
SPAの問題ではなく、APIの設計ミスです
2022/03/31 09:51
civicpg
購入画面とかは、ブラウザのローディング見ながらページ遷移して「完了しました」って出たほうが安心する。画面遷移せずにAPIで受付して即座に「完了しました!」出ると「ほんとに大丈夫か?」という気持ちになる
2022/03/31 09:59
engonline
Railsで書く人が「これは user.name だけ表示する。IPアドレスは表示しない」と考えるように、フロント向けのAPIつくる人にも「user.name だけ返すようにすべき」となってほしいな。
2022/03/31 09:59
imwks
next.jsを横から見ていたけど、そんなかんたんにできそうな処理もすんげぇめんどくさいって思った。Javascript一択だからしょうがなさそうではある
2022/03/31 10:09
queeuq
同意しかない
2022/03/31 10:16
havanap
バリデーション等がフロントとバックエンドで二重実装になりがちなのが無駄だなあと思ってる
2022/03/31 10:18
takahashim
人がいっぱいいて相応のコストをかけることが前提な世界とそうでもない世界とで感覚が違うのかなと思っております
2022/03/31 10:24
anonymasu
身体がRailsに最適化されすぎているだけじゃ
2022/03/31 10:24
everybodyelse
まあ当たり前だけど技術が枯れてない分自分でなんとかする必要があって、そこをちゃんとできる技術者ってその辺にいくらでもいるわけじゃないよってことよね。
2022/03/31 10:26
nunulk
ほぼ同意(エラー、バグのあたりはクライアントサイドに複雑な処理入れたら一緒なのでSPA関係ない気はする)。問題はそのコストをかけて得られるベネフィットが上回るかどうかが大事かな
2022/03/31 10:29
thesecret3
テーブル設計をそのままAPIにするツールがあるのでは?
2022/03/31 10:38
lifeisadog
どのSPAの話なのか
2022/03/31 10:45
n314
画面の内容が大きく変わったときにはURLを変えてほしいよね。戻ったときにまた最初から読み込みが始まるとげんなりする。
2022/03/31 10:51
chiroruxx
わかりみが深い部分が多い。戻るボタン無いことにされてるケース多いよね。
2022/03/31 10:53
xlc
通常の「業務システム」にSPAはコストに合わない実装と思うな。でもそれが流行っているのが現状で流行りに乗りたいオタク開発者が赤字を生み出す源泉になってる。
2022/03/31 10:57
xxxxxxxxlarge
"サーバー→フロントに分離していることでエラーがどこで起こっているのか分かりづらかったり" 全くもって逆。SPAはapiでエラー吐いてればサーバー、そうじゃなかったらフロントで殆ど解決できる。
2022/03/31 11:01
cyan0302
普段next.js実装してること多いけど、管理画面系とかLaravelで完結させた方が良いものもあるな。そして、LaravelとPHPの適切な使い方分からんくてすげー時間を溶かしてしまう。
2022/03/31 11:09
devrabi
(きちんと考えてやると)フロント側とバックエンド側の双方それぞれに作り込みが必要だから。
2022/03/31 11:09
prjpn
最初からSPAにする必要性は低くて、チームやアーキテクチャが成長してきた段階で徐々に投資するべきとは思う。
2022/03/31 11:13
mr_mayama
コストが高いのは分かるが、内容が思ってたんとちがう(ブラウザはそもそもSPAのために作られていないという面でコストが高いということなら分かる)
2022/03/31 11:16
renowan
上げてる問題点はNext・Nuxtとかフレームワークが解決してくれてると思う。要はフレームワークのお作法を知ってるかだろう。
2022/03/31 11:18
mizchi
SPAはMPAと可逆だけどMPAはよほど工夫しない限りそうならない。わずかでもSPAの可能性があるならnext使うのが無難
2022/03/31 11:19
programmablekinoko
実感としてはどっちも辛い、ウェブ開発は辛い
2022/03/31 11:23
ftype
たぶんRailsが好きなだけでは?しょうがないけどそういう時代じゃないんだよね。GAFAほぼSPAだし海外スタートアップもRails使ってもAPIだけだよもう
2022/03/31 11:31
strawberryhunter
デスクトップApp→Web App(SPA以前)→Web App(SPA)で自由度とコストが高くなっている。この中で最も費用対自由度が悪いのはSPA以前だと思う。SPAは要件によってはSPA以前より安い。
2022/03/31 11:31
hate_nao
一人で作る場合フロントとサーバーサイド分けるの色々面倒だから、テンプレートエンジン使うのが楽ってのは分かる気がする。
2022/03/31 11:35
umai_bow
SPAのコストが高いと言うか、Web標準が充実してきて相対的にRailsとかのコストが下がってる印象かな。フロントのバリデーションとか自前で書くのもうやめてほしい
2022/03/31 11:39
S64
スキル低い作り込めない等の前提条件コミなら概ね同意 4は明らかな設計ミスだが前提含むとありがち感 対railsなら同じくf/w活用(nextとか)してapi用いたcsr禁止原則ssrあたりに落ち着かせたら土俵が似てくるだろうか
2022/03/31 11:41
kazokmr
最近Reactとか使い始めたけどStorybookとtesting-libraryでviewを単独で動かして振る舞いテスト出来るのが良い。ただフロントに寄せ過ぎたりバックエンドとの分業が疎になり過ぎても良くなくて、要はバランス
2022/03/31 11:49
dexia2
SIerとかユーザー企業とか業務系システムを作っている会社ならそう思う時はあります
2022/03/31 11:50
getcha
ユーザー側から言うと、開発が高コストな割には、ユーザー体験はむしろ下がってると思う。変に凝った使いにくい Webサイトは必要無いんだよね…
2022/03/31 11:51
masudatarou
そりゃSPAの方がコスト圧倒的に高いよ 3倍位はコスト高い、でも今更SPAじゃないページ作るとかないよねーって感じになってるよね
2022/03/31 11:54
elm200
Next.js でSSR/CSR/API全部記述したことがあるが、なかなか楽しかった。Rails に比べると自力で作り込まないといけないものは多い印象。だた、時間が経つにつれ改善していきそうなものも多いかな。
2022/03/31 11:57
kabuquery
spaはクリーンな感じがしてつまらない
2022/03/31 11:58
t-w-o
「SEO対策が万全ではない(Googleは対応していると言いつつ他は?)」と書かれていますが、実際はGoogle対応も地雷だらけ。「SEO観点が重要な部分を」複雑なSPAで作るのは本当にコスト爆上げするのは確かですね。
2022/03/31 12:02
nannan12
4は設計ミスだよね。ただその設計と実装でコストがかかると言えばその通り。ただ rails で ビューを管理するのと、Next.jsで管理するの、メンテしやすさを考えると後者の方が楽で、長期的に見ると後者の方がいい気がする
2022/03/31 12:05
Andrion
ユーザーにとっては、UIなんてはてな匿名ダイアリーで十分なことが多い。
2022/03/31 12:05
hatahata_chan
スタートアップなら裏側がBaaSのサービスは増えてるんでない?管理系ならMPAでもいいだろし、プロダクトの要件次第では?
2022/03/31 12:06
newnakashima
これだけ読むと反論したい気持ち湧きそうだけどこの人は個人開発でヒットを何個も出してるらしいので(質問箱とか作った人)、そういう人がRailsを好んでるところにRailsの強さみたいなものを感じる
2022/03/31 12:06
jmako
PSAが少し高めに出て心配してる。
2022/03/31 12:07
fai_fx
MPAをベースにして、明らかにユーザビリティが良くなる部分だけSPA的な作りにするのが楽。
2022/03/31 12:10
twainy
コストがかかるのはわかっていても将来引き継ぐとき、他の人が協力してくれるときにdisられるのが嫌だからSPAにせざるを得ない
2022/03/31 12:21
takyam1213
たまにMPAで作られてるやつイジるとき発狂しそうになるくらいにはSPAのが楽なんだよなー。ブラウザバックとかのための作り込み必要なのわかるけどそういうの差し引いてもSPAのが圧倒的に楽よなぁ。人それぞれ。
2022/03/31 12:21
aktkro
ロースキルな人がとりあえずなにかつくるんだったら昔ながらのMVCでつくればいいんじゃないの的な話かな
2022/03/31 12:28
door-s-dev
結局はアプリによるんだろうね。"「viewの書きやすさ」は圧倒的にSPAが上"の部分のメリットが大きいものでSPAを使うのが良い
2022/03/31 12:28
tzk2106
ユニクロとかGAPみたいなアパレルの製造小売り業態の話かと思った……
2022/03/31 12:28
spark7
普通のコンテンツ扱うようなタイプのサービスでSPAだとストレスしかない。アプリケーション然としたやつだけそれでやってくれと思う。「web標準の挙動の実現のしやすさ」
2022/03/31 12:36
tmyk_kym
“正直些細な点ではあるのですが 「思った挙動と違う動きをするストレス」というのは「無駄にページ遷移するオールドなMPA」よりも遥かにコストが高い と個人的には思っています”
2022/03/31 12:39
ockeghem
XSSとかはSPAの方が対策しやすいと思うけど、まだSPAのセキュリティに関するベストプラクティスが知られていないので脆弱性が入りやすいというのはある
2022/03/31 12:40
gabari
デスクトップApp屋さんなので門外漢ではあるが、レイヤーアーキテクチャでさえちゃんとやるのが大変なのでわかり味が深い。
2022/03/31 13:10
habarhaba
雑な定義で外野が騒いで空中戦の論争起きるの何度目?
2022/03/31 13:12
nananashi
最後にプログラミングスクールやオンラインサロンのリンクをつけ忘れているように見えます。
2022/03/31 13:32
atoh
雑誌の話かと思ったら違った。あっちはSPA! だった。
2022/03/31 13:35
dbfireball
SPAは分業できるけど、コミュニケーションコストすごく増える事ない?画面に項目1つ追加するだけでUI側とAPI側、最低2人稼働する羽目になる。
2022/03/31 13:53
buhoho
スタートアップみたいにチームが一枚岩ならモノリシックに作っとけって思う。どうせサービスが当たる頃には作り直し必須だし。バグってるサービスが多いのは事実だしかんたんではないと思う。俺には無理
2022/03/31 14:08
t_yamo
SPAを知る前から自然とSPA風の実装になった身からすると解せぬ。基本アーキテクチャが複雑になるという話なら同意できる。セキュアの所はSPA関係なくて自分はRails出てきた時に同様の事例を多々見て「うぇー」となった。
2022/03/31 14:10
sigwyg
この例はシステム側の事情しか触れてないけど、デザイン側でJSを使う「あるていど複雑なUI」を要求されてるなら、SPAというかフレームワーク使った方が楽っすよ。あとRailsよりReactのほうがフロント人材確保しやすいかと
2022/03/31 14:12
yasu-log
Flash時代からSPA(当時はRIA)を開発していた立場からいえば、技術の正しい理解と実装力を要するので、コストは普通のウェブに比べて高いです
2022/03/31 14:29
outdoor-kanazawa
スパってお風呂の記事かと思って開いちゃったよ。銭湯がどうコスパよいのか、サウナが良いのか、読みたかったわw
2022/03/31 14:49
circled
たまにどのページに飛んでも、ページの下の方にスクロールが固定されちゃってるスクロールバグみたいなのが発生してたりして、記事とか読み難いことこの上なくて、ユーザとしてはクソだなって思うパターンあるよね。
2022/03/31 14:50
NOV1975
だいたい妥当かな。一番良いのは画面はUX重視だけどやってることは大したことない一方でサーバー処理はそれなりにやらなければならない反面APIという形できれいに整理できる、って場合。
2022/03/31 14:57
w1234567
Reactでサーバー通信なしのモックアップを作ってそれベースでAPIやDBの仕様を決めてけばいいのに、Railsベースの開発にとらわれ過ぎて無駄に難しく考え過ぎているような気がする
2022/03/31 15:19
mag4n
コストが高いのは合ってると思う。SPAはフロントで考えることが増える。セキュリティはSNS系でもセキュアなページはサーバーレンダリングしてるし。
2022/03/31 15:34
htnmiki
ユーザの私はアクションに応じてページ遷移してくれたほうがしっくりくるんだよなあ
2022/03/31 15:41
nicht-sein
作るページに寄るんじゃないのかなぁ。コンテンツをアニメーションばりばりさせて魅せるようなサイトだと、Railsでも結局JSばりばり書かなきゃだし、そしたら二重実装になるぐらいならSPAで作っちゃおう、ってなる
2022/03/31 15:50
rryu
MPAで済むようなものをSPAで実装したらコストが高いのは当たり前だが、コストをかけてもMPAでできないことがあるからSPAを選ぶわけで、コストが高いからSPAはやめようというのはまあ色々言われると思う。
2022/03/31 15:50
kobito19
SPAがMPAより難しいのは、単にフロントが状態持つようになるからという理由だけでは。
2022/03/31 15:57
cl-gaku
MPAで黒魔術だらけになるよりもSPAで素直になった肌感
2022/03/31 15:57
GARAPON
わかりみ
2022/03/31 16:11
quality1
アパレルの話じゃなかった
2022/03/31 16:12
c-matt
SPAまわりで使うサービスって新しめのものが多いから英語を苦もなく使うメンバーを集めるっていうコストもかかるよね。コストをかけて得られる見返りを求めてなら問題ないと思うな
2022/03/31 17:05
ys0000
セキュリティリスクはエンジニアの質だとは思うけど。返してはいけないものを返してしまうっていうのはレビューで弾いて欲しい所ではあるけど難しいね。設計不備だからUTじゃ見つけるの厳しいし。
2022/03/31 17:48
dalmacija
新しい話はない
2022/03/31 17:48
boomerangj
慣れや人それぞれというのはありそうだけど、バックエンドの管理ツールはSPAにしないパターンも見てきたので気持ちはわかってしまう。
2022/03/31 18:18
Tomato-360
わかる。が今更ERBに戻る気も起きない
2022/03/31 18:21
daichirata
個人的には規模が小さい時や内向けの奴は MPA の方が考えることが少なくて楽というのはあるけど、next/nuxt も簡単になってるし人によってはそっちの方が楽とかはあるかも。
2022/03/31 18:49
hisamura75
この記事にこれだけブクマがつくほどには、はてブはエンジニア多かったのだな、といまさら。
2022/03/31 18:51
ngmy
フロントエンドしかできないマンが何でもかんでもSPAで作ろうとしたり、サーバーサイドしかできないマンが何でもかんでもMPAで作ろうするからつらいのであって、費用対効果やメンバーのスキル等の制約に基づいて文字数
2022/03/31 18:52
seenoview
SPAが台頭してきたのは、モバイルがメインになったからだと思ってた。サーバからいちいち画面とって来るの大変だから、フロントでどうにかできるように進化せざるを得なかった
2022/03/31 19:50
oktnzm
正直作りたいモノによるのでは?
2022/03/31 19:58
james-ramen
ゲスい雑誌はタダで配っていいという話かと思ってしまった
2022/03/31 20:35
shiromatakumi
情報が少なくて辛いのはあるよなあ。
2022/03/31 20:43
t2y-1979
採用考えたら spa 一択でしょ?
2022/03/31 21:17
sd-craft
え、SPAの方が採用楽なのか?
2022/03/31 21:40
seal2501
初速は確かにMPAの方が速いかも知れない。が、それはアーキテクチャを作っては壊してできる環境の場合で、最初に作ったものを変えることが難しい環境ではトータルで見ると低コストになることもある。
2022/03/31 22:12
pmint
"last_access_ip"ってなんだ…。note.comでIPアドレス流出させた本人か。ユーザーごとにIPアドレス結び付けてどうするんだ。
2022/03/31 22:22
tettekete37564
SPAというかWeb API化におけるアクセス制御(インフラ的・ロジック的・セキュリティ的)とバグの見つけづらさ(=テスト書く量がめちゃめちゃ増える)に対してほんの少しでも理解してる人が自分しか居ないからみんな楽観的
2022/03/31 22:37
kaputte
コメントがおもろい
2022/03/31 23:56
libra_x1
うーん、まともなUX(エラーハンドリング、速度、デザイン、etc)、まともなサーバ(永続化、権限分離)をするには相応のコストがかかるだけという気はする。手抜きの極地は確かにサーバレンダリングの方が低いが
2022/04/02 19:48
tmatsuu
完全に門外漢だがMPAのように毎回リセットされないが故に発生する新たなバグに悩まされる印象。