【初心者目線】Laravel SailでLaravel9の環境構築~PhpMyAdmin追加をしたので振り返り

現在エンジニアを目指して学習中の身です。

今回、Laravelを用いた開発を経験してみようと思い、
参考書に沿って、ローカルにLaravel9の環境を構築。
ただ、Laravel sailについてや入力したコマンドなど
分からないことだらけだったので、振り返りの投稿をします。

間違いがあればコメントいただけますと幸いです！

## 環境
以下の環境で実行しています。
・macOS Monterey 12.6
・Docker 20.10.2
・Laravel 9.3.12

※Windowsユーザーはプロセスが異なる可能性あります。

## Laravel Sailについて
### そもそもLaravel Sailとは
[Readouble](https://readouble.com/laravel/9.x/ja/sail.html)には以下の記載があります。

>Laravel Sail（セイル、帆、帆船）は、LaravelのデフォルトのDocker開発環境を操作するための軽量コマンドラインインターフェイスです。 Sailは、Dockerの経験がなくても、PHP、MySQL、Redisを使用してLaravelアプリケーションを構築するための優れた出発点を提供します。
>
>Sailの本質は、docker-compose.ymlファイルとプロジェクトのルートに保存されているsailスクリプトです。sailスクリプトは、docker-compose.ymlファイルで定義されたDockerコンテナを操作するための便利なメソッドをCLIで提供します。

ふむ。。。

### メリット
結局どんなメリットがあるのか、についてですが、
初心者がやってみて感じたこととしては以下です。

1. Dockerの知識がなくてもDocker×Laravelの環境が構築できる
2. MySQLやWebサーバーを自分でインストールする必要がない
3. 一瞬で完了できる

とにかく楽でしたが、初心者にとっては
Dockerを理解する前に通過できてしまうので
ちゃんと自分で学んでおく必要はあるでしょう。


## 環境構築のステップ

### 1. Docker Desktopのインストール
まずは[公式からダウンロード](https://www.docker.com/)しましょう。

インストールまで済んだと思ったら、以下のコマンドで確認します。
```bash
// 入力
docker -v

// これが表示されたらOK
Docker version 20.10.21, build baeda1f
```

*Docker Desktopとは？
[日本語ドキュメント（非公式）](https://docs.docker.jp/desktop/index.html)の説明は以下

>Docker Desktop は、CLI を使って主要な処理を行わなくても、コンテナ、アプリケーション、イメージをマシン上から直接管理できる、シンプルなインターフェース（訳者注：プログラム間を接続する、橋渡しのような機能）を提供します。

Dockerをデスクトップアプリとして視覚的に操作できるようにしましたよ
という理解で問題ないでしょう。

### 2. Laravelプロジェクトインストール

プロジェクトを立ち上げたいディレクトリまで移動して、以下のコマンドを入力
```bash
curl -s "https://laravel.build/プロジェクト名?php=81" | bash
```
laravelをインストールした段階で、Laravel Sailも自動的にインストールされています。

実行したコマンドがわからないので分解していきましょう。

#### curlコマンドとは

https://curl.se/

>command line tool and libraryfor transferring data with URLs(since 1998)

>__What's curl used for?__
>curl is used in command lines or scripts to transfer data. curl is also used in cars, television sets, (略), media players and is the Internet transfer engine for thousands of software applications in over ten billion installations.

curlはコマンドライン上でデータを送受信するためのツール。
あらゆる電子機器に搭載されていて、ソフトウェアやアプリケーションのインストールに活用されているらしい。

#### curlの基本の使い方
https://curl.se/docs/manpage.html

```bash
curl options　URLs
```

これを今回実行したコマンドにあてはめる。
```bash
curl -s "https://laravel.build/プロジェクト名?php=81"
```
`-s`のオプションで、`https://laravel.build`にリクエストを送ったということですね。



#### `-s`オプション

これは難しくない。
>You can also disable the progress meter completely with the -s, --silent option.

sはsilentの略で、実行アクションの進捗状況を非表示にする設定。つまりなくても良い。

その他のコマンドについては[こちらの記事](https://xtech.nikkei.com/it/atcl/column/14/230520/080400003/)に綺麗にまとまっています。

#### `| bash`

https://www.gnu.org/software/bash/manual/html_node/Pipelines.html

https://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html

`|`（パイプライン）は、メタ文字。
パイプの前で出力された処理がパイプの後に接続され、処理が連続されていく。
```bash
//command1で処理された値がcommand2に渡される
command1 [| or |&] command2 ... 
```

今回実行した処理を改めて確認
```bash
curl 処理 | bash
```
curlコマンドで実行した処理をbashコマンドに接続している。
bashはデフォルトで搭載されたシェルなので、
この操作によって、ダウンロードしたファイルをターミナル上で扱えるようにしている。
と理解すれば良さそう。


### 3. 立ち上げ

コマンドライン上でインストールしたLaravelプロジェクトに移動したら、
以下のコマンドを実行することで、Laravel Sailが立ち上がります。
```bash
./vendor/bin/sail up
```
Sailのコマンドは、デフォルトでは`./vendor/bin/sail`に通っており、
そこを指定した上で、`up`を実行するという意味。

毎度`vendor/bin/sail`と打つのは面倒なので、エイリアスを設定しておくと便利です。

```vim
alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail'
```

これで環境構築が完了しました！

## おまけ PhpMyAdminの追加

自分と同じ初心者の方は、PhpMyAdminで
視覚的にデータベースを確認しておきたいという方も
多いのではないでしょうか。
結構簡単に導入できますし、docker-composeにも触れられますのでぜひ。

https://chigusa-web.com/blog/laravel-sail-phpmyadmin/


## 参考

__sailの立ち上げ__

https://readouble.com/laravel/9.x/ja/sail.html

https://reffect.co.jp/laravel/laravel-sail

https://omkz.net/laravel-sail/

https://chigusa-web.com/blog/laravel-sail-phpmyadmin/

__curl__

https://curl.se/

https://qiita.com/akane_kato/items/34b408336f4ec372b139

https://qiita.com/KEINOS/items/98164eb05290da7b9d35

https://xtech.nikkei.com/it/atcl/column/14/230520/080400003/

__PhpMyAdmin__

https://chigusa-web.com/blog/laravel-sail-phpmyadmin/