Loading...

デザインと研究

Original

2003年1月

(この記事は、NEPLSの2002年秋の会議での基調講演に基づいています。)

この国を訪れる人々は、アメリカ人が「あなたは何をしていますか?」と尋ねることで会話を始めることに驚くことがよくあります。私はこの質問が好きではありません。これに対するきれいな答えを持っていることはほとんどありませんでした。しかし、私はついにこの問題を解決したと思います。今、誰かが私に何をしているのか尋ねると、私は彼らの目を見つめて「私は新しいLispの方言を設計しています」と言います。この答えは、自分が何をしているのか尋ねられるのが嫌な人にお勧めします。会話はすぐに他の話題に移ります。

私は自分がプログラミング言語の研究をしているとは考えていません。私はただ、誰かが建物や椅子、新しい書体を設計するのと同じように、プログラミング言語を設計しているだけです。私は新しい何かを発見しようとしているわけではありません。ただ、プログラミングに適した言語を作りたいだけです。ある意味で、この前提は生活をずっと楽にします。

デザインと研究の違いは、新しいものと良いものの問題のようです。デザインは新しくある必要はありませんが、良くある必要があります。研究は良くある必要はありませんが、新しくある必要があります。これらの二つの道は、最終的には同じ目的地に向かっています。最高のデザインは新しいアイデアを使って前のものを超え、最高の研究は新しいだけでなく、実際に解決する価値のある問題を解決します。したがって、最終的には異なる方向から同じ目的地を目指しています。

今日私が話すのは、あなたのターゲットが裏側からどのように見えるかです。プログラミング言語を研究テーマではなくデザイン問題として扱うとき、あなたは何を異なって行いますか?

最大の違いは、ユーザーにもっと焦点を当てることです。デザインは、誰のためで、彼らが何を必要としているのかを尋ねることから始まります。例えば、良い建築家は、ユーザーに押し付けるデザインを作成するのではなく、意図されたユーザーを研究し、彼らが何を必要としているのかを理解することから始めます。

「彼らが必要としていること」と言ったことに注意してください。「彼らが望んでいること」ではありません。デザイナーとして働くことが、クライアントが言ったことをそのまま作る短期的な料理人のような印象を与えたくはありません。これは芸術の分野によって異なりますが、顧客が言ったことをそのまま作る人々が最高の仕事をする分野はないと思います。

顧客は、良いデザインがユーザーにどれだけうまく機能するかという意味で、常に正しいのです。もしあなたが誰も退屈させる小説や、座るのがひどく不快な椅子を作ったなら、あなたは悪い仕事をしたということです。小説や椅子が最も進んだ理論的原則に従って設計されていると言っても、それは弁護にはなりません。

それでも、ユーザーにとって機能するものを作ることは、単にユーザーが言ったことを作ることを意味しません。ユーザーはすべての選択肢を知っているわけではなく、彼らが本当に望んでいることについて誤解していることがよくあります。

この逆説の答えは、ユーザーのためにデザインする必要があるが、ユーザーが必要としているものをデザインしなければならないということだと思います。これは医者であることに似ています。患者の症状だけを治療することはできません。患者が症状を教えてくれたとき、実際に何が問題なのかを理解し、それを治療しなければなりません。

このユーザーへの焦点は、良いデザインの実践のほとんどが導き出される一種の公理であり、ほとんどのデザインの問題が中心にあります。

良いデザインがユーザーの必要を満たさなければならない場合、ユーザーとは誰でしょうか?デザインがユーザーのためでなければならないと言うとき、私は良いデザインが何らかの最低共通分母を目指すことを暗示しているわけではありません。あなたは好きなユーザーグループを選ぶことができます。例えば、ツールを設計している場合、初心者から専門家まで、誰にでも設計することができ、あるグループにとっての良いデザインは別のグループにとっては悪いかもしれません。重要なのは、あなたは何らかのユーザーグループを選ばなければならないということです。私は、意図されたユーザーに言及しない限り、良いデザインや悪いデザインについて話すことはできないと思います。

意図されたユーザーにデザイナー自身が含まれている場合、良いデザインを得る可能性が最も高いです。あなたが自分を含まないグループのために何かを設計すると、それはあなたよりも洗練されていない人々のためのものになる傾向があります。

それは問題です。なぜなら、ユーザーを見下すことは、たとえそれが善意であっても、デザイナーを腐敗させるように思えるからです。アメリカの住宅プロジェクトの中で、住むことを期待して設計された建築家は非常に少ないと思います。プログラミング言語でも同じことが見られます。C、Lisp、Smalltalkは、それぞれのデザイナーが使用するために作られました。Cobol、Ada、Javaは、他の人が使用するために作られました。

もしあなたが愚か者のために何かを設計していると思うなら、愚か者のためでさえ良いものを設計していない可能性が高いです。

たとえ最も洗練されたユーザーのために何かを設計しているとしても、あなたは依然として人間のために設計しています。研究では異なります。数学では、人間が理解しやすいからという理由で抽象を選ぶことはありません。証明を短くするものを選びます。これは一般的に科学にも当てはまります。科学的アイデアは、人間工学を考慮しているわけではありません。

