日本人に優しいLaravel

みなさん、Laravelしてますか？

Laravelはここ1年で急激な台頭をみせているPHPのフレームワークです。

githubのスター数は1位のSymfonyに続き第2位です。

以下がGoogleトレンドの結果になりますが、Laravelがいかに近年人気急増中であるかがみてとれると思います。

![201012_201312.png](https://qiita-image-store.s3.amazonaws.com/0/13609/2d18c7ab-bcd1-21a2-b749-891a610707e5.png)


そんなLaravelですが、実は日本語の書籍がたくさんあることをご存知でしょうか？

まだ日本語が原著のLaravel本はでていませんが、海外のLaravel本(電子書籍)を翻訳した日本語版ならたくさんあります。

なんと日本人に優しいことでしょう！

今回は、それらLaravel本の中から厳選して2冊ご紹介したいと思います。


## Laravel Testing Decoded

![laravel-testing-decoded-japanese](https://s3.amazonaws.com/titlepages.leanpub.com/laravel-testing-decoded-japanese/large?1374111084)

[Laravel Testing Decoded](https://leanpub.com/laravel-testing-decoded-japanese)はLaravelでmodel,view,controller,その他DB,IoC,APIのテスト等
Laravelで開発を行うときに遭遇するであろうほとんどすべての状況に対して準備から実践をひとつひとつ丁寧に解説してくれる本です。

LaravelにはIlluminate\Foundation\Testing\TestCaseという標準のライブラリがあり、そこにはPHPUnitをよりわかりやすく便利に実行するためのメソッドがたくさん用意されています。

例えば、ブログの投稿情報をすべて取得してviewを返すコントローラのテストならMockeryを使うことでPHPUnitよりも直感的に以下のように書くことができます。

```
public function __construct()
{
    $this->mock = Mockery::mock('Eloquent', 'Entry');
}

public function tearDown()
{
    mockery::close();
}

public function testIndex()
{
    //PHPUnitのデフォルトより直感的で読みやすい
    $this->mock
         ->shouldReceive('all')
         ->once()
         ->andReturn('foo');
    
    $this->app->instance('Entry', $this->mock);
    $this->call('GET', 'entries');
    
    $this->assertViewHas('entries');
}
```

小さなことですが、こうしたヘルパーによって可読性があがるとテストを行うモチベーションも上がります。

ところで、Laravel本を紹介するのにどうして１つ目がテストの本なんだ？と思われるかもしれません。

たしかに私も１つ目ならまずはLaravelの使い方を解説した本とかチュートリアルをまとめた本だとか、
まずはLaravelでアプリ開発をする方法の本を紹介しようと考えていました。

しかし、それでもlaravel Testing Decodedを１番目に紹介したいと思ったのは、この本がLaravelを超えて、PHPでのテスト、しいてはPHPでTDDをする方法について
解説している書籍であるからです。

私が働いている会社ではLaravelを使っているわけではないですが、PHPでのテストについて勉強するためにこの本を読みました。

実際この本に書いてあるコードを引用して紹介できないのが残念ですが、$15.00でこの網羅性は買って損はないなと思います。

- [Laravel Testing Decoded](https://leanpub.com/laravel-testing-decoded-japanese)

## Implementing Laravel

![Implementing Laravel](https://s3.amazonaws.com/titlepages.leanpub.com/implementinglaravel-jpn/large?1381024420)

[Implementing Laravel](https://leanpub.com/implementinglaravel-jpn)は、LaravelのIoCコンテナや依存注入(DI)といった便利な仕組みを具体的にアプリに実装するにはどうしたらよいかということを解説してくれる本です。

Laravelを日本語で勉強する人はまず[こちらのドキュメント](http://laravel4.kore1server.com/)を読んだり、[Laravel4、学習の道](http://kore1server.com/174)に沿って実際に手を動かしてみるという流れになると思います。

このフローを踏めば、たいていのアプリはつくることができるしLaravelの良さもわかるはずです。

私もこの学び方で[ShareMemo](https://github.com/YuheiNakasaka/sharememo)というサービスをつくりました(現在はclose中)。

しかし、このアプリではLaravelのIoCコンテナと依存注入という概念を使用していません。

理由は依存注入がなくてもアプリはつくれるし、むしろ慣れていないうちはこの概念を使わずにつくった方が完成が早いからです。

ただ、「LaravelをもっとLaravelらしく使いたい」「Laravelで大規模なサイトを構築したい」と思うのならIoCコンテナと依存注入という概念を避けて通れません。

そんなときに役に立つのがこのimplementing Laravelという本です。

この本を読めば、依存注入をLaravelでどう解決し、リポジトリーパターンをどう具体的なコードに落とし込むかがわかります。

本書はLaravel初心者には向かないかもしれないですが今後Laravelを実運用で使っていきたいなら読むと得られるものが多いと思います。


## その他(日本語訳あり)

ちなみに私は日本語翻訳されたLaravel本はすべて読んでいるので、その他の本に関しても簡単に紹介できればと思います。

- [Laravel4 Cookbook](https://leanpub.com/laravel4cookbook-jp)

この本は、その他で紹介するべきでないかもしれません。なぜなら、現状日本語訳されているLaravel4本の中で一番実践的で濃いチュートリアルを含んでいるからです。おそらく、Laravel公式ドキュメントを読んだ後、この本をやればLaravelでのアプリ作成に困ることはないかもしれません。個人的にはlaravel4とBackbone/Ember/Angularを使ってリアルタイムチャットを実装する例が大変ためになりました。上記2冊並におすすめです。

- [From Apprentice To Artisan](https://leanpub.com/laravel-jp)

この本はLaravelの開発者であるTayler Otwellが書いた書籍です。それだけです。Implementing Laravelの方が個人的には良いと思います。

- [Laravel4 ドキュメント+](https://leanpub.com/laravel4plus)

Laravel4の公式ドキュメントの日本語訳版です。サイトで無料で日本語版が見られるのでわざわざ買う必要はないかもしれません。私は買いました、5ドルなので寄付も兼ねて。

- [Code Happy](https://leanpub.com/codehappy-jp)

Laravel3の聖典のような本。英語でよいなら著者のBlogを見るとほぼ同じことが書いてあります。

## その他(日本語訳なし 2013/12/01現在)

- [Code Bright ](https://leanpub.com/codebright-jp)

『Code Happy』のLaravel4版です。まだ日本語訳はありませんが、話を聞く限り公式ドキュメント+αくらいな内容なようです。

- [Laravel4でこなすプログラム術　Getting Stuff Done](https://leanpub.com/gsd-laravel-jp)

最後に紹介するこの本は、いま最も日本語訳版が待ち遠しいLaravel本です。500ページを超える鈍器のようなページ数ですが電子書籍なので安心です。これがおそらくLaravel4本の決定版になるのではないでしょうか。リリースは来年らしいのでとりあえずは英語版を購入して我慢です。

## 最後に

冒頭でも書きましたが、Laravel4はまだまだ若いフレームワークです。
しかしこれほどたくさんの書籍が世界中で発表され、各地の言語に翻訳されています。
幸いにも日本では[Kawase Hirohisa](https://twitter.com/hirokws)氏がすごいスピードで日本語訳をされているので英語が苦手な方でも無理なく読むことができます。
日本ではFuelPHPやCakePHPが人気ですが、ここで紹介した書籍を片手にLaravelデビューしてみてはいかがでしょうか？

以上、Laravel Advent Calender １日目の記事でした。