Delphi for PHPを使い倒す!(前編)
えっ、まだPHPでVisual開発してないの?
はやしつとむ
アナハイムテクノロジー株式会社
2009/10/7
なぜPHPではビジュアル開発ができないのだろうか。そんな疑問を解消するのが、スペイン生まれのDelphi for PHPだ(編集部)
PHPは、現在のWeb開発になくてはならない開発環境となっています。Webの世界では、PHPやRubyのようにコンパイルすることなしに実行できるLL言語(Lightweight Language:軽量言語)に勢いがあります。従来は、Javaの独壇場であった大規模開発の現場にも、LL言語の普及が進んでいるという話も耳にします。
ところで、@IT会議室のあるトピックによれば、PHPのプログラミングはテキストエディタを使用しての開発が大勢を占めているようです。しかし、統合開発環境(IDE)であるEclipse+PDT(PHP Development Tools)の利用も増えており、Zend StudioもベースとなるプラットフォームにEclipseを採用しました。
Eclipseのプラグインであれ、Zend Studioであれ、PHPのIDEは入力支援機能やクラス解析機能の付いたテキストエディタに過ぎません。それでも、筆者はZend Studio 5系列を未だに使うこともあり、これはこれで大変便利な機能だと思っています。
筆者は、デスクトップ、Webを問わず業務系アプリケーションを作っていますが、こうしたアプリケーションでは、たくさんのボタンやエディットとグリッドがタブ上に大量に並ぶ画面構成となります。業務系アプリケーションを作成される諸兄の中には、「どうしてPHPではビジュアル開発ができないんだ!」とお嘆きの方も多いかもしれません。
Delphi for PHP 2.0は、Delphiが先鞭を付けた「ぽとりぺたり」なビジュアル開発をPHPに持ち込みました。筆者にとっては、これはまさに別次元、もう手放せません。そこで、これから2回に渡ってDelphi for PHP 2.0の使い倒し術を紹介したいと思います。
Delphi for PHP 2.0ってどんな製品?
まず、Delphi for PHP 2.0について紹介しましょう。Delphi for PHP 2.0は、Delphiの開発/発売元であるエンバカデロ・テクノロジーズの販売する製品ですが、開発はスペインのクアドラム・ソフトウェアが行っています。
開発者のホセ・レオン氏(右)が2009年2月に来日した際のインタビューで、「(PHPで)いざコードを書き始めてみると、時代に逆行しているように感じた。Delphi for Windowsを用いたビジュアルな開発に慣れていたので、『こんなに生のコードを書かなくてはならないのか』と驚いた」ことから、同製品の開発を始めたと述べています。
Delphi for PHP 1.0は2007年2月に発表されていますが、IDEもヘルプも日本語化されていませんでした。2.0は、2008年4月に発表され日本語化されています。これまでに2回のアップデートが行われ、初期版での不具合も大分修正されて安定しています。
Delhi for PHPのIDEは、Delphi for Windowsで開発されていて、ルックアンドフィールは最近のDelphiやVisualStudioとそっくりです。VCL for PHPというDelphiのVCLと類似な構造のクラスライブラリを兼ね備え、多数のビジュアル/非ビジュアルなコンポーネントを利用できます。
VCL for PHP自体は、LGPL2で公開されているオープンソース製品です。そのため、Delphi for PHPで開発したWebアプリケーションを配布する際にはライブラリ自体の再配布が可能となっています。
PHPでもビジュアル開発だ!
それでは、Delphi for PHP 2.0でのWebアプリケーション開発を見ていきましょう。IDEを起動すると以下のような画面になります。
「新規作成」で表示されるダイアログボックスから、「アプリケーション」を選択します。
新規アプリケーションには、フォームが1つ追加された状態で表示されます。真ん中にグリッド上のフォームが表示されていますね。
ここへ、ラベルとボタンを1つずつ置いてみます。右側のツールパレットから、「Standard」タブにあるLabelとButtonを選択して、フォームをクリックするとコンポーネントが表示されます。
プロパティの変更は、左側のオブジェクトインスペクタから行います。Labelをフォーム上へ配置すると、自動的にLabel1と名前が付いて、Captionも「Label1」になっています。これを削除して空にします。後で表示される際にサイズが自動で変更されるように、AutoSizeをtrueにしておきましょう。
次に、Button1のCaptionを「Hello World!」に変更します。また、ボタンの横幅が狭いので、クリックして表示されるハンドルで適当な大きさに変更します。
それでは、IDE上のボタンをダブルクリックしてみましょう。IDEのエディタのタブが「デザイン」から「コード」に切り替わって以下のようなスケルトンが表示されます。
<?php require_once("vcl/vcl.inc.php"); //Includes use_unit("forms.inc.php"); use_unit("extctrls.inc.php"); use_unit("stdctrls.inc.php"); //Class definition class Unit1 extends Page { public $Button1 = null; public $Label1 = null; function Button1Click($sender, $params) { } } global $application; global $Unit1; //Creates the form $Unit1=new Unit1($application); //Read from resource file $Unit1->loadResource(__FILE__); //Shows the form $Unit1->show(); ?>
Unit1クラスに、Button1Clickという関数が追加されています。これがボタンのクリック時のイベントハンドラになります。ここにコードを追加しましょう。
function Button1Click($sender, $params) { $this->Label1->Caption = $this->Button1->Caption; }
ここでフォームのコードとプロジェクトを保存しておきます。「ファイル」メニューから「すべて保存」を実行してください。適当なフォルダを作成して、unit1.phpとProject1.phprjを保存します。サンプルなので名前もそのままでいいでしょう。
はい! IDEのツールバーにある緑色の三角形のボタンをクリックしてみましょう。この方法ではデバッガを通してアプリケーションを実行します。横にある赤い「!」のボタンをクリックした場合は、デバッガを介さずに実行します。実に簡単ですね。
Webブラウザにアプリケーションが表示されました。ボタンを押すとラベルに「HelloWorld!」と表示されます。
1/3 |
Index | |
えっ、まだPHPでVisual開発してないの? | |
Page1 Delphi for PHP 2.0ってどんな製品? PHPでもビジュアル開発だ! |
|
Page2 JavaScriptイベント Delphi for PHPのイベント機構 |
|
Page3 controlsクラスの不具合の修正 |
Delphi for PHPを使い倒す! |
Coding Edgeお勧め記事 |
いまさらアルゴリズムを学ぶ意味 コーディングに役立つ! アルゴリズムの基本(1) コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう |
|
Zope 3の魅力に迫る Zope 3とは何ぞや?(1) Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか? |
|
貧弱環境プログラミングのススメ 柴田 淳のコーディング天国 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く? |
|
Haskellプログラミングの楽しみ方 のんびりHaskell(1) 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう |
|
ちょっと変わったLisp入門 Gaucheでメタプログラミング(1) Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|