Laravel初心者向けの内容です。
本記事は、普段LaravelやVue.jsを使っているWeb系エンジニアが「Laravelをこれから触ってみたい」、「まずは簡単な掲示板を作れるようになりたい」と考えている方へ向けまとめた記事です。
とにかくわかりやすく短時間で読めることに重点を置いているため、細かい説明等は割愛していきますのでご了承ください。
Laravelの全体像を掴んでいただくため、今回はディレクトリ構造(フォルダの構成)について解説していきます。
Laravelのディレクトリ構造
まずLaravelアプリケーションのディレクトリ構造は下記のようになっています。
下記ディレクトリについて、1つ1つざっくりと解説していきます。
application
-app
-bootstrap
-config
-database
-public
-resources
-routes
-storage
-tests
-vendor
-.env
app ディレクトリ
主にここにアプリケーションの処理を書いていく
このディレクトリは、「コントローラー」や「モデル」などアプリケーションを作っていく上でメインとなる処理を記載します。最も使用するのがこのappディレクトリです。
このディレクトリ配下には重要度の高いものがたくさんあるので詳細は後述します。
bootstrap ディレクトリ
初期起動時の処理
このディレクトリは、アプリケーションを立ち上げた際にデフォルトで生成されたファイルが配置されています。基本的にこのディレクトリ内のファイルを変更することはありません。はじめはあまり気にしなくて大丈夫です。
config ディレクトリ
各種設定
このディレクトリは、アプリケーション全体の設定ファイルが配置されています。必要に応じて設定のオプションをカスタマイズします。
database ディレクトリ
データベース関連
このディレクトリは、データベースに関連する次の3つが設置されています。
【 マイグレーション(migrations) 】
テーブルの作成や変更などで使用する。
【 シーダー(seeds) 】
テーブルにデータを自動で流す際に使用する。
【 ファクトリー(factories) 】
シーダーを使って大量のデータを流す際に使用する。
public ディレクトリ
画面に描画される関連ファイル
このディレクトリには、リクエストを受けた際の窓口となるindex.phpファイルがあります。また、「画像」、「JavaScript」、「CSS」などのファイルもここに配置されています。
resources ディレクトリ
画面に描画される関連ファイルの元となるコード
このディレクトリには、フロント(画面に表示されるもの)側に関連する下記4つが配置されています。
【 js 】
コンパイル¹する前のJavaScriptファイルが配置されています。コンパイル¹後に前述したpublicディレクトリ配下に反映されます。publicディレクトリを直接更新する場合は使用しません。
【 lang 】
言語ファイルが配置されています。デフォルトでは英語のみ。
【 sass 】
cssにコンパイル¹する前のsassファイルが配置されています。コンパイル¹後に前述したpublicディレクトリ配下に反映されます。publicディレクトリを直接更新する場合は使用しません。
【 views 】
MVCのV
にあたる。コンパイル¹する前のhtmlファイルが配置されています。Laravelでは「.html」でなく「.blade.php」という拡張子でファイルを作成することでそのファイル内で、変数やif文、for文などPHPの処理が使用できるようになります。コンパイル¹後に後述のstorageディレクトリ配下に反映されます。
※1 コンパイルとは、プログラミング言語で書かれたソースコードを、コンピュータが直接実行可能な形式に変換すること。
routes ディレクトリ
ルート定義
このディレクトリには、ルートが定義されています。webサービスでいえば「https://〇〇〇.com/△△」というURLにアクセスがあった場合に、どの処理へ飛ぶのかが一覧で定義されています。デフォルトで「web.php」、「api.php」、「console.php」、「channels.php」という4つのファイルがありますが、Webサービスでは基本的に「web.php」にルートを定義します。APIを作成したい場合は「api.php」に定義します。「console.php」、「channels.php」は今は気にしなくて大丈夫です。
storage ディレクトリ
倉庫
このディレクトリには、「app」、「framework」、「logs」が配置されています。今はlogs配下にログが出力されるファイルがあることを覚えておきましょう。エラーログもここに出力されます。
tests ディレクトリ
テスト関連
このディレクトリには、自動テストなどを行う際に使用するファイルを配置します。
vendor ディレクトリ
Laravelの便利機能たち
このディレクトリには、Laravelフレームワークが持っている便利機能の処理が書かれているファイル群が配置されています。
これらはコンポーザー*²によって管理されています。直接いじらず必要な機能を呼び出して使用します。
様々なファイルで呼び出される「Illuminate」はvender/laravel/framework/src/Illuminateに配置されています。
ここに関してはいきなり理解するのは難しいので徐々に理解を深めていきましょう。
※2「コンポーザー(Composer)は、Laravelの様々な便利機能(パッケージやライブラリなど)のバージョンや依存関係の管理を行ってくれる機能のことです。
.env ファイル
環境変数
このファイルは、アプリケーションの根幹となる重要な設定を記載するファイルです。
データベースにアクセスするためのパスワードや暗号化するためのキーなど機密情報の設定もここに記載します。このファイルは外部に漏れないよう細心の注意が必要です。
次にappディレクトリ配下の構造について解説していきます。
app ディレクトリについて
前述したappディレクトリの配下の構造は下記のようになっています。
アプリケーションのメインとなる重要なディレクトリなので解説していきます。
app
-Console
-Exceptions
-Http
-Library
-Models
-Providers
-Rules
-Services
Console ディレクトリ
コマンド群
コマンドを自作するとここに生成されます。バッチ処理などコマンドで実行したい処理がある場合に利用します。
Exceptions ディレクトリ
例外処理の設定
エラーが起きた際の出力先や出力方法を設定できます。デフォルトではログに出力されます。
Http ディレクトリ
アプリケーションの中心部
アプリケーションへのリクエストがあった際に実行される処理を記載する。
今は下記2つを覚えておこう。
【 コントローラー(Controllers) 】
MVCのC
にあたる。アプリケーションの司令塔としての役割を担います。ユーザーからの要求(リクエスト)に対して、モデルなどから情報を取得し、必要な形に処理し、画面や値などといった何かしらの返答(レスポンス)を送ります。
【 リクエスト(Requests) 】
フォームに入力された値など、送られてきた値に対してバリデーションや加工を行う。
Models ディレクトリ
データベースとの架け橋
MVCのM
にあたる。DBからデータを取得、DBへデータを登録、DBのデータを更新・削除など、DBとのやりとりをする処理はここに記載しましょう。Laravel5以降ではModelsディレクトリはデフォルトでは無く自身で作成することが多かったがLaravel8から復活しました。
Providers ディレクトリ
サービスコンテナへのサービスの登録
様々な処理をサービスコンテナへ登録し管理します。今は気にしなくて大丈夫です。
他のディレクトリ
デフォルトではありませんが、appディレクトリの配下には上記以外にもEvents、Mail、Rulesなど良く使用するディレクトリがあるので、必要に応じて都度覚えていきましょう。
以上がLaravelのディレクトリ構造となります。
まとめ
今回はディレクトリ構造をざっくりと解説しました。
なんとなく全体像がイメージつきましたでしょうか?
次回はLaravelで簡単な掲示板を作りながら、アプリケーションの処理の流れを追っていきたいと思います。