PHPやPHPフレームワークには多くの種類があります。
いずれもベースはPHPという言語ですので、そこまで大きな違いはありませんが、
それぞれ細かい違いがありますので、その辺りを踏まえて紹介していきたいと思います。
PHPの種類は2つ
PHPには大きく分けてApacheモジュールとCGIの2種類があります。
それぞれ以下のような特徴があります。
Apacheモジュール
Apacheのモジュールとして動作するPHPです。
特徴としては、Apacheとメモリを共有するため、CGIと比べてメモリの消費量が少なくて済む傾向があります。
ただし、これはPHPを使用する場合であり、PHPを使わないHTMLのページを表示する場合には、モジュールの分メモリを多く消費してしまいます。
そのため、PHPだけで表示するサイトでない場合、若干非効率になります。
また速度ですが、Apacheに最適化されているため、CGIよりも処理速度は速くなります。
しかし、WEBサーバーとアプリケーションサーバーが同じになってしまうため、CGIのようにWEBサーバーとアプリケーションサーバーを分けるような用途で性能を安定させることは難しくなります。
また何よりも問題になるのは、Apacheモジュールの場合、原則として複数ユーザーに対応できないことです。
そのため、レンタルサーバーなどでApacheモジュールを使うことはほとんどありません。
CGI
CGIとして動作するPHPです。特徴としては、ApacheなどのWEBサーバーと完全に独立した形で動作する点です。
独立して動作するため、PHPを処理する場合は、余計にメモリを消費してしまいます。
ただ、PHPを動かさない場合は、モジュールのためのメモリを使わないため、使用用途がわからない場合はメモリを効率的に利用できます。
また、速度については、連携する必要があるため若干劣りますが、
WEBサーバーとPHPを動作させるサーバーを分けることが可能になっています。
また、複数ユーザーで動作させることができ、そのことから、
レンタルサーバーなどで使われることが多くなります。
しかし、CGIでの一番のデメリットは性能的なものではありません。
それは何かと言うと、WEBサーバーと連携していないため、WEBサーバーと連携するような関数を使えなくなる、という点にあります。そういった関数を使っているプログラムの場合、動かなくなりますので、注意が必要です。
PHPフレームワークの種類
PHPには、フレームワークというプログラムの型のようなものが数多く存在しています。
有名なものだけでも10種類以上はあり、どのフレームワークも大小あれ、それなりに使われています。
しかし、中でも主要なものとして使われているフレームワークは5、6個と言ったところです。
今回は有名なフレームワークのうち、特に使われている頻度が多いと思われるものを紹介していきます。
CakePHP
PHPのフレームワークとしては非常に有名で、
かなり歴史のあるフレームワークとなります。
そのため、数年前に作られたシステムであれば高い確率で、
このフレームワークが使われています。
特徴としては、フレームワークの性能自体はそこまで高くなく、重いと言われがちですが、
機能が豊富で開発がしやすいことと、日本語ドキュメントやコミュニティが非常に充実していることから、現在でも、採用される事例はそれなりにあります。
何よりも、使えるエンジニアが多いことから、作ったシステムのメンテナンスが非常にやりやすいことは利点と言えます。その、利用者が多い点というだけ挙げても、CakePHPを習得するメリットは十分にあります。
もちろん、CakePHPもフレームワークとしての基本的な構成は変わりませんので、
習得したことが無駄になるということはないでしょう。
Zend Framework
PHPの開発会社として有名なZend社が開発したフレームワークです。
このフレームワークの特徴は豊富なライブラリを含んでおり、そのライブラリを単体で使用することもできます。
フレームワーク自体の構成は非常にオーソドックスで、
PHPフレームワークのお手本のようなものとなっています。
性能自体はCakePHPよりは優れていますが、機能が豊富であるため、
最近流行している軽量フレームワークには及びません。
また、日本語のドキュメントやコミュニティの充実度は若干見劣りしてしまいます。
そういった事情もあり、日本においては、そこまで多く利用されてはいません。
しかしながら、オーソドックスな作りになっていることと、ライブラリが独立していることから、PHPのシステムの構成を勉強する場合は、これを参考にすると良いでしょう。
Symfony
設計思想としてRuby on Railsの流れを組むフレームワークです。
そのため、高速に動作することが利点で、PHPのフレームワークを使う際に速度を重視するような場合に使われることが多いです。
また、プラグインシステムが優秀なため、
比較的機能追加をしやすくなっている点も人気です。
日本ではそこそこの利用度ですが、海外ではかなりのシステムで使用されています。
また、国産PHP製ECのEC-CUBEの最新版はSymfonyを使用しているため、
EC-CUBEを使用する予定がある場合は、Symfonyを習得しておくといいでしょう。
Code Igniter
Code Igniterはシンプルな作りのフレームワークです。機能は少なめですが、軽量で高速に動作することが売りになっています。
また、構成も単純でわかりやすいため、フレームワークの学習用に最適です。
そういった特徴があることから、比較的小規模で、速度が要求されるシステムに使用されることが多いフレームワークです。
ただ、一時期ライセンスの問題があった関係から、利用者がFuel PHPやLaravelなどに移ってしまったため、利用者はそこまで多くはありません。
Fuel PHP
Code Igniterを改良して開発されたフレームワークです。
Code Igniterと同様に軽量かつ高速で、単純なため、学習用に最適なフレームワークになっています。
もちろん、Code Igniterにおいて、色々とあった問題点についても改善されており、同じ目的で使用するのであれば、こちらの方がおすすめです。
また構造がCode Igniterに近いこともあり、Code Igniterを習得している方であれば、さほど苦も無く習得ができると思います。
Ethna
もともとはGREEの藤本真樹氏によって開発されたフレームワークですが、現在はオープンソースになっています。
システムを効率よく開発することをコンセプトとしているため、細かい処理についてはフレームワーク側がサポートしてくれます。そのため、実際に利用する開発者はメイン機能に集中することができ、質の高いシステムを作ることができます。
GREEのサイト自体もEthnaで作られており、また、日本の開発者が開発したことから日本語のドキュメントも充実しています。
そういった面からも勉強のために習得する価値は十分あります。
しかし、PHPフレームワークの流行がLaravelなどの軽量フレームワークに移っていく時期だったこともあり、利用される頻度はやや落ちます。けれども、面倒な処理をフレームワークが請け負ってくれることはバグの発生を抑える上で非常に有効なことですので、その点から見てもEthnaを使って見る価値はあると思います。
Laravel
LaravelもCode IgniterやFuelPHPと同じ系統のフレームワークとなっています。
そのため、これらを使っていた方であれば、移行も比較的容易となっています。
ただ、作られたのも非常に最近のため、わかりやすさ、書きやすさだけでなく、コード自体も非常にきれいに書かれています。
またサードパーティーで作られているライブラリも非常に優秀なものが多いこともあり、急速に利用できるエンジニアが増えてきていますので、そういった面からみても新しいシステムを作るという場合には、このフレームワークを選択肢に入れることをお勧めします。
フレームワークの選び方
こうして見てきましたように、フレームワークにはいろいろな種類があります。
大抵は必要に応じて使うものだとは思いますが、もし、自由に選べるとすれば、しっくりくるものを選ぶと良いでしょう。というのも、基本的にフレームワークの構成は類似しており、一つを習得していれば、他のフレームワークを習得するのは比較的容易になっています。
しかしながら、フレームワークはプログラムの型のようなものですので、もし自分に合ったフレームワークがわかれば、自分に合ったプログラムの作り方も見えてくるのではないでしょうか?
さて、こうしていくつかフレームワークを紹介してきましたが、PHPのフレームワークはここで紹介したもの以外にもたくさんあります。もしかしたら、ここで紹介していないフレームワークがしっくりくる方もいるかもしれません。あなたがしっくりくると思ったフレームワークがありましたら、是非とも教えてください。
参照:PHPの特徴と他言語との違いについて解説した記事はこちら
フリーランスになるために必要な知識やスキルアップの方法等、様々なお役立ち情報を発信していきます。
(リモートワーク案件に強いフリーランスエージェント「クラウドワークス テック」を運営)