Unixのコマンドラインは最高の UIである - 帯域幅をフルに使う

Unixコマンドラインが、よいUIとして必須だけど現在の GUIがなかなか満たせない以下の性質を満たすことをいいたい。

  • 一貫している
  • シンプル
  • カスタマイズ可能
  • 実用に耐える

つまり、コマンドラインGUIより優れているのだ、と強弁してみる。

よいUIに求められるもの

まず一貫性とは、どの部分においても同じ操作は同じ効果をもたらすこと。
これが満たされれば、各種アプリケーション間において同じ操作が使えるので、いちいちアプリケーションごとに操作を覚える必要もない。

まずい例として Windowsをあげる。Windowsでは多くの場合、文字の部分をドラッグすれば選択できる。でもエラーダイアログなどでは選択できないことが多い。これは一貫性を欠いている。おかげでエラーメッセージを保存しておくことが難しい (WinSpyとかでできることもあるけど)。

シンプルというのは、必要とする語彙(操作) が少ないことだ。たとえば Macなどは長らく右クリックをサポートしていなかった。それがユーザのためになるシンプルさだと信じられていたからだ。実際、Windowsのタスクトレイのアイコンなどは、左右のボタンでなにが起こるか予測不可能なことも多い。

カスタマイズは言うまでもなかろう。テーマなどの見栄えのみならず、さまざまな機能の割り当てをユーザごとに変えたりできることが望ましい。

そして実際のアプリケーションに使えなくては意味がない。

Unixでは?

以上のことを踏まえて Unixコマンドラインの UI環境も見ていこう。

Unixの伝統的なコマンドライン環境の場合、ユーザが覚えなくてはならないのはシェルとエディタの操作だけだ。これだけ、である。

これさえ使えればほかの多くのアプリケーションはテキストを通してやり取りするので、一々操作を覚える必要はない。さらに、エディタやシェルの新機能 (単語移動とかヒストリ操作とか) を覚えればそれはたちまちほとんどすべてのアプリケーションの生産性に寄与するのだ。

Cのソースのために括弧ごとの移動を覚えたら、それは TeXの編集にももちろん使える。すばらしい一貫性である。一々 FireFoxの操作などを覚えている場合ではない。

シンプルさに関していえば、最低限コマンドラインに文字を打ち込めばいいだけなので (そのレベルで我慢していれば) 非常にシンプルである。もちろん、Qwertyキーボードを覚える必要はあるが、GUI環境でもテキストを扱おうと思えば必須である。

カスタマイズに関しても優れている。シェル、エディタともに完全にユーザの好きなものに置き換えができる。たとえば筆者は csh派であるが、より強力な zshを使う知り合いも多い。また、エディタについても emacs、viなどが分かれつつ並存している。

そして、「使えるか」に関しては、アプリケーションが GUICUIでは大きく違うので一言では言えない。が、多くの事務的処理に関しては使える。「Unixの楽しみ」などをみてみてほしい。

人間とPCの帯域幅

強弁したが、一番 CUI環境が優れているのは「人とPCの帯域幅」を広げてくれ、スムースに通信させてくれる技術だから、という気がする。

ポインティングデバイス帯域幅というのはむちゃくちゃ狭い。

技術的には瞬時に画面上のどこにでも飛べるはずだが、実際人間の認知能力はそうはなっていない。たとえば、1秒間で画面上のどんな目標でもクリックできるか、といえばそうではない。より細かい位置あわせをするには長い時間が必要になるのだ。ましてや、1dot単位であわせることなんて不可能である。
1秒間では画面全体の 1000分の一の面積にカーソルをあわせるぐらい、つまり 10bitぐらいの情報量しか渡せない。10bpsといったところだ。

それに対してキーボードを使えば 8文字/秒ぐらいで打ち込める。キーボードには alphabet + 数字 = 36以上のキーがあるから、少なめに見積もっても一打鍵 5bitの情報量がある。つまり 40bpsの帯域幅になる。これだけで 4倍の帯域幅になるわけだ。

つまりキーボードを使うと、マウスに比べてPCとのコミュニケーションがとりやすく、より高度な情報処理が行えるはずだ。つまり仕事の効率も上がることになる。

ほかにも、マウスは常に画面を見ながら位置などの feedbackを行わねばならないので認知的にも負担が大きいなどの点もあげつらいたいが、よしておこう。

そういうわけで

以上、冗談半分ではあるが、本気も半分である。帯域幅を有効に使って価値あるPC生活を送ってもらいたい。