吉祥寺.pm28 でお話ししました https://kichijojipm.connpass.com/event/236031/
追記:Podcast で解説した https://anchor.fm/wantedly-dev/episodes/--GraphQL--w-Altech-e1edkrv
٢ࣉQN4PIFJ5BLFOPٕज़ΛతʹͯΔٕज़ʹ͍ͭͯ(SBQI2-ΛೖΕͨ͠
View Slide
(SBQI2-ΛೖΕͨ͠• (SBQI2-ɿ8FC"1*ʹؔ࿈͢Δٕज़ͷҰͭ• લ͘Β͍ʹ8BOUFEMZͷαʔϏεͷҰ෦ʹೖͬͨ• ͪΐͬͱҧ͏ܗͰೖͬͪΌͬͨͷͰɺۙͰೖΕͨ͠ʢٕज़ͷϦϒʔτʣ• ٕज़ΛԿ͔ͷతʹ͚ࣹͯ͢Δ• ্ख͘తʹ͍ͨͬͯΔ߹ɿ։ൃ͕͘͢͠ͳΓɺαʔϏε͕ྑ͘ͳΔ• త͔Βେ͖͘֎Ε͍ͯΔ߹ɿྑ͘ͳΒͣʹٕज़͕׆͖ͯͳ͍ঢ়ଶʹͳΔ
ٕज़Λ্ख͘తʹͯΔʹ Ͳ͏͢ΕΑ͔ͬͨͩΖ͏͔ʁ🎯ʢͱ͍͏͜ͱΛߟ͑ͯΈ͍ͨʣ
ࣗݾհ• ໊લɿ4PIFJ5BLFOP• ձࣾɿΥϯςουϦʔגࣜձࣾΞʔΩςΫτ• ͖ͳݴޠɿ3VCZ• ࠷ۙॻ͍ͯΔݴޠɿ5ZQF4DSJQU• ͖ͳͷɿήʔϜɺຊञ!"MUFDI@
(SBQI2-ೖɿୈҰظ
࠷ॳʹͲ͏ͬͯೖ͔ͬͨʢ̍ʣ• ࠷ॳͷಈػɿ8FCϑϩϯτΤϯυͷ։ൃΛ͘͢͢͠Δ• (SBQI2-"QPMMPΫϥΠΞϯτͷ8FCϑϩϯτΤϯυʹ͓͚Δ ։ൃମݧ͕ͦΕ·Ͱʹൺͯඇৗʹྑ͔ͬͨ• ͳͥ։ൃମݧ͕ྑ͔͔ͬͨʁ• "1*ʹεΩʔϚ͕͘• σʔλܕͷఆ͕ٛੜͰ͖Δ• "1*͕ΫΤϦݴޠʹجͮ͘• ΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ
࠷ॳʹͲ͏ͬͯೖ͔ͬͨʢ̎ʣ• #BDLFOEGPS'SPOUFOE #''ͱͯ͠OPEFͰಈ͘(SBQI2-αʔόʔΛಋೖ• എޙʹ͋Δ3VCZPO3BJMTͷαʔόʔʢෳʣΛୟ͘• ঃʑʹϚΠΫϩαʔϏεԽ͍ͯͨ͠ͷͰɺ3BJMTʹ࣮͢Δ͜ͱΛආ͚ͨ
࣮ࡍʹ։ൃΛͯ͠ΈͨৼΓฦΓ• ૯ɿαʔϏε։ൃશମͱͯͦ͠Μͳʹྑ͘ͳΒͳ͔ͬͨʼʻ• ݪҼ৭ʑ͋Δ• #''ͷʹҰख๊ؒ͑Δඞཁ͕͋ͬͨ• όοΫΤϯυͰ͍ͬͯΔ1SPUPDPM#VffFSTͷεΩʔϚͱೋॏཧʹͳͬͨ• ɾɾɾ
ͱ͍͑ɺ
࠷ॳʹͲ͏ͬͯೖ͔ͬͨʢ̍ʣ• ࠷ॳͷಈػɿ8FCϑϩϯτΤϯυͷ։ൃΛ͘͢͢͠Δ• (SBQI2-"QPMMPΫϥΠΞϯτͷ8FCϑϩϯτΤϯυʹ͓͚Δ ։ൃମݧ͕ͦΕ·Ͱʹൺͯඇৗʹྑ͔ͬͨ• ͳͥ։ൃମݧ͕ྑ͔͔ͬͨʁ• "1*ʹεΩʔϚ͕͘• σʔλܕͷఆ͕ٛੜͰ͖Δ• "1*͕ΫΤϦݴޠʹجͮ͘• ΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔͦΕͧΕͯ͢ࣄ࣮
Ͳ͏͢Δͱྑ͔͔ͬͨʁʁ
લఏΛ֬ೝ͢Δ
ߟ͑ΔೖΓޱΛม͑ͯΈΔ• ʮ(SBQI2-"QPMMPΫϥΠΞϯτͷ։ൃମݧ͕ྑ͍ʯ• ։ൃମݧͱ͍͏ݴ༿Λ͍ͬͨΜࢭΊͯΈΔ• ͦΕͰಘΒΕΔͱࢥ͍ͬͯΔͷʁ• ʮΞϓϦέʔγϣϯ͕͘࡞ΕΔʯ• ˠදࣔʹߜͬͯ۩ମతʹߟ͑ͯΈΔ
ΞϓϦέʔγϣϯͷྫ
-• ʮΞόλʔը૾ʯʮΧόʔը૾ʯ• ʮ৬ྺʯʮֶྺʯʮ෦ॺʯʮ৬ʯ• Ұ؏ͨ͠ʮࡏ੶ظؒʯͱ͍͏ΦϒδΣΫτ• ϞόΠϧϏϡʔͩͱใྔΛݮΒͯ͠දࣔ͢ΔΦϒδΣΫτͷྫ
۩ମྫ͔Β͔Δ͜ͱ• γφϦΦɿ"1*͔ΒσʔλΛऔͬͯདྷͯΞϓϦέʔγϣϯ͕දࣔ͢Δ• 6*্ʹදࣔ͢Δใͱ"1*ͰऔΕΔΦϒδΣΫτͷؒʹҰఆͷࣗ໌ͳؔੑ͕ͳ͚Εɺʢܕ͕͍͍ͭͯͯʣ͘࡞Δ͜ͱͰ͖ͳ͍• ӅΕ͍ͯͨલఏ• ΦϒδΣΫτ͕దʹϞσϦϯά͞Ε͍ͯͯɺΦϒδΣΫτؒͷؔ࿈͕దʹ୧ΕΔΑ͏ʹͳ͍ͬͯͯɺ͡ΊͯʮΞϓϦέʔγϣϯ͕͘࡞ΕΔʯ
ٕज़Λཧղ͢Δ
ಉ͡Α͏ͳΛղܾͰ͖Δٕज़Λൺֱ͢Δ• "1*ʹܕΛ͚ͭΔ͜ͱ͕Ͱ͖Δٕज़ʢ"1*εΩʔϚٕज़ʣଞʹ͋Δ• 1SPUPDPM#VffFS 4XBHHFS +40/4DIFNBFUDʜ• ಉ͡తΛղܾ͢ΔͷͰ͋Ε༨ͳநԽΛ͍ͯ͠ͳ͍ٕज़ΛબͿ͖• lXPSTFJTCFUUFSz• ฒͯΈ͔ͯΔ͜ͱɿͦΕͧΕͷಛʢσβΠϯʣ• (SBQI2-ͷσβΠϯ• ΦϒδΣΫτͷάϥϑΛߏஙͰ͖Δ• άϥϑ্ͷΦϒδΣΫτΛબతʹऔಘͰ͖Δ• ͜ΕΒΛ࣮ݱ͢ΔͨΊʹΫΤϦݴޠεΩʔϚ͕ඞཁͱ͞Ε͍ͯΔ
σβΠϯ͔ΒઃఆΛଊ͑Δ• σβΠϯʹҙਤ͕͋ΔɻσβΠϯ͔ΒઃఆΛଊ͑Δɻ• ؍ͦͷ̍ɿΞϓϦέʔγϣϯͷৄࡉͳ༷มΘΓ͍͢• ։ൃΛͯ͠ϑΟʔυόοΫΛड͚ΔதͰมΘΔʢ࣌ؒ࣠ʹ͓͚ΔมԽʣ• ը໘αΠζʹΑͬͯҟͳΔʢಉҰ࣌ؒͰόϦΤʔγϣϯ͕͋Δʣ• ؍ͦͷ̎ɿυϝΠϯϞσϧมΘΓʹ͘͘όϦΤʔγϣϯͳ͍• (SBQI2-ͷઃఆ• υϝΠϯϞσϧΛ͋Β͔͡Ίఏڙ͓͖ͯ͠ΞϓϦέʔγϣϯ͕ࣗ༝ʹ͑ΔΑ͏ʹ͢Δ• ͜ͷతΛ࣋ଓతʹୡ͢ΔͨΊʹɺʮΦϒδΣΫτάϥϑͷߏஙʯʮΞϓϦέʔγϣϯଆ͔Βͷબతͳऔಘʯ͕ఏڙ͞Ε͍ͯΔ
(SBQI2-ͱ͍͏ٕज़ͷཧղɾ"1*ʹεΩʔϚ͕͘ɾ"1*͕ΫΤϦݴޠʹجͮ͘ɾσʔλܕͷఆ͕ٛੜͰ͖ΔɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ(SBQI2-ͷΤίγεςϜ(SBQI2-ͷ༷
(SBQI2-ͱ͍͏ٕज़ͷཧղɾ"1*ʹεΩʔϚ͕͘ɾ"1*͕ΫΤϦݴޠʹجͮ͘ɾσʔλܕͷఆ͕ٛੜͰ͖ΔɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ(SBQI2-ͷΤίγεςϜ(SBQI2-ͷ༷ɾΦϒδΣΫτͷάϥϑΛߏஙͰ͖ΔɾΦϒδΣΫτΛબతʹऔಘͰ͖Δ(SBQI2-ͷσβΠϯ
(SBQI2-ͱ͍͏ٕज़ͷཧղɾ"1*ʹεΩʔϚ͕͘ɾ"1*͕ΫΤϦݴޠʹجͮ͘ɾσʔλܕͷఆ͕ٛੜͰ͖ΔɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ(SBQI2-ͷΤίγεςϜ(SBQI2-ͷ༷ɾΦϒδΣΫτͷάϥϑΛߏஙͰ͖ΔɾΦϒδΣΫτΛબతʹऔಘͰ͖Δ(SBQI2-ͷσβΠϯυϝΠϯΦϒδΣΫτΛ༧Ίఏڙ͓͖ͯ͠ΞϓϦέʔγϣϯ͕ࣗ༝ʹ͑ΔΑ͏ʹ͢Δ(SBQI2-ͷઃఆ
(SBQI2-ͱ͍͏ٕज़ͷཧղɾ"1*ʹεΩʔϚ͕͘ɾ"1*͕ΫΤϦݴޠʹجͮ͘ɾσʔλܕͷఆ͕ٛੜͰ͖ΔɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ(SBQI2-ͷΤίγεςϜ(SBQI2-ͷ༷ɾΦϒδΣΫτͷάϥϑΛߏஙͰ͖ΔɾΦϒδΣΫτΛબతʹऔಘͰ͖Δ(SBQI2-ͷσβΠϯυϝΠϯΦϒδΣΫτΛ༧Ίఏڙ͓͖ͯ͠ΞϓϦέʔγϣϯ͕ࣗ༝ʹ͑ΔΑ͏ʹ͢Δ(SBQI2-ͷઃఆ࠷ॳʹݟͯͨ෦
(SBQI2-ͱ͍͏ٕज़ͷཧղɾ"1*ʹεΩʔϚ͕͘ɾ"1*͕ΫΤϦݴޠʹجͮ͘ɾσʔλܕͷఆ͕ٛੜͰ͖ΔɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ(SBQI2-ͷΤίγεςϜ(SBQI2-ͷ༷ɾΦϒδΣΫτͷάϥϑΛߏஙͰ͖ΔɾΦϒδΣΫτΛબతʹऔಘͰ͖Δ(SBQI2-ͷσβΠϯυϝΠϯΦϒδΣΫτΛ༧Ίఏڙ͓͖ͯ͠ΞϓϦέʔγϣϯ͕ࣗ༝ʹ͑ΔΑ͏ʹ͢Δ(SBQI2-ͷઃఆ࣮ॏཁͳ෦
(SBQI2-ೖɿୈೋظ
ͦͷٕज़͕ࣗͨͪͷΛղܾ͢Δ͔ʁ• 8BOUFEMZͷΞϓϦέʔγϣϯͷಛੑɿ• ϚϧνϓϥοτϑΥʔϜɿJ04 "OESPJE 8FC• πʔαΠυϚʔέοτϓϨΠεɿݸਓϢʔβʔɺاۀϢʔβʔ• ˠ࠷ͰͭͷΞϓϦέʔγϣϯ͕͋ΔʢಉҰ࣌ؒ࣠ͰͷόϦΤʔγϣϯʣ• 8BOUFEMZόοΫΤϯυͷಛੑɿ• ϚΠΫϩαʔϏεԽΛ͓ͯ͠ΓυϝΠϯΦϒδΣΫτ"1*ʹݱΕΔ• ઃఆ͕߹க͍ͯ͠Δˠ:FT
ͦͷٕज़ΛͲͷΑ͏ʹ͏͔ʁʢ̍ʣ• ʮυϝΠϯΦϒδΣΫτΛ͋Β͔͡Ίఏڙ͓͖ͯ͠ɺΞϓϦέʔγϣϯ͕ࣗ༝ʹ͑ΔΑ͏ʹ͢Δʯʢ(SBQI2-ͷઃఆʣ• ˠ໌Β͔ʹྑ͍υϝΠϯϞσϧΛఏڙͰ͖Δ͔͕ݤʹͳ͍ͬͯΔ• #BDLFOEGPS'SPOUFOEͰͩͬͨ• ͜ͷϨΠϠʔ͕Ͱ͖ͨ͜ͱͰɺόοΫΤϯυͷϞσϦϯάʹ͕͋ͬͨͱ͖ʹɺϑϩϯτΤϯυ͔ΒΛӅณͯ͠͠·͏• ྫ͑ɿϑΟʔϧυ໊͕దͰͳ͍ͱ͖ɺ#''ͷϨΠϠʔͰΑΓదͳ໊લʹม͢ΔΑ͏ͳ͜ͱ͕࠷༰қ͘ߦ͑ͯ͠·͏• ྑ͍υϝΠϯϞσϦϯάΛߦ͏ํͱશ͘ٯͷྗֶ͕ಇ͍ͯ͠·͍ͬͯΔ
ͦͷٕज़ΛͲͷΑ͏ʹ͏͔ʁʢ̎ʣ• ଧͪख̍ɿ#''Ͱͳ͘(BUFXBZʹ͢Δ• #BDLFOE"1*Λ1SPUPDPM#VffFSTͰఆٛͯ͠ϞσϦϯάΛߦͳ͍ͬͯΔ• ΦϒδΣΫτఆٛࣗମͦΕΛίϝϯτؚΊͯͦͷ··͑ΔΑ͏ʹ͢Δ• ଧͪख̎ɿ• 8FCϑϩϯτΤϯυ͚ͩͰͳ͘ɺϞόΠϧΞϓϦͰ͑Δ͜ͱΛݕূͨ͠• ҎલͱͷมԽ• ྑ͍υϝΠϯϞσϦϯάͷԸܙ͕αʔϏε։ൃͷ͋ΒΏΔ෦ʹԸܙ͕ߦ͖Δঢ়گʹ͢Δʗߦ͖ΔͷͰྑ͍υϝΠϯϞσϦϯά͕ߦΘΕΔͱ͍͏ߏΛ࡞Δ• ͜ΕʹΑͬͯ(SBQI2-ͱ͍͏ٕज़͕׆͖ΔΑ͏ʹͳ͖ͬͯͨ
·ͱΊ• ٕज़Λ͏·͘తʹͯΔʹʁ🎯• ·ٕͣज़͕ղܾ͍ͨ͠Λଊ͑Δ• ͜Ε͕Ͱ͖ΕతߜΕΔ• ͜ͷաఔҙ֎ͱ໘ന͍ʢͱࢥ͏ʣ
ࢀߟɿ1SPUPDPM#VffFS͔Βੜ͞ΕͨΦϒδΣΫτ