SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Delphi for PHP はじめの3歩(AD)

Delphi for PHP はじめの3歩 その3

Delphi for PHPでビジュアルPHPプログラミング

EDN編集部[著]

Delphi for PHPは、Windows向けビジュアル開発ツールとして定評のあるDelphiの開発スタイル、つまり、コンポーネントをドラッグ&ドロップ操作で配置し、プロパティとイベントを設定して開発するスタイルで、PHPによるWebアプリケーションを開発できるツールです。 Delphi for PHPの基本的な使い方を紹介する3回シリーズの最終回では、データベースを使ってみます。

データベース開発を紹介する前に新バージョンのお知らせ

 この記事を執筆している時点でちょうどDelphi for PHPの新バージョン「Delphi for PHP 2.0」が発表されました。以前も書きましたが、残念ながらバージョン1.0は英語版のみでした。しかし、バージョン2.0では、日本語を含むマルチランゲージのユーザーインターフェースをサポートするようになりました。やはり日本語のユーザーインターフェースだと直感的に使えますから、使い勝手は格段によくなります。

図1 Delphi for PHP 2.0
図1 Delphi for PHP 2.0

 ここでは、2.0の新機能を紹介しておきましょう。

これまでの記事

ビジュアルデザイナ

 ビジュアルデザイナには、従来のPHPデザイナに、HTMLデザイナとテンプレートデザイナが加わりました。PHPフォームにコンポーネントをドラッグ&ドロップできるだけでなく、HTMLにボタンやテキストボックスなどのHTML要素をドラッグ&ドロップしたり、HTMLテンプレートにPHPコンポーネントをドラッグ&ドロップできるようになりました。

 テンプレートフォームを使うと、HTML部分をHTMLデザイナに任せて、PHP部分のみをDelphi for PHP 2.0で開発するような分業も可能になります。

コードエディタ

 コード入力時の支援機能も強化されています。Error Insightは、入力中のコードの構文エラーを自動検出して表示する機能です。コンパイルという作業のないダイナミック言語の場合、スペルミスの発見は時として困難なので、この機能は重宝します。

 このほかに、同期編集やコード折りたたみなど、コードの修正やナビゲートを容易にする機能が追加されています。

新しいコンポーネント

 Zendフレームワークをカプセル化してビジュアル開発を可能にしたコンポーネントやOracleネイティブコンポーネントなどが追加されています。また、任意のPHPフレームワークやライブラリなどをカプセル化できるので、Delphi for PHPのビジュアル開発のメリットを、PHPオープンソース資産全般に広げることができます。

データベース開発機能

 今回紹介するデータベース機能は、1.0のものですが、これに加えて、新しいデータベース開発機能が2.0には搭載されています。まず、サポートデータベースが大幅に拡張されています。データエクスプローラは、データベースサーバ固有のスキーマオブジェクトを扱うことができますが、従来のInterBaseとMySQLに加えて、新たにDB2、Oracle、Informix、Microsoft SQL Server、Sybase、SQL Anywhere、PostgreSQLに対応しました。これらのデータベースアプリケーションは、ドラッグ&ドロップで、ほとんどコーディングすることなく基本機能を開発できます。

 Delphi for PHP 2.0の製品情報は、http://www.codegear.com/jp/products/delphi/phpをご覧ください。Delphi for PHP 2.0の新機能の詳細については、CDNに掲載された記事「Delphi for PHP 2.0の新機能」を参照してください。

Delphi for PHPのデータベースアクセス 1

 では、本編に戻り、Delphi for PHPのデータベース開発機能について紹介しましょう。

 Delphi for PHPのコンポーネントフレームワークVCL for PHPには、データベースアクセスをサポートするコンポーネントが揃っています。これらのコンポーネントを使えば、ドラッグ&ドロップの操作で、基本的なデータベースアクセス機能を実装できます。

 まずは「習うより慣れろ」で、データベース接続を実践してみましょう。ここでは、Delphi for PHPに付属しているInterBase Developer Editionを使います。InterBaseは、軽量RDBMSで、PHPによるWebアプリケーション用には最適なデータベースです。

 InterBaseが起動している状態で、以下の操作を行います。

Data Explorerの設定

 Delphi for PHPのIDEの右側に表示されている「Project Manager」ペインの下にあるタブ[Data Explorer]をクリックして、データエクスプローラ(Data Explorer)を表示します(図2)。

図2 データエクスプローラ
図2 データエクスプローラ
新バージョン情報
 バージョン1.0では、MySQLとInterBaseの2つだけをサポートしていたデータエクスプローラですが、新バージョンでは、この2つに加えて、DB2、Oracle、Informix、Microsoft SQL Server、Sybase、SQL Anywhere、PostgreSQLをサポートするようになりました。

 ここで、接続するデータベース、この場合は、InterBaseを選択してマウスの右ボタンをクリックし、[Register Database]メニューを選択します。表示されたダイアログボックスに以下のように入力します。

Edit1
項目 値
Database type InterBase
Connection Name myinterbase(識別しやすい任意の名前)
Host Localhost
Database Name (データベースファイルを指定します。例えば、InterBaseをインストールしたディレクトリ下の、examples\database\employee.gdb)
Username (ユーザー名)
Password (パスワード)
図3 データベース接続の設定
図3 データベース接続の設定

 入力が終わったら[OK]ボタンをクリックして、設定内容を保存します。すると、Data Explorerの[InterBase]項目下に、作成したmyinterbaseが表示されます。項目を開いていくと、myinterbaseで指定したデータベースのテーブル一覧が表示されます。

図4 テーブル一覧の表示
図4 テーブル一覧の表示

ドラッグ&ドロップでデータベースアプリケーションを作る

 ここまで設定ができてしまえば、基本的なデータベースアプリケーションを作成する手順は大変シンプルです。[File|New|Application]で新規アプリケーションを作成したら、Data Explorerで表示したいテーブルを選択してマウスをドラッグし、フォーム上にドロップします。

図5 テーブルをドラッグ
図5 テーブルをドラッグ

 すると、フォーム上には、データベースにアクセスするためのコンポーネント、グリッドなどが配置されます。

図6 コンポーネントの配置
図6 コンポーネントの配置

 必要なプロパティは既に設定されているので、プログラムを実行するだけで、データを表示できます。

図7 プログラムの実行
図7 プログラムの実行

コンポーネントの解説

 自動的に配置されたコンポーネントについて、簡単に解説しましょう。

Database

 データベース接続を担当するコンポーネント。Data Explorerで指定した接続設定が、各プロパティに指定されます。

Table

 データベーステーブルを扱うコンポーネント。Databaseプロパティに接続するデータベースへの接続設定を行ったDatabaseコンポーネントを指定します。TableNameプロパティに扱うテーブルの名前を指定します。

 同じようなコンポーネントにQueryコンポーネントがありますが、こちらは、テーブルではなくクエリーをSQLプロパティに指定します。

Datasource

 TableやQueryといったデータセットをグリッドやエディットといったデータ表示/編集用のコンポーネントと結び付けます。DataSetプロパティに、TableやQueryコンポーネントを指定します。

 多くのコントロールには、Datasourceプロパティがあり、この値によって、Datasourceコンポーネントとの関連を定義します。

DBGrid

 データを表形式で表示するコントロールです。AJAXを活用して、すばやいレスポンスでデータを表示・編集できます。Datasourceプロパティに指定したDatasourceコンポーネントに結び付けられたデータセットを表示します。

Delphi for PHPのデータベースアクセス 2

Editを使ってデータ表示

 今度は、グリッドを使わずに1ページに1件のデータを表示するようなフォームを作成してみましょう。データの表示や編集には、LabelやEditを利用できます。これらのコンポーネントには、DatasourceプロパティとDataFieldプロパティがあり、この2つ値を設定することで、データを表示・編集できるようになります。

 また、レコードの移動を行うリンクを追加するには、Paginatorコンポーネントを使います。このコンポーネントを用いれば、ノンコーディングでレコード移動を行うページング機能を実装できます。

 では、[File|New|Application]で新規アプリケーションを作成します。新規フォームが表示されたら、データエクスプローラに移動します。

 データエクスプローラのツールバーには、4つのボタンがあります。このボタンは、データエクスプローラからフォームに項目をドラッグ&ドロップしたときに作成するコントロールを指定するオプションです。

Label1
ボタン 説明
 
テーブル項目をドロップしたときに、そのテーブルのデータを表示するDBGridを配置します。
 
テーブル項目をドロップしたときに、そのテーブルのデータを表示するDBRepeaterを配置します。DBRepeaterは、特殊なパネルで、この上に配置したDatasourceに関連付けられたコントロールにデータを表示し、複数レコード分繰り返して表示します。フォームに1つのDBRepeaterを配置すると、実行時には複数レコード分のDBRepeaterパネルが表示されます。
 
フィールドをドロップしたときに、そのフィールドのデータを表示するLabelを配置します。
 
フィールドをドロップしたときに、そのフィールドのデータを表示するEditを配置します。フィールドは編集できます。
新バージョン情報
 Delphi for PHP 2.0では、この機能が大幅拡張され、より多くのコンポーネントをデータエクスプローラからドラッグ&ドロップできるようになりました。2.0では、配置するコンポーネントの種類をドロップダウンリストから選択します。

 ここでは、Editをクリックします。

 InterBaseのサンプルデータベースから[CUSTOMER]テーブルを選択します。ツリーを開いて、[CUST_NO]を選択します。

図8 CUST_NOを選択
図8 CUST_NOを選択

 選択した、[CUST_NO]項目をフォームにドロップします。すると、Database、Table、DatasourceとCUST_NOのデータを表示するように設定されたEditが配置されます。

図9 [CUST_NO]をフォームにドロップ
図9 [CUST_NO]をフォームにドロップ

 LabelとEditを使って、CUSTOMERテーブルのいくつかの項目を表示するようにしてみましょう。図10のようにコンポーネントを配置します。

図10 フォームの設計
図10 フォームの設計

 配置したコンポーネントのプロパティは、それぞれ次のように設定しています。

Label1
プロパティ 値
Caption 顧客番号
Label2
プロパティ 値
Caption 顧客名
Label3
プロパティ 値
Caption 電話番号
Label4
プロパティ 値
Caption 住所
Edit1
プロパティ 値
DataField CUSTOMER
DataSource dsCUSTOMER1
Text CUSTOMER
Edit2
プロパティ 値
DataField PHONE_NO
DataSource dsCUSTOMER1
Text PHONE_NO
Edit3
プロパティ 値
DataField ADDRESS_LINE1
DataSource dsCUSTOMER1
Text ADDRESS_LINE1
Edit4
プロパティ 値
DataField ADDRESS_LINE2
DataSource dsCUSTOMER1
Text ADDRESS_LINE2

ページング機能を使う

 次に、ツールパレットの[Data Control]カテゴリから、DBPaginatorをフォームに配置します。このコンポーネントは、指定したDatasourceのページング機能を提供します。例えば、ここでDatasourceにdsCUSTOMER1を指定すると、配置したEditに表示されるレコードは、DBPaginatorで選んだレコードになります。

DBPaginator1
プロパティ 値
CaptionFirst 最初へ
CaptionLast 最後へ
CaptionNext 次へ
CaptionPrevious 前へ
DataSource dsCUSTOMER1
図11 完成したフォーム
図11 完成したフォーム

 では、アプリケーションを実行してみましょう。最初のレコードのデータがフォームに表示されます。[次へ]をクリックすると、次のレコードが表示されます。

図12 実行結果
図12 実行結果

おわりに

 3回にわたってDelphi for PHPによるPHP開発を紹介してきました。もうまもなく、新バージョンのDelphi for PHP 2.0のトライアル版も入手できるようになるでしょう。Delphi for PHPは、PHP開発に新しいビジュアル手法を取り入れた画期的なツールで、一度使ってみると「面白い!」と実感できます。ぜひお試しください。

関連リンク

この記事は参考になりましたか?

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー