API開発に便利なPHPフレームワークということで、Laravel、Phalcon、FuelPHP、Symfony、CakePHPと5つのフレームワークをご紹介してきました。
開発を始めるとき、数あるフレームワークの中からたいていの場合1つのフレームワークを選択することになりますよね。
今回はAPI開発に絞って、選ぶ際の検討材料になりそうなポイントを超主観的に比較してみました。
どのPHPフレームワークを選んでもAPI向けの機能は搭載されています。
そこで、API開発に便利なPHPフレームワークを選ぶときの比較ポイントとして、以下6つの観点から比較しています。
目次
ドキュメントの豊富さと学習のしやすさ
まずはドキュメントの豊富さと学習のしやすさから。
公式・非公式を問わず、検索して得られるドキュメントが多いほうが理解が進み、学習しやすいと思います。
また、公式ドキュメントが整備されているフレームワークは、検索する手間暇が省けるのでポイントが高いと思います。
- Laravel
- CakePHP
- FuelPHP
- Symfony
- Phalcon
Laravelは既にPHPフレームワークでは不動の人気を得ているため、ドキュメントには事欠きません。
公式ドキュメントにも必要なことは載っていますし、少し検索すれば欲しい情報は日本語でも十分手に入るでしょう。
非常に学習しやすいフレームワークだと思います。
CakePHP、FuelPHPは公式ドキュメントがしっかりしていて、しかも日本語。
わからないことはとりあえず公式を見る、で解決することがほとんどです。
CakePHPに関しては検索して得られる情報にバージョン2系の情報が混じることも多いので、その点は注意が必要です。
公式ドキュメントにあるチュートリアルを読んで手を動かしてみると、基本的な部分は理解できるように作られているので、初めて利用する場合は一度読んでみてください。
Symfonyはドキュメントは豊富ですし公式ドキュメントもしっかりしています。
ただ、如何せん英語のみなので、こういったドキュメントを英語で読む習慣がないと辛い部分があるかも知れません。
SymfonyもCakePHP同様、チュートリアルもしっかり作られているので、英語は読めなくてもコードだけでも読み進めていけば、取っ掛かりの部分は理解できるでしょう。
Phalconに関しては、検索してもなかなか情報がないというのが実情です。
ただ、一部だけ日本語化されている公式ドキュメントは整備されているので、英語を勉強も兼ねて読んでみるといいでしょう。
開発環境の作りやすさ
使うフレームワークを決めたら、実際開発を進めていくわけですが、まず最初にするのが環境構築。
最初の1回だけですが、これに時間がかかってしまうのはもったいないので手早く作れる方がいいですね。
- Laravel
- Symfony
- FuelPHP
- CakePHP
- Phalcon
Laravel、Symfonyに関しては、composerコマンド1つで開発環境が揃うため、非常に簡単に開発が始められます。
また、composerが利用するフレームワークやライブラリの依存関係も吸収してくれますから、使用するバージョンに悩む必要もありません。
FuelPHPもgit cloneした後にcomposerという形で、こちらもほとんど手間は変わりません。
CakePHPはPHPのモジュールを追加する必要があるので、若干動作環境を選びます。
場合によっては、モジュールのインストールができず動作しないということも考えられます。
Phalconは性質上開発環境を作るのにサーバーの知識も必要とします。
今まさにプログラミングを勉強している方にとっては、敷居が高いフレームワークと言えます。
開発速度
開発速度は重要なポイント。
早く開発を進めるためにいろいろと犠牲になるところもありますが、その辺りのバランスが良いフレームワークもあります。
- Laravel
- CakePHP
- FuelPHP
- Symfony
- Phalcon
Laravelはコンポーネントを利用してソースを書く量が少なくて済むことが多い印象です。
CakePHPもコントローラーと同名のモデルが呼び出しなしで利用できるなど、フレームワークの機能を活かす開発でコード量が減らせます。
FuelPHPは上の2つのようなフレームワーク独自の機能はあまりないですが、コアクラスがしっかり揃っているため、これらをうまく使えば開発速度も上げていけるでしょう。
Symfonyはコンポーネントの量が多く、機能を覚えるまでに時間が掛かるかも知れませんし、Phalconも独自のコンポーネントを多数持つため、前提知識が必要です。
特にPhalconは実行部分がコンパイルされており、ソースコードもZephirということで内部の動作を追いにくいのも難点です。
チーム開発での使いやすさ
チーム開発においては、分業のしやすさと他人のコードがいかに読みやすいかと言ったところがポイントになります。
コードの読みやすさは人それぞれの力量といった点もありますが、それはチームの事情なのでここでは、フレームワークが用いる規約や開発者にコードを書かせない機能提供の仕方というところに着目しています。
- Symfony
- CakePHP
- Laravel
- FuelPHP
- Phalcon
Symfony、CakePHP、Laravelはコンポーネントをうまく使えば、開発者が書くコード量がぐっと減らせます。
特にSymfonyは比較的大規模な開発で選定される事が多いのは、規約がしっかりしているからではないでしょうか。
コンポーネントが持つ機能の共通認識を利用すれば、可読性が上がりチームでの開発速度を一段階引き上げてくれるでしょう。
逆にFuelPHPやPhalconなど、フレームワークが持つ独自機能に強力なものもありますが、開発者が書くコード量は多めな感じがします。
Phalconに関しては開発環境の構築もネックになっていて、チーム全体で同一の環境を作り、うまく配布できる仕組みに一捻りする必要があります。
とはいえ、PHPにはcomposerも整備されていて、今回紹介しきれなかったものも含めて、どのフレームワークもcomposerを利用することが前提になっています。
足りない機能はcomposerから最適なライブラリを導入すれば、たいていの溝は埋められるでしょう。
実行速度
作ってみたものの、負荷試験で思ったように速度が出ない。
こういったケースはよく聞きますし、フレームワークだけの問題ではないことも実際多いので、目安程度と思っていただければ。
- Phalcon
- FuelPHP
- CakePHP
- Symfony
- Laravel
実行速度はこの中ではPhalconが圧倒的ですね。
そもそも純粋なPHPではないのでズルい気もしますが、それがPhalconの特長でもあるのでPhalconの戦略勝ちでしょうか。
FuelPHPは内部の構造がシンプルなので、通常の場合は速度が問題になることはないと思います。
実際、かなり高負荷な環境でも利用されているケースを見かけたこともありますし、速度面では十分な性能を持っていると考えていいでしょう。
CakePHPは遅いと言われていましたが、最近のバージョンでは速度が上がってきているように思います。
SymfonyとLaravelはコンポーネントで疎結合にした分のオーバーヘッドは気になるところです。
Laravelに関しては、フレームワークが自動的に読み込んでいるけれど使っていない機能が多いケースもあるので、そういった場合はLaravelをベースに作られている、Lumenというマイクロフレームワークを使ってみるのも検討してみてください。
運用しやすさ
- Symfony
- FuelPHP
- CakePHP
- Laravel
- Phalcon
Phalcon以外はフレームワーク自体がPHPなので、メンテナンスもしやすくフレームワークのバージョンアップも通常のコードの変更と変わりありません。
PhalconはWebサーバーにモジュールを組み込んでいる点で、バージョンアップに手間が掛かります。
通常のコード変更を伴うメンテナンスは他のフレームワークと同様なので、その点はご心配なく。
dockerなどでWebサーバーをコンテナ化すれば、事前に作成・検証した環境を本番へ持っていくことができるので、意外にもKubernetesなどと相性が良い(というよりメンテナンス性の不便さを解消してくれる)のはPhalconかも知れません。
こういう仕組みをうまく作れるインフラエンジニアが在籍しているチームであれば、Phalconはかなり使えるフレームワークでしょう。
まとめ – どのフレームワークがAPI向きか –
今回は私が過去に紹介したフレームワークを「ドキュメントの豊富さと学習のしやすさ」、「開発環境の作り方」、「開発速度」、「チーム開発での使いやすさ」、「実行速度」、「運用しやすさ」といった観点から、かなり主観的なランキングでフレームワークを順位付けしました。
ランキングをまとめると以下のようになりました。
ドキュメントと学習のしやすさ | 開発環境の作りやすさ | 開発速度 | |
---|---|---|---|
チーム開発での使いやすさ | 実行速度 | 運用しやすさ | |
1位 | Laravel | Laravel | Laravel |
2位 | CakePHP | Symfony | CakePHP |
3位 | FuelPHP | FuelPHP | FuelPHP |
4位 | Symfony | CakePHP | Symfony |
5位 | Phalcon | Phalcon | Phalcon |
1位 | Symfony | Phalcon | Symfony |
2位 | CakePHP | FuelPHP | FuelPHP |
3位 | Laravel | CakePHP | CakePHP |
4位 | FuelPHP | Symfony | Laravel |
5位 | Phalcon | Laravel | Phalcon |
開発においては、手に馴染んだ道具(フレームワーク)が一番という意見もありますし、その時々の流行でPHPフレームワークを選定することもあるでしょう。
どのPHPフレームワークもAPI向けの機能は搭載していますし、Laravel、Symfony、CakePHPあたりはバランスよくどんなシステムにでも使えそうです。
極端に実行速度を求めるようなシステム要件の場合は、Phalconも選択肢に入りそうですね。
極端に開発がしづらいフレームワークというのもそうありませんので、軽く触って手応えを感じてみて、いけそうかダメかいろいろ試してみてください。
すべてを試すのにも時間がかかりますので、この記事がAPI開発を行う上でどのPHPフレームワークを試そうか判断する材料になれば幸いです。