コンピュータの複雑化と単純化

複雑化

パソコンの歴史は複雑化の歴史である。マシンパワーが増大するにつれて可能なことが増えるので、新しい機能が追加され続ける、という熱力学の第2法則みたいな必然性がある。
しかし人間の注意力は一定であり、新しい何かを使うようになれば、その代替財に当たる古い機能は使わなくなる。それでも古い機能が削除されることはない。ユーザーが古い機能を使うのをやめるタイミングはばらばらだし、古い機能の存在を前提に新しい機能が構築されていることがあるからだ。

複雑化の歴史は多層化の歴史だ。最初期のパーソナルコンピュータはCPUの機能がむき出しであり、特定のアドレスからプログラムが走ることを前提にしていた。ユーザーインターフェイスは一層しか無かった。続いて大メーカーが8bitのパーソナルコンピュータを製造するようになると、(一部を除いて)電源を入れるとBASICが走り、その上で遊ぶのが一般的になった。裏側に手を突っ込む方法もあるにはあったが、ほとんど一般的ではなく、目の前の完結した環境がすべてだった。アプリケーションが走っている状態と走っていない状態の2層だけが存在していたわけだ。さらにマルチタスク環境が実現すると、みんなOSを意識するようになった。マシンレベル、OSレベル、アプリケーションレベルの3層だ。ブラウザが登場すると、そのウィンドウひとつひとつを世界とみなすことが普通となった。Javaアプレットのようにブラウザ内のサンドボックス環境で走るプログラムもそうだが、webページのそれぞれが、そもそもひとつの世界だ。
これで終わりではない。現代のパーソナルコンピューティング環境はマルチユーザーシステムであり、目の前のパソコンの中に、その時マシンの前に居るユーザーからは見えないプライベートな空間が存在する。また、かつてのBASIC環境のようにユーザーが気軽にプログラミングできる環境もターミナルの中に残っている。逆に言えば、手軽なプログラミング環境はターミナルの中に押し込められており、ウィンドウシステムとは別の生態系を持つ。さらに言えば、ターミナルレベルのプログラムにウェブインターフェイスを付けることは、また別の生態系である。

純化

機能の個数が増えたり、操作したい機能が分割されていると、やりたいことをやるのに時間がかかるようになる。シンプルで物を持たない生活を目指す人たちの基本思想は「探す時間が一番無駄」だ。コンピュータを使う大きな目的のひとつは仕事にかかる時間の削減なのに、機能にアクセスするために時間がかかってはしょうがない。

ユーザーの側から見れば、知りたい情報、操作したい機能は、究極的には同時に1つだけだ。操作したい機能をいちいち探さなければならないのはストレスであり、ユーザーに直接関わる機能にダイレクトにアクセスできない隔靴掻痒感は、目の前のマシンが自分のものでないかのような気分をもたらす。

分割が不便さをもたらす例として、Linuxで音量を調節する、という操作がある。デスクトップ環境が走っていれば、画面の上や下にある音量調節をマウスでクリックして調節すれば良い。しかし家庭用サーバからBGMを流しているような場合、音量を調節するには自前でインターフェイスを用意してミキサーにアクセスする必要がある。コンソールから調節できるミキサーアプリケーションも存在するが、家庭用サーバのディスプレイをオンにして、ログインして、ミキサーを立ち上げて音量を調節…というのは気が遠くなる。せめてログインしなくてもキーボードから簡単に操作するとか、出来ればリモコンで簡単に変えたいと思う。このためにわざわざウェブインターフェイスを作ったこともあるが、別のマシンからアクセスして操作するという手順は十分に面倒だった。安全な操作はダイレクトに可能であってほしい。

逆にコンピュータからの情報提供も、環境が分割されればされるほど不便である。ターミナルの上で走ってるプログラムの実行が終わっているかどうかは、そのターミナルをフォアグランドに持ってこなければ分からない。表示の遅いウェブページを後ろに回すとそのまま忘れる。メールが来ててもメールソフトを開かなければ存在しないも同然である。重要な情報は一箇所に表示してほしい。

綱引き

人間は単純なものが大好きで、なるべく楽に目的を遂げたいのが自然だ。
しかし、複雑化・多層化にも必然性がある。単純化の欲求とまったく同根で、人間の注意力は限られている、という事実だ。作る側から見ると、分割統治というテクニックなしには管理しきれないのである。
これはプログラムを作るという点でもそうだが、セキュリティ上の都合もある。危険な機能は個別に隔離して管理しないと、マシン全体が危険にさらされるのだ。

  • すべてを一度に扱うには現代のコンピュータは巨大すぎる。
  • 便利に使うには「選ぶ」ということを避けたい。

パーソナルコンピューティング環境は、両者の間を行ったり来たり、迷いながら発達してきた。

解決?

スマートフォンタブレットはこれに対する優れた解で、メインストリームは完全にこちらに移ったように見える。
「複雑すぎるものは捨てちまえ!」
という考え方だ。正しい一種の断捨離であり、移った人はだいたい満足してる気がする。しかし機能を限定したこれらの機器を、一種の「後退」と感じる人間も多いので、パソコンも相変わらず使われている。

それでは「前進」とは何であろうか。
迷った時は両方
ではあるまいか。コンピュータには複雑化と単純化の両方の要求があり、それが両方とも正当であるならば、両方を充足すべきなのだ。

複雑さを含んだまま単純化するには、機能分割を変更すればよい。Plan9のセキュリティモデルは、マシンに直接アクセスできる人間は信用するより仕方ない、という割り切ったものだった。リモコン付属が流行したゼロ年台前半のパソコンのように、特定のハードウェアにアクセスできる人間には、その特定のハードウェアを簡単に利用できるべきだ、という設計のマシンは多かった。アクセスされても安全な機能を分割してダイレクトに触れるようにするという思想は、スマートフォンタブレットでは基本のものになりつつある。カメラ機能はネットワーク経由からは使えないがワンボタンで起動するのが便利に感じられるし、音量の調節に画面を開かなければならないスマートフォンは不便だ。

そして、最近はパソコンのOSでもこの思想が透徹されるようになってるよね…というのが、今日ちょっとMac OS X MavericksのNotification Centerをいじってみて思ったことだったりする。これはコンピュータからの情報通知を一元化するインターフェイスで、情報はすべて右上に勝手に表示され、履歴をたどることもできるが、機能は情報の通知に限定されているので、たとえばこれを使ってコンピュータから何かを取り出すことは不可能だ。OSのあらゆる層から使用できて、ターミナルのプログラムから通知することもできるようになっている。いわば「画面」というリソースのみに絞ったダイレクトアクセスであり、この考え方に歴史の流れを感じたのである。そしてそのような目で見てみると、Windows 8もコンパクトでダイレクトなアクセスだけをひたすら狙ってる感じがする。

この動きを、複雑さを裏に隠して単純に見せる、と呼んでしまうと、ほとんど当たり前のことにしか感じられないのだけど、歴史の流れとして、機能分割が、というか抽象化のレベルが大きく変わってきてるというのが今回言いたいことである。

カメラとして使えばカメラにしか、音楽プレイヤーとして使えば音楽プレイヤーにしか、テキスト入力環境として使えばテキスト入力環境にしか感じられない、そんなダイレクトさを目指してすべてのコンピュータが発達する、それもこれまでとはまったく違った徹底度で、というのが、今日のオレ様の予言です。