初めてLaravel macOSの開発に入る前の要点まとめ

こんにちは、今回はPHPのフレームワークLaravelを利用したことがない方に向けて、素早くキャッチアップできるように要点を置いてまとめてみました。
以前にもAPI作ってみようと思って、Laravel使ったんですが、他のフレームワークよりモダンだし素晴らしいなと思い紹介しました。

スポンサーリンク

開発環境

まず、気になる開発環境ですが、主に3点あります。
1.VagrantでHomesteadを利用
2.Laradockを利用(Dockerコンテナ上で動作)
3.自前でDockerfile/docker-compose.yamlで環境を構築利用
今回各環境構築の詳細は触れませんが、個人的には初めての方はVagrant or Laradockを使った環境が難しくはないので、入りやすいかと思います。
どの環境を使うか、環境別に触れてみますので、参考になればと思います。

Homestead

Vagrantにてlaravel/homestead用boxを追加して、その環境で開発するケースになります。
事前にVagrantが必要なため、インストールしましょう。
Vagrant
Laravel公式サイトにて、詳細な手順がありますので、興味がある方はこちらを参考に構築するのが良さそうです。
公式サイトLaravel Homestead

Laradock

ローカルにDockerコンテナを立ち上げて、その環境で開発するケースになります。
事前にDocker for Macが必要なため、インストールしましょう。
公式サイトDocker for Mac

$ mkdir laravel_apps && cd laravel_apps # 名前は任意
$ git clone https://github.com/LaraDock/laradock.git
$ cd laradock
$ cp env-example .env
$ docker-compose up -d nginx php-fpm mysql workspace

コンテナ内部でlaravelプロジェクト作成

$ docker-compose exec workspace bash
$ composer require "laravel/installer"
$ laravel new test_project
$ exit

test_projectを.envに設定してあげる

$ vim .env
  7 # Point to the path of your applications code on your host
  8 APP_CODE_PATH_HOST=../test_project
↑APP_CODE_PATH_HOSTをlaravel newコマンドで作成したフォルダ名にする。
$ docker-compose up -d nginx php-fpm mysql workspace

ブラウザーでhttp://localhostにアクセスして、無事に起動できました。

公式サイトLaradock

dockerfileを自前で構築

自分の場合、自前でコンテナを管理してみたいという思いとフロントとAPIは分けて開発したいと思い、自前で作成してみました。
ご興味がある方は、以下を利用していただいても大丈夫です。
自前作成
※初めて作りましたので、色々まずい箇所はあるかもしれません、ご利用は自己責任でお願いします

ディレクトリ構成

結構ざっくりな表ですが、どこに何を作成していくかについては、以下にまとめてみました。

早見表
構成 説明
.env 環境設定ファイル
app アプリケーションのコアコードを配置
bootstrap frameworkの初期起動やautoload設定を行うファイル・初期処理のパフォーマンスを最適化するため、frameworkが生成するルートやサービスのキャッシュファイルを配置
config アプリケーションの全設定ファイルを配置
database データベースのマイグレーション・初期値設定(シーディング)を配置
public リクエストの入り口となるindex.phpファイル・アセット(画像/css/js等)を配置
resources コンパイル前のLESS/SASS/js/view/言語ファイルを配置
routes 全てのルートを定義するファイルを配置、デフォルトで(api.php,channels.php,console.php,web.php)といったルートファイルがあります
storage コンパイルされたBladeテンプレート、ファイルベースのセッション、ファイルキャッシュなど、frameworkで生成されたものが配置
tests ユニットテストのコードを配置
vendor Composerの依存パッケージを配置

把握しておいた方が良い用語

Laravel開発にあたって、他にもいっぱいありますが、特に気に留めておいが方が良さそうな用語がありました。

artisan

Laravelに含まれているコマンドラインインターフェースです。
コマンドが豊富すぎるのと手動でファイル作ったりしなくても、コマンドでコントローラーの雛形ファイルとか作成できてしまうので、めちゃくちゃ便利です。
プロジェクト内にて以下を実行するとコマンド一覧が表示されます。

$ php artisan list

blade

クラスのように階層化したテンプレートエンジンです。
bladeのメリットとしては、ビューの中にPHPを直接記述可能であり、一番オーソドックスな利用の仕方としては、親のテンプレートを用意して、ヘッダーやフッターは共通化して、内部コンテンツ(body)部分を子テンプレートとして扱う方法が多いようです。

依存性注入について

依存性注入(Dependency injection:DI)とは、とあるクラスが依存している処理を外部から渡して、各コンポーネント間の依存度を疎結合にすること。
Laravelでは、サービスコンテナと呼ばれる依存を管理する仕組みがあります。

サービスコンテナ

クラス間の依存を管理する強力な管理ツールだそうです。「クラスのインスタンス化方法を定める」のがサービスコンテナとなります。
サービスコンテナにクラスを登録(バインド)して、サービスコンテナからクラスを生成(リゾルブ)するのが処理の流れになるようです。
実装も見てみようという方は、以下の公式をチェック!
Laravel 公式 サービスコンテナ

サービスプロバイダー

Laravelアプリケーション全体の初期起動処理を担っており、「クラスのインスタンスを初期化するための場所」がサービスプロバイダーとなります。
言葉だけだと頭に入りにくいかもしれませんので、以下などで実装見てみた方がいいかもしれません。
Laravel 公式 サービスプロバイダー

まとめ

PHPフレームワークに関しては、今まで色々と触れてきましたが、Laravelに関しては便利なartisanコマンドであったり、環境の構築がモダンであったりと便利すぎて驚きました。
実際開発するにあたって、ロジックの書き方は結構自由度が高いので、プロジェクト規模等によってある程度方針を決めて作っていった方がいいような気がしました。
今後は、もう少し具体的なLaravel活用方について学んでいこうと思います。