[CakePHP,Laravel,Codeigniter]PHPフレームワークの立ち位置を考えてみた
以前書いたみたいに、どのPHPフレームワークを選定しても「それによって実現できないこと」はないから、最終的には好みで選定すべきだと思っております。けれど、それとは別に「Laravelを使うべきか」を読んで、PHPフレームワークの立ち位置的なところを私見からまとめてみようと思います。
なお、つっこみ、ご意見などは @sakaki002に下さいましたら、できるだけ記事に追記させていこうと思っております。
視点1.PHPフレームワークの処理速度
とりあえず、恒例のこちら。「kenjis/php-framework-benchmark」で最新・詳細データをみれるのでぜひ出典にあたっていただければと思います。
フレームワークの処理速度がダイレクトに実感できるほどのサービスまで育てることができるかは別問題になりますし、実際のところアプリケーションのコードの書き方であったりsqlであったりの方がダイレクトに影響してきたりもします。
フレームワークを利用せずに、PHPを素で書くのがきっと一番早いです(笑)
しかし、一方で便利だから使うフレームワークが速度のネックになったら意味がないという指摘ももちろんのことですし。PHPフレームワークのほとんどが「軽量」「高速」を謳ってることを考えても、ひとつの視点となるかと思います。
ちなみに、処理速度は、Codeigniter > CakePHP > Laravel となっております。
視点2.マーケットの専有状況とコミュニティ
デファクトスタンダードとまで大きなことをいわなくても、「◯◯さんがサポートしてくれるから」「書店にこの本が売ってる」という魅力はとても大きなものです。私的には、WindowsはMacOS,Linuxと比べてずば抜けて優れていると思ったことはありませんが、「みんなが勧めるから」という理由でとても大きなシェアを握っています。PHPフレームワークも同様でしょう。
そういう意味では、日本においてはCakePHPはずば抜けていると言わざるえません。
PHP初心者向け教本の最後の項で「PHPフレームワークを導入してみよう」と書かれ、採用されているのは大概はCakePHPです。そして、その隣にはCakePHPだけを取り上げた専用書籍がある状態で、実は日本の出版業界(or 書店業界)は、CakePHP推しなのではないかと疑うことすらできます(笑)(そして、金融業界におけるCobol的様相を呈してきたと感じる今日このごろ)
同時に、ここ数年でLaravelの話題がPHPエンジニアの業界で大変増えてきており、 Laravel答えるマンを名乗るユーザがでてきたりとマーケットの専有状況をコミュニティで変えようという流れがあるのも、大きな注目箇所だと考えております。
マーケットの専有でいうと、 CakePHP > Laravel > Codeigniter かと思います。
視点3.クラシックかモダンか
クラシックがいい、モダンがいい、という議論ではなく、特徴の話です。
例えば、Codeigniterは近年3系がでましたが、2系からの大きな変化はライセンスであり、採用した技術が抜本的に異なる、ということはありません。名前空間を知らずに開発を進めることができる点を考えても、クラシックなフレームワークということができるでしょう(でも喜ばしいことに、3系からcomposer対応しました!)
一方で、Laravelは新たな技術はどんどん取り込んでいってます。ORMはガシガシ使おう、コマンドでのController生成とか当たり前。DIコンテナも使えるぜ!見る度に新たな機能に気づいて、面白いな使ってみたい、と思う技術ばかりです。PHP自体のモダンさに一番追随していっているPHPフレームワークのひとつといっていいと思っています。
これは私感ですが、CakePHPはLaravelほど挑戦的に機能追加を行わないながら堅実に開発を進めていってるので、ちょうど中間的感じです。
追記:いろいろ指摘をいただきまして、namespace的部分、cakePHPの機能的部分について修正を行いました。
視点4.どれぐらいの習得コストが必要か
フレームワークを使うための習得コストも大きな視座です。
この点で、Laravelはモダンで先端技術を多く取り入れている分、習得コストは最大かと見せかけつつ、私的にはCakePHPが最も大きいのではないでしょうか。
Laravelは、モダンである一方で、規約より設定を優先させている節があります。ですので、Laravel自体のルールを必死に覚えるというよりも、PHPの最新技術を理解すればするほどにLaravelを使いこなせるようになっています。
しかしながら、CakePHPは、設定よりガチガチのCakePHP規約を守らないと動きません。もちろんそのことによるメリットもあるのですが、CakePHPでしか使えない規約を覚えないと開発できないという非効率さを一方で持っています。
また、Codeigniterは、ここまで規約がないか、といいますか、DBにつながなくても表示はできるし、ModelとViewを使わなくてすべてControllerに書いても問題ないし、ということができるので、習得コストは圧倒的に低く初心者向けである一方で、そのことに対する好き嫌いは分かれるものがあります。
不要な視点.Libraryの充実
Composerが一般的になった今、フレームワークのLibraryを使ってフレームワーク依存を強めるよりも、Composerで使いたいLibraryをとってくる方がスマートだと思っています。
例えば、Laravelで使いやすいといわれている認証ライブラリ「cartalyst/sentry」ですが、これはcomposerで入れるものなので他フレームワークでも利用可能です。というか、Laravelフレームワーク自体がComposerでどうにでも活用できそうな感じです。ちゃんとさわっていないので未確定情報になってしまいますが、CodeigniterからLaravelのライブラリを使う、ということすらできるのではないでしょうか。
なので、以前のように「このフレームワークには、この認証ライブラリが積んであって、それがすばらしく便利!」みたいな視点は必要ないと思っております。
フレームワークの一言私見
以上を踏まえて、CakePHP,Laravel,Codeigniterの特徴を一言で書いていきます。
[CakePHP]
習得すると、すでにCakePHPを採用したシステムを保守・追加開発に従事可能。そういう意味で案件は多い。
ベンチャーが新規開発として採用するには中途半端。
[Laravel]
しっかりとPHPを使える人がこの言語を採用すると、実力アップが見込める。ベンチャーが使ってると、おっ!と思えるフレームワーク。
初心者に使わせたらだめ。
[Codeigniter]
名前空間もコマンドラインも使わない。DBにつながなくても表示できるというPHP初心者向け。PHP学習過程に取り込むと面白そう。ただ、モダンな開発をしたい人からしたら退屈なフレームワークになりがち。
以上です。それでは、また。
お知らせ
CodeIgniter3の書籍を、PDF販売しております。日本語書籍がないことでお困りの方は、ぜひご利用くださいませ。
「はじめてのPHPフレームワーク PHP初心者がすぐ現場で活躍するための CodeIgniter3超入門」