2018.11.04

Laravel開発のはじめかた Windows編


この記事では、Windows 環境で Laravel アプリケーションの開発を始める方法を紹介します。

開発環境を構築しようとすると言語やデータベース、Web サーバーをそれぞれインストール〜設定する必要があって面倒ですよね。特に初心者の方にとってはそれだけでハードルを感じてしまうかもしれません。

Laravel にはオフィシャルのローカル開発環境構築ツール「Homestead」が用意されています。Homestead は、仮想化技術により PHP・MySQL・nginx など開発に必要なソフトウェアやミドルウェアが設定された Linux OS 環境のパッケージです 🚀

今回は Homestead を使った開発環境の構築〜新しいプロジェクトの始め方を説明していきます。

環境構築

Git

まずは Git をインストールしましょう。

https://git-scm.com/downloads

Git 自体は後段でソフトウェアをインストールする際に使用しますし、コマンドラインでの操作は Linux コマンドを実行できる Git Bash を使用すると便利です。

VirtualBox

VirtualBox は OS の仮想化を実現するためのソフトウェアです。

https://www.virtualbox.org/wiki/Downloads

今回は Windows OS 上で Linux OS を動作させるために使用します。

Vagrant

Vagrant は上記の VirtualBox などで構築した仮想環境をコマンドラインから管理するためのソフトウェアです。

https://www.vagrantup.com/downloads.html

Homestead Vagrant Box

Vagrant はとても便利で、DB・Webサーバ・言語などを含んだ OS を一つの仮想環境(これを Box と呼ぶ)としてパッケージングして管理できます。この技術を利用した Laravel のオフィシャル Vagrant Box が前述の Homestead です。

vagrant コマンドでインストールしましょう。

$ vagrant box add laravel/homestead

ちなみにこのインストールはネットワーク環境にもよりますが1〜2時間かかります。

Homestead

先ほどインストールした Homestead(Vagrant Box)を管理するためのツールをインストールします。ちょっとややこしいですが、Vagrant Box およびその管理ツールを含めて Homestead と呼ぶと考えればよいでしょう。

$ cd ~
$ git clone https://github.com/laravel/homestead.git Homestead
$ cd Homestead
$ git checkout v7.18.0
$ init.bat

2つめの手順で Homestead ディレクトリが作成されます。Homestead ディレクトリの中には仮想環境を立ち上げるための各種設定ファイルが格納されているので、仮想環境の起動/停止は Homestead ディレクトリで行うことになります。

ちなみに Mac の場合は最後の手順で init.bat の代わりに以下のコマンドを実行します。

$ bash init.sh

仮想環境を起動する

ここまでで環境の構築は完了しました 🎉
以下のコマンドで仮想環境を起動します。

$ cd ~/Homestead
$ vagrant up

仮想環境にログインする

仮想環境内で作業するためには、Tera Term などのターミナルソフトを利用して仮想環境にログインします。仮想環境を起動したあと、以下の接続情報を用いてログインしましょう。

host user pass
192.168.10.10 vagrant vagrant

ちなみに Mac では以下のコマンドでログインできます。

$ vagrant ssh

仮想環境を停止する

注意点として、PC の電源を切る前に、必ず仮想環境を停止させてください。仮想環境を停止させずに PC の電源を切ってしまうと、仮想環境上のデータが破損してしまうことがあります。以下のコマンドで仮想環境を安全に停止できます。

$ vagrant suspend

up した時と同様、ローカルの Homestead フォルダの下で実行しましょう。

ホストとゲスト

プロジェクトの新規作成方法に進む前に、ホストとゲストという概念について説明します。

あるコンピューター(PC含む)に仮想環境を構築する場合、そのコンピューターをホスト(OS)、仮想環境側をゲスト(OS)と呼びます。主催者・主人とお客さんということですね。例えば今回のように Windows の PC に Linux の仮想環境を立てるとすると、Windows 側をホスト OS、Linux 側をゲスト OS と呼びます。

なぜこの概念が重要かというと、開発を進めるにあたってある作業を「ホストで実行するか、ゲストで実行するか?」を考える必要があるからです。

コマンドの実行場所

当然ですが、vagrant コマンドなど仮想環境に対する操作はホスト側で行いましょう。

ソースコードに対する操作は基本ゲスト側で OK です。ライブラリやパッケージをインストールするための composer や npm コマンドはゲスト側で実行します。

また PHP コマンドもゲスト側で実行しましょう。ホストOSにはそもそも PHP は(少なくとも今回の手順では)インストールされていないので実行できません。

