Laravelの環境構築からちょっと動かすまでの話


## 対象者
PHP初学習者(自分もはじめて)
とりあえずさくっと試したいよって人

## 環境

|項目|バージョン|
|:---:|:---:|
|OS|macOS Sierra ver.10.12.5|
|php|5.6|

## なんでLaravel?
とりあえずPHPのフレームワークを使う必要に迫られたため，[人気のPHPフレームワーク比較！おすすめの15選まとめました](https://eng-entrance.com/php_framework)を参考にした．

最初は[Phalcon](https://phalconphp.com/ja/)を使おうと試みたが，あまりに自由度が高すぎて何を書いていいのか逆にわからなかったり(個人的な感想)，ローカルでの実行環境構築が面倒(apacheとかnginxをごねごね)だったりと，チームとかで扱うのは大変そうだったから断念．．

参考記事によるとLaravelがアツいとかいていたため，ちょっと[Googleトレンド](https://trends.google.co.jp/trends/explore?q=%2Fm%2F09t3sp,%2Fm%2F09cjcl,%2Fm%2F02qgdkj,%2Fm%2F0cdvjh,%2Fm%2F0jwy148)で調べてみた．

![Screenshot 2017-06-11 17.41.12.png](https://qiita-image-store.s3.amazonaws.com/0/84299/5ba1b524-155f-56cd-2348-6161f72573c3.png "Screenshot 2017-06-11 17.41.12.png")

まじでアツかった
ミーハー精神でこのフレームワークを使うことにした．
それに[日本語のドキュメント](http://laravel.jp/)も充実してるのも助かりますね．


## 導入手順
### 前置き
自分はanyenvでのphpenvを使ってphpのバージョンを管理してます．
これからの手順には別に必要ないですが，導入したい方は[anyenvでモダンな開発環境構築。PHP,NodeJS,Ruby,Perl,Python](http://qiita.com/pfavill/items/f500e46444c86a6f8e6a#anyenv%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)を参照するといいと思います．(自分も参考にしました．ありがとうございました．)

### Composerの入手

```bash:composer入手
$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer (version 1.4.2) successfully installed to: /Users/shu920921/composer.phar
Use it: php composer.phar

$ mv composer.phar /usr/local/bin/composer
$ which composer
/usr/local/bin/composer
$ composer -V
Composer version 1.4.2 2017-05-17 08:17:52
```

これでComposerを使えるようになりました．

### Laravalの入手
先程入手した`Composer`を用いてインストールします．

```bash:Laraval入手
$ composer global require "laravel/installer"
Changed current directory to /Users/shu920921/.config/composer
Using version ^1.3 for laravel/installer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 10 installs, 0 updates, 0 removals
  - Installing symfony/process (v3.3.2): Loading from cache
  - Installing psr/log (1.0.2): Loading from cache
  - Installing symfony/debug (v3.3.2): Loading from cache
  - Installing symfony/polyfill-mbstring (v1.4.0): Loading from cache
  - Installing symfony/console (v3.3.2): Loading from cache
  - Installing guzzlehttp/promises (v1.3.1): Loading from cache
  - Installing psr/http-message (1.0.1): Loading from cache
  - Installing guzzlehttp/psr7 (1.4.2): Loading from cache
  - Installing guzzlehttp/guzzle (6.2.3): Loading from cache
  - Installing laravel/installer (v1.3.6): Loading from cache
symfony/console suggests installing symfony/event-dispatcher ()
symfony/console suggests installing symfony/filesystem ()
Writing lock file
Generating autoload files
```

これで終わりです．

## ちょっと動かす
[公式の簡単な方のチュートリアル](https://readouble.com/laravel/5.2/ja/quickstart.html)をやってみましょう．

詳しくやりたい人は公式ページを見てもらうとして，今は構築した環境できちんとLaravelプロジェクトが動くのか確かめたいので完成版をgitからcloneしてきます．

```
$ git clone https://github.com/laravel/quickstart-basic quickstart quickstart
$ cd quickstart
$ php artisan --version
Laravel Framework version 5.2.20
$ composer install
```

次にDBのマイグレーションを行うのですが，ここで1点注意です．

接続のための設定ファイルが`quickstart/.env`に記述してあります．

```quickstart/.env
APP_ENV=local
APP_DEBUG=true
APP_KEY=b809vCwvtawRbsG0BmP1tWgnlXQypSKf
APP_URL=http://localhost

## ここを適宜変更してください！
DB_HOST=127.0.0.1
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
##

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
```

変更が完了したら

```
$ php artisan migrate
Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2015_10_27_141258_create_tasks_table
```

これで指定したDBに仕様するテーブルが作られました．

あとは実行するだけ

```
$ php artisan serve
Laravel development server started on http://localhost:8000/
```

Laravelだとこのコマンドだけで実行することができるのが便利だと思います！

[http://localhost:8000/](http://localhost:8000/)を確認してみましょう．

お疲れ様でした．