これまで僕が業務で触ったことあるフレームワーク(と言語)は
- Laravel (PHP)
- Slim Framework (PHP)
- Django (Python)
- Gin (Go言語)
で、どれも1年以上は保守しています。
長年業務で使ってきたこれらのフレームワークについて、実際使ってみてどうだったのか、どのようなプロダクトに向いているのかまとめます。
Laravel (PHP)
Lumen も触ったし、下に書いてあるフレームワークも触ったし、いろいろな言語やフレームワークを触ったけど、一番無難なフレームワークはこれ。
DB接続、SQLのクエリビルダ、Redisなどのキャッシュ、ログ出力、DI、DBマイグレーションなど、必要なものはだいたい揃っています。
DIが特に優秀で、何も考えずにDIが実装できます。
また、Web開発において考えたくない部分だけをフレームワークがやってくれるので、非常に便利です。余分な機能が少なく、ドキュメントも整っているので、学習コストが低いのも魅力です。
PHP自体も学習コストが低い言語なので、その点も良いです。
デメリットは、後述のGoなどと比べて遅いこと。PHPが若干遅めなのと、Laravelも重めではあるので、高いパフォーマンスを求めることはできません。
全体的に簡単で扱いやすいフレームワークなので、一番オススメできるフレームワークです。
Slim Framework (PHP)
基本的には Laravel を使うのがいいです。
クエリビルダ等が不要で、ルーティングだけあれば良い、かつそこそこパフォーマンスほしい場合は採用するとよいです。
Django (Python)
Python が最近人気言語となってきおり、それに伴い Django も人気のフレームワークとなっています。
課題としてはパフォーマンスで、PHPと比べても遅いので、かなり課題になると思います。
機能はLaravelよりも豊富ですが、その分学習コストは高いです。
Django REST framework という、REST API を簡単に実装できるフレームワークがあり、これが優秀です。
REST framework に従って REST API を実装するのであれば、かなり優秀かなと思いますが、凝ったことをやろうとすると破綻するので、そこが難しい所です。
Python を使いたい場合はおすすめですが、言語が何でも良い場合で、Web開発の場合は、Laravel のほうがおすすめかなと思います。
Gin (Go言語)
パフォーマンスを求めるなら非常に良いフレームワークです。
PHP と比べて5倍〜10倍くらいのパフォーマンス(request/secなど)が出るでしょう。
フレームワークとしては非常にシンプルで、機能も少ないです。ほぼルーティングの機能しかないです。
言語としても PHP のように成熟したものでもなければ、 Web 特化でもないので、 Web サービスを作る時には若干扱いづらいところがあります。DIフレームワークなどはまだ微妙かなと感じます。
Go言語自体の言語仕様も複雑なので、学習コストも高めです。