SPAである価値

以前、少し前だが、以下のブログを読んで、SPAであるべき価値について考えたことを述べる。

anond.hatelabo.jp

mizchi.hatenablog.com

そもそもSPAとは?

この議論をする前に、そもそもSPAとは何だろうか?という点について整理しておこう。僕は2つの点で特徴があると思っていて、

  • フロントエンドGUIであること
  • Webアプリケーションであること

この2点かなと思う、簡単にまとめると、

フロントエンドGUIであること

まずは、「フロントエンドGUI」というのはどういうことかと言えば、サーバーサイドレンダリングとは対照に、jsによるDOM操作によって、UIを切り替えて行って構成するGUIを指す。

Webアプリケーションであること

GUIではあるのだが、それは、Webアプリケーションでもある。サーバーからAjaxやwebsocketなどによって、サーバとデータのやりとりをする。

ここいらの話は、思う所が結構あって、たとえば、webの技術と、GUIの技術が交わっていることによって、コミュニケーションがおかしくなったりとか、そういうことがある感じがしたりしているとか。まぁ、これは話が外れる。さて、SPA の価値について考えてみよう。

SPAの価値

先程のエントリから、幾つか、抜粋、引用する。

まずこれ。正直そんなにたくさん動的にがりがり書き換えているページをあんまり見ない気がするんですよね。その上正直そういうウェブページ、あったとしても大体使いづらいです。 世の中のページが全部FBならいいのかもしれませんが、具体的にはどんなところで使ってるんでしょう。業務ページとかですか?あと、なぜSPAにしなければいけないのかもよくわからないです。画面遷移するのだめなの?という感じで。 (http://anond.hatelabo.jp/20160521163144 より引用)

この点について、mizchiさんも、いくつかアンサーを出していたが、この点を僕なりにまとめたいと思う。(これが、本ブログの趣旨である。)

まず結論から言えば、「ちゃんとしたwebアプリケーションのUIを考えたら、SPAにならざるを得ないということが多い」ということである。順番に言って行こう。

SPAと「使いにくさ」

SPAと「使いにくさ」は関係がない。

まず、言いたいことは,SPAであることと「使いにくさ」は関係がないということである。一般に使いにくい、UIの原因は、「そもそも操作が複雑であること」と「UI設計が糞」であるかどちらかである。

そもそも操作が複雑であること、これが挙げられると思う。つまりアプリケーションが本質的に難しいのだ。toBのアプリケーションやら、ギョームのアプリケーションでは、仕方無い面があるとは思う。特殊なパターンに対応しないといかん場合が多いからね。一方、一般の人達が使うのを想定するtoCで、本質的に難しいアプリケーションを作る奴は、大抵、UXとかビジネスとサービスの根本から考えなおせクソ野郎である。

UI設計が糞というのは結構多いと思う。というのも、根本的にUIを設計ができるデザイナ、エンジニアがいないってのが問題としてあると思う。たぶん、UIの設計をやる人達は、Webデザイナだとかが多いのだが、Webページを作るデザインと、GUIを作るデザインは異なるのであり、おそらくだが、GUIのインタラクションについて考えられてないとか、そもそもユーザを定義して、ちゃんとUIを設計できるってスキルが無い人達が多いと思う。SPAの自由さを活かして、よりよいユーザのためのUIデザインができるデザイナはなかなかいないのである。

多くのSPAの場合、SPAのその表現の自由さの影響で、糞UIが生まれてくることも多い。自由すぎるのだSPAは。その結果、その自由さによって、良いUIであろうが糞UIであろうが、自由にUIを作ることができるのであり、その結果、UIデザイン、さらには、フロントエンドの技術的な設計まで複雑さをもたらしているということである。ゲームのインターフェースが素晴しいとか、ゲームの体験がすばらしいからといって、マイクロインタラクションやら、アニメーションを一杯入れて、独自の世界観を作り出し、結果糞が生まれてくる、など良く聞く気がする。

SPAが「使いやすくなる」こともある

一方で、SPAは使いやすくなることがある。一つの「使いやすさ」の指標として「ユーザのタスク時間」を考える時があるが、SPAを使う事によって、タスク時間を短くすることがある。というのも、サーバーサイドレンダリングで、一々ネットワーク越しに、通信して、Webアプリケーションを使うというのは、「遅い」のであり、SPAにすることによって、解決することがある。つまり、SPAにすることによって、ユーザとコンピュータの応答を素早くする効果がある。

もちろん、「タスクの時間」は、他の事、たとえば、画面のレイアウトだとか、ページの情報の設計だとか、その他にも影響するのだが、ユーザとコンピュータの応答を素早くするは一つの方法としてあるだろう。つまり、有効なことではないが、ある程度SPAにすることによって改善することもある。また、ページ遷移履歴の管理をスッキリさせることによって、無駄な戻るとか、進むを無くしたりして、「使いやすく」なるということも考えられる。

つまり、SPAは自由な表現とさっき言ったのだが、もちろん、ちゃんとユーザ調査、定義をして、UI設計をすることによって、より「使いやすい」ものを提供することができるようになるということもある。

ちゃんとした、まともなwebGUIを作るためのSPA

結局のところ、まともなwebのGUIを作るために、SPAであるべき(ことが多い)ということです。SPAは種々の、UIデザインの問題や、フロントエンドのGUIの技術的な設計が、難しくなることが多いが、一方で、使いやすい、よりまともな、GUIを提供できるというのが、SPAである価値であると思う。ユーザにとって需要が無いということであるのではなくて、それこそ、ユーザが気づかない潜在的なニーズに答えるというのができる可能性があるということである。

追記、誤字、脱字について

当エントリじゃなくても僕のブログは基本的に僕の考えや行動の記録でありメモであり、推敲やら見直しやらは基本的にしないで公開している。ただし、指摘があったら修正する。あとときどきたまに直したりする。「誤字が多い」とか愚痴をコメントで言うぐらいだったら、指摘した方が建設的ですよ。

自分が書いた文章なので、自分が読みやすいというのは当たり前で、人が読みにくいなんてこと結構あることを分かって頂きたい。人に読ませる文章であれば、他の数名にレビューして貰ったりするのだが、こういうブログではその負担はキツい。だから、悪いというのをただ言うのではなく、どこが悪いのか、そしてどう直すべきかというのを指摘すると、それは直すのでそのような指摘を頂けると助かるのである。

追記2

id:nurehaさんの指摘頂き、ありがとうございます。やっぱり、こういう誤字や脱字は書いた本人は全然気づかないものです。