ホームページ目次前の話次の話

今年もプログラミングから逃げられないので虚構プログラムを開始

2008年1月31日

20代のころは、何も考えず、世の中の誰もまだ使ったことのないようなコンピュータがあれば、 興味本位で調べたり、さらにプログラムを作ったりしていた。 動かないコンピュータ、動くはずのない開発中のコンピュータ向けのプログラム開発とか、 もっともっと研究的で、そもそも可能かどうかを検討するためのプログラムなどをやってきた。

そんなこんなで、わからんコンピュータ、OS、プログラミング言語を噛り続けてきたためか、 どうも最近歯医者へ行くことが多くなった。2月には一度歯科検診に行かねばならない。 また、最近は肩の調子がよろしくない。 昨秋、やむなく整形外科へ行き見てもらったら、50肩と言われてしまった。 せめて40肩と言って欲しかったが、よく考えてみると年齢も50の方が近いのであった。

昔は、あんなボロいコンピュータで、よくも延々とプログラムを書いていたものだと思う。 スクリーンエディタさえない時代に、何万行ものプログラムを書けたものだと思う。 最近は、プログラムを書く量も激減し、既に年間数万行のオーダーまで落ちてしまった。 最盛期には、新たに書き起こすのでも、月間1万行、安定して毎日500行は書けたのだが、 最近、1日平均500行は難しくなった。

昔は、使うライブラリも覚えていて、ドキュメントを見ることもなく書いていたのだが、 今使用しているJavaときたら、APIドキュメントを画面上に常に開いてプログラミングしているザマである。 まあ、あのくらいAPIが膨大、肥大、巨大、であると、とても覚える気がしないので、 結局調べ方だけを習得した。

今年はそろそろプログラミングを卒業できるかと思っていたのだが、 残念ながらそうはいかないようであった。 去年あった同窓会では、同年代の連中はコンピュータは道具として使うことはしても、 プログラムを作って遊んだりはしていないようであった。

最近、どんどんユーザインターフェイスが向上していて、この部分を作るのが結構面倒になってきている。 WEBサイトのような場合には、やるべきことが比較的決っているからまだ良いのだが、 人間と対話する部分が多いアプリケーションとなると、 プログラム開発の過半数がユーザインターフェイスの作成に費やされたりする。

プログラム開発では、MVCアーキテクチャー(Model,View,Control)ということが言われているらしい。 要するに、プログラムをModel(中身)部分、View(見てくれ)部分、Control(制御)部分 に分ると良い作りになるという哲学、あるいは宗教である。

しかし、この宗教に従って美しく感心するようなプログラムにはまだ見ていない。 Javaの場合、ボタンを作ったら、それに押されたときのアクション(制御)を引っつける。 そのとき、アクションは、実はモデル(中身)に依存することも多い。 普通のJavaの参考書にあるプログラムの殆どはMVCからは遠いのである。

今回、アプリケーション本体は同じなのだが、複数のユーザインターフェイスを作らなければ ならなくなった。しかし、ユーザインターフェイスは、ちょっと簡単なのを書いても 1000行や2000行にはすぐなってしまう。 これが、カスタマイズするたびにユーザインターフェイスが増大するのは嫌である。 修正しなければならなくなったとき、その影響がおよぶ 個々のユーザインターフェイスを変更するなんて絶対に嫌である。

プログラマは横着でなければならぬ。 プログラマは余分なプログラムをごちゃごちゃ書かないのが理想である。 そこで、自由度がやたらに高い見てくれを実現できる方法はないものかと考えた。

Javaの場合、ボタン(Button)は、ボタンを並べるパネル(Panel)を拡張したものの 中でnewするであろうが、これをやってしまうと、ボタンがパネルに依存してしまう。 これでは好き勝手なことができないではないか。

ところで、超ひも理論の本を読んでみた。 最先端の理論物理学というのは、題名だけ聞くと、こんなにも怪しい世界の研究をしている。 人間は3次元の空間と、1次元の時間を合せた 4次元次空間に自分は居ると思い込んでいるが、実際の世界は、10次元だったり、 26次元だったりするそうだ。 それどころか、場所により次元さえ異なる世界かも知れぬとあった。 もっと詳しいことを書きたいところだが、内容を殆ど理解できなかったのでこれ以上の説明は無理である。

超ひも理論にヒントを得て、パネルに貼るボタンを、パネルの中ではなく、 異次元空間に作り、その異次元空間に置かれたままの見えない状態で全ての機能を作り上げ、 見せる必要が出てきたものだけを実空間(パネルとか)に並べることにした。

昨日から、そういう実像の世界で作られているプログラムを、 虚構の世界のプログラムに変更している。 虚構の世界でちゃんと完結すれば、それは美しいではないか。 プログラムの作りはまるっきり違うのだが、 利用者にとって、つまり表示、動きの違いは一切ない。

完壁だ。これは楽しいプログラムになる。 と思ったものの、利用者から見ると仕事をしていないように見えるに違いない。


ホームページ目次前の話次の話