富豪的プログラミング

ちょっと貧しいGUI

ユーザインタフェースのプログラムといえばすっかり グラフィカルユーザインタフェース(GUI)があたりまえになりました。 ところが最近の計算機はメモリもディスクも大量に装備しているし CPUパワーも従来とは比べものにならないのに、 意外と貧乏臭いインタフェースが生き残っているようです。 よく見られる以下のようなインタフェースはちょっと貧しい と思われます。 ところで10年ぐらい前はワークステーションでもGUIがあまり 普及していなかったので、ウィンドウシステムや各種のインタフェース ツールキットの研究開発が盛んでしたが、最近は 新しいウィンドウシステムが作られたなどという話をとんと聞きませんし、 GUIのプログラミング手法とかデバッグ手法というのも ほとんどお目にかかれなくなってしまいました。 実際ここ数年のbit誌を見てもそういう記事はほとんどありませんし、 計算機インタフェースの学会でもその手の研究は あまり流行っていないようです。

この理由はずばり、ウィンドウシステムやツールキットが充分普及したので、 苦労しなくてもGUIが簡単に作れるようになってしまったという 思い込みが浸透したからだろうと思います。 特に素晴しいプログラミング技術やインタフェース部品が 発明されたわけではありませんから、 実のところはユーザの我慢レベルとプログラマの我慢レベルが 妥協点に達してきただけではないかと思います。 この過程で結構貧乏臭いインタフェースが標準になってしまったようです。

WebのCGIがその典型的な例ではないでしょうか。 かたやインターネットの音声だの動画だのが話題になっている 時代に、ユーザ側からは字の並んだだけのメニューからの選択や 文字入力しかできないという仕様はかなり貧しいですが、 JavaやVRMLの話題が沸騰しているのに対し、 CGIの仕様が問題になっているとか新しいバージョンが計画されているとか いう話はあまり聞きません。 CGIでも最低限の指示はできますし、 ユーザが簡単にプログラマに変身できてしまうので、 貧しい仕様で満足させられてしまっているようです。 これでは昔のBASICのようです。

富豪的プログラミング

プログラマというものは、つい昔の癖で効率的なプログラムを工夫したり 資源を節約したりしようとしがちですが、ユーザインタフェースの プログラムを開発するときにはこれが裏目に出ることもあります。 というのも、ユーザインタフェースのプログラムでは 機械の効率よりも使い勝手が優先されるべきですし、 プロトタイプの作成とその評価/改良のサイクルを 数多く繰り返す必要があるのですが、 計算機資源を節約しようとすると これらの条件が後回しになりがちだからです。

これを解決するのが富豪的プログラミングです。 以下のような富豪的プログラミングを行なえばこのような問題は 起こりません。

富豪的プログラミングでは現在の状態を記憶しておく必要が少なくなるので プログラムが短く、バグを含みにくくなります。また、ユーザが何か 操作を行なう度にシステムがすぐに反応するので、直感的操作が可能に なります。

アイコンのドラッグのようないわゆる 直接操作インタフェースは富豪化への第一歩です。 ユーザの入力により 検索条件が変わるとすぐに検索を再実行して表示を更新する手法は 動的検索と呼ばれており、 将来の検索システムでは常識になると思われます。 またユーザの操作に応じてリアルタイムに連続的に ズーミングを行なうことにより巨大なデータを簡単に 操作しようというズーミングインタフェースが 最近注目を集めています。 こういった インタフェース手法は富豪的な発想が無いと思いつかないでしょう。 豊かな資源から豊かな発想が生まれるのです。

Webの成功はその富豪的発想が鍵だったのではないでしょうか。 クリックする度に海外から画像を転送するなどというのは 貧乏人には思いもよらない発想です。 最近は結構富豪なインタフェースツールキットもあるようで、 カーネギーメロン大学で開発されたAmuletというツールキットを使うと ``Hello, world''とウィンドウに表示するプログラムの サイズが5MBになります。素敵な富豪感覚ですね。 腹が減ってはこれからのシステム設計はできないのかもしれません。

もちろん 発想がいくら富豪でも実際にプログラムが動かなければ仕方がありませんが、 最近のPCは昔に比べると超大富豪的ハードウェアを持っていますから 何も気にしなくても富豪的プログラムが動いてしまうことも多いですし、 プロトタイプの時だけでも高速な計算機を使って 豊かな気持ちでインタフェースを設計するのが大事でしょう。 まだまだ貧しさがひそんでいるかもしれません。

というわけで、これからのGUIプログラム/デバッグは 富豪化がポイントでしょう。 私は最近は富豪的プログラミングしかしないのでGUIのデバッグなど したことがありません。はずなんですがね。

by 増井俊之 (富豪化理論研究家)