言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

柔らかいソフトウェア

柄にも無く始めたワードの作業はたぶん終了。こうして一つ新しいソフトの使い方を覚えると、なんとなく今まで固いと思っていたものが柔らかく感じるようになる。今まで自分とあんまり関係なくて、表面だけを使っていた物が、気がつくと押すとへこむ柔らかい物になっていて、柔らかい物だからつい気になって、何かとつい触ってしまうみたいな。まるで人間関係にもにた関係。

またそれは単に一つのソフトに限らなくて、新しい事を覚える事によって頭の中のソフトの地図に当たらしい場所が書き込まれて、それが意外だった他の場所に繋がっているのを発見する。

僕はずっとサーバーのプログラムを書くことで生きてきたので、ユーザが直に触る部分をあまり作っていない。それで最近触った emacs lisp と ワードVBA とで両方に感じるある雰囲気が分かって楽しかった。例えばユーザインタフェースと実際の動作の分離。ユーザの操作を引数の無いメソッドとして実装しておいて(実際にはemacs lispインタラクティブ関数は引数があるのだが)、その機能をキーボードからでも、メニューからでも、ボタンからでも同じように利用出来るようにするとか。

大雑把に、これも参照整合性を指向していると言える。モードレスと言ったほうが通じが良いか。つまり、キーボードでもボタンでも、はたまた他のマクロからでも同じように動かせるという事は、少なくとも外見上は見えない情報に出来るだけ依存しないように作ってある。

こうして勝手に色んなソフトの地図を広げて、だんだんと柔らかい領域を増やす作業が、単にソフトの使い方を覚える以上の意味になれば良いんだけれども。