- 日記と JavaScript (2)

2004/09/29/Wed.日記と JavaScript (2)

台風21号の影響で長らくラボに足止めを喰らった T です。こんばんは。

昨日に引き続き、「日記と JavaScript」について書く。まあ、それでは汎用性がないので、「文章とプログラミング」と言い換えても良い。

内部処理とインターフェイス処理

プログラムを書いていて、一番難しいなと思うのが、インターフェイス処理である。それに比べ、いくら複雑になろうとも、内部処理は純粋に機械的なシークエンスであるから、これは時間さえかければ何とかなる。

もう少し具体的に書く。昨日の日記で掲載した「トランプのシャッフル・エンジン」は内部処理である。「トランプをシャッフルする」という動作は、「カードの並び方をランダムにする」ということに等しい。そこで、特定の 52個の要素からなる配列(=トランプのセット)を用意し、その要素をランダムに並べ直した新たな配列(=シャッフルしたトランプのセット)を作る。そういう演算をしている。

しかし、これはコンピュータの中の話である。人間には何が起こっているのかわからない。そもそも、ユーザが「シャッフルしろ」という命令を出さないと、シャッフル・エンジンも動かない。そこでインターフェイスを構築する必要が出てくる。

例えば「シャッフル」というボタンを用意し、それが押されるとシャッフル・エンジンが起動するという仕組みを作る。内部処理が行われたら、今度はシャッフルされたトランプをディールし、ディスプレイに配られたカードを表示する、といった後処理をする。ここまでして、ようやく「トランプがシャッフルされて配られたんだな」ということが、人間にもわかる。

こうしたフロントエンド側のプログラミングは、大事なことではあるのだが、非常に面倒臭い。本質的なルーチンとは全く関係ないコードを、延々と書かなければならないのである。プログラムする側から言わせれば、本当にやりたいことはアルゴリズムの記述であったり、メイン・ルーチンの構築であったりするわけだから、それが「実動するソフトウェアを作りたい」という気持ちを上回ってしまうと、もうコーディングする意欲は失われてしまう。

表現とインターフェイス

前置きが長くなったが、ここから日記(あるいは文章)の話に変わる。要するに「書きたいこと」というのは、書く以前から俺の頭の中にあるわけで、それをわざわざ文章に起こすというのは、いわばインターフェイス処理みたいなものである、ということが言いたいわけだ。

完璧な文章が書けるわけもないので、俺の内にある「書きたいこと」と、実際に書かれた文章が意味することの間には、常に微妙な(ときには大幅な)ズレがある。俺の中にある事柄は、それなりに内部で処理されているわけだが、それを正確に伝達するインターフェイスが構築できていないのである。日々こうして何かしら書いているのは、いわばプログラマがデバッグに精を出すようなものだ。どこかしらにある「達意の文章」とやらを目指して精進する毎日、と言っても良いかもしれない。

それに恐らく、これは文章に限ったことではなくて、「表現」全般について言えることなのではないか。音楽家は、彼の奥底で奏でられている旋律を、寸分違わず楽譜に記せているのだろうか? 画家は、彼の心の網膜に映る映像を、そっくりそのままキャンバスに描き出せているのか? そういう問題である。

表現力 = 社会性

いや、俺は作家や芸術家を目指しているわけではない。もっと日常的なことにも、この課題はついて回る。例えば、話したいことを話したいように話せているだろうか。これは簡単なようで難しい。内部処理しかないプログラムが、ソフトウェアとしては何の価値も持たないように、表現力の欠如は、しばしば彼の内的な素晴らしさを無に帰せしめる。宝の持ち腐れというやつだ。

「本当の自分って何だ?」でも書いたことだが、俺は「言わなくてもわかる」というのは、怠慢であり甘えであると思っている。「つまらないのでインターフェイスのコーディングはしません」というプログラマを想定してみると良い。彼は即日馘首されるだろう。

人間でもプログラムでも、内部処理の性質がその本質を決める。しかし、それだけでは「意味」や「価値」は生じない。これは「自己満足論」ともリンクする話だが、俺はどちらかというと自足を求める人間なので、「意味ある人生たれ」に類する言葉は嫌いである。ただ、他者との関係性において何かを見出したいならば、優れたインターフェイスがあるに越したことはない。最初から表現を放棄しておきながら、「意味を、価値を与えてくれ」とねだるのでは赤子と同じだ。