本当に有意義なエラーメッセージを書くには

想像してください。あなたは今、オフィスにいます。周りとは仕切られた個別スペースです。今週は、近々新たに展開する予定の製品を紹介するために多くの時間を割いてきました。疲れが溜まり、不機嫌ぎみになっています。今はようやく近づいた週末が待ち遠しくて仕方ありません。

しかしその前に、新製品を紹介するホームページがWindows 10で正常に動かくかどうかを試してみなければなりません。あなたは問題ないはずだと信じています。あなたが信頼を寄せているMacには、Windowsを問題なく実行できるソフトもインストールされています。

ソフトを起動してみると、丁寧にもWindowsがポップアップ通知で可能なアップデートがあることを知らせてくれます。もちろんアップデートを開始するため、あなたは了承します。

すると、こんなものを目にするのです。


訳:何かが発生しました。

何かが発生。

新製品の準備のため期限が迫っているという場合でなければ、まあまあ楽しむこともできるかもしれません。

そう、例えば、ストレス発散とばかりに、このスクリーンショットを世界中の人たち、あるいは少なくともTwitter上の人たちと共有してみるのです。

ちょっとワクワクしながら、Mac向けTwitterクライアントにスクリーンショットをドラッグし、Tweetボタンをタップします。すると、こんなことが起こるのです。


訳:
メッセージの投稿にエラーが発生しました。
メディアIDの検証に失敗しました。
[サポート][OK]

煩わしいメディアIDなるものがまた出てきました。

よく考えもせず適当に仕事を片付けたプログラマやデザイナーのせいで、世界中に同じ苦痛を味わっている人がいるという世界苦について深く思考を巡らせた後、ようやく正気に戻り、あなたは思うでしょう。美味しい料理でも食べれば、気も休まるだろうと。

素晴らしい計画ですね。何百万ドルもの資金を援助しているベンチャーキャピタルや、口ひげを生やした多くの人たち、すなわちテクノ音楽をかけながらおしゃれなサンフランシスコのロフトオフィスで青春時代の最高の時間を過ごしている、流行に敏感なヒップスターたちのおかげです。ブリトーのデリバリーでも注文しましょうか。

早速注文といきたいところですが、その前に重要な哲学の質問にお答えしましょう。デリバリーのオンデマンド・サービスを提供しているPostmatesが、何の前触れもなしに突然提示する以下の質問です。


訳:大丈夫ですか?

私は“いいえ”をタップしました。本当に、大丈夫じゃないですから。

本当に有意義なエラーメッセージやダイアログとは

先週、実際に私の身に起きた出来事をドラマ仕立てでお話ししたので、本当に有意義なエラーメッセージとはどうあるべきなのかを見ていきましょう。

まずは、もっとよく考えないといけない人たちが、この点をどう考えているのかについて見てみます。Appleは、ユーザインターフェースのデザインにおいて長年にわたり最前線に立ってきました。それが最近ではどうも手を抜くようになってきました(もはや誰もデザイナーに注目していません)。それなのに、彼らに言わせれば、良い仕事をしているのだそうです。

以下は、Mac OS Xヒューマンインターフェースガイドラインから、アラートに関する記載を一部抜粋したものです。


注釈:
(ウィンドウタイトルなし)
メッセージのテキスト:“確実にゴミ箱を空にする”を使用すると、“ゴミ箱”にある項目が完全に消去されます。完全に消去してもよろしいですか?
参考情報:“確実にゴミ箱を空にする”を選択すると、Time Machineまたはその他のバックアップ・プログラムを使用してバックアップを作成していない場合には、項目を復旧できません。

警告が必要となった状況を明確かつ簡潔に説明したアラートメッセージを書く。“エラーが発生しました”のようなアラートメッセージでは、誰が見ても分かりにくいばかりでなく、経験のあるユーザほど混乱させることになる。(中略)結論を詳しく説明する参考情報のテキストを書き、解決策や代替案を提示する。ユーザがその状況に対処しなければならない理由を説明するために必要とされる十分な情報を提示する。(中略)参考情報のテキストには問題を解決するための提案が含まれているとベスト。(中略)一貫してユーザに分かる言葉で表現すること。アラートが出るだけでもユーザを非常に動揺させるため、アラートは不可解であったり、難解な言葉を使ったりすることは特に避けるべき。(中略)デフォルトのボタンとして“O K”を使わない方が良い。“O K”の意味は、ユーザが何かをすることについて、“しても良いかどうか”を尋ねるアラートであったとしても明確なものではないことがある。例えば、OKは“OK、アクションを完了したい”なのか、“OK、私の操作によって起きた良くない事態を今理解した”なのか、どちらでしょうか?

さあ、何か分かりかけてきた感じですね。まったく、まさに彼らは専門用語や表現に関しても有意義なルールを定めているのです。

アプリケーションのアイコンやイメージを作り上げる際にはプロのグラフィカルデザイナーと一緒に取り組むことがベストな方法であるのと同じように、あなたが作成中のアプリケーションでもユーザが目にするテキストを決定する際にはプロのライターと一緒に取り組むことがベストなのです。

プロダクトマネージャー、デザイナー、あるいはアプリケーションのデベロッパとしての仕事はまず、アプリケーション内のコピーを書くということは、本職ではないあなたが手を出していいシロモノではないということを認識することです。それは、アプリケーションが正常に動き、ユーザインターフェースが使いやすく、効率的なものになっているということと同じくらい重要です。


訳:XMLデータの取得に問題が発生しました:未定義です。
完璧な人はいません。しかし、少なくとも彼らはこうした点に多くの時間を費やしており、それは高く評価されています。

問題がある典型的なメッセージ

では、実際に使われているエラーメッセージをいくつか見て、問題がないか検証してみましょう。


訳:
電話アップデート
アップデート状態
現在アップデートの確認はできません。(80072f8f)
[アップデートを確認]

おお、Windows Phoneよ、申し訳ないけど、“現在アップデートの確認はできません”と言いますか。これは問題ですね。現在、アップデートの確認ができない理由は何でしょうか? また、ユーザーはこれに対して何ができるでしょう?

この問題の場合、答えは以下の通りです。:電話の内蔵時計が正しい日にちに設定されておらず、アップデートサーバにあるSSL証明書が認証されていないために、表示されます。ですから、電話の内蔵時計をセットすれば、全て解決します。

ということで、このような場合のエラーメッセージは以下のようであるべきです。”セキュリティ上の問題で、アップデートが可能か確認できません。このような場合、電話の時計の時間か日にちが正しくない可能性があります。電話の時間と日にちの設定を確認してからもう一度試してください!”もしくは、もっと親切な方法としては、OSが自動的に時間と日にちを設定するようにしておくことです。


訳:位置情報を使って、ChromeでのGoogle体験をより良くしましょう。。
[あとで][OK]

Googleよ、そんなことを気にする人がいると真面目に思うのか? なぜこんなアラート(このメッセージは、iOSのデフォルトのロケーションの権限アラートではないことはご了承ください)を出し、ユーザがやってること(君のブラウザを使ってる)を引き止めなきゃいけないんだ? これが許されるわけないですよね。このメッセージを出すのがいいアイデアだと誰が思うでしょうか。

現在地を通知する設定をオンにしたいかどうか尋ねるのは、何の問題もありません。検索エンジンがそれを求めるのは当然のことでしょう。しかし、ユーザが即座に決断を下す必要があるような重大な問題を表示するためにある、OSレベルのメカニズムを使うべきところではありません。


訳:
ESCキーは、内容の確定に設定しますか、それともキャンセルに設定しますか?
この選択は、[設定]>[タイプ]で、のちに変更することもできます。

いや、いや、いや。なぜ、他の99パーセントのソフトウェアでは当然のようにデフォルト設定となっていること(キャンセル)に対して、ユーザにモーダルなアラートで選択させる必要があるのでしょうか。

確かに、Adobeソフトウェアで、デフォルトで”ESC”を変更の確定に設定しているものはいくつかあります。しかし、だとしても別の場所でも設定はできます。パソコン上級者ならこのメッセージにイライラするでしょうが、すぐになんのことか分かるでしょう。モーダルなアラートを使わない別の解決方法としては、キャンセルすることをデフォルトにしておくことです。しかし、こんなバーが小さくウィンドウの下に表示されます。“本当にESCキーを確定に設定しますか? 確定をデフォルトとし、キャンセルをアンドゥにする設定はこちらをクリックして行ってください。”と。これはモーダルなアラートである必要はありません。

もっとデフォルトに対して意思を持ってくれ、Adobeよ。ユーザーは理解してくれるはずだ。

最も重要な教訓:最善のエラーメッセージとは表示されないものである

これまで挙げてきた例では、エラーを表示すること自体を回避することができたはずです。Windows10の設定に関して私は全部知っているわけではありませんが、Windows10自身も自分のことをきちんと理解しているようには思えません。

  • Twitterのエラーの場合、ツイートに画像を添付する際にどんな問題が発生したかを説明しています。でもその時、問題を修正して、それでいいかを確認してくれた方がより良いでしょう。実は私は少し意地悪なことをしていて、Twitterには画像の大きさに制限があるにも関わらず、私が添付していたのは高画質(10000px幅)のイメージでした。でも、なぜアップロードする前に教えてくれなかったんだ? なぜクライアント側で制限内にサイズを調整してくれなかったんだ? サイズを調整すれば、出すメッセージはモーダルではなくてもよかったのに。例えば、”ツイートに添付できるようにサイズを調整しました”とか言えば良かったのに。

  • Postmatesのアラート:それが何についてのことなのか言わないのなら、表示するほど重要なことではありません。アラートに対して”No”を選択したのに何も起こらなかったのです。

  • Windows Phoneのアップデートメッセージ:OSに、時間と日にちを自動的に設定するようにさせてください。Windows Phoneよ、君は知らないのか、君は携帯電話のネットワークとインターネットにつながってるんだよ。これ(NTP)をやるこの技術は30年以上前からあるんだから

  • Google Chromeは少しスパイ行為が激しすぎます:真面目な話、検索結果などを上部のバナーに表示しています。Google Chromeよ、そんなに必死に私たちのプライベートを侵害しなくてもいいんじゃないのか。

  • Photoshop:正気なデフォルト設定で出荷してください。Photoshopよ、君はカスタマイズオプションのことはアンドゥできるバナー*や、もしくはチュートリアルを使って知らせたほうがいいんじゃないか。

アンドゥできるバナーのいい例は、Gmailの”送信をUndoしますか?”というバナーです。これはEメールを送信した後に表示されます。これは以下のようなモーダルなアラートよりもだいぶマシです。”本当にこのメールを送信しますか?”

読者のみなさんがきっと欲しがるだとうと思って、印刷してパーティションの壁に張れるようなちょっとしたチェックリストを作りました。アプリケーションにアラートを追加する時などに読んでみてください。:

エラーメッセージを書く時に重要な3つのこと

  1. 高価な付加商品を売りつけたり、余計な情報を表示するためにアラートを悪用しないでください。重要なメッセージでないと、ユーザは読みません。

  2. メッセージの内容を表示した瞬間にユーザにそれが届いていると思いこまないでください。もしかしたら、アプリを切り替えてしまって、そのメッセージを何日も後に見る可能性もあります。いつ見ても理解ができるように十分な情報を入れ込んでください。

  3. 専門用語を使わず、脅すような言葉使いもやめて、フレンドリーなトーンの文章にしましょう。

要約:素人でも理解できる、すぐに実行可能なエラーメッセージを書きましょう。*

作ったメッセージが本当にそうなっているか自信がないですか? だったら、技術者ではない人にそれを見せて、その人にメッセージの中身を説明してもらうようにお願いしてみてください。


訳:
おや?エラーが発生してこの記事を公開することができません。

Mediumよ、君ももっといい書き方があるだろう!