Laravel Valetをつかってみた。


* https://github.com/laravel/valet

以下公式の概要から。

> Valet is a Laravel development environment for Mac minimalists. No Vagrant, No Apache, No Nginx, No /etc/hosts file. You can even share your sites publicly using local tunnels. Yeah, we like it too.

Macユーザ向けの簡易開発環境構築ツールとのことで、vagrantやetc/hostsの書き換え等も必要なく、非常に簡単に利用可能です。
Laravelでは標準でHomesteadというvagrantベースの素晴らしい開発環境も用意してくれていますが、こちらは **Macユーザ限定**の簡易開発環境、といったところでしょう。

**Valetは、Laravelだけでなく、WordpressやSymphonyなどその他のPHPフレームワーク等にも対応しているとのこと。**
（ドライバーを別途入れる必要あり？未検証）

ちなみに *valet*とは **従者**とかそういう意味らしいです。

## インストール

[公式サイト](https://laravel.com/docs/5.2/valet)の手順通り進めます。

**必要なもの**

 * php7.0
 * mariaDB（DBを利用するときのみ）

いずれもhomebrewからインストールします。

 * homebrew update

```
$ brew update
```

 * php70のインストール

```
$ brew install php70
```

**!過去のphpバージョンが邪魔してエラーが出る場合、`unlink`をします**

```
$ brew unlink php php55
$ brew install php70
```

 * ついでにmariadbも入れとく

```
$ brew install mariadb
```

 * composer globalにvaletを入れる

```
$ composer global require laravel/valet
```

※composerにパスが通っていない場合、`~/.composer/vendor/bin`にパスを通しておいてください。


 * valet installを実行


```
$ valet install
```

これでインストールは完了です。


## 実行


### park

parkが実行されたディレクトリ以下は、全てvaletの管理下に置かれるようです。試しにやってみましょう。

```
$ mkdir ~/dev/valet //ディレクトリ名は任意で
$ cd ~/dev/valet
$ valet park
```

このような状態で、laravelの新規アプリケーションを立ち上げてみます。
私はcomposer globalでLaravel installerを入れてますので、`new`から作成します。
詳しくは[コチラ](https://laravel.com/docs/5.2)をご参照ください。


```
$ laravel new valet-test

...

Application ready! Build something amazing.

```

ガーッとログが出て、`Application ready! Build something amazing.`が出たら完了。
試しにもうひとつ適当にアプリケーションを作ってみます。

```
$ laravel new MyAwesomeLaravel
```

といった感じで作成します、ディレクトリはこのような形になっているはずです。

```
---valet
 |
 |---valet-test
 |
 |---MyAwesomeLaravel
```


アプリケーションにアクセスしてみましょう。アクセス名は`{directory_name}.dev`になります。

![Laravel.png](https://qiita-image-store.s3.amazonaws.com/0/19949/6fade064-bd72-175d-9684-305bffda1dfb.png "Laravel.png")

はい、このような形です。`valet-test.dev`も同様にアクセス可能でした。


### link

ここでは`valet`というディレクトリを作成して、その中に各アプリケーションを新規生成してましたが、
**じゃあ既存アプリケーションはどうなるの？**という話ですよね、そこで`link`を利用します。

まず、既存のLaravelアプリケーションに移動します。

```
$ cd already-laravel
```

移動した先でlinkコマンドを実行します。

```
$ valet link

...

A [already-laravel] symbolic link has been created in [~/.valet/Sites].

```

このような形で、`~/.valet/Sites`以下にシンボリックリンクが作られるわけですね、`already-laravel.dev`でアクセスしてみると問題なくページが表示されました。


### share

valetでは`share`で、ngrokをお手軽に利用することが可能です。
ngrokとはなんぞや？という人は[MISOCAさんの記事](http://tech.misoca.jp/entry/2015/09/04/151451)を見るといいです。
（注意点も書いてますので、是非ご一読を）

```
$ valet share
```

を実行すると、ngrokが立ちあがり`Forwarding`にある`http://~~~~.ngrok.io`にアクセス可能になります。終了は`Ctrl+C`を押してください。
![valet-share.png](https://qiita-image-store.s3.amazonaws.com/0/19949/d6517e49-bdf8-96a1-fc9e-2f675eb3df72.png "valet-share.png")


## その他

[公式サイト](https://laravel.com/docs/5.2/valet)には上記以外にもログの出力や、カスタムドライバーの作成方法や、他コマンドも掲載されていますので、ご参照ください。（投げやり）


今までlaravelの開発環境はHomesteadを利用してましたが、Valetは手軽でいい感じです。ただ仕事で利用する際はホスティング先がHerokuなのもあり、Ubuntu + Nginx + PostgreSQL + Redisっていう構成のままなので、しばらくはまだHomesteadで行く気がします。
個人で利用するなら今回のValetで全く問題無いですね。

その他にもTaylorさんは[Laravel Echo](https://github.com/laravel/echo)なる[Pusher](https://pusher.com/?v=z)と連携したLaravelでのリアルタイムアプリケーションの雛形も準備しているようです。  
Pusherはherokuのアドオンからも利用可能なので、楽しみデス。