ウェブ職人のためのPHPフレームワーク
といえばやっぱり『Laravel(ララベル)』。
文字通り、使えば使うほど、
たくさんの機能が用意されている事を知らされます。
『Laravel(ララベル)』単独でも盛りだくさんなのに加えて、
『PHP』で作られたライブラリも組み合わせればさらにできることが広がるので、
整理もかねて、『Laravel』でできることをまとめてみることにしました。
『Laravel(PHP)』でできる事 システム別
ざっくり言うと、
インターネットエクスプローラやグーグルクロム、サファリなどの
『ブラウザ』で動くシステムならほぼほぼ作れちゃうんじゃないかと思います。
- ToDoリスト
- 家計簿
- タスク管理システム
- 勤怠管理システム
- 在庫管理システム
- ブログ
- マッチングサイト
- ランキングサイト
- ショッピングサイト
- レビューサイト(口コミサイト)
- 画像投稿(共有)サイト
- 動画投稿(共有)サイト
- 会員専用サイト
などなど。
関連記事
機械学習やゲーム、VR/AR/MRなどは『PHP』だとちょっと厳しいかなと思いますが、
(データ保存の部分を『Laravel』で実装というケースはあり)
インターネットを介して情報を見たり入力したりするシステムなら、ほとんど作成可能と思います。
機能も盛りだくさんな『Laravel』は、専門用語も盛りだくさんなので、
用語集も兼ね、ざっくりとそれぞれの機能をまとめてみます。
※Laravel5.5ベースですが一部Laravel6.xの機能も混ざっています。
『Laravel(PHP)』でできる事 機能別
インストールなど
『Laravel』のインストールは、
『PHP』のライブラリ(便利ツール)をまとめて管理している
『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::ほにゃらら
といった形で使うことができるようになり、これまたシンプルなコードが描きやすい仕組みになっています。
『ファサード』の関連記事・・『Slackファサード』を自作しています。
『Laravel』でできる事 データベース周り
『Laravel』などのウェブアプリケーションはもれなく大量のデータを扱う事を想定しているので、
データベースとも接続しやすく、使いやすいように設計されています。
- MySQL (マイエスキューエル)
- SQLite (エスキューライト)
- PostgreSQL (ポストグレエスキューエル)
- AWS (エーダブリューエス、アマゾンのサービス)
などなど。
個人的に『Laravel』のいいところは、
『PHP』と『MySQL』の組み合わせができるので、
エックスサーバーやロリポップなどのレンタルサーバーでも動かせることかなと思います。
ブログツールとして一番人気な『ワードプレス』も『PHP』と『MySQL』の組み合わせなので、
これまた普及しやすい要素なのかなと思ったりしてます。
クエリビルダ
データベースとやりとりするにはもれなく『SQL( エスキューエル)』という言語が必要なのですが、
そのまま書くと結構な長さになり、読みづらくなっていってしまうので、
より読みやすい形で使えるようにしたのが『クエリビルダ』です。
例えばこんなSQL文なら、
select * from accounts
where status
<> 1
クエリビルダを使うとこうかけます。
$users = DB::table('users') ->where('status', '<>', 1) ->get();
これくらいの量だとあまり違いないですが、
二つのテーブルをくっつけたり、サブクエリをつくったりと、
長い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』でできる事 ルーティング
ファイルの場所に依存しないで、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』内の処理を呼び出すことで、
とにかくコントローラーをスリムにするような運用が多いようです。
『Laravel』でできる事 ビュー(見た目)
『Laravel』では見た目(ビュー)も使いやすい仕組みがありますが、
最近は『Vue.js』など、JavaScriptをゴリゴリ使った
『SPA(シングルページアプリケーション)』に押されてる感もあります。
『Vue.js』の関連記事
Blade (ブレード)
アットマークの後にforやifなどの文を使うことで、表現しやすく書きやすくしています。
ヘッダー、フッター、ナビなど共通で使う部品は、
@include や @extends などを使うことで使い回ししやすくしています。
(部品のことをパーシャルと言ったりもします。)
ViewComposer(ビューコンポーザー)
よく使うビューファイルを使い回ししやすくした仕組みです。
多言語化
様々な言語に変えやすい仕組みになっています。
(翻訳元の文章と、翻訳先の文章は必要です。)
Laravel Mix
『Laravel Mix(ララベルミックス』は『webpack(ウェブパック』のラッパー(包み込んでる)です。
最近のフロントエンドでは『Vue.js』や『Sass』などがよく使われますが、
これらのたくさんのファイルをまるっとコンパイルして、js, cssとそれぞれ1つのファイルにまとめて、読み込みを軽くする技術です。
『JavaScript』などのフロント側は『Node.js』が必要なのでインストールしておいて、
npm install とコマンドをうつことで、様々な機能をまるっとインストールできます。
参考記事
『Laravel』でできる事 フォーム関連
ウェブアプリケーションはもれなくデータを入力する画面があるので、
フォーム関連も使いやすい機能が揃っています。
CSRF対策
フォーム用のセキュリティ対策です。
バリデーション(カスタムリクエスト)
フォームに入力した情報が、
「メールアドレスじゃない」とか
「パスワードは8文字以上」などの判定をつけやすい仕組みになっています。
『カスタムリクエスト』をつくることで、
リクエストに応じた(フォームに応じた)チェックをかける事ができます。
Flashメッセージ
「メールアドレスじゃない」とか
「パスワードは8文字以上」などの一時的なメッセージも出しやすいです。
簡単にフォームを使える仕組み laravelcollective/html
フォーム用のファサードを使えて、簡単にフォームが作れる仕組みで、
公式からは外れたものの愛好者多数な機能です。
composer でインストールします。
ファイル保存
画像を保存する方法も、
- local
- public
- AWS S3
などの設定があらかじめ準備されています。
参考記事
『Laravel』でできる事 通信関連
ログイン情報を保持するためのセッションや、
フォーム送信時のリクエスト、GETやPOSTといった処理も簡単に利用できます。
APIの場合は GET/POSTに加え、PUT、DELETE、PATCHといったメソッドも使用機会がでてきます。
(ルーティングする際に、get, post それぞれでメソッドを振り分けたりできます。)
『Laravel』でできる事 ログイン認証周り
ログイン機能も簡単です。
// Laravel 最新 $ composer require laravel/ui --dev $ php artisan ui bootstrap --auth // Laravel6.x $ composer require laravel/ui "1.x" --dev $ php artisan ui bootstrap --auth
Laravel5.8までなら、
$ php artisan make:auth
だけで作成できます。
マルチログイン
例えば、管理者と、従業員と、お客さんのように、
役割によってログイン画面を切り替えるというのも簡単にできます。
SNS認証
TwitterやFacebook、Googleなどのアカウントを使ったログイン認証もできます。
- Laravel Socialite(ソーシャライト) という機能にて。
composerでインストールできます。
$ composer require laravel/socialite
他にも、
- Laravel Passport (OAuth2) という認証強化版もあります。
OAuth2 (オーオウス)・・個人情報 全てにアクセスするのではなく、部分的に情報取得できる仕組み。
例えばTwitterからFacebook連携するとして、
Twitterに登録されている情報を全てFacebookに渡すといろいろ問題あるので部分的に使おうねっていう。
『Laravel』でできる事 テスト
『PHPUnit』というツールがあらかじめ準備されているので、簡単にテストコードを作れます。
最近では先にテストを書いてからコードを書く、『テスト駆動開発(TDD)』という手法も増えているようです。
ブラウザテスト(Laravel Dusk)
- Laravel Dusk(ダースク) という機能を使って、
グーグルクロムのドライバも組み合わせる事で、ブラウザテストができます。
- このページを開いて、
- IDとパスワードを入力してログインして、
- このボタンを押してCSVダウンロードさせて、
といった事を自動化できます。
『Laravel』でできる事 クレジットカード決済システム
『stripe』, 『pay.jp』, 『paypal』などの決済サービスを組み合わせる事で、
クレジットカード決済の仕組みも組み込むことができます。
- Laravel Passport(パスポート)
という機能では月額課金もできるようです。
もちろん決済の個人情報を持つのはリスクが高すぎるので、
それらの情報毎、各決済会社に委ねるという形になります。
(申請者側の審査が通れば使えるようになります。)
余談ですが、
『stripe』では銀行振込用のAPIもあるそうですが、こちらはなかなか実装に手間がかかるようです。
『Laravel』でできる事 バッチ処理
$ php artisan make:command XXX
とうつことで、コマンドをうって処理したり、
レンタルサーバーなどにはもれなくインストールされている 『cron』 という仕組みを使う事で、
毎日、毎週、毎月といった、定期的な処理も実装することができます。
例えば、
月初めに先月の売り上げデータを出力する
などの処理を自動化できます。
『Laravel』でできる事 イベント処理(非同期処理)
ログインしたら記録を残したり、
フォーム入力したらメール送信したり、
何かのイベントが発生したタイミングで処理をする、という仕組みもつくれます。
関連キーワード
- イベントリスナー
- キュー
- Laravel Horizon・・Redisキューのために作られた、キューの監視ツール
『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』でできる事 日付計算がしやすい
『Carbon』というライブラリにて。
『Laravel』でできる事 キャッシュ Redis
読み込みスピード改善
『Laravel』でできる事 リアルタイムチャット
- Laravel Echo(ララベルエコー)
『Pusher』という外部アプリと組み合わせることでリアルタイムチャットがつくれます。
関連記事
『Laravel』でできる事 デバッグ関連
- Logファサード
- Laravel Debugbar
- Laravel telescope (Laravel 5.7.7以上)
などで開発中の細かいデータが見たいときに重宝します。
『Laravel』でできる事をまとめてみて
よくもまぁこれだけの機能をまるっともりこんだもんですね。
まだまだ書けてないキーワード・機能などありますので、
おりをみて更新していきたいと思います。
参考記事
Laravel 入門
Laravelでウェブアプリケーションをつくるときのベストプラクティスを探る
『Laravel』ではこんな記事も読まれています。
1. 【Laravel】マルチログイン対応ECサイトの講座をリリースしました【Udemy】2. 【PHP/Laravel】初心者向けの動画をリリースしました【Udemy】
3. 【Laravel(PHP)】初心者向け アプリのつくり方 をリリースしました【techpit】
4. 『Carbon』でよく使うパターンをまとめてみた【Laravel向け】
5. 【Laravel(PHP)】でできる事をわかりやすく(ざっくりと)まとめてみた【用語集も兼ねて】【初心者向け】
6. 【Laravel】フロントエンドをわかりやすくまとめてみた【初心者向け】
7. 【PHP】【Laravel】CSVエクスポートの方法〜5つのポイント〜
8. 【PHP】CSVインポートの方法〜大量データもバルクインサートでバッチリ!〜【laravel】
9. 【Laravel】ダミー(テスト)データを作る方法 シーダー(seeder)とfactoryとfaker【初心者向け】
10. 【Laravel】Webアプリ環境構築の仕方【Vue.js】【初心者向け】
11. 【Laravel】と【Vue.js】のサンプル動画を見ながらさらりと解説してみる
12. 【Laravel】マルチログイン(ユーザーと管理者など)機能を設定してみた【体験談】
13. 【Laravel】フォトギャラリーを作るための画像アップロード方法【php】
14. 【Laravel】多対多テーブルを複数つくる方法【ちょっとコツがいります】
15. 【Laravel】【Slack】に通知する方法をまとめてみた【自作ファサード】
アオキのツイッターアカウント。
この記事へのコメントはありません。