CakePHPとLaravelについて

## はじめに
Laravel以外によく挙げられているフレームワークの一つ、それがCakePHP。初めて知った時はそんな認識だったのがCakePHPです。
当然それで終わり、はどうかと思ったので色々調べました。今回はその振り返りです。


## そもそもどちらが先か？
まず始めに確認したのが何時ごろからフレームワークが出たのかです。
端的に纏めると

**CakePHP　2005年3月頃**
**Laravel　2011年6月頃**

でした。CakePHPはLaravelよりもかなり早い段階で登場しているフレームワークで、Laravelが比較的新しいと書かれていた理由がよく分かります。

[CakePHP - Wikipedia](https://ja.wikipedia.org/wiki/CakePHP)
[Laravel - Wikipedia](https://ja.wikipedia.org/wiki/Laravel)
[25年に渡る PHP の歴史](https://www.jetbrains.com/ja-jp/lp/php-25/)


## 全体的な違い
CakePHP
Ruby on Railsに影響されたフレームワークで、「設定より規約」という設計思想を持っています。用意されている規約に沿った記述をすることで簡単に開発ができる、という考え方なので、設定ファイル等の手間が省けます。

Laravel
同じPHPのフレームワークであるSymfonyを土台に開発され、フレームワークとしての規約が少なく、機能も豊富にあるため自由に開発できるようになっています。

[CakePHPとLaravelの違いは？どちらがおすすめかも解説](https://tech-reach.jp/column/664/)

ここまでの内容を踏まえると

**CakePHP　ルールに則った開発を行うことで高速に開発出来る。ルール外のことをするのは難しい。**
**Laravel　拡張性が高く、柔軟性がある。**

といった部分が全体的な違いと言えるでしょう。


## 細かな違い
設計における思想などの大まかな違い以外にも細かな違いとして、CakePHPには明示的なテンプレートエンジンがない点（設定変更することでTwigやSmartyなどのPHPのテンプレートエンジンを利用できるようにすることは可能です）、バリデーションはモデル側に書くなどの違いがあります。



||Laravel  |CakePHP |
|---|---|---|
|テンプレート|Bladeテンプレート|明示的なテンプレートはなし<br>(TwigやSmartyなどのPHPのテンプレートエンジンは利用可能)|
|エスケープ処理 |{{$test}}で自動エスケープ |h($user->bio)でエスケープ|
|php|@&#xFFF0;ifや@&#xFFF0;foreachでphpに変換|デフォルトの`<?php ~>`を使用|
|バリデーション|コントローラー側で行う<br>バリデーションルールの操作がしやすい|モデル側で行う<br>バリデーションルールを型に入れる|

















[LaravelとCakePHPの違い](https://webnation.co.jp/laravel%E3%81%A8cakephp%E3%81%AE%E9%81%95%E3%81%84/)
[Laravel 11.x Bladeテンプレート](https://readouble.com/laravel/11.x/ja/blade.html)
[CakePHP バリデーション - 5.x](https://book.cakephp.org/5/ja/core-libraries/validation.html)


TwigやSmartyなどのPHPのテンプレートエンジンを利用できるようにする具体的な方法はこちらの記事をご確認ください。
[CakePHP4でTwigテンプレートエンジンを使う方法](https://qiita.com/t-ikegami/items/b37022241b0b9f5ce151)
[CakePHP+Smartyハイブリッドによるラクラク開発](https://www.slideshare.net/slideshow/histudy7/13723171)


## まとめ
CakePHPは2005年3月頃に出てきた規約重視のフレームワークで、規約に則って開発を行うと効率的に進めることができるフレームワーク。
Laravelは2011年6月頃に出てきた規約が少ないフレームワークで、構成や設計を柔軟に変更できるなど、自由度が高いフレームワークだと分かりました。


今回はcakePHPとLaravelの説明にRuby on RailsとSymfonyというフレームワークが出てきました。
Ruby on Railsについて知りたい方はこちらの記事を
[Ruby on Rails](https://ja.wikipedia.org/wiki/Ruby_on_Rails)

Symfonyについて知りたい方はこちらの記事をご確認ください。
[PHPフレームワークSymfonyとLaravelの徹底比較](https://kinsta.com/jp/blog/symfony-vs-laravel/)


## 参考資料：
[CakePHP - Wikipedia](https://ja.wikipedia.org/wiki/CakePHP)
[Laravel - Wikipedia](https://ja.wikipedia.org/wiki/Laravel)
[25年に渡る PHP の歴史](https://www.jetbrains.com/ja-jp/lp/php-25/)
[CakePHPとLaravelの違いは？どちらがおすすめかも解説](https://tech-reach.jp/column/664/)
[LaravelとCakePHPの違い](https://webnation.co.jp/laravel%E3%81%A8cakephp%E3%81%AE%E9%81%95%E3%81%84/)
[Laravel 11.x Bladeテンプレート](https://readouble.com/laravel/11.x/ja/blade.html)
[CakePHP バリデーション - 5.x](https://book.cakephp.org/5/ja/core-libraries/validation.html)
[Ruby on Rails](https://ja.wikipedia.org/wiki/Ruby_on_Rails)
[PHPフレームワークSymfonyとLaravelの徹底比較](https://kinsta.com/jp/blog/symfony-vs-laravel/)
[CakePHP4でTwigテンプレートエンジンを使う方法](https://qiita.com/t-ikegami/items/b37022241b0b9f5ce151)
[CakePHP+Smartyハイブリッドによるラクラク開発](https://www.slideshare.net/slideshow/histudy7/13723171)

## 採用拡大中！
アシストエンジニアリングでは一緒に働くフロントエンド、バックエンドのエンジニア仲間を大募集しています！

少しでも興味ある方は、カジュアル面談からでもぜひお気軽にお話ししましょう！

お問い合わせはこちらから↓
[https://official.assisteng.co.jp/contact/](https://official.assisteng.co.jp/contact/)