5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

レコチョクAdvent Calendar 2024

Day 2

君のSPAがもっさりなのは○○のせい

Last updated at Posted at 2024-12-01

この記事は レコチョク Advent Calendar 2024 の2日目の記事となります。

デモ

まずは以下2つのデモサイトをお試しください。

一覧ページと詳細ページを持つ一般的なWebサイトの例ですが、
どちらも意図的に低速なWebサイトを演出しています。

デモサイトA

デモサイトB

どちらがよりストレスでしたか?

デモAは食べ物がクリックされると必要なデータの取得を開始し、取得が完了したら詳細ページへ遷移しています。

デモBは食べ物がクリックされると即座に詳細ページへ遷移し、データの取得が完了したらコンテンツを表示します。

また、詳細ページでのsubmitボタン押下時の挙動も同様です。

どちらも通信にかかる時間は同じですが、操作感には違いがあったのではないでしょうか?

ユーザー操作には即時レスポンスを返そう

デモA

押下から通信完了(2秒)後に画面が反応

ページ 1.1.png

リンク押下から画面の反応までラグがありもっさり感じる

読み込み中であることが分からない

デモB

押下直後に画面が反応

ページ 1.png

リンク押下で即時画面に反応があり押し応え良好

読み込み中であることが認識できる

デモは違いが分かりやすいように通信時間を2秒と極端にしましたが、では速度自体を改善して0.2秒にできたらよいのかというと、それでもやはり遅すぎで、もっさり感じると思います。

ボタン押下への反応としては、通信時間に依存せず次フレームで即時反応を返すのが最も快適です。

また、即時画面を遷移させていたとしても、通信完了まで真っ白な画面で待機させてしまっていては読み込み中であることが伝わりません。

ローディングのインジケーターやスケルトンスクリーンを表示しましょう。

UIはユーザーとのコミュニケーション手段

この例は人間同士のコミュニケーションにも置き換えられます。

Screenshot from 2024-11-09 23-41-01.png

このトナカイ(=Webサイト)は仕事のスピードの改善(パフォーマンスチューニングやスペックアップ)をするよりも先に、まずコミュニケーションのとり方を見直したほうがいいでしょう。

Screenshot from 2024-11-09 22-33-24.png

UIを操作するユーザーの気持ちを想像し、システムとユーザーが適切なコミュニケーションをとれているか考えましょう。

Nuxtユーザーは特に注意

Nuxt製を公言しているWebサイトの挙動を見ると、有名サービスを含めた多くの事例でデモAのようなルーティングになってしまっています。

これはNuxt標準の非同期通信用の関数が、デフォルトでルーティングをブロックする仕様によるものと思います。

これらの関数はLazyオプションを有効にすることによってルーティングがブロックされなくなります。

- useFetch(..)

+ useFetch(.., { lazy: true })
// or
+ useLazyFetch(..)
- useAsyncData(..)

+ useAsyncData(.., { lazy: true })
// or
+ useLazyAsyncData(..)

まとめ

SPAをはじめ、近年のWebサイトは非同期通信を多用します。
その際、以下のポイントに注意しましょう。

ユーザーの操作に対し即時レスポンスを返そう

読み込み中であることを示そう

デザインデータには含まれていない部分だったりすると思いますので、エンジニアが非同期処理の実装の際に気づけるといいんじゃないかと思います。

それでは、お読みいただきありがとうございました。
おわりに今年のクリスマスソングをどうぞ→『Baby Blue (Badfinger)


明日の レコチョク Advent Calendar 2024 は3日目『【iOS】SwiftUIで画面キャプチャからコンテンツを保護する』です。お楽しみに!

5
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?