Railsがあるからです。phpにはLaravelがありSymfonyがありCakePHPがあります。どれもこれも捨てがたいのですが、私はLaravel5が好きです。してかというと、そんなに大規模な開発はしないそんなに大それたプログラマーではないそんなに多くを学びたくないという理由からです。これに該当する方がいればLaravelがいちばん楽しいです。Laravel5を理解するために他のフレームワークと比較してみます。Symfonyは言わずと知れた立派なフレームワークであまりにも立派すぎます。大企業が大企業的なポータルサイトや会員サイトを作るのに向いています。いうのはMVCがものすごくしっかりしていて、秩序だてられていて非常に厳格な規約によって支えられているからです。バンドルというプラグインのような単位があって機能ごとに分割して開発ができます。プログラム自体は非常に重く濃厚ですがキャッシュの機能が優れているのでクライアントサイドからみたら爆速PHPということになります。コマンドもすぐれています。コントローラーの作成からマイグレーション、また最も素晴らしいのはDoctrinというデータベース操作のためのモジュールがあり複雑なDB操作をとても簡単にしてくれています。DBテーブルを作成するとコマンド一発でエンティティを作成できる上に逆にエンティティからDBテーブルも作成できます。SQL文に馬鹿みたいに詳しくなくてもPHPの操作でDBを扱うことができます。テンプレートはTwigというかなり若々しいものを使っています。デバック機能がすごくてですね、実際にうごいているパラメーターやベンチマークを即座に確認できるのもいいです。CakePHPは伝統的です。ctpという謎のテンプレートファイルを使っていたりコードの書き方がかなり野暮ったいのですが、使い慣れている人にとっては親しみのある見てくれです。CakePHP5になってからSymfonyライクになってきたし、フレームワークの機能としては申し分ないです。ルーティングを端折ったりと慣れてくると様々な便利機能が見えてきます。Modelの部分が非常につかいづらい印象。エンティティークラスとテーブルクラスに分かれていたりjoinの設定方法が特殊だったり。デバックがわりとやりやすいです。慣れてくると味のある感じです。Laravel5はというと、実に軽快です。CakeのいいところとSymfonyのいいところを混ぜた感じです。変な大カッコや奇妙な入れ子が非常に少ないです。ディレクトリの構造がややわかりにくい感はありますがこれも慣れてくればだいたい同じような場所しか触らなくなります。DocumentRootに普通のhtmlやphpを置くとそのパスが自動的に優先されるのでフレームワークに詳しくない人とも一緒に仕事ができたりします。私がもっと若い頃にはCakePHPとZendFrameworkぐらいしかなかったのですが、PHP自体がかなり新しい言語でした。Cやperl、アセンブラやコボルといったことを一通りやってきた世代にとってはPHPはWEBのテンプレートエンジンみたいなものだと思っていたものですが、今となっては立派なプログラミング言語に昇格してきた感じです。先日AnguraJSとCakePHP3でとあるサイトをつくりました。結果としてCakePHP3(PHP)は、WEBサーバーでもってDBから何らかの値を返すというだけの完全なBackendとしての機能に終始し、フロント側の処理はすべてAnguraJSが出し分けるという設計思想になりました。Ajaxの接続先でしかなく、CakePHP=エンティティといっても過言ではないというふうでした。CakePHPがもっているテンプレートエンジン(的なもの)は殆ど利用しないという開発方法になったわけです。フロントエンドの働きはここ最近目を見張るものがあります。MEAN環境といってかつてのLAMPに対抗するような新しいWEBの方法論もあります。PHPのフレームワークがどんな機会に生き残ることができるのかというのはちょっと難しい問題かもしれないのです。かかわらずLaravelをこれから利用するという理由がいくつかあります。Laravelはシンプルで書きやすいなどといわれていますが、それは大きな間違いです。シンプルなのは、ライブラリーがそれほど揃っていなかった時代に生きた人々が毎度毎度書かなくてはならないすでに飽きてしまった退屈なコード(セキュリティーに関するもの、バリデーションに関するものなどなど)が、Laravelの中ではブラックボックスとして内包され、それほど執拗に書く必要がなくなっただけです。仮に内部のそのようなブラックボックスを何も知らないでLaravelを学ぶのであれば、それは比較的不毛なことであり、かなり危険なことになるはずです。Laravel5は熟知した人間には幸せをもたらしはするかもしれませんが、何もしらないPHPの初心者が簡単にできる!というシロモノではないということです。