PHP

【2020年版】laravelがダントツ?PHPフレームワーク5選を現役エンジニアが比較してみる

PHP フレームワーク
僕
今回はPHPのWEBフレームワーク5選を現役PHPエンジニアとしてレビューしてみました。

結論
✔︎ PHPのWEBフレームワークですが、2020年だとまだまだLaravel一択

2020年度は、日本国内ではさらにLaravelがシェアを伸ばしていきそうな勢いですね。後で紹介しますが、Googleの検索トレンドから現状の注目度ランキングは下記のようになりました。

【2020年度版】Google TrendsでのPHPフレームワークランキング

  1. Laravel
  2. CakePHP
  3. Symphony
  4. CodeIgniter
  5. Zend Framework

僕自身、現状Laravelを使っていてかなりいい感じなのでオススメなのは尚更なのですが、いまだにどのフレームワークも開発が続いている状態です。

今回の記事ではそれぞれのPHPフレームワークの概要を少しまとめてみました。

  関連記事

あわせて読みたい
PHP プログラミングスクール
現役フリーランスがオススメするPHPが学べるスクール3選【コスパ×最高のスクールで学ぶ】 今回は、実際にPHPメインのフリーランスエンジニアである僕が本当にオススメできるPHPが学べるプログラミングスクールを紹介していきます...

スポンサードサーチ

検索トレンドでみる2020年のPHPフレームワークランキング

僕
よくみるGoogle Trendsで「laravel」「Symphony」「Codeigniter」「CakePHP」「Zend Framework」を比較してみました(データは2020年4月8日現在)

日本国内のこれまで5年間の2015年〜2020年までのデータですね。見事にlaravelがダントツトップという結果になりました。

他のフレームワークの検索ボリュームは年を追うごとに下がっていますね。日本においては、もはや「laravelの1強時代」と言い切ってしまっていいと思われます。

僕
次に、全世界での過去5年間のデータをみてみましょう。意外な結果になったようです。

赤がSymphonyで青がlaravelですね。

2020年に入ってLaravelがガクッと下がり、Symphonyが首位奪還した形になっています。

他のフレームワークは日本と同様ですが、さらに差がついてしまう形で大幅に落ち込んでしまっています。また、アメリカでもこのようなsymphony優位の状態が進んでいるようです。

✔︎ 日本国内だと、Laravelの人気度が圧倒的にトップ
✔︎ 一方、全世界だとSymphonyの人気が依然としてトップでLaravelとほぼ同じ
✔︎ Laravelとsymphony以外のフレームワークはトレンドではない

【2020年版】PHPフレームワークランキング

僕
Google Trendsでのデータを元に、PHPフレームワークの上位5位をランキング形式で紹介していきましょう。まずはもちろん、laravelからですね。

日本でのGoogle Trendsのランキングを元に、上位からそれぞれのPHPフレームワークを紹介してみましょう。

2020年4月現在、Google Trendsの最終結果は下記でした。

【2020年度版】Google TrendsでのPHPフレームワークランキング

  1. Laravel
  2. CakePHP
  3. Symphony
  4. CodeIgniter
  5. Zend Framework

それぞれ、フレームワークの持つ特徴についてまとめていきたいと思います。

PHPフレームワーク No.1: Laravel

Laravel ロゴ

公式Laravel

僕
LaravelはSymphony系のウェブフレームワークです。Laravelのキャッチフレーズは、「Web職人のためのフレームワーク」ですね。Laravelは、使う人が細かいことを気にせず、どんどん開発を進められるよう、基盤となるパーツを大抵の場合、先に作成してくれているのが特徴でしょうか。

LaravelのPHPフレームワークとしての機能を大まかに書き出してみましょう。モダンな開発に必要な要素は、ほとんど既に揃っています。よく言われることですが、「慣れると爆速で開発できる」PHPフレームワークですね。

PHPフレームワーク Laravelの特徴・機能一覧

1. テンプレートエンジン bladeテンプレートエンジンによる各種機能サポート
a. 制御構文(if、switch、ループetc)
b. フォーム制御(CSRF保護、バリデーションエラー表示)
c. コンポーネント(データの受け渡し、スロット、レイアウト定義・レイアウト継承)
2. MVCのサポート LaravelのアーキテクチャとしてMVCを標準サポート
3. Eloquent ORM Eloquent Object Relational Mapping (ORM) 搭載。
PHPによるActive Recordを利用し、データベースクエリをPHPのシンタックスとして開発できるようになる。
4. セキュリティ対応 a. パスワードが平文で保存されない
b. プリコンパイルされたSQLを利用するため、SQLインジェクション対策を防止
5. Artisanコマンドツール コマンドライン上から、よく利用する機能を実行できる。
a. 各種ファイルスケルトン作成
b. マイグレーション実行/シード実行
c. tinker(REPL)の実行
d. 独自のバッチ処理実行 etc
6. ライブラリ&モジュール Laravel独自の多種多様なライブラリ&モジュール
a. Laravel / ui (認証系ライブラリ)
b. Laravel mix (webpackアセットコンパイラ)
c. Laravel Dusk (ブラウザテスト自動化)
d. Laravel Sociallite (OAuth認証)
…and more
7. マイグレーション対応 Laravel Schema BuilderによるPHPコードによるデータベース管理。
8. ユニットテスト phpunit(標準)によるユニットテスト対応

明確にはLaravelの機能ではないものの、個人的に使っていて便利だと思ったのは、下記のようなポイントがあります。

✔︎ ライブラリ類のインストールは、PHPパッケージ管理ツール
「Composer」
で完結
✔︎ Webサーバー機能搭載(php artisan serveコマンド)

PHPフレームワークLaravelでの周辺ライブラリ&モジュール

僕
おそらく最近だと、このあたりのLaravelのエコシステムは使わずにAWS/GCPでのマネージドサービスを使うかとは思いますが。すぐにアイデアを形にしてデプロイしたい!みたいな場合だと、まだまだ便利ですね。
Vapor サーバーレスプラットフォーム
Forge ここにサーバー管理
Hozion キュー監視
Nova 管理画面
Echo リアルタイムイベント
Lumen マイクロフレームワーク
Homestead パッケージドVagrantボックス
Spark Saasアプリケーションスカフォールディング
Valet Mac用開発環境
Mix Webpackアセットコンパイラ
Casher サブスクリプション決済
Dusk ブラウザテスト自動化
Passport OAuth2実装
Scout 全文検索
Socialite Oauth実装
Telescope デバッグアシスト
Tinker 対話的REPL

上記のような感じですね。

Laravelのエコシステムを利用することで、大抵のことは実現可能なので、これは他のフレームワークにはない魅力かもしれないですね。

✔︎ Laravelエコシステムを必要なら取り入れることで、拡張性に優れた
柔軟な開発を進めることができる

PHPフレームワークLaravelでの豊富なコマンド操作

ライブラリ類のインストールについてですが、PHPパッケージ管理ツール「Composer」によって、全て1コマンドで完結することができます。

## Laravel プロジェクトのインストール・作成

composer global require laravel/installer
laravel new blog

また、ビルトインWebサーバーを使うことで、開発環境としてはMAMP・Vagrant・Dockerなどを考慮せずに、いきなりコードを書けるのがありがたいですね。

## phpビルトインサーバー起動

php artisan serve
Laravel development server started on http://localhost:8000

他には、大抵のファイル作成、DBマイグレーション・シーディングなどもコマンドからすぐに作成できますね。よく使うコマンドはこの辺り。大抵のスケルトン作成やデータベース操作を「php artisan」や「composer」コマンドで完結できてしまいます。

## DBマイグレーション実行
php artisan migrate

## DBシーダ実行
php artisan db:seed

## 新規ビュー作成
php artisan make:view [ファイル名]

## 新規コントローラ作成
php artisan make:controller [ファイル名]

## 新規モデル作成
php artisan make:model [ファイル名]

## tinker起動(コマンドラインREPL)
php artisan tinker
僕
tinkerは、例えば本番デプロイしてから、生のSQLによってデータ操作/参照しないといけないような場面で、Eloquent ORMを呼び出して簡単にデータ操作/閲覧できる優れものです。僕自身、デプロイしてからかなり頻繁に使っています。

まだまだ書き出せていないLaravelの機能はまだまだあるのですが、いやー、便利ですねぇ。開発におけるフレームワーク周りのストレスはほとんどないのかなという印象です。

✔︎ デフォルトでも大抵の開発に必要な要求は満たすことができる。
✔︎ 豊富なライブラリ&モジュール郡により、開発を大幅に短縮できる

PHPフレームワーク No.2: CakePHP

公式CakePHP

僕
上記の検索ボリュームランキングのように、日本国内だと2017年ごろまでPHPフレームワーク首位を独走してきています。確かにLaravelにシェアは大幅に奪われていますが、日本での人気は2020年現在でも、根強いです。

CakePHPの発音は(ケイクピーエイチビー)ですね。

日本だと新規プロジェクトではおそらくLaravelが採用されるケースばかりなのですが、2017年以前に作られたPHPプロジェクトは大抵がこのCakePHPなので、その保守改修などでまだまだ根強いシェアはあります。

日本国内でCakePHPを採用している企業だと次のような場所がありますね。

CakePHP採用企業

  1. 株式会社BASE
  2. 株式会社レバレジーズ
  3. 株式会社楽天
  4. 株式会社LIG
  5. 株式会社スマレジand more…

まだまだ現役ではあるのですが、おそらくLaravelにリプレイスしたくてもできないorCakePHPでも大丈夫なくらいノウハウが溜まっている、みたいな状態の2択になっていると思います。

僕
確かにPHPフレームワークは、どれを利用してもあまり使い勝手に大幅な違いは出てこないのですが、少し今から新規で「どのPHPフレームワークを使おう?」と考えている方は、やっぱりLaravelの方が無難ですねー。

上記を念頭に、まずは機能と特徴からみてみましょう。

PHPフレームワーク CakePHPの特徴・機能一覧

1. MVCパターン CakePHPの標準アーキテクチャとしてMVCサポート
2. ORM 下記の2種類のオブジェクトを利用し、DB操作する
1. リポジトリ/テーブルオブジェクト
2. エンティティー
3. bakeコマンドール コマンドライン上から、基本的な素材を作成可能。
(モデル・ビヘイビアー、ビュー、ヘルパー、コントローラーetc)
4. プラグイン composer経由で、CakePHPのの機能を拡張するプラグイン。
a) Authorization/Authentication
b) Bake
c) Chronos(Datetimeオブジェクト拡張)
d) Debug Kit(デバッグツール)
e) Migrations(データベースのスキーマ変更)
f) ElasticSearch(elasticsearchの抽象化)
5. 設定が不要 ディレクトリや命名規則を定めることで、細かな設定することなく、開発が進められるように工夫されている
6. CRUDスキャフォールディング CRUD機能を持つアプリケーションをすぐに定義し、作成できる
7. ユニットテスト phpunitによるユニットテストがデフォルト
僕
基本的に、Ruby on Railsを参考にして作成されたフレームワークであるため、Laravelも同様の機能は持ち合わせています。ただ、CakePHPとLaravelの一番の違いは、CakePHPが環境・プロジェクト構築を自動化している分、融通が効きづらいのが難点ですね

PHPフレームワーク No.3: Symphony

公式Symphony

僕
PHP5の時代のSymphonyのキャッチフレーズは「ものぐさのためのプロフェッショナルウェブツール」だそう。紹介こそいしていませんが、「Mojavi」というPHPフレームワークの草分け的存在と、Ruby on Railsから影響を受けていますね。

SymphonyがCakePHPと異なる点として、Symphonyのプログラム自体が独立したコンポーネントとして利用できるように設計されていることがあります。

そのため、Laravelを筆頭にしたオープンソースでも利用されており、CakePHPと比べてもプロジェクト構成や名前空間など拡張性が非常に柔軟なフレームワークだといえます。

PHPフレームワーク Symphonyの特徴・機能一覧

1. MCVパターン CakePHPの標準アーキテクチャとしてMVCサポート
2. Doctrine ORM Doctrine Object Relational Mapping搭載。
デフォルトでMySQL、PostgreSQL、MongoDBサポート
3. symphonyコマンドツール 各種MVCスケルトン作成
スキーママネジメント
データマネジメント
開発ツール
テスト
プロジェクト管理
4. 設定より規約 開発者は型にはまらないものを設定するだけでいい
5. エコシステム SymphonyInsight: 技術的負債の可視化
blackfire.io: パフォーマンス管理
Symphony Security Monitoring: セキュリティモニタリング
Twig: テンプレートエンジン
API Platform: REST & GraphQLフレームワーク

SYmphony自体は、ざっくり純粋なPHPによる必要最低限のフレームワークが提供されているという印象です。

Symphonyエコシステムについてですが、Laravelなどに比べると見劣りするように見えますが、実際にSREなどサイトを安定稼働させるために必要な機能が一通り揃っており、実務でかなり役に立つ環境は揃っているように見えますね。(と言っても、AWSでのモニタリングがメインかとは思います)

✔︎ Symphonyは必要最低限のフレームワークのまとまりで、必要があれば外部から拡張することで、スケールさせていくことができる(運用面での考慮がされている)

PHPフレームワーク No.4:CodeIgniter

公式CodeIgniter

僕
Codeigniterはフレームワークというよりも、PHPツールキットと言い換えた方が正確かもしれないですね。メインのユースケースとしては、公式ドキュメントで挙げられているように、レンタルサーバーなどで、最低限のワークスペースが欲しい場合に限られています

CodeIgnterは、前述した「Laravel、CakePHP、Symphony」などのMVC前提のフレームワークとは少し毛色が違います。

公式ドキュメント(日本語版)によれば、CodeIgniterがオススメな人は次のような場合とのこと。

CodeIgniter は、こんな人にぴったりです:

  • 省スペースのフレームワークが欲しい人。
  • 圧倒的なパフォーマンスを求める人。
  • PHP のバージョンや環境設定の違う一般的なホスティング(レンタルサーバ) で幅広く動作するものが欲しい人。
  • ほとんど設定がいらないフレームワークを希望する人。
  • コマンドラインを使う必要がないフレームワークを 好む人。
  • 決められたコーディングルールに厳格に従う必要がないフレームワークが 欲しい人。
  • PEAR のような大規模な一枚岩のライブラリには興味がない人。
  • テンプレート言語を習得しなければならないのが嫌な人(必要な場合だけに オプションでテンプレートパーサが利用できるようなものは除く)。
  • 複雑なものを避け、シンプルな解決策を好む人。
  • わかりやすく詳細なドキュメントが欲しい人。

上記の通りで、最近だとクラウドにデプロイするのが前提なアプリケーション開発も多く、またレンタルサーバーにアップする際はWordPressという便利なCMSが存在するので、少し「CodeIgniterではないとダメ」という場合は少ないかもしれないですね。

ただ、CodeIgniterにウェブ開発に必要な機能全てが入っていて、それで全体数MB程度の軽量さは、API開発などでは結構重宝するのかなーとも思いました。

PHPフレームワーク Codeigniterの特徴・機能一覧

1. MVCパターン MVCパターンを利用した開発が可能
2. 軽量・高速 コア部分は非常に小さなライブラリ郡から成り立ち、
必要があれば読み込まれるので、非常に軽量で高速
3. 簡潔なURL生成 クエリ文字列ではなく、セグメントアプローチを採用
4. 最低限のライブラリ群 データベースアクセス
Email 送信
データのバリデーション
セッションの維持、
イメージの操作
XML-RPC データの取り扱いなど
5,. テンプレートエンジン 簡単なテンプレートパーサが備わっているものの、利用が必須ではない

本当に最低限の機能のみなので、実際にスケール前提での開発となると、少し力不足かなという感じはあります。

ただ、軽量かつ設定不要なフレームワークであるのはかなりいい点なので、実際にプロトタイプを作成する時のような、スタートアップなど開発にスピードが必要な場合は、いいオプションになるかもしれないですね。

PHPフレームワーク No.5: Zend Framework

ZendFramework
僕
Zend Frameworkは、PHPの中核を開発していたアンディ・ガトマンズゼーブ・スラスキーの創業したゼンド・テクノロジーズ によって開発されました。PHPによるベストプラクティスに乗っ取った開発を広める努力をしているようですが、他のフレームワークに後塵を拝していますね。

Zend Framwork自体は、日本だと少し古いシステムで使われているイメージがありますが、海外だとBBC、BPNパリバ、Offers.comなど名だたる企業による採用実績もあります。

また、GoogleやMicrosoftが開発に加担していた時期もあり、さすがは元々PHPコア開発者が主導したプロジェクトという感じですが、今は人気が完全に下火になっているように見えます。

2019年-2020年現在だと少し動きがありまして、Laminas Projectというものに移管されています。

PHPフレームワーク Zend Framworkの特徴・機能一覧

1. MVCパターン デフォルトではなく、デザインパターンの一つとしてサポート
2. マルチDB対応 MySQL、PostgreSQL、SQLite、Oracleをはじめとした
多くのDBをサポートするアダプタ群
3. API開発に標準対応 API開発に必要なメソッドやクラスを搭載している
4. セッション管理 Zend_sessionによるグローバルセッション管理
その静的メソッドによるデフォルトの挙動変更
5. データ暗号化 Zend\Crypt\FileCipherによる暗号化/複合化
(AESおよびSHA-256)
6. フレキシブルなルーティング 6種類の基本的なルートメソッドを利用した、自由なルーティング

まとめてみましたが、いずれの機能もかなり便利そうで、さすがPHPの中核を開発していた人が開発してきただけありますね。

数多くのZendFramework内のメソッドによって、ウェブアプリケーションに必要だけど、PHP標準ではサポートし切れていない内容を補充できているように感じました。

確かに、Laravelと比べてもフレームワークとしての良さはありますが、内部メソッドを使いこなすのが若干敷居は高いのかなーという印象です(使いこなせたら便利です)

✔︎ フレームワーク内臓のメソッドが多種多様。自分である程度のフローから実装していく場合には力を発揮しそう

スポンサードサーチ

まとめてみたらどのPHPフレームワークも実践投入できそう!だけど…

僕
今までLaravelだけ実践で使ってきたので、「他のPHPフレームワークって2020年だとどうなの?実際、使えないんじゃないの?」みたいな軽いノリでまとめてみたのですが、ぶっちゃけどのPHPフレームワークも実務レベルで投入できそうですねー!

どのPHPフレームワークも、確かにそれぞれ利点があり、特徴が出ていることがわかりました。ただ、エンジニアの学習量や理解度を平坦にするという点(=チーム開発を効率化する)という視点だと、日本においてLaravelがもてはやされるのも納得ですねー。

✔︎  どのFWも利点はあるけど、Laravelが一般的かつ直感的に扱える
✔︎  クラウドが全盛の今、コンテナ技術やクラウドネイティブにうまくキャッチアップしているLaravelはやはり優位
✔︎  Laravelの人気度さながら、エコシステムの充実度がぶっちぎりでいい

ただ、2020年現在はまだまだクラウド全盛の時代。

コンテナ技術との親和性やマネージドサービスの組み込みやすさ、エコシステムからのモジュールの使える選択肢を考えると、やはり新規プロジェクトはLaravelで始めるのが鉄板だなーと感じました!

  関連記事

あわせて読みたい
PHP プログラミングスクール
現役フリーランスがオススメするPHPが学べるスクール3選【コスパ×最高のスクールで学ぶ】 今回は、実際にPHPメインのフリーランスエンジニアである僕が本当にオススメできるPHPが学べるプログラミングスクールを紹介していきます...
ABOUT ME
クスハラ
立命館大卒('18)後、ニート。 その後、webエンジニアとして独立・開業。 留学経験あり。TOEIC960点(大学3年時) 複数のwebサービスのグロースから開発までを担当。楽しく仕事して自由に生きているので、ブロガーとしては世の中の当たり前を疑う視点を提供する記事を書きたい。 ■連絡先 shogo.kusuhara[あっと]gmail.com