タグ: Framework

ZendFrameworkで作る『イマドキ』のWebアプリケーション

技術評論社さんのPHPセキュリティ関連のブログ、なぜPHPアプリにセキュリティホールが多いのか?も執筆させて頂いていますが、新しくZendFrameworkで作る『イマドキ』のWebアプリケーションも執筆させていただくことにになりました。

今回の連載では私のブログでフィードバックや質問をお聞きしようと考えています。一般的な質問はMLなどでお聞き頂けるようお願いしますが、動作しない、動作がおかしい、説明がわかりづらい、これを説明してほしい、など記事に関連するご意見やご質問をお待ちしています。

Wikiにサポート用のページも用意しました。Wikiにはまとめや必要なリソースへのリンクなどを掲載します。
http://wiki.ohgaki.net/index.php?ZendFramework-Web-Application

今回、連載を開始するにあたりLinux, Mac, Windowsでできる限り同じ環境が作れるように工夫してみました。

当初はXAMPPをベースとした環境にしようと思ったのですが、64bit版が用意されていないのは現在のPC環境を考えると好ましくありません。そこで、PostgreSQLのバイナリ配布版であるPostgreSQL One-Click Installerを利用した環境を利用することにしました。PostgreSQL One-Click Installerを利用すると、Linux, Mac, Windowsでほぼ同じApache/PHP/PostgreSQLの動作環境を構築できます。

CentOS5を利用している環境が公開可能であるため、VMwareイメージも公開しています。VMwareイメージには以下のパッケージが含まれ、必要な設定が行われています。

– CentOS 5.2
– Apache 2.2
– PHP 5.2
– ZendFramework 1.7
– PostgreSQL 8.3
– Eclipse 3.4
– Mercurial 1.1

ダウンロード先など、詳しい情報はWikiをご覧下さい。

Zend Framework 0.1.3

4/18にZend Frameworkのリリースがアップデートされていますね。

詳しくはリンク先のチェンジログを見ていただくとして

– Zend_HttpClient moved to Zend_Http_Client (Mike)

のように互換性に関連する修正や機能追加もありますが、あまり大きな変更や追加はなく基本的にはバグフィックスリリースになっています。

Zend Frameworkの参考URL

とりあえず簡単に検索してみた結果です。リリース情報のページばほとんどで中身のあるページはまだあまり無いですね。お勧めがあったら教えてください。

英語
http://framework.zend.com/ (本家)
http://framework.zend.com/manual/en/ (英語マニュアル)
http://framework.zend.com/download/subversion (レポジトリへのアクセス)
http://www.phparch.com/zftut/index.php?p=0  (チュートリアル)

日本語
http://tdiary.ishinao.net/?year=2006;month=03;category=Zend+Framework  (使用感など。参考になる)
http://framework.zend.com/manual/ja/index.html  (日本語マニュアル)

日本語のチュートリアル的な物は無いのですね。マニュアルとソースを読めば大方使い方は分かりますからね。

http://tdiary.ishinao.net/ にも書いてありますが、private->protectedの変更は必要ですね。

http://tdiary.ishinao.net/20060329.html#p03 も参考になります。私はまだ「Zend_Frameworkを使ったことがある」とは言えないのでコメントできませんが、下記の感想はマニュアルとソースを読んだ限りでは同じ印象を持ちました。

もちろん動くものを作るだけならなんとかなるんだけど、Zend Frameworkベースのアプリケーションとして、ある程度の将来互換性も確保できるように作ろう、とか思うと現時点の完成度ではまだ無理だ*1。

一応Controller周りは結構完成度が高そうなんで、そこだけならばいけそうではある。かなりフィックスした仕様に見えるし、たとえデフォルトでの挙動が変更されたとしても、現状の拡張性の枠組みの中でカバーできるであろう柔軟性を備えている。プラグインの機構も応用範囲が広そうだ。

Viewに関しては、現状が最終仕様とはとても思えないんで、おそらくまだまだ互換性のない仕様変更があるだろう。っつーか、現在の Zend_Viewを使うくらいだったら、もっとこなれた他のテンプレートエンジン(Smartyとか)を使った方が、現時点ではずっとましだろう。

Zend_Logは、ログの保存がstaticメソッドに集約されたという設計はいいんだけど、デフォルトでCompositeじゃないのが使いにくい。自前のComposite Adapterとかを使ってカバーするという手もあるけど、その辺には仕様変更もありそうだし、現時点ではまだPEAR Logを使っておいた方がましかもしれない。

Zend_Db周りは非常にビミョー。Zend_Db_Adapterはあれで十分なんで、そのままいけるかなーと思いつつも、O/Rマッパー系は現状では実用レベルじゃないよなー。1テーブル単位のselectしかサポートしないO/Rマッパーで完結できるような設計なんて現実的じゃないし、ちょっとでもjoinしたければとたんにO/Rマッパーはつかえなくなっちゃうし。

拡張性と柔軟性重視なので無くても当たり前なのかもしれませんが、コード生成もしてくれたらうれしいのですけどね。

Zend Framework 0.1.2リリース

3/8にZend Framework 0.1.2リリースされています。

解凍すると10MBくらいになります。ドキュメント、テストコードなども含まれているのでフレームワーク本体は2MBくらいのようです。さっと見た程度ですがよく出来ていそうな感じです。PHP5以上が必要です。多分PHP5.1でないと動作しないように思えます。(確かめていません)

http://devzone.zend.com/

はZend Frameworkで作られているそうです。

Rails

Rubyを使っている方やMLを覘いている方(私はこちらです)はWebフレームワークのRuby on Railsをご存知と思います。Ruby使いではないのでMLをさらっと横目で見ている程度なので詳しくは知らなかったのですが

http://www.rubyonrails.org/

QuickTimeの紹介ムービーがあったので見てみました。10分ほどのムービーですが簡単にWebアプリケーションが作れる事が分かります。

Rails、面白そうですね。MLで盛り上がる訳ですね :)