Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
LaravelとMVCの先へ
Laravel Meetup Tokyo Vol.7
yuuki takezawa(ytake)
profile
• ytake(GitHub), ex_takezawa(twitter)
• java, php, node.js, RDBMS, NoSQL, VoltDB
• 最近転職しました
• phpライブラリとオレオレフレームワーク作...
Laravelエキスパート養成読本4章担当
ご興味がある方は是非お願いします
Laravel Feature
よくあげられる特徴
• 静的呼び出しなファサード (Event::fire())

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

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


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

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

LaravelとMVCの先へ

7 568 vues

Publié le

Laravel Meetup Tokyo Vol.7

Publié dans : Technologie
  • Soyez le premier à commenter

LaravelとMVCの先へ

  1. 1. LaravelとMVCの先へ Laravel Meetup Tokyo Vol.7 yuuki takezawa(ytake)
  2. 2. profile • ytake(GitHub), ex_takezawa(twitter) • java, php, node.js, RDBMS, NoSQL, VoltDB • 最近転職しました • phpライブラリとオレオレフレームワーク作り • 最近はPHPSpec
  3. 3. Laravelエキスパート養成読本4章担当 ご興味がある方は是非お願いします
  4. 4. Laravel Feature
  5. 5. よくあげられる特徴 • 静的呼び出しなファサード (Event::fire())
 による初学者にもわかりやすい記述 • ActiveRecordライクなEloquent • Auth関連コントローラが最初から付いている • なんか流行っている • MVCらしい • 重量級(Laravel3は軽量だった) • RoRっぽい
  6. 6. いえ、違います
  7. 7. よくあげられる特徴について • ファサードはstaticではありません • Eloquent利用は強制ではありません • Authコントローラはあくまでモックアプリケーションや、
 使うならオーバライドを • 流行りではなく、一通り使ってから決めましょう • MVCで実装するかどうかはユーザー次第です • RoRっぽく見えるのは外見だけです
  8. 8. Eloquent問題 • イーガーローディングを使おうと、発行されるのはIN句 • 外部キーや正規化されたデータベースには無力 • Eloquentに拘ることで自ら生み出すボトルネック • queryBuilderで解決させる • それ、SQL直接書いた方が早い(Basic) • テストしてますか?
  9. 9. ファサードにみる問題 • どこにでも利用できるため、どこにでも書い てしまう • テストしてますか? • テストしてますか? • テストしてますか?
  10. 10. テスト問題 • callや5.1で追加されたvisit()->seeInXXXなど は機能テスト(ファンクショナルテスト) • クラス単位でユニットテストしてますか? • PHPUnit本家のマニュアルは読みましょう
  11. 11. MVCじゃないの? • 一部の機能では「設定より規約」を取り入れてますが、 
 あくまで手段の一つ • MVCとはアプリケーションの実装パターンの一つ で、
 フォルダのやクラスの名前を指すものではありません • モデルとは何か
  12. 12. どう使っていけば良いのか
  13. 13. 学び方として • フレームワークの機能を一通り使いましょう • Illuminateコンポーネントのソースを読みましょう • Applicationクラスを読んでみましょう • サービスプロバイダの仕組みが理解できます • ファサードと実クラスの関連性が理解できます • Dependency Injectionへの理解
  14. 14. フレームワークは コンポーネントの集まり
  15. 15. アプリケーション 作りのフレームとしての フレームワーク
  16. 16. こう作りなさい、という 規約のフレームワーク ではありません
  17. 17. PHPの流れとして • コンポーネント志向 • 疎結合などによる拡張性や、設計 • デザインパターンの応用 • 実装もコンポジット化 • DDDへのアプローチ
  18. 18. フレームワークの使い方さえ 知っていればよかった 時代ではないのです
  19. 19. Laravelで利用するには? • コンテナを使いこなす • ファサードを使わない選択 • リポジトリパターンから始めてみましょう • レイヤを意識
  20. 20. コントローラ モデル ビュー 通常実装のイメージ User::find(1) return view() コントローラで ファサード・Eloquentを利用すると密結合
  21. 21. コントローラ データベースアクセス リポジトリ導入イメージ リポジトリリポジトリI/F インターフェースを介することで データベース依存やその他のものから分離
  22. 22. リポジトリは データベース専用の 抽象レイヤではありませんので、 何かを操作するもの、 全てに対して有用です
  23. 23. コントローラ サービス導入イメージ それぞれのクラスが独立 サービス リポジトリI/F リポジトリI/F リポジトリI/FArtisan
  24. 24. リポジトリパターンの姿
  25. 25. レイヤ • ユーザインタフェース層 • アプリケーション層 • ドメイン層 • インフラ層 View Controller Model 下層のレイヤは上層を知りません
  26. 26. ファサードの実態を知ることで、 このレイヤを強く意識することが できます
  27. 27. フレームワークに のった手法ではなく、 フレームワークを ツールとして
  28. 28. Laravelを使って、 フレームワークにとらわれない MVCのその先へ

×