Rapid Application Developmentツール(3):他のRADツール

この特集の第1回第2回では、データベースフロントエンド開発環境とLinux用BASIC言語RAD環境について見てきた。今回は、もっと小さいプログラミング言語(C++/KDevelop/AnjutaやJava/Eclipseについては言及しない)と、あまり知られていない独自に開発された言語のツールを紹介して最終回としたい。

Python Card

Python Cardは米Apple社のHypercardに発想を得ている。Hypercardは分かりやすいカードメタファを採用していて、情報を電子カードの集まりとして整理し、ユーザが調べられるようにしている。Python Cardは、wxWindows GUIツールキットとそれに基づくwxPythonをベースにしている。インタフェースビルダには、使用可能なwxWindowsウィジェットすべてはまだ含まれていないので、Pythonとツールキットの組み合わせで可能なすべての機能がサポートされているわけではない。 Python Cardにはコードフォールディング可能なコードエディタが付いている。

Mozilla

Mozillaはすばらしい。このブラウザは、手に入る最良のHTML表示エンジンだというだけでなく、クロスプラットフォームアプリケーション作成の完璧な基盤にもなる。Mozillaのランタイムエンジンは、グラフィカルユーザインタフェースのExtensible User Interface Language(XUL)XMLベース記述のインタプリタとして機能する。XULでは、アプリケーションウィンドウのレイアウトを記述できる。たとえば、ボタンや入力フィールドの位置を指定したりできる。さらによいことに、MozillaにはJavaScriptインタプリタもある。JavaScpriptでHTMLページのスクリプトを記述できるのと同じようにXULファイルにもスクリプトを記述できるのだ。その結果、Mozillaランタイムエンジンを介して表示される実用アプリケーションを作成できる。ローカルインストールでまたはネットワーク上で動作するデスクトップ環境一式が、既にこの方法でプログラムされている。XULアプリケーションはMozillaが動作するすべてのプラットフォームで動作する。

mozdev.org Webサイト(私のKonquerorブラウザにひどいクラッシュを発生させるサイトだが)には、XULユーザインタフェースをグラフィカルに作成するためのプロジェクトもある。このXULMakerは、現在は、XULファイルをビジュアルにまたインタラクティブに作成、編集するツールだ。将来は、XULアプリケーション開発のすべての面に対応可能な本格的IDEに進化させることを目標にしている。たとえば、JavaScriptやCSSのエディタの統合化なども計画されている。XULMakerバージョン1.30には、Cascades(CSSエディタ)、ScriptEditor(JavaScriptエディタ)、mozcvs(ご推察のとおり、CVS統合)、xpimaker(XULアプリケーションをパッケージ化するツール)など、他の既存ソリューションの統合が予定されており、Mozillaプロジェクトから出てきた新たなXMLベース言語、Extensible Bindings Language(XBL)で動的コンテンツを定義できるようになるという。XBLを使うと、新しいコンテンツを定義したり、XULウィジェットに追加イベントハンドラを付加することができる。

Kommander Editor

Kommander Editorについては、この特集のデータベースフロントエンドの回でも取り上げた。Kommanderがデータベースフロントエンド構築ツールになるのはまだこれからの話だが、これは今も既に便利なツールだ。Kommanderはどのプログラミング言語からも独立している。Bash、PerlPHP、Pythonなど、使い慣れた言語を利用できる。

Trolltech社(ノルウェー)のQt Designerの変更版を使ってアプリケーションのインタフェースをデザインできる。これはよく知られた大規模なGUIビルダだ。KommanderではネイティブQtウィジェットのすべてはまだサポートされていないが、テキスト処理、オプション提示、コマンド発行についてはほとんど何でも行うことができる。GroupBoxやTabStripなどのレイアウトウィジェットも使える。

