Laravel | CakePHP 比較

Introduction
1. LaravelはPHPのオープンソースです。LaravelはTaylor Otwellに開発されました。構造パターンは有名なSymfonyをベースに開発されています。
2. Laravelは2011に開発され、他のフレームワークSymfony(2010)、CakePHP(2005)と比べても遅いです。ただ、Laravelはユーザ数をリードしており、Githubの星の数やGoogle、StackOverFlowの検索数でも同様です。

Githubの星数
1. Laravel

2. CakePHP

3. Packagistサイトの統計レポートによるとLaravelは13,000,000ほどインストールされているようです。
4. Laravelの最新バージョンは6.4です。 (2019年10月24日にリリース)
5. 付け加えて、LaravelはWeb開発者にとってたくさんのメリットがあります。
Laravelのメリット
1. Laravelは構文が理解しやすく、学びやすく、使いやすいです。
2. Laravelはたくさんのドキュメントがあり理解しやすいものもたくさんあります。
3. MVC modelを構築できる。
4. 充実したビルド機能: LaravelはWeb開発者の開発スピードを上げるためにたくさんの機能を提供しています。例えば"artisan"コマンドです。 php artisan make:auth。 これを実行すると他のプログラミングを実行しなくてもregistration, login, logout, password forgottenが作成されます。

5. Configuration management(構成管理): 簡単にconfigurationの管理や異なった環境や環境を切り替えるのにコマンドラインを入力するだけで実現することができます。 php artisan env - -env = testing
6. Artisan: Laravelのmanagementツールのコマンドラインです。このツールは簡単にテーブルやモデルなどを作成します。LaravelはCakePHPよりも細かな情報を表示してくれます。例えば、CakePHPはプロジェクトのルート情報を表示します。 Laravelはnames, methods, URIs, middlewareやactionsも表示してくれます。

CakePHPの表示

7. Laravelのルーティングの管理はapi, webのように分けることができます。そのため規模が大きいプロジェクトでは管理がやりやすくなります。CakePHPではデフォルトでroutes.phpファイルのみで管理します。
8. テスト: LaravelはPHPUnitを使ったテストがすでに含まれております。新しいLaravelのWebアプリケーションをインストールした後に, phpunitを実行するだけです。PHPUnitが実行中の時、Laravelは自動的にテスト用のconfigurationファイルを使用します。付け加えて、Laravelは自動的にテスト中、セッションを構築し配列の中にキャッシュします。この意味はテスト中にセッションやキャッシュが存在しません。その代わりにプロジェクトの中に'.env.testing 'ファイルを作ることができます。 PHPUnitやArtisanの実行コマンドの'--env = testing'オプションをつけて実行した時に、このファイルは'.env'ファイルを上書きます。
'tests'フォルダーの中にFeatureとUnitの2つのサブフォルダがあり、機能毎のテストと単体テストに別れています。新しいテストを作成する時、次のコマンドを使います。
- Featureフォルダのテスト作成
php artisan make: test UserTest - Unitフォルダのテスト作成
php artisan make: test UserTest --unit

CakePHPでは次のコマンドを使って手動でインストールをしていました。 php composer.phar require --dev phpunit/phpunit:"^5.7|^6.0" そして次のコマンドを使ってテストを実行していました。 vendor/bin/phpunit

9. Blade template: SymfonyではTwigでしたが、LaravelではBlade engineを用いてフロントページを作成します。Bladeで開発を行うとPHPのコードを使う必要はなく、とても美しい(わかりやすく保守性が高い)コードになります。 Blade Template

CakePHP view template
付け加えて、Laravelは認証機能のサポートもしています。 CakePHPのユーザ権限やログインステータスのような情報をViewに送る必要がありません。

10. ファイルシステム (アップロードファイル): Amazon S3, FPT, Rackspace Cloud Storageに少し設定をするだけでファイルを保存することができます。LaravelはFlysystemライブラリが使用できローカルファイルシステムやAmazon S3, FPT, Rackspace Cloud Storageの制御のサポートがあります。 Amazon S3やRackspace Cloud Storageを使用する時、環境設定ファイル(.env)の編集を行いComposerで関連するパッケージをインストールする必要があります。また、ローカルファイルの制御には'config/filesystem.php'を直接使えば良いので他のプログラムを追加しなくても良いです。CakePHPに比べ時間を抑えることができます。

11. Eloquent ORM: 構成が整理されているデータを取得する場合は良いですが、複雑な構成の場合はQuery Builderよりも遅いようです。
12. フロントエンド: CakePHPと比べてLaravelはVuejsのプロジェクトの開発をサポートするように構成されています。Laravelはフロントエンドの開発のパッケージのインストールのNPMを使用します。
13. Laravelのライブラリ: cashier (決済), envoy, passport (APIサービス用の認証), scout (全文検索), socialite (Facebook、Twitter、LinkedIn、Google、GitHubやBitBucketといった認証).
14. API: LaravelのレスポンスはCakePHPに比べて早いです。例えばプロダクトリストをAPIから取得するとした時、5回のテストでLaravelは短いレスポンスとなりました。
| Cakephp | Laravel | |
|---|---|---|
| 1 | 245 | 153 |
| 2 | 318 | 189 |
| 3 | 533 | 172 |
| 4 | 396 | 179 |
| 5 | 390 | 192 |
| 平均 | 376,4 | 177 |
15. バリデーション: Laravelのバリデーションのプログラムは美しく、既読性が高く、バリデーションのルールとメッセージの2つの要素に別れています。CakePHPのバリデーションはそれぞれのテーブルのModelファイルに集約されています。しかしLaravelはバリデーションのプログラムを異なったファイルで書くことができます。

16. マイグレーション: LaravelのマイグレーションはCakePHPに比べて時間が短く速いです。

Migration run time: Laravel

CakePHP
