【Rails学習者向け】PHPフレームワーク「Laravel」を環境構築する方法(Mac)

# 対象と前提
・Ruby on Railsで環境構築・Webアプリケーション作成したことあるプログラミング初心者
・PHPフレームワークのLaravel使ってみたい方
・Macユーザー（私はMacOS Catalina(10.15.7)使ってます)
・シェルはzshを使用

# 最初に…
私はRuby on Rails(以下RoR)で基礎的なWebアプリケーションを学習していました。
しかし、PHPも経験したかった！
なのでRoRの復習兼ねて、PHPの主要フレームワークであるLaravelを使ってみようと思いました。
(これまた有名なCMS(コンテンツ管理システム・ブログみたいなもの)であるWordPressも、PHPで開発されたものというし)

備忘録のため、ローカル環境構築手順をQiitaに投稿します。

## 1. Composerをインストール

**Composer**は、PHP向けのパッケージ管理システム。
つまり**Rubyでいうbundler**にあたるもの。

Macの場合は、公式サイトからダウンロードします。
[Composer公式](https://getcomposer.org/)

トップページの Download をクリックしてダウンロードページへ。
「Manual Download」の中から最新版をダウンロードすることにします。

今回は現時点(2021/1/28時点)で最新版のver2.0.9をダウンロードすることにしました。
**composer.phar**というファイルがダウンロードされます。

ダウンロードできたら、ターミナルを起動してコマンドを実行して導入します。

```zsh:zsh
## ダウンロードしたディレクトリに移動
% cd ~/Downloads

# composer.pharを/usr/local/bin/に移動。パスワード聞かれたら入力
# アクセス権変更。全ユーザーに実行権限付与
% sudo mv composer.phar /usr/local/bin/composer	
% chmod a+x /usr/local/bin/composer  

# 導入できたかcomposerのバージョン確認コマンドでチェック
% composer -V
Composer version 2.0.9 2021-01-27 16:09:27
```

無事にバージョン表示されたので、Composerの導入は完了です。

# 2. いよいよLaravelをインストール

ターミナルで以下のコマンドを実行。少し時間がかかるかもしれません。

```zsh:zsh
% composer global require laravel/installer
```

Laravelのコマンドを使えるよう、環境変数にインストールされた場所を追記します。

```zsh:zsh
% echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.zshrc
% source ~/.zshrc # 更新済みの設定ファイルを再読み込みして反映させる

# Laravelを導入できたか確認
% laravel -V
Laravel Installer 4.1.1
```

ちなみに、この段階でphp artisanのコマンド叩いてもエラーになります。

```zsh:zsh
% php artisan -V
Could not open input file: artisan
```

「artisan」はLaravelで作成したディレクトリ(プロジェクト)内で使えるコマンド。
なので、この段階でエラーになることは当然だったのでした。

## 3.Laravelで最初のプロジェクトを作成

Railsで言う **rails new hogeproject** ってやつです。
Laravelもコマンド自体は似たような感じ。

試しにfirst_laravelappというプロジェクトを作成します。
**cdコマンド**で、プロジェクトを作成したいディレクトリに移動。
laravel newで新規プロジェクトを作成します。

```zsh:zsh
# first_laravelappという名前の新規Laravelプロジェクトを作成
% laravel new first_laravelapp
 _                               _
| |                             | |
| |     __ _ _ __ __ ___   _____| |
| |    / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V /  __/ |
|______\__,_|_|  \__,_| \_/ \___|_|

Creating a "laravel/laravel" project at "./first_laravelapp"
：
：
Application key set successfully.

Application ready! Build something amazing.
```

…という感じで作成完了。
作成したプロジェクトに移動して、さっきエラーになったartisanコマンドをもう1回叩いてみる。

```zsh:zsh
% cd first_laravelapp

first_laravelapp % php artisan -V 
Laravel Framework 8.25.0
```

おお、今度はLaravelのバージョンがきちんと表示された！

## 4.動作確認

ブラウザでLaravelプロジェクトを表示できるか、動作確認します。

LaravelにもWebサーバ機能がデフォルトで内臓されていました。
Railの起動コマンドは **rails s** です。
Laravelでは以下のように実行。

```zsh:zsh
first_laravelapp % php artisan serve

Starting Laravel development server: http://〜
```

artisanは英語で「職人」という意味。
職人さんが頑張ってWebサーバを起動してくれます。
終了するときは、Railsと同じく**Ctrl+C**。

Railsでは「http\://localhost:3000/」で確認したけど、Laravelの場合はデフォルト8000番。
「http\://localhost:8000/」で確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837961/be7a232b-c6b5-45e0-b065-51b2401c1961.png)

表示できました！

# 最後に…
他の記事をググってみると、動作環境を作るために「XAMPP」や「MAMP」インストールすることが多いのかな？
導入せずとも最初のページは表示でいたので、今後も必要とならない限り「XAMPP」や「MAMP」はインストールしないで学習を進めてみようと思います。
…すぐ詰まってインストールするかもだけど。

## その他の備忘録
### XAMPPとMAMPの名前の由来

XAMPP: クロスプラットフォーム、Apache、MySQL、PHP、Perl
MAMP: Mac、Apache、MySQL、PHP

### Macには標準でApacheがインストールされている

```zsh:zsh
% which httpd
/usr/sbin/httpd

% which apachectl
/usr/sbin/apachectl

```
ターミナルでコマンド打ったら、確かに自分何もしてないのに入ってる。
ちなみにwhichは、**そのコマンドがどこのディレクトリにあるかを調べる**コマンド。