PHPで開発する際にフレームワークを使うことが推奨されていますが、私は個人的には不要なケースのほうが多いと思います。むしろデメリットのほうが大きい。
日頃そう思っていたところ、ズバリその点を余す事なく書いていらっしゃるブログ記事を発見しました。
【参考】【決定版】PHPフレームワークのデメリットまとめ – 情強志向
フレームワークの問題点について詳しくは上記の記事を参照してください。
私も基本的にこれと同じ考え方です。
Java臭いし
せっかく身軽なPHPをわざわざJavaっぽくして使う必要あるかな?っていう感覚。
それなら最初からJava使えばいいんじゃない?
Javaは言語の特性からしてもフレームワークと相性がいいというか、そもそもそうやってカッチカチにして使うのが当然なのだろうと思います(Javaは詳しく知りませんが)。でもPHPでそんな「近所のコンビニ行くのに巨大ダンプに乗る」ようなこと必要ないのでは?
私は一般的なフレームワークは使わず、これまでずっと超簡素な「俺々フレームワーク」で開発してますが、実に快適で高速動作しています。そもそもフレームワークと呼んでいいのかどうかも分からない、単なる「プログラム制作の雛形」という感じです。
自作の俺々フレームワークはドキュメントなんか必要ないくらいシンプルに作ってあります。セキュリティ含めWeb系で必要な機能はだいたい網羅してある。そのわりにはシンプルだし、ソースも極めて短いので誰でも一目見ればすぐわかるような分量と構造にしてあります。
PHPそれ自体がフレームワークだ
そもそもPHPという言語自体が一種のフレームワークのようなものであると私は思っています。もう少し厳密に言うと、「プリ・フレームワーク」と言いますか、あるいはフレームワークの部品集とでも言いますか。
PHPの生みの親であるラスマス・ラードフ氏も次のように発言しています。
PHPは結局,ライブラリやその他基盤となっているテクノロジーへのショートカットにすぎません
直接C言語でゴリゴリ書けなくても、Cで書かれたPHPという言語がラッパー的に働き、便利な関数・ライブラリが標準で満載なのですから。
HTMLテンプレートの分離にしても、そもそもPHPってそういう目的(ハイパーテキスト・プリプロセッサ)で作られたものですからね。自分の工夫でもかなり柔軟にできます。
つまりCakePHPとかSymfonyとか、そういうものを使うと「フレームワーク on フレームワーク」に近い状態になるようなものだと個人的には考えています。
無意味に複雑化するだけだと思います。
正直なところ言うと自分の頭が悪すぎて、一般的に知名度が高いフレームワークたちの使い方がイマイチ理解できない&覚える気力も出ない、という側面もあります。
でも私のようなアホでも使えるものでなければ、フレームワークが謳うメリットの一部(たとえばコードの統一性とか均質性とか)が否定されますよね。ということはつまり、アホでも簡単に使えるものではない=使うメリットが低い、のではないかと。
OOPも似たような問題
フレームワークと同じような問題をOOP(オブジェクト指向プログラミング)も抱えていると思います。
あれも多人数のチームなど特定の状況では威力を発揮すると思いますが、私のように個人一人で開発している環境ではデメリットのほうが大きいと思います。
「大規模開発ではOOPのメリットが云々」というのが常套句でありますが、この「大規模」というのが具体的にどれくらいのものなのか基準もなく、曖昧すぎます。個人的にはそれなりに大規模と言って良さそうなもの(SNSとかショッピングカートとか)をフルスクラッチで開発したりしていますが、それでもOOではない俺々フレームワークで問題なく開発できています。コードの見通しもかなり良いと自負しています。
フレームワークもOOPも、(言うまでもありませんが)適材適所で使うべきであり、その「適所」の範囲は意外と狭いのではないかなというのが個人的な実感です。
使ってみて判断を
この手の技術系の話でちょっと定石から外れた異端な発言をすると宗教論争のようになったり、「技術にこだわりがある人たち」から上から目線の総攻撃を食らったりするのが怖いところです。
個人的な意見としては、世間で「使うべき」といわれているものでも、自分で使ってみて合わないと直感で思ったのならば、無理に使わなくてもいいのではないかなぁと思うところであります。
巷で賞賛されているフレームワークの多くは、「欠点も含めて深く理解している上級者」が、デメリットを上回るメリットを享受できる場面に限って使うと便利なものなのではないでしょうか。初心者や理解の浅い中級者に無理に使わせても、かえってデメリットのほうが大きいと私は思います。
何かあったときや、ちょっと凝ったことをしたいときなどにドキュメントとか難しいソースを読み解かないといけないのでは本末転倒。機械に疎い素人が自転車くらいならばなんとか修理できても、自動車の修理は出来ないのと同じです。
【参考】Webのフレームワークの価値ってなんだろなって改めて思う。
【参考】今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 – sumyapp
【参考】[CakePHP,Laravel,Codeigniter]PHPフレームワークの立ち位置を考えてみた – rdlabo.inc
コメント
同感です。コンビニに巨大ダンプで行く技術を身につけてもね...
その巨大ダンプの操作方法がコロコロ変わっていつまでたっても操作練習ばかりでコンビニにたどり着けませんでした…
>imprezzaさん
徒歩で行くほうがよっぽど早いっていうね…