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
1.5k
0
Share
Laravel勉強会 2016
hihats
December 19, 2016
More Decks by hihats
See All by hihats
Which Json Serializer should we use in Ruby on Rails6 era
hihats
1
130
ソフトウェア設計についての基本認識
hihats
1
110
アジャイル開発を始める前におさえておきたいこと
hihats
0
120
AWS Lambdaの今現在
hihats
0
810
コードの静的解析ツールを使う目的と効用
hihats
0
260
DIコンテナを学ぶ
hihats
2
400
Other Decks in Technology
See All in Technology
AzureのIaC管理からログ調査まで、随所に役立つSkillsとCustom-Instructions / Boosting IaC and Log Analysis with Skills
aeonpeople
0
260
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
2.2k
Percolatorを廃止し、マルチ検索サービスへ刷新した話 / Search Engineering Tech Talk 2026 Spring
visional_engineering_and_design
0
140
AI時代 に増える データ活用先
takahal
0
310
AndroidアプリとCopilot Studioの統合
nakasho
0
120
AIを共同作業者にして書籍を執筆する方法 / How to Write a Book with AI as a Co-Creator
ama_ch
2
150
弁護士ドットコム株式会社 エンジニア職向け 会社紹介資料
bengo4com
1
180
社内エンジニア勉強会の醍醐味と苦しみ/tamadev
nishiuma
0
230
国内外の生成AIセキュリティの最新動向 & AIガードレール製品「chakoshi」のご紹介 / Latest Trends in Generative AI Security (Domestic & International) & Introduction to AI Guardrail Product "chakoshi"
nttcom
4
1.4k
M5Stack CoreS3とZephyr(RTOS)で Edge AIっぽいことしてみた
iotengineer22
0
280
Choose your own adventure in agentic design patterns
glaforge
0
150
The Journey of Box Building
tagomoris
4
3.4k
Featured
See All Featured
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
340
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
BBQ
matthewcrist
89
10k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Designing for Performance
lara
611
70k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Designing for Timeless Needs
cassininazir
0
200
Leo the Paperboy
mayatellez
7
1.7k
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 まずは組織としての目指す方向性 そしてフレームワークのソースコードから読み取る ドメイン駆動設計でやりたいなら、学ぶための良書がいくつかあるので、それを読む それ以前にオブジェクト指向の基本、「疎結合を守る」などシンプルな部分