Snippets

対抗して作ってみた。

エラーメッセージとメンタルモデル

メンタルモデルとは

ユーザが心のなかに描くモデル。単純に押せば動くとかそういうものの積み重ねでできているようなもの。

メンタルモデルの重要性を解く例として、エアコンでいかに速く部屋を冷やすか、という問題がある。

エアコンの温度調整は単に出力の強弱を制御するもの、というモデルを持っている場合、速く冷やすためにとにかく温度調整を低くすることになりがち。実際うちの嫁はそうする。

しかし正しいモデルを持っていれば、つまり温度調整はサーモスタットなりの温度センサと連携して、スイッチをオン・オフするだけだとわかれば、温度調整を低くしたって速く冷えるわけではないのはわかる。逆に冷えすぎるという弊害がある。

正しいモデルを持っていれば、単純な用途 (部屋の温度を最終的には快適に保つ) 以外の場合でも応用が効く、というわけだ。

エラーメッセージ

エラーのときの動作というのは、その典型に見える。ここから卑近な例になって Androidなどのスマフォで動くアプリケーションを考えよう。

たとえば、よくあるアプリは、ネットワークから最新データを取得して、キャッシュを更新して、それでユーザに提示する。しかし、ネットワークからのデータの取得に失敗した場合、どうするべきだろう?

そんなに新鮮さが必要が無いアプリだったらキャッシュを表示するだけで充分かもしれない。でもそんなときに「最新データの取得にしました」と表示していいのかしらん? ユーザは、このままアプリを使い続けていいのか心配になるかもしれない。関係ないエラーまで、ネットワークエラーのせいにされるかもしれない。人間の因果関係の推測なんて偽陽性だらけだ。

自分としての理想としては、アプリは適切なメンタルモデルを提示して伝え、それに基づいた症状をうまく示してやれば、ユーザもワークアラウンドの指針も立って双方ハッピーなのではないか、ということだった。

メンタルモデルを伝えられる?

といったところで、適切なメンタルモデルなんてあるのだろうか、というのが今の疑問。というか、自分の答えは出てて万人に適切なのなんてない。

ユーザといってもいろいろいて、スマフォ触り始めたおじいさんから、スマフォしか使ったことがない十代、簡単なコードは書けるプログラマとかいろいろある。そこらに共通なメンタルモデルを作るなんて傲慢じゃないか。まあ、実際はメジャーなユーザに向ければいいのかもしれないけど、うちのターゲットである高校生だってリテラシーには随分差がある。

それに、あまりに内部実装によったメンタルモデルだと、内部実装の変更の邪魔にもなる。予めキャッシュしておいたほうが多くの場合スムーズに動くのに、メンタルモデル的にはそこでデータをロードするなんてありえないみたいな。

というわけで、今となっては安定性をとにかく増して、最低限サポートに必要な情報だけをユーザに表示して、CSにお願いするしかない、という理解になりつつある。まあ、CSとのチャネル、フローはまだまだ改善の余地があるので、そっちに頑張ったほうがいいかなと。

以上、30分で書いた愚痴でした。