404 motivation not found | t_ishidaのブログ

2月/08

20

PHPのフレームワーク下調べ(1)のメモ

能書き

ちょっと必要が有ってっていうか、興味もあって調べてみることにした。

PHPの有名なフレームワークにはいくつか有る。

  • symfony
  • Mojavi
  • Ethna
  • Maple
  • Zend Framework
  • CakePHP
  • Magic3

代表的なものは上記の通り。

まず、はじめに言っておきたいのがフレームワークを使うレベルの大規模なプログラムで

PHPを使おうと言うのが、どうなの?っていう疑問はある。

フレームワークを適用するメリット

  • 必要な部分だけを作る事でプログラムを減らす
    • ただ単に、”フレームワークが想定しているパターンにはまれば”、書く量を減らせるので生産性が高い。それだけ。ただし、想定外のコードを書かなければならない場合、フレームワークを使う事でより生産性が落ちる場合がある。そう言う事態に陥り易いのは、割りとでっかいメーカーとかの自社フレームワークに多い。
  • 共通のライブラリを使うことでコードの統一感を持たす。それにより、メンテナンス性を高める。
    • 実際は、各々が好き勝手に書くことができるので、事実無根。
  • 平行で作業を行いやすい
    • フレームワークと言うよりはMVCの考え方だが、大体のフレームワークはMVCをしっかり分ける事を前提として作られているので、データを受け持つ人、見た目を受け持つ人、処理を受け持つ人。のように、分けてプログラムを開発する事がやりやすい。が、よく知った身内同士で作業する場合は、ちゃんと設計するし、声をかけ合って開発してれば十分にこなせると思う。
  • いろんな非互換をフレームワーク部が吸収する
    • 所謂フレームワークの目的とは離れるのかも知れないが、.NET Frameworkやprototype.jsなんかは、そういう効能がある事で有名だよね。

ここを読んで想像つくのが「自社内だけじゃ収まらず、外注とか使って、よく知らん人とでっかいプログラムを作る場合」とかに有効と言うのが見えるだろう。そうなると、PHPでサクッととかよりは、縛りのきついJavaとかを使って逐次ソースコードレビューとかを行いながら開発する方が良いだろう。プログラムの品質も保ちやすいはず。やっぱPHPって言うのは、ちっこいものをサクッと作って動かす為に存在する環境だと思うので、なんのためにあるの?と言うのが正直な感想。が、ZendがPHPを巨大化させたがってるし、そういう用途に使われる事も多くなってるんだと思うので、まあ良いことにしよう。*1

Zend Framework

多分、考え方はよくある奴と思う

  • Controlerのindex.phpでリクエストを全部受け
  • リクエストを元に、Actionクラスをディスパッチ
  • Actionクラスの判断で、viewを切り替える。

大枠だけを見れば、後述のEthnaと一緒じゃないかな?

ってか、最近のMVCフレームワークの傾向か?

symfony

Rails系のフレームワーク。確かこれについての、マンモスの本が出てたと思う。PHPにフレームワークってなんか変って、上で言っているけど、カタログスペックと思想だけを見れば、実はt_ishida好み。多分、調べるだけじゃなくて、週末にちょっと使ってみようと思う。詳細なレポートはそれからの方が良いでしょう。なので、とりあえずカタログスペックの概要だけ

  • 基本はRails系
    • ORマッパとテンプレートとプラグインとかその辺、管理ツール
  • キャッシュ機構
    • ミリミリ系の作業なので自分では作りたくないし、たとえ作ってもバグだらけになって死にそうになる類だし、そこを保障してくれるのはありがたい。
  • マルチ言語サポート
    • エンコードね万が一utf8使えないと、mb_convert_encodingの嵐になるので、有ると助かるよね。
  • 単体テストがしやすい
    • 本当に単体テストがしやすい形に分割できていると思う。

http://develop.ddo.jp/symfony/book/jp/1.0/index.html

Magic3

t_ishidaの知っている方が作ったフレームワーク。フレームワークなのかCMSなのか謎な存在。紹介ページの中でも両方の言葉が使われている。xampp突っ込んで解凍したディレクトリごとhtdocsの中において、アクセスすると、インストーラが始まる。で、インストールが終了した瞬間から、ブログ機能、掲示板機能、eコマース機能は使用可能。ちょっとした事を実現するだけならばノンコーディングでアプリケーションの構築が可能。実際何度か動かしてみたが、社内の連絡用ブログとか掲示板とかが欲しい場合、脊髄反射でxamppと、これを突っ込めば、一瞬で柔軟にカスタマイズ可能な環境が構築出来るのは魅力。そういった観点から、気持ちとしては早くWiki機能が欲しい。 → 平田殿 

 ※欲しいなら自分で作れアホと返ってきそうだが

  • 「ウイジット」言う細かい部品をまとめてページを構成する。
  • ウイジットは単なるhtml片が吐き出せれば良い。
  • ウイジットを作成するためのMagic3クラスライブラリがいくらか有る。

ちょっと弄った感想としては、フレームワークと言うよりは「アプリケーションコンテナ」って言う言葉がピッタリと思う。

http://www.magic3.org/doc/

Mojavi

モハビと読む。symfonyの元になったものらしい。PHP5で安定動作するものが無いらしいので、今回は調査対象外。

Ethna

エスナと読むらしい。

GREEで使っている国産フレームワーク。Strutsを意識しているらしい。大雑把に言うとこんな事らしい。*2

Controler 呼び出すべきActionクラスとviewの定義を行う。で、Actionクラスを呼び出し、戻り値を元にviewを表示する。
Actionクラス コントローラから呼ばれて処理と、次に表示するviewの名称を返す。
Acttionフォーム Actionクラスから使われる。Formの値のコンテナ

非常に共感できる作り方っていうか奇しくも、xyzzy.cgiにも似てるし、この間PHPで作ったバッチの作り方のにもちょっと似ている。Strutsはよく知らないので言及できないが、コントローラの部分は想像するに、同じような処理を書きたくないから、出来る限りの抽象化をして、ハッシュで固定値(単に値だけじゃなくて、処理対象となる関数ポインタやクラス(正確にはクラス名や関数名だが))を定義し、なるべく同じルーチンを抽象的に回すというt_ishida好みの作りになっている予感がして高感度アップ。

symfonyじゃなくて、こっち使うかも。

http://ethna.jp/

Maple

んー、調べるの後回し。

ぱっと、どんな風にサンプル書くのかが出せなかったので。

CakePHP

Rails系のフレームワークらしい。んー、これは評価できるだけ分からないから、もっとマニュアル読んでからレポートしたい。

  • ORマッパ
  • Smartyを使わない
  • 非常にシンプルっぽい

一日目終了

ちゅーわけで、とりあえず、一旦調査初日は終了。

CakePHP、Mapleは別途調べるかも知れないし、調べないかも。

初日の感想としては、symfonyとzendは、僕の考えるPHPで開発すべき規模よりだいぶ大きいところを想定してそう。逆に、CakePHP、Ethna、Mapleなんかは、小さいプログラムも対象に入れている感があり、非常に開発スピードアップを狙った感じがする。

明日以降、CakePHP、Mapleの調査、および、symfonyか、Ethnaを試しに使って一本作ってみる。を試して見る。

あ、この記事は大枠と紹介と、あとちょっと読んでは、まとめただけの記事なので、間違っている可能性が多分にあります。フレームワーク選びの参考とかにしちゃ駄目です。

*1:まあこの理屈はPHPに限った話ではない。が、Perlはなぜかフレームワークと言う存在がよく似合う。CPANのせいなんだろうね。って、それを言ったらPHPはPEARがあるのか・・・。

*2:拾い読みと勘で判断しているので、突っ込み歓迎。

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

RSS Feed

コメントはまだありません。

Leave a comment!

<< Ethna

xyzzy.cgiと、石田式Webアプリ開発手順 >>

Find it!

Theme Design by devolux.org

Tag Cloud