アプリ(EXE)とスクリプト・エンジン(DLL)のエクスポート同士を繋いで、アプリに「なんちゃってスクリプト」を実装したことがあった。
時は1999年。そう前世紀の最後の年の10月頃の話。
当時、そんな面倒なことをやっているトコロは無かったが、今では極普通のことである。特許を取っておけば今頃左団扇だったかもしれないけど、全て前世紀のC言語で記述したので、RegExpなんてものはなく、全てハードなコーディング。それはともかくデバッグにとっても手間がかかったので、特許なんて取ってライセンス契約でも取れたら・・・それこそサポートでエライ苦労をさせられただろうことは目に見えていたので、眼中には無かった。
try~catchが無かったので、OSのAPIのハードな例外処理にハードコードしなければならなかったせいでもあるけれど・・・
文字列を日付型に変換する際に失敗した場合(ex. 1999/12/32)からOSのAPIに渡す構造体がちょっと間違ってた場合(char field0[0] )まで非常に幅広い範囲で想定外の事態が発生した。
しかもその例外の仕方も千差万別だったので、途方に暮れかかったのは云うまでもない。(文字列を浮動小数点に変換しそこねたらコプロセッサがエラーを吐くなどは小ネタだ。)ググっても何も結果が出ないことも多かった時期なので、妄想しまくってトライアンドエラーするしかなかった。唯一の心の支えは、開発環境(IDE)がクラッシュしなかったこと。IDEがCATCHできるなら何か方法がある。(ハズ だから・・・だ。
故にJavaの例外処理が未だに何系統かに分かれて発生する理由は身をもってよーく理解している。※通信のタイムアウトがtry ctachで取れるのはかなり大変だと思うよ。(アプリと通信でスレッドが違うから実装的にかなり大変とか色々
JVMの簡単そうな実装も、結構厄介な想定不能な動きをするだろうことも・・・
そんな訳で20年近くの間、コンパイラやスクリプトから遠ざかっていた。
しかし、結果を見れば、誰もが.NetやJDKのクラスライブラリィの上に載って厄介な問題を華麗に回避していた。おかげで、ライブラリィの多重階層ができあがり、PCもサーバーも何事もモッサリな動きしかしない状況にある。
でも、ボクはノータッチだからね。ボクは悪くないよ。(大笑
ただ、全く関わらなかったから、MMORPGの様に言語や開発環境のアップデートが際限無く続いてしまったのかな~とちょっと反省している。
なぜ、アップデートが際限無く続くのか?
それは、参加者が狭い社内とか全世界とかに関わらず・・・少人数の会議(チャットルーム)で物事が進むので、刺さる人には刺さるが、刺さらない人にもかすりもしない様なことばかりアップデートされているのだ。
これは、大人数のチャットルームでは賛否両論で傾向は判っても、結論は決められないのが常なので、結論が出るのは「少人数のチャットルーム」に限られるからだ。
その結果、世の要望をしっかりと受け止められるものとは「かけ離れた(どうでもいいもの)」ばかりがアップデート(あるいは新規に追加)されるのだ。
例えば、Angularは半年ごとにアップデートが予定されているが、本当のところは、サンプルで作った沢山のHTMLをAngularのプロジェクトにうまく(都合の良い様に)変換するためのサポート・ツールが一番欲しいだろう。しかし、概ねどうでも良さそうなもの(あるいは変わらない方がマシなもの)でバージョンが上がっているだけな感じがある。
しかし、テクニカル・ライターには今のバージョンアップは記事のネタとしては非常に美味しいに違いない。だって、数ページの記事で「何となく変わったんだ」ということが伝わるアップデートなんだから・・・(合掌
ところが、AngularのXからX+1になった時にちょっと変えればいいのだが、AngularのXからX+2になった時には時流も変わっているので色々なものが移り変わっているから、ソモソモの仕様がマッチしなくなっている。(GUIのデザインとかAPIの使い方までもが変わっている)ので、脳内でうまく変換しなければうまくいかない。
そんな訳で、アップコンバートではなく、
今は力業で一気に今風に作り直す(Re・Birth≠Reverse)のが正解である。
だから、まともに自社でアプリを開発しようとするのは大変だろうね?