早速ですが,はじめてのZendFrameworkのアプリケーションを作ってみましょう。
何事をはじめるにも最初は簡単なことからはじめるのが一番です。ゲストブックと呼ばれるアプリケーションを作ってみましょう。
ゲストブックとは
旅館やペンションにて,宿泊客が思い思いの感想を書くノートなどを見かけたことがありませんか? 感想を書いたことがある方もいることでしょう。このノートはゲストブックと呼ばれています。
ゲストブックは設計が非常にシンプルなのでコンピュータアプリケーションの入門アプリとして広く利用されています。この連載でも最初のアプリケーションはゲストブックにします。
フレームワークなしのゲストブックアプリ
Zend Frameworkを利用したゲストブックアプリケーションを期待されているかもしれませんが,ちょっと我慢してください。まず最初に,通常のPHPアプリとして作られたゲストブックアプリを見てみましょう。
ゲストブックの仕様
どんなアプリケーションでも仕様が必要です。今回作るゲストブックは以下の仕様をみたすものとします。
- ゲストブックは誰でも記入できる
- タイトル,メッセージ,記入日時を記録する
- 一覧が参照できる
- セキュリティは特に考慮しない
- エラー処理は考慮しない
- 可能な限り実装を簡略化する
はじめてのZend Frameworkアプリケーションの元となるPHPアプリケーションは,安全なアプリケーションでないことに注意してください。安全でない,というよりは穴だらけなうえ,必要な処理が省略されているダメなアプリケーションです。
通常このような実装での公開は大いに問題がありますが,セキュリティやエラー処理など細かい部分の解説は理解の妨げになるため,敢えて省略しています。順次問題点は解説しますのでご安心ください。
ゲストブックアプリファイルの配置
ファイルは/www/guestbookに置くことにします。Zend Frameworkのアプリケーションと通常のPHPアプリケーションは共存できるので,同じアプリケーションのディレクトリ内に配置することにします。
自分ですべてのファイルやディレクトリを作成することも可能です。Zend Frameworkは特定のファイルレイアウトを想定していないので,どのよなディレクトリ構成でも可能です。今回はZend Tool(ファイルの生成ツール)で初期化したプロジェクトのディレクトリとファイルを使うことにします(※1)。
- ※1
Zend ToolはZend Framework 1.8から正式なリリースが予定されています。執筆時点で1.8のPreview版がリリースされていますが,まだ完成度は低いようです。
Zend Toolで作成済みのsample applicationディレクトリを/www/guestbookとしてコピーするか,zfコマンドが使える環境にあるなら,以下のコマンドを実行します。
mkdir /www/guestbook cd /www/guestbook zf project create
前回の解説通りPostgreSQLバイナリ版をインストールしているのであれば,/www/guestbookから/www/defaultへのシンボリックリンクを作るだけで/www/guestbookアプリケーションのディレクトリが利用されるようになっているはずです。
シンボリックリンクの作成
cd /www ln -s guestbook default
この状態でZend Frameworkの空アプリケーションが動作するか確かめておきましょう。
Hello from the index view script.
と表示されれば正しく動作しています。
ゲストブックデータベースの作成
データベースを作成するスクリプトは用意していないのでコマンドで作成します。データベース作成用のSQLコマンドファイルは次の通りです。
guestbook.sql
CREATE TABLE guestbook (id SERIAL PRIMARY KEY, title TEXT, content TEXT, date_created TIMESTAMP);
どこでもよいのでguestbook.sqlファイルを作成したあと,次のコマンドを実行します。
/opt/PostgreSQL/8.3/bin/createdb -U postgres guestbook /opt/PostgreSQL/8.3/bin/psql -U postgres -f guestbook.sql guestbook
これでデータベースが作成できました。
備考:この方法ではPostgreSQLのスーパーユーザであるpostgresアカウントに所有されたデータベースが作成されます。運用時にはスーパーユーザをサービスに利用することは好ましくありません。
通常版ゲストブックアプリ
通常版のゲストブックアプリはDocumentRootに配置するだけです(※2)。ディレクトリが2つ,ファイルが3つの非常に簡単なアプリケーションです。データベースにPostgreSQLを利用しています。
- ※2
この連載の最初に設定した通りであれば,ApahceのDocumentRootは/www/default/publicに設定されています。別のDocumentRootを設定している場合はそのディレクトリを利用してください。

