Windows開発者に贈る
Kylixの全貌
大野 元久
ボーランド株式会社
2001/2/20
Kylixを最も特徴づけるのは、なんといってもコンポーネント(部品)を基本としたビジュアル開発というスタイルだ。Delphiもそうだが、Kylixのコンポーネントは、単にユーザーインターフェイスの設計が目的のものばかりではない。コモンダイアログの呼び出し、データベースアクセス、インターネットプロトコルなど、実にさまざまな処理がコンポーネントとして組み込まれており、その数はServer版では165個以上になる。
CLX(クリックス:Component Library for Cross Platform)は、DelphiのコンポーネントフレームワークVCL(Visual Component Library)をベースに開発されている。DelphiでVCLの使い方に慣れていれば、使いこなすのは容易だろう。
CLXに含まれるコンポーネントは、技術的にはクラスそのものである。つまり、フォーム上にコンポーネントを配置することは、そのままオブジェクトを生成することになる。例えば、Visual C++のダイアログボックスでは、コントロールを配置することに「加えて」コントロールに対応するメンバを追加したり、オブジェクトを生成するコードが必要だが、Kylixではコンポーネントを配置するだけで、プログラムからコンポーネントを扱えるようになる。
CLXは、ビジュアル開発の基礎となるだけでなく、文字どおり「クロスプラットフォーム」という目標がある。CLXは、KylixだけでなくDelphiの将来のバージョン(*編注)にも採用される予定である。つまり、CLXを使ったプロジェクトは、KylixでコンパイルすればLinuxのネイティブアプリケーションになり、DelphiでコンパイルすればWindowsのネイティブアプリケーションになるのだ。これは、現在のWindows開発者がLinux市場に手を広げようとする際の強力な武器になるだろう。実際、Linuxへの進出を考えながらもWindowsを捨てられないという人は多い。もちろん、LinuxとWindowsは、ファイル名の大文字小文字を区別するとか、ドライブ名が存在しないといった違いがある。こうした違いは、コンパイル指令で判別することになる。
*編注:「Delphi 6」になるだろうといわれている
CLXには、主に基本的なクラスを提供するBaseCLX、ユーザーインターフェイスを設計するためのVisualCLX、データアクセスのためのDataCLX、Web開発のためのNetCLXがある。
■BaseCLX
BaseCLXは、プラットフォームへの依存性をなくす基本部分である。BaseCLXには、文字列処理やメモリ管理、ファイル処理に関するランタイムライブラリや基本的なクラスが含まれる。ここに含まれるクラスの多くは、現在のDelphiでも使われているものだ。
■VisualCLX
VisualCLXは、ユーザーインターフェイスを設計するためのクラスである。前述の例で取り上げた、ボタンやカラーダイアログもVisualCLXに含まれる。CLXがWindowsとの互換性を考慮していることもあり、Delphiにある多くのコントロールがCLXでも提供される。一般的なボタンやリストボックス、ラジオボタンなどに加えて、ツールバーやステータスバー、イメージリストなどもある。ただし、すべての機能が実装されているわけではない。また、書式付きエディット(RichEdit)やメディアプレーヤ(MediaPlayer)、DDE関係など、Windowsに特化したものは含まれていない。逆に、HtmlBrowserのように現在のDelphiには含まれていない機能もある。
■DataCLX
DataCLXは、データアクセスに関するコンポーネントである。データベースエンジンをコンポーネントとして取り込んでいる。DataCLXによって、ローカルなデータやInterBase、MySQL、Oracle、DB2のようなRDBMSへ接続できる(OracleとDB2の対応はServer版のみ)。
■NetCLX
NetCLXは、ApacheなどのWebサーバモジュールを作成するためのコンポーネントである(詳しくは後述)。
Kylixでは、プログラミング言語としてObject Pascalを使う。Pascalというのは、Delphiユーザー以外にとってはなじみの薄い言語かもしれない。Pascalは、もともと教育機関で開発された比較的コンパクトな言語だが、Object Pascalはオブジェクト指向プログラミングへの対応をはじめ、大幅に機能が拡張されている。Pascalは、あいまいな構文を受け入れないという特徴があり、やや堅苦しい言語と思われているが、裏を返せばいいかげんなプログラミングによるバグを排除できるということでもある。
Kylixに組み込まれているPascalコンパイラは、ネイティブコード(機械語)を生成する。つまり、Linux用のネイティブな実行ファイル(ELF形式)を直接生成する。もちろん、シェアードオブジェクト(.so)も作成できる。そもそも、ボーランドが最初に発売したのがPascalコンパイラだということもあるが、そのコンパイル技術は非常に優れており、1分間に約400万行(Pentium III-650MHz時)という高速性を実現している。これが、軽快なビジュアル開発と高速なネイティブアプリケーションの生成を両立させる基礎になっている。
究極のパフォーマンスチューニングを求めるのであれば、インラインアセンブラを利用できる。Kylixの組み込みアセンブラは、MMXやSIMD、3DNow!を含むx86命令セットをサポートしている。
Kylixには、基本的にglibcで提供されている基本的なライブラリのほとんどがPascalで利用できるように取り込まれている。例えば、CLXコンポーネントを使わないコンソールアプリケーションも開発できる。しかし、Linuxのカーネルを操作したり、デバイスドライバを開発するといった用途は考えられていない。Kylixの目的は、あくまでもアプリケーションを開発することにあるのだ。
3/4
|
Index | |
Windows開発者に贈る Kylixの全貌 | |
Kylixの正体 | |
開発工程を一変させるビジュアル開発環境 コンポーネントベースの統合開発環境 ソース編集を可能にする2Way-Tool 強力なソースレベルデバッガ |
|
コンポーネントフレームワークCLX BaseCLX VisualCLX DataCLX NetCLX |
|
高速なネイティブコンパイラ | |
Kylixのデータベース開発機能 | |
Apacheにも対応したインターネット開発 | |
KylixがLinuxを変える |
Linux Square全記事インデックス |
Linux Squareフォーラム プログラミング関連記事 |
特集:オブジェクト指向に生まれ変わるPHP5[前編] 現在開発中のPHP5は、オブジェクト指向機能が大幅に強化される。次世代PHPはどのような言語になるのか? |
|
特集:Windows開発者に贈る
Kylixの全貌 注目の開発環境「Borland Kylix」がいよいよ見えてきた。ここに、英語版の発売を目前に控えたKylixの機能やアーキテクチャを紹介しよう |
|
特集:Kylixプログラミング作法 GUIの構築やコンポーネントとコードの関係、 Object Pascalの仕様など。 これらの点を、実際に日本語ベータ版でプログラミングしながら分かりやすく解説 |
|
連載:PHP4で作るWeb-DBシステム(全5回) PHPはWebサーバとデータベースを結びつけるものだ。そのためPHPでの開発を開始するには、OS、データベース、Webサーバ、そしてPHPと、多くのソフトウェアのインストールを行う必要がある |
|
連載:ステップ・バイ・ステップ・シェルスクリプト(全7回) Linuxの中でシェルスクリプトはネットワークの設定、デーモンの起動など重要な役割を果たしている。この連載では、シェルスクリプトで実用的なプログラムを組むことを目標にして、シェルの基本的な知識を説明する |
|
連載:Kylix
3とDB2で作るWebサービス・アプリ(全5回) Kylix 3とDB2 V8.1を使って、Webサービス・アプリを作ってみよう。トライアル版も用意されているので、実際に試しながら読んでほしい |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|