エコシステム周りにフォーカスしながら、考えてみます。
- FWの持つ機能的な強みの差異は、ほぼない。
- それぞれの言語背景・特徴が、そのままFWの特徴として語られる。
かと思ってます。
歴史的経緯
この手のWebフレームワークにて生産性が劇的に高いものとして、Ruby on Rails が元祖です。
ゲームチェンジャーの1つと言われており、アプリケーションの構築速度を破壊的なまでに短くしました。
そして、RailsにならってLaravelやDjangoは作られています。
Laravel・Djangoにおいてもプロダクトとしてリリース可能な完成度のレベルをだいぶ前に越しています。
そのため、技術的にXXのFWでないとできない、は、ほぼないと思っています。(きちんと機能ごとに表を作って比較したわけではないですし、日々それぞれ成長していくので、あまりその比較も意味がないかと思いますので、肌感としての認識です)
では、何が強みとなるか?その派生として、これらが選定される要因はなにか?
自分の今までの経験上、FWレイヤーでの話ではなくて、その言語のエコシステム・ライブラリ・歴史的背景などが、選定される起因になりやすいです。
Python/Django
Python自体が、DL/MLやOCRやスクレイピングなどに強いライブラリやFWがあります。
そのため、あなたが今から作るWebアプリケーションにて将来的に「必ず」DL/ML またはOCRなどの機能が必要な場合は、Pythonを選んでおくとメリットがあります。これらの機能を実装する際に別言語・別環境を用意・使う必要がないからです。
PHP/Laravel
PHPはWeb界隈で利用されてきた歴史が長いです。そのため、PHPを経験してきたPHPer、つまりPHPエンジニアの数も多いです。つまり、経験者の採用が行いやすいです。結果として、需要供給の関係上、経験者が多い分、エンジニア単価も他の2つの言語に比べて低い傾向をよく見受けられます。
また、Rails以上に、LaravelはオールインワンなFWです。例えば、ページネーションなどの機能もライブラリを導入せずにFWだけで完結します。これにより、エンジニアによるライブラリ選定を大きく誤る可能性を下げてくれます。
Ruby on Rails
この手のWAFの元祖です。Ruby自体がMatzによって生み出されているため日本語での有用なナレッジがたくさんあります。
Ruby on Rails で発生したエラー文をそのままググれば、かなりの確度でネイティブ言語である日本で書かれた記事で、「問題の原因・対応方法・事象背景の説明」などの情報にノータイムでアクセスできるかと思います。
また、日本の各種スクールで題材とされているケースが多いです。そのため、「スクール上がり」「駆け出しエンジニア」と言われる方々の多くはRuby on Rails からキャリアを初めています。駆け出しレベルのエンジニアの供給は今でも行われてい高いですので、そのレイヤーのエンジニアを採用したいと考えている場合は有用です。
終わりに
基本的にOSSなので、お互いパクり合って成長しています。なので、FWとしての機能的な差異はほとんどなくなっていると思っています。
なので、
- エコシステム依存のもの
- 根本的な、言語・FWのアーキテクチャ
あたりが差異として出て、それらがFWの「強み」となるのかな、と思います。