アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

PHPでGUIアプリ - PHP-Qtを使ってみよう

皆さんはGUIアプリケーションを作ろうと思ったことはありますか?
作りたいけどC言語とか覚えるのが面倒だなぁと躊躇されている方もいるかと思います。でも、普段使い慣れたPHPで、実はGUIアプリケーションを作ることもできるんです。
今回はそんなPHPGUIアプリケーションを作ることができるPHP-Qtをご紹介したいと思います。

PHP-Qtは、QtというツールキットをPHPから使えるようにしたPHP5用のエクステンションです。そしてQtとは、X Window System上で動作するデスクトップ環境であるKDEなどで使われていることで有名なツールキットです。
同様のGUIツールキットとしては、デスクトップ環境であるGNOMEで使われているGTK+が有名ですね。WEB+DB PRESS Vol.42の「PHPGUIアプリケーションを作ろう」という記事でも紹介されていたので、ご存知の方も多いかと思います。

では、PHP-Qtを使うための準備をしていきます。手元にDebian GNU/Linux etchCentOS 5のX環境がありましたので、この環境を使います。

まず、PHP-Qtをコンパイルするために必要なパッケージをインストールします。

Debianの場合


# aptitude install php5-dev libqt4-devel cmake


CentOSの場合


# yum install php-devel qt4-devel


CentOSの場合はCMakeのパッケージがありませんので、CMakeのサイトのDownloadのページから最新版をダウンロードして、Installのページの手順に従ってインストールします。



$ wget http://www.cmake.org/files/v2.4/cmake-2.4.8.tar.gz
$ tar xzf cmake-2.4.8.tar.gz
$ cd cmake-2.4.8/
$ ./bootstrap
$ make
# make install


もし途中でCコンパイラがない旨のエラーが出た場合は、gccをインストールしてから再度実行してください。



# yum gcc gcc-c++


さて、これで準備ができましたので、PHP-Qtをコンパイルします。
PHP-QtのサイトのDownloadのページから最新版をダウンロードして、Installation and compilationのページの手順に従ってインストールします。



$ wget http://download.berlios.de/php-qt/php-qt-0.9.tar.gz
$ tar xzf php-qt-0.9.tar.gz
$ cd phpqt/
$ mkdir build
$ cd build/
$ cmake ..
$ make
# make install


なお、CentOSの場合はqmakeが見つからない旨のエラーになりますので、



$ cmake .. -DQT_QMAKE_EXECUTABLE=/usr/lib/qt4/bin/qmake


のようにqmakeの場所を指定して実行します。

無事コンパイルとインストールが終わったら、ld.so.confを編集して、ldconfigを実行します。



include /etc/ld.so.conf.d/*.conf
/usr/local/lib ← 追加




# ldconfig


やっとPHP-Qtを実行する準備が整いましたので、実行してみましょう。
phpqt/examplesディレクトリに電卓のスクリプトが入っていますので、それを実行してみます。



$ php phpqt/examples/calculator/main.php


問題がなければ、PHP-QtのサイトのScreenshotsのページにあるような電卓が表示されるかと思います。

また、phpqt/tutorialsディレクトリにサンプルスクリプトが入っていますので、いろいろと覗いてみます。そうすると、



$app = new QApplication($argc,$argv);

// ここにウィジェットについて記述

$app->exec();


の間にウィジェットについて記述していけばよいことが見て取れますね。
Qtで使用できるウィジェットは、Online Reference Documentationのページに書かれていますので、ここを参考にいろいろと試してみるといいと思われます。

では、皆さんも使い慣れたPHPGUIアプリケーションを作ってみては如何でしょうか。