Joel on Software

Joel on Software このページは"ジョエル・オン・ソフトウェア

 

プログラマのためのユーザインタフェースデザイン
第1章
第2章
第3章
第4章
第5章
第6章
第7章
第8章
第9章

※新しい翻訳はJoel on Software Translation Projectにあります。

その他の "Joel on Software" の記事(日本語)

その他の "Joel on Software" の記事(英語)

著者へのメール(英文のみ)

 

プログラマのためのユーザインタフェースデザイン
第1章: 環境をコントロールできれば楽しく感じるもの


Joel Spolsky ジョエル・スポルスキ
翻訳: Yasushi Aoki 青木靖
2000/10/24

私の知っている筋金入りのC++プログラマたちの多くは、ユーザインタフェースプログラミングを嫌っている。これは私にとっては驚くべきことだ 。それというのも、UIプログラミングが本質的にやさしく、直感的で、楽しいものだと知っているからだ。

それがやさしいというのは、どうやって矩形を別な矩形の真ん中に配置するか、という以上に複雑なアルゴリズムは、通常必要にならないからだ。それが直感的であるというのは、もしあなたが間違ったならたちどころにそのことがわかり、修正できるからだ。楽しいというのは、あなたの作業の結果を即座に見ることができるからだ。あなたは自分がプログラムを直接彫刻しているかのように感じるだろう。

私の考えでは、プログラマがUIプログラミングを怖れるのは、ほとんどの場合彼らのUIデザインに対する怖れが原因だと思う。彼らはUIデザインを何かグラフィックデザイン--つまり真っ黒な服を着て変わったピアスをしたクリエイティブでラテを飲 む人たちがかっこいい芸術品を作るミステリアスなプロセス--のように思っているのだ。プログラマというのは自分たちを分析的で論理的な考察者であり、推論能力は優れているが審美眼はないと見なしている。それで彼らは自分にはUIデザインなんてできないんだと思っている のだ。

UIデザインというのは、実際にはまったく簡単で合理的なものだ。それは美大の学位や蛍光色の髪に対する好みが必要となるようなミステリアスなものではない。単純で論理的なルールを使ってユーザインタフェースについて考るための合理的な方法があり、それはあなたの書いているプログラムでインタフェースを改善したいところにはどこにでも適用できる。

私は「UIデザインの禅と技芸」みたいなものを示そうとしているのではない。それは技芸でも仏法でもなく、単なる一組のルールで、合理的かつ整然と考えるための方法 なのだ。この本はプログラマのために書かれている。私はあなたがメニューバーをどうやって作るか説明してもらう必要はなく、むしろメニューバーに何を入れたらよいか(あるいはそもそもメニューバーが必要かどうか)について考える必要があるのだ、という前提に立っている。

私が最初に仕事をしたのは、大きなパン工場だった。そのパン工場には6つのパン製造ラインがあった。ライン2つにつき1つのパン生地ミキサーがあり、180kgのパン生地の固まりを作ってはその左か右にあるラインに投入していた:

デザインではそうだった、ということだ。実際にはミキサーCはまだ完成しておらず、ライン3とライン5もなかった。そのため構成はこんな感じになっていた:

 

注意深い読者は不思議に思っていることだろう。「ミキサーBのパン生地を生産ライン6にどうやって持っていくんだ?」 さあ、そこで小さなジョエルが登場する。私の仕事というのは、信じないかもしれないが、ミキサーBの左脇に立ち、それが放り出す180kgのパン生地の固まりを大きな車輪付きのバスタブで受け取り、そのバスタブを生産ライン6のところまで押して行って、ウィンチみたいな装置を使ってライン6にパン生地を放り込むのだ。私は午後10時から朝の4時までずっと、10分おきにこれをやらなければならなかった。

ほかにも複雑な事情があった。ライン6は180kgのパン生地を一度に扱うことができなかったので、私は大きなナイフを使ってそれを10個くらいに切る必要があった。それがいかに途方もなく難しかったかについては話す気にもならない。

最初の2、3日は、もちろん私はこの仕事がとてもつらかった。それはほとんど不可能に思えた。体中の骨が痛んだ。水ぶくれの中に水ぶくれができた。体の中にそんな場所があるとは知らなかったような場所まで が痛んだ。

始めのうち私は、ライン6にパン生地が補充された状態を維持することができなかった。パン生地が切れるたびに、流れ作業に大きな隙間ができた。隙間の部分がオーブンに入ると、(エネルギーが一定でパン生地が減るので)オーブンは加熱し始め、パンが焦げた。ときどきライン6は故障して生産が止まることがあったが、ミキサーのほうはパン生地を私のために作り続けたので、パン生地を入れるための車輪付きバスタブが足りなくなる危険があった。そういうときには、床をきれいにして後で取れるように油を塗り、パン生地をその上に置いた。この方法はあまりうまくいかなかった 。というのは、パン生地は30分以上たつと発酵しすぎて、あまりいいパンができなかったからだ。そういう場合には、パン生地を5kgの固まりに切って、後の回の素材に混ぜてやる必要があった。

一週間もたつと、私はそのルーチンに慣れて、私の記憶が正しいなら、10分のパン生地サイクルにつき2分間休憩することができた。私は緻密な作業スケジュールを作り上げ、また、生産ラインが止まった場合にミキサーにバッチをスキップさせる方法を学んだ。

そうして私は考えるようになった。なぜ、ビールのコマーシャルが言うように、「いい日もあれば悪い日もある」のだろうかと。

ある日、この問題について考えていたとき、車輪付きバスタブのうちの1つが車輪の具合が悪く、うまく曲がれないということに気づいた。たまにこのバスタブは私が押した方向には行かず、何かにぶつかることがあった。これはちょっとしたフラストレーションだった。このバスタブをチェーンで引っ張り上げているとき、チェーンの金属のとげで--ほんのちょっとだが--すりむくことがあった。これもまたちょっとしたフラストレーションだった。ミキサーから飛び出そうとしているパン生地を受け止めるため、空のバスタブを押しながら走っていると、床の上の油に足を取られることがあった。転びはしなかったが、これもちょっとしたフラストレーションだった。

時には小さな勝利を収めることもあった。私はパン生地製造のタイミングを完璧に理解し、前のバッチが切れるほんの数秒前に新鮮なパン生地が到着するようにしてやることができた。そうすることでパン生地は最も新鮮となり、最高のパンができた。もっと小さな勝利もあった。ミキサーから飛び出して壁に張り付いた小さなパン生地の固まりを見つけては、後ろのポケットに入れて持ち歩いていたペンキ剥がしでこそぎ落とし、ゴミ箱に投げ入れた。入った!パン生地をスライスするときに、ときどき本当にうまく簡単に切れることがあった。それは、とても些細なやり方でではあるが、周りの世界をコントロールできたという、ちょっとした満足の瞬間であった。

その頃はそんなふうな日々だった。たくさんの小さなフラストレーションと、たくさんの小さな成功。しかしちりも積もればだ。たとえちっぽけで取るに足らないように見えるフラストレーションでも、気分に は影響するものだ。感情というのは出来事の大きさにではなく、質に頓着するもののようだ。

そしてもっとも幸福な日々というのは、たくさんの小さな成功と少しのフラストレーションの日々だということを、私は理解し始めた。

それから何年もたって大学に行くようになり、マーティン・セリグマン(Martin E. P. Seligman)博士が発展させた学習性無力感(Learned Helplessness)という心理学上の重要な理論について学んだ。何年もの調査に裏付けられたこの理論によると、憂鬱の大部分は環境をコントロールできないという無力感から生まれる。

あなたが環境をコントロールできると感じ、あなたのすることが実際に機能するようになればなるほど、あなたは幸せに感じる。あなたがフラストレーションを感じ、怒り、混乱しているのは、たぶん何か、たとえ小さなことであっても、あなたにコントロールできないことが起こったためだ。キーボードのスペースキーが効かなくて、あなたがタイプすると単語がくっついてしまう。これはあなたがスペースキーを押したにもかかわらず何も起こらないために、フラストレーションを感じるのだ。あなたの家の玄関の鍵がうまくかからない。あなたが鍵を回すと引っかかってしまう。これもまたちょっとしたフラストレーションだ。こういったことの積み重ねが、その日その日の私たちを不幸せにする。たとえそれがくどくど話すほどのことではないにしても(アフリカで飢餓に苦しむ人々のことを思えば、スペースキーのことで取り乱すなんてとんでもない!)、それは私たちの気分を変えてしまうのだ。

少し休んで、コンピュータの話に戻ろう。

ここで典型的なWindowsのパワーユーザであるピートを作ることにしよう。ユーザインタフェースについて考えるとき、想像上のユーザを思い描くと助けになる。想像上のユーザがよりリアルなほど、あなたは彼らがあなたの製品をどう使うだろうかよく考えるようになる。ピートは技術系出版社の経理士で、Windowsを仕事で6年使っており、家でも少し使っている。ピートは非常に有能で技術に強い。彼は使うソフトウェアを自分でインストールし、PCマガジンを購読しており、請求書を送る事務員たちのために簡単なWordマクロを書いてやったこともある。彼は家ではケーブルモデムを使っている。Macintoshは使ったことがない。「あれは高すぎる。」と彼は言うだろう。「同じ値段で128Mのメモリを積んだ700MhzのPCが買える・・・。」 よし、ピート。君の人物像がつかめた。

ある日、ピートの友人のジーナがコンピュータについて彼に助けを求めてきた。ジーナはあの半透明なケースが気に入ってMacintoshのiBookを買ったのだった。ピートは座ってMacintoshを使おうとしてすぐ、いらいらし始めた。「こういうのは大嫌いだ。」 と彼は言った。最終的には彼はジーナを助けてやることができたが、不機嫌で不幸せだった。「Macintoshのユーザインタフェースといったら、ああも不細工なんだから。」

不細工?何のことを言ってるの?Macintoshが洗練されたユーザインタフェースを持ってるってことはみんな知っている。そうじゃない?使いやすさの模範でしょ?

以下はこの謎に対する私の分析だ

Macintoshでは、ウィンドウを動かしたいとき、マウスでどの縁をつかんでも動かせる。Windowsではタイトルバーをつかむ必要がある。縁をつかもうとしてもウィンドウの形が変わるだけだ。ピートがジーナを助けようとしたとき、彼は右の縁をドラッグしてウィンドウを広げようとした。ムカつくことに、期待したようにはリサイズしないで、かわりにウィンドウ自体が移動してしまった。

Windowsではメッセージボックスが出たとき、Enterキーかスペースキーを押せばメッセージボックスは閉じる。Macではスペースキーは使えず、通常マウスでクリックしてやる必要がある。警告が出たとき、ピートは6年間無意識にやってきたように、スペースキーを使って閉じようとした。このとき初めて、何も起こらなかった。ピートは意識せずにスペースキーを強くたたいた。スペースキーを押したのをMacが検知しなかったのだろうと思ったので。実際には検知していた--そして無視したのだ!しかたないので彼はマウスを使った。これもまたちょっとしたイライラの種だ。 

ピートはウィンドウを閉じるのにAlt+F4を使っていた。Macではそうすると音量が変わる。ある時点でピートは、別のウィンドウに半部隠れていたインターネットエクスプローラのアイコンをクリックする必要があった。それで彼はウィンドウを閉じるためにAlt+F4を押してすぐ、アイコンがあるはずの場所をダブルクリックした。Alt+F4でコンピュータの音量は上がったがウィンドウは閉じなかったので、彼は閉じようとしたウィンドウのツールバーにあるヘルプボタンをダブルクリックすることとなり、ヘルプウィンドウが開いて閉じなきゃならないウィンドウが二つに増えた。

