MacでLaravel5.8の開発環境を構築しよう（下準備）

環境構築ってわけわからんし、めんどくさい！

そう思ってプログラミングをやめた人は結構いるのではないでしょうか。勉強し始めて半年ぐらいたつ僕ですが、いまだに環境構築は苦手です。ですが、Laravel環境構築はなんとかできたので、その時の手順を出来るだけわかりやすく書いていこうと思います。長くなりそうなので下準備編と開発編で分けて解説していきます。基本的には`bash`でやってますが、多分`zsh`でも大丈夫です。その時は`$`を`%`に読み替えてください。

#手順
1.ターミナルを開く
2.homebrewのインストール
3.phpのインストール
4.composerのインストール
5.PATHを通す
6.Valetのインストール

#1.ターミナルを開く
それぐらいできるわ！って人も多いと思いますが、
プロゲートとかだけやってるとマジでちょっと戸惑います。

どうやって開くかというと、まずファインダーを開きます。
アプリケーションタブをクリックし、検索欄で
ターミナルと入力すると出てきます。

<img width="793" alt="スクリーンショット 2019-10-12 15.15.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486260/51d13382-0715-a904-76c6-c51ebcef6a7c.png">

このターミナルを使って、次の項目から開発環境の構築を進めていきたいと思います。

#2.homebrewのinstall

homebrewってなんなの？って思う人も多いと思うのですが、
**「様々なソフトを簡単に入れられるようにするツール」** というような認識で大丈夫です。

[homebrew](https://brew.sh/index_ja)は下記のコードで入れられます。

```
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
入っている場合には下記のように感じになると思います。

```
$ brew --version
Homebrew 2.1.12     #バージョンごとに異なる
Homebrew/homebrew-core (git revision 1089; last commit 2019-10-07)　　
```

#3.phpのinstall
Laravelはphpのフレームワークなので、当然phpをinstallする必要性があります。homebrewからphpは入れることができます。

今回はphpのバージョンを`7.3`に指定してinstallします。

```
$ brew install php@7.3      #@以下でバージョン指定
```

入っている場合には下記のようになるはずです。

```
$ php -v
PHP 7.3.9 (cli) (built: Sep 14 2019 18:07:55) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.9, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.9, Copyright (c) 1999-2018, by Zend Technologies
```

#4.composerのinstall
composerとは、phpのパッケージ管理システムです。なんでそんなものが必要なのか気になる人は、[composerとは](https://qiita.com/atwata/items/d6f1cf95ce96ebe58010)で詳しく説明されているので、そちらで確認してください。
調べてみたら、homebrewで入れる方法もあるようですが、自分は使わずに入れたので、その説明をしていきます。

homebrewで入れる手順については下記参照。
[Mac に Homebrew で composer をインストールする (201808)](https://qiita.com/naoki_koreeda/items/726598a938f3c211ff49)


下記のリンクでcomposerのページにいけます。
[composer](https://getcomposer.org/)
![スクリーンショット 2019-10-13 2.56.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486260/6eabceb8-fe32-0f22-b680-7bd6b351888a.png)

ここの[Download](https://getcomposer.org/download/)ボタンをクリックすると次のような画面になるので、上の線で囲まれているコードを実行してください。
![スクリーンショット 2019-10-13 2.58.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486260/53a59525-c936-4ad7-e704-4593a3eaa142.png)

で、installしたら、composerの保存場所をhomebrewを保存してるディレクトリ（わかりやすくいうとファイル）に移動しときましょう。

```
$ mv composer.phar /usr/local/bin/composer
```
#5.PATHを通す
この後のvaltetのinstallを行う前に`~/.composer/vendor/bin`にpathを通しておく必要があります。初学者の方はなにそれ？って思うでしょう。僕も思いました。

このことについてを詳しく書かれている記事があったので参照しときます。
[PATHを通すとは？](https://qiita.com/soarflat/items/09be6ab9cd91d366bf71)

まず、コマンド検索PATHに`~/.composer/vendor/bin`が通っていなかを確認します。

```
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
```

通っていないようなので、PATHを通していきます。

では、具体的にどうやってPATHを通すかというと、
`~/.bashrc`もしくは`~/.bash_profile`に記述します。
[PATHを通すために環境変数の設定を理解する](https://qiita.com/soarflat/items/d5015bec37f8a8254380)

そもそも`~/.bashrc`と`~/.bash_profile`ってなに？というのは下記参照。
[本当に正しい .bashrc と .bash_profile の使ひ分け](https://qiita.com/magicant/items/d3bb7ea1192e63fba850)

まずは、存在するのか下記コードで見てみましょう。

```
$ find ~/.bashrc
$ find ~/.bash_profile
```

もしある場合はその保存場所が表示されるはずです。
ない場合はこんな感じで表示されるはずです。

```
find: ./bash_profile: No such file or directory
```

多分最初はどちらもないと思うので、作ってしまいましょう。
今回は`export`を使用するので`~/.bash_profile`が好ましいでしょう。

```
$ touch ~/.bash_profile
```
作成して、もう一度ファイルが存在するか、`find`で確かめてみましょう。存在していたら下記コードを.bash_profileファイルに書いてください。

```
export PATH=$PATH:~/.composer/vendor/bin
```

よし、わかったやってみる!

......ごめんこのファイル、存在するはずなんだけど、全然見当たらない。どうやって編集するの？って多分なります。それもそのはずです。このファイルは`隠しファイル`になっていて、通常は開けないようになっています。じゃあ、どうやって編集するの？って思うでしょうが、方法は大きく分けて二つあります。

１つは`隠しファイルを表示`させる方法、
２つめは`vim`を使う方法です。

1つ目の`隠しファイルを表示`させる方法については下記を参照してください。
[Mac - Finderで隠しファイル・フォルダを表示する方法](https://pc-karuma.net/mac-finder-show-all-files/)

２つ目の`vim`を使う方法については、ここで解説しときましょう。`vim`とは高性能なテキストエディタです。自分のMacには標準搭載されてました。ない場合には入れる方法もあります。[Vim初心者に捧ぐ実践的入門](https://qiita.com/okamos/items/c97970ab34ff55ff3167)

`vim`の詳しい使い方は下記参照。
[Vimの使い方 基本操作まとめ](http://motw.mods.jp/Vim/command.html)

まず`vim`を開きましょう。

```
$ vim
```
するとターミナルがこんな感じになります。

```

~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
```

最初はちょっと戸惑いますが、大丈夫です。

`:e ファイル名`で、そのファイルを開くことができます。

```
:e ~/.bash_profile
```
すると、こんな感じになります。
下の方にファイル名、行数(L)、文字数（C）が加わりました。

```

~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
"~/.bash_profile" 0L, 0C
```

これで編集できる画面には来たのですが、この段階ではノーマルモードなので編集ができません。そこで`i`を押して入力モードに変えます。入力モードに変わっていれば下記のように一番下が`--INSERT--`になっているはずです。このモードだと普通に編集ができます。ここにPATHを通すコードを書きます。

```
export PATH=$PATH:~/.composer/vendor/bin
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
-- INSERT --
```

で、保存をする時なのですが、一度ノーマルモードに戻る必要があります。戻るには`esc`タブを押します。その後に`ZZ`コマンドを入力すると、変更を保存して終了します。`$ vim`を入力したところに戻るはずです。ファイルの内容の確認は`cat`でできます。しっかり保存されていれば下記のようになるはずです。

```
$ cat ~/.bash_profile
export PATH=$PATH:~/.composer/vendor/bin
```

で、変更自体はできていることは確認しましたが、まだこのファイルの内容は適用されていない(ログイン時に読み込まれる)ので、即時適用します。ログインし直しても多分適用されます

```
$ source ~/.bash_profile
```

このコードを実行して、コマンド検索PATHを確認すると`~/.composer/vendor/bin`にPATHが通っているはずです。

```
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/ユーザー名/.composer/vendor/bin
```

#6.Valetのinstall
正確には`Laravel Valret`と言います。Macでlaravelを入れる方法は、`Valet`と`Homestend`があるんですが、`Valet`の方が簡単に実装できるので、こちらでやっていきます。まず、下記のコードでinstallします。

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

次に下記コマンドで`Valet`が起動します。

```
$ valet install
```
`zsh`を使ってる方はもしかしたら、
下記のようなエラーが出るかも。

```
Homebrew PHP appears not to be linked. 
```

そしたら下記の方法を実行してみてからinstallしてみてください。

```
$ brew link php@7.3 --force
```


正しくインストールされていれば下記の通りになるはずです。`ping`コマンドはネットワーク上にある特定のパソコンやホストに対して信号の送受信がしっかりできているか確認するものです。下記では、`127.0.0.1`というホストと通信していることが確認できます。因みにこのコマンドは終了しないとずっと続きます。終了は`control`と`c`の同時押しです。

```
$ ping foobar.test
PING foobar.test (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.030 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.092 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.087 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.096 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.092 ms
```

下準備はここまでで完了です。
開発編では、実際にlaravelでアプリを作り、mysqlと繋げる方法について解説していきます。

#大まかな流れで参考にしたサイト
[Laravel 5.8 Laravel Valet](https://readouble.com/laravel/5.8/ja/valet.html)
[MacでLaravel開発するならローカルの環境構築はValetもオススメ](https://www.hypertextcandy.com/laravel-local-environment-valet)