自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

Laravelの全体像、ファイル・ディレクトリごとの役割と関係性を俯瞰する【各コンポーネントごとに解説】

thumbnail

Laravelのプロジェクトを作ると、大量のファイルやディレクトリで溢れかえり、気後れしそうになる。

そこで本記事では開発をスムーズにするため、Laravelの全体像、とりわけよく使うファイル・ディレクトリの役割と関係を解説する。

Laravelの全体像

Laravelの全体像

Laravelの全体像はこのようになっている。

流れ

  1. マイグレーションファイルに基づき、マイグレーション。DBのテーブルを作る
  2. クライアントがリクエストを送信する(主にGET/POST)
  3. ルーティングからリクエスト送信先のURLに対応するアクション(コントローラに書かれてある)を呼び出す
  4. コントローラに書かれてあるアクションを実行する
  5. アクションではDBにアクセスするためのモデルを読み込む
  6. アクションではユーザーから受け取ったデータをチェックするためのリクエストを読み込む
  7. アクションがバリデーションを行った上でDBへ読み書きを行う
  8. DBから読み込んだデータを、ビューの変数に当ててレンダリング
  9. レンダリングしたデータをレスポンスで返す
  10. ユーザーがページを見る

マイグレーション【 database/migrations/ 】

マイグレーションは、DBのテーブルを作ることである。

テーブルとはデータを入れる受け皿。エクセルのシートをイメージすれば話が早い。横の行をレコード、縦の列をカラムと呼ぶ。カラムには入力する値のルールが決められており、それぞれ文字列や数値など決められた値しか入力してはならない。

Laravelのマイグレーションでは、まず database/migrations/ 内にマイグレーションファイルを作り、そこにDBの構造を定義する。その上で下記マイグレーションコマンドを実行する。

php artisan migrate 

これで、DBへテーブルが作られた。後は、モデルにカラム名を定義して、ビューから読み込ませる状態にしておく。

ルーティング【 routes/web.php 】

ルーティングは、URLと処理(アクション)の対応表である。

例えば、商品購入履歴ページにアクセスした時、商品購入履歴のデータを読み込むという処理(アクション)を呼び出す必要がある。そのURLと処理(アクション)を対応付けてまとめたものがルーティングである。

ただし、URLへのアクセス(リクエスト)にはメソッドが存在する。主に二種類あり、ページに直接アクセスするGETメソッド、フォームを送信して書き込みなどの処理を行うPOSTメソッド。

LaravelのルーティングにはURLだけでなくメソッドもセットで記述する。

コントローラ【 app/Http/Controllers/ 】

コントローラーは、アクション(処理)の集合体である。コントローラで行う代表的な処理は主に2つ。DBへの読み書きと、レンダリングである。

他にもサーバーサイドの処理関係はまとめてコントローラに記述することになるだろう。

DBを読み込みをするためにモデルを、ユーザーから受け取った値のバリデーションチェックのためリクエストをuse文で読み込む。

モデル【 app/XXX.php 】

モデルは、コントローラから呼び出されDBへアクセスする際に利用される。

コントローラ単体ではDBへ読み書きをすることはできない。そこでモデルにDBに存在するカラム名を記述する。それを読み込ませることでコントローラがDBに読み書きできるようにする。

リクエスト【 app/Http/Requests/ 】

リクエストは、ユーザーから受け取ったリクエストのバリデーションチェックを記述する場所である

バリデーションチェックとは、不適切な値をDBに入れないようチェックすることである。指定文字数内に文字列が収まっているかチェックしたり、入力必須がちゃんと入力されているかチェックする。バリデーションに失敗した場合DBへの書き込みはされない。

このリクエストを適切に設定することで、表記ゆれなどを防ぐことができる。

ビュー【 resource/views/ 】

ビューは、HTML(blade.php)の集合体である。とりわけ、Laravelではblade.phpにHTMLを記述する仕様になっている。

コントローラがDBから読み込んだデータを、ビューに書かれた{{ 変数名 }}の場所に表示させる。これをレンダリングと言う。

こうしてDBのデータが適切な場所にレンダリングされたHTMLデータがコントローラによってレスポンスされる。

結論

全体像が把握できたらすぐに手を動かして覚えると良いだろう。下記リンクにて、手順に沿ってやれば簡易掲示板アプリを作ることができる。

Laravelビギナーが30分で掲示板アプリを作る方法

スポンサーリンク

シェアボタン

Twitter LINEで送る Facebook はてなブログ