実世界指向プログラミング

「紙GUI」でビデオデータの流れを指示しているところ
計算機の外側のデータや事物と計算機内データとのギャップを 最小にすることによって、 計算機を意識することなく透明な存在として活用する 実世界指向インタフェースが近年注目を集めています。 実世界指向インタフェースは 実世界の事物を主体として扱うものであるべきにもかかわらず、 現状では主体があくまで計算機であり、 その入出力装置を工夫したにとどまっているものも多いようです。 たとえば 「7時になればベルが鳴る装置」(目覚し時計)をUNIXで実現する場合、 atコマンドなどを起動して、 サウンドを鳴らすプログラム名とベル音のサウンドファイル名と 起動時刻を指定することになるでしょうが、 これらはすべて計算機上のシンボル(名前や数字)を介した 間接的な操作や指定にもとづいているため理解が困難です。 一方、アナログ目覚し時計を使う場合は、 時計を示す文字盤の上で視覚的に連続的に 起動時刻を指定できるし、 現在時刻を将来に回してみれば未来の実際の動作も確かめる ことができるので UNIXでの場合に比べはるかに直感的であり 間違いも少ないと考えられます。 このように、実世界の事物そのものを使ってプログラミングを 行なうことは、それを示すシンボルなどを使ってプログラミングを 行なうことに比べてはるかに容易であることが多いと考えられます。 計算機上のテキストエディタでプログラミングするのではなく、 実世界の事物を最大限に活用して 実世界指向インタフェースのプログラミングを行なう 実世界指向プログラミングを提案します。
増井俊之. 実世界指向プログラミング. 第40回冬のプログラミングシンポジウム予稿集, pp.19-25. 情報処理学会, January 1999. PDF(180KB) PostScript(122KB)

実世界指向プログラミングを行なうことにより、 実世界の事物のみを使って以下のようなプログラミングを 行なうことができるようになるでしょう。

実世界指向プログラミングによるビデオ予約システム
ビデオ予約がわかりにくい理由のひとつに、 実際の時間の経過/チャンネル選択/録音ボタン操作と、 予約時の操作が異なっていることがあるでしょう。 実際の操作で例示で予約行為を示すことができれば 少しは良くなるかもしれません。
普段の操作画面。3行目は時間軸で、予約状況を示す。
  +----------------------------+
  | 1998 3/16  << * > >>  10ch |
  | 15:20 PM   REC   CLR       |
  | |------------------------- |
  +----------------------------+

予約時: 時刻/日付を変更すると予約モードとなる。
  +----------------------------+
  | 1998 3/18  << * > >>  10ch |
  | 18:00 PM   REC   CLR       |
  | -----|-------------------- |
  +----------------------------+

チャンネル変更/REC指定
  +----------------------------+
  | 1998 3/18  << * > >>  3ch  |
  | 18:00 PM   REC   CLR       |
  | -----<-------------------- |
  +----------------------------+

時刻を変えて停止を指定
  +----------------------------+
  | 1998 3/18  << * > >>  3ch  |
  | 20:00 PM   REC   CLR       |
  | -----<==>----------------- |
  +----------------------------+

CLRにより最初の状態に復帰。予約状況が表示されている
  +----------------------------+
  | 1998 3/16  << * > >>  10ch |
  | 15:20 PM   REC   CLR       |
  | |----<==>----------------- |
  +----------------------------+

Toshiyuki Masui@pitecan.com
$Date: 2003/04/30 14:53:26 $