Delphi for PHPを使い倒す!

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)であるEclipsePDT(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 Delphi for PHP 2.0のIDEを起動(画像をクリックすると拡大します)
Delphi for PHP 2.0のIDEを起動

 「新規作成」で表示されるダイアログボックスから、「アプリケーション」を選択します。

画面2 新規作成ダイアログ
新規作成ダイアログ

 新規アプリケーションには、フォームが1つ追加された状態で表示されます。真ん中にグリッド上のフォームが表示されていますね。

画面3 新規アプリケーション画面(画像をクリックすると拡大します)
新規アプリケーション画面

 ここへ、ラベルとボタンを1つずつ置いてみます。右側のツールパレットから、「Standard」タブにあるLabelとButtonを選択して、フォームをクリックするとコンポーネントが表示されます。

 プロパティの変更は、左側のオブジェクトインスペクタから行います。Labelをフォーム上へ配置すると、自動的にLabel1と名前が付いて、Captionも「Label1」になっています。これを削除して空にします。後で表示される際にサイズが自動で変更されるように、AutoSizeをtrueにしておきましょう。

 次に、Button1のCaptionを「Hello World!」に変更します。また、ボタンの横幅が狭いので、クリックして表示されるハンドルで適当な大きさに変更します。

画面4 ラベルとボタンを配置(画像をクリックすると拡大します)
ラベルとボタンを配置

 それでは、IDE上のボタンをダブルクリックしてみましょう。IDEのエディタのタブが「デザイン」から「コード」に切り替わって以下のようなスケルトンが表示されます。

画面5 初期状態のコード(画像をクリックすると拡大します)
初期状態のコード
<?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!」と表示されます。

画面6 アプリケーションの実行
アプリケーションの実行
 
1/3
next

Index
えっ、まだPHPでVisual開発してないの?
Page1
Delphi for PHP 2.0ってどんな製品?
PHPでもビジュアル開発だ!
  Page2
JavaScriptイベント
Delphi for PHPのイベント機構
  Page3
controlsクラスの不具合の修正

index 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の世界を体験してみよう
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間