| GUI環境でのプログラミングツールの流れ | |
★ GUI環境でのプログラミングツール。 分かる人には何も説明は必要無いでしょうが、一応説明しておきます。 GUI環境(グラフィカルユーザインタフェースの環境)とは Windowsのような環境のことです。 それに対して、DOSの時代の文字だけのインターフェースをCUI(キャラクタユーザインタフェース)といいます。 ★ 私は、DOSにけっこう馴染んでた人間で、最初 Windows3.1の頃は Windowsは見た目はいいけど、非常に かったるい環境だと思っていました。 まあ、1993年〜1994年頃のパソコンは CPUが i486から ペンティアムに移行しようとするころでしたから今にして思うと遅くても仕方ないともいえます。 それでも、DOSの環境では十分早く動いてくれます。 DOSの時代は MS-C(C言語)と MASM(マクロアセンブラ)を使っていました。 DOSの時代の開発ツールはそれぞれバラバラというか、機能毎に独立していました。 エディタ(MIFESを使ってました。)、コンパイラ(MS-C)、アセンブラ(MASM)、リンカ(MS-LINK)、ライブラリアン(LIB)、メンテナンスユーティリティ(MAKE)、デバッガ(DEBUG または SYMDEB)を使っていました。 これらのコマンドをDOSの画面で打ち込んでいました。 何回も同じことを行う場合は、メイクファイルやバッチファイルを作成して流します。 信頼性の面で Windows3.1の前のWindows3.0は頻繁にハングしてたので3.1になっても不信感を持っていました。 ★ それと、Windowsが出始めた時代というのは、WindowsというOSの扱い方、及びWindows上のアプリケーションの使い方の本が殆どで、Windowsの構造や、Windows上でのプログラミングの本はなかなか出てきませんでした。 まるでブラックボックスのようなOSのように思っていました。 まあ、それは、1年遅れほどで徐々に本が出てきました。 その当時、Windows3.1の構造、メッセージやイベントドリブンのことやプログラミングに必要なAPIのことを書いてある本で覚えているのは、CQ出版社のブートストラップです。 ブーロストラップは初期の頃、大変役にたちました。 その当時はまだ、C言語でWindowsプログラムを書いていました。 ★ 初期のWindows環境では、まだC言語(またはC++)ぐらいしか開発環境が無かった様に思います。 (データベースに特化した言語はありましたが...。) その後、しばらくしてVB(Visual Basic)が出てきました.。 Cでプログラムを作るのに比べるとはるかに簡単な Windows用のプログラミングツールでした。 そして、データベースに特化した言語よりは汎用性がありグラフィカルな画面も作りやすい環境でした。 ただ、この当時はまだ、インタプリタとしてしか動作させることが出来なかったと思います.。 当然、C言語のAPと比べると速度面では不利です。 それと仕方ない事ですが、DOS時代にBASICを扱った事のある人が、「これはBASICじゃない。」と言ってました。 DOS時代のBASICとは かなりかけ離れているということでしょう。 その当時は、Cの環境の方を主に扱っていたのでVBは殆ど触りませんでした。 開発環境として使っていたのは、VisualC++の1.5(16bit)の統合環境で Cのプログラミングを行っていました。 これは、その当時、16bitの資産があったのでそれを生かそうとしたためです。 CAD関連のプログラムの開発なので速度が重要な要素でした。 ★ その後、Windows3.1も終わりに近づいた頃、Delphi 1.0 が出てきました。 これは、VBのように扱いやすくて、ネイティブコンパイラなので速度の面でも優れているという統合開発環境です。 このとき、初めて Delphiの ObjectPascalなる言語を習得する事になりました。 最初、ObjectPascalという言語の勘所をつかむのに時間がかかるんではないかと思っていましたが、いつのまにかすんなりと入り込んでいました。 Cで Windowsの長ったらしいプログラムを書いていたので、それからすれば楽ちんでした。 でも、Object指向という面ではまだ良く理解してませんでした。 それでも使うことはできます。 メモコンポーネント等でメモリの制約等を調べていたらやはり、16bit環境なので 64KByteの制限が付きまとっています。 ★ しかしそれは、Delphi 2.0の登場によりあっさり解決しました。 本格的に使い出したのは Delphi 2.0からだと思います。 GUI環境とは別に、64Kbyteの枠が取れたリニアで広いメモリ空間がとても快適に思えました。 会社では、DBアプリ開発に Delphiを使っていましたが、C言語でやっていたAPI関数コールやポインタ操作なども殆ど同じ感覚で扱えるので切れ味のいい、そして VC++のような MFCを意識しなくてもよい自由な環境は気に入ってしまいました。 その後、徐々にObject指向プログラミングにも手をつけはじめました。 特にビジュアルコンポーネントの作成は非常に興味を持ったのでいくつか作りました。 そして、Delphiを使って TCP/IP下位層の UDPを使って独自プロトコルで通信を行うプログラム等も作成しました。 けっこう、Delphiなら何でも作れるという感じでした。 が、仕事の都合でDelphiから離れ VBで会計ソフトを作る事となりました。 私のような弱電技術者上がりのプログラマとしては、全く見当のつかない分野でした。 約1年ほどその仕事を行いましたが、外注のSEさんのおかげで何とか無事に小出しに納品して行けました。 また、改めて思ったのは、VBにはVBのいいところがある。 という事です。 C言語の切れの良さ等をVBに期待するのは無理というより間違いですが、事務処理系のアプリを作る際に難しい事を考えなくても、アプリの仕様さえ考えておけばよいという部分があります。 これは、初心者プログラマ(あるいは素人プログラマ)にとって扱いやすい言語であり、Windows環境にて Excelとの連携も優れているので Windows上で Excelと連携を取りながら行う事務処理系アプリを作成するのであればVBは便利なツールといえます。 ★ その後、私は会社を変わることになりますが、OS2や Linux等の Windows以外のOSを扱う事となります。 ソフトハウスという業界から外れることにより別の世界が見えてきたような気がします。 OS2に関しては、IBMもあまりやる気ないみたいなので縮小する方向に向かうでしょう。 何故、行った先でOS2が使ってあったかというと、医療用オートメーションシステムの制御用システムだったのですが、OS2がその用途(計測制御用)に適していたという事かもしれません。 私は、そこでOS2から Windowsへの制御アプリの移植を行う事となります。 そこで、思ったのはOS2と Windowsの設計思想の違い、それがAPI関数群に色濃く現れてました。 昔、IBMとマイクロソフトは共同でOS2を開発していましたが、ある時点でマイクロソフトはIBMと決別し DOS 上で動作するWindowsを売り出し始めました。 決別した理由の一つに、OSの性格付けみたいなものがあり、マイクロソフトはGUIを前面に出したデスクトップ環境的なOSの開発だったのに対し、IBMはコンピュータメーカーとして今までの応用分野への対応も考えていたのでしょう。 その中に制御用アプリに対するOSのサポートもあったものと思います。 その考え方の違いは DOSの扱いに表れています。 当然マイクロソフトは DOSをもう扱っていません。 IBMは PC-DOS 2000なるものを出しています。 IBMの言い分としては、まだ計測制御等の一部の分野でDOSが必要でありWindowsにて置き換えができないからという事だそうです。 確かに、Windowsは計測制御の分野に適さない要素のあるOSなのでその分野の人から嫌がられます。 また、マイクロソフトもその分野に力を入れようという気もないでしょう。 計測制御の話しは、別のところに書くことにして、GUIの話しに戻ります。 ★ Linuxの X Windowを更に次の会社で扱う事になります。 ちょうど、タイミングよく Borland社から Kylix日本語版が発売された時期でもありました。 X Windowは MS-Windowsに比べるとまだまだ発展途上にありますが、Windows環境とは異なるOSの設計思想の整然とした感じがあります。 Linuxに関しては、まだまだ初心者ですが、Windows環境に移行する事により排除されていった計測制御の分野に、新たな可能性をもたらしています。 何よりもオープンソースのOSであることがその証しです。 デバイスドライバ作成の事に関しても本が出ています。 ちょっと、努力が必要とは思われますが Windowsよりは遥かにOSの足元が明るくなっています。 私は、Linux+Kylixと 計測制御のアプリということで、今まで相性の悪かったGUI環境での計測制御アプリの開発に弾みが付くことを期待します。 まだまだ、いくつか越えなければならないハードルがありますが、可能性に期待します。 一つには、計測制御の分野でも見てくれの良いGUI環境を望む声が出ているからです。 非常にシビアな リアルタイム性を要求する用途であれば CPUを 2台用いるのも手でしょう。 ( 最近のパソコンは安くなっていますから複数台使用も十分可能なはずです。 ) まだ、試みてないですが、RTLinuxという選択肢もあります。 最初の表題からやや、外れた話になって来ましたが、現状では Windows98と LASER5 Linuxという2つの GUI環境を用いております。 開発ツールは Windows98では VBと C++Builder、 Linuxでは Kylixと gccというところです。 gccだけがコンソールで用いるツールで、後は、GUI環境で動作するツールですね。 私が思うに、GUI環境の開発ツ−ルは、やはり見た目の良いプログラムを短い開発工数で作成出来る事だと思います。 ただし、ツールが優れているからといって滝のように長いサブルーチンやイベントハンドラを作るのは止めましょう。 カット&ペーストが簡単にできるだけについついやたら長い見るのに疲れるプログラムを作る方がいらっしゃいます。 ライブラリ化を積極的に進めてコーディング量を減らし、かつメンテナンス性の良いプログラム作るような努力をしましょう。 長々と書いてきましたが、いまのところまだ、Windowsと Linuxでのクロスプラットホーム的な開発は行っていません。 その可能性が出てきたら Delphiと Kylixは 両方のOSで同じ言語、同じ操作性を実現できるので便利ではないかと思います。 ( 漢字コードの違いが玉にキズ的な要素がありますが... ) 今、私の興味は、OSとして未知の要素をまだまだ含んでいる Linuxとその上で動作するKylixです。 ボチボチ、Kylix用のビジュアルコンポーネントを作成しています。 |