Laravel4とSymfony2のクールで熱い関係

英米で人気急上昇中のPHPフレームワークLaravelの次期バージョンLaravel4の開発版が公開されているので、これをUbuntu 12.10のローカル環境で試してみることにしました。

先ずは、githbuからLaravel4の開発版をダウンロード。これを展開します。Laravel4では、パッケージ管理に、composerが採用されることになっているので、curlコマンドを使って、composerをダウンロードします。

sudo apt-get install curl
curl -s https://getcomposer.org/installer | php

composer.pharというファイルがダウンロードされるので、次のコマンドでLaravel4を最新の状態にアップデートします。

sudo apt-get install git
php composer.phar update

composer.pharの名前をcomposerに変更し、/usr/binや/usr/local/binなど、コマンドパスが通っているフォルダに移動させれば、以後、どこからでもcomposerコマンドを使えるようになります。

composer update
 

なお、すでにcomposerがインストールされている環境下で、上記コマンドを実施したとき、composerのバージョンが古いという警告が出る場合があります。そのときは次のコマンドで、composer自体をアップデートしておきます。

sudo composer self-update
 

スポンサーリンク

Symfony2コンポーネントとキャメル記法など

アップデートが始まると、http-kernelやroutingなど、お馴染みのsymfonyコンポーネントが次々とインストールされて行くのが分かります。

Laravel4Update

Laravel4では、クラス名やメソッド名が、キャメル記法に変更されました。クラス名やメソッド名以外にも、記述法のいくつかが、Symfonyライクなものに変更されています。例えばルーティングの記述などは、次のようになります。

Laravel3の場合

Route::get('post/(:num)', function($id)
{

});

Laravel4の場合

Route::get('post/{id}', function($id)
{

});

さらに、フォルダ構成に目を向けると、ここでもSymfonyライクな変更が目立ちます。例えば、applicationフォルダの名称がappフォルダに変更され、bundlesフォルダとstorageフォルダが消えています。そして、vendorフォルダが追加され、laravelのコアフォルダは、このvendorフォルダ内に移動させられているという具合です。

盛り上がるLaravelコミュニティ

このように、Laravel4はSymfonyコンポーネントへの依存度が高まることが分かりましたが、このこと自体は、Laravelユーザーの間で概ね歓迎されているようです。否定的な意見はあまり見かけません。むしろ、Symfonyコンポーネントを利用することにより、Laravelが堅牢でセキュアな本格的なフレームワークへと脱皮できるのではないかという期待が高まっているようにも見えます。

実際、CodeIgniterベースのCMSのPyroCMSは昨年、Laravel4ベースへの移行を表明しています。その理由を、開発者のPhil Sturgeon自らがユニークなスライドで説明しています。

FrameworkEvolution

Symfonyサイドから見たLaravel4

このように、Laravel4への期待が日に日に高まっているLaravelコミュニティですが、Symfonyサイドでは、このことはほとんど話題になっていません。

これは、LaravelがまだまだマイナーなPHPフレームワークに過ぎないということもあるでしょうし、今Laravel4が行っていることは、Fabien自らが、Symfonyコンポーネントの一部を利用して生み出したマイクロフレームワークSilexですでに実証済みという認識もあるのかもしれません。

Symfony2は、もはや単純なMVCフレームワークとは呼びがたい存在になっています。20以上の独立したライブラリーの集合体となっていて、これらは疎密結合のコンポーネントであり、これらを単独又は複数の組み合わせによる利用が可能なのです。

こうしたSymfony2のポテンシャルの高さを証明するように、昨年、PHPベースのCMSであるDrupalやeZ Publishが、次期バージョンでSymfony2のコンポーネントの採用することを表明しています。

Symfonyサイドから見ると、Laravel4はこうした一連の流れの延長線上にあるのでしょうが、このままLaravel4の開発が順調に進み、人気が英米に止まらず世界的に広がっていくならば、近い将来、Laravelは、Symfonyの哲学を具現化したということになるのかもしれません。

PSR-1準拠という視点

ここまでは、Symfonyコンポーネントへの依存度を高めるLaravel4という視点で考えてみましたが、最後に、PSR-0/PSR-1準拠という視点もあるということを付け加えておきます。

PSR-0やPSR-1というのは、PHPの標準コーディング規約を話し合うための任意団体PHP-FIGが定めたPHPのコーディング規約のひとつです。

PHP-FIGには、PHPの3大フレームワークと呼ばれているCakePHP、Symfony、Zend Frameworkや、ライブラリーのPEAR、人気CMSのDrupal、Joomlaなど、幅広い分野のメンバーが参加しています。

Laravel4は、このPHP-FIGが定めるコーディング規約のPSR-0/PSR-1への準拠を目指しており、そのための手段として、Symfonyコンポーネントへの依存度を高めたという説もあるようです。

まあ、PSR-0/PSR-1に準拠すると具体的にどういうメリットがあるかは、現時点では計りかねますが、とにかく、理由はどうあれ、ユーザーにとっては、Laravel4が本格的な開発に利用できるフレームワークに進化すること自体は、歓迎すべきでしょう。

タイトルとURLをコピーしました