Laravel

【Laravel(PHP)】でできる事をわかりやすく(ざっくりと)まとめてみた【用語集も兼ねて】【初心者向け】

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

といえばやっぱり『Laravel(ララベル)』

文字通り、使えば使うほど、
たくさんの機能が用意されている事を知らされます。

『Laravel(ララベル)』単独でも盛りだくさんなのに加えて、

『PHP』で作られたライブラリも組み合わせればさらにできることが広がるので、

整理もかねて、『Laravel』でできることをまとめてみることにしました。

Sponsored link

目次

『Laravel(PHP)』でできる事 システム別

ざっくり言うと、

インターネットエクスプローラやグーグルクロム、サファリなどの

『ブラウザ』で動くシステムならほぼほぼ作れちゃうんじゃないかと思います。

  • ToDoリスト
  • 家計簿
  • タスク管理システム
  • 勤怠管理システム
  • 在庫管理システム
  • ブログ
  • マッチングサイト
  • ランキングサイト
  • ショッピングサイト
  • レビューサイト(口コミサイト)
  • 画像投稿(共有)サイト
  • 動画投稿(共有)サイト
  • 会員専用サイト

などなど。

機械学習やゲーム、VR/AR/MRなどは『PHP』だとちょっと厳しいかなと思いますが、

(データ保存の部分を『Laravel』で実装というケースはあり)

インターネットを介して情報を見たり入力したりするシステムなら、ほとんど作成可能と思います。

機能も盛りだくさんな『Laravel』は、専門用語も盛りだくさんなので、

用語集も兼ね、ざっくりとそれぞれの機能をまとめてみます。

アオキ
わかりやすさ重視でいろいろはしょっていますのでぜひ寛大な心でお読みください。

※Laravel5.5ベースですが一部Laravel5.6、5.7の機能も混ざっています。

Sponsored link

『Laravel(PHP)』でできる事 機能別

インストールなど

『Laravel』のインストールは、

『PHP』のライブラリ(便利ツール)をまとめて管理している

『composer(コンポーザー)』というツールを使う事でインストールできます。

Composer公式サイト

『composer』インストール後、

$ composer create-project –prefer-dist laravel/laravel test “5.5.*”

なんてコマンドをうつことでインストールできます。

参考記事

『Laravel(ララベル)』でできる事 雛形が簡単につくれる

『Laravel』には『artisan(アルティザン)』という機能があり、

この機能を使うことで簡単に各機能の雛形ファイル(スケルトンといったりもします)を作ることができます。

例えば、

$ php artisan make:model Test // Testモデルを生成
$ php artisan route:list // 現在のルーティングを表示
$ php artisan tinker // DB接続

他にも php artisan list とうつと、使えるコマンドの一覧が表示されます。

『artisan』は『職人』という意味らしいです。

アオキ
まさにウェブ職人のための (略

『Laravel』でできる事 共通

『Laravel』公式サイトでもまっさきに説明されているのが、

  • 『サービスコンテナ』
  • 『サービスプロバイダ』
  • 『DI(ディペンデンシーインジェクション・依存性の注入』

といった用語で、

ざっくり言うと、

インスタンスを管理する仕組み

の事です。

『PHP』はオブジェクト指向なプログラミング言語で、

オブジェクト指向・・ざっくりいうと、使い回ししやすい仕組み
 
使い回ししやすくする事で、ミスを減らしたり、コード量を減らしたり、テストしやすくしたりできる。
 
例えるなら、カレーとシチューと肉じゃがを作るとして、
 
途中までは作り方が同じなので、どれでも使えるようなコードにしておいて、
 
最後の味付けだけ変える、みたいな。

本来オブジェクト指向で作るためには、

クラスを作ってインスタンス化 (new クラス名) という手順を踏む必要があるのですが、

参考記事

インスタンス化の部分を

  • 『サービスコンテナ』・・インスタンス化を管理する仕組み
  • 『サービスプロバイダ』・・起動時に読み込む
  • 『DI(ディペンデンシーインジェクション・依存性の注入)』・・インスタンスなどをメソッドに渡す

という仕組みを使うことで、毎回毎回インスタンス化しなくてもいいような仕組みになっています。

『ファサード(Facade)』

ファサードはフランス語で『玄関』のことで、英語のfaceと同じ意味らしいです。

config/app.php 内に記入しておくことで、

例えばデータベース関連の機能なら、

DB::ほにゃらら

メールなら

Mail::ほにゃらら

エクセルなら

Excel::ほにゃらら

といった形で使うことができるようになり、これまたシンプルなコードが描きやすい仕組みになっています。

Sponsored link

『Laravel』でできる事 データベース周り

『Laravel』などのウェブアプリケーションはもれなく大量のデータを扱う事を想定しているので、

データベースとも接続しやすく、使いやすいように設計されています。

  • mysql (マイエスキューエル)
  • sqlite (エスキューライト)
  • postgresql (ポストグレエスキューエル)
  • aws (エーダブリューエス、アマゾンのサービス)

などなど。

個人的に『Laravel』のいいところは、

『PHP』と『mysql』の組み合わせができるので、

エックスサーバーやロリポップなどのレンタルサーバーでも動かせることかなと思います。

ブログツールとして一番人気な『ワードプレス』も『PHP』と『mysql』の組み合わせなので、

これまた普及しやすい要素なのかなと思ったりしてます。

クエリビルダ

データベースとやりとりするにはもれなく『SQL( エスキューエル)』という言語が必要なのですが、

そのまま書くと結構な長さになり、読みづらくなっていってしまうので、

より読みやすい形で使えるようにしたのが『クエリビルダ』です。

例えばこんなSQL文なら、
select * from accounts where status <> 1

クエリビルダを使うとこうかけます。

これくらいの量だとあまり違いないですが、
二つのテーブルをくっつけたり、サブクエリをつくったりと、
長いSQL文になるほどに便利さがじわりとでてきます。

ページネーション

例えば100件のデータがあって、

100件を全て同じページに並べると見るのが大変なので、

10件ずつなど分けて表示させる事が簡単にできます。

マイグレーション

『Laravel』側でデータベースのテーブル情報を作っておく事で、

$ php artisan migrate とコマンドを打つ事で、

自動的にデータベース内のテーブルを作る事ができます。

$ php artisan refresh

とうつ事で作り直しも簡単にできて、

さらに 後述の seeder/faker/factoryという組み合わせでダミーデータも簡単に再登録できます。

tinker(ティンカー)

データベースとつないでコマンド確認したりできます。

『Laravel』でできる事 Eloquent関連

『Eloquent(エロクエント)』(よく表す、雄弁という意味)というなんともわかりづらい名前ですが、

要はデータベースの設定をPHPで書けるという機能です。

  • テーブル名
  • 外部キー
  • リレーション
  • ユニークキー

などの、データベース内のテーブルの設定をPHPファイルで書く事で、

見やすく管理しやすい仕組みになっています。

リレーション

データベースの機能ではありますが、

1対1、1対多、多対多という紐付けを簡単に設定でき、

リレーション先のデータも簡単に取り出す事ができます。

スコープ (scope)

よく使うクエリーをスコープとして設定しておく事で、

簡単に呼び出せるようにしています。

アクセサ/ミューテタ

データベースへの保存や取り出す時に、
データの表示を変えたりする際に使います。

  • アクセサ・・データ呼び出し時に整形したりする (getXXXAttribute)
  • ミューテタ・・データ保存時に加工したりする (setXXXAttribute)

コレクション

『クエリビルダ』などでデータを取り出す際に

『コレクション』という配列を拡張した形式で取得できます。

様々なデータ処理がやりやすい仕組みになっています。

【5.5対応】Laravel の Collection を使い倒してみたくなった 〜 サンプルコード 115 連発 1/3

ダミーデータ生成 seeder/factory/faker

  • seeder(シーダー)
  • faker(フェイカー)
  • factory(ファクトリー)

を使う事で、簡単にダミーデータを量産できます。

参考記事

他にも、

  • イーガーローディング・・n+1問題、SQLが無駄に増えちゃうのを防ぐ
  • バルクインサート・・複数のデータをまとめて投入
  • トランザクション・・同時登録にならないよう排他をかける(二重引き落としを防いだり)

などなどいろんな用語・機能があります。

アオキ
Laravelに限らない機能も混ざってますが多めに見てくださいませ
Sponsored link

『Laravel』でできる事 ルーティング

ファイルの場所に依存しないで、URL毎に処理を切り替える事ができます。

サッカーで言えば遠藤や柴崎のようなパサーです。

『Laravel』の基本的な流れとして、

アクセスがくる->ルーティングで振り分ける->コントローラーで処理する->ビューを表示する

という流れになっているので、

文字通りパスを振り分ける役割を担っています。

API

最近は『API(アプリケーションプログラミングインターフェース)』としての役割も増えていて、

『JavaScript』から『Ajax(エージャックス、非同期通信)』できた依頼を振り分けるという事も簡単にできます。

補足:『API』として使う場合はデータベースの情報を『JSON』形式で応答する必要があります。

JSON・・ジェイソン。JavaScript Object Notationの略。以前はXMLが主流だったけれど最近はAPIといえばJSONさん(軽くて読みやすい)。

『Laravel』でできる事 コントローラー

ルーティングされた後、各コントローラの中の各メソッドで処理をして、ビューを表示するのですが、

処理を書くほどコントローラー内のコード数が増えてしまうので、

できる限り『サービス』や『スコープ』など機能を振り分けて、

コントローラーはできるだけスリムにするのがよいとされています。

RESTfulコントローラー

$ php artisan make:controller XXXController –resource

と打つ事で、

index, create, store, show, edit, update, destroy

といったメソッドを持つコントローラーをさくっと作成できます。

サービス

『Laravel』にはサービスと名前がつく機能が他にもあるのでややこしいのですが、

  • 『サービスコンテナ』・・インスタンス化を管理する仕組み
  • 『サービスプロバイダ』・・起動時に読み込む

とは別に、

『Services』というフォルダをつくって、その中に処理を書いておいて、

コントローラーから『Services』内の処理を呼び出すことで、

とにかくコントローラーをスリムにするような運用が多いようです。

アオキ
Javaでの作り方が参考になっているとかいないとか
Sponsored link

『Laravel』でできる事 ビュー(見た目)

『Laravel』では見た目(ビュー)も使いやすい仕組みがありますが、

最近は『Vue.js』など、JavaScriptをゴリゴリ使った

『SPA(シングルページアプリケーション)』に押されてる感もあります。

Blade (ブレード)

アットマークの後にforやifなどの文を使うことで、表現しやすく書きやすくしています。

ヘッダー、フッター、ナビなど共通で使う部品は、

@include や @extends などを使うことで使い回ししやすくしています。

(部品のことをパーシャルと言ったりもします。)

ViewComposer(ビューコンポーザー)

よく使うビューファイルを使い回ししやすくした仕組みです。

アオキ
とにかく似たような事はなんども書かず、使い回しすることで全体のコード量を減らしつつ、読みやすい仕組みになってるんですね。

多言語化

様々な言語に変えやすい仕組みになっています。
(翻訳元の文章と、翻訳先の文章は必要です。)

公式ドキュメント

Laravel Mix

『Laravel Mix(ララベルミックス』は『webpack(ウェブパック』のラッパー(包み込んでる)です。

最近のフロントエンドでは『Vue.js』や『Sass』などがよく使われますが、

これらのたくさんのファイルをまるっとコンパイルして、js, cssとそれぞれ1つのファイルにまとめて、読み込みを軽くする技術です。

『JavaScript』などのフロント側は『Node.js』が必要なのでインストールしておいて、

npm install とコマンドをうつことで、様々な機能をまるっとインストールできます。

Sponsored link

『Laravel』でできる事 フォーム関連

ウェブアプリケーションはもれなくデータを入力する画面があるので、

フォーム関連も使いやすい機能が揃っています。

CSRF対策

フォーム用のセキュリティ対策です。

バリデーション(カスタムリクエスト)

フォームに入力した情報が、

「メールアドレスじゃない」とか
「パスワードは8文字以上」などの判定をつけやすい仕組みになっています。

『カスタムリクエスト』をつくることで、

リクエストに応じた(フォームに応じた)チェックをかける事ができます。

Flashメッセージ

「メールアドレスじゃない」とか
「パスワードは8文字以上」などの一時的なメッセージも出しやすいです。

簡単にフォームを使える仕組み laravelcollective/html

フォーム用のファサードを使えて、簡単にフォームが作れる仕組みで、

公式からは外れたものの愛好者多数な機能です。

composer でインストールします。

ファイル保存

画像を保存する方法も、

  • local
  • public
  • AWS S3

などの設定があらかじめ準備されています。

『Laravel』でできる事 通信関連

ログイン情報を保持するためのセッションや、

フォーム送信時のリクエスト、GETやPOSTといった処理も簡単に利用できます。

APIの場合は GET/POSTに加え、PUT、DELETE、PATCHといったメソッドも使用機会がでてきます。

(ルーティングする際に、get, post それぞれでメソッドを振り分けたりできます。)

Sponsored link

『Laravel』でできる事 ログイン認証周り

ログイン機能も簡単で、

$ php artisan make:auth

だけで作成できます。

アオキ
認証って一から作ると大変ですが、あまりにあっさりつくれて拍子抜けしちゃいます。

マルチログイン

例えば、管理者と、従業員と、お客さんのように、

役割によってログイン画面を切り替えるというのも簡単にできます。

Laravel5.4でマルチログインを実装する

SNS認証

TwitterやFacebook、Googleなどのアカウントを使ったログイン認証もできます。

  • Laravel Socialite(ソーシャライト) という機能にて。

composerでインストールできます。

$ composer require laravel/socialite

他にも、

  • Laravel Passport (OAuth2) という認証強化版もあります。

OAuth2 (オーオウス)・・個人情報 全てにアクセスするのではなく、部分的に情報取得できる仕組み。
 
例えばTwitterからFacebook連携するとして、
 
Twitterに登録されている情報を全てFacebookに渡すといろいろ問題あるので部分的に使おうねっていう。

アオキ
APIを外部に公開するなら OAuth2 使っときましょ
Sponsored link

『Laravel』でできる事 テスト

『PHPUnit』というツールがあらかじめ準備されているので、簡単にテストコードを作れます。

最近では先にテストを書いてからコードを書く、『テスト駆動開発(TDD)』という手法も増えているようです。

ブラウザテスト(Laravel Dusk)

  • Laravel Dusk(ダースク) という機能を使って、

グーグルクロムのドライバも組み合わせる事で、ブラウザテストができます。

  1. このページを開いて、
  2. IDとパスワードを入力してログインして、
  3. このボタンを押してCSVダウンロードさせて、

といった事を自動化できます。

アオキ
機能もりだくさんすぎー

『Laravel』でできる事 クレジットカード決済システム

『stripe』, 『pay.jp』, 『paypal』などの決済サービスを組み合わせる事で、

クレジットカード決済の仕組みも組み込むことができます。

  • Laravel Passport(パスポート)

という機能では月額課金もできるようです。

もちろん決済の個人情報を持つのはリスクが高すぎるので、
それらの情報毎、各決済会社に委ねるという形になります。

(申請者側の審査が通れば使えるようになります。)

余談ですが、

『stripe』では銀行振込用のAPIもあるそうですが、こちらはなかなか実装に手間がかかるようです。

『Laravel』でできる事 バッチ処理

$ php artisan make:command XXX

とうつことで、コマンドをうって処理したり、

レンタルサーバーなどにはもれなくインストールされている 『cron』 という仕組みを使う事で、

毎日、毎週、毎月といった、定期的な処理も実装することができます。

例えば、

月初めに先月の売り上げデータを出力する

などの処理を自動化できます。

『Laravel』でできる事 イベント処理(非同期処理)

ログインしたら記録を残したり、
フォーム入力したらメール送信したり、

何かのイベントが発生したタイミングで処理をする、という仕組みもつくれます。

関連キーワード

  • イベントリスナー
  • キュー
  • Laravel Horizon・・Redisキューのために作られた、キューの監視ツール
Sponsored link

『Laravel』でできる事 メール送信

『Mailable』というクラスを使う事で、

テキストメール・HTMLメール共に作成できます。

メール送信にはSMTPサーバーの設定が必要ですが、他にも

  • Mailtrap ・・テスト用のメール送信サービス
  • Mailgun API ・・毎月10,000通までのメール送信が無料

など外部のサービスと組み合わせて使ったりします。

『Laravel』でできる事 Slack通知

メール送信以外にも、Slackなどのチャットツールに通知させることもできます。

『Laravel』でできる事 Webスクレイピング

  • Goutte(グット) ・・PHP用Webスクレイピングのライブラリ

composerでインストールできるWebスクレイピングツール。

例えば楽天トラベルとamazonの価格を取ってくるなど、ブラウザで表示されるデータならほぼほぼ取得できます。

laravelじゃなくてもできるんですが、組み込みも簡単です。

『Laravel』でできる事 CSVインポート/エクスポート

事務系ではよく使われるデータの代表がCSVですね。

参考記事


『Laravel』でできる事 PDF生成

『TCPDF』などのライブラリを使うことでビューで作成した画面のPDF生成もできます。

laravelじゃなくてもできるんですが書いておきます。

『Laravel』でできる事 画像加工

Intervention/image・・画像をリサイズしたりごにょごにょできるハイクオリティーなライブラリです。

アオキ
こちらもlaravelじゃなくても(略

『Laravel』でできる事 日付計算がしやすい

『Carbon』というライブラリにて。

アオキ
これまたlaravelじゃな(略

『Laravel』でできる事 キャッシュ Redis

読み込みスピード改善

『Laravel』でできる事 リアルタイムチャット

  • Laravel Echo(ララベルエコー)

『Pusher』という外部アプリと組み合わせることでリアルタイムチャットがつくれます。

アオキ
お問い合わせチャット機能、最近増えてきてますね。

『Laravel』でできる事 デバッグ関連

  • Logファサード
  • Laravel Debugbar
  • Laravel telescope (laravel 5.7.7以上)

などで開発中の細かいデータが見たいときに重宝します。

『Laravel』でできる事をまとめてみて

よくもまぁこれだけの機能をまるっともりこんだもんですね。

まだまだ書けてないキーワード・機能などありますので、

おりをみて更新していきたいと思います。

アオキ
とにかくWEB系ならなんでもできちゃって、
アオキ
数多のPHPライブラリとも組み合わせしやすくて、
アオキ
レンタルサーバーで安く動かせるってのは魅力的ですね〜
created by Rinker
¥3,240 (2019/02/19 04:36:03時点 Amazon調べ-詳細)

参考記事
Laravel 入門

Laravelでウェブアプリケーションをつくるときのベストプラクティスを探る

『Laravel』ではこんな記事も読まれています。

1. 【Laravel(PHP)】でできる事をわかりやすく(ざっくりと)まとめてみた【用語集も兼ねて】【初心者向け】

2. 【PHP】【laravel】CSVエクスポートの方法〜5つのポイント〜

3. 【PHP】CSVインポートの方法〜大量データもバルクインサートでバッチリ!〜【laravel】

4. 【laravel】ダミー(テスト)データを作る方法 シーダー(seeder)とfactoryとfaker【初心者向け】

5. 【Laravel5.5】Webアプリケーションを作るためのゆるめの環境構築編【Node.js】【npm】【Vue.js】【初心者向け】

6. LaravelとVue.jsのサンプル動画を見ながらさらりと解説してみる

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


Sponsored link

関連記事

  1. #100DaysOfCode

    【Webアプリ実践記】JSすら怪しい37歳おっさんが独学でVue.js+Laravelでwebアプリ…

    本業Webマーケッターと育児をしながら独学でwebアプリをつくってみる…

  2. #100DaysOfCode

    【Vue.js/Laravel】Webアプリ実践記 37歳おっさんが独学でVue.js+Larave…

    webアプリ実践記 0日目~10日目webアプリ実践記 11…

  3. Laravel

    Laravel入門ならこの本一択! 今までの疑問点がどんどんスッキリしていった話

    PHPのフレームワークといえば、今ならなんといっても『Laravel(…

  4. Django

    【Django】【Laravel】【RubyOnRails】を比較してみた【初心者向け】【体験談】

    さらに開発力を高めるべく、先日とあるサロンに入会しまして、…

  5. Laravel

    LaravelとVue.jsのサンプル動画を見ながらさらりと解説してみる

    ここ数年、ユーチューブで見れるプログラミング動画が増えています。し…

  6. Laravel

    【laravel】ダミー(テスト)データを作る方法 シーダー(seeder)とfactoryとfak…

    『PHPの現場』というポッドキャストの放送で、ひときわ印象に残…

Sponsored link

最近の記事

アーカイブ

Sponsored link
  1. Vue.js

    【Vue.js】かっこいいフォトギャラリーを発見したのでソースを読んでみた。カテ…
  2. アルデュイーノ Arduino

    【Arduino】ラジコンをつくってみた 〜今ドキのプログラミングの覚え方
  3. HTML/CSS

    【厳選8冊】ホームページを作れるようになるためのおすすめ本【初心者向け】
  4. PHP

    【PHP】配列や連想配列が覚えづらかったので学校に例えてみた【初心者向け】
  5. Vue.js

    Vue.js+Vue-router+BulmaでさくっとSPAをつくってみた【初…
PAGE TOP