私が他の人より遠くを見ることができたとすれば、それは巨人の肩に乗

有名なニュートンの言葉である。

私は、NIHシンドロームなところは若干あった。
最初はは、Linux系OSでは有名なa2pdfのWindowsへの移植である。
移植するということは、どこがNIHなんだ?という思うのは当然。
ところが、私が作ったa2pdfは、元のa2pdfのソースコードを全く読まずに0から実装したのである。

作ったときは、コンパイラコンパイラなんて知らなかった。
yaccflexも知らなかった。トークン切り出しを延々としていたのである。
いまさらながらよく、開発できたなぁ。と思う。
というか、このa2pdfを開発するときにトークンという概念を知った。

a2pdfを開発する前は、a2htmlなんてのを作ったが、
トークンなんて言葉もしらなかったので、一文字一文字、ファイルにある文字列を、
水車のようにぐるぐる回しながら、抽出していたのである。
我ながら馬鹿のきわみである。まぁC言語初めてちょうど一年くらいだったにしては、頑張ったほうだと思う。

久しぶりに、生まれて初めてののC言語のプログラミングのソースコードを見てみた。
確か、これだけ書くのに3時間以上かかった覚えがある。
今見たらどひゃーっ!とのけぞるほど気持ち悪いコードである。
コーディング規約なんてあったもんじゃない。

/*数当てゲーム */
/*VER 1.1 NO1 8/29 2000 */
/* PRODUCED*/
void subm(void);
void chiisai(void);
void ookii(void);
void atari(void);
int count;
int a;
#include <stdio.h>
#include <stdlib.h>
main()
{
    count=1;
    printf("今からコンピュータが1〜9の数を作るのでいくつか当ててください!\n");
    a=(int)(9*(rand()/32767.1)+1);
    printf("では今からその数を当てていって下さい。\n");
    subm();
}

void subm(void)
{
    int b;
    printf(" %d 回目\n" , count);
    scanf("%d", &b);
    if (b>a)
        chiisai();
    else if (b<a)
        ookii();
    else if (b=a)
        atari();
}

void chiisai(void)
{
    printf("もっと小さい!\n");
    count++;
    subm();
}

void ookii(void)
{
    printf("もっと大きい!\n");
    count++;
    subm();
}

void atari(void)
{
    printf("当たり!\n");
}


最近では、
オリジナリティを求めすぎ、誰もがしたことがない研究をしてやろうと、躍起になっていたのである。
健康観察管理システムがまさにそれ。

別に今でも方向としては間違っていないと思っている。
ただ、システム内部は、完全にオリジナルである。
もっと、流用できるコードなどを使えばもっと生産性があがっただろう。

Linuxの生みの親Torvals氏はこんなことを言っている。
http://japan.cnet.com/interview/story/0,2000055954,20079899,00.htm

新しいこと、変わったことがしたいという理由で、ゼロから新しいもの、変わったものを作ろうとするのは、私にいわせれば愚の骨頂であり、思い上がりです。 Linuxが目覚ましい成果を上げているのは、細事にこだわり大事を逸する愚を犯していないからです。しかし、この穴に陥るプロジェクトのいかに多いことか。

現在作っている学校WeblogシステムはBlogという概念。
はてなダイアリーの概念や、五反野小学校のWeblogの概念に強く影響を受けている。
もちろんソースコードは一切流用していない。(いや見ることができるなら見たいけど)

こんなソフトウェアを開発したい。
私なら、こんなところを(時間さえあれば)こうしてやるのに。
と、一応20代の私は、どんどんインスピレーションが沸いてくる。
次々と追加機能を実装しているうちに、結構時間がたってしまった。
とりあえず第一次リリース準備をしないと。

というわけで、インスピレーションが沸かなくなるか、K頭先生から、Betaの文言を
消せといわれるまではいつまでもBeta版のつもりである。

というか、Webシステムって、ずっと稼動しているのが基本だから、
それの修正作業って走っている馬を手術するようなもんである。

逆に、走っている馬を手術することができるので、どんどん追加機能を実装できるのである。
Web系システムがBeta版が多いのはそれのゆえんである。


Mixiも然り。私は入っていないが、Betaと表示されてるらしいね。
Gmailも然り。ベータ版で、今やWeb2.0の代名詞みたいになってしまった。

よい方向である。