2010年3月28日日曜日

[Program]ちょっと楽しいZendFramework

発端は会社にて。TLに
「こで君て、データベースとか検索システムって作れたりするん? 外注じゃなくて内製の方が融通利くから、作れるなら作って欲しいんやけど」
って言われたところから。
現状、ベンチマークでばらしたり、試作品作ったりして性能を見たりしてるわけですが、そいつらのまとまった情報が無い。だので、それを整理しつつ引っ張ってこれるシステムを構築したいとのこと。
まぁ言われた当初はめっちゃ要求がアバウトで、できるできないを回答し辛かったので、まずは要求をより具体化するところからスタート。来年度から私が飛び込むチームの方々は私以外全員非ソフト屋さんということで、ソフト屋の常識は一切通用しないんですね。そも、データベースといわれたもののどんな情報を貯めていきたいかも決まってないし、フロントエンドのイメージもない。
逆に言えば多分に私の意見が通るというわけでもあったんですが、作ったはいいけれどお蔵入りするのも嬉しくないのでイメージはしっかりすり合わせたつもり。
どうも話し合いを続けていくと、検索システムは通販サイトをお手本にしたらよさそうだって感じまして。
で、通販サイトを構築するOSSってのはいつくかあったよなーって早速ググる。
有名どころではEC-CUBE(EC-CUBE‐日本発の「ECオープンソース」)なんてのがあるのは知ってたので、早速ローカルにインストール。こいつインストールに意外と手間取ったんですよね。なぜかパーミッションが正しく無いとか言われて。Windowsでしかも全員に書き込み権限があるようなファイルを権限がないとか言われてしまったからどうしたものかと思っていたらTipsが本家フォーラムで提示されてました。Linux環境だと多分起きなかったんでしょう。
インストールして、商品登録をやってみたんですが、これが実に面倒くさい。まぁ通販サイトなんで商品画像がないってことは有り得ないだろってことで必須なんでしょうけれど、私が使いたい機能としては画像がない場合も多々ありまして。これはちと流用するのは難しいなーってことで却下。
続いて、かなり新しそうなLiveCommerce!(Live Commerce ! オープンソースECサイト構築プラットフォーム - 買うのは簡単売るのはもっと簡単に)ってのを発見。サイトはすごくおしゃれで、これは使える!って思ったんですが、非常に惜しかった。後一歩、痒いところに手が届きませんでした。
ただ、すごく惜しかったので、こいつを拡張できたらかなりいいんじゃなかろうか、私が1から作るよりはるかに完成度が高いしないよりおしゃれだ!(そう、私は見た目重視w)ってことでソースを眺めてみることに。
が、ソースが全くわからないOrz
どうもZendFrameworkというものを使っているらしく、こいつはMVCをかなり厳密に提供しているそうで。そのためLiveCommerceでは見た目とロジックは綺麗に分離されてました。
ただ、ZendFrmeworkについてまったく知らなかったので、まずはZendFrameworkについてお勉強。
するとまぁ、PHPってこんなに進んでたのねと目から鱗。私がPHPに触れたのはもう6、7年前なので、その頃からするとびっくりするほど進化していたようで。今必死でZendFrameworkをお勉強してますが、これかなり楽しいですね。実によくできてるなーと思います。
あと、CSSでそげなことできたのね!ってのも大きな収穫。そもそもHTMLを直で打ってサイト構築とかこれまた6、7年前に作ってたHP以来だし、もうそんなのやる元気ないなぁと思っていたので今更HTMLをゴリゴリ書く羽目になろうとは夢にも思ってませんでしたが。
まぁでもCSSでサイトデザインを行うのはすごく理に適ってるんですね。今頃そんなことに気がついたわけで。FireBug最高! これまでただぼんやりと眺めていたWebサイトも、今はFireBugでもって「へぇ、こうなってるのね」とか興味津々。いやはや、Webデザイナーは変態ぞろいだな・・・!
残念ながらLiveCommerceを拡張するのは骨だったので、結局1からサイトを構築してます。と言ってもZendFrameworkを使ってるのでかなり楽。Zend_Layoutでサイトレイアウトは自動的に共通化できるし、Zend_Navigationでカテゴリメニューも作れる。Zend_Formでフォームも作れるし、DBとの連携も抽象化されてるしACLやらAuthまで用意されていてもう何から何まで至れり尽くせり!
こんだけライブラリが提供されているので、あとはサイト構成とDB構成を考えるだけ。まぁ問題はDB構成かな。Webサイト構築もやったことなければ認証システムもやったことなければDB設計もやったことがないというこの状況。実に無茶ぶりだよね! 楽しいからいいんだけど!w
もちろん、そんな無茶を楽しんでいるのはこのシステムを外に公開する気が一切ないから。外に公開するようなシステムだったら絶対にやりませんが。うちうちなのでなんとかなるでしょう。
お面はそろそろ完成しそう。あとは中身ってことで、DBの設計やなぁ。その先はDBの編集というか、レコードの登録やら削除もWeb経由でできるようにしたいところ。
DBは盛り込む内容もまだFixできてないからなぁ。こっちの方が大変そうだ。どうすんのが理想的かしらなぁ。
既にDBがあったのなら引っ張ってくるだけだからいいんだけど、作るのは初めて。さてさてどうしたもんでしょかね。