芸術の世界では、状況は非常に異なります。デザインは人々に関するものです。人間の体は奇妙なものですが、椅子を設計する際には、それが設計の対象です。すべての芸術は、人間の興味や限界に迎合しなければなりません。例えば、絵画では、他のすべての条件が同じであれば、人が描かれた絵画は人が描かれていない絵画よりも興味深いでしょう。ルネサンスの偉大な絵画がすべて人々で満たされているのは、単なる歴史の偶然ではありません。もしそうでなければ、絵画というメディアは現在のような名声を持っていなかったでしょう。

好きか嫌いかにかかわらず、プログラミング言語も人々のためのものであり、人間の脳も人間の体と同じように不均一で特異なものであると私は疑っています。あるアイデアは人々にとって理解しやすく、あるアイデアはそうではありません。例えば、私たちは詳細を扱う能力が非常に限られているようです。この事実が、プログラミング言語が最初に良いアイデアである理由です。もし私たちが詳細を扱えたなら、機械語でプログラムすることができたでしょう。

また、言語は主に完成したプログラムの形式ではなく、プログラムが開発されるための何かであることを忘れないでください。芸術の分野の誰もが、二つの状況に異なるメディアが必要であることを教えてくれるでしょう。例えば、大理石は完成したアイデアには良い、耐久性のあるメディアですが、新しいアイデアを開発するには全く柔軟性がありません。

プログラムは、証明のように、過去にすべての方向に偽のスタートが分岐した木の剪定されたバージョンです。したがって、言語のテストは、単に完成したプログラムがどれだけきれいに見えるかではなく、完成したプログラムへの道がどれだけきれいだったかです。エレガントな完成プログラムを提供するデザインの選択は、エレガントなデザインプロセスを提供しないかもしれません。例えば、私はいくつかのネストされたバッククォートで満たされたマクロ定義マクロを書きましたが、それらは今では小さな宝石のように見えますが、それを書くのには最も醜い試行錯誤の何時間もかかり、正しいかどうかもまだ完全には確信していません。

私たちはしばしば、言語のテストが完成したプログラムがどれだけ良く見えるかであるかのように行動します。同じプログラムが二つの言語で書かれていて、一方のバージョンがはるかに短いとき、それは非常に説得力があります。芸術の方向から問題にアプローチすると、この種のテストに依存する可能性は低くなります。大理石のようなプログラミング言語を持ちたくはありません。

例えば、ソフトウェアを開発する上で、インタラクティブなトップレベル、Lispで言うところのリード・評価・印刷ループを持つことは大きな利点です。そして、これを持つと、言語のデザインに実際の影響があります。例えば、変数を使用する前に宣言しなければならない言語にはうまく機能しません。トップレベルに式を入力しているとき、xにいくつかの値を設定してからxに対して何かを行いたいと思います。最初にxの型を宣言する必要はありません。どちらかの前提に異議を唱えるかもしれませんが、言語が便利であるためにはトップレベルを持たなければならず、必須の型宣言がトップレベルと互換性がない場合、型宣言が必須の言語はプログラミングに便利であることはできません。

実際には、良いデザインを得るためには、ユーザーに近づき、近くに留まる必要があります。特に最初の段階では、実際のユーザーに対してアイデアを常に調整する必要があります。ジェーン・オースティンの小説が非常に良い理由の一つは、彼女が家族に声に出して読んでいたからです。だからこそ、彼女は自己満足的なアート的な風景の描写や、気取った哲学的な考察に陥ることはありません。(哲学はそこにありますが、それは物語に織り込まれており、ラベルのように貼り付けられているわけではありません。)平均的な「文学的」小説を開いて、それを自分が書いたものとして友人に声に出して読んでいることを想像すると、そのようなものが読者に対してどれほどの押し付けであるかを非常に強く感じるでしょう。

ソフトウェアの世界では、このアイデアは「悪い方が良い」として知られています。実際、「悪い方が良い」という概念にはいくつかのアイデアが混ざっているため、人々は悪い方が本当に良いのかどうかについて今でも議論しています。しかし、その混合の中での主なアイデアの一つは、新しいものを構築している場合、できるだけ早くプロトタイプをユーザーの前に出すべきだということです。

代替アプローチは「ハイル・マリー戦略」と呼ばれるかもしれません。プロトタイプを迅速に出して徐々に洗練させるのではなく、完全で完成した製品を一度の長いタッチダウンパスで作ろうとします。私の知る限り、これは災害のレシピです。インターネットバブルの間に、無数のスタートアップがこの方法で自らを破壊しました。これが成功したケースを聞いたことはありません。

ソフトウェアの世界の外にいる人々が気づかないかもしれないのは、「悪い方が良い」が芸術全体に見られるということです。例えば、絵画では、このアイデアはルネサンスの時代に発見されました。今ではほとんどすべての絵画教師が、正確な絵を得るための正しい方法は、物体の輪郭をゆっくりと回りながら作業することではなく、誤りが蓄積し、最終的には線が合わなくなることを教えています。代わりに、正しい場所にいくつかの素早い線を描き、その後この初期のスケッチを徐々に洗練させるべきです。

ほとんどの分野では、プロトタイプは伝統的に異なる材料で作られてきました。金属に切り取られる書体は、最初は紙の上でブラシでデザインされました。青銅に鋳造される彫像は、ワックスでモデル化されました。タペストリーに刺繍されるパターンは、インクの水彩で紙に描かれました。石で建設される建物は、木で小規模にテストされました。

油絵が15世紀に人気を博したとき、最も興奮したのは、実際にプロトタイプから完成した作品を作ることができたからです。予備的なスケッチを作成することもできますが、それに縛られることはありません。絵を完成させる過程で、すべての詳細を作り上げたり、大きな変更を加えたりすることができます。

ソフトウェアでもこれができます。プロトタイプは単なるモデルである必要はありません。それを完成品に洗練させることができます。できるときは常にこれを行うべきです。これにより、途中で得た新しい洞察を活用できます。しかし、さらに重要なのは、士気に良いということです。

士気はデザインにおいて重要です。人々がそれについてもっと話さないことに驚いています。私の最初の絵画の教師の一人は言いました:何かを描いているときに退屈していると、その絵は退屈に見えるでしょう。例えば、あなたが建物を描かなければならないとしましょう、そしてあなたは各レンガを個別に描くことに決めます。あなたはこれをしたい場合はできますが、途中で退屈して、各レンガを観察するのではなく機械的にレンガを作り始めると、その絵は単にレンガを示唆した場合よりも悪く見えるでしょう。

プロトタイプを徐々に洗練させて何かを構築することは、あなたを関与させ続けるため、士気に良いです。ソフトウェアでは、私のルールは:常に動作するコードを持つことです。もしあなたが1時間後にテストできる何かを書いているなら、あなたには即座の報酬の見込みがあり、それがあなたを動機付けます。芸術でも同じことが言え、特に油絵ではそうです。ほとんどの画家は、ぼやけたスケッチから始めて、それを徐々に洗練させます。このように作業すれば、原則として、実際に未完成に見えるものを持って一日を終える必要はありません。実際、画家の間には「絵は決して完成しない、ただ作業を止めるだけだ」という言い回しさえあります。このアイデアは、ソフトウェアに取り組んだことがある人には馴染み深いでしょう。

士気は、洗練されていないユーザーのために何かを設計するのが難しいもう一つの理由です。自分が好きではないものに興味を持ち続けるのは難しいです。良いものを作るためには、「わあ、これは本当に素晴らしい」と考えている必要があります。「なんてクソなものだ、あの愚か者たちはこれを気に入るだろう」とは考えてはいけません。

デザインとは、人間のために物を作ることです。しかし、ユーザーだけが人間ではありません。デザイナーも人間です。

これまでずっと「デザイナー」について話してきたことに注意してください。デザインは通常、単一の人の管理下にある必要があります。にもかかわらず、複数の人が研究プロジェクトで協力することが可能なようです。これは、研究とデザインの間の最も興味深い違いの一つだと思います。

芸術の中には有名な協力の事例がありますが、それらのほとんどは核融合ではなく分子結合のケースのようです。オペラでは、一人がリブレットを書き、別の人が音楽を書くことが一般的です。そしてルネサンスの時代には、北ヨーロッパの職人がイタリアの絵画の背景に風景を描くために雇われることがよくありました。しかし、これらは真のコラボレーションではありません。それらは、ロバート・フロストの「良いフェンスは良い隣人を作る」の例のようです。良いデザインの事例を組み合わせることはできますが、各プロジェクト内では、一人が管理しなければなりません。

私は、良いデザインが一人の人間がすべてを考え出すことを必要とするとは言っていません。あなたが信頼する誰かのアドバイスほど価値のあるものはありません。しかし、話し合いが終わった後、何をするかの決定は一人の人に委ねられなければなりません。

なぜ研究は協力者によって行われ、デザインはできないのでしょうか?これは興味深い質問です。私は答えを知りません。おそらく、デザインと研究が収束する場合、最高の研究は良いデザインでもあり、実際には協力者によって行うことができないのかもしれません。最も有名な科学者の多くは、一人で働いていたようです。しかし、ここにパターンがあるかどうかはわかりません。多くの有名な科学者が、協力があまり一般的でなかった時代に働いていた可能性もあります。

科学の物語がどうであれ、真のコラボレーションは芸術の中では非常に稀なようです。委員会によるデザインは悪いデザインの同義語です。なぜそうなのでしょうか?この制限を打破する方法はあるのでしょうか?

私はそうではないと思います。良いデザインには独裁者が必要です。一つの理由は、良いデザインは一貫している必要があるからです。デザインは人間のためだけでなく、個々の人間のためのものです。もしデザインが一人の頭の中に収まるアイデアを表しているなら、そのアイデアはユーザーの頭の中にも収まるでしょう。