Laravel の作者による Laravel 4 と Symfony 2 の違いの説明

reddit において Laravel 4 と Symfony 2 の比較に関して Laraverl の作者である Taylor Otwell 氏(@taylorotwell)氏によるコメントが Twitter で注目を集めたので、翻訳しました。今後の PHP フレームワークの選択の判断材料に役立てればさいわいです。 「2013年において注目すべき PHP フレームワークは Laravel」の記事で書いたように、Laraverl は後発のプロジェクトでありながら、トップクラスの人気を得るまでに至りました。

Symfony のエコシステムの繁栄のなかにいることが Laravel コミュニティーにとっては最善の利益と考える。Laravel 4 は6、7の Symfony コンポーネントを採用する。アーキテクチャに関して、Silex とよく似ている。
Laravel 4 は Silex で使われている「サービスプロバイダー」を採用する。サービスプロバイダーはアプリケーションに機能を追加するクラスを指す。通常は、サービスをアプリケーションを IoC コンテナーにバインドすることでそれを実現する。繰り返しになるが、Silex のように、アプリケーションは IoC コンテナーである。唯一の違いは Silex が Pimple を使うのに対して、Laravel はスコープ解決にもとづいた リフレクションを実行できる強力なコンテナーを使う。サービスプロバイダーのコンセプトは本当にクールな機能であると考える。
「感触」(feel)に関して、Laraverl はより簡潔であり、より多くのシンタックスシュガーを提供する。Laravel はそのまま使えることにこだわりをもつ。memcached と Redis のためのキャッシュとセッションドライバーを搭載する。Beanstalkd、SQS、IronMQ のドライバーを一緒に (Rails 4 と似た) Queue API を提供する。「Eloquent」という名前の ActiveRecord スタイルの ORM を提供する。プラットフォーム依存しないマイグレーションシステムもついてくる。著者の観点からすると、Symfony の開発はそのまま使えることにこだわらないように心がけており (Symfony tries to have very few opinions out of the box)、そのことがそれぞれのコンポーネントが広範囲のプロジェクトにまたがって利用できることに役立っている。
基本的に、Laravel 4 のコードを書くとき、Laraverl の独自性に焦点を合わせることを心がけている。HTTP リクエストの解析は Laravel 独自が取り組むことではないので、HttpFoundation を選びます。URI をルートにマッチングさせることも同じです。Symfony にはすばらしい Console コンポーネントがあるので、これは明らかな選択肢であった。これによって、ORM、テンプレートエンジン、クリーンな構文など、Laravel の独自性に焦点を合わせるための多くの時間が得られた。
議論のなかで挙げられた Debian / Ubuntu の関係との比較は多少は当てはまると信じる。Symfony もしくは Laravel の利用はどのプロジェクトでもうまくいくだろう。双方とも人気のあるフレームワークであり続けるだろう。どちらを選ぶかは好みの問題であり、誰かが指摘したように、それぞれのフレームワークの観点から組み合わせることができる。
Composer チームのすばらしい仕事のおかげで、Symfony のプロジェクトで Laravel の ORM を使うことができるし、Laravel のプロジェクトで Symfony の Form/Validation を使うことができる。Laravel と Symfony の両方とも PHP のコミュニティーによい貢献をしている。Symfony はおどろくべき仕事をこなし、私たちにすばらしくテストされたコンポーネントを提供し、Laravel によって、多くの人が PHP による開発を楽しめるようになったと見られる。PHP のコミュニティーはほんとうにすばらしいひとときをすごしている。