63-ユーザの操作ミスを防止する

プログラマが知るべき97のこと」の63個目のエピソードは、ユーザビリティに関する話です。残念な事ですが、画面デザインに関して自分の仕事ではないと考えているプログラマは少なくありません。勿論、すべての分野のプログラマに必要なスキルではないかと思いますが、ユーザビリティを考慮したインターフェイスを設計する事はプログラマに求められるスキルの1つです。アイコンや画像を描くようなデザイナの仕事と考えてはいけません。情報の入力フォームであれば、入力値の妥当性のチェックはプログラマの仕事です。ユーザの操作が迷わないように誘導したり、不正な操作をすることを防止する手を打つのもプログラマの仕事です。論理的に考えた上で最適な形を提供する必要があります*1
このエピソードでは、そんなユーザビリティに関する内容で特にエラーチェックに関する事が書かれています。

「入力して欲しいのはあくまで情報であり、データではない」ということを考慮すべきでしょう。

この言葉はきのこ本の中でも、最も衝撃を受けた言葉の1つです。自分もユーザビリティに関しては拘りが強く、重要性も説く機会が多いのですが、説得するのは難しいと感じていました。ユーザビリティを高くすることでユーザの満足度が高くなることは確かなのですが、プログラマが意識する必要があるのか?という点は説明しにくい部分です。しかし、この言葉は一言でそれを説明しています。我々プログラマが必要としているのはデータです。仕様としては入力データの妥当性をチェックする必要があります。これについては反論はないでしょう。ですが、業務アプリケーションであってもたいていの場合、ユーザはデータを入力していないのです。それは情報であり、ソフトウェアとは情報をデータとして処理するツールなのです。したがって、ユーザの情報を的確にデータに変換する事は大きな価値があるわけです。ユーザにデータを求めていると、入力フォーマットなどをガチガチに堅めがちですが、情報を求めているならば違う価値観で入力インターフェイスを設計できるかと思います。

しかし、文章で長々と説明されても理解は難しいものです。実際に使ってみなければわからないこともあります。

ユーザビリティを意識する場合に重要な事です。紙芝居では解らない操作感覚を伝えるには、実際に動くモックアップを作る必要があります。どれだけ完璧に画面遷移図と画面項目定義を書いたとしても、動かしてみなければ違和感を感じることができません。また、実際にエンドユーザに使って貰い、感想をフィードバックしてもらう事が重要です。プログラマが自分のために作っているわけではありません。使うのはユーザです。

その原因に関係なく、システムはユーザの操作ミスに対し寛容であるべきです。

なんでもエラーにしてしまうシステムにイライラしたことは誰でもあるでしょう。どうして、入力に半角数字を強制する必要があるのでしょうか?漢数字を変換する必要はないかと思いますが、全角数値を半角数字に変換するプログラムと全角数字をエラーとするプログラムで大きく実装コストが変わるとは思えません。同じコストをかけるならば、よりユーザに優しい仕様を心がけることで、ソフトウェアとプログラマの価値は大きくなるのです。

どういう種類のシステムであっても、ユーザのミスには一定の傾向があるものです。多くの場合、ミスはユーザとソフトウェアがお互いを誤解した結果として生じるのです。そうしたミスを防ぐには、ユーザがデータを入力する際、どのように考え、情報をどのように解釈し、どのように判断を下しているかを知ることが重要なのです。

プログラマは常にユーザの視点でソフトウェアを評価する必要があります。自分が使って使いにくいと思ったり、訳がわからないようなソフトウェアを作っているならば心が痛むはずです。プログラマはソフトウェアをリリースすることで対価を得ます。対価を得る以上はソフトウェアに価値がある必要があるのです。
自分も言われたままの使いにくいソフトウェアを作る事を求められる職場を何度も経験してきました。矛盾があろうとも上司・元請けの言う仕様は絶対であり、その通りに作る事で対価を貰う仕事だったのです。自分はそんな開発は二度としたくありません。

エラーメッセージは、ユーザとシステムの間の重要なコミュニケーション手段です。エラーメッセージが出るのは,ユーザとシステムの間のコミュニケーションに危機が生じている時である、とも言えます。

この言葉はしっかりと胸に刻んでいこうと思います。

デザイニング・インターフェース ―パターンによる実践的インタラクションデザイン

デザイニング・インターフェース ―パターンによる実践的インタラクションデザイン

プログラマが知るべき97のこと

プログラマが知るべき97のこと

*1:一方でウェブデザイナのようなデザインの専門家もまたユーザビビりティを意識した論理的な画面構成を造る必要もある