初めて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 $ exittest_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ディレクトリ構成
結構ざっくりな表ですが、どこに何を作成していくかについては、以下にまとめてみました。
早見表 構成 説明 .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 listblade
クラスのように階層化したテンプレートエンジンです。
bladeのメリットとしては、ビューの中にPHPを直接記述可能であり、一番オーソドックスな利用の仕方としては、親のテンプレートを用意して、ヘッダーやフッターは共通化して、内部コンテンツ(body)部分を子テンプレートとして扱う方法が多いようです。依存性注入について
依存性注入(Dependency injection:DI)とは、とあるクラスが依存している処理を外部から渡して、各コンポーネント間の依存度を疎結合にすること。
Laravelでは、サービスコンテナと呼ばれる依存を管理する仕組みがあります。サービスコンテナ
クラス間の依存を管理する強力な管理ツールだそうです。「クラスのインスタンス化方法を定める」のがサービスコンテナとなります。
サービスコンテナにクラスを登録(バインド)して、サービスコンテナからクラスを生成(リゾルブ)するのが処理の流れになるようです。
実装も見てみようという方は、以下の公式をチェック!
Laravel 公式 サービスコンテナサービスプロバイダー
Laravelアプリケーション全体の初期起動処理を担っており、「クラスのインスタンスを初期化するための場所」がサービスプロバイダーとなります。
言葉だけだと頭に入りにくいかもしれませんので、以下などで実装見てみた方がいいかもしれません。
Laravel 公式 サービスプロバイダーまとめ
PHPフレームワークに関しては、今まで色々と触れてきましたが、Laravelに関しては便利なartisanコマンドであったり、環境の構築がモダンであったりと便利すぎて驚きました。
実際開発するにあたって、ロジックの書き方は結構自由度が高いので、プロジェクト規模等によってある程度方針を決めて作っていった方がいいような気がしました。
今後は、もう少し具体的なLaravel活用方について学んでいこうと思います。