2019-04-17に更新

CakePHPとLaravelの比較2018

経緯

2016年に下記のようなCakePHPとLaravelの比較記事を書きました。

CakePHPとLaravelの使い道

また、こちらの記事はCakePHPのみの記事ですが完全にLaravelとの比較を意識していました。

CakePHP3の優位性を色々

この頃は正直CakePHPびいきでしたが、時も流れ色々と状況や考え方も変わってきたので改めて考察してみました。
(人によってはなんで今さらCakeとLaravelの比較なんてやってんだ、と思うかもしれませんが)

情報量

検索にしても日本語の情報が非常に少ない気がするので本当に人気があるのかと思ってしまう。

当時Laravelについては上記のように書いていました。

今はどちらも十分豊富に情報が溢れています。CakePHP3とか、Laravel5のようにバージョン込みで検索すれば紛らわしい情報も減りますし、困ったらドキュメント見れば大体分かります。

ヘルパー

LaravelのHtml, Formヘルパーはなんとなく不足している点が多いような気がする。 実際使ってない人もいるようだ。 radioボタン群すらメソッド一つで作れないとは。

当時上記のように書いていたとおり、FormヘルパーはやっぱCakeの方が楽な気がします。とはいえLaravelも最低限の機能は備えており不便ではないため、そんな細かく気にするところでもないかなという気はします。LaravelはLaravelでバリデーションエラーが出た時の画面遷移等がCakePHPとは違いますが、そこにちゃんと対応できるようにしてくれていますし。

設定

Laravelは設定量が多い。 パーツを追加する度にCakeだったらこんな設定しなくてもすぐ動かせるのに…。 と思いながら設定をしなければならない。 自由度が高いといえばそうなのかもしれないが、そんな自由度を得てまで時間をかけて開発したいのか、という疑問が湧いてくる。

これは多分Facadeの事を言ってたような気がします。Facadeを自分で作るのは確かに面倒ですが、これはテストのやりやすさにも繋がるように便利に作られてるものですし、今となってはそんな気にするようなものじゃないと思います。そもそもFacadeにする必要のないライブラリは普通に作ってしまえばいいだけですし。

CakePHPはヘルパーやコンポーネント追加していくだけのため分かりやすく楽ではあります。

あとは

ルーティングなんて設定しない

というのも書かれていますが、正直ルーティングを設定するのは他の言語も含めどのフレームワークでもあたりまえの事なのでこれも気にするようなことじゃないと思う。むしろCakePHPが特殊です。

とはいえ設定しなくても動くCakePHPはほんとに楽なのは楽です。ただ、ルーティングを設定することでresourcesの恩恵を受けられコードもシンプルになりますし、そっちはそっちでメリットは大きいです。

CakePHPがまずいのは、bakeの自動生成がresource形式になっていないこと。これがデフォルトでできたらかなり良いと思います。resource形式でないためif文なども増えてしまいますし。

DebugKit

これはCakePHPの圧勝に変わりはないです。見やすい。

追記)
最近はLaravel Telescopeというものが出た。まだ使ったことはないが、もしかしたら開発環境はこれで良いかもしれない。(本番では重いかも)

モデル

CakePHPのモデルはほんとに便利です。Laravelでも特に大きな不満はありませんが、Queryがモデルに属しておらずメソッド追加などが出来ないのがちょっと不満です。(一応設定すればできるみたいですが)

ただCakePHPのバリデーションはコードが非常に長いです。これはなんとかならないでしょうか…。

モデルは一長一短な気がします。

追記)
Laravel側にはscope機能が追加されていますので不便なく使えるようになっています。

マイグレーション

これも自動生成してくれるCakePHPを褒めちぎっていましたが、マイグレーションを書くのも今や他の言語のフレームワークも含め当たり前の事ですので普通に自分で書いています。特に気にするほどのことではありません。Laravelのマイグレーションは簡単ですぐなんとなくは覚えられますし。

先進性

JavaScriptについてはCakePHPは遅れています。LaravelはデフォルトでVueやBootstrap等が使えるためそれだけでもだいぶ優位です。CakePHPはまだjQueryでいいんじゃない? というような空気を醸し出していて先進的とはいえません。将来どうなるのか心配になります。

他にもLaravelは色々なものと連携できるようにオフィシャルパッケージも続々追加されています。HomesteadやLaradock、簡単に認証できるSocialiteやWebpackを簡単にしたmixなど、周辺の開発環境なども色々と考慮されてきています。Laravel本家と周辺共に、みんなが開発しやすい環境を作り上げていこうという活発な姿勢が見られ非常に好感が持て、将来性が期待できます。ここは完全にCakePHPが敗北しているところです。

というか、ここだけでも今後はLaravelだけでいいかな、という感じすらします。実際、僕はもう既にLaravelしか使っていません。

今年の結論

趣味だったらLaravelを使うと知識や技術も広まりやすいので僕としては絶対的におすすめです。ただ、趣味なのでやはり好きな方を使えばいいと思います。

仕事だったら色んなフレームワーク使えた方が扱える案件や考え方の幅が広がりますので、できれば両方使ったことがあった方が良いと思います。

ただし他言語も含め、composerのようなパッケージ管理は当たり前の様に使われている時代ですので、composerを使っていないようなフレームワークはもう覚える意味はないように思います。(全て個人的な見解です)

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント