SlideShare a Scribd company logo
LaravelとMVCの先へ
Laravel Meetup Tokyo Vol.7
yuuki takezawa(ytake)
profile
• ytake(GitHub), ex_takezawa(twitter)
• java, php, node.js, RDBMS, NoSQL, VoltDB
• 最近転職しました
• phpライブラリとオレオレフレームワーク作り
• 最近はPHPSpec
Laravelエキスパート養成読本4章担当
ご興味がある方は是非お願いします
Laravel Feature
よくあげられる特徴
• 静的呼び出しなファサード (Event::fire())

による初学者にもわかりやすい記述
• ActiveRecordライクなEloquent
• Auth関連コントローラが最初から付いている
• なんか流行っている
• MVCらしい
• 重量級(Laravel3は軽量だった)
• RoRっぽい
いえ、違います
よくあげられる特徴について
• ファサードはstaticではありません
• Eloquent利用は強制ではありません
• Authコントローラはあくまでモックアプリケーションや、

使うならオーバライドを
• 流行りではなく、一通り使ってから決めましょう
• MVCで実装するかどうかはユーザー次第です
• RoRっぽく見えるのは外見だけです
Eloquent問題
• イーガーローディングを使おうと、発行されるのはIN句
• 外部キーや正規化されたデータベースには無力
• Eloquentに拘ることで自ら生み出すボトルネック
• queryBuilderで解決させる
• それ、SQL直接書いた方が早い(Basic)
• テストしてますか?
ファサードにみる問題
• どこにでも利用できるため、どこにでも書い
てしまう
• テストしてますか?
• テストしてますか?
• テストしてますか?
テスト問題
• callや5.1で追加されたvisit()->seeInXXXなど
は機能テスト(ファンクショナルテスト)
• クラス単位でユニットテストしてますか?
• PHPUnit本家のマニュアルは読みましょう
MVCじゃないの?
• 一部の機能では「設定より規約」を取り入れてますが、


あくまで手段の一つ
• MVCとはアプリケーションの実装パターンの一つ
で、

フォルダのやクラスの名前を指すものではありません
• モデルとは何か
どう使っていけば良いのか
学び方として
• フレームワークの機能を一通り使いましょう
• Illuminateコンポーネントのソースを読みましょう
• Applicationクラスを読んでみましょう
• サービスプロバイダの仕組みが理解できます
• ファサードと実クラスの関連性が理解できます
• Dependency Injectionへの理解
フレームワークは
コンポーネントの集まり
アプリケーション
作りのフレームとしての
フレームワーク
こう作りなさい、という
規約のフレームワーク
ではありません
PHPの流れとして
• コンポーネント志向
• 疎結合などによる拡張性や、設計
• デザインパターンの応用
• 実装もコンポジット化
• DDDへのアプローチ
フレームワークの使い方さえ
知っていればよかった
時代ではないのです
Laravelで利用するには?
• コンテナを使いこなす
• ファサードを使わない選択
• リポジトリパターンから始めてみましょう
• レイヤを意識
コントローラ
モデル
ビュー
通常実装のイメージ
User::find(1)
return view()
コントローラで
ファサード・Eloquentを利用すると密結合
コントローラ
データベースアクセス
リポジトリ導入イメージ
リポジトリリポジトリI/F
インターフェースを介することで
データベース依存やその他のものから分離
リポジトリは
データベース専用の
抽象レイヤではありませんので、
何かを操作するもの、
全てに対して有用です
コントローラ
サービス導入イメージ
それぞれのクラスが独立
サービス
リポジトリI/F
リポジトリI/F
リポジトリI/FArtisan
リポジトリパターンの姿
レイヤ
• ユーザインタフェース層
• アプリケーション層
• ドメイン層
• インフラ層
View
Controller
Model
下層のレイヤは上層を知りません
ファサードの実態を知ることで、
このレイヤを強く意識することが
できます
フレームワークに
のった手法ではなく、
フレームワークを
ツールとして
Laravelを使って、
フレームワークにとらわれない
MVCのその先へ

More Related Content

PDF
php開発で使うタスクランナー gulp
PPTX
〜laravel で学ぶ MVC
PDF
Laravel / Lumen 次の一歩
PDF
Laravel_オープンソースカンファレンスhokkaido_JP_2014
PPTX
Laravelを使ってみた
PDF
Laravel5.1 Release
PDF
Laravel 5.1 LTSでサービスを作る
PPTX
Phpフレームワーク 「laravel」でブログを作ろう
php開発で使うタスクランナー gulp
〜laravel で学ぶ MVC
Laravel / Lumen 次の一歩
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravelを使ってみた
Laravel5.1 Release
Laravel 5.1 LTSでサービスを作る
Phpフレームワーク 「laravel」でブログを作ろう

What's hot (20)

PPTX
今日から始めるLaravel
PDF
Laravel の学び方と得られる学び
PDF
フレームワークを使うべき 3 つの理由
PDF
Laravel5.1をつかったWebアプリケーション開発
PDF
Laravelのパッケージのテストに便利なパッケージ
PPTX
PHPで並列処理する ライブラリを作った
PDF
はじめてLaravelさわった 第86回php勉強会
PDF
PHPデプロイツールの世界
PDF
魔法少女 Laravel
PPTX
活動報告9 laravel5入門-
PDF
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
PDF
PHPとJavaScriptの噺
PPT
Perl Beginners #7 おとなのWAF
PDF
Laravelから学びレガシーと闘いはじめた
PDF
魔法少女 Laravel 2014
PDF
究極にして至高のWAF
PDF
PHPの今とこれから2015
PDF
H2O and php
PDF
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
PDF
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
今日から始めるLaravel
Laravel の学び方と得られる学び
フレームワークを使うべき 3 つの理由
Laravel5.1をつかったWebアプリケーション開発
Laravelのパッケージのテストに便利なパッケージ
PHPで並列処理する ライブラリを作った
はじめてLaravelさわった 第86回php勉強会
PHPデプロイツールの世界
魔法少女 Laravel
活動報告9 laravel5入門-
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
PHPとJavaScriptの噺
Perl Beginners #7 おとなのWAF
Laravelから学びレガシーと闘いはじめた
魔法少女 Laravel 2014
究極にして至高のWAF
PHPの今とこれから2015
H2O and php
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
Ad

Similar to LaravelとMVCの先へ (20)

PDF
Laravel meetup5(Laravel meet NewSQL/VoltDB )
PDF
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PDF
Laravel Mix とは何なのか? - Laravel/Vue 勉強会 #1
PDF
Laravel5.1&homesteadで楽々ローカル環境構築
PDF
Laravel shibuya 3 Laravel Beginner IRT
PDF
第5回名古屋若手Webエンジニア交流会
PPTX
Docker friendly PHP / Laravel
PDF
PHP&NewSQLで考える次世代アプリケーション
PPTX
Laravel Livewire の紹介
PDF
Laravel4で運用するサービス,そしてlaravel5へ
PDF
Laravel × レイヤードアーキテクチャをやってみている話
PDF
Laravel5にアップグレードする際に詰まった点
KEY
Clojureの発表など
PDF
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
PDF
Laravel における Blade 拡張のツラミ
PDF
ClassLoader Leak Patterns
ODP
Vim scriptとJavaとHaskell
PDF
「愛されたい!」と思ったときにJavaで書くRubyクラス
PDF
Dark vol4 for_slideshare
PDF
こわくないScala
Laravel meetup5(Laravel meet NewSQL/VoltDB )
PHP フィールドインジェクションに挑戦する PHP勉強会2014
Laravel Mix とは何なのか? - Laravel/Vue 勉強会 #1
Laravel5.1&homesteadで楽々ローカル環境構築
Laravel shibuya 3 Laravel Beginner IRT
第5回名古屋若手Webエンジニア交流会
Docker friendly PHP / Laravel
PHP&NewSQLで考える次世代アプリケーション
Laravel Livewire の紹介
Laravel4で運用するサービス,そしてlaravel5へ
Laravel × レイヤードアーキテクチャをやってみている話
Laravel5にアップグレードする際に詰まった点
Clojureの発表など
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
Laravel における Blade 拡張のツラミ
ClassLoader Leak Patterns
Vim scriptとJavaとHaskell
「愛されたい!」と思ったときにJavaで書くRubyクラス
Dark vol4 for_slideshare
こわくないScala
Ad

LaravelとMVCの先へ