ウィジェットに関連付けられているテキスト(入力フィールド内のテキスト、ボタン上のテキストなど)を処理するには、ウィジェットからstdoutに出力できるようにする必要がある。これは、指定の各ウィジェットのプロパティで指定できる。これによって、GUIがネイティブLinuxシグナルチャンネルとやり取りできるようになる。ウィジェットのテキスト関連付けを編集するには、そのウィジェットを右クリックする。これは、好きな言語でスクリプトを記述したり、インポートしたりして、そのスクリプトでウィジェットのテキスト文字列値を変数として使用できるということだ。

Kommander Editorから出力されるのは、インタフェース記述と実行するスクリプトを含むXMLファイルだ。このXMLファイルの実行はKommander Executorで行う。Kommander ExecutorにXMLファイルを引数として指定して、KDE内で実行する。このアプローチはMozillaとよく似ているが、KDE環境とQtツールキットのパワーとインフラストラクチャが違う。Kommanderスクリプトは、KDEのプロセス間通信プロトコル、DCOPを介して他のKDEアプリケーションとやり取りできる。この機能により、DCOPをサポートする事実上すべてのKDEアプリケーションの動作を制御することができる。

Runtime Revolution

最後に、このプロプライエタリ製品を紹介する。エジンバラ(スコットランド)のRuntime Revolution社のWebサイトによれば、「Revolutionはマルチプラットフォームソフトウェア開発ツールで、Mac OS X、クラシックMac OS、Windows、Linux、主要なUnixシステム用に、パワフルなアプリケーションを迅速かつ簡単に開発できる」という。

まず、MDI環境でアプリケーションのインタフェースのレイアウトから始める。イベントについては、別のダイアログでオプションを指定し、独自に開発された言語でコードを追加する。このソフトウェアは、AppleのHypercardをモデルとして作られている。MySQL、PostgreSQL、Valentina(Mac製品)、ODBCのデータベースに接続できる。購入するバージョンによっては、データベースリストにOracleを追加することもできる。高価格バージョンのRevolutionでは、複数のオペレーティングシステム用のパッケージとディストリビューションを生成でき、クライアントでRevolutionを実行する必要はない。Expressパッケージは$149、Oracle対応、クロスプラットフォームアプリケーション対応のバージョンは$299からの価格設定になっている。

個人的見解

これらの製品のうち、私は個人的にKommanderが気に入っている。新しくプログラミング言語を学ぶ必要がなく、私の場合、Perl、PHP、Bash(これは前回のWeb開発で知った)で必要なことが行えるところがいい。MozillaでJavaScriptを使うこともできるが、JavaScriptはこの3言語ほどパワフルではない。

ここで紹介しなかった有望なプロジェクトもたくさんある。SashXB、PHPGTK、wxBasicなど、まだ真のRAD環境があるとはいえないものについては取り上げなかった。ほかにもあったらぜひ教えてほしい。

一般的な方向

以上で、Linux Rapid Application Developmentツールのこの概要は終わりにする。今日では、RADツールは、ごく一般的になり、多くの言語が使用できるようになった。この特集の全3回からわかった主要なポイントは3つ。まず、Python Card、knoda、Rekallの3つのオープンソースソリューションで、Pythonが使われていることだ。その理由については、Pythonに関するKevin Altis氏の考察が参考になるだろう。2番目は、4〜5種類のBASIC RAD環境が現在アクティブなプロジェクトとして開発されていることだ。つまり、対象となるユーザグループからの需要が高いということである。3番目は、MozillaとKommanderのように、XMLを使ってユーザインタフェースを記述する方法が増加傾向にあることだ。習得しやすいパワフルな言語でプログラミング可能なXMLベースのユーザインタフェースが、Rapid Application Developmentの将来の姿になるだろう。

Michael ‘STIBS’ Stibane─―ドレスデン(ドイツ)近くのEastern Ore Mountains(いわゆる「Christmas County」)にある古い水車小屋に住む。Linux分野のフリーランスのトレーナーおよびコンサルタントとして働くほか、ドイツの2つのLinux雑誌に記事を執筆、またEscapade Scripting Language、MEPIS LinuxLPIのボランティアとしても活動。Linuxデスクトップ、Linuxターミナルサーバ、中小企業のLinuxシステム、およびLinux教育に関心を持つ。