Webシステムの開発のためのプログラミング言語として登場したPHPですが、現在も多くのサービスやシステムを生み出しています。
そして、その開発を更に開発しやすくするために数多くの「フレームワーク」が存在しています。そんな多くのフレームワークの中でも、
CakePHPとLaravelのそれぞれのメリットデメリットが知りたい
結局、CakePHPとLaravelはどちらを選べば良いの?
こういった悩みをお持ちの方に向けて、CakePHPとLaravelをシェア率やメリット・デメリットなどについて比較しきます。
なお、次の記事ではそもそもLaravelとは何なのか、その特徴をできることや将来性も交え詳しく紹介しているので良ければ参考にしてください。
→ Laravelとは?PHPフレームワークの特徴やできること、使い方も紹介
PHPのフレームワークについて
フレームワークとは、PHPでWebアプリケーションやシステムなどを開発する際に土台として機能してくれるソフトウェアのこと。様々な開発で一貫して活用できるソースコードなどを組み合わせて作られた、骨組みのようなもののことをいいます。
本来フレームワークを使わずにシステムなどを構築していくと、膨大な量のプログラムを記述する必要が出てきます。しかしフレームワークを活用することで、プログラム記述量を大幅に削減できて作業工数を下げることが可能。
また、経験の浅いエンジニアでも一定のセキュリティが担保されるのも、フレームワークを利用する大きなメリットです。PHPで開発を行うときは、フレームワークを是非使うようにしましょう。
CakePHPとLaravelの違いを一言で言うと?
PHPフレームワークでよく比較されることの多い「CakePHPとLaravel」ですが、どこも的を得た回答が出ているサイトや情報はなかったので、現役エンジニアの筆者が実際に使ってみた感想も含めて違いをレビューしていきます。
- CakePHP:規約が基本で爆速の開発スピードが魅力だが、基本的にはシンプルに開発を進める
- Laravel :便利でとても賢いフレームワーク、比較的に最新の技術や流行に対して対応力が高い
CakePHPは、なんと言っても開発スピードの速さが魅力。しかし、規約に少しでも逸れた柔軟なことをしようとすると、縛られることが多いです。その反面、開発者の入れ替わりや開発規模の拡張に対しては実装に一貫性が出るので、比較的容易に行うことができます。
Laravelは先ほども記載したように、なんと言っても柔軟性が高いです。また、便利なメソッドやライブラリが豊富にあるので、例えば一つのシステムを構築するにしても複数の実装方法が存在するのも特徴の一つ。
では、次からはCakePHPとLaravelのフレームワークそれぞれについて詳細に特徴やメリットデメリットをみていくことにしましょう。
CakePHPの特徴
CakePHPはオープンライセンスで、MITライセンスとして提供されています。このMITライセンスは提供されたソースコードを自由にカスタマイズして利用することが可能なライセンスです。
特徴としては「MVCモデル」が採用されており、役割分担させて高速で開発を進められること。また、現在も開発が進められているフレームワークで、今後の発展にも期待できます。今後の活躍から目が離せませんね。
CakePHPを使いこなすにはPHPのスキルはもちろん必須ですが、WebアプリケーションやWebシステムの開発がメインになるので、HTML/CSSやJavascriptの知識も必要です。いくつものスキルが必要になりますが、CakePHPではそれら全てをうまく取り入れられており、より便利に開発を進めることができます。
では、そんな一見万能に見えるCakePHPのメリットやデメリットに、どのようなものがあるのかをみていきましょう。
メリット
メリットとしては主に下記のものがあります。
- 初心者でも理解しやすい
- キャッシュ機能で表示の高速化が可能
- 生成されたSQLのデバッグ機能やバリデーション機能付き
- 活発なコミュニティがある
- 複数人で行う開発に向いている
簡単にあげるだけでもこんなにたくさんのメリットがあります。CakePHPは高速に一定のセキュリティが担保されたプロジェクトを、あまり経験のない方でも比較的手軽に開発できるのが最大のメリットですね。それ以外にも初心者でも理解しやすいという点もCakePHPの強みです。
また、これからCakePHPを勉強される方や、学習を検討されている方も安心して欲しいのが、CakePHPには活発なコミュニティが存在していること。もしわからないことや第三者の意見が欲しくなった場合には、コミュニティを経由して意見を募ったりすることもできるので、安心して開発や勉強を進められます。
デメリット
ここまでの話を聞くと、一見良いことだらけでデメリットなんてないのではないかと思う方も多いでしょう。しかし、CakePHPのデメリットは主に下記の通りです。
- 規約が厳しい
- 柔軟性に欠ける
基本的には冒頭でもお話しした、「規約が厳しい」という点。規約が厳しいということは、誰がプログラミングしても規約通りにコーディングされるため、一貫性が出てコードの可読性も向上します。その反面、柔軟なカスタマイズ性に欠けるというデメリットにもなってしまうのです。
もし当初計画していたプロジェクトに、「追加である機能を追加したい」「こんなことも実装したい」といった要望が増えてくると、CakePHPだと対応に時間がかかってしまうこともあり得ます。そのため、最初の設計段階からしっかりと計画を立て、どのくらい拡張性があるのかや、コストなどとのバランスを保ってフレームワークを慎重に選ぶ必要があります。
Laravelの特徴
Laravelは、CakePHPよりも後発で開発されたフレームワークです。主に大規模な開発に10年以上の実績を残しているPHPのフレームワーク「Symfony」をベースに作られているため、しっかりとしたものと言えます。
では、そんなLaravelのメリットやデメリットをそれぞれみていきましょう。
メリット
Laravelフレームワークのメリットとしては主に下記があります。
- 頻繁に行われるバージョンアップ
- 人気度の高さ故のコミュニティ
- 比較的簡単に習得可能
- 開発スピードもはやい
Laravelはまだ新しいフレームワークということで、バージョンアップが頻繁に行われています。そのためどんどん新機能が増えてきており、できることが増えたり、今までやっていたことがより簡単に実装できたりしています。
また、LaravelはPHPフレームワークとしてはまだまだ新参者ですが、その人気度は鰻登りに上がっており、2016年ごろにはそれまでずっと人気度1位だったCakePHPを抜いたほど。コミュニティも活発に動いているため、初心者にとっての参入障壁も低いのも大きなメリットの一つです。
デメリット
それではLaravelフレームワークのデメリットを挙げていきます。
- 複数人での開発をするには注意が必要
- CakePHPと比べると処理速度が遅め
処理速度が遅いという点に関しては、それほど気にするレベルではありません。そのプロジェクトがよっぽど大規模で細かいところまで気にしなければならない場合や、よっぽど無駄の多いコーディングをしない限りはそれほど気にしなくて良いでしょう。
ただ、複数人でプロジェクトを進めてソースコードを複数人が触る際には注意が必要です。これは、Laravelの柔軟性の高さ故の問題。
人によっては同じ処理でも全然コーディングの仕方が変わることもあるため、大きめなプロジェクトの場合やコーディングに携わる人が複数人に渡る場合は、コーディング規約やルールを先に決めておくのがおきましょう。そのルールを守ることが今後の運用に大きく関わってくるので、注意が必要です。
CakePHPとLaravelを人気率で比較
先ほども少し話題にしましたが、CakePHPとLaravelを人気率で比較してみましょう。まずは下記の画像をみてください。
過去5年間のGoogleトレンドでCakePHPとLaravelを比較してみました。見て分かる通り、2016年ごろからCakePHPをLaravelが追い抜く形になり、その後はLaravelがグングン伸びています。CakePHPよりも後発のLaravelですが、現在では名実ともにLaravelの方が上をいっていると言っても過言ではないでしょう。
これをみても分かるように、現在のPHPフレームワークでは圧倒的にLaravelが人気。実際に求人などをみてもPHPのフレームワークはLaravelをスキルの利用条件に入れている企業が増えています。
私も実際にエンジニアとして様々な案件に携わっていますが、少し前に開発されているWebサービスなどはCakePHPが使われており、新規開発や最近開発されたプロジェクトに関しては、圧倒的にLaravelが利用されていると実感しています。
CakePHPとLaravelは結局どっちがおすすめ?
では最後に結局CakePHPとLaravelはどっちの方がおすすめなのかを確認してみます。判断する基準は様々ですが、主に使いやすさやカスタマイズ性、運用していくうえでの柔軟性などから比較していきます。
結論から言うと「Laravel」が圧倒的におすすめ。理由はたくさんありますが、順番にみていきましょう。
- Laravelの方が、自由なディレクトリ構成が実現できる
- Laravelの方が、バリデーション処理に拡張性がある
- Laravelの方が、ファイルのアップロード処理が簡単
- Laravelの方が、習得コストが低い
- Laravelの方が、コアコードの可動性が高い
Laravelの方が、自由なディレクトリ構成が実現できる
これについては開発するチームによってはメリットにもデメリットにもなる可能性があるのですが、LaravelではPHPのソースコードを配置するディレクトリ(名前空間)の場所は基本的に自由です。もし既存のディレクトリの変更や新規ディレクトリの追加などを行う際には、無理なく簡単に実装できます。
それに比べて、CakePHPでは既存のディレクトリ構成を変更するのはフレームワークの特性的に無理があります。もちろん無理やりやろうと思えば不可能ではありませんが、フレームワークの規約違反になるため現実的には実行不可能です。
そのため、柔軟に実装の変更ができないCakePHPよりも自由に変更する余地のあるLaravelの方が、今後もし何かあったときのための拡張性を考えるとおすすめとなります。
Laravelの方が、バリデーション処理に拡張性がある
バリデーション処理を記述する場所が異なります。CakePHPではバリデーションの処理をMVCのモデルに記述するのですが、Laravelではコントローラーに記述します。
CakePHPで行うバリデーション処理をモデルに記述するメリットは、その記述したバリデーション処理を意識することなく使い回すことができること。しかし実際に現場に入ってみると、バリデーション処理を意識することなく使い回すことなんてあまりありません。
このようなバリデーション処理の記述場所が違うということはCakePHPとLaravelの違いのなかで、一番影響のある点ですね。
Laravelの方が、ファイルのアップロード処理が簡単
Webアプリケーションの開発をしていると、意外と面倒な処理の中に「ファイルのアップロード処理」があります。CakePHPではファイルやディレクトリの操作ができるFileクラスやFolderクラスが用意されていますが、アップロードされたファイルを処理するインターフェースは用意されていないので、その辺りがとても不便。
Laravelはファイルストレージ用のインターフェースが公式で用意されているので、数行でアップロード処理ができるのはもちろんのこと、パラメーターやプラグインを活用することでローカルストレージからクラウドストレージに切り替えることも簡単です。
Laravelの方が、習得コストが低い
次に紹介するのは、習得コストの違いです。
何度も言いますが、CakePHPは規約が厳しく独自の概念も多く存在しています。規約をしっかり覚えて正しくコーディングすることができればかなり早く開発を進めることができまが、独自の概念が多すぎて他のフレームワーク への応用ができない場合がとても多く、フレームワーク自体の応用が非常に難しいです。
やり始めこそCakePHPの方が習得コストは低いですが、やりたいことが増えてくるとそのカスタマイズ性なども含めて、Laravelの方が学習コストが低くなります。
Laravelの方が、コアコードの可動性が高い
先ほどと少しかぶる内容になってしまうのですが、CakePHPはその厳しい規約や独自の概念と複雑なコアコードにより、コアコードに悩ませれます。その反面Laravelでは柔軟に様々なアプローチ後行えるため、コアコードもLaravelの方が規約が少ない分可読性は高いです。
まとめ
今回は、Webアプリケーションなどの開発の際に使われるプログラミング言語である、PHPのフレームワーク「CakePHP」と「Laravel」について、それぞれどのような良いところや悪いところがあるのかを解説し、結局どちらがおすすめなのかを比較しました。
行う開発・プロジェクトがどのような内容で、今後どのような運用をしていくかなどによって向き不向きは変わってきますが、単純なフレームワークとしてのポテンシャルや柔軟性を比較。また、人気率などのトレンドでの比較などもしてみた結果、Laravelの方が現在のトレンドでは優位な位置にいることがわかります。
この記事を見て、今後の運用で上手に使い分けていけば、エンジニアとしての手腕もアップします。是非どんなプロジェクトにはこのフレームワークが良い!と根拠もつけて提案できるように、その基準にしてみてください。