徹夜した翌日だったり、夜にうまく眠れない日が続いたり、二日酔いだったりすると、昼間に眠くなってウトウトしてしまうことがあります。
そういうときは横になって少し休んだ方が間違いなくいい。けれどもそういう判断ができないのも眠さによるものなのか「これは今やらなければならないんだ」なんて言いながら頑張ってしまったりします。
そして、パソコンで作業をしながら、あるときガクッと、完全に眠りに落ちてしまう一瞬があります。 頭がまさにガクッと落ちるかのように動き、その衝撃でハッと目を覚まします。すると目の前には、眠いなりに頑張ろうとしていた形跡が残っています。
ガクッと眠りに落ちたせいなのか、さっきまでよりもしっかり目が醒めています。 しかし、眠い中で作業した、最後の3分くらいの記憶がかなり曖昧です。 目の前には、眠りに落ちる前に最後にやっていた作業の画面が表示されています。
ユーザーは集中できないかもしれない
最近、WebサービスのUIデザインをしていくなかで、「ユーザーの集中や記憶が途切れたときに、画面に表示されてる情報を頼りに作業を再開できるだろうか」と考えることがよくあります。 大きめの手続きをするような場面だと特に、それが難しそうな画面になってしまっていることがあります。
そういう手続きでは、ユーザーは全神経を自分たちのサービスに向け続けてくれている前提を、作り手は暗黙に置いてしまいがちなのかもしれません。 長大で複雑な手続きでも、画面遷移図の上では左から右、上から下へ辿るだけで終わってしまいます。 特に「離脱率」を重要な指標とすると「いかに自分たちの画面で気を逸らさずに最後のボタンを押してもらうか」を強く意識することになり、サービス外の要因で気が逸れてしまう可能性に気付きづらいかもしれません。
しかし上に書いたように、ユーザーは眠いなかで作業していることがあります。 ハッと目を醒ましたとき、眠いなかで何をやっていたのかわからないUIだと困ってしまうはずです。
眠いのは自己責任と思うかもしれませんが、同僚に声をかけられるかもしれないし、急な来客で呼び出されるかもしれません。 台所で鍋が吹きこぼれるかもしれないし、子供やペットが何かをしでかすかもしれません。 ユーザーは常に、パソコンの前を離れたりスマホを放り出したりせざるを得ない状況になり得ます。
そして戻ってきたときには、多かれ少なかれ、さっき操作していたときのことを忘れてしまっています。
いきなり画面を見ても操作できるようにする
ハッと目を醒ましたとき、あるいは急に来た客の話をどうにか終わらせて、猫がいきなり吐いたものを掃除して戻ってきたとき、画面に表示されているもののことを考えてみます。 作業の途中だったことはハッキリと覚えていますが、何の作業をしていたのかや、その作業の詳細まではちょっと記憶が曖昧です。
- 何のWebサービス、あるいはアプリケーションを使っていたのかは、ロゴやアイコンが表示されていればわかりやすいでしょう。
- 何の画面だったかは、見出しや画面タイトルだったり、ナビゲーションに現在見ている画面が示されていないとわからないかもしれません。
- そこで何をしようとしていたかは、たとえばそれまでの画面の入力内容の要約が画面に表示されていれば、思い出したり続きを操作したりしやすいでしょう
このあたりは、いろんなWebサービスやアプリケーションがあるので、一般化して「こうすればOK」を説明できるものではありません。 ユーザーも上に書いたような順序で必ず確認していくわけではないでしょう。
ただ、どんなWebサービスやアプリケーションであっても「突然意識が飛んでも、操作を再開できるか」というのは、画面が充分な情報を提示できているかのわかりやすい目安になのではないかと思います。
ユーザーをステートレスにする
これは、少しややこしい言い方をすると「ユーザーをステートレスにする」ということかもしれません。
「ステートレス」は、Web自体の通信のプロトコルや、Web APIの設計で頻出する言葉です。 ここでいう「ステート」は一時的な状態のことで、ステートレスに設計されたWeb APIのURLは、繰り返し同じリクエストをすると、毎回同じレスポンスをします。 つまりレスポンスを生成するのに必要な情報は、すべてリクエストに含める必要があります。 サーバーから見るとクライアントのステートを気にせず応答できるので、サーバーの実装をシンプルにできる利点があります。
それと同じことを、ユーザーに対してもあてはめるイメージを持っています。 ユーザーをステートレスなサーバーに見立て、UIはユーザーに対して画面に表示して提示する情報というかたちで、ユーザーに操作という形でのスポンスをリクエストしています。 ユーザーはそこに文字を入力したりクリックしたりする形でレスポンスします。 ユーザーは機械ではないので、前の画面の情報を何も言われてなくても覚えていられます。 そして、リクエストとして提示される情報が不十分でも記憶を頼りにレスポンスすることができます。 この状態は、UIがユーザーに対して暗黙的にステートフルであることを要求してしまっていると言えるのではないでしょうか。
Web APIの実装でステートレスな設計をとることでサーバーの実装がシンプルになった実感を持っているので、ユーザーにステートフルを要求してしまうのはユーザーのためにはならないように思えてしまいます。
ユーザーにステートフルであることを要求するUIでも、多くの場合は困らないでしょう。 実際にユーザーに使ってもらうテストをしても、問題なく使えてしまうはずです。 そういう場面では居眠りをしたり宅配便に呼び出されたり子供が大泣きしたりはしないはずなので。
しかし、意外と多くのユーザーに負担を強いてしまっていて、しかもユーザーも気付かぬうちに受け入れてしまっているのではないでしょうか。それで良いとは、あまり思えません。