What's Delphi ?


なぜDelphi?

Delphi (デルファイ)とは、Borland社製のWindows統合開発環境、RADのことである。

WindowsのRADといえば、まずMicrosoft Visual Basic(俗にいうVB)が頭に浮かぶ。確かに、VBは、プログラミング初心者でも簡単にアプリケーション開発ができる優れたRADだ。VBは「BASIC」という直感的に分かりやすい言語が基礎となっており(基礎となってはいるが、VBと「BASIC」は基本的に別の言語である)、GUIの作成も、“フォーム”というプレーンなウィンドウにボタンやテキストボックスなどの部品を貼り付けていくだけで行えるので、その名の通り、ビジュアルに、そして簡単にWindowsアプリケーションを作成することができる。

ただ、VBは基本的に「インタプリタ言語」であるので、実行時に1ステップずつコードを解釈しながら動作する。従って、その実行速度はC言語やアセンブラなどのコンパイラで作成されたものに比較して非常に遅い。また、VBで作成されたプログラムを動作させるには、プログラム本体とは別に「VBランタイム」と呼ばれるDLL群が必要なのである。フリーソフトなどでよくVB製のソフトウェアが公開されているが、そうしたソフトを利用するには、VBランタイムも同時にインストールしなければならない。しかも、そのランタイムはVBのバージョンごとに必要で(例えば、VB5で作成されたソフトはVB4のランタイムでは動作しない。VB5にはVB5のランタイムが必要。)、そのランタイムのサイズがまたバカにならないのだ(大体2MBくらいある)。最近はブロードバンド時代で、サイズをあまり気にしなくても良いのかもしれないが、それにしても、ユーザが目的のソフト以外にもそれを動作させる環境を別にインストールしなければならない、という手間は大きい。

ならば、C言語(C++)やアセンブラで単体実行が可能なソフトを作成すれば良い、となるが、Cやアセンブラというのは、VBのように簡単に扱える言語ではない。これは一般論だが、C言語でソフトウェアを普通にプログラミングできるようになるまでの習得期間というのは、大体3ヶ月〜1年程度だろう、といわれている。まして、アセンブラなどという低級言語になると、CPUやメモリなどのハードウェアの知識も必要になり、ディジタル回路の知識から習得していく必要がある。それが、VBなら、特に学習をせずとも、基本的に“その日”から使えてしまう(さらに言うなら、画面をつくるだけであれば、コーディングの知識は全く必要ない)。この時点で、プログラミングしよう、という気力が萎えてしまう人は多いのではないか。

VBでソフトを作っても、動作が遅い、別にランタイムが必要など、その使い勝手が芳しくない。かといって、Cやアセンブラを勉強する気力もない... そこで Delphi の出番なのである!Delphi は、いわばVBの開発効率を維持し、Cやアセンブラなどのコンパイラで開発したソフトとほぼ同等の実行速度を持つ、しかも、プログラム単体で動作可能なソフトウェアが作成できるのだ。Delphi は、そのプログラミング言語に「Object Pascal」を採用している。Pascalというと、構造化プログラミング言語で、GOTOなどが使用できないイメージがあるが、Object Pascalは、なんとGOTOも使用できる。その意味でPascal本来の思想とは違う別の言語となっているわけだが、初心者にはやさしい仕様となっている、ということでもある。


Delphi の特徴

では、Delphi がどんなに素晴らしい環境であるか、次にその特徴(特長)をあげてみるとしよう。

直感的に使える操作性

基本的な操作方法はVBと同様である。“フォーム”に“コンポーネント”という部品を貼り付けるだけで、基本的なWindowは作成できてしまう。また、その部品に付与される様々な属性も、“プロパティ”という値を設定するだけで行える。同様の操作で部品に“イベント”や“メソッド”を割り当てることができ、VC++などの開発で必要となる「Windows Message」や「Win32 API」などの知識を基本的に必要としない。もちろん、それらの知識を知っていているなら、それらを駆使して、さらに高度なプログラミングを行うこともできる。

さらに、コーディング時に、オブジェクトのメソッドやプロパティ候補がプルダウン表示されたり、関数の引数がガイド表示されるなど、スペルミスや引数の過不足などのケアレスミスを防ぎやすくなっているのも嬉しい。

豊富で高品質なコンポーネント

Delphi には、標準で「VCL(Visual Component Library)」というコンポーネント群が用意されている。これは、VBでいう「コントロール」とほぼ同様の概念だが、Delphi のProfessional 以上のバージョンでは、そのソースコードまで公開されている。また、このコンポーネントは自分でも作成することができて、ネット上でも多くのオリジナルコンポーネントが公開されている。

ただ、最初のうちは、そのような拡張をせずとも、標準のVCLのみで十分だろう。VBで用意されている程度のコントロールは、Delphiで全て網羅されており、さらにデータベースや帳票、またコモンダイアログなどを作成するコンポーネントまで用意されている(これらは、普通 Win32 APIやODBC、ADOなどのAPIを使用しなければならないもの)。また、Windows標準のActiveXやCOMなどの部品も、コンポーネントとして取り込むことが可能なのも大きな魅力である。

高速、かつ、強力なコンパイラ

Delphi に実装されているコンパイラでは、様々なコンパイラ指令を利用することが可能で、範囲チェック、オーバーフローチェックなど、実行時に予想される様々なエラーをコンパイルの時点ではじいてくれる。また、変数や定数の型にも非常に厳格で、文字列と数値の違いはコンパイルエラーとなるのは当然、数値であっても、そのサイズに違いがあると、それもコンパイルエラーとしてはじかれる(Integer型 と WORD型 は相互に扱えない)。これは、一見すると非常にコーディングが難しくなるように思われるが、逆に、Delphiでコンパイルが通れば、ある程度の動作は保証されるといっても良いのである。また、これらのチェックは、本来プログラマが自身の知識と責任において保証しなければならなかったもので、それらの大部分をDelphiに任せられる、と思えば、こんなにありがたいことはない。

また、Delphi のコンパイル速度は驚異的である。例えば、1Mステップほどのコードなら、ものの数秒でコンパイルが完了してしまう(私の PentiumII 300MHz、メモリ96MB のマシンで 1,203,944ステップのコードをコンパイルするのにかかった時間は5秒程度である!)。また、コンパイルエラーが発生したら、そのソースのその行のそのキーワードへカーソルがジャンプして強調表示してくれる、という親切さ。

さらに、Delphi はアセンブラのコンパイラも標準で実装しているので、なんとインラインでアセンブラのコードが書けてしまう!より物理層に近い操作(メモリの操作や、その他デバイスの操作など)が必要なときは、アセンブラで書いてしまった方が、処理も速いし効率的なことがある。

単体実行可能なプログラムが作成可能

なんと言っても、これがVBに水をあけた大きな要因だろう。Delphi で作成したアプリケーション(EXEやDLL)は、それのみで動作が可能なのだ。ランタイムのインストールなどする必要がない。

ただ、なぜそれが可能かというと、コンパイル時に、一通りのVCLのパッケージを実行体の中に組み込んでしまうからである。これによって、VBやCなどで作成したアプリケーションに比較すると、ややそのサイズが大きくなる(VCLをパッケージすると、最低300KB以上になる)。しかし、VBが動作する場合に2MB以上のランタイムを必要とするのを思えば、まだ許されるのではないか(もし望むなら、Delphi でも、VBのようにランタイム型のプログラムにすることだってできる。その場合、実行体のサイズはかなり減るが、実行時に「BPL(Borland Package Library)」というVCLをパッケージした部品が必要になる)。

このサイズの問題は、実は、VCLを使用しなければ、その分サイズを落とすことができる。ただ、それは、VCLがやっている全ての作業を自分でコーディングしなければならない、ということで、そうなると、Cやアセンブラを使うのとその難易度に大差がなくなってしまう。Delphi の最大の恩恵は、おそらく、そのVCLを使う利便性にある、といっても良いのだから。

データベース操作が容易

ある程度の規模のシステム開発を行っていくと、どうしても想定しなければならないのはデータベースの操作である。大規模なシステムなら、「Oracle」や「MS SQL Server」などのリモートデータベースが必要となってくるし、中小規模のシステムであっても、「dBASE」や「Paradox」、「MS Access」などのローカルデータベースを使用することは少なくない。これは、コンピュータシステムを使用する利便性の大部分が、データベースを使用する利便性である、ということからしても、避けられない事情である。

ところが、データベースアクセスとなると、プログラミングの知識とはまた質の異なった知識や技術が必要となってくる。Windowsでデータベースを扱う際に最も多用されているのが「ODBC(Open DataBase Connectivity)」という、データベースがそれぞれ持っているインタフェース(API)である。これは、データベースの種類ごとにAPIの仕様が異なっており、C(C++)などの開発者は、必要に応じてそれらも習得していかなければならない。その他、「DAO(Database Access Object)」、「ADO(ActiveX Database Object)」、また、Oracleであれば「OCI(Oracle Call Interface)」など、様々なデータアクセスの手法があり、それらも必要に応じて習得する必要がある(VB6の場合は、ActiveXコンポーネントとして、そのような部品が用意されているらしい)。

そこでも Delphi は、BDE(Borland Database Engine)というデータベースエンジンを使用して、あらゆる種類のデータベースに対して、統一したインタフェースでアクセスが可能となっている。BDEは、Oracle、Informix、MS SQLServer、dBASE、Paradox など、現在世間で利用されているほとんどのデータベースに対応している上、BDEからODBCを利用することで、さらに多くのデータベースを利用することができる。

ネット上に情報が有用な豊富

昨今の開発において、ネット上に開発に必要な情報が豊富であることは重要になってきている。というのも、早急に開発に関する情報が必要なとき、本屋へ走って該当する書籍を探す、という手間は、実に非合理的である。確かに、書籍の量としては、VBやVC++などの方が圧倒的に多いのだが、新たな問題に直面する度に、その技術について書かれている書籍を探していたのでは、そのコストも半端じゃないし(大体、開発関連の書籍というのは3000円前後が相場。高度なものになると5000円を超えてくることも稀じゃない)、時間的なロスも大きいだろう。

情報量的には、やはり、VBやVC++などの方が、やはりネット上でも Delphi のそれを凌駕している。では、なぜ Delphi に関してネット上にそうした情報が多い、といえるのか。実際にWebで Delphi に関するキーワードを検索してみれば分かると思うが、いわゆる「使えない」情報が少ないのである。VBやVC++ほど一般的なものになると、ネット上にも玉石混交で大量の情報が溢れていて、その中から本当に必要な、つまり“有用な”情報を見つけるのは至難の業である。ところが、Delphi に関するキーワードは、あまり一般化していない為か、欲しい情報がほぼピンポイントでヒットすることが多い(と思う)。

また、VC++におけるMFC(Microsoft Foundation Class)、VBにおける様々なActiveXコンポーネントなどがバイナリで提供されているのに対して、Delphi におけるVCLはソースコードで提供されているのも大きい。VCLは、様々なDelphi テクノロジーの坩堝であり、そのコードを眺めているだけでも非常に勉強になる。こうしたオープンソース性も、ネット上に有用な情報が多い要因になっているのかもしれない。

そして、Delphi の技術的な情報交換を行うコミュニティが充実している、というのも、開発の強力なヘルパーとなっている。ボーランド社は、Delphi の技術、開発の情報交換の場として ニュースグループ を公開している。また、Delphi の メーリングリスト や、その 過去ログ の質が非常に高いのも Delphi の有益さを高めているといえるだろう(いわゆる「お馬鹿」なQAが少ない)。

Linux とのソース互換性

これは Delphi6からの仕様となるが、なんと、Delphi で作成したプログラムは、Linux でもコンパイルできてしまうのだ。つまり、Windows 向けに作っていたアプリケーションが、そのままLinuxに移植できてしまう、ということ。これは、Linux版Delphi ともいえる「Kylix」によるものだが、Linuxユーザが増えることが予想されている今、この仕様はとても注目される。


[ Delphi へ戻る ]