Laravel ロゴ

Laravelの特長や機能、勉強法など基本的なことをまとめてみた。

人気のフレームワーク「Laravel」について自分の勉強のためにも、どういうものなのか、どんな機能なのか、フォルダなど基本的な部分をまとめました。

詳しい操作方法は記述していませんが、こういうものなんだなっていうのがわかれば幸いです。

Laravelとは

LaravelはPHPで書かれたフルスタックのWebアプリケーションフレームワークです。現代的なフレームワークが要求される一通りの機能を実装しています。

2011年にリリースされてから人気が高まっていて、世界では最も人気のフレームワークです。

Laravel公式ホームページ

 

そもそもフレームワークとは開発で多用される機能や仕組みを持ったソフトウェアのこと
(それに対してライブラリは開発に役立つ便利な機能を揃えたソフトウェアのこと)
フレームワークは設計されたシステムでセキュリティやメンテナンス、拡張性の面などで誰にでもわかりやすいです。

Laravelの特長

Laravelの特長は以下のような点です。

  • MVCフレームワーク、アプリケーションフレームワークで広く使われている。詳しくは後述
  • コードが読みやすく、書きやすい。
  • 学びやすく高品質のものを作れる
  • Composerにより管理がしやすい
  • ORM(Object-Relational Mapping)を導入している。オブジェクトを扱うようにデータベースを扱える。
  • Bladeと呼ばれるテンプレートエンジンを使用している。

ディレクトリ構造と役割について

ディレクトリ構成と役割について簡単に

ディレクトリ構成

  • app   アプリのメインとなるフォルダ
  • bootstrap   初期処理やキャッシュなど
  • config   アプリの設定ファイルを置くところ
  • database   データベース(マイグレーション)関係
  • public   画像、JS、CSS 外部に公開されるもの
  • resources   bladeなど(HTML的な部分)
  • routes   アプリのURL設定など、ルート定義するディレクトリ
  • storage   セッションやログなどをやる
  • tests   テスト用、テストを置くためのディレクトリ
  • vender   Composerの依存内容、フレームワーク本体のプログラム

appフォルダ
このフォルダはメインかつ使用頻度も高いフォルダ
中身は以下のようになっています。

console コンソールプログラム関連
Exceptions 例外処理関連
Http アクセスしたときの処理をまとめるとこ
Providors プロバイダ関連アプリケーションの中の全てのサービスプロバイダがここにくる
User.php ユーザー認証に関するもの

 

routesフォルダ

api.php APIのルーテイング
channels.php ブロードキャストチャンネルのルーテイング
console.php コンソールプログラムのためのルーテイング
web.php Webページにアクセスするためのルーテイング

MVCとは

MVCとはModel(モデル), View(ビュー), Controller(コントローラ―)の頭文字からきていて、アプリケーションフレームワークとして広く使われています。
(laravel以外にもRuby on rails等にも使われている方法)

これはWebアプリを実装するためのデザインパターンの1つで、機能ではなく「概念」のようなものです。

ただコードを書いて開発していくと、だんだんとコード数が膨大になり、コードの破綻が起きてどこに確認したいものがあるか、どこに新しいコードを書くべきかわからなくなってしまいバグや不具合の原因になります。

なので、MVCという概念を使い機能を分けて管理し、効率的に開発していきます。

 

MVCではそれぞれ役割を分けてコーディングします。

Model(モデル)・・・データ処理担当
データベースとデータのやり取りを行います。

View(ビュー)・・・画面表示担当
ブラウザに表示するHTMLを動的に生成する部分です。

Controller(コントローラ)・・・制御担当、橋渡し役
リクエストを受け取りURLに応じて、設定された処理を行います。

MVCの簡単な流れ

  1.  routeでアクセスの管理、関連付け
  2. アクセスが来たらその処理をコントローラーで行い、処理の割り振りを行う。
  3. データの処理はModelで行い、データの接続をする
  4. データをコントローラーに返す
  5. Viewにデータを渡して、viewでサイトの見た目を処理する

MVCの流れ

マイグレーションとは

SQLを直接使わなくても、データベースを管理できるlaravelの仕組みです。

LaravelのデフォルトではMySQLが設定されていますが、設定のdriverをsqliteに変更すればSQLiteが使えるようになります。

Schemaファサードを使っていて、テーブルの作成や操作をサポートしてるデータベースシステム全部に対しサポートします。

 

テーブルの作成は下のような流れで行います。

テーブル作成の簡単な流れ
1.マイグレーションファイルを生成。(1テーブル1ファイル)
2.ファイルにテーブル定義を書く
3.マイグレーションを実行し、DBに反映

ファイルの場所はdatabase/migrationsにあります。

以下のコマンドでテーブルを生成でき、ファイル名は 生成時間_アクション名_テーブル名という構成になっています。

php artisan make:migration create_users_table

 

マイグレーションの中身
upとdownメソッドが作られています。

upが実行(作成)で、downが元に戻す(削除)メソッドです。

upでは新しいテーブルやカラムなどをデータベースに追加するために使用されます。

用意したマイグレーションはphp artisan migratedeのコマンドですべてのファイルが実行されます。

 

逆に最後のマイグレーション操作を元に戻すにはrollbackコマンドを使います。

php artisan migrate:rollback

Eloquent(エロクアント) ORMとModel(モデル)

Laravelで提供されているデータ操作のための機能であり、モデルとDBを対応づけます。

モデルはテーブルの内容を定義したクラスのことです。

ORMObject Relational Mappingの略で、プログラミング技法のことです。

これによりデータベースから取得したデータをオブジェクトの形に変換して渡されるようにします。反対にデータベースにデータを渡すときはレコードに変換されて渡されます。

 

モデルのひな型のつくり方(コマンド)
php artisan make:model モデル名
モデル名はテーブル名の単数形にする必要があります。

 

Eloquentには様々な規約があり、そのうちの一つで「データベース名は、モデル名の複数形にする」というものです。

users -> User

このようにするとUserモデルができます。テーブル名はusersです。

モデルクラスは「Model」を継承したクラスとして作成されます。


User class内で $fillableを使用すると指定したカラムに関してはデータの追加や更新ができます。(ホワイトリスト方式)

反対に$guardにする場合は、データの追加や更新をされたくないカラムのみを指定して、あとは全部許可する(ブラックリスト方式)という$fillableの逆の方式もあり、どちらかを設定することができます

 

より詳しく知りたい方は公式サイトのEloquentのドキュメントを読んでみてください。

Routeルーテイングとは

ブラウザから任意のURLにアクセスがあった場合、どのController処理を動かすのかを定義するものです。

「あるアクセスをしたらそれに対応した処理を呼び出す」のがルーテイングという機能。

Laravelのルートは、routeディレクトリ下に設置されている、ルートファイルで定義されます。routes/web.phpファイルでwebに表示するルートを定義します。

HTTPメソッドも使用可能です。

Route : : get(~);

Route : : post(~);

Route : : put(~);

Route : : patch(~);

Route : : delete(~);

Route : : options(~);

他のURIへリダイレクトする場合はRoute : : redirect メソッドを使用します。

 

定義方法
Route::get(アドレス,関数など)

具体例 Route::get('blogs','BlogController@show')

Route  laravel既存のRouteファサード
get   HTTPメソッドを指定
blogs  この部分には任意のURL
BlogController 作ったコントローラーを指定する
show コントローラーのメソッド名を指定

この場合、BlogControllerのshowメソッドが実行される。

 

ルート定義にnameメソッドを使って、そのルートに名前を付けることもできます。

Route::get('blogs','BlogController@showList')->name('blogs')

 

controller(コントローラー)とは

routeで定義されたHTTPリクエストの処理を書いていくところです。

Controllerのメソッドであるクラスを呼び出してデータを取得し、Bladeに取得したデータを渡します。

クラスとして生成されLaravelの既存のコントローラクラスを拡張して作られています。コントローラーはコードを少なくするのが良いとされています。

 

コントローラを作るコマンド
php artisan make:controller コントローラ名

 

クラスを階層的に整理するための名前空間というものが使われています。

ルートファイルをロードしていて、use文で先頭の名前空間は書かれているので、それに続く名前空間の部分だけを指定します。

クラス内に書かれたメソッドはアクションとして扱われます。returnされた内容がwebブラウザに返され、このアクションにはルーテイングフォルダ内のweb.phpでルートを割り当てることで使えます。

 

Controllerの「validate」メソッドを利用すると簡単にバリデーションすることができます

バリデーションとは入力されたデータが正しく入力されているかチェックすることです。

アクションメソッドから

$this->validate($request,[検証する設定の配列]);

のように呼び出せます。

Bladeとは

BladeはシンプルでパワフルなLaravelのテンプレートエンジンでビューの中にPHPを直接記述できます。
(PHPにはsmartyというテンプレートエンジンもある)

ファイル名は

ファイル名.blade.php

とします。

 

Bladeはテンプレートの継承やデータの受け渡しができます。

変数を使うときは{{ 変数 }}とする。変数以外にも値や式、関数などが入ります。({{ }}は自動的にhtmlspecialchars関数を通します。)

エスケープ処理の場合は{{!! !!}}と!マークが入ります。

 

@で始まるとbladeで「@ディレクティブ名」と書きます。@endディレクティブ名が基本的に対になっています。

@extends('') 括弧内のbladeを継承する
@yield('content') 括弧内が同じ@sectionを読み込む
@section('content')~@endsection このブロック内容を@yieldに追加
@include(file) ファイルを読みこむ

サンプルコード

Laravelの公式ページより引用

Bladeのドキュメント

 

*フォームを利用するときはCSRF保護が必要

csrf(クロス・サイト・リクエスト・フォージェリ)とはwebサイト攻撃の1つで外部からフォームを送信するものです。
Laravelでは@csrfを記述するだけでよく、トークンを生成し外部からの攻撃を防いでくれます。

LravelではCSRF対策がなさ邸内フォームの送信は受け付けられないようになっています。

Seederとは

seeder(シーダー)とはlaravelのクラスの1つで、テストデータや初期データを簡単にデータベースに設定できるようにするものです。

シーティングの手順は以下のようになります。

  1. まず初期データやテストデータの内容を記述したシーディングのためのファイルを作成します。
    このコマンドで生成できます。
    php artisan make:seeder ファイル名
  2. 次にファイルを編集し、シード(最初に用意しておくレコード)を追加しておきます。
    seederファイルのrunメソッドに設定を記述し、データ作成の処理を書いていきます。
    DatabaseSeeder.phpに登録することで呼び出せます。
  3. そしてartisanコマンドで実行します。以下のコマンドで実行できます。
    php artisan db:seed

この手順でその内容に沿ったデータがデータベースに登録されます

 

factory
factoryとはEloquentモデルを使ってテストデータを作る際に便利な機能です。主導ではなく自動でデフォルト値を設定してくれます。名前や住所、電話番号などを指定すると、ランダムデータを生成してくれます。

作成するコマンド

php artisan make:factory ファイル名

Faker phpライブラリのインスタンスを使います。

勉強するには

Laravelの学習におすすめの教材やサイト、サービスを紹介します。

PHPのフレームワーク Laravel入門(第2版)」はLaravelの学習の定番の解説書のような存在です。

基本的なことはこの1冊でしっかり学習できるので、まずは1度読んでみてその後何か制作してみるのがおすすめです。

またところどころリンクを貼っていましたが、Laravel公式ページのドキュメントがあります。勉強になるので一度読んでおくといいと思います。

Laravel-ウェブ職人のためのPHPフレームワーク

 

TECHACADEMYには「PHP/Laravelコース」があり、短期間でオリジナルサービスを開発できるようになる学習プログラムが用意されています。

自分で学習するのが難しい方にはおすすめです!

 

Techpitというサイトではサービスを実際に作りながら学習できます。

Laravelを使った教材もたくさんあるので基本を一通り学んだらやってみるのもおすすめです。

Techpit

 

基本的なことを学んだら実際に何か開発してみるのが一番身につきます!

さいごに

あまりうまくまとまっていなかったかもしれません。またしっかりと整理したいと思います。

ここで紹介したのはほんとに基本の部分になります。

まだまだいろいろな機能があるのでLaravel使いこなせるように頑張りましょう!

プログラミングのイメージ

2020/10/18

最新|web制作やプログラミングが学べる無料&有料サイトまとめ

最近ではプログラミング学習の必要性が高まり、それに伴ってプログラミングが学べるサイトや教材も増えてきました。 そこで、web制作やプログラミング学習に役立つおすすめのサイトをまとめました! ぜひ参考にしてみてください! natsu大学時に独学でプログラミング学習をして、あるIT企業で内定をいただきました。学習で利用した教材・サイトを紹介します! 目次progate(プロゲート)ドットインストールudemytechpitアールエフェクトELOOP(イーループ)その他、学習に役立つサイト!Qiitaterat ...

ReadMore

RaiseTechのロゴ

2020/8/26

RaiseTechを実際に受講してみた感想・体験談!|レイズテック・WordPress副業コース

最速で「稼げる」プロを目指すエンジニアリングスクール RaiseTech(レイズテック)の受講したので、特徴や感想をまとめました。 natsu筆者です!今回僕は、「WordPress副業コース」を受講しました! 目次RaiseTech(レイズテック)ってどんなスクール??どんなコースがある?AWSフルコースAWS自動化コースJavaフルコースJavaフレームワークコースWordPress副業コース実際にWordPress副業コースを受講してみた!RaiseTechで受講をしようと思った理由は?いいとこ・悪 ...

ReadMore

Laravel ロゴ

2020/8/26

Laravelの特長や機能、勉強法など基本的なことをまとめてみた。

人気のフレームワーク「Laravel」について自分の勉強のためにも、どういうものなのか、どんな機能なのか、フォルダなど基本的な部分をまとめました。 詳しい操作方法は記述していませんが、こういうものなんだなっていうのがわかれば幸いです。 目次LaravelとはLaravelの特長ディレクトリ構造と役割についてMVCとはマイグレーションとはEloquent(エロクアント) ORMとModel(モデル)Routeルーテイングとはcontroller(コントローラー)とはBladeとはSeederとは勉強するには ...

ReadMore

database image

2020/8/22

初心者向け!SQLでデータベース操作のための基本的な書き方まとめ

  SQLはデータベース言語の一つで、データベースの定義や操作を行うことができます。 この記事ではSQLの基本的な使い方をまとめました。 目次SQL、データベースとはテーブルの作成SELECT文WHEREINSERTUPDATEDELETEORDER BY と GROUP BY制約勉強するには SQL、データベースとは 大量のデータを保存し、コンピューターからアクセスできるようにしたデータの集まりをデータベースと言い、DBと略します。   このデータベースを管理するシステムをデータベー ...

ReadMore

プログラミングイメージ

2020/8/10

JavaScriptで配列をシャッフルするフィッシャー・イェーツ

JavaScriptで配列をシャッフルさせるフィッシャー・イェーツのシャッフルについてです。 フィッシャー・イェーツのシャッフル フィッシャー・イェーツのシャッフルは、有限集合からランダムな順列を生成する方法です。 ロナルド・フィッシャーおよびフランク・イェーツの名前から名づけられました。 wikipedia フィッシャー–イェーツのシャッフル   簡単に言うと、配列から数字をランダムに一つ取り出し、取り出した順に並び替えて行く方法です。 ランダムに取り出していき並びなおすので、並び方をシャッフ ...

ReadMore

パソコン作業のイメージ

2020/8/4

IT系の就職にレバテックルーキーってどう?大学生が利用した感想!

新卒学生向けのサービス、レバッテクルーキーをご存知でしょうか? 新卒ITエンジニア専門の就職エージェントのサービスです!   IT系の就職を完全に無料で相談し、サポートしてもらうことができます!   natsu初めまして、筆者です! IT系での就職を目指している中、レバテックルーキーを利用させていただきました! IT系の就職を考えている方、悩んでいる方、ぜひこの記事を読んでみてください! 目次レバテックルーキーってどう?ほんとにIT系に就職できるの?サービスの内容は?サービス利用の流れ ...

ReadMore

teacher's pet

2020/8/1

teacher's pet|英語表現を覚える

teacher's petってどんな意味?? 「teacher's pet」 先生のお気に入り   直訳すると「教師のペット」という意味なので、先生にいいように使われる生徒のようなイメージかもしれませんが、そういった意味ではなく先生に気に入られた生徒を指します。 学校でよく使われる言葉で、成績が優秀だったり、問題を起こさなかったり、先生の言うことを素直に聞く生徒です。   ペットのように可愛がられるというニュアンスもありますが、先生に媚を売ってペットのように接しているという軽蔑的なニュ ...

ReadMore

2020/7/29

broaden one's horizons|英語表現を覚える

broaden one's horizonsってどんな意味?? 「broaden one's horizons」 視野を広げる   「broaden」は広げるの意味。 「horizon」は地平線とか水平線という意味ですが、複数形だと視野とか範囲の意味があるみたいです。 one'sのところには誰のかという単語が来るので、myを入れれば自分の視野を広げる意味になります。   例文:Learning culture broadens your horizons. (文化を知ると視野が広がる) ...

ReadMore

2020/7/27

back to square one|英語表現を覚える!

back to square oneってどんな意味?? 「back to square one」 振出しに戻る、最初から という意味があります。英語での意味も「to start again」と書いてあるのを見ました。   スゴロクなどでスタート地点の四角いマスからきています。 水の泡になるという風にも使えると思います。(水の泡になる → はじめからやり直し)   例文: I have to be back to square one and take same class again ...

ReadMore

no image

2020/7/27

catch off guard|英語表現を覚える!

catch (someone) off guard はどんな意味?? catch (someone) off guard には「不意を突く」という意味があります。   off guardが油断しているという意味で guard(ガード)がoff(オフ)のところを捕まえる と覚えたら覚えやすいかもしれません。   例文: I was caught off guard  when my boss suddenly asked me.  (私の上司が突然尋ねてきて、不意を突かれた) &nbsp ...

ReadMore

© 2020 FW ~FREEWALK~ Powered by AFFINGER5