[Laravel]フレームワークの全体像を大雑把に理解する


概要

この記事は「これからフレームワークを触ってみよう」という方を対象に、最低限の情報量で大まかに全体像を掴むことを目的としたものです。
Laravelフレームワークの解説している記事や本は世の中に沢山ありますが、独学だと必要な情報を取捨選択できず全体像を把握しづらいことがままあると思います。
用語等はざっくり説明します。実作業はほぼ記載してません。詳しい解説は参考リンクor他の記事をご参考ください。

この記事を読んで、全体像がどうなっていて、どういう情報が必要かというのが漠然とわかるようになっていたら嬉しいです。

フレームワークの概念

Laravelは、MVCの構成で作られたフレームワークです。
MVCパターンについて - Laravel学習帳

Q. MVCって何?

デザインパターンの一つ。
M(Model):データの処理を行う担当
V(View):ブラウザに表示する画面を担当
C(Controller):MとVをつなぐ役割
MVCフレームワークって一体何?わかりやすく解説します!

Q. そもそもなぜフレームワークが必要なの?

・色々面倒なことをやってくれるクラスやメソッドが豊富に用意されてる
・規則で決まってるのでコードが書きやすい/読みやすい/統一される/保守しやすい。
php開発者がフレームワークを使用するメリット・デメリット | アサインナビ マガジン

環境構築

まずは環境構築を行います。
「laravel インストール mac/windows」などでググって頑張ってください!笑
プロジェクトを作成し、Laravelの初期ページが見られるようになればゴールです。

実装の流れ

基本的に、実装の流れは以下になります。

  1. マイグレーションでデータベースのテーブルを作成する
  2. シーディングでテーブルに初期データを投入する
  3. Modelにデータの処理を書く
  4. ControllerでModelとViewをつなぐ処理を書く
  5. Viewで表示画面を作成する
  6. ルーティングでリクエストの行き先を書く

次のセクションで実際にファイルを見ながら解説します。

ファイルを開く

エディタでプロジェクトディレクトリを選択して開きます。
まず、フレームワークをインストールした時に現れる沢山のファイル。。。(拒絶反応😱!)

今の所、6つのディレクトリを覚えてください。
これさえ覚えておけば開発できます。

MVCの概念と一緒に理解すると分かりやすいです。

① マイグレーションファイル

  • {project_dir}/database/migrations

migrationsフォルダ内にある、 日付から始まるphpファイルはマイグレーションファイルです。
マイグレーションとは、データベースにテーブルを作成/編集する処理のことです。

② シーダーファイル

  • {project_dir}/database/seeds

seedsフォルダ内にある、xxxSeeder.phpというファイルはシーダーファイルです。
シーディングとは、初期データを投入する処理のことです。

③ Model

  • {project_dir}/app

appフォルダ直下にある、大文字から始まるphpファイルModelのファイルです。

④ Controller

  • {project_dir}/app/Http/Controllers

Controllersフォルダ内にある、xxxController.phpというファイルはControllerのファイルです。

⑤ View

  • {project_dir}/resources/views

viewsフォルダ内にあるxxx.blade.phpというファイルはViewのファイルです。

⑥ ルーティングファイル

  • {project_dir}/routes

routesフォルダ内にある、xxx.phpというファイルはルーティングファイルです。
ルーティングとは、リクエストの行き先を振り分ける処理のことです。
最初の頃はweb.phpというファイルを特によく利用すると思います。

実装する

このあたりまで頭に入れてから、掲示板などのCRUD機能のあるアプリをチュートリアルなどで実際に作ってみると処理の流れが理解しやすいと思います。

CRUDアプリの作成(一覧表示)-Laravel学習帳
PHPフレームワークLaravel5.5チュートリアル、CRUD一回り作ってみる – 名古屋のWebシステム開発 iNet Solutions

雑談

ここからは枝葉の話なので読まなくても大丈夫です。

教材について

Laravelの公式ドキュメントはよくまとまっており、読みやすいと思います。
この記事含め、ブログの記事などは情報が古かったり間違っている場合があるのであくまで公式などの一次ソースを正とする習慣をつけるのがGoodです。

また、個人的には動画の教材をお勧めします。
動画だと、記事では分からない前提や暗黙知を目で見ることができて迷う時間が減るからです。
独学でも!初心者に役立つLaravelの学習サイト12選 | TechAcademyマガジン
私も新しい言語や技術を独学する際にはドットインストールやUdemyにお世話になりました。

環境構築について

これは心がけのようなものですが、環境構築はうまくいくことの方が少ないと思っていいです。(こう思っていた方が精神的に負担が少ないです。笑)
PCの数だけいろんな環境があるので、なかなか記事や動画の通りにいきません。
なので、エラーが出ても慌てずに、エラー文をコピーして検索してみたり、詳しい人に聞いてみたりするのが良いと思います。
環境構築で挫折するのはもったいないです。

ちなみに、そういう環境構築嫌悪勢のためにVagrantDockerといった環境ごとまるっと用意してくれるものもあります。
個人的には公式で提供されているHomesteadがオススメです。興味があればどうぞ。
Laravel Homestead 5.5 Laravel
【Laravel超入門】開発環境の構築(VirtualBox + Vagrant + Homestead + Composer) - Qiita

話は変わりますが、プロジェクト作成部分についての補足です。
Laravelは最新バージョンでも良いのですが、LTS(Long Term Support:安定版)を指定してプロジェクトを作成すると、フレームワークによる思わぬ不具合を引き起こすのを防ぐことができます。
記事執筆時点(2019/5/23)の最新のLTSのバージョンは5.5です。
以下のように、composerコマンドでバージョンを指定してプロジェクトを作成できます。

$ composer create-project --prefer-dist laravel/laravel PROJECT_NAME "5.5.*"

ComposerとはPHPのパッケージ管理ツールで、必要なファイルをまとめてダウンロードしたり削除したりなどの管理を行ってくれます。
パッケージ管理ツールは言語ごとに存在し、Rubyだとbundler、Pythonだとpipenv、Node.jsだとnpmなんかがあります。
バージョン管理ツール、パッケージ管理ツールの種類をまとめました - Qiita

ちなみに、laravel newコマンドでプロジェクトを作成することもできますが、バージョンが指定できなかったり不具合があったり機能が貧相なのであえて使う必要はないと思います。

フレームワークについて

これまで説明してきたマイグレーションやModelのファイルなど各ファイルの作成等はphp artisanコマンドで可能です。
以下のコマンドで一覧を確認することができます。

$ php artisan list

データベースに関してですが、マイグレーションやシーディングを使わずに自分でデータベースにアクセスしてテーブル作成やデータ投入することも可能ですが、これらの機能があることによって後々便利な面が出てきます。

実装の流れに関しては、同じMVCのフレームワークであるRuby on Railsも同様の流れで実装します。
歴史的にはLaravelがRailsのやり方に倣って後発で生まれました。
どちらか一つ覚えておけばもう一つもすぐ理解できると思います。

エディタについて

エディタはVS Codeがオススメです。
以前はAtomやSublimeTextが主流でしたが、VS Codeが出てからはその機能のバランスの良さからかなり市場を席巻した感じがします。

最後に

記事に間違いや不明な点がある場合は遠慮なくご指摘ください。