2013年において注目すべき PHP フレームワークは Laravel

4月22日追記。細かい表現、データの追記、リンクを修正しました。Laravel の作者による Laravel 4 とSymfony 2 の比較はこちらの記事をご覧ください。

2013年においてもっとも注目すべき PHP フレームワークとして Laravel を挙げる。

執筆時点で Laravel の知識はほとんどないが、新しいプロジェクトでありながら、英語圏においてさまざまなチュートリアルが書かれおり、熱烈なファンを獲得したと見られる。ほかの PHP フレームワークの開発プロジェクトが抱えている将来の課題を考慮すると、Laravel を学ぶ価値はあると考えられる。

4月21日の時点で GitHub のスターの数は3971であり、2000年代後半からプロジェクトが存在していた CakePHP(3741) および Zend Framwork 2 (3905)を超え、PHP フレームワークとして Symfony(6477)、CodeIgniter(5540) の次の第3位になった。

Laravel はスタティックメソッドによる手続き型スタイルを採用しており、CodeIgniter と CakePHP が同じスタイルを採用していることから、これらのプロジェクトが競合すると考えられる。これらのプロジェクトが抱える問題を挙げる。

第2位の CodeIgniter はライセンス対応をめぐり、コミュニティの対立が生まれ、ほかのフレームワークにユーザーが流出している。

CodeIgniter はバージョン 3.0 において GPL と互換性のない Open Software License (“OSL”) を採用したため、コミュニティの反発を買っている。

さまざまな CMS やライブラリが GPL を採用しているので、ライセンスの衝突を配慮しなければならなくなる。

ちなみに PHP の歴史を振り返ると、PHP ライセンスが GPL と互換性がないために、mbstring 拡張モジュールが利用する mbfl のライセンスを GPL から LGPL に変更したり、GPL を採用するオープンソース版の MySQL がオープンソースの例外条項で対応した歴史がある。

一部のユーザーは FuelPHP に移行した。FuelPHP のスターの数は1240である。今のところ、CodeIgniter や Laravel には及ばない。日本国内においても FuelPHP のユーザーグループが形成され、書籍も出版されている。

英語圏の記事を読むと、CodeIgniter と Laravel を比較したり、移行を勧める記事が書かれており、CodeIgniter から Laravel にユーザーが流れる動きが進んでいることが見られる。

スターの数が第5位の CakePHP に関して、次世代バージョンの CakePHP 3 の見通しが不透明になっている。PHP 5.3 対応に関して空白地帯が生まれているのではないかと私は考えている。

2012年6月の記事によれば、CakePHP 3 は PHP 5.4 以降を対象としているが、名前空間とクロージャや ActiveRecord の実装に必要な遅延静的束縛が導入された PHP 5.3 と比べて移行しなければならない必然性が乏しい。

また PHP 5.4 の普及はこれからである。PHP 5.4 は2012年にリリースされ、まだ1年しか経っていないので、w3techs の統計によれば PHP のバージョン全体において 3.7% のシェアしか持っていない。ちなみに PHP 5.4 のシェアが 48.6%、PHP 5.3 のシェアは 44.8% である。

PHP 5.4 で導入されたトレイトとクロージャのバインディング(実験段階)の活用事例としてマイクロフレームワークの Silex を挙げることができるが、スターの数は1561で、一定の人気はあると見られるが、単独で書籍が出版されるほどのシェアはない。ちなみにほかにマイクロフレームワークとしては Slim を挙げることができる。こちらのスターの数は 2297である。

以前、CakePHP 3 のプロトタイプとして PHP 5.3 以降を対象として Lithium が開発されたものの、受け入れられず、別のプロジェクトとして立ち上げられることになった。しかし、 Lithium のスターの数は761であり、自分でカスタマイズする作業が多い Silex よりもユーザー数が少ない。

Laravel と競合関係にある CodeIgniter および FuelPHP、CakePHP の課題は以上である。

次に Laravel の将来の開発について述べる。

Laravel の次世代のバージョンである Laravel 4 は Symfony 2 のコンポーネントを採用する。

Symfony 2 のコンポーネントを採用する利点は自前だけで開発するよりも負担を減らすことができる。Drupal 8 の採用過程に見られたように、Symfony 2 のコンポーネントを採用することで Symfony 2 のコア開発者やユーザーからの支援を期待できる。

Laravel の作者の utotwel 氏は Symfony 2 と Laravel 4 の関係を Linux ディストリビューションの Debian と Ubuntu の関係に例えた。コメントの翻訳はこちらの記事を参照。

Symfony 2 と Laravel 4 は対象となるユーザー層が異なるので、競合関係は見られない。Silex のほうがある程度の競合関係が存在する可能性はあるが、手続き型スタイルのユーザーから見て、クロージャによるコントローラの記述は抵抗感があること、コア機能に ORM を採用していないので、ユーザー層はそれほどかぶらないと見られる。

まとめ。

Laravel は PHP 5.3 を対象とする新しいプロジェクトである。ユーザー数が急増しており、GitHub の統計では Symfony、CodeIgniter に次ぐスターの数を獲得している。

急増している理由に関して今後の調査が必要であるが、PHP 5.3 の対応に関して、既存のフレームワークの空白地帯を埋めている可能性が高い、

競合関係と考えられる CodeIgniter は不適切なライセンスの選択でユーザーを失い、CakePHP の場合、次世代バージョンの CakePHP 3 が対象とする PHP のバージョンが不適切であり、どちらも将来の見通しに問題を抱えている。CodeIgniter からユーザーが流入した FuelPHP、CakePHP から分裂した Lithium は Laravel と比べるほどのユーザーを獲得していない。FuelPHP と Lithium は両方とも PHP 5.3 以降を対象としている。

Laravel 4 は Symfony 2 のコンポーネントを採用する。このことによって、開発の負担を減らすだけでなく、Drupal 8 の採用事例のように Symfony 2 の開発者やユーザーからの支援を得たり、新たなユーザー獲得を期待できる。Symfony 2 のコミュニティから見れば、これまで対象外であったユーザー層が Symfony 2 のユーザーになる可能性が増えるので、双方のコミュニティはウィンウィンの関係にある。