2015年、Laravelに起こったことのまとめ

投稿日:2015年12月01日
カテゴリ: Laravel , プログラミング


こんばんは、フミリアです。

2015年も最後の月、12月に突入しましたね。 この記事は、Qiitaの年忘れ企画であるアドベントカレンダーから「Laravel 5 Advent Calender 2015」のオープニングとしてお送りいたします。

2015年 Laravel

2011年にPHP界に生まれ、またたく間に世界的な人気を獲得し、ツールとしての抽象レベルの高さと使いやすさを両立させたWebフレームワークのLaravel。

Laravel 4ではRouting+MVCパターンを中心に、Ruby on Railsにインスパイアされたディレクトリ構造やマイグレーション機能、ORマッパーであるActiveレコードをPHP言語に馴染むように組み立てられたEloquentモデルなどが搭載されたほか、PHP 5.4の機能を使い倒し新時代のPHPプログラムの形を見せてくれました。

2015年、Laravelのバージョン5がリリースされました。 Laravel 5では、何が変わったのでしょうか? リリース順に見ていきましょう。

Laravel 5.0 リリース

2014年6月のLaravel 4.2リリース以来、4.3-devとして開発されてきたLaravelですが、9月頃に5.0−devに変更されました。

ここからドラスティックとも言える変更が入り、2015年2月にLaravel 5.0がリリースされました。

一番大きな変更は、何といってもアプリケーションディレクトリへのPHP名前空間の導入とディレクトリ構造の変更でしょう。

各ディレクトリの役割はさほど変更はなかったのですが、構造が再構成されました。 app ディレクトリに名前空間 App が割り当てられ(php artisan app:name コマンドで変更可能)、app\controllers ディレクトリ が app\Http\Controllers になったり、app\models ディレクトリがなくなったり、app\configapp\storage などのPHPクラス構造と関係のないディレクトリはルート直下に移動されました。

他にもアプリケーション環境ごとにconfigを切り替える仕組みが削除されたり、PHP名前空間の導入により使いにくくなったファサードの代わりに、view()response() などのファサード相当のヘルパ関数が導入されました。

新しい機能としては、メソッドインジェクションやコマンドスケジューラー、クラウドストレージのサポート(FlySystem)、O-Auth認証(Socialite)などがあり、高機能なアプリケーションがより書きやすくなりました。

JavaScriptフレームワークやタスクランナーの活用など最近のWebアプリケーション開発のトレンドも踏まえ、Nodeの設定ファイル package.json もひな形に組み込まれました。

ユニットテストでは、PHPUnitに加えPHPSpecの設定ファイルもひな形に組み込まれています。 どちらでも好きな方を選べますし、Behatなど他のツールももちろん使えます。

このようにLaravel 5は、Laravel 4の機能を踏襲しつつ、一部の機能は削減させつつもより機能を充実させる方向で進化を遂げました。

Lumenの登場

2015年4月、突如「Lumen(ルーメン)」というLaravelの兄弟のようなプロジェクトが発表されました。

『Laravelの驚くほど早いマイクロフレームワーク』というキャッチフレーズで語られるLumenは、フルスタックのWebフレームワークSymfonyに対するSilexの位置付けと同じで、同じ作者がフレームワークの最小限の機能のみのバージョンをリリースした形です。

Taylorは「Laravelは遅い」という以前からある批判に対する一つの解を提示したものと思われます。

Lumenの持つ最小機能はルーティングとサービスコンテナのみです。 オプションで、すべてのLaravelコンポーネントを扱うこともできます。 コンフィグやファサードやエロクァントモデルなどは、boostrap/app.php で必要な機能を有効にするようになっています。

ファーストリリース以降、機能追加はあまりされていないようです。

Laravel 5.1 リリース

2015年6月に、Laravel 5.1がリリースされました。

このバージョンから、PHPバージョンは 5.5.9 以降となりました。(Lumen 5.1も同様です。)

Symfony 2.7 が 2013年12月リリースの2.4以来のLTS(Long Time Support/長期サポート)となったことに合わせ、Symfony 2.7を採用した Laravel 5.1 もLTSが謳われました。バグ修正2年間、セキュリティ対応3年間を保証するとのことです。

5.0以前は暗号化にPHP拡張のmcryptを用いていましたが、5.1からはopensslを使用する実装に置き換えられました。

コーディングスタイルにPSR-2を採用したことも大きな変更です。 ソースコード中にハードタブではなく4スペースを使用するようになり、PSR準拠が進みました。

そして、WebSocketを用いたイベントブロードキャスト機能が追加されました。 これを使うと、サーバー(PHP)からイベントを送信し、ブラウザ(JavaScript)上で受け取ることができます。 サーバー側はRedisやPusherを利用することができ、ブラウザ側はSOCKET.IOライブラリが使えます。

日本語の情報としては、Laravel 5.1がリリースされました | ララ帳が読みやすいです。

アクセスコントロール

Laravel 5.1.11から、ACL(Access Control List)システムが搭載されました。

ACLは、ルーティングごと(URLごと)にユーザーのアクセス制御が設定できる機能です。 今まではConfideやSentryなどの認証パッケージを使うことができましたが、Laravel本体に組み込まれました。

新しく追加されたGateファサードを利用し、制限を定義していきます。 routes.php、AuthServiceProviderクラスやPolicyクラスに記述します。

Bladeテンプレートエンジンには、@can@endcan ディレクティブも追加されました。

Laravel Spark

Laravelのひな形 laravel/laravel の中にはビューが入っていません。

Laravel 5.0の頃にbootstrapベースの認証ページが入っていた頃がありましたが、今は削除されています。

その代わりの存在として、Laravel 5 + Vue.jsの新しいLaravelプロジェクトのひな形の実装が進められています。 それがLaravel Sparkです。 課金のあるビジネスサービスのLaravelプロジェクトのひな形として開発されています。 Vue.jsは、ビューモデル中心のシンプルなバインディング機能を持つJavaScriptフレームワークです。

Laravel Sparkは2015年8月のLaraconで発表がされました。 まだα版なので、気になる方は人柱の気持ちで試してみましょう。

まとめ

以上、Laravelの2015年の重要トピックを見てきました。

Laravelプロダクトをピックアップしてご紹介してきましたが、デプロイ支援のWebサービス envoyer がリリースされていたり、日本では初の日本語書籍「Laravelエキスパート養成読本(技術評論社)」が発売されました。

12月にはPHP 7、そしてLaravel 5.2のリリースが予定されています。

今後の展開が楽しみですね!


投稿日:2015年12月01日
カテゴリ: Laravel , プログラミング