npm コマンド

ただし npm コマンドには注意が必要です。Windows の特性により、ゲスト側での npm コマンド(特にインストール)が失敗する場合が少なくありません。

ゲスト側で npm コマンドがうまくいかなければホスト側で実行しましょう。後述するようにホストとゲストは共有フォルダで繋がっているのでどちらで実行しても追加したファイルは反映されます。

npm パッケージによってはインストールされた OS 向けのバイナリを持ってくるものもあるので、npm コマンドの実行場所はホストとゲストを使い分けるのではなく、どちらかに統一しましょう。

もちろんホストで npm の操作をする場合は Node がインストールされている必要があります。

ソースコードの格納場所

ホストとゲストは共有フォルダで繋がっています。ホスト側の仮想マシンを起動したフォルダ(今回でいうと Homestead フォルダ)と、ゲスト側の /vagrant です。

共有フォルダ内の作業であれば、一方の編集がもう一方にも反映されます。共有フォルダ機能のおかげで、「環境はゲストに作るけどソースファイルの編集はホスト側のエディタで行いたい」ということが実現できるのですね。

Homestead フォルダ内の設定ファイル Homestead.yml には次の指定があります。

Homestead.yml
folders:
    - map: ~/code
      to: /home/vagrant/code

ホスト側の ~/code と ゲスト側の /home/vagrant/code が共有フォルダとなっているという意味です。map を書き換えれば開発に使用するフォルダを指定することができます。

設定の変更はすでに起動している仮想環境には自動では反映されないので、以下のコマンドで再起動させる必要があります。

$ vagrant reload --provision

プロジェクトの新規作成

ここからプロジェクトの新規作成手順を紹介します。

具体的な設定内容などはプロジェクト名によります。説明ではプロジェクト名を「sample」としますが、この部分は実際のアプリケーションに応じて読み替えてください。

ドメインの設定

まずはブラウザから特定のドメインでアプリケーションを表示するための設定を行います。

Homestead.yml

Homestead ディレクトリ内にある Homestead.yml ファイルを開き、sites 設定を追加します。

Homestead.yml
sites:
    - map: sample.local
      to: /home/vagrant/code/sample/public

map のドメインへのリクエストは、to に接続されるという意味です。map は基本任意の値に設定できますが、.app .dev .localhost など一部のドメインは Google Chrome では HTTPS が強制されるため避けましょう。

hosts

メモ帳を管理者権限で起動して hosts ファイル(C:\Windows\System32\drivers\etc\hosts)を開き、下記の一行を追記します。

192.168.10.10  sample.local

コマンドラインでプロジェクトを作成する

composer コマンドでプロジェクトを作成します。

ゲスト
$ cd ~/code
$ composer create-project laravel/laravel sample

コマンドの実行が終わったら ~/code/sample ディレクトリにアプリケーション一式が作成されているはずです。

ブラウザで http://sample.local を開いて確認しましょう。初期画面が表示されれば成功です。

データベースの確認方法

ゲスト側にあるデータベースの確認方法も紹介しておきます。

コマンドラインから確認することもできますが、ホスト側からクライアントツールを利用する方が分かりやすく見やすいです。Windows アプリでは A5:SQL Mk-2 がオススメです。

A5:SQL Mk-2 Homepage

ダウンロードした zip ファイルを解凍して A5M2.exe を実行すると A5:SQL Mk-2 が起動します。

次にデータベースに接続するのですが、Homestead で環境構築するとデフォルトのデータベースおよび接続情報が用意されます。プロジェクトディレクトリの直下にある .env を確認してください。

.env
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

上記の設定をもとに、以下のメニューから接続情報を設定します。

データベース > データベースの追加と削除 > 追加 > MySQL(または PostgreSQL)

A5:SQL Mk-2 Setting

  • 「ホスト名」と「ポート番号」はそのままで OK です。
  • 「ユーザーID」と「パスワード」は DB_USERNAME DB_PASSWORD の値を入力します。
  • 「データベース」には DB_DATABASE の値を入力します。

「テスト接続」をクリックしてエラーがなく正しく接続できていれば「OK」をクリックして設定を完了しましょう。

🌠 🌠 🌠

以上、Windows で Laravel 開発をするための環境構築方法を紹介しました。他のフレームワークと比べてかなり手軽に開発をスタートできるのも Laravel の魅力ですね。最近ではこういうの DX(Developer Experience)と言うんでしょうか。

ちなみに Windows 編とは謳っていますが Mac でも同じ手順で構築できます。以前に記事にした Laravel Valet も使えますね。