対話

オーバーラッピングウィンドウは大人から見ればくそなUIのデザインである。」とAlanが言っていた。子供向けにデザインしたからあれが良いのだが、という文脈である。

実は僕も前々から同じことを思っていたのだ(Andreasじゃないけど)。僕が思っていたのは以下のようなことである。オーバーラッピングウィンドウと言うのは複数の作業を並行して(つまりちょっとづつ切り替えながら)進めるとき、他のコンテキストがあったことを忘れないために、視覚的に他のコンテキストを表現しておく、というものである。ただ、大人になって頭の中に複数のコンテキストをしまえるようになった人は、ひとつのアプリケーションなりウィンドウなりが前面の全面を占めていて、一覧性の高い状態で作業をしたほうが良いのでは、ということである(高々XGA程度の解像度から来る制限といえるのかもしれないが)。

大学院生時代の後輩に某T井君という人がいた。彼は、fvwmの仮想デスクトップを使って、1アプリケーションごとにひとつづつ仮想デスクトップを割り当て、それぞれが全画面で動くようにして使っていた。問題は、しばしば次に行きたいアプリケーションがどこにあるのかわからなくなっていて、無駄なデスクトップスイッチを繰り返していたところである。ある日、「全画面で使っているんだから仮想デスクトップの意味はなくて、1デスクトップでウィンドウの重なり具合を変えれば良いだけじゃん」と言ったのだが(僕はtwmをカスタマイズしていて、特定のキーストロークで特定のアプリケーションのウィンドウが前面に出るようにしていた)、彼は頑固なところがあって「いや、こうすると画面が広く使えるんですよ」と繰り返すのみだったので、話の接ぎ穂がなく少々閉口したことを覚えている。画面のピクセル数は仮想デスクトップにしても変わらないと思うのだが。

といういきさつがあったので、後半の「オーバーラッピングウィンドウは大人には良いものではない」ということには昔から同意していた気がする。複数のコンテキストをデザインした人たちはそれは判っていたのだが、その上で子供向けにデザインしたものだった、という事情である。

人間の情報処理能力はだいたい同じくらいだが、コンピュータの能力は飛躍的に上がっている。マウスとGUIは人間とコンピュータがやりとりするべき情報量の変化に伴って、直感的に操作できる「良いパイプ」から、「ボトルネック」に変わってしまっているわけではある。

あと他にAlanが言っていたのは以下のようなことである。Chuck Thackerなどと計算したとき、ALTOが達成した効率(文脈から言うとトランジスタ辺りの計算量といった意味)と今日のパーソナルコンピュータを比べると、今日のコンピュータは(3GHz+多数の周辺機器コントローラなどなど)は、ALTO(6MHz程度のマイクロプロセッサだけで周辺機器コントローラなどはなかった)600倍くらいは早く動いてもおかしくない。が、実際には50倍くらいにしかなっていない。ハードウェアのアーキテクチャが低レベルな言語を狙いすぎているのと、ムーアの法則に頼って無駄なことをどんどん追加したために、10倍以上の性能を失ってしまっている。

(以下は大島の考え)。プロセッサ製造技術のほうはどんどん独自に進展してしまうのでなかなか難しかったと思うが、プレイステーションを見たりすると、同じだけのトランジスタでもシステム内の並列性を考慮してちゃんと振り分けて設計すると相当に違うことができるということがわかる。もし、現代のメインストリームの汎用プロセッサが高級言語が念頭に置かれてデザインされていたとすれば、Javaなども今より10倍早く動いていたかもしれない。

学生のころは、トランジスタ数が同じくらいあればシステム全体のスピードもだいたい同じようなところに落ち着くし、プロセッサは言語のことは考えずにどんどん速いものにしてくれれば、我々言語実装屋はなんとかその上で工夫して早くすれば良い、というような考えを持っていたこともあった。しかし、トータルにデザインするともっともっと速くなる可能性がある、というところを見落としてはならないと思う。