本システムは異なったOSのバイナリ互換プログラム作成という目的については達成できた。 しかし、私にはその事が終端ではなく非常に大きなプロジェクトのスタート地点だという気がしてやまない。
開発環境の種類が多ければ多いほど、プログラマーの負担は比例して大きくなります。 ソフトの使用方法や文法,くせなどの習得は大変です。 これは本来の「ソフトを作る」という目的ではなく手順を暗記しているだけであります。 本システムの場合、開発環境が1つで洗練されているために憶える事項が少なく、アルゴリズムに集中して作業ができます。 私はLinuxの操作に関しては完全に素人ですが、Linux上で動作するソフトウェアはバリバリ作っています。 通常の開発環境ではこんなことはありません。 また、メンテナンスにおいてもソース行数を抑えることができるので改造が非常に楽になります。 「1週間前の自分は他人」というように、個人的なものにおいても見やすく解読しやすいソースを作ることは重要です。 例えば圧縮解凍ライブラリのZLIBは、色々な開発環境に対応させる為、マクロや条件文がてんこ盛りになっているので、 初見で解読するのは不可能です。 マイクロソフトのMFCにおいても、ソース中にANSIのC++文法とは全く異なるマクロ記述があり、 「丸暗記」の技術だと言わざるをえません。
ネットワークにはいろいろなプロトコルが存在しますが、なぜそんなに多くのプロトコルが必要なのでしょうか? 理由の大半はアプリケーションが自己中心的に作られているために、単一のインターフェースにしか対応していない事です。 具体的には、Windowsアプリがネットワークに対応してなくて、ネットワークドライブを割り当てないとデータを使用 できないので、UNIXサーバにSAMBAを導入するなどです。ただWindowsネットワークはLAN内は通過できても インターネットまでは通過できません。(そのためにセキュリティーは上がりますが..) 複数のプロトコルを使ってゆくには、ネットワークのハードウェアにまで気を使わねばなりませんので管理が大変です。 プロトコルをHTTPに統一すれば、インターネットに接続できる環境ならばOKということになり、 こういったハードウェア,ソフトウェアは時代の流れにより誰かが勝手に更新してくれます。
通常のWindowsアプリとブラウザCGIソフトの一番大きな違いは操作性につきます。
ブラウザCGIはクライアントからなにか操作しないと、サーバのデータを送れません。
HTMLにリロードの機能があるのですが、これを頻繁(といっても1秒に1回)にすると、
画面がちらちらして操作できたものじゃありません。
つまり、サーバのデータをリアルタイムに画面表示するのが苦手なのです。
これを補ってくれるのは私の知るところには、アクティブXとJAVAアプレットです。
アクティブXはマイクロソフトが薦めているOLEの最新の形であり、
クライアント側に固有の数字で管理されたアプリケーションをインストールし、
サーバはその番号をクライアントに返す事で、その機能を実行します。
当然ながら、クライアントはWindowsマシンでなければなりません。
またJAVAアプレットはサーバよりプログラムをダウンロードすることにより実行します。
どちらがいいかは本システムの目的から考えてJAVAの方を選ぶのが普通でしょう。
操作性の為、以下のように処理を分担します。
・サーバ側の処理---本システム
・クライアント側の処理---本システムのHTML+JAVAアプレット
なら、「JAVAサーブレットを使えば、すべてJAVA開発環境のみでいいのではないか」という意見があると思いますが、
単なるデータベース処理だけならそれでよいのですが、ハードウェアの直接制御や高速性が必要な演算を伴なう場合、
Cのようなある程度きたない言語でないとダメですし、JAVAのデバッグ性能が十分ではありません。
C/C++言語は組み方によって大きなバグを生みやすいことも事実ですが、
最後にプログラムを実行するのはCPUなのでそのマシン語レベルでデバッグできる環境がそなわっている事は大きいと思います。
本システムはLinux環境においてライブラリを必要としない(カーネルのみでよい)ので、非常に小さなサイズのLinuxを作る事ができます。 フロッピーディスクだけで動くFD−Linuxというものがいくつか出回っていますが、 サイズを小さくするために相当古いカーネルを使用してますし、対応するハードウェアも限られたものになっています。 本システムでは1枚のフロッピーに最新のカーネル+色々な機能を盛り込むということができます。 (当然ながら組み込む機能はすべて自分で作らないといけないですが..) たとえばWWWサーバを作る場合、通常はアパッチのような大きなプログラムを組み込む必要があります。 また、データをダウンロードできる様にFTPサーバかSAMBAも必要となってきますし、 管理のためにTELNETやXサーバ,WEBMINも必要かもしれません。 WWWサーバを本システムで作成し、アップロードや管理もブラウザからできるようにすれば、 本システムで作成したプログラムのみで機能を実現できますし、その容量も数百バイトで済むはずです。 世界で1番使われてるアパッチと比較すると、セキュリティーの問題があると思われるかもしれませんが、 むしろ危ないのはよく使われている方だと思います。