| Delphiとの出会い | |
| ★ はっきりとは憶えてませんが、1995年ごろ?だったでしょうか。? Delphi 1.0が出たのは...。 アメリカで前評判が良くてどんな環境だろうと思っていました。 Delphiは 元々その製品の開発コード名だったらしい。 最初は、Windows3.1にフロッピーでインストール...? だったかな。? 昔の事でもう記憶がさだかでない。 その当時のインストーラの画面は、夜の道を車で走っている時のダッシュボードのようなデザインでインストールの進み具合に応じてスピードメータの針が動いていくようなものであったのだけ記憶しています。 ( ちょっと暗い印象のインストール画面だったような...。 ) ★ その当時のDelphiのうたい文句は、VBと同じくフォーム上に部品をペタペタ貼り付けてプログラムを作り、出来あがるプログラムはネイティブコードで実行速度が早い。というものでした。 各コンピュータ関連の雑誌にも記事が載ってた記憶があります。 で、Delphi 1.0を扱い始めるわけですが、言語が ObjectPascalで今までやったことの無い言語である事に難しそうな先入観を抱いていました。 最初に買った本は塚越一雄氏の「はじめてのDelphi」です。 本屋に出た初めてのDelphiの本と記憶しています。 塚越氏の本は中身を十分理解して塚越氏なりの解釈で噛み砕いて説明してあるので要点を明確に理解出来ました。 Windows3.1の環境なので、やはり 64Kのメモリの制限が付きまとっているのも事実です。 ★ しかし、Delphiは、16bitの1.0のバージョンから、32bitに移行する事を前提にライブラリ等のソースが記述されていたようです。 よって、32bit環境のDelphi2.0が出てくるのは早かったと思います。 そして、この Delphi2.0から、Delphiを本格的に使い始めました。 ( 1.0では、評価テストぐらいにしか使用してなかった。 ) Delphiは細かいところは、分からなくてもプログラムは一応作れました。 RTLのヘルプファイルを印刷しカテゴリ別にA4ファイルに綴じました。 それを後々辞書のように使ってました。 2.0が出る頃になると、Delphiに関わる書籍も多数書店に出回るようになってきました。 ★ 最初、Cのタイプ量を少なくしたコーディングに馴染んでいた私は、ブロックの始めと終わりを Begin 〜 Endで囲ったり、全体的にタイプ量はやや多くなった感じはしていましたが、それよりもWindowsのプログラミングでやたら長い変数名等に慣らされていたのでさほど抵抗はなかったように思います。 パスカルは Cに似ているが異なるという感じでよく間違えます。 代入は = が :=で、比較は ==が =で、 ; の付ける位置も、文の区切りで、ちょっと違います。 しかし、整然とした構造化言語なので、Cをやった事のある人であれば言語の感覚は掴みやすいと思います。 ★ Object指向言語としては、かえってC++より、Delphiの方がいいような気もします。 コンストラクタ、デストラクタも明示的に Constructor、Destructorと指定するし Objectのメンバー指定もC++の場合、-> で指定するが、Delphiでは . で指定します。 例) Button1->Caption = text; // C++ Button1.Caption := text; // Delphi そうそう、コメントに // が 使えるのがいい。 /* 〜 */ は使用出来ない。 これに相当するのは { 〜 } です。 ( 一部 {$〜 } があるが、これはコメントではなくコンパイル指定です。) ★ #includeに相当するのが、意味は違うけど uses節で、これも Interface部での指定と、Implementation部での指定とで少し意味が異なる。 最初、循環参照というので悩んでしまいました。 ここらへんはソースファイルを複数に分けた場合に影響してきます。 基本的に、2つのモジュールにて相互に参照し合うようなコーディングは避けるべきです。 ここらへんの言語仕様が見えてくると Delphiの言語仕様の奥深さがだんだん見えてくるような気がします。 ★ Record宣言(Cでいう構造体)と、Short String型の変数も気にいってます。 文字列は、Delphiでは長い文字列をサポートしているが、変数の格納されている場所の実態は4byteのポインタ変数で、文字列そのものではありません。 よって、Record型に宣言してファイルにそのまま書き込むと文字列ではなく、文字列を管理している情報のポインタを書き込む事になってしまいます。 ところが、ShortString型は 最大 255[byte]までの制限はありますが、先頭バイトが文字数で2バイト目以降が文字列データなので、Record構造体にShortStringで文字列変数を宣言すると、Record構造体単位でそのままファイルに書き込む事が出来ます。 これは、便利です。 ★ それと、WindowsAPIが 積極的に使える。 VBと異なりポインタ変数が使える。 PChar型があるので、Cで扱うようなNULL終端の文字列も扱える。 これはWindowsAPIを扱うときや、DLL関数に文字列を渡すとき便利です。 DLL関数も作れる。 部分的ニチューニングしたい場合はインラインアセンブラも使える。 さらに、ビジュアルコンポーネントも豊富にあり更にそれを元にして派生し機能を追加したコンポーネントも作れる。 画像関連を扱うClassもあり、TCP/IPやマルチメディア関連もあるので結構いろんなものが作れる。 つまり、プログラマとして使いこなすのが楽しい環境なのです。 ★ それと、実行形式は当然ネイティブコンパイラであるが、基本的なコンポーネントのみで作成したアプリは、他のランタイム等のDLLを呼出してないので、EXEファイルさえあれば他のWindows環境でも動作する。 これは、ちょっとしたユーティリティを作り他の人に渡すとき、フロッピーに実行形式ファイルだけ入れて渡せば良いので便利がいい。 (VBと比べると、やや実行形式が大きいが、VBは別途1M強のランタイムライブラリが必要となる。) 同じ仕様のプログラムを、Delphi2.0、Delphi3.1、Delphi5.0で実行形式を作ると、Delphi2.0が 一番実行ファイルのサイズが小さく、次にDelphi3.1が 若干(1割未満)大きくなり、Delphi5.0は 5割ほど大きくなった。 ライブラリの仕様がバージョンアップとともに膨張してきているのかな。 で、私は、ちょっとしたユーティリティを作るときは 3.1のバージョンを使用しています。 基本的な WindowsAPIを使う程度のプログラムであれば、Delphi3.1で十分です。 TCP/IP等を使いこなすのであれば、Delphi5と使い分けています。 ★ C++Builder5も使用しましたが、言語C++という以外は殆どDelphiと同じ感覚で使えます。 コンパイル時間は、Delphiに比べやや遅い。 C++Builderにてマルチプロセス、マルチスレッドのプログラムのデバッグを行なったが、複数プロジェクトの管理機能がよく出来ており助かりました。 複数のプロジェクトを連携して管理するときは、プロジェクトグループを作成します。 これにより、一連のシステムが複数の実行形式で構成されている場合に統括して管理が出来ます。 この機能は、ある程度以上の大きな開発業務に便利です。 ★ 2001年5月に、Delphiの Linux版である Kylix日本語版が発売され始めました。 使い始めるまでに、3ヶ月ほどブランクがありました...。 その理由は、Linuxに不慣れなためです。 そして、Delphi6が発売された。 これは、コンポーネントが やたら増えている。 VCLと CLXと2系統になったせいなのだろうか。? まだ、使い込んでないのでよく分からない。 そして、2001年12月に、Kylix2が出るとの事。 やたら新しいバージョンが出るのが早いなあ。 まだ、現物は触ってないので何が変わったのかは分かりません。 |