Slide 1

Slide 1 text

4PIFJ5BLFOP54,BJHJ εΩʔϚͱܕͰ୓͘ 'VMM4UBDL5ZQF4DSJQU

Slide 2

Slide 2 text

ຊൃදʹ͍ͭͯ  'VMM4UBDL5ZQF4DSJQUΛग़ൃ఺ͱͯ͠ɺlͲΜͳz'VMM4UBDL54͔Β࢝Ί Δͱྑ͍͔ΛൃలՄೳੑ΋ؚΊͯߟ࡯͠·͢ɻ ͦΕΛ౿·͑ͯιϑτ΢ΣΞͷશମΛߏ੒͢ΔΞʔΩςΫνϟɾελΠϧͱ ͯ͠(SBQI2-ʹΑΔʮεΩʔϚۦಈͷ'VMM4UBDL5ZQF4DSJQUʯΛ঺հ͠ ·͢ɻ ͜ͷൃද͕ࠓޙͷ'VMM4UBDL54ͷ޿͕ΓͷҰॿʹͳΕ͹ͱࢥ͍·͢ɻ

Slide 3

Slide 3 text

ࣗݾ঺հ  • 4PIFJ5BLFOP • 4"/6 d  • ࠷ॳͷιϑτ΢ΣΞΤϯδχΞͱͯ͠ࢀը • ιϑτ΢ΣΞྖҬͷٕज़͓Αͼ૊৫ͷ಺੡Խ • 8BOUFEMZ d  • ϓϩμΫτ։ൃɾٕज़ج൫ɾϚωδϝϯτͳͲ • ٕज़ɿ3VCZˠ3VCZ 5ZQF4DSJQU (P 1ZUIPO(SBQI2- H31$ • ຊൃද͸4"/6ʹ͓͚ΔऔΓ૊ΈͰ͕͢ɺલ৬ʹ͓͚Δܦݧ΍ಉ࣌୅ͷଞࣾͷऔΓ ૊Έ͔Βଟ͘ͷώϯτΛಘ͍ͯ·͢💡 !"MUFDI@

Slide 4

Slide 4 text

• εϚϗͰ༧໿ͯ͠ɺ͙͢ʹࣗવͷத΁ • ιϑτ΢ΣΞ΋׆༻ͯ͠ӡӦΛ࣮ݱ • શࠃڌ఺Ҏ্Λల։த 4"/6OE)PNFʹ͍ͭͯ

Slide 5

Slide 5 text

࣮͸ɺ࠷ॳ͸ϊʔίʔυͰ ্ཱ͕ͪͬͨαʔϏε  • ॳظ͔ΒϊʔίʔυπʔϧΛ࢖༻ ͯ͠αʔϏεΛ։ൃɾӡӦ • δϣΠϯͨ࣌͠఺Ͱը໘Ҏ ্ɺΧϥϜ௒ͷσʔλΛ࣋ͭ தن໛αʔϏε • εϚʔτϩοΫɾΦϯϥΠϯܾࡁ ͳͲෳ਺ͷ֎෦4BB4ͱ΋ଟ֯తʹ ࿈ܞ IUUQTOPUFDPNTBOV@DPNOOGDECD

Slide 6

Slide 6 text

ࣄۀల։ͷதͰϑϧϦϓϨΠεΛ࣮ࢪ  • ࠓޙͷల։Λ౿·͑ͯϑϧϦϓϨΠεΛ։࢝ˠ'VMM4UBDL5ZQF4DSJQUΛ࠾༻ • ࣄۀతʹ΋֦େϑΣʔζͷͨΊ৽αʔϏεల։ʢچγεςϜͷ։ൃʣͱฒߦͯ͠৽γες ϜΛ։ൃɺ೥൒ޙʹҠߦͨ͠ ͜ͷΑ͏ͳڧ౓͕ཁٻ͞ΕΔ։ൃʹ͓͍ͯεΩʔϚۦಈͷ'VMM4UBDL54͕େ׆༂🌸 ڌ఺਺   ݐஙϞσϧ਺   αʔϏεܗଶ αϒεΫ ୯ധɾαϒεΫɾڞಉॴ༗ɾ౩ॴ༗ ҠߦݩγεςϜن໛ ΧϥϜ ΧϥϜ اۀϑΣʔζ γϦʔζ" γϦʔζ#Ϋϩʔζ ༨ஊɿϊʔίʔυͰԯҎ্ௐୡͨ͠ࠃ಺།ҰͷαʔϏε😁

Slide 7

Slide 7 text

ຊ೔ͷΞ΢τϥΠϯ   ࣗݾ঺հɾഎܠઆ໌ˡ͜͜·Ͱ  ΞʔΩςΫνϟϨϕϧͷઃܭ  ίʔυͰݟΔεΩʔϚۦಈ։ൃ  ·ͱΊ

Slide 8

Slide 8 text

ΞʔΩςΫνϟϨϕϧͷઃܭ

Slide 9

Slide 9 text

໨ࢦͨ͜͠ͱ  zεϐʔυΛ٘ਜ਼ʹͤͣɺ࣋ଓతʹ੒௕͢Διϑτ΢ΣΞΛ࡞Δz ࣄۀͱϓϩμΫτΛத৺ͱͨ͠ϑϧαΠΫϧ։ൃγϯϓϧͳ͜ͱΛγϯϓϧʹ࣮ݱ͠ ͳ͕Βɺઐ໳ੑͷߴ͍໰୊ղܾ͕Ͱ͖Δ࠷খηοτͷٕज़બఆΛͭͭ͠কདྷͷٕज़બ ୒ΛݮΒ͞ͳ్͍தͰڊେͳϦΞʔΩςΫνϟͰ଍ΛࢭΊͳ͍ʜ

Slide 10

Slide 10 text

࠾༻ͨ͠ΞʔΩςΫνϟ 

Slide 11

Slide 11 text

࠾༻ͨ͠ΞʔΩςΫνϟ  ׂͱී௨🤔

Slide 12

Slide 12 text

Ұา໭ͬͯ༻ޠఆٛɿ ΫϥΠΞϯταΠυαʔόʔαΠυɺϑϩϯτΤϯυόοΫΤϯυ  ϥϯλΠϜ۠෼ ੹຿ͷҧ͍ ΫϥΠΞϯταΠυ αʔόʔαΠυ ϑϩϯτΤϯυ όοΫΤϯυ ɾϢʔβʔͱ઀఺Λ࣋ͭ 6*  ɾ࣮ࡏͱମݧΛ૑Γग़͢ 69 ɾϏδωεϧʔϧΛ಺แ ɾσʔλϕʔεͱ௚઀࿈ܞ ɾखݩͷσόΠεͰಈ࡞ ɾωοτϫʔΫͷઌͰಈ࡞ ▶︎ ͜ͷೋ͕ͭϓϩάϥϜߏ଄্΋໌֬ʹ෼͔ΕΔ͔͸ઃܭ্ͷબ୒ʹͳΔ

Slide 13

Slide 13 text

ϑϩϯτΤϯυͱόοΫΤϯυͷ໌֬ͳ෼཭Λબ୒  େࣄʹͨ͜͠ͱɿ • ઃܭ໨ඪɿʢͲͪΒ͔ͱ͍͏ͱʣରਓઐ༻ੑΛॏࢹ͢ΔϑϩϯτΤϯυͱɺγεςϜͱͯ͠ͷ൚ ༻ੑͱυϝΠϯͷෳࡶੑʹ޲͖߹͏όοΫΤϯυ • ૊৫จԽɿϑϧαΠΫϧͰͷ։ൃΛଅਐͭͭ͠ɺઐ໳తͳྖҬ͕͋Δ͜ͱΛೝΊΔ • ٕज़ઓུɿ࣮ߦσόΠεʹ΋ґଘ͠ྲྀಈੑ΋ߴ͍ϑϩϯτΤϯυٕज़ʹରͯ͠ɺൺֱత҆ఆͯ͠ σϓϩΠ΋༰қͳαʔόʔαΠυٕज़ • Ҏ্ͷશͯͱ૬ޓ࡞༻͠ͳ͕ΒਐԽ͢ΔΞʔΩςΫνϟʢޙड़ʣ • બ୒ɿϑϩϯτΤϯυͱόοΫΤϯυΛ෼཭͢Δ • ෼཭ٕज़ͱͯ͠(SBQI2-Λ࠾༻

Slide 14

Slide 14 text

෼཭ٕज़ͱͯ͠ͷ(SBQI2-ʹ͍ͭͯ  • ιϑτ΢ΣΞͷΠϯλʔϑΣΠεΛεΩʔϚͱͯ͠ఆٛ͢Δ • όοΫΤϯυ͸εΩʔϚΛຬͨ͢Α͏ʹ࣮૷͢Δ • ϑϩϯτΤϯυ͸εΩʔϚΛݩʹΫΤϦΛൃߦ͢Δ • ࣮૷͕ΠϯλʔϑΣΠεʹґଘ͢ΔͨΊɺద੾ʹεΩʔϚΛઃܭ͢Δ͜ͱͰૄ݁߹ͷԸܙ͕͋Δ (SBQI2-ΫΤϦ query SanuAreas { areas { name sites { name rooms { code } } } } { "data": { "areas": [ { "name": "ീϲַ", "sites": [ { "name": "ീϲַ 1st", "rooms": [ { "code": "0103" }, { "code": "0102" } (SBQI2-Ϩεϙϯε

Slide 15

Slide 15 text

࠾༻ͨ͠ΞʔΩςΫνϟʢ࣮ࡍʣ  • ϞϊϨϙ͕ͩ'&#&Λ࿦ཧతʹ෼཭ʢผͷOQNύοέʔδʹͳΔʣ • αʔόʔଆ͸୯Ұͷ/PEFKTϓϩηεͱͯ͠ಈ͔͠ɺ'&#&྆ํͱͯ͠ৼΔ෣͏ • ඞཁʹԠͯ͡'&#&Ͱͷαʔόʔ෼཭ɾσϓϩΠαΠΫϧͷ෼཭ͳͲ΋Մೳ

Slide 16

Slide 16 text

ਐԽ͢ΔΞʔΩςΫνϟɿ ϑϩϯτΤϯυͷଟ༷Խ 

Slide 17

Slide 17 text

ਐԽ͢ΔΞʔΩςΫνϟɿ ϑϩϯτΤϯυͷଟ༷Խ  • Ϣʔεέʔε΍؀ڥʹԠͯ͡ҟͳΔ ϑϩϯτΤϯυΛఏڙ͍ͯ͘͠έʔε • ࠷దͳٕज़͕54ͱ͸ݶΒͳ͍ • ࣮ࡍ4"/6Ͱ͸؅ཧ༻ΞϓϦʹ ϩʔίʔυٕज़ 3FUPPM Λ࠾༻ • (SBQI2-Ͱ͸ఏڙ͢Δ৘ใ͕ಉ͡Ͱ͋Ε ͹όοΫΤϯυͷมߋͳ͠Ͱల։Ͱ͖Δ ݱ୅ͷ8FCαʔϏε͸࣮ࣾձͷଟ༷ͳεςʔΫϗϧμʔΛר͖ࠐΜͰ՝୊Λղܾ͢Δέʔε΋ଟ͘ͳ͍ͬͯΔͨΊɺ γεςϜ͸ڞ௨͕ͩҟͳΔΞϓϦΛఏڙ͢Δɺͱ͍ͬͨ͜ͱ͸4"/6ʹݶΒͣҙ֎ͱଟ͍ͷͰ͸ͳ͍Ͱ͠ΐ͏͔

Slide 18

Slide 18 text

ਐԽ͢ΔΞʔΩςΫνϟɿ όοΫΤϯυͷߴ౓Խ 

Slide 19

Slide 19 text

ਐԽ͢ΔΞʔΩςΫνϟɿ όοΫΤϯυͷߴ౓Խ  • ֎෦γεςϜʹྲྀͨ͠ΓɺෳࡶͳॲཧΛ αϒγεςϜͰ࣮ݱ͢Δέʔε • (SBQI2-εΩʔϚ͑͞ຬͨͤ͹ɺඞཁͳ෦෼ ͚ͩผγεςϜͱͯ͠෼཭ɾ౷߹͕༰қʢࢧ ԉٕज़͕๛෋ʣ • ܾΊଧͪͰ͸ͳٕ͘ज़తબ୒ࢶ͕͋Δ ͜ͱ͕த௕ظతʹਖ਼͍͠ਐԽΛଅ͢

Slide 20

Slide 20 text

εϐʔυΛ٘ਜ਼ʹ͠ͳ͍ͭͷ޻෉  όοΫΤϯυͱϑϩϯτΤϯυΛ෼͚Δ͜ͱͰൃੜ͢ΔΦʔόʔϔουʹରॲɿ • ։ൃ࣌ɿαʔόʔͷىಈɾ࿈ܞ͕໘౗ʹͳΔ • ➡ϑϩϯτΤϯυͷ/FYUKTαʔόʔʹόοΫΤϯυಉࠝ✅ίϚϯυͰىಈɾऴྃ • ӡ༻࣌ɿΠϯϑϥ΍$*$%͕ෳࡶʹ • ➡ϞϊϨϙΛ7FSDFMʹ࿈ܞͯ͠αʔόϨεʹ͓೚ͤ • ✅ચ࿅͞Εͨ։ൃϓϥοτϑΥʔϜͰɺΤϯδχΞ͸ϓϩμΫτ։ൃʹूத • ࣮ߦ࣌ɿωοτϫʔΫΛܦ༝͢Δ͜ͱʹΑΔίετɾ଎౓૿ • ➡αʔόʔαΠυ͔Βͷ(SBQI2-ݺͼग़͠͸τϥϯεϙʔτ૚Λ)551͔Βࠩ͠ସ͑ • ✅༨෼ͳαʔόϨεɾϑΝϯΫγϣϯͷىಈΛ཈͑Δ͜ͱ͕Ͱ͖ͨ

Slide 21

Slide 21 text

໨ࢦͨ͜͠ͱʢ࠶ܝʣ  zεϐʔυΛ٘ਜ਼ʹͤͣɺ࣋ଓతʹ੒௕͢Διϑτ΢ΣΞΛ࡞Δz

Slide 22

Slide 22 text

໨ࢦͨ͜͠ͱʢ࠶ܝʣ  zεϐʔυΛ٘ਜ਼ʹͤͣɺ࣋ଓతʹ੒௕͢Διϑτ΢ΣΞΛ࡞Δz 'VMM4UBDL5ZQF4DSJQUͰ࣮ݱ

Slide 23

Slide 23 text

໨ࢦͨ͜͠ͱʢ࠶ܝʣ  zεϐʔυΛ٘ਜ਼ʹͤͣɺ࣋ଓతʹ੒௕͢Διϑτ΢ΣΞΛ࡞Δz εΩʔϚʹΑΔ෼཭Ͱ࣮ݱ

Slide 24

Slide 24 text

໨ࢦͨ͜͠ͱʢ࠶ܝʣ  zεϐʔυΛ٘ਜ਼ʹͤͣɺ࣋ଓతʹ੒௕͢Διϑτ΢ΣΞΛ࡞Δz

Slide 25

Slide 25 text

ίʔυϨϕϧͰݟΔ εΩʔϚͱܕ͕΋ͨΒ͢Ձ஋

Slide 26

Slide 26 text

࠷ॳʹ͓࿳ͼ🙏  ൃද࣌ؒͷ౎߹΋͋Γ(SBQI2-Y5ZQF4DSJQUΛ࢖ͬͨ։ൃͷΠϩϋ͔ΒຊηογϣϯͰ ѻ͏͜ͱ͸Ͱ͖·ͤΜͰͨ͠ɻ ࢝ΊΔࡍͷखҾ͖ͱͯ͠͸ڈ೥ͷ54,BJHJͰͷ!IPLBDDIB͞ΜʹΑΔ5ZQF4DSJQUͱ (SBQI2-Ͱ࣮ݱ͢Δܕ҆શͳ"1*࣮૷ ͕େมஸೡͳηογϣϯͱͳ͍ͬͯ·͢🙌 ຊηογϣϯͰ͸ϑϩϯτΤϯυ͔ΒόοΫΤϯυ·ͰεΩʔϚΛ௨ͯ͡ܕ͕෇͍͍ͯΔ͜ ͱΛલఏͱͯ͠εΩʔϚۦಈͷྲྀΕʹ͍ͭͯݟ͍͖ͯ·͢ɻ <ৄ͍͠ํ޲͚>্هൃදͱͷࡉ͔ͳٕज़બఆͷҧ͍ (SBQI2-4%- εΩʔϚఆٛݴޠ Λ࢖ͬͨʮεΩʔϚϑΝʔετʯͷΞϓϩʔνΛ࠾༻ (SBQI2-ίʔυੜ੒͸ϑϩϯτΤϯυ΋όοΫΤϯυ΋(SBQI2-$PEFHFOͰ౷Ұ όοΫΤϯυͰ͸ͦΕΛ(SBQI2-:PHB্Ͱಈ͔͢ߏ੒ʹͳ͍ͬͯΔ IUUQTTQFBLFSEFDLDPNIPLBDDIBUTLBJHJ

Slide 27

Slide 27 text

͓୊ͦͷɿશ෦԰Λදࣔ͢Δ  ΤϦΞʼڌ఺ʼ෦԰

Slide 28

Slide 28 text

type Query { areas: [Area!]! } """ΤϦΞʢྫɿീϲַ,Տޱބʣ""" type Area { name: String! sites: [Site!]! } """ڌ఺ʢྫɿീϲַ1st,ീϲַ2ndʣ""" type Site { nth: String! rooms: [Room!]! } """෦԰""" type Room { Code: String! } (SBQI2-εΩʔϚΛఆٛ͢Δ  • ΤϯτϦϙΠϯτΛఆٛ • ֤ΦϒδΣΫτΛఆٛ • ೔ຊޠ΋ซه͢Δ • ϢϏΩλεݴޠͷఆٛʹͳΔ • ΦϒδΣΫτಉ࢜Λܨ͙ schema.graphql

Slide 29

Slide 29 text

όοΫΤϯυɿڌ఺ʹؚ·ΕΔ෦԰ΛऔಘͰ͖ΔΑ͏ʹ͢Δྫ  • (SBQI2-$PEFHFO4FSWFS1SFTFUͰ਽ܗΛίʔυੜ੒ import type { SiteResolvers } from "../__generated__/types"; export const Site: SiteResolvers = { rooms: async (parent, _arg, ctx) => { // Implementation of the resolver. // // // // }, }; resolvers/Site.ts

Slide 30

Slide 30 text

όοΫΤϯυɿڌ఺ʹؚ·ΕΔ෦԰ΛऔಘͰ͖ΔΑ͏ʹ͢Δྫ  • (SBQI2-$PEFHFO4FSWFS1SFTFUͰ਽ܗΛίʔυੜ੒ import type { SiteResolvers } from "../__generated__/types"; export const Site: SiteResolvers = { rooms: async (parent, _arg, ctx) => { // Implementation of the resolver. // // // // }, }; resolvers/Site.ts • ੜ੒͞Εͨ਽ܗʹରͯ͠σʔλϑΣονΛ࣮૷ • ͜ͷ৔߹͸σʔλϕʔεͱͷ΍ΓऔΓʹ1SJTNBΛར༻͍ͯ͠Δ return ctx.prisma.room.findMany({ where: { siteId: parent.id, }, });

Slide 31

Slide 31 text

ϑϩϯτΤϯυɿ෦԰Λදࣔ͢Δίϯϙʔωϯτͷྫ  • 3FBDUίϯϙʔωϯτͷϑΝΠϧʹ ࢀর͢Δ(SBQI2-ͷσʔλ΋ఆٛ • 'SBHNFOU$PMPDBUJPOͱ͍͏ඞਢख๏ const Fragment = graphql(` fragment RoomForCalendar on Room { code } `); type Props = { FragmentType }; export function Room({ roomData }: Props) { const room = useFragment(Fragment, roomData); return (
{room.code}
); } room.tsx

Slide 32

Slide 32 text

ϑϩϯτΤϯυɿ෦԰Λදࣔ͢Δίϯϙʔωϯτͷྫ  • ྫɿ෦԰ʹઃඋ͕෇͍ͨ৔߹ͷରԠ • มߋ͕ίϯϙʔωϯτͰ׬݁͢Δ✅ const Fragment = graphql(` fragment RoomForCalendar on Room { code facility { name type } } `); type Props = { FragmentType }; export function Room({ roomData }: Props) { const room = useFragment(Fragment, roomData); return (
{room.code} {facilityIcon(room.facility.type)} {facilityLabel(room.facility.type)}
); } room.tsx

Slide 33

Slide 33 text

͓୊ͦͷɿ৽͍͠αʔϏεϓϥϯͷల։  എܠɿ্ཱͪ͛ͷ։ൃͱฒߦͯ͠ɺ్த͔ΒͭͷαʔϏεϓϥϯ͕࢝ಈ

Slide 34

Slide 34 text

6OJPOܕΛ׆༻ͨ͠ࣄۀల։ɿεΩʔϚϨϕϧ  αʔϏεϓϥϯΛ6OJPOܕͰϞσϦϯάͯ͠௥Ճ͍ͯ͘͠ ॳظͷεΩʔϚఆٛɿ ݱࡏͷεΩʔϚఆٛɿ union ServiceProvider = | SubscriptionProvider | BusinessProvider | CoOwnersProvider | FullOwnersProvider | StayProvider # ৽αʔϏε # ৽αʔϏε # ৽αʔϏε union ServiceProvider = | SubscriptionProvider | BusinessProvider schema.graphql schema.graphql

Slide 35

Slide 35 text

6OJPOܕΛ׆༻ͨ͠ࣄۀల։ɿܕϨϕϧ มߋ͢΂͖ՕॴΛܕΤϥʔͰัଊ ➡मਖ਼ՕॴΛϦετΞοϓ ✅αʔϏεϓϥϯΛػಈతʹల։ ஫ʣ౰વͳ͕ΒυϝΠϯͷؔ৺ࣄΛεΩʔϚͱܕʹͲͷΑ͏ʹɾͲͷఔ౓൓өͤ͞Δ͔ͱ͍͏υϝΠϯͷ৘ใઃܭ͸࠷ॏཁʹͳΓ·͢ εΩʔϚ͔Βੜ੒͞Εͨܕʹରͯ͠໢ཏνΣοΫΛॻ͍͓ͯ͘͜ͱͰɾɾɾ switch (provider.type) { case "SubscriptionProvider": handleSubscriptionProvider(provider); case "BusinessProvider": handleBusinessProvider(provider); default: { // ৽αʔϏεΛεΩʔϚʹ൓ө͢Δͱ͜͜ͰܕΤϥʔ͕ൃੜ const _exhaustiveCheck: never = provider.type; } }

Slide 36

Slide 36 text

εΩʔϚͱܕʹΑΔ։ൃΛͯ͠Έͯ  վΊͯΞϓϦέʔγϣϯશମΛ၆ᛌͯ͠Έ·͢ɿ ɾϑϩϯτΤϯυ͸εΩʔϚʹج͍ͮͯΫΤϦΛൃߦ͢Δॊೈͳ։ൃ͕Ͱ͖Δ ɾόοΫΤϯυ͸ͭͷεΩʔϚΛܨ͙໾ׂΛ༩͑ΒΕΔ͜ͱͰਫ਼౓ͷߴ͍࣮૷͕Ͱ͖Δ  ಉ࣌ʹ։ൃ࣌ͱ࣮ߦ࣌ͷݕূόϥϯεͷྑ͞ʹ΋஫໨͍ͨ͠ͱ͜ΖͰ͢ɿ ɾܕɿ։ൃ࣌ʹ5ZQF4DSJQUʹΑΔܕνΣοΫ✅ʢϑΟʔυόοΫ଎౓ॏࢹʣ ɾεΩʔϚɿ։ൃ࣌ʹՃ࣮͑ͯߦ࣌΋ݕূ✅ʢ҆શੑॏࢹʣ  ԿΑΓεΩʔϚͱ͍͏ந৅౓ͷߴ͍هड़Λى఺ʹ͢Δ͜ͱ͸ɺνʔϜʹڞ௨ݴޠΛ΋ͨΒ͠·͢ɻ ඞવతʹ$VSTPS%FWJOͳͲͷ"*ίʔσΟϯάͱ΋ൈ܈ʹ૬ੑ͕ྑ͘ͳΓ·͢ɻ  ૯ͯ͡εΩʔϚۦಈͷ։ൃ͸୯ͳΔܕ҆શੑΛ௒͑ΔՁ஋Λ࣋ͭɺͱݴ͑ΔͰ͠ΐ͏ɻ

Slide 37

Slide 37 text

·ͱΊ

Slide 38

Slide 38 text

ࠓ೔͓఻͑ͨ͜͠ͱ  • εΩʔϚۦಈ'VMM4UBDL5ZQF4DSJQUͷΞʔΩςΫνϟ • (SBQI2-Λ׆༻ͯ͠ϑϩϯτΤϯυͱόοΫΤϯυʹڥքΛ࡞Δ • ϑϩϯτΤϯυͷଟ༷Խ΍όοΫΤϯυͷ෼ׂɾ֦ுͳͲͷൃలύλʔϯ • ϫϯϓϩηεԽɺΠϯϓϩηεԽɺϓϥοτϑΥʔϜ׆༻ͳͲͷςΫχοΫ • εΩʔϚۦಈͰͷ։ൃ • εΩʔϚఆ͔ٛΒϑϩϯτΤϯυɾόοΫΤϯυͷ࣮૷·Ͱ • εΩʔϚ͔Βܕʹམͱ͠ࠐΉ͜ͱͰࣄۀల։ੑΛ֫ಘ͢Δྫ

Slide 39

Slide 39 text

೥୅ͷιϑτ΢ΣΞΛ5ZQF4DSJQUͰ૑Δ  ࠷ޙʹɾɾɾ ೥୅ʹ࢝·ͬͨଟ͘ͷ8FCαʔϏε͸ɺ੒௕ͱڞʹٕज़ɾ૊৫ͷεέʔϧͷ՝୊ʹ औΓ૊ΜͰ͖·ͨ͠ɻεΩʔϚ΍઴ਐతܕ෇͚ͷٕज़΋౰ॳ͸ະ੒ख़Ͱͨ͠ɻ ͦͯ͠ࠓɺࢲ͕ͨͪఏҊ͢Δͷ͸ɺʮεΩʔϚͱܕΛ࣠ʹͨ͠'VMM4UBDL5ZQF4DSJQUʯͱ ͍͏۩ମతͳղܾࡦͰ͢ɻ ͜Ε͸୯ʹ։ൃޮ཰ͷ໰୊Ͱ͸ͳ͘ɺ࣋ଓՄೳͰՁ஋͋Διϑτ΢ΣΞΛ࡞ΔͨΊͷຊ࣭ తͳΞϓϩʔνͷҰͭͰ͢ɻ ͥͻօ͞Μͷݱ৔Ͱ΋ࢼͯ͠Έ͍ͯͩ͘͞ʂ

Slide 40

Slide 40 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ

Slide 41

Slide 41 text

"QQFOEJY

Slide 42

Slide 42 text

෼཭ٕज़ʹ͓͚Δ(SBQI2-ͷཱͪҐஔ  • ݺͼग़͠ଆͷॊೈੑ͕13$ΑΓ΋ߴ͘ɺϑϩϯτΤϯυͱόοΫΤϯυͷ੹຿ͷڥք ͕มΘΔ ▶︎ ͜ͷ݁Ռͱͯ͠ϑϩϯτΤϯυͷల։ੑ͕ߴ͘ͳΔ • ಉ࣌ʹ࠷దԽͱͷτϨʔυΦϑ͕͋ΔͨΊɺ͜ͷதͰൺֱͯ͠બ୒͢Δ͜ͱʹͳΔ "1*DVTUPNJ[BUJPOTQFDUSVNUSBEFP ff 1SPEVDUJPO3FBEZ(SBQI2-

Slide 43

Slide 43 text

αʔόʔαΠυʹ͓͚Δ(SBQI2-ݺͼग़͠  import { YogaLink } from "@graphql-yoga/apollo-link"; function createApolloClientForServer(...) { return new ApolloClient({ // มߋ఺͸͜Ε͚ͩ link: new YogaLink({ fetch: yoga.fetch, endpoint: yoga.graphqlEndpoint, }), // ... }); } ɾ"QPMMP$MJFOUͷMJOLΛมߋ͢Δ͜ͱͰΠϯϓϩηεʹͰ͖Δ

Slide 44

Slide 44 text

3FBM8PSME(SBQI2-4DIFNB  ɾεΩʔϚΛҭ͍ͯͯ͘ͱ͜͏͍͏άϥϑ͕ग़དྷ͍ͯ͘

Slide 45

Slide 45 text

(SBQI2-ؔ࿈ͷ͓͢͢Ίࢿྉू • 5ZQF4DSJQUͱ(SBQI2-Ͱ࣮ݱ͢Δܕ҆શͳ"1*࣮૷ • IUUQT[FOOEFWVCJF@EFWBSUJDMFTBEFFFF • (SBQI2-ͷޡղSFUIJOLJOHHSBQIRM • IUUQTTQFBLFSEFDLDPNTPOBUBSESFUIJOLJOHHSBQIRM • 1SPEVDUJPO3FBEZ(SBQI2- • IUUQTCPPLQSPEVDUJPOSFBEZHSBQIRMDPN • (SBQI2-͋Δ͍͸3FBDUʹ͓͚Δࣗ཯తͳσʔλऔಘʹ͍ͭͯ • IUUQTTQFBLFSEFDLDPNRVSBNZGSBHNFOUDPNQPTJUJPOPGHSBQIRM • (SBQI2-αʔόͷߏ੒ཁૉΛ੔ཧ͢Δ • IUUQTTQFBLFSEFDLDPNJ[VNJOHSBQIRMTFSWFSUFDIOPMPHZTFMFDUJPO 

Slide 46

Slide 46 text

όοΫΤϯυ಺ͷϨΠϠϦϯά