またもちょっとしたイライラ。だけど積み重なる。一日の終わりには、ピートは不機嫌で怒っている。彼が物事をコントロールしようとしても、それが反応しない。スペースキーとAlt+F4キーは機能しない--どの点から見てもキーが壊れたかのようだ。幅を広げようとしてもウィンドウはそれに従わない。いたずらでもするかのように、広がるかわりに移動をした。悪いウィンドウ。無意識のうちに、コントロールできないという感覚が無力感に変換され、さらにみじめさに変換される。「自分のコンピュータのほうがいい。」 とピートは言う。「思い通りに動くように、全部自分でセットアップした。ところがあのMacときたら不細工で使いにくい。フラストレーションに耐える訓練でもしてるみたいだ。アップルがNewtonなんかに関わらずにMacOSに専念して いたなら、こんなひどいものにはならなかったろうに。」

その通りだ、ピート。よくわかっている。次の事実にかかわらず彼はそう感じるのだ:Macintoshは実際とても使いやすいコンピュータだ--Macユーザにとっては。ウィンドウを閉じるのにどのキーを使うかはまったく任意だ。(Macintoshのインタフェースをコピーしたと思われる)マイクロソフトのプログラマは、たぶん、ウィンドウの縁をドラッグしてリサイズできるというクールな新機能を追加していると思っていたのだ。MacOS 8.0のプログラマは、たぶん、ウィンドウの縁をドラッグして動かせるというクールな新機能を追加していると思っていたのだ。

ユーザインタフェースについてあなたが読んだ論争のほとんどは、観点が間違っている。Windowsはウィンドウをリサイズするためのより多くの方法を提供するから優れている。それが何?ポイントがずれている。重要なのはUIがユーザの期待どおりに反応するか、ということじゃない?そうでなければ、ユーザは無力でコントロールできない、と感じる。ちょうどパン生地をのせたバスタブの車輪が押した方に曲がらなかったときに私が感じたように。そうして壁に激突する。ドカン。

UIというのはあなたのユーザの感覚、感情、ムードに影響を与えるから重要なのだ。もしUIがまずくて、ユーザがソフトウェアをコントロールできないように感じるなら、彼らは文字通りみじめになり、あなたのソフトウェアを非難するだろう。UIがスマートでユーザが期待した通りになるなら、彼らは小さな目標を達成して上機嫌になるだろう。やった、CDが焼けたぞ!うまくいった!いいソフトじゃん!ワーオ!

人を幸せにするには、彼らが環境をコントロールしていると感じられるようにする必要がある。そのためには、あなたは彼らのアクションを正確に解釈する必要がある。インタフェースは彼らがそれに期待するように振る舞う必要がある。

従って、すべてのユーザインタフェースデザインの基本原理は:

ユーザインタフェースのデザインが良いというのは、そう振る舞うだろうとユーザが期待したようにプログラムが振る舞う ことである。

ラビ・ヒレルが言ったように、そのほかのすべては解説にすぎない。ほかのすべての優れたUIデザインに関するルールというのは、この原理の系にすぎないのだ。



> 第2章

この記事の原文(英語)は User Interface Design for Programmers Chapter 1: Controlling Your Environment Makes You Happy です。 

ジョエル・スポルスキは、ニューヨーク市の小さなソフトウェア会社  Fog Creek Software の設立者です。イェール大学を卒業後、マイクロソフト社、Viacom社、 Juno社でプログラマとして働きました。


このページは著者の個人的な意見を掲載したものです。
All contents Copyright ©1999-2005  by Joel Spolsky. All Rights Reserved.

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky