【基礎】PHPの主要フレームワーク4選!概要や特徴を徹底解説
こんにちは。Wakka Inc.のベトナム拠点でテクニカルマネージャーを担当している鍋山です。
本日はPHPのフレームワークを検討されている方に向けて、主要なフレームワークの特徴を簡単に解説したいと思います。
ご存知の通り、現在のWeb開発においてはフルスクラッチで作り込むということはかなり少なくなっています。多くの開発プロジェクトでは、既存のフレームワークやライブラリを利用することで開発効率を高めています。そのため、自社の開発プロジェクトに応じてどのフレームワークを使用するのかを慎重に検討することが大切です。
特に、PHPのフレームワークにはたくさんの種類があり、それぞれ特徴があります。選択を間違えてしまうと開発効率が悪くなったり、機能を実現できなかったりすることも少なくありません。そこで、今回はそもそもフレームワークとは何か、そしてどのような主要フレームワークがあるのかについて解説しますので、興味のある方はぜひ参考にしてください。
PHPフレームワークとは?
『PHPフレームワーク』とは、PHP言語の使用を想定して作られたアプリケーションの骨組みです。アプリケーションのテンプレートとモジュールやAPIなど再利用できる汎用的なシステムパーツで構成されます。テンプレートをそのまま使用することで、フルスクラッチで開発する必要がなくなり、効率的なサービス構築が可能です。また、クラスやモジュールを再利用することで、本来持つ機能を継承した上で開発を進めていくことができます。
概念をとても簡単に説明すれば、フレームワークは土台部分であり、開発者はその上に肉付けをしていくイメージです。土台から開発する必要がなく工程を削減できます。また、自由度が高いプログラミング言語に、可読性や保守性の観点から一定の制限を加えてくれるのもメリットの一つです。
ライブラリとの違いについて
ライブラリとは、機能をひとつにまとめて再利用できるようにしたシステム群のことです。例えば、写真をアップロードする機能が実装されたクラスやメソッドをインポートして使うというようなイメージです。とても簡単に表現すれば、他人が作った機能をファイルに貼り付けて使うような感じといっても差し支えないでしょう。出来上がっている機能を再利用するため、その部分の実装をする必要がなくなり、効率的に開発を進められます。
ただし、ライブラリとフレームワークは大きく異なるので注意しましょう。フレームワークはあくまで骨組みやルールだけを提供する土台です。一方、ライブラリは実装された機能を提供してくれるシステム群を意味します。ライブラリはあくまでも実装した機能を提供するだけに留められるため、役割に大きな違いがあります。
PHP主要フレームワーク4選
PHPの主要フレームワークは下記の4つです。
- Laravel
- CakePHP
- CodeIginiter
- ZendFramework
それぞれのフレームワークの概要と特徴について解説します。
Laravel
特徴①豊富なコマンド
このフレームワークの特徴はコマンドがたくさんあるということです。デフォルトの段階で60以上のコマンドが用意されており、自由に使用することが可能です。また、コマンドの追加も非常に簡単なのでオリジナルのものを作ることも容易でしょう。
実際に、Laravelでコマンドを作成する際は、LaravelのCommandクラスを継承します。そして、artisanコマンドを使用して新規のコマンドを作成することが可能です。例えば、ExampleCommandクラスを生成するときは、下記のようなコマンドを実行します。
php artisan make:command ExampleCommand
その後に、ExampleCommand.phpファイルが作成されます。また、ファイルの中身は下記の通りです。
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = ‘command:name’;
/**
* The console command description.
*
* @var string
*/
protected $description = ‘Command description’;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
}
}
ちなみに、$signatureは、artisanコマンドの識別子、$descriptionはコマンドの説明です。
このように、Laravelのコマンドを使えば、signatureの実行時の引数としてargumentやoptionメソッドを取得することもできます。
特徴②Eloquent ORM
2つ目の特徴は、Eloquent ORMです。Eloquent ORMはデータ操作を行うためのLaravel特有の機能になります。この機能があることで、データベース操作が容易になります。
通常データベースから情報を読み書きする場合、SQL文を書かなければなりません。しかし、Eloquent ORMを利用すれば、SQL文を使用する必要がなく、少ないコードで情報の取得や保存が可能です。例えば、レコードをすべて取得するとき、SQL文を使用すると下記のようになります。
“SELECT* FROM sample”
一方、Laravelは下記のコードのみで全レコードを取得して変数に代入することが可能です。
$allData = sample::all();
今回の例では、分かりやすさを重視した短いSQL文のため、そこまで利便性が感じられないという方もいるかもしれません。ただ、実際の開発ではSQL文が長くなるとLaravelのほうが記述するコードがかなり少なくなり、開発効率の向上につながります。
特徴③学習コストが低い
3つ目の特徴は、学習コストが低いことです。リリースから10年以上経過しており、インターネット上には参考にできる情報がたくさんあります。また、内容が難解ではなく、コードも比較的短いため、技術メンバーであればすぐに使いこなすことができるでしょう。
CakePHP
特徴①bake機能を利用できること
1つ目の特徴は、bake機能です。bake機能は対話形式でモデルやコントローラー、Viewを自動で生成してくれる機能のことになります。これにより、MVCに関係するファイルを簡単に用意することができるため、開発効率がアップします。
例えば、bakeでテンプレートを作成する場合、下記のようなコマンドを実行します。
bin/cake bake template Users
また、下記のようにモデルやコントローラーだけを作成することも可能です。
bin/cake bake model Users
bin/cake bake controller Users
もちろん、MVCをまとめて作成することもできます。
bin/cake bake all Users
特徴②ORM
ORMを利用できることも特徴のひとつに挙げられます。ORMはSQL文を記述しなくてもデータベース操作ができる機能です。Laravelと同様に、PHPコードだけでデータベースに情報を問い合せられるため、効率的なデータの読み書きを実現することができます。
特徴③簡単に利用できる
簡単に利用できることも特徴のひとつです。外部ライブラリに依存することがなく、必要なパッケージをインストールするだけで使用することができます。使用できるまでサーバーに複数のプログラムを取り込む必要がないので、利用ハードルが低いです。
Codelginiter
特徴①ライブラリが豊富
豊富なライブラリが準備されている点が特徴です。使用したい機能があれば、標準のライブラリから読み込んで機能を実装することができます。そのため、開発効率が良く、スピーディに機能の実現することが可能です。また、拡張性も高く、オリジナルのライブラリを制作することもできます。
特徴②セキュリティが高い
強固なセキュリティがある点も特徴です。CodeIginiterには、CSRF攻撃やXSS攻撃から守ることができる保護機能が搭載されています。Webアプリケーションはさまざまな顧客データなどを扱うため、セキュリティが軟弱である場合、大きな被害を受けることもあるのです。そのため、セキュリティ重視でサイトの構築をしていきたい方には、CodeIginiterが適しています。
特徴③拡張性に優れている
拡張性に優れていることも特徴のひとつに挙げられます。CodeIginiterには、クラスを継承できたり、システムフックを利用できたりするなど、拡張するための機能が備わっています。
例えば、CodeIginiterでクラスを拡張する場合、extendsを使用するケースが一般的です。
class My_Class extends Other_Class{}
また、クラスのコンストラクタを使用する場合、親クラスを呼び出します。
class My_Class extends Other_Class{
public function __construct()
{
parent::__construct();
}
}
もし、機能が不十分なクラス等がある場合、拡張してバージョンアップさせることができるため、保守性も高いです。クラスを継承する際は、Codelginiterのコアシステムクラスを作成します。コアシステムクラスの変更による影響は大部分にまで及ぶため、必ず影響範囲を確認してから変更するのが一般的です。
ZendFramework
特徴①パフォーマンスに優れている
このフレームワークはパフォーマンスに優れています。スピードを重視したメンテナンスが行われていると言われており、速さを重視する方におすすめのフレームワークです。実際に、最新のバージョンは昔に比べて4倍まで速くなっており、高パフォーマンスを実現することができます。
特徴②数多くのライブラリと優れた拡張性
豊富なライブラリと高い拡張性が特徴です。ライブラリが充実しており、機能の実装を簡単に行うことができます。また、拡張性に優れているため、標準ライブラリの機能を継承しつつアレンジすることも可能です。例えば、Smartyとの連携が容易に行なえます。また、コントローラーを拡張することもできるため、拡張性を重視するエンジニアに好まれるフレームワークです。
特徴③BSDライセンス
BSDライセンスを採用していることも特徴のひとつです。BSDライセンスは編集したコードを非公開にできるため、商用利用しやすいライセンスです。そのため、企業でも安心して採用することができます。
PHP開発ならWakkaが提供するオフショア・ラボ型開発がおすすめ
今回は、主要PHPフレームワークの概要や特徴について解説しました。人気が高く、ライブラリが豊富なものもあるため、利用することで開発効率が向上します。そのため、PHP開発の際は、ぜひ利用するのがおすすめです。
Wakka Inc.ではお客様の開発の要件定義から、オフショアラボ型開発・海外子会社設立で開発リソース不足を解決まで一気通貫でサポートが可能です。
興味のある方は、まずはお気軽に下記のURLからお問い合わせください。
日系オンラインリサーチ会社のCTOとしてベトナムチームを立ち上げ、Wakka Inc.のテクニカルマネージャーとして参画。現在はベトナム拠点で開発チームの標準化や社内のインフラ管理・ITプロジェクト統括をやっています。モットーは『みんなで頑張りましょう』