こんにちは。PHP(とガンダム)を勉強中のエンジニアの庄子です。
今回はPHPのフレームワークについて調べたことをブログ記事にしちゃおうと思いました。
フレームワーク嫌い
実は私、「フレームワーク」という単語が嫌いです。嫌いになった原因ははっきりしています。仕事でC++を使ってWindowsアプリを開発していた時代に出会ったアプリケーションフレームワーク。main関数が隠蔽され、処理の流れが掴めないまま、イベントドリブン方式でコードを記述していくことに、とても違和感を感じました。おそらくそのときに「フレームワーク=コードを追えなくする悪いヤツ」という苦手意識のようなものが私の中に生まれたのかなと思います。
その後、開発経験を積んでいくうちに、開発効率や多人数での大規模開発を行う上でフレームワークが欠かせないということは理解していくのですが、その苦手意識だけは今も残っているので、「フレームワーク」という単語だけは嫌いなのです…。
うわっ…PHPのフレームワーク、多すぎ…?
まずはPHPのフレームワークにはどういうものがあるのか、ググって調べてみることにしました。そこそこ使われてそうなものをアルファベット順に列挙してみます。
・Aura
・BEAR.Sunday
・CakePHP
・CodeIgniter
・Ethna
・flight
・FuelPHP
・Laravel
・Maple
・OrePHP
・Phalcon
・PRADO
・Silex
・Slim
・Symfony
・Yii
・Zend Framework
お、多すぎる…。マイナーなものを含めたらA〜Zまで全て埋まっちゃいそうな勢いです。
トレンド調査
せっかく導入したフレームワークが、将来人気がなくなって使われなくなり、バージョンアップもされなくなると困ったことになります。ということで現在、最も話題のフレームワークTOP5について調べてみました。
集計方法:Googleトレンドのキーワード検索
(※フレームワークが一般的な英単語だと正しい結果が得られないため「フレームワーク名 PHP」で検索しました)
集計対象:先ほどのPHPフレームワーク一覧
集計地域:すべての国
集計期間:過去12ヶ月(2014年9月現在)
この検索方法が正しければ、CodeIgniterとLaravelの2強、という感じでしょうか。Yiiも去年までは健闘していたように見えます。運良くこのTOP5のフレームワークの名前は、一般的な英単語っぽくないので、「PHP」というキーワードを外して試してみます。
多少変化はありますが、やはりCodeIgniterとLaravelが人気のようです。このTOP5を日本地域限定で検索してみました。
ダントツでCakePHPでした。それだけ日本語のドキュメントが充実している、ということでしょうか。名前も美味しそうですね。
調べたところ、程度の差はあれど、いずれも汎用フレームワークのようです。やはり規模が大きいものは、それだけよくググられる、ということもあるのかもしれません。この5つのフレームワークについてもう少し詳しく調べてみます。最新バージョン、対応PHPバージョン、アーキテクチャ、標準テンプレートエンジン、あとは前にJavaのPlayフレームワークを使用したときに便利だなーと感じた、モデルからのテーブル自動生成機能の有無です。
・Symfony 2.5
ライセンス:MIT
対応PHPバージョン:5.3.3以降
アーキテクチャ:MVC
標準テンプレートエンジン:Twig
テーブル自動生成:有
・Laravel 4.2
ライセンス:MIT
対応PHPバージョン:5.4以降
アーキテクチャ:MVC
標準テンプレートエンジン:Blade
テーブル自動生成:有
・CakePHP 2.5.4
ライセンス:MIT
対応PHPバージョン:5.2.8以降
アーキテクチャ:MVC
標準テンプレートエンジン:CakePHP Template(ほとんど素のPHP)
テーブル自動生成:有
・CodeIgniter 2.2.0
ライセンス:独自ライセンス
対応PHPバージョン:5.2.4以降
アーキテクチャ:MVC
標準テンプレートエンジン:無
テーブル自動生成:無
・Yii 1.1.15
ライセンス:BSD
対応PHPバージョン:5.3.3以降
アーキテクチャ:MVC
標準テンプレートエンジン:無
テーブル自動生成:無
感想
半日ほど調べましたが、比較的軽量なCodeIgniter以外の4つは機能としてそれほど差があるようには思えませんでした。コードの書きやすさ、理解しやすさというのは、使う人により異なると思うので、ここは最もホットでトレンディーなLaravelを勉強してみようかなと。Bladeテンプレートエンジンも面白そうだし、公式サイトがお洒落だし。ドキュメントの日本語翻訳をされているサイトもあるし。
ということで、これからもPHPのお勉強がんばります。