3 ポイント 投稿者 GN⁺ 2024-02-13 | 1件のコメント | WhatsAppで共有
  • Play/Pause のような 即時に実行されるアクション と、Shuffle のような 維持される設定 を同じトグルで扱うと、ユーザーは現在の状態と次の動作を混同しやすい
  • About Face 2.0 は、2つの選択肢を1つのコントロールに詰め込む flip-flop button を避けるよう勧めており、スペース節約よりも現在の状態を伝えることのほうが重要だと見ている
  • 解決策は、Switch to portrait mode のように 動作を動詞句で書く か、ラジオボタン・チェックボックス・状態ラベル+アクションボタンのように状態と切り替えを分離する方向に近い
  • iOS 風のスイッチのようにテキストがボタン内にあると、ON が現在の状態なのか次の状態なのか曖昧になりうるが、OS X や Windows Metro のように 状態テキストをボタンの外に置く と曖昧さは減る
  • Play/Pause の慣例は例外的に次のアクションを示せるが、Shuffle・Like・Auto save のようなオプションは現在の状態を強調し、ツールチップ・色・押下状態・別ラベルで補うほうが安全である

状態表示とアクション表示の衝突

  • Play/Pause、Shuffle/Regular Play のように2つの状態を行き来するボタンでは、現在の状態 を見せるのか、クリック後に変わる 遷移先の状態 を見せるのかが中心的な争点となる
  • Play/Pause は、ユーザーが「再生開始」または「一時停止」というアクションとして受け取りやすく、停止中には Play、再生中には Pause を表示する慣例が定着している
  • Shuffle/Regular Play は再生方式というオプション状態に近いため、切り替え先の状態を表示すると、現在シャッフルなのか順次再生なのかが分かりにくくなることがある
  • Xbox 360 内蔵ミュージックプレーヤーは、シャッフルモードのときに通常再生アイコンを表示し、その逆でも逆向きに表示して混乱を招いた事例として扱われている

About Face の勧告: flip-flop button を避ける

  • About Face 2.0 は、この種のUIを「避けるべき選択イディオム」である flip-flop button に分類している
  • 1つのボタンが2つの相互排他的なオプションを制御すると、スペースは節約できるが、コントロールの第二の責務である 現在の状態の伝達 を満たしにくい
  • ボタンに ON と表示されているとき実際にはオフなら設定状態が不明瞭になり、オフ状態で OFF と表示されていても ON ボタンがどこにあるのか分かりにくくなることがある
  • 推奨される解決策は2つある
    • ボタンのアクションを Switch to portrait mode のような動詞句で明示する
    • 2つのラジオボタンのように状態選択が見える別のUI手法を使う

アクションボタンと状態ボタンを区別する

  • action buttonstate button は別の考え方で設計すべきである
    • Play/Pause のようなアクションなら、クリックしたときに起こることを示す
    • Shuffle/Linear のようなオプションなら、現在の状態を示す
  • アイコンのみの Shuffle ボタンであれば、シャッフルアイコン自体は固定し、状態に応じて 有効/無効 に見せる方法が適している
    • オンの状態では明るくする、または押し込まれたボタンのように見せる
    • オフの状態では順次再生であることがすぐ分かる必要がある
    • hover が使える環境では、ツールチップを追加してさらに明確にできる
  • Play/Pause についても、ラベルを切り替えず Play ボタンを押下状態で見せれば混乱を減らせるという意見がある

ボタン内テキストが生む曖昧さ

  • ONOFF は英語では状態としても切り替え動作としても読めるため、ボタン内に置くと 状態なのか命令なのか が曖昧になりやすい
  • より明確な語の組み合わせとして、次の表現が提案されている
    • Enable / Disable
    • Enabled / Disabled
    • Start / Stop
    • Running / Stopped
  • ただし、単語選びだけで問題が完全に解消されるわけではない
    • ユーザーはボタンテキストが状態なのか命令なのかを依然として判断しなければならない場合がある
    • EnableEnabled の違いは、UIの中では十分に明確でないことがある

ボタン外ラベルと状態+アクションの分離

  • ボタン自体にテキストを入れず、ボタンの外にテキスト を配置すると、現在の状態と切り替え可能な状態を同時に示せる
  • OS X 風のスイッチは、ボタン自体が ONOFF と語らず、スイッチ周辺のテキストが状態を表すため、「このボタンは現在の状態なのか、次のアクションなのか」という疑問を減らせる
  • Windows Metro UI の方式では、ボタンの色で現在の状態を示し、オプションテキストの下にある On/Off 表記で現在の状態を再確認させる
  • Online [Go offline] のように 状態ラベル + アクションボタン を分ける方法もある
    • Online はクリックできない現在状態のラベルである
    • Go offline はクリック可能な切り替えアクションである
    • クリック後は Offline [Go online] に変わる
  • この方式はラジオボタンよりコンパクトでありながら、状態とアクションの視覚的な役割を分離できる

チェックボックス、ラジオボタン、押下状態

  • Shuffle のようなオプションは、Shuffle ラベル付きの チェックボックス で表すと混乱が減る
  • 単一の語を使い、チェック状態で有効・無効を示せば、複数語の意味関係を解釈する負担を減らせる
  • 否定接頭辞付きの表現は避けたほうがよい
    • Not, Non-, Un-, Dis-, Im-, Mis-, In-, Il-, Ir- のような接頭辞は、未チェック状態と組み合わさると二重否定のように読まれうる
  • Facebook Android アプリの Like ボタンは、オフのときはグレー、オンのときは青で強調される例である
    • ただし、色だけでは色覚特性のあるユーザーには十分でない場合がある

実際のUI事例と注意点

  • Spotify Web アプリの Shuffle ボタンのように、オフのときは中立色、オンのときは強調色を使う折衷案がある
  • Twitter 風の hover 切り替えは、通常時に現在状態を見せ、マウスオーバー時にアクションを見せる方式である
    • hover がある環境では機能しうるが、タッチスクリーンでは同じ方法が成り立たないことがある
  • iOS 風のスイッチは、両方の状態を1つのコントロール内に見せるが、ON が現在状態なのか押すと変わる状態なのか曖昧だという批判もある
  • Discord の設定UIは、現在状態と将来状態をより明確にしたチェックボックス型トグルの例である
  • Evernote の mouseover トグルや、航空機トイレのようなハンドルスイッチのように、状態と操作可能性が同時に伝わる例もある

設計原則

  • 1つのコントロールが 状態の伝達アクションの伝達 を同時に担うと、曖昧さが生じる
  • 現在の状態は、どのような形であれ必ず伝えなければならない
    • Play/Pause は音楽が流れている、時間が進んでいるといった外部フィードバックで現在状態を補える
    • Shuffle は次の曲が実際にどう選ばれるかを見るまで状態が分かりにくいため、ボタン自体の状態表示がより重要になる
  • 単一ボタンで複数状態を循環させる方式は、UIを圧縮し相互排他的な設定をまとめられるが、ユーザーが現在状態を素早く把握できる必要がある
  • Play/Pause は強い慣習ゆえに次のアクションを示す例外になりうるが、一般的なオプショントグルでは現在の状態を強調するほうが一貫している

1件のコメント

 
GN⁺ 2024-02-13
Hacker News の意見
  • 最近は Microsoft Teams のせいで本当にうんざりしている。デスクトップアプリでは、ミュート中はマイクに斜線が入ったアイコンが表示され、ミュートを解除すると斜線のないマイクに変わるので分かりやすい。
    ところがスマホアプリで参加すると、同じ斜線入りマイクアイコンが「現在ミュートではない。このボタンを押すとミュートになる」という意味になる。押した後もアイコンは相変わらず斜線入りマイクのままで、背景だけが反転する。
    片方は「マイクをオンにする」ボタンで、もう片方は「ミュートをオンにする」ボタンだから、同じアイコンを使っているのかもしれない。結局、反対の状態でボタンがどう見えるかを知らないと現在の状態を判断できないので、いつも何度か押してみて、このアプリがどちらの方式を使っているのか確認することになる。
    これが現実世界の参照物を失った フラット UI の代償なのか気になる。

    • この混乱の一部は、マイクはデフォルトでオンになっているという考え方から来ていると思う。「マイク有効」がデフォルトで、ミュートはそこから外れた状態として扱うパターンは、電話会議システムの UI、アナログ電話、さらにさかのぼれば当事者間に実際の線がつながっていた時代にまで続いている。
      ライブ音楽や録音用のオーディオミキサーでも、普通は同じパターンを使う。チャンネルがオフになると赤いランプが点く「Mute」ボタンがあり、一部の機材だけがフェーダー上の「ON」ボタンを点灯させてチャンネルが有効であることを示す。
      そろそろ会議アプリも、音声はデフォルトでオフというアプローチに移る時期だと思う。発話者が話しているときに UI 要素が点灯する仕組みに、すでに少しずつ現れている。
    • これは本当に紛らわしくしてはいけないボタンだ。
    • Plex でもアプリごとに UI が違っていて、似たようなもどかしさがある。スマホでテレビ番組のシーズンを見ると、視聴済みのエピソードには青いチェックが付くのに、テレビで同じシーズンを見ると青いチェックはなく、未視聴のエピソードに黄色い三角形が付く。
      デバイスを行き来するたびに、脳が一瞬止まる。
    • Discord はもっとひどい。マイクのミュートボタンとカメラをオフにするボタンが、互いに逆の方式になっている。
    • マイクの表示/制御の問題には、かなり興味深い面がある。直接的な視覚フィードバックがないと、マイクがどのモードなのかを、他人が反応するか、反応しないかまで知ることができない。
      オンになっていてもフィードバックの遅延が大きいツールだ。相手が止まっているだけかもしれないし、答える前に考えているのかもしれないので、確信するには二、三回テストしなければならないことが多い。
      オン/オフするとすぐ見えるダークモードとは違う。だからボタンがどんな動作をするにせよ、現在の状態を示す視覚的な表示は大いに役立つし、マイクで特に「状態」と「制御」を混ぜようとする試みが多くなるのも驚きではない。
  • Tesla のオーナーなら共感せずにはいられない。車の UI のトグルボタンがあまりに多様で、一貫性も標準もない。
    たとえば空調ボタンは温度を表示するボタンが1つあるだけだが、どう押すか、どれくらい長く押すかによって反応が変わる。短く押すと小さなポップアップ、少し長く押すと空調全体の制御パネルが表示され、数秒押し続けるとオンになっていた空調がオフになることもある。問題は、これらすべてを運転中に道路を見なければならない状況でやらなければならないことだ。
    手と目の協調が少しでもずれると、特に運転中に段差を越えたときにはそうなりやすいが、1mm ずれただけで別のボタンを押して意図しない動作を起こす可能性がある。
    もう一つの災厄は Bluetooth デバイス接続 UX だ。少なくとも 2012〜2022 年の Model S の実装は、市販製品で見た中でも最悪級の UI の寄せ集めだった。右下のボタンはすでに接続された後も「Connect」と表示され続ける一方、画面の反対側の左上では「Connecting...」と表示された後に接続完了を示す。
    これも車内 UI なので、運転中なら一瞬しか見られない。Tesla の Bluetooth UI だけで UI 本の一章を埋められるほど、見事にひどい。

    • Tesla のモバイルアプリでは、すぐ隣にあるトグル同士ですら一貫していない。
      閉じた南京錠はドアがロックされていることを意味し、押すとドアが開く。
      トランクの「Open」という単語はトランクが閉じていることを意味し、押すとトランクが開く。
    • こういう記事は自分で書いてみるとよさそうだ。この種の分析はいつも興味深いし、題材が Tesla なら Elon まで絡んで、さらに多くの関心を集めそうだ。
    • 私の空調ボタンの使い方はこうだ。まずボタンを見て、少し透けていてオンにしたければ、そのままクリックすればオンになる。もう一度クリックすると全体のコントロールが開き、下にスワイプすると閉じる。
      オフにしたいときは、もう一度ボタンを押して全体のコントロールを開き、オフボタンを押す。温度はボタンをクリックした後、左右にスワイプして上げ下げする。
      私にはかなり直感的に見える。次に運転するときは長押しでオフにする方法も試してみるつもりで、かなり便利そうだ。
    • 2023 年式の Model Y では Bluetooth は実際かなりうまく動く。以前の Audi や Ford ではそうではなかったので満足している。
      実装がいつもこれほどひどいのを見ると、Bluetooth 仕様自体に深刻にこじれた部分があるのではないかと思う。
    • これは違法であるべきだ
  • 以前、NASAのプッシュボタンスイッチをいくつか持っていたのだが、中に電球が2つ入っていた。スイッチがオフのときは両方消えていて、ボタンを押すと黄色い電球が点き、スイッチ操作が受け付けられたことを示す
    実際にオンにしようとしていた装置がオンになると緑のランプが点き、黄色のランプは消える。黄色の状態はスイッチをトグルしたことの確認で、緑は望んだ動作が実際に起きたことの確認、というわけで興味深い状態フィードバックの仕組みだ

    • 良い方式だし、航空機もこうしている[1]。こういう問題はユーザビリティを非常に重視する人たちがすでに解いているのに、コンピューター業界は他分野からこうしたものを取り入れるのが遅い
      スイッチの外側にラベルを置く方式もうまく機能する[2]
      [1]: https://my737ng.com/wp-content/uploads/2014/08/cp_mcp_header...
      [2]: https://i.pinimg.com/originals/2c/37/0a/2c370a3f4018cfa9c3ef...
    • キャリア初期のかなりの部分を、遠隔ハードウェアを制御し状態を表示するGUIソフトウェアの作成に費やしたが、やがて状態を内部に保持するUI要素をすべて排除するようになった。トグル、スイッチ、チェックボックス、ラジオボタンのように、自分の状態に応じて動作を変える要素では、インターフェースとハードウェアの状態がずれることが珍しくなかった
      代わりに各選択肢ごとにボタンを置き、現在状態に該当するボタンが点灯するようにした。たとえばオン/オフのトグルは「on」と「off」の2つのボタンに変えた。最初はどちらもグレーで、ハードウェアから状態がオンだというSOHを受け取るとonボタンが緑、オフならoffボタンが赤になる
      通信がしばらく途切れたら、すべての色を淡くして状態が古くなったことを示す。ボタンを押すと、新しい状態が返ってくるまでは以前の状態を表示し続けるが、そのボタン群だけを淡く表示する
      ユーザーは、UIがどの状態だと思っていようと、いつでもonまたはoffを直接命令できた。一方トグルでは「別の状態」にしか変えられない
      ラジオボタンも、状態名が書かれたボタンのグループに置き換え、UIが現在だと思っている項目だけに色を付けた。ほとんどの中立状態は青、オペレーターが強調したい良い/注意/悪いの意味がある場合は緑/黄/赤を使った
      変わった設計だったが、オペレーターたちはおおむね特別な訓練なしに理解した。ボタンはボタンらしく見えてクリック可能に見え、間隔によって1つのグループであることが分かり、90年代のUIではグレーが標準だったので、色の違うボタンが現在状態として自然に目立った
      今のように、UI要素が美的理由やコンバージョン誘導のためにどんな色でも使われ、たまにしか情報を伝えない環境でもそうなるかは分からない。NASAのボタンのように命令状態と受信状態を同時に見せる実験もしたが、どれもより混乱を招いた
    • 気に入った。誤解が人を死なせかねない航空/軍事分野を、なぜ私たちの業界がもっと頻繁に参考にしないのか分からない
  • チェックボックスよ、1990〜2009年。完璧で曖昧さがなかったのに、スマートフォンのデザイナーたちはなぜか嫌った

    • さらにおかしいのは、実質的にはチェックボックスであるものを、かなりきれいに、トグルのように見えるよう作れる点だ。良い例ではないが、必ずしもチェックマーク入りの四角である必要はないことを示している: https://www.ranecommercial.com/legacy/hal/MobileHelp/Advance...
    • 私が使っている医療ビデオ相談/遠隔診療システムは、チェックボックスを壊している。直接メッセージのインターフェースで、チェックの有無に応じてチェックボックス欄のラベルを変える
      チェックしていないと「Not Urgent」、チェックすると「Urgent」と表示される。何度か素早くチェックして、緊急ではないことを示したつもりで送信を押してしまった
    • チェックボックスが完璧だという点には同意する。ただ、スマートフォンでフォームを入力しようとしないからでもある
      ブラウザ標準のチェックボックスは、スマートフォンで親指で押すには小さすぎて、頻繁に使うにはつらい
    • チェックボックスウィジェットは誰が作ったのだろう? System 1(1984)にはメニューのチェックマークに相当する「xボックス」があったが、私の知る限りチェックボックスそのものではなかった
    • Jony Iveはデザイン界のThomas Midgley Jrなのか? iOS 7で使い勝手の低いフラットデザインを大衆化し、丸いiMacマウスや壊れやすいMacBookキーボードにも責任がある
  • 私が見た最悪の例はTeslaのダッシュボード画面UIだ。車の絵の上に、ボタンには見えないラベルが付いていて「Open」と書かれている
    これはその部分が開いているという意味だとはっきり読めるが、実際の意味はそうではない。そのラベルは該当部分を開くボタンで、ユーザーには知りようがない

    • その通り。今週末、借りたTeslaを運転したが、前後のトランクが両方開いているのだと思って何度も混乱して慌てた
    • 100%同意する。TeslaのトランクUXで2番目にいらだつ点だ。1番目は、駐車に切り替えたあとトランクを開くために待たされる長すぎるアニメーション
      全体としてTeslaのUXは他の車よりはるかに進んでいるが、こういう小さなことがあまりにいらだたしい
    • まったく紛らわしくないと思う。レンダリングされた車がトランクの現在状態を明確に示しているし、開くボタンを押すとトランクが開くアニメーションも出る
      人によって感じ方が違うようだ
    • 興味深いことに、これは英語の問題だ。英語では動詞と形容詞が同じ場合が多い。スペイン語なら「Abrir」(動詞の原形)と「Abierto」(形容詞)が違うので、こういうことは起きない
      「Do open」や「Is open」のように書けば避けられそうだが、ネイティブには不自然に聞こえるのだろうか?
    • これは英語だけにある特性なのだろうか? たとえばスペイン語では、動詞と形容詞は別の単語だ
  • トグルボタンの核心的な問題は、1つのオブジェクトがシステムの状態と、それを変える動作を同時に含んでいる点にある。
    そのため、ボタンに表示されている「ON」が現在の状態なのか、押すと実行される動作なのかがはっきりしない。
    解決策は、状態と動作をある程度切り分けること。方法はいくつかあり、リンク先の回答の1つのように、ラベルをボタンの外側に置くやり方がある。
    スイッチではなく、Teams の例のようなトグルボタンなら、アイコンはそのままにして、ボタンの別の属性を変えればよい。たとえば、何十年も問題なく行われてきたように、押された状態のままにして「ON」状態を示す、といった具合だ。

    • Windows 11 のシステムサウンドのプロパティには「Allow apps and Windows to use this device for audio」というオプションがあり、その横に「Don't allow」ボタンがある。だから現在の状態が何なのかまったく分からない。
  • 結論には同意するが、現在の状態が何であるかと、トグルを切り替えるとどの状態になるのかの両方が明確であるべきだ。あまりにも頻繁に、トグルを切り替えてみて初めて、切り替える必要がなかったと分かる。
    再生/一時停止の点は興味深い。結論とは逆に見えるからだ。しかしこれは、よく理解されている物理的な前例に従っているもので、たいてい音楽や動画が再生中かどうかも明確だ。そのため、ボタンのアイコンが変わらなくても、ユーザーは押すと何が起きるか理解できる。
    トグルと UI に戻ると、トグルの色を薄いグレーから少しだけさらに薄いグレーに変えるのは、極めて役に立たない。ラベルを付けてほしい。ラベルがデザインモチーフに合わないなら、もっと優れたデザイナーを雇うべきだ。

    • 物理的な前例で言えば、ボタンの画像は動作、つまり再生を示し、押されている/押されていないという視覚状態でその動作が有効かどうかを示すべきだった。
      ソフトウェアデザイナーたちはこれに従わず、再生/一時停止アイコンを互いに入れ替える方式を作り、新たな混乱を生んだ。ユーザーフレンドリーな理由というより、スキューモーフィックな 3D ボタンが流行遅れになったためだ。
      状態表示の唯一の利点は、問題が起きたときにある。特にオーディオでは非常によくある。ミュート、ヘッドホンの取り外し、Linux のオーディオドライバーがまた壊れる、といった状況だ。
      今でも再生/一時停止ボタンを見ると少し認知的不協和を覚えるし、一時停止ボタンが正確に何を意味するのか 100% 確信できないので、問題があるときは単に2回押してみることもある。
    • 現在の状態が明確であるべきだという意見に同意する。照明スイッチでは、どちらの向きが「オン」なのかを知る必要はないし、実際にも知らない。明かりが点いているかを見ればよいからだ。
    • 「ラベルを付けろ、ラベルがデザインモチーフに合わないならもっと良いデザイナーを雇え」というのは、特にモバイルでは役に立たず、現実的でもない。
      たとえば Spotify には、すべてのボタンの後ろにラベルを付けるスペースはない。アルバムアートを表示するスペースも必要だし、私はそれを望んでいる。
      より良いデザイナーの問題ではなく、スペースの制約は実際に存在する。ある機能は1回のタップですぐ使える必要がある。シャッフルをポップアップメニューの奥に隠したくはない。
  • トグルボタンは現在の状態を示すべきだ。チェックボックスが良い例だ。
    Muted []Muted [x] はかなり明確だ。
    難しくなるのは、デザイナーが言葉と視覚デザインのつながりが明確でない UI を作るときだ。たとえば Mute Off [---( )]Mute On [( )---] のようなものは、状態説明に動作を混ぜ込んでいて、何を意味するのか分からない。

    • 十分なスペースがあるなら、両側にラベルのあるトグル風のものはうまく機能する。
      Loudspeaker [()---] Crossed-out loudspeaker
    • チェックマークはティックである[1]。ステータスページ[2]では、ティックは「稼働中」で、十字は失敗を意味する。「明白さ」という観点から見ると、Muted [x] は何かが失敗したという意味に読める可能性がある。
      別の意味として理解するには、コンピューター UX の学習が必要であり、それは明白さの反対だ。あるいは「X marks the spot」のように、ミュートしたいときにクリックすべき対象という意味かもしれない。
      [1] Unicode U+2714 https://www.compart.com/en/unicode/U+2714
      [2] 例 https://www.githubstatus.com/
    • チェックボックスは、現在の状態と可能な選択肢を、単純なはい/いいえの形で同時に示す。
      トグルボタンはデザイナーの意図が分からないため混乱しやすい。両方の選択肢を同時に見せない限り、分かりにくい。
      Mute On[---()]Off
    • ボタンは、クリックすると何をするのかを伝えるべきだ。現在の状態を示したいなら、それは別の表示であってボタンではない。
      ボタンはクリックされるために存在するので、クリックすると何が起きるのかを伝えなければならない。
    • 右から左へ書く文字体系では、両側も入れ替えるべきなのだろうか?
  • アナログスイッチのように、両方を示すべきだ。現在の状態を明確かつ誤解なく示しつつ、同時に変更後の状態も示すべきだ。
    Apple の左右スライダー式トグルは、これを実にうまく実現している。トグルが現在どこにあるのか、どこへ切り替わるのか、現在の設定で機能が有効なのかを青い背景で、無効なのかをグレーの背景で明確に見せている。

  • 私が好きだったデザインの1つに、スイッチの横にステータスランプがあり、状態がオンになるとそのランプが点灯するというものがあったが、今は見つけられない。
    一番良かったのは、非同期処理の遅延も解決していた点だ。スイッチを押すとスイッチが切り替わり、少し後にランプが点灯する。インタラクションが実際に何かをしたという確信を与えてくれて、とても満足感があった。

    • 実際のデザインを見ない限り、これも本文で扱われている曖昧さを示す例のように見える。アイコンがこれから起こることを意味するのか、現在起きていることを意味するのかが不明確だ。
      状態なのか動作なのかが問題だ。特定のデザインは曖昧ではなかったのかもしれないが、説明だけではそうは言えない。
    • 久しぶりにそのページに戻って、ランプが点いているのを見たとき、それが現在の状態が ON だという意味なのか、クリックすると ON に変わるという意味なのか、どうやって分かるのだろうか? 点灯しているランプだけを見て即座に区別する方法はあるのか?
    • 「スマート」機器で見かけるインターフェース機能のように聞こえる。TP-Link Kasa のスイッチしか詳しくないが、そのアプリ UI にも似たように、色付きアイコンが複数の状態を持ち、最も「オン」に近い状態は、スイッチと照合してオンになったことを意味していたように思う。
    • HDR 画面の良いユースケースになりそうだ。「インジケーターランプ」を画面の他の部分よりずっと明るくして、いまランプが点いたことを非常に明確に示せる。
      もちろん、ユーザーがそもそも画面の明るさを上げすぎていない場合に限って通用するだろうが。