
PHPフレームワークの機能や速度を徹底比較!おすすめのフレームワークや使用率増加が見込まれるフレームワーク・学習法も解説
はじめに
Web開発では必ずといっていいほど使用されているフレームワーク。PHP・Python・Ruby等、それぞれの言語ごとにフレームワークが存在します。
フレームワークを使えば開発の高速化やチーム内でのコーディング方針統一が可能となる一方、学習コストも低くはありません。
普及率の高いPHPに絞っても、CakePHP・Laravel・zend framework・Phalcon…と多くのものが存在しています。
ここでは、案件内容やチームの方針に適したPHPフレームワークを選ぶ際に役立つよう、機能や動作速度等を徹底比較します。
PHPフレームワーク①Laravel
まずはLaravelです。2011年の初リリース以降、速いペースでアップデートされている人気の高いフレームワークです。
Laravelの特徴
MVCモデルに基づく設計思想や高い拡張性が特徴です。
なお、MVCモデルのフレームワークについては後からも紹介するため、ここで簡単に解説します。
アプリケーションの役割を大きく下記の3種類に分け、この構造に沿って設計されているのがMVCモデルです。
- Model:データの処理を行う
- View:ユーザーへのUI表示を行う
- Controller:全体の制御を行う
これにより、開発分担を容易にしたり、後から表示に関わる部分やデータベースに関わる部分だけの差し替えやメンテナンスを簡単にできます。
Laravelの機能
Webアプリ開発に必要となる様々な機能を持つコマンドラインインターフェイスを備えています。
これをArtisan(アルチザン、「職人」の意)といい、非常に多くのコマンドを持っているもの。
例えば、MVCクラスファイルの生成やデータベースのマイグレーション等をコマンド一発で実行することができます。
また、Laravel独自のオブジェクト・リレーショナルデータベースマッパーとして用意されているのがEloquentクラスです。
これによりデータベースとモデルを関連づけて操作しやすくなるため、コードのシンプル化に役立ちます。
さらに、Bladeというテンプレートエンジンを供えておりビューのPHPコーディングを簡素化することが可能です。
PHPフレームワーク②CakePHP
CakePHPは2005年にリリースされた古参フレームワークです。
Ruby言語用に開発されたRuby on Railsの影響を受けており、開発高速化に役立つ仕掛けが盛り沢山のフレームワークとなっています。
CakePHPの特徴
Laravelと同じく、CakePHPでもMVC規約に基づき機能分離がなされています。
また、完全に独立したフレームワークであり、別のサードパーティ製ライブラリを一切必要としないのが特徴です。
CakePHPの機能
CakePHPには、Webアプリケーションの基本部分であるMVCの雛形ファイルを高速自動生成するためのbakeというスクリプトが用意されています。
具体的には、データベースのテーブルを指定するだけで、bakeコマンド一発でCRUD機能(データの生成・取得・更新・削除)を持つMVCを生成してくれるというもの。
また、多くの汎用処理が「ヘルパー」としてパッケージ化されており、簡単に呼び出せるようになっています。
例えばその1つである「フォームヘルパー」は、フォーム作成時の部品配置やレイアウト作成を行ってくれるパッケージです。
このように、些細なことではありますがピュアPHPで書くと意外に時間のかかる部分が効率化されています。
PHPフレームワーク③FuelPHP
FuelPHPは2011年にリリースされました。
同じくPHPフレームワークであるCodeIgniterを開発したメンバーが中心となって開発・運営しています。
FuelPHPの特徴
Webアプリ開発に必要とされる機能が全て揃ったフルスタックフレームワークでありながら、動作が高速なのが特徴です。
また、HMVC(Hierarchical Model-View-Controller)の設計思想に基づいており、一つのアプリケーションが複数のMVC構造を持つことができます。
FuelPHPの機能
FuelPHPでは、ファイルを読み込んだ際に必要なクラスを自動でロードしてくれるオートローダー機能を備えています。
この実現のためにコーディングルールやファイルとクラスの命名規則がありますが、引き換えに高速動作が可能となり、これは大きなメリットといえるでしょう。
また、MVCクラスの一種としてPresenterがあり、これはコントローラとビュー・モデルの仲立ちとしてモデルから取得したデータをビューに渡すクラスです。
これによりコントローラは本来の役割である全体制御に集中できてコードがシンプル化されるので、メンテナンス性も上がります。
他にも、oilというパッケージコマンド郡を持ち、これを使えばコマンドラインからマイグレーションやユニットテストの実施が可能です。
PHPフレームワーク④Symfony
2007年にリリースされ、比較的歴史の長いPHPフレームワークがSymfonyです。
堅牢性に定評があり、比較的大規模なサイトでの運用事例が多くなっています。
Symfonyの特徴
フレームワークといいつつも、多くのコンポーネントが集まるようにできているのが特徴です。
これらのコンポーネントを外部から使うのも容易です。
実際に、CakePHPやLaravel等、他のPHPフレームワーク内ではSymfonyのコンポーネントが多く使用されています。
Symfonyの機能
Symfony4以降はマイクロサービスに対応しており、細かなサービスに分割されているので必要な部分だけを組み込んでアプリ構築することが可能です。
これによりアプリケーションの容量を縮小することができます。
アプリケーションの種別にもよりますが、他のフレームワークで構築すると数十MB、Symfonyでは10MB以下となった事例もあるようです。
便利なコンポーネントも多く用意されています。
よく使用されるのはBrowserKit(ブラウザのシミュレーション)、DomCrawler(クローラーで取得したHTMLをDOM解析してオブジェクト化)等です。
動作速度の差は?
ここまで、代表的なPHPフレームワークを挙げて機能を説明しました。次に、動作速度を比較してみましょう。
PHPフレームワークの動作速度比較として多くのベンチーマークが行われていますが、ここでは下記サイトを参考にまとめています。
PHP Framework Benchmark – GitHub –
手法としては、各フレームワークをインストールし標準設定で「Hello World」を表示するだけのサイトを作成し単位時間あたりの処理数を比較しています。
- FuelPHP:344(Requests/Sec)
- CakePHP:175(Requests/Sec)
- Symfony:132(Requests/Sec)
- Laravel:102(Requests/Sec)
やはり、オートローダーや使用メモリ量最適化といった工夫がなされているFuelPHPが1位という結果になりました。
ただし、参考リンク先でも確認できますがsilerやslimといったさらに速いものが多数存在しており、これらはマイクロフレームワークと呼ばれます。
搭載機能を必要最低限に絞る代わりに高速動作するもので、今回おすすめとしては取り上げていませんが速度重視の場合は検討しても良いでしょう。
また、このベンチマークは標準設定での比較になりますので、環境・アプリ・用途に応じてチューニングすればまた別の結果になる点に注意してください。
使用率の差は?
最も使用されている人気のPHPフレームワークはどれでしょうか。
実際の使用率については全てを追いきれないため調査は困難ですが、人気の指標として代わりによく用いられるのがGitHubのスター数です。
現時点でのGitHubスター数は下記のようになっています。
- Laravel:56.9k
- Symfony:22.5k
- CakePHP:8.1k
- FuelPHP:1.4k
リリース年度が2011年にも関わらず、先発組を抜いてLaravelが圧倒的1位という結果でした。
また、インターネット上での検索数もLaravelが急上昇して現在1位になっています。
このことから、今後最も使用率の増加が見込まれるPHPフレームワークはLaravelといって間違いないでしょう。
学習方法①インターネット上の情報で学ぶ
PHPフレームワークを効率よく学習するには、とにかく何か動くWebアプリケーションまたはAPIを通しで作ってみるのがおすすめです。
サーバー環境、データベースともに多くの種類に対応していますので、自分の構築しやすい環境で実装すると良いでしょう。
実装にあたっては、インターネット上に参考となる情報が多く存在しています。
公式ページのチュートリアル
今回紹介したフレームワークはいずれも公式ページのチュートリアルがとても充実しています。
まずは公式チュートリアルの通りに一通り動かしてみるのがおすすめです。
わからないことがあればフォーラムやユーザーグループへ質問を投げかけてみるのも良いでしょう。
参考になる学習サイト
公式チュートリアルからさらに一歩進んだ使い方については、有志の方が学習サイトとしてまとめられています。
中でも体系的にまとめられていて学習に向いているものを下記に厳選しました。
- ララ帳 – PHPフレームワークLARAVELの学習帳
- ブログ形式でLaravelにまつわる様々なトピックを連載
- Laravel更新に合わせ従来ブログの内容も更新
- 初心者のためのCakePHP3 プログラミング入門
- 簡単なサンプルアプリの実装と動作確認を例に解説
- Kindle本もリリース
- FuelPHP学習帳
- 問合せフォームや掲示板等の具体的なアプリ実装を例に解説
- インストールや設定方法についても詳説
- シムノート – PHPフレームワークSymfonyの学習帳 –
- インストールからサンプルアプリ開発の流れを体系的に説明
- Symfony3ベース
学習方法②書籍で学ぶ
学習サイトやインターネット上で入手できる情報だけでは、詳細部分や背景がわかりづらいこともよくあります。
体系的な知識を身に付けながら学習するのにおすすめの書籍をまとめました。
Laravelの入門書
Laravelの入門本として人気の高い書籍です。
多少のPHPに関する前提知識は必要ですが、Laravelに限らずPHPフレームワーク自体が初めてという方にもおすすめです。
正誤表があるので読む際にはご注意ください。
CakePHPの入門書
PHPフレームワーク CakePHP 3入門(秀和システム)
CakePHPの書籍では比較的新しい入門書で、その仕組みや構造等を基礎から学ぶことができます。
CakePHPはもちろん、他のPHPフレームワークも触ったことすらないという方にでもおすすめです。
ある程度のPHPに関する前知識は必要となるものの、説明が非常に丁寧なため理解が進みやすいでしょう。
FuelPHPの入門書
環境構築の部分にも重点を置いて詳細に説明をしているので、これからFuelPHPを利用してみようという方にはおすすめです。
また、MVCパターンやユニットテストの方法等についても丁寧に解説されています。
FuelPHPのみでなく他のフレームワークにも共通して役立つ知識が身に付くでしょう。
Symfonyの入門書
PHPフレームワーク Symfony 4入門(秀和システム)
Symfonyの導入からWebアプリの開発までを通して解説した本です。
基本的なSymfony使い方の習得にとどまらず、PHPフレームワーク開発のスタンダードといえる知識が身に付きます。
出版社サイトよりサンプルコードがダウンロードできるので、とりあえず簡単に動かしてみるのもおすすめです。
まとめ
代表的なPHPフレームワークについて、機能の違いと動作速度および使用率の比較を行いました。
いずれも異なる性質を持った人気のフレームワークですので、案件に合わせて適したものを選んでみてはいかがでしょうか。
各フレームワークの最新情報については公式ページもご確認ください。
RANKING週間人気コラムランキング

Warning: Invalid argument supplied for foreach() in /home/astarcojp/agency-star.co.jp/public_html/wp/wp-content/themes/agency-star/single-column.php on line 95

Warning: Invalid argument supplied for foreach() in /home/astarcojp/agency-star.co.jp/public_html/wp/wp-content/themes/agency-star/single-column.php on line 95

Warning: Invalid argument supplied for foreach() in /home/astarcojp/agency-star.co.jp/public_html/wp/wp-content/themes/agency-star/single-column.php on line 95

Warning: Invalid argument supplied for foreach() in /home/astarcojp/agency-star.co.jp/public_html/wp/wp-content/themes/agency-star/single-column.php on line 95
RANKINGカテゴリーランキング

Warning: Invalid argument supplied for foreach() in /home/astarcojp/agency-star.co.jp/public_html/wp/wp-content/themes/agency-star/single-column.php on line 153

Warning: Invalid argument supplied for foreach() in /home/astarcojp/agency-star.co.jp/public_html/wp/wp-content/themes/agency-star/single-column.php on line 153