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+GraphQL 良かったこと 困ったこと 悲しかったこと
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ゆうきゃん
May 22, 2019
Programming
820
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Laravel+GraphQL 良かったこと 困ったこと 悲しかったこと
ゆうきゃん
May 22, 2019
More Decks by ゆうきゃん
See All by ゆうきゃん
Svelte Todo アプリハンズオン資料
ucan_lab
0
86
開発体験を爆上げするLaravel Dacapo マイグレーションサポートツールのススメ
ucan_lab
0
1.6k
モテるコードの書き方
ucan_lab
0
270
momochanにも分かるPSR講座
ucan_lab
0
57
ターミナルtips
ucan_lab
0
110
ゆうきゃんどっかー のススメ In #TechCafe
ucan_lab
2
270
Laravel Dacapo 2019-09-06 YYPHP 99
ucan_lab
0
300
Laravel + Docker 環境構築ハンズオン
ucan_lab
2
510
バージョン管理ツールについて振り返り
ucan_lab
0
92
Other Decks in Programming
See All in Programming
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.5k
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
160
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.5k
AIで効率化できた業務・日常
ochtum
0
140
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.4k
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
160
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
140
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
610
Vite+ Unified Toolchain for the Web
naokihaba
0
340
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.2k
Inside Stream API
skrb
1
770
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Done Done
chrislema
186
16k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Crafting Experiences
bethany
1
190
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
480
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Transcript
Laravel+GraphQL ྑ͔ͬͨ͜ͱ ࠔͬͨ͜ͱ ൵͔ͬͨ͜͠ͱ 2019.05.22 Laravel/Vue.jsษڧձ#9 @ucan_lab (Ώ͏͖ΌΜ)
ࣗݾհ • Name: Ώ͏͖ΌΜ(@ucan_lab) • Company: גࣜձࣾROLO • Skill: PHPer(5)/Laravel/GraphQL/Docker(ษڧத)
• Favorite: λϐΦΧ/εϚϒϥSP • Twitter: https://twitter.com/ucan_lab • Qiita: https://qiita.com/ucan-lab • Laravelͷ։ൃڥΛDockerΛͬͯߏங͢Δ • Laravel PHP InsightsΛͬͯίʔυ࣭Λੳ͢Δ
GraphQLͬͯΔਓ!
GraphQLͬͯΔਓ
ࠓͷ͓
લஔ͖ • Vueͷ͋Γ·ͤΜ • αʔόʔαΠυଆͷࢹͷʹͳΓ·͢
ࠓͷ͓ • ൵͔ͬͨ͜͠ͱ • GraphQLͷ֓ཁ • LaravelͱGraphQL • GraphQLͷ༻ޠʹ͍ͭͯ •
ྑ͔ͬͨ͜ͱ • ࠔͬͨ͜ͱ • ·ͱΊ
൵͔ͬͨ͜͠ͱ
GraphQLͷϥΠϒϥϦ • folkloreinc/laravel-graphql (1788 star) • nuwave/lighthouse (927 star) •
rebing/graphql-laravel (661 star)
2018/9 ಋೖ࣌ͷ͓ • ελʔίϛοτ͕׆ൃͳͷɺ lighthouseϥΠϒϥϦͰ͕͢ಋೖ࣌200ε λʔ΄Ͳ͔͠ͳ͘ɺlaravel-graphqlΛબ • ͬͺαϙʔτ͞Εͳ͘ͳͬͨΒා͍ • ελʔଟ͍ͷ͕Ұ൪҆ఆͩΑͶ
None
αϙʔτ͞Εͳ͘ͳͬͨΒ ා͍
օ͞Μ nuwave/lighthouse Λ͍ͬͯͩ͘͞
GraphQLͷ֓ཁ
GraphQLͷ֓ཁ • Facebook͕։ൃ • 2015ʹొ • ڧྗͳܕγεςϜ • WebAPIʹ͍߹ΘͤΔͨΊͷΫΤϦݴޠ (SQLͷΑ͏ͳΠϝʔδ)
REST
GraphQL
LaravelͱGraphQL
LaravelΞʔΩςΫνϟ Client I/O Application Domain Data Source 3%# ,74 Route
Request Middleware Controller Model Repository Resource UseCase Response "1*
֤ϨΠϠʔͷׂ Input Application Domain Output Route Request Middleware Controller Model
Repository Resource UseCase Response 63-ͱίϯτϩʔϥͷϚοϐϯά ύϥϝʔλͷܗࣜόϦσʔγϣϯɺॏෳνΣοΫͷ%#ΞΫηε͠ͳ͍ ೝՄɺ$43'νΣοΫɺ$034ઃఆɺڞ௨ϩΪϯάॲཧɺڞ௨ྫ֎ॲཧ ϦΫΤετडɺϢʔεέʔεݺग़ɺϨεϙϯεฦ٫ɺϩδοΫهࡌ͠ͳ͍ ॏෳνΣοΫͷόϦσʔγϣϯɺϏδωεϩδοΫ࣮ɺτϥϯβΫγϣϯॲཧ ෳࡶͳ42-ͷΈཱͯɺඞཁʹԠͯ͡ΩϟογϯάॲཧɺϞσϧͷݺͼग़͠ &MPRVFOU03.ɺίʔυϚελ &OVN "1*ͷϦιʔε &MPRVFOUͱ+40/ϨεϙϯεͱͷτϥϯεϨʔγϣϯ "1*ͷ+40/ϨεϙϯεΛฦ٫
LaravelʴGraphQLͷϨΠϠʔͷׂ Input Application Domain Output Route Request Middleware Controller Model
Repository Resource UseCase Response 2VFSZ .VUBUJPOͷ໊લ͕ϧʔςΟϯάͱஔ͖ΘΔ 2VFSZ .VUBUJPOͷҾͰ5ZQFࢦఆɺ ϛυϧΣΞͦͷ··ར༻ ༻͠ͳ͍ɻ2VFSZ .VUBUJPOͷSFTPMWFS͔ΒϢʔεέʔεΛݺग़ ͜͜ʹϏδωεϩδοΫΛ࣮͢Δ ϦϙδτϦͦͷ··༻ Ϟσϧͦͷ··༻ ༻͠ͳ͍ɻΫϥΠΞϯτଆͰ5ZQF͔ΒඞཁͳϑΟʔϧυΛऔಘ "1*ͷϨεϙϯεΛฦ٫
LaravelΞʔΩςΫνϟ Client I/O Application Domain Data Source 3%# ,74 Route
Request Middleware Controller Model Repository Resource UseCase Response "1* (SBQI2-
GraphQLͷ༻ޠ
λΠϓ(Type) • GraphQLಠࣗͷܕ • λΠϓͲΜͳϑΟʔϧυΛ͔࣋ͭΛఆٛ • ΫΤϦʔɺϛϡʔςʔγϣϯͷҾฦΓ • ϑΟʔϧυ໊͕EloquentͷϓϩύςΟϦ Ϩʔγϣϯ໊ͱҰகͯ͠Ε͍͍ײ͡ʹऔಘ
ΫΤϦʔ(Query) • σʔλͷಡΈࠐΈͷΈ • RESTͰ͍͏GET • ཉ͍͠ϑΟʔϧυΛ͏ଆͰҙʹࢦఆ • ఆٛͨ͠ΫΤϦͱಉ͡ܗͰjson͕ฦͬͯ͘Δ
ΫΤϦʔྫ1
ΫΤϦʔྫ2
ΫΤϦʔྫ3
ϛϡʔςʔγϣϯ • σʔλͷॻ͖ࠐΈ • RESTͰ͍͏POST, PUT, DELETE • ฦΓʹGraphQLಠࣗͷܕΛઃఆͰ͖Δ
ϛϡʔςʔγϣϯྫ1
ྑ͔ͬͨ͜ͱ
ྑ͔ͬͨ͜ͱ • APIυΩϡϝϯτ͕ࣗಈੜ͞ΕΔ • ࣮ߦڥ(GraphQL Playground)͕༏ल • ϧʔςΟϯάઃܭ͕ෆཁ • Ϟσϧͱͷੑ(ϓϩύςΟɺϦϨʔγϣϯ)
• Laravel dump-server ͱҰॹʹ͏ͱ։ൃָ͕ • ॳΊͯͷਓεϜʔζʹೖΕͨ • ଞͷϓϩδΣΫτͰ͏ଆಉ͡ίʔυ͕͑Δ
GraphQL࣮ߦڥ • GraphiQL • PlayGround • Altair • GraphQL IDE
GraphQL PlayGround
ࠔͬͨ͜ͱ
ࠔͬͨ͜ͱ • ใ͕গͳ͘ɺϥΠϒϥϦίʔυΛ͏ʑ • ϥΠϒϥϦͷσόοά͕ਏ͍ • ΫΤϦʔɺϛϡʔςʔγϣϯͷڞ༗ͮ͠Β͍ (Postmanͷ༷ʹΠϯϙʔτɺΤΫεϙʔτ͍ͨ͠) • KeynoteͰ࡞ͬͨࢿྉͷΞοϓϩʔυํ๏
·ͱΊ
·ͱΊ • ϥΠϒϥϦ lighthouse Ұ • PlayGround͕ศར͚ͩͲڞ༗ػೳ͕ཉ͍͠ • APIυΩϡϝϯτͷੜ͕ศར •
ΫϥΠΞϯτͱͷΓऔΓ͕εϜʔζ