この話題は naoyaのはてなダイアリー - インタフェースの話_ を読んで書きました。
さて。
ビル・アトキンソンという世界でもトップのプログラマが居た。彼は初代MacintoshのQuickDrawというグラフィック描画機能を作ったことで有名だ。
円と楕円を高速に表示するために、連続した奇数を足し算すると「整数を二乗した値」に成ることを利用したりなど、数々の天才的なプログラミングテクニックを駆使していた。(初代Macが使用していた68000MPUには平方根をまっとうに計算するのに必要な浮動小数点機能が無かった。つまり天才による才能と工夫が必要だった)
円と楕円の高速表示に成功したアトキンソンは、それを見たスティーヴ・ジョヴズに「次は角が丸い四角形を描画できるようにしろ」と言われた。しかし、アトキンソンは拒絶した。
「たかが四角形が角丸四角形に成ったからと言って、大差はないだろう。それに角丸は(当時の)プログラミングテクニック的にめんどくさいから、そのコストに見合った成果が有るようには思えない。作るのがめんどくさいんだから必要だとは思えない」というような発想をしたのだと想像する。
結局、アトキンソンはジョヴズに強く説得されてしぶしぶ角丸四角形を実装した。のちに角が丸いウインドウによって、Macが親しみやすいGUIと優れたデザインを持っていると評価されて、ジョヴズの美的な判断が正しいことが証明された。(現代でもCSSで角丸デザインをする方法がTipsとして重宝されていたりするので、デザイン的に角丸四角形の需要が高いことは説明不要だろう)
この話でポイントなのは、優れたプログラマが持つ「プログラミングするためのコスト」という基準によって、一般的なユーザーが持つインターフェースや見た目に対する基準を見誤ってしまうことだろう。
プログラマは「こんなに組むのがめんどくさい要素だから、これは大した差ではない」と思い込んでしまうことってないだろうか?
Perlなどのスクリプトで配列やハッシュで組みやすいから、Webの画面を一次元基準で考えてしまいがちだとか。
参考書籍:
見つけた関連url:
参考Webリンク:
連続した奇数を足し算すると「整数を二乗した値」に成ることを利用する手法についても軽く触れられている。
Folklore.org: Macintosh Stories: Round Rects Are Everywhere!_
Bill's technique used the fact the sum of a sequence of odd numbers is always the next perfect square (For example, 1 + 3 = 4, 1 + 3 + 5 = 9, 1 + 3 + 5 + 7 = 16, etc). So he could figure out when to bump the dependent coordinate value by iterating in a loop until a threshold was exceeded. This allowed QuickDraw to draw ovals very quickly.



コメントを読む(7) [ コメントする ]