Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Laravel勉強会 2016
Search
hihats
December 19, 2016
Technology
0
1.4k
Laravel勉強会 2016
hihats
December 19, 2016
Tweet
Share
More Decks by hihats
See All by hihats
Which Json Serializer should we use in Ruby on Rails6 era
hihats
1
110
ソフトウェア設計についての基本認識
hihats
1
73
アジャイル開発を始める前におさえておきたいこと
hihats
0
95
AWS Lambdaの今現在
hihats
0
770
コードの静的解析ツールを使う目的と効用
hihats
0
220
DIコンテナを学ぶ
hihats
2
380
Other Decks in Technology
See All in Technology
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
320
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
4
16k
データベース02: データベースの概念
trycycle
0
160
require(ESM)とECMAScript仕様
uhyo
3
760
Building Dashboards as a Hobby
egmc
0
230
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
120
SIEMを用いて、セキュリティログ分析の可視化と分析を実現し、PDCAサイクルを回してみた
coconala_engineer
0
330
Databricks における 『MLOps』
databricksjapan
2
170
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
2
480
エンジニア候補者向け資料2024.04.24.pdf
macloud
0
3.3k
私が trocco を推す理由
__allllllllez__
1
240
GrafanaMeetup_AmazonManagedGrafanaのアクセス制御機能とマルチテナント環境下でのアクセス制御について
daitak
0
240
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
GraphQLとの向き合い方2022年版
quramy
32
12k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
121
39k
What's in a price? How to price your products and services
michaelherold
237
11k
In The Pink: A Labor of Love
frogandcode
138
21k
Designing for humans not robots
tammielis
248
25k
Imperfection Machines: The Place of Print at Facebook
scottboms
260
12k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
21
1.6k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Optimizing for Happiness
mojombo
370
69k
Faster Mobile Websites
deanohume
299
30k
Happy Clients
brianwarren
92
6.4k
Transcript
エキスパートによる Laravel講座 @株式会社イノベーション 2016/12/19
株式会社イノベーション ではLaravel5.2を採用 しております。
正しく使えているかわからない問題
独学では限界があるので、教えを請いたい
講師をお招きしました
竹澤 有貴さん 1. 株式会社アイスタイル 2. Laravelリファレンス著者 3. 各地のPHPカンファレンス系イベントで よく喋ってます
栗生 和明さん 1. DIP株式会社 2. リファレンス本レビュアー 3. バージョン3のころから、趣味でLaravel 使用
弊社サービス紹 介 Our Services https://www.innovation.co.jp/service/
ざっくり本日の テーマ First of all • Laravelを使う上での原則 • 逆にアンチパターン •
その他、状況によるもの • 個別のおはなし
Laravel原則とアンチパターン
原則 First of all • DIコンテナ(Laravelそのものなの で) • (原則というより)設計ありきで処 理フローはお好きに
• あえて言うならオブジェクト指向 設計の原則(と呼ばれるもの)に は従おう
アンチパターン Anti Pattern • サービスロケーター • コントローラーにDBアクセス処理 を書く ≒ Eloquentのメソッドを使う
状況に依るもの On a case by case basis • Service Containerに登録する
ルール 抽象に依存しているケース Repositoryパターンや Service クラスやRequestクラスをまとめ るとか?) • ServiceProviderを作る基準 (分け方など) • Facadeを使うルール
個別に聞きたい localdiskさんの「Laravelにおける後悔しないため のアプリケーション設計」 (https://speakerdeck.com/localdisk/laravelni okeruhou-hui-sinaitamefalseapurikesiyonshe- ji) のスライドをみて気になった点
【理由】 クラスの責務が大きくなる Facadeを使う代わりにDIにすると、メソッドの引数 に使用するクラスが並ぶ(のがやばさを教えてくれ てよい) 確かに・・・ ではどのくらいまで?? • 極端な話全てContractをDIすればよい か
Facadeを控える 責務を負いすぎていないかの目安を作る e.g. 依存関係で表したら10個もあるよ! ちゃんと分割できてないよ!
どうしても太りがちなControllerがすっきり ! php artisan make:request **** で作成できる ので、推奨ぽい Requestに対する操作やValidation処 理が膨らむなら、有無を言わさず導入し
たほうがよいか? いいと思う! FormRequest
【なぜよくないか】 Controllerの責務の問題 Modelにクエリを閉じ込め、 ControllerはModelのメ ソッドを呼ぶのみ Model(らしきもの)でEloquentのメソッ ドチェインする分にはOK デメテルの法則的な話を含む 徹底すべき ControllerでEloquentのメソッドチェイン禁止
良さと、注意点を聞きたい(テストで困るのは分かるが、Repositoryパターンでなく てもサービス層を分離できそうな気がする) リポジトリパターン Laravel界隈のリポジトリパターンが間違っている情報も多い 本家であるSymfonyのDoctrineのデータマッパーパターンを知る DDDについても知る
Conclusion まずは組織としての目指す方向性 そしてフレームワークのソースコードから読み取る ドメイン駆動設計でやりたいなら、学ぶための良書がいくつかあるので、それを読む それ以前にオブジェクト指向の基本、「疎結合を守る」などシンプルな部分