May 13, 2012
何故、エンジニアはUIのセンスがないのか、という自分にも当てはまるようなことについて書いてみる。
まずエンジニアがダメなUIを作ってしまう理由について、いくつかの仮説を立ててみる。
1.その画面を作るエンジニアは全てを知りすぎていて、もはやわからない人の気持ちがわからない説
2.エンジニアはITリテラシーは高いけど、自分ができることを人に理解できるように説明するのは下手説
3.技術的に実現する方に興味が偏って、ハナからUIの使い勝手に興味が無い説
4.国語力がない、自分が実現する文脈を表現するのはできるが、ユーザーの文脈に配慮した言葉を想像する力が無い説
5.仕様書を読まない、人の言う事を聞かない説。例えばOSが定めているユーザーインターフェースガイドラインに従わないので、UIパーツが意図した使い方をしておらず統一性に欠ける。
6.わかりやすい色や文字、レイアウトに関する知識が無い。センスが無い説。
以前、ブログ道などの本も出されていたり、明治大学でベンチャービジネス論の講義もされている久米繊維の久米社長にECについてのインタビューをしたことがあって、その際に「生産者は自分の商品の良さを伝えるスキルを持っていない人が多い」という話をされていた。つまり、作る人と売れる人は別のスキルであって、両方を持ってる人は、「天から二物を与えられた人である」ということだ。
これは作る技術と売る技術の話であるが、売る技術の根本にある「わかりやすさ」はUIにも通じる話なので、そこから逆算して、エンジニアがUIセンスがない論というのは、開発力とUIを作る力は職能が違うのでは?!という仮説に基づいている。
通常「便利なツール」を提供する場合は、それが便利と言ってもらえるだけの新機能を提示するのが通常であろう。ユーザーが欲しいものを知っているケースは稀と言われるが、かといって必要性を理解できない機能は使う意味もわからないはずなので、「良い新機能」とは、「あ、それ欲しかったんだよね」と言わせるような、のりしろを持ったもの、もしくは、のりしろを感じさせる機能表現が必要になる。
使いやすいUIデザインというのは、ある種の教育概念を含んでいる。
つまらない学校の講義を思い出して欲しい。
多分、講師が言いたい事を言ってるだけ、書いているだけの授業ではないだろうか。
教える側が、言いたい事をひたすら伝えるだけで、生徒がついてこれるなら、これほど世の中簡単なものはない。
現実には、生徒の頭が回っているうちに、本人のレベルよりちょっと難しいものを提示して、小さな「興味→理解→達成」と言う成功体験のループをもたらしていく授業が、成長を伴った、楽しいと思える授業と言えるのではないだろうか。
始めて使うアプリケーションのユーザーインターフェースにも同じ事が言えて、
・ビジュアルデザインから情報を解釈する。
・それが指し示すものは何の事であるかを理解する。
・ユーザーがやりたいと漠然と思っていることとの対応関係を結びつける
もしその画面に、ない場合は、メニューを切り替えて行く。
・クリックして、期待した動作が実現する。
ちょっと思いつきで乱暴なプロセスを書いてしまったが、これらの繰り返しが、いわゆる「メンタルモデル」と呼ばれる「ユーザーが期待するもの」とだいたい一致すれば使いやすいインターフェースと言ってもらえる。
肝は、この「ユーザーの期待」と作り手が提供したい機能実現に必要な感覚との間に差異がある場合に、それを埋める努力を作り手がどれだけ意識してやっているか?!というところになってくる。
エンジニアがエンジニアになるまでに学んできたベースとなる教育は、特に理系の場合は、何かの問題を主に技術的、数学的に、最適に解決する手段を考えるものであって、別にわかりやすくそれを理解してもらうにはどうすれば良いか?!などを考えるというのはそう多くない。
どちらかというと使い勝手が語られる文脈は、心理学や美術という理系学科にいる人にとっては対極の分野にあることが多く、ユーザーインターフェースに強みを持っているエンジニアのバックボーンを聞いてみると、専門にせよ趣味にせよ、芸術的な分野の経験を持っている人が多いのではないだろうか。
(ちなみにWebクリエイターに建築系出身の人が割といることも追記しておく)
自分のことを書いておくと、自分が一番最初にUIにハマったのは、新卒で入った製造業の会社で新製品開発のプロジェクトに異動した直後の「操作パネルの設計」だった。
まぁ仕事自体は、世の中に売ってるボタンを使って、必要な機能をどう配置するか?というだけのものである。
ボタン自体も機能内容に応じて、押すだけのボタンもあれば、オンオフスイッチとして引っかかりがあるスイッチ、警報スイッチのように認知可能な意味があるものがある。
また、緑は動作状態を示す、黄色は警告、赤は異常という基本ルールも存在し、これらの「常識」に逆らわないものを選び、かつ、操作パネルのあり方として、違和感のないものを作ることになる。
いわゆる制御のエンジニアとして、電気回路の設計や制御プログラムは何も問題が無いという自信はあったが、この「操作パネルの設計」は、自分の感覚に存在しないため途方に暮れた。
その事を上司に伝えると、現場にある他社の加工装置に連れて行ってもらって、基本的な操作パネルやボタンのあり方を教えてもらった。
機械の警報装置や警報ランプのあり方や、その点滅方法等、業界としての当たり前を教わる事で慣れて行った。また顧客である大手の製造業では、各グループ毎にユーザーインターフェース仕様(操作ボタンのあり方や警報ランプのあり方)が決まっているので、そういう仕様を学ぶところでも、安全や理解のためのユーザインターフェースの必然性というのを知る機械を得た。
そして、次にハマったのは「HTML」だった。
自社の製品をLAN経由でモニタリングしたり、遠隔から操作すらさせることができるWebサーバ製品を実験的に作っていたのだが、プログラムは創意工夫で作れるのだが、わかりやすい画面デザイン自体については、どうにもならずに途方に暮れた。
HTMLの個々のタグの存在意図がわからないという技術的問題もあったが、それと同時に絵が描けないし、色のセンスもないし、何よりグラフィックデータが作れない、というあたりで、HTMLの自由度の高さに対応できなかった。
実は、この画面デザインについては、当時まだWebは素人だった、奥さんのふうりにお願いして作ってもらった。正式のプロダクトではなかったので外部のデザイナーにお願いするというわけにはいかなかった。それ以前に外部に頼むということすら知らなかった。
そんなこんなもあって使い勝手にはこだわったものの、自分の知識や感覚の無さを圧倒的に感じたので、その学ぶ環境を得るためにデジハリに通ってみて、その後Web業界に転職して、本職としてWebをやることにした。
もしかしたらWeb技術というよりは、使い勝手への探求の道みたいなものに興味を持ったのかもしれない。
昔よくあったケースで、Webデザインで、フォントを持ってない人が日本語をうまく使うのは難しいので、カッコいいデザインをするために、つい英語のナビゲーションラベルなどをつけてしまうのだが、書かれてる単語のスペルが間違っているというなんとも言えないケースを見かけることがあった。
自分の無知を知る事は大事なことだと思う。単語力がないのに英語を使ってしまうのであれば、ミスをする可能性に配慮しなくてはいけない。
本来的な理系の教育カリキュラムに、あまりユーザーインターフェースに関するものというのはないと思う。
情報系学科はイマドキはさすがにそうでもないとは思いつつも、スタートアップベンチャーで、エンジニアが作ったUIが使い勝手が悪くて困ってる、みたいな相談を受ける事もあり、そういう時は、そういうエンジニアにUIを丸投げする上司(社長)が悪いので、もっと細かく指示を出すか、プロトタイプを作りましょ、と言わざるを得ないわけだが、いずれにせよ先端層であるスタートアップベンチャーにおいても、未だ持ってあまり変わっていないんだと思う。
大事なのは、エンジニアは知ったかぶりをせず、妙なコダワリも出さずに、UIのセンスを磨く事を頑張るか、もしくは早めに白旗をあげることだと思う。
エンジニア本人の立場からすると、せっかく頑張って作ったのに、使い勝手が悪い、とか言われるのは本望ではあるまい。しかし、冒頭に書いた通りいくつかの原因で、エンジニアが使いやすいUIを作るのが難しいのであれば、その事を認識してわかりやすいUIをつくることに取り組むか、もしくは、誰かに手伝ってもらった方が良い。
p.s.いろんな意見が、twitter、はてブなどについていて面白いのですが、一点「センス」について。子供の頃、数学を理解するのって「センス」が必要と教わりました。理系、文系に関わらず数学は当たり前のように使っているツールですが、空間認知能力に近い意味で、概念を単純か抽象化して理解するためには「センス」が必要で、それがない人は数学は諦めろとさえ言われました。
それと同じで、UIの有り様やビジュアルデザインが、後から論理的に説明可能なものだったとしても、全くゼロからデザインする時に行っている、色やレイアウト、パーツの組み合わせという「成功理論の選択眼」には「センス」が必要だと思います。私はWebやアプリを作る人なので、実現したいと思ってる大事な要素「人を魅了するデザイン」であるべきなら余計に、です。(ビジュアルデザインだけじゃなく、情報デザイン、文章力もその領域だと思います。)
まぁセンスと言っておきながら、もしかしたら題意からずれているという指摘はそうかもしれません。今回はタイトルを先に書きましたので。
もし技術系の人で、UI設計が理論として学べるものだと言い切ってしまっている人は、もしかしたら、このエントリーに書かれている範囲に入っている人かもしれません。ただ優れたデザイナーはそれを説明可能な状態で使いこなすと思いますので、一概に当てはまるかは、私は、あなたを知らない以上、わかりませんので、そこは誤解なきよう。
p.s.2. それぞれ役割が違うからエンジニアがやるのはおかしいって意見はわかるのですが、やっぱりアプリケーションの開発ツールにデザイン機能が内包されちゃってる以上は、エンジニアが作るものだと思われるのは自然だと思いますし、そうしないと進まない現実も多々あります。だからこそ、そこで起きていることを認知、整理するために、この文章を記述しています。決してエンジニアは全くUI設計をやるなと書きたくて書いている文章ではありません。(僕自身が矛盾してしまいます)