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
120
ソフトウェア設計についての基本認識
hihats
1
84
アジャイル開発を始める前におさえておきたいこと
hihats
0
110
AWS Lambdaの今現在
hihats
0
800
コードの静的解析ツールを使う目的と効用
hihats
0
240
DIコンテナを学ぶ
hihats
2
400
Other Decks in Technology
See All in Technology
LangGraph × Bedrock による複数の Agentic Workflow を利用した Supervisor 型のマルチエージェントの実現/langgraph-bedrock-supervisor-agent
ren8k
3
450
Linuxのブートプロセス
sat
PRO
6
100
「頑張る」を「楽しむ」に変換する技術
tomoyakitaura
10
1.8k
クラウド関連のインシデントケースを収集して見えてきたもの
lhazy
10
2.2k
StotybookからはじめるVRT -個人開発編-
arrow2nd
1
210
Log Analytics を使った実際の運用 - Sansan Data Hub での取り組み
sansantech
PRO
0
250
エンジニアの健康管理術 / Engineer Health Management Techniques
y_sone
8
6.7k
リクルートのエンジニア組織を下支えする 新卒の育成の仕組み
recruitengineers
PRO
2
220
Oracle Cloud Infrastructure IaaS 新機能アップデート 2024/12 - 2025/02
oracle4engineer
PRO
0
120
社内でKaggle部を作って初学者育成した話
daikon99
1
200
Amazon Athenaから利用時のGlueのIcebergテーブルのメンテナンスについて
nayuts
0
150
生成AIがローコードツールになる時代の エンジニアの役割を考える
khwada
0
370
Featured
See All Featured
Optimizing for Happiness
mojombo
377
70k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Bash Introduction
62gerente
611
210k
RailsConf 2023
tenderlove
29
1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
28
1.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Thoughts on Productivity
jonyablonski
69
4.5k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Scaling GitHub
holman
459
140k
Music & Morning Musume
bryan
46
6.4k
We Have a Design System, Now What?
morganepeng
51
7.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 まずは組織としての目指す方向性 そしてフレームワークのソースコードから読み取る ドメイン駆動設計でやりたいなら、学ぶための良書がいくつかあるので、それを読む それ以前にオブジェクト指向の基本、「疎結合を守る」などシンプルな部分