OOUIとは何か - 『オブジェクト指向UIデザイン』

「オブジェクト指向」は、javaやrubyといったプログラミング言語を学ぶと必ず通る概念だ。プログラマには馴染み深い概念だが、デザイナーにとっては取っ付きにくいかもしれない。

オブジェクト指向UI(OOUI)は、現在僕たちが使ってるほとんどのアプケーションで用いられている。あまりに自然な設計なので、そこにOOUIの存在を意識することはほとんどないだろう。

本書を読み終わった後、僕たちはそこにOOUIの存在を認知することができ、そのUIについて語ることができるはずだ。

 

 

オブジェクト指向とは何か

オブジェクト指向とは、オブジェクトに注目する、ある物事をオブジェクトとして捉える方法論だ。ではオブジェクト とは何だろうか。オブジェクトは、日本語訳すると「もの」である。「もの」と言われてもわかりにくいが、身の回りにある「もの」を思い浮かべてほしい。机、パソコン、コップなどがあるだろう。

それらがオブジェクトだ。いうまでもなく僕たちはオブジェクトに囲まれている。オブジェクト指向は、日常生活においていたって自然な考え方だ。

タスク指向 vs オブジェクト指向

オブジェクト指向UIを理解するためには、本書におけるOOUIの対立概念であるタスク指向UIを知るのが早い。

タスク指向UIとは、まず最初にユーザが何をするかを選択させるUIである。例えば、ECサイトで開いてしょっぱなで「商品を買う」「商品を見る」「カートに入れる」みたいなボタンが並んでるUIである(こんなUIはほとんど見ないが..)。

一方、僕たちが見慣れているUIは商品が一覧で並んでいる画面である。OOUIでは、まずユーザにオブジェクトを選択させる。その後、「商品を買う」か「カートに入れるか」「お気に入りに登録する」かのタスクを選択させる。

普段使ってるアプリを思い出して見ればわかるように、ほとんどのアプリケーションでOOUIが選択されている。これは、人間にとって非常に自然である。

日常生活において、人が何かをしようとするとき、まずタスクを選択するのではなく、オブジェクトを手に取るからである。

例えば、水を飲むというタスクを処理したい場合、人は「水を飲む」というタスクを選択し、一直線にコップを取りに行くわけではない。途中で「やっぱりトイレに行ってからにしよう」みたいに揺れ動くわけである。そして、ようやくコップを手に取ってから「水を飲む」というタスクを行うのである。

モード vs モードレス

本書では最後の方に付け加えられているだけではあるが、モード/モードレスの対立概念は非常に重要である。

「モード」は日常的に使う言葉だが、多様に使われるので意味が取りづらい言葉でもある。ここで言う「モード」とは、限定された操作しかできないアプリケーションの状態である。例えば、キーボードの「ひらがな入力」は、ひらがな入力の操作しかできない状態であるので、「ひらがな入力モード」と言える。

一般にモードはユーザの動きを阻害する。モードは「限定された操作しかできない」ので他の操作をしたい時に邪魔になってしまうのだ。アプリケーションは出来る限りモードレスにすべきというが著者の主張だ。

このモード/モードレスという対立は、タスク指向UI/オブジェクト指向UIの対立を抽象化させたものである。タスク指向というのは「〇〇タスクモード」を最初に選択させるUIである。

先の例で言えば、「水飲むモード」になることを意味する。一方、オブジェクト指向はモードレスである。最初に操作を選択するのではなく、オブジェクトを選択することでどんな操作も受け入れることができ、ユーザを「〇〇モード」状態にさせることはない。

実は多くのアプリケーションでモードは用いられている。最もよく目にするのが、モーダルだ。モーダル(modal)は名前の通りアプリケーションがあるモード(mode)に入ることを意味する。

もちろんユーザをモードにさせたい時はあるだろう。しかし考えもせずにモーダルやポップアップを使ってしまってるアプリケーションは多い。つい、モーダルを使いたくなった時は、本当にユーザの操作を阻害する必要性があるのか、代替案がないのかを考えてみるべきだろう。

おわりに

本書はデザイナーにとってもプログラマにとっても一読する価値のある本だと思う。これは共通言語を持つための本だからだ。

OOUIは僕たちにとっては見慣れたUIだ。一見するとひどく当たり前のデザイン原則である。しかしOOUI,modeという名詞を知ることで、僕たちはそれらについて語ることができる。「この画面はタスク指向になっている」と会話することができるのだ。