Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
"ビュー"を考えるためのADRパターン @ laravel.osaka #10
n1215
PRO
April 26, 2017
Programming
2
5.4k
"ビュー"を考えるためのADRパターン @ laravel.osaka #10
2017.04.26 laravel.osaka#10のLTで使用したスライドです
ADR with Laravel サンプルコード
https://github.com/n1215/lara-adr
n1215
PRO
April 26, 2017
Tweet
Share
More Decks by n1215
See All by n1215
AWS App Runnerがそろそろ本番環境でも使い物になりそう
n1215
PRO
0
1.1k
テスト環境のインフラ・運用コストを下げたい話〜全部入りEC2を超えていけ
n1215
PRO
3
800
RoadRunnerの世界 〜 Yet Another Alt PHP-FPM
n1215
PRO
2
2.2k
ブラウザから始めるgRPC 〜 gRPC-WebにPHPを添えて
n1215
PRO
1
4.2k
PHP8時代のWebアプリケーションフレームワークの話をしよう
n1215
PRO
5
5.4k
PHPとEventSauceで始めるイベントソーシングアプリケーション
n1215
PRO
7
2.9k
形から入ったドメイン駆動設計によるゲーム開発の光と闇
n1215
PRO
13
6.6k
PHPでもgRPCサーバを立てたいだけの人生だった
n1215
PRO
7
7.5k
PSR-15 Request Handlerから理解するMiddlewareの仕組み
n1215
PRO
3
860
Other Decks in Programming
See All in Programming
Spring BootとKubernetesで実現する今どきのDevOps入門
xblood
0
350
Swift Expression Macros: a practical introduction
kishikawakatsumi
2
730
Writing Greener Java Applications
hollycummins
0
340
TokyoR#103_DataProcessing
kilometer
0
540
Azure Functionsをサクッと開発、サクッとデプロイ/vscodeconf2023-baba
nina01
1
340
TypeScript 4.9のas const satisfiesが便利
tonkotsuboy_com
9
2.3k
10年以上続くプロダクトの フロントエンド刷新プロジェクトのふりかえり
yotahada3
2
340
フロントエンドで学んだことをデータ分析で使ってみた話
daichi_igarashi
0
180
T3 Stack and TypeScript ecosystem
quramy
3
760
Cloudflare WorkersでGoを動かすライブラリを作っている話
syumai
1
320
Rust、何もわからない...#6発表資料
ryu19
0
130
What's new in Shopware 6.5
shyim
0
110
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
109
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
643
54k
A Modern Web Designer's Workflow
chriscoyier
689
180k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
1.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
182
15k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
13
5.4k
Writing Fast Ruby
sferik
613
58k
Building a Scalable Design System with Sketch
lauravandoore
451
31k
Building an army of robots
kneath
301
40k
Large-scale JavaScript Application Architecture
addyosmani
499
110k
Building Adaptive Systems
keathley
27
1.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
351
21k
Transcript
“Ϗϡʔ”Λߟ͑ΔͨΊͷADRύλʔϯ for laraval.osaka #10 2017/04/26 גࣜձࣾNextat தᒇ ݈ೋ
What is ADR ? • Action-Domain-Responder • “MVC Refinement” by
Paul M. Jones
MVCͱ ADR ͷରԠ • Model ͱ Domain • Controller ͱ
Action • View ͱ Responder
ModelͱDomain • ΄΅ಉ͡ • फڭ૪ʹͳΔͷͰࠓճύε
Controller ͱ Action • 1ΞΫγϣϯ1Ϋϥεਪ • ΞΫγϣϯʹର͢Δԣஅॲཧɾ߹ॲཧ ͷΓ͢͞ • ਆControllerΫϥεͷੜΛ્ࢭ
View ͱ Responder • ຊͷ͓ • “Ϗϡʔ”ͱʁʁʁ
LaravelΛར༻ͨ͠MVC ͷྫ
"Ϗϡʔ" = ςϯϓϨʔτʁ • Blade
JSONΛฦ͢߹ʁ • “Ϗϡʔ”͔ͩΒͱݴͬͯςϯϓϨʔτΛ ͏ͱݶΒͳ͍
Presentation Domain Separation ͷݪଇ • MVC͕ຊʹ࣮ݱ͔ͨͬͨ͠ίτ • υϝΠϯϓϨθϯςʔγϣϯʹൺ Δͱ͍ճ͘͢͠มߋ͞Εʹ͍͘ •
ૄ݁߹ʹ͓ͯ͘͠ͱͤʹͳΕΔ
Ϗϡʔͷׂ • υϝΠϯʢϞσϧʣͷॲཧ݁ՌΛϢʔ βʔʹͲ͏ݟͤΔ͔ΛܾΊΔϩδοΫ • ΫϥΠΞϯτ͕ҧ͑Ͳ͏ݟͤΔ͖͔ มΘΔ • ϒϥβɺίϚϯυϥΠϯ
WebΞϓϦέʔγϣϯͷ”Ϗϡʔ” ϢʔβʔϞσϧ $user ͳͲυϝΠϯͷग़ྗ ɹ↓ɹม HTTPϨεϙϯε - HTML - JSON
etc.
HTTPϨεϙϯε Blade ςϯϓϨʔτ →ϨεϙϯεϘσΟͷΈ • εςʔλείʔυ • HTTPϨεϙϯεϔομ "Ϗϡʔ"͕ѻ͏͖ରͷҰ෦
None
Laravel (>= 5.3) / Lumen Ͱͷྫ
Responder
ϨεϙϯεΛHTMLʹมߋ͍ͨ͠ • ResponderΛೖΕସ͑Δ • Domain͍·ΘͤΔ
·ͱΊ • ADRMVC͕ຊʹΓ͔ͨͬͨίτ • WebΞϓϦʹͱͬͯͷ"Ϗϡʔ"HTTPϨ εϙϯεΛੜ͢Δॲཧͷ͜ͱ • ςϯϓϨʔτ͚͕ͩ”Ϗϡʔ"Ͱͳ͍
ࢀߟ - pmjones/adr https://github.com/pmjones/adr - Radar.Project https://github.com/radarphp/Radar.Project - Presentation Domain
Separation https://martinfowler.com/bliki/PresentationDomainSeparation.html - Single Action Controllers https://laravel.com/docs/5.4/controllers#single-action-controllers - Lumen/Laravel Action-Domain-Responder(ADR)Ξϓϩʔν http://qiita.com/ytake/items/db8cb64493f08f5b9706