LoginSignup
47
44

More than 1 year has passed since last update.

Laravel 超初心者講座~ディレクトリ構造について~

Last updated at Posted at 2022-01-27

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で簡単な掲示板を作りながら、アプリケーションの処理の流れを追っていきたいと思います。

47
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
44