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
Apollo Linkでできること
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
piglovesyou
February 22, 2019
Technology
170
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Apollo Linkでできること
piglovesyou
February 22, 2019
More Decks by piglovesyou
See All by piglovesyou
GraphQL Directiveを試してみた
piglovesyou
0
340
Other Decks in Technology
See All in Technology
水を運ぶ人としてのリーダーシップ
izumii19
4
1.1k
徹底討論!ECS vs EKS!
daitak
3
1.8k
toB プロダクトから見たWAF
tokai235
0
250
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
150
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
130
攻撃者がいなくてもAIエージェントはインシデントを起こす
nomizone
0
140
そこにあるから地図ができる~位置を示す"モノ"を愉しむ~ - Interface 2026年6月号GPS特集オフ会 / interface_202606_GPS_offline
sakaik
1
120
從觀望到全公司落地:AI Agentic Coding 導入實戰 — 流程整合與安全治理
appleboy
0
160
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
230
BPaaSで進むAIオペレーションの現在地 AI実装が効く領域とスケーラビリティの選定と実装
kentarofujii
0
210
【FinOps】データドリブンな意思決定を目指して
z63d
2
490
WebGIS AI Agentの紹介
_shimizu
0
590
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
200
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
We Have a Design System, Now What?
morganepeng
55
8.2k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
440
The SEO identity crisis: Don't let AI make you average
varn
0
500
Un-Boring Meetings
codingconduct
0
320
Optimizing for Happiness
mojombo
378
71k
Transcript
"QPMMP-JOLͰͰ͖Δ͜ͱ &*5ߴଜ
"QPMMP$MJFOUͱ"QPMMP-JOL "QPMMP-JOLͷجຊతͳಈ͖ ͢Ͱʹ͋Δ"QPMMP-JOL "QPMMP-JOLΛ͍ͬͯΕָ͕Ͱ͖ͨྫ
// Apollo Clientͷྫ client.query({ query: gql` query TodoApp { todos
{ id text completed } } `, }) .then(data => console.log(data)) .catch(error => console.error(error));
"QPMMP$MJFOUͱ"QPMMP-JOL IUUQTXXXBQPMMPHSBQIRMDPNEPDTMJOLPWFSWJFXIUNM͔ΒҾ༻ (SBQI2- $POTVNFS
"QPMMP$MJFOUͱ"QPMMP-JOL "QPMMP$MJFOU(SBQI2-$MJFOUͱͯ͠ͷΠϯλʔϑΣʔεΛ ఏڙʢϦΫΤετͳͲͷػೳͳ͍ʣɻ"QPMMP-JOLʹґଘ "QPMMP-JOLΫΤϦ࣌ͷϛυϧΣΞͱͯ͠ͷதͷػೳΛ ఏڙ ΫΤϦΛ࣮ͬͯࡍԿΛ͢Δ͔ʢϦΫΤετͳͲʣɺϨε ϙϯεΛͲ͏͍ͨ͠ͷ͔ʢΩϟογϡ·ͨผʣɺΤϥʔ ΛͲ͏͢Δ͔ "QPMMP-JOL൚༻తͰ3FMBZͳͲͰ͑ΔΑ͏࡞ΒΕ͍ͯΔ
௨ৗϛυϧΣΞͷྫ ΫΤϦɺϨεϙϯεͷՃ
// Ϩεϙϯεʹରͯ͠Կ͔͢Δྫ const link1 = new ApolloLink((operation, forward) => {
// GraphQLΫΤϦΛͬͯԿ͔͢Δ // ଞͷlinkͰ͏σʔλΛContextʹࡌͤΔ // forward() Ͱ࣍ͷlinkΛݺͿ return forward(operation).map(data => { // Ϩεϙϯεʹରͯ͠Կ͔͢Δ return {...data, additional: 'Ճͷ' }; }); });
// Ճ͑ͯΤϥʔʹରͯ͠Կ͔͢Δྫ const link2 = new ApolloLink((operation, forward) => {
// GraphQLΫΤϦΛͬͯԿ͔͢Δ // ଞͷlinkͰ͏σʔλΛContextʹࡌͤΔ return new Observable(observer => { return forward(operation).subscribe( data => { // Ϩεϙϯεʹରͯ͠Կ͔͢Δ observer.next({...data, additional: 'Ճͷ' }); }, error => { // GraphQLΤϥʔʹରͯ͠Կ͔͢Δ observer.error(error); }, (...args) => { // Finally } ); }); });
5FSNJOBUJOH-JOL ࣍ͷMJOLΛݺͳ͍ɻ αʔόϦΫΤετͳͲͯ͠ϛυϧΣΞνΣʔϯΛંΓฦ͢
IUUQTHJUIVCDPNBQPMMPHSBQIRMBQPMMPMJOLUSFFNBTUFSQBDLBHFTBQPMMPMJOLQVSQPTF ΑΓҾ༻ ંΓฦͯ͠Δ
// apollo-link-http ͷ؆қ࣮ྫ const httpLink = new ApolloLink(operation => {
return new Observable(observer => { const key = operation.toKey(); const query = key.slice(0, key.length - ‘|{}| null'.length); fetch(url, { method: 'POST', headers: { 'content-type': 'application/json', }, body: JSON.stringify({ operationName: operation.operationName, variables: operation.variables, query, }), }) .then(res => res.json()) .then(json => observer.next(json)) .catch(json => observer.error(json)) .finally(() => observer.complete()); }); });
// Apollo LinkνΣʔϯͷྫ const client = new ApolloClient({ link: ApolloLink.from([
link1, link2, httpLink, ]), cache, });
"QPMMP-JOLͷ0CTFSWBCMF3FBDUJWF&YUFOTJPOTΈ͍ͨɻ ࡉ͔͍༷෦Ͱ͍ͬͯΔ[FOPCTFSWBCMFΛΔͱΑͦ͞͏ɻ IUUQTHJUIVCDPN[FOQBSTJOH[FOPCTFSWBCMFPCTFSWBCMFTVCTDSJCFOFYUDBMMCBDL FSSPSDBMMCBDLDPNQMFUFDBMMCBDL
͢Ͱʹ͋Δ"QPMMP-JOL IUUQTXXXBQPMMPHSBQIRMDPNEPDTMJOLMJOLTMJTU IUUQTXXXBQPMMPHSBQIRMDPNEPDTMJOLMJOLT DPNNVOJUZIUNM
"QPMMP-JOLΛ͍ͬͯΕ ָ͕Ͱ͖ͨྫ
3FEVY͕ཁΒͳ͍ BQPMMPMJOLTUBUF ίϯϙʔωϯτ·ͨ͗Ͱ͏ঢ়ଶΛอ࣋ )551ӽ͠ͷσʔλͱಉ͡(SBQI2-ΫΤϦͰ͑Δ خ͠͞ ࠓͩͱ3FBDU)PPLTબࢶʢWʣ
3FTPMWFSͷڞ௨Τϥʔ Λॲཧ BQPMMPMJOLFSSPS ͜ΕΛΒͳ͔͕ͬͨͨΊʹ 3FTPMWFSΛԚ͠·ͬͨ͘͜ͱ͕͋Δ IUUQTHJUEFWMJOFDPSQDPN)35FDI NN@JNQSPWFQVMMpMFT
࿈ଓϦΫΤετΛ੍ BQPMMPMJOLCBUDI ࢼͯ͠Έͨʢಈըʣ ະݕূ͕ͩ*OQVU4DSFFOͰͷ ࿈ଧΫϥογϡ͕ Δ͔͠Εͳ͍
None
None
4FSWJDF8PSLFSΛͬͨ 8FC4PDLFU BQPMMPMJOLXTϝΠϯεϨουͰ84ͱଓ ͍ͭͰ04௨͢ΔͨΊʹ όοΫάϥϯυͰଓ͢Δඞཁ Ϋϩʔϯͯ͠վ͢ΕʢະݕূͰ͢ʣ
#JPHSBQIZ"1*Λ͏ BQPMMPMJOLSFTU BQPMMPMJOLIUUQͰઃఆͨ͠ΤϯυϙΠϯτͱ ผͷॴʹ3&45ϦΫΤετ͕Մೳ 3FTPMWFSͰؤுΔඞཁͳ͍
Ҏ্Ͱ͢ "QPMMP$MJFOUͱ"QPMMP-JOL "QPMMP-JOLͷجຊతͳಈ͖ ͢Ͱʹ͋Δ"QPMMP-JOL "QPMMP-JOLΛ͍ͬͯΕָ͕Ͱ͖ͨྫ