僕の好きなfuelphpが現場で受け入れられない。
PHP Advent Calendar 2012より。 21日担当です。
fuelphpを業務で使ってみた
ちょっと前に仕事で「好きにしていいよー」みたいな感じの話をもらったので
なんかネットで話題だし的あやふやな理由で,
業務でfuelphpを導入してみたことがある。
最初は一人の話だったんだけど,
後から追加増員の話が出てきて…
一人でごにょごにょやる分にはいいんだけど,
仕事で複数人で,みたいな開発だとちょっと困る。
ということで,fuelphpを業務で使ってみて思った問題点とか,
導入にあたり気をつける点とか,そんな感じの話をば。
メンバがfuelphpの諸概念を理解できるか
fuelphpではrequireをしなくていいように,
「オートローダ」って仕組みが用意されてる。
シンプルなオートローダ自体は結構前からあるはずなんだけど,
結構知らないって人は多いみたい。
「これなんで動いてるんスカ?」
みたいな質問は結構聞かれる。
んでfuelphpのオートローダは,
オートローダの仕組みに「名前空間」ってやつを使ってて。
これが更にややこしさを加速させる。
「クラスってやつすら曖昧なのに…」みたいなPHP技術者はまだまだいるみたいで、
そういう人たち相手にいくら説明をしても,話の3割目くらいで嫌な顔をされる。
名前空間が理解できるついでに、useの使い方とかも。
これが分かってないと無いと何かとめんどくさい。
あと,静的なクラス設計とかもわかんない人いる。
まぁそのへんはstatic禁止令でも出してあわせて上げるのが人情かもしれないけど、
newってなんですか?みたいな質問をされた日には,もうどうしようもない。
設計にしっかり時間が取れるか
アジャイルを変に誤解している人がいるのか,もしくは単に予算が少ないのか、 なんしか上流工程にかけられる時間は減って来てる気がする。
例えばcakePHPだと,別に設計書がなかろうが「まぁ普通はこう書くよね」みたいな雰囲気的なものがあるけど fuelの場合,そういうのはまだないと思う。
Viewの使い方とか,Modelとか,必要最低限のものを用意してくれているだけなので, 使う人によっていろんな書き方が生まれる。
コード規約とかも,何か最近はちょろっと変わってるみたいで,そのへんも事前に決めとかないと。 PSR-2(日本語)とかいう出来上がりのものもあるみたいなんで,そういうの使ってもいいかも。
cakeとかだと開始波括弧で改行しないけどfuelではする、みたいなちょっとした違いがある。 いい年した大人になって括弧とかで喧嘩したくないし。
チームで使うとなると,そのへんの意識統一のコストは大きくなるみたい。 cakeでは必要なかったコストが生まれてくる。
MVCの概念を理解しているか
世間で言うところの「スキニーコントローラ」なコードを実現するための仕組みが,fuelにはしっかりと用意されている。
もうViewもModelも静的コールで変数に吐き出すので,Controllerの中で$thisとか使うような機会はパラメータの処理くらいなもの。
処理をいくら外部化したところでrequireのめんどくささも無いし非常に快適。これを使わない手はない。
悲しいかな今までの現場では,新規モノを除いて,シンプルなコントローラのコードを見たことはない。
云千行とかいうcakeのコントローラを見た時には正直死ぬかと思った。
ただ、そういうの意識したこと無い人、からしてみたら別にそんなの知ったこっちゃないわけで、 fuelphp渡したとしてもでっかいコントローラが出来上がる。 いわゆるModel=DAOの発想の人。
「もっとModelに書こうよ!!」とか言っても、どこで分割したらいいかとかそういう感覚的なのは そう簡単に身につくわけでもないし。APIの使い方とかならすぐ理解できるけどさ。
そういう時は目をつぶるか,後でゴリゴリリファクタリングするか。 自分なら前者の方を選ぶ。んで、「これfuelphpつかう意味なくね?」とか後で気づく。
使う人によって全然変わってくる
fuelphpってのは,かなりピュアPHPに近い感じで,PHPの良い所も悪い所ももろに受け継いでるような そんな感じのフレームワークに仕上がってます。
cakeみたいなフルセットな開発キットってイメージとは大きくかけ離れる感じ。
PHP業界ってのはホントに広くて、SQL書けない人とか,クラスがわかんない人とか,型を知らない人とか, そういう人でも普通にPGとしてご飯が食べられるってのがPHP業界だと思っています。
そういう人と一緒に仕事する場合,fuelphpってのは何かと不便に感じる場面が多いはず。
ネットで流行ってるからとか軽い気持ちでフレームワークを選ぶとえらい目にあう。
蛇足:2012年の反省
業務で使っているcakePHPが遅いからという理由で,cakeのbootstrapにspl_autoload仕込んで, ついでにfuelphpのクエリビルダとか諸々も埋め込んでキメラフレームワークにしたのは全て私です。
反省しております。本当にご迷惑をおかけいたしました。