Laravel5をはじめて触った感想

Laravelを最初に学習するにあたって、ララ帳というサイトのはじめての LARAVEL 5.1というチュートリアルを通してサンプル・アプリケーションを開発してみました。チュートリアルは気持よく進められるようになっており説明もとてもわかり易かったのでオススメです。

以下、ほとんど作業メモですが、備忘録として残しておきたいと思います。

開発環境のセットアップ

開発環境はIntelliJ IDEA15を利用しています。以下の設定変更を行いました。

Code Style

IntelliJ IDEA > Preferences… > Editor > Code Style > PHP > Set from… > Predefined Style > PSR1/PSR2

Laravelは5.1からPSR2準拠になっているようです。

Code Sniffer

適用の仕方は下記の記事が参考になります。

PhpStormにWordPress-Coding-StandardsのCode Snifferを設定する。Mac編

Inspectionsを設定します。最初Languages > PHP > Code Snifferのほうを見てて全然設定するところがなくてハマりましたがLanguagesのほうはphpcs本体のみの設定ですね。

IntelliJ IDEA > Preferences… > Editor > Inspections > PHP Code Sniffer validation > Coding standard > PSR2

ここでもPSR2にしてあげます。

Laravel Plugin

IntelliJ IDEA/PhpStormのプラグインでLaravel Pluginがあります。こちらを導入しました。次の記事がとても参考になります。

PhpStormでLaravel5快適開発 おさらい

laravel-ide-helper

上記の記事で紹介されていますがなくてはならないパッケージです。ComposerでインストールしてLaravelに設定する必要があります。

詳しい設定の仕方や使い方はGitHubのREADMEに載っています。まだ使い切れてないですが便利そうです。

mailcatcherのセットアップ

mailcatcherはruby製のSMTPサーバー兼メーラーです。開発時のメールの送信の確認に使えます。

MAILCATCHERを使ったメール送信テスト

自分の場合はVagrantで動かしていたのでmailcatcherの起動時にオプションを付けてあげないとブラウザからmailcatcherの画面が開けませんでした。

$ mailcatcher --http-ip=0.0.0.0

Laravel5.2との差分

5.1向けのチュートリアルを5.2でもあまり違和感なく進めていく事ができたんですが、下記の点で違いがありました。

php artisan make:controlerのオプションの違い

5.1のチュートリアルでは–plainをつけるようになっていましたが5.2ではデフォルトが–plainの状態のためオプションなしになります。逆に5.1のデフォルトのRESTFulな形で生成したい場合は–resourceオプションが必要になります。

認証まわり

5.1のチュートリアルだと自分で画面を作ったり設定を変えたりしてましたが、5.2の場合はphp artisan make:authを実行することで必要なファイルの生成や設定が行われます。5.1の手順だとうまく動きませんでした。

触ってみた感想

これまでそんなに多くのフレームワークを使ったことがあるわけではないので詳しいことはあまり分かりませんが、チュートリアルを触って感じたことをまとめておきます。

PHPでモダンな開発ができる楽しさ

最近はそうでもないのかもしれませんが、CakePHP2を使っていた時はPHPってarray(..)がなにかと冗長だったりforeach(..)を必要以上に多用するイメージが強くて少し残念というか、他の言語に比べるとダサいイメージがありました。Laravel使うとそういうPHPの残念な感じがなくて気持ちよく開発できる気がしました。これは新しいPHPの記法を積極的に取り入れてるのもありますし作りもPSR4に準拠しているというのもあると思います。触っていると新しいPHPを再学習している気持ちになり知的好奇心がくすぐられる感じがあります。取り入れられているプログラミングモデルも今っぽいですし。

ちょうど良い居心地の良さ

チュートリアルを流しただけなのでまだ何とも言えないのですが、CakePHPに比較して覚えるものが少なくて学習コストが低いと思いました。それなのに開発生産性は高く強力な機能があります。なんというかオレオレなルールが少なくて、けど現代的なプログラミングで良しとされているもの(たとえばMutator/AccesorはC#ぽい)を無理なく持ち込んでくるバランス感が良いなと思います。またMVCで開発する時のベスプラ的なノウハウも取り込まれていて、たとえばscopeのような条件文の切り出しと再利用は個人的にCakePHPでもやっていましたがLaravelの場合フレームワークで標準的にサポートしてくれるのでこれがかなり心地よく書けます。こういったLaravel使ってると無理なく自然とお作法が良いプログラムが書けるというところはとても好印象に感じているところです。

これから調べたいこと

チュートリアルを流しただけなのでまだ理解できたのは一部だけだと思います。今後特に気になってるのは下記です。

Broadcasting Events

WebSocketsのサポートです。中身がまだ分かってないのですが、Socket.ioがフレームワークレベルで手順が確立されていて使えるというのは個人的にはとても嬉しいです。

Laravel 5.1- Broadcasting Events using Redis Driver, Socket.io

RESTful API

Web APIをどう作るかチュートリアルでは分からなかったので調べたいです。特に画面とAPI呼び出しによるJSONとなるべく処理を再利用できるように作りたいですし、その場合Laravelだと自由度も高いので気持よく出来そうだなと感じています。

DIまわり

DIはLaravelの特徴のひとつだと思うので早めに抑えておきたいところです。