$30 off During Our Annual Pro Sale. View Details »

技術を的に当てる技術について - GraphQL を入れ直した話 / Re-Introduce GraphQL

Altech
January 27, 2022
4.8k

技術を的に当てる技術について - GraphQL を入れ直した話 / Re-Introduce GraphQL

吉祥寺.pm28 でお話ししました
https://kichijojipm.connpass.com/event/236031/

追記:Podcast で解説した
https://anchor.fm/wantedly-dev/episodes/--GraphQL--w-Altech-e1edkrv

Altech

January 27, 2022
Tweet

More Decks by Altech

Transcript

  1. ٢঵ࣉQN4PIFJ5BLFOP ٕज़Λతʹ౰ͯΔٕज़ʹ͍ͭͯ (SBQI2-ΛೖΕ௚ͨ͠࿩

  2. (SBQI2-ΛೖΕ௚ͨ͠࿩  • (SBQI2-ɿ8FC"1*ʹؔ࿈͢Δٕज़ͷҰͭ • ೥લ͘Β͍ʹ8BOUFEMZͷαʔϏεͷҰ෦ʹೖͬͨ • ͪΐͬͱҧ͏ܗͰೖͬͪΌͬͨͷͰɺ௚ۙͰೖΕ௚ͨ͠ʢٕज़ͷϦϒʔτʣ • ٕज़ΛԿ͔ͷ໨తʹ޲͚ͯ౤ࣹ͢Δ

    • ্ख͘తʹ౰͍ͨͬͯΔ৔߹ɿ։ൃ͕͠΍͘͢ͳΓɺαʔϏε͕ྑ͘ͳΔ • త͔Βେ͖͘֎Ε͍ͯΔ৔߹ɿྑ͘ͳΒͣʹٕज़͕׆͖ͯͳ͍ঢ়ଶʹͳΔ
  3. ٕज़Λ্ख͘తʹ౰ͯΔʹ͸ 
 Ͳ͏͢Ε͹Α͔ͬͨͩΖ͏͔ʁ🎯 ʢͱ͍͏͜ͱΛߟ͑ͯΈ͍ͨʣ

  4. ࣗݾ঺հ  • ໊લɿ4PIFJ5BLFOP • ձࣾɿ΢ΥϯςουϦʔגࣜձࣾΞʔΩςΫτ • ޷͖ͳݴޠɿ3VCZ • ࠷ۙॻ͍ͯΔݴޠɿ5ZQF4DSJQU

    • ޷͖ͳ΋ͷɿήʔϜɺ೔ຊञ !"MUFDI@
  5. (SBQI2-౤ೖɿୈҰظ

  6. ࠷ॳʹͲ͏΍ͬͯೖ͔ͬͨʢ̍ʣ  • ࠷ॳͷಈػɿ8FCϑϩϯτΤϯυͷ։ൃΛ͠΍͘͢͢Δ • (SBQI2- "QPMMPΫϥΠΞϯτͷ8FCϑϩϯτΤϯυʹ͓͚Δ 
 ։ൃମݧ͕ͦΕ·Ͱʹൺ΂ͯඇৗʹྑ͔ͬͨ •

    ͳͥ։ൃମݧ͕ྑ͔͔ͬͨʁ • "1*ʹεΩʔϚ͕෇͘ • σʔλܕͷఆ͕ٛੜ੒Ͱ͖Δ • "1*͕ΫΤϦݴޠʹجͮ͘ • ΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ
  7. ࠷ॳʹͲ͏΍ͬͯೖ͔ͬͨʢ̎ʣ  • #BDLFOEGPS'SPOUFOE #'' ͱͯ͠OPEFͰಈ͘(SBQI2-αʔόʔΛಋೖ • എޙʹ͋Δ3VCZPO3BJMTͷαʔόʔʢෳ਺ʣΛୟ͘ • ঃʑʹϚΠΫϩαʔϏεԽ͍ͯͨ͠ͷͰɺ3BJMTʹ௚઀࣮૷͢Δ͜ͱΛආ͚ͨ

  8. ࣮ࡍʹ։ൃΛͯ͠ΈͨৼΓฦΓ  • ૯࿦ɿαʔϏε։ൃશମͱͯ͠͸ͦΜͳʹྑ͘ͳΒͳ͔ͬͨʼʻ • ݪҼ͸৭ʑ͋Δ • #''ͷ૚ʹҰख๊ؒ͑Δඞཁ͕͋ͬͨ • όοΫΤϯυͰ࢖͍ͬͯΔ1SPUPDPM#V

    ff FSTͷεΩʔϚͱೋॏ؅ཧʹͳͬͨ • ɾɾɾ
  9. ͱ͸͍͑ɺ

  10. ࠷ॳʹͲ͏΍ͬͯೖ͔ͬͨʢ̍ʣ  • ࠷ॳͷಈػɿ8FCϑϩϯτΤϯυͷ։ൃΛ͠΍͘͢͢Δ • (SBQI2- "QPMMPΫϥΠΞϯτͷ8FCϑϩϯτΤϯυʹ͓͚Δ 
 ։ൃମݧ͕ͦΕ·Ͱʹൺ΂ͯඇৗʹྑ͔ͬͨ •

    ͳͥ։ൃମݧ͕ྑ͔͔ͬͨʁ • "1*ʹεΩʔϚ͕෇͘ • σʔλܕͷఆ͕ٛੜ੒Ͱ͖Δ • "1*͕ΫΤϦݴޠʹجͮ͘ • ΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ ͦΕͧΕ͸͢΂ͯࣄ࣮
  11. Ͳ͏͢Δͱྑ͔͔ͬͨʁʁ

  12. લఏΛ֬ೝ͢Δ

  13. ߟ͑ΔೖΓޱΛม͑ͯΈΔ  • ʮ(SBQI2- "QPMMPΫϥΠΞϯτͷ։ൃମݧ͕ྑ͍ʯ • ։ൃମݧͱ͍͏ݴ༿Λ͍ͬͨΜࢭΊͯΈΔ • ͦΕͰಘΒΕΔͱࢥ͍ͬͯΔ΋ͷ͸ʁ •

    ʮΞϓϦέʔγϣϯ͕଎͘࡞ΕΔʯ • ˠදࣔʹߜͬͯ۩ମతʹߟ͑ͯΈΔ
  14. ΞϓϦέʔγϣϯͷྫ

  15. - • ʮΞόλʔը૾ʯʮΧόʔը૾ʯ • ʮ৬ྺʯʮֶྺʯʮ෦ॺʯʮ໾৬ʯ • Ұ؏ͨ͠ʮࡏ੶ظؒʯͱ͍͏ΦϒδΣΫτ • ϞόΠϧϏϡʔͩͱ৘ใྔΛݮΒͯ͠දࣔ͢Δ ΦϒδΣΫτͷྫ

  16. ۩ମྫ͔Β෼͔Δ͜ͱ  • γφϦΦɿ"1*͔ΒσʔλΛऔͬͯདྷͯΞϓϦέʔγϣϯ͕දࣔ͢Δ • 6*্ʹදࣔ͢Δ৘ใͱ"1*ͰऔΕΔΦϒδΣΫτͷؒʹҰఆͷࣗ໌ͳؔ܎ੑ ͕ͳ͚Ε͹ɺʢܕ͕͍͍ͭͯͯ΋ʣ଎͘࡞Δ͜ͱ͸Ͱ͖ͳ͍ • ӅΕ͍ͯͨલఏ •

    ΦϒδΣΫτ͕ద੾ʹϞσϦϯά͞Ε͍ͯͯɺΦϒδΣΫτؒͷؔ࿈͕ద੾ ʹ୧ΕΔΑ͏ʹͳ͍ͬͯͯɺ͸͡ΊͯʮΞϓϦέʔγϣϯ͕଎͘࡞ΕΔʯ
  17. ٕज़Λཧղ͢Δ

  18. ಉ͡Α͏ͳ໰୊ΛղܾͰ͖Δٕज़Λൺֱ͢Δ  • "1*ʹܕΛ͚ͭΔ͜ͱ͕Ͱ͖Δٕज़ʢ"1*εΩʔϚٕज़ʣ͸ଞʹ΋͋Δ • 1SPUPDPM#V ff FS 4XBHHFS +40/4DIFNBFUDʜ

    • ಉ͡໨తΛղܾ͢ΔͷͰ͋Ε͹༨෼ͳந৅ԽΛ͍ͯ͠ͳ͍ٕज़ΛબͿ΂͖ • lXPSTFJTCFUUFSz • ฒ΂ͯΈͯ෼͔Δ͜ͱɿͦΕͧΕͷಛ௃ʢσβΠϯʣ • (SBQI2-ͷσβΠϯ • ΦϒδΣΫτͷάϥϑΛߏஙͰ͖Δ • άϥϑ্ͷΦϒδΣΫτΛબ୒తʹऔಘͰ͖Δ • ͜ΕΒΛ࣮ݱ͢ΔͨΊʹΫΤϦݴޠ΍εΩʔϚ͕ඞཁͱ͞Ε͍ͯΔ
  19. σβΠϯ͔Β໰୊ઃఆΛଊ͑Δ  • σβΠϯʹ͸ҙਤ͕͋ΔɻσβΠϯ͔Β໰୊ઃఆΛଊ͑Δɻ • ؍࡯ͦͷ̍ɿΞϓϦέʔγϣϯͷৄࡉͳ࢓༷͸มΘΓ΍͍͢ • ։ൃΛͯ͠ϑΟʔυόοΫΛड͚ΔதͰมΘΔʢ࣌ؒ࣠ʹ͓͚ΔมԽʣ • ը໘αΠζʹΑͬͯҟͳΔʢಉҰ࣌ؒͰόϦΤʔγϣϯ͕͋Δʣ

    • ؍࡯ͦͷ̎ɿυϝΠϯϞσϧ͸มΘΓʹ͘͘όϦΤʔγϣϯ͸ͳ͍ • (SBQI2-ͷ໰୊ઃఆ • υϝΠϯϞσϧΛ͋Β͔͡Ίఏڙ͓͖ͯ͠ΞϓϦέʔγϣϯ͕ࣗ༝ʹ࢖͑ΔΑ͏ʹ͢Δ • ͜ͷ໨తΛ࣋ଓతʹୡ੒͢ΔͨΊʹɺʮΦϒδΣΫτάϥϑͷߏஙʯʮΞϓϦέʔγϣ ϯଆ͔Βͷબ୒తͳऔಘʯ͕ఏڙ͞Ε͍ͯΔ
  20. (SBQI2-ͱ͍͏ٕज़ͷཧղ  ɾ"1*ʹεΩʔϚ͕෇͘ ɾ"1*͕ΫΤϦݴޠʹجͮ͘ ɾσʔλܕͷఆ͕ٛੜ੒Ͱ͖Δ ɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ (SBQI2-ͷΤίγεςϜ (SBQI2-ͷ࢓༷

  21. (SBQI2-ͱ͍͏ٕज़ͷཧղ  ɾ"1*ʹεΩʔϚ͕෇͘ ɾ"1*͕ΫΤϦݴޠʹجͮ͘ ɾσʔλܕͷఆ͕ٛੜ੒Ͱ͖Δ ɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ (SBQI2-ͷΤίγεςϜ (SBQI2-ͷ࢓༷

  22. (SBQI2-ͱ͍͏ٕज़ͷཧղ  ɾ"1*ʹεΩʔϚ͕෇͘ ɾ"1*͕ΫΤϦݴޠʹجͮ͘ ɾσʔλܕͷఆ͕ٛੜ੒Ͱ͖Δ ɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ (SBQI2-ͷΤίγεςϜ (SBQI2-ͷ࢓༷ ɾΦϒδΣΫτͷάϥϑΛߏஙͰ͖Δ ɾΦϒδΣΫτΛબ୒తʹऔಘͰ͖Δ

    (SBQI2-ͷσβΠϯ
  23. (SBQI2-ͱ͍͏ٕज़ͷཧղ  ɾ"1*ʹεΩʔϚ͕෇͘ ɾ"1*͕ΫΤϦݴޠʹجͮ͘ ɾσʔλܕͷఆ͕ٛੜ੒Ͱ͖Δ ɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ (SBQI2-ͷΤίγεςϜ (SBQI2-ͷ࢓༷ ɾΦϒδΣΫτͷάϥϑΛߏஙͰ͖Δ ɾΦϒδΣΫτΛબ୒తʹऔಘͰ͖Δ

    (SBQI2-ͷσβΠϯ υϝΠϯΦϒδΣΫτΛ༧Ίఏڙ͓͖ͯ͠ ΞϓϦέʔγϣϯ͕ࣗ༝ʹ࢖͑ΔΑ͏ʹ͢Δ (SBQI2-ͷ໰୊ઃఆ
  24. (SBQI2-ͱ͍͏ٕज़ͷཧղ  ɾ"1*ʹεΩʔϚ͕෇͘ ɾ"1*͕ΫΤϦݴޠʹجͮ͘ ɾσʔλܕͷఆ͕ٛੜ੒Ͱ͖Δ ɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ (SBQI2-ͷΤίγεςϜ (SBQI2-ͷ࢓༷ ɾΦϒδΣΫτͷάϥϑΛߏஙͰ͖Δ ɾΦϒδΣΫτΛબ୒తʹऔಘͰ͖Δ

    (SBQI2-ͷσβΠϯ υϝΠϯΦϒδΣΫτΛ༧Ίఏڙ͓͖ͯ͠ ΞϓϦέʔγϣϯ͕ࣗ༝ʹ࢖͑ΔΑ͏ʹ͢Δ (SBQI2-ͷ໰୊ઃఆ ࠷ॳʹݟͯͨ෦෼
  25. (SBQI2-ͱ͍͏ٕज़ͷཧղ  ɾ"1*ʹεΩʔϚ͕෇͘ ɾ"1*͕ΫΤϦݴޠʹجͮ͘ ɾσʔλܕͷఆ͕ٛੜ੒Ͱ͖Δ ɾΫΤϦ݁ՌΛΩϟογϡͯ͘͠ΕΔ (SBQI2-ͷΤίγεςϜ (SBQI2-ͷ࢓༷ ɾΦϒδΣΫτͷάϥϑΛߏஙͰ͖Δ ɾΦϒδΣΫτΛબ୒తʹऔಘͰ͖Δ

    (SBQI2-ͷσβΠϯ υϝΠϯΦϒδΣΫτΛ༧Ίఏڙ͓͖ͯ͠ ΞϓϦέʔγϣϯ͕ࣗ༝ʹ࢖͑ΔΑ͏ʹ͢Δ (SBQI2-ͷ໰୊ઃఆ ࣮͸ॏཁͳ෦෼
  26. (SBQI2-౤ೖɿୈೋظ

  27. ͦͷٕज़͕ࣗ෼ͨͪͷ໰୊Λղܾ͢Δ͔ʁ  • 8BOUFEMZͷΞϓϦέʔγϣϯͷಛੑɿ • ϚϧνϓϥοτϑΥʔϜɿJ04 "OESPJE 8FC • πʔαΠυϚʔέοτϓϨΠεɿݸਓϢʔβʔɺاۀϢʔβʔ

    • ˠ࠷௿Ͱ΋ͭͷΞϓϦέʔγϣϯ͕͋ΔʢಉҰ࣌ؒ࣠ͰͷόϦΤʔγϣϯʣ • 8BOUFEMZόοΫΤϯυͷಛੑɿ • ϚΠΫϩαʔϏεԽΛ͓ͯ͠ΓυϝΠϯΦϒδΣΫτ͸"1*ʹݱΕΔ • ໰୊ઃఆ͕߹க͍ͯ͠Δˠ:FT
  28. ͦͷٕज़ΛͲͷΑ͏ʹ࢖͏͔ʁʢ̍ʣ  • ʮυϝΠϯΦϒδΣΫτΛ͋Β͔͡Ίఏڙ͓͖ͯ͠ɺΞϓϦέʔγϣϯ͕ࣗ༝ʹ ࢖͑ΔΑ͏ʹ͢Δʯʢ(SBQI2-ͷ໰୊ઃఆʣ • ˠ໌Β͔ʹྑ͍υϝΠϯϞσϧΛఏڙͰ͖Δ͔͕ݤʹͳ͍ͬͯΔ • #BDLFOEGPS'SPOUFOEͰ໰୊ͩͬͨ఺ •

    ͜ͷϨΠϠʔ͕Ͱ͖ͨ͜ͱͰɺόοΫΤϯυͷϞσϦϯάʹ໰୊͕͋ͬͨͱ͖ ʹɺϑϩϯτΤϯυ͔Β໰୊ΛӅณͯ͠͠·͏ • ྫ͑͹ɿϑΟʔϧυ໊͕ద੾Ͱͳ͍ͱ͖ɺ#''ͷϨΠϠʔͰΑΓద੾ͳ໊લʹม׵͢ΔΑ͏ͳ͜ͱ͕࠷΋༰қ͘ߦ͑ͯ͠·͏ • ྑ͍υϝΠϯϞσϦϯάΛߦ͏ํ޲ͱ͸શ͘ٯͷྗֶ͕ಇ͍ͯ͠·͍ͬͯΔ
  29. ͦͷٕज़ΛͲͷΑ͏ʹ࢖͏͔ʁʢ̎ʣ  • ଧͪख̍ɿ#''Ͱ͸ͳ͘(BUFXBZʹ͢Δ • #BDLFOE͸"1*Λ1SPUPDPM#V ff FSTͰఆٛͯ͠ϞσϦϯάΛߦͳ͍ͬͯΔ • ΦϒδΣΫτఆٛࣗମ͸ͦΕΛίϝϯτ΋ؚΊͯͦͷ··࢖͑ΔΑ͏ʹ͢Δ

    • ଧͪख̎ɿ • 8FCϑϩϯτΤϯυ͚ͩͰ͸ͳ͘ɺϞόΠϧΞϓϦͰ΋࢖͑Δ͜ͱΛݕূͨ͠ • ҎલͱͷมԽ • ྑ͍υϝΠϯϞσϦϯάͷԸܙ͕αʔϏε։ൃͷ͋ΒΏΔ෦෼ʹԸܙ͕ߦ͖౉Δ ঢ়گʹ͢Δʗߦ͖౉ΔͷͰྑ͍υϝΠϯϞσϦϯά͕ߦΘΕΔͱ͍͏ߏ଄Λ࡞Δ • ͜ΕʹΑͬͯ(SBQI2-ͱ͍͏ٕज़͕׆͖ΔΑ͏ʹͳ͖ͬͯͨ
  30. ·ͱΊ  • ٕज़Λ͏·͘తʹ౰ͯΔʹ͸ʁ🎯 • ·ͣ͸ٕज़͕ղܾ͍ͨ͠໰୊Λଊ͑Δ • ͜Ε͕Ͱ͖Ε͹త͸ߜΕΔ • ͜ͷաఔ͸ҙ֎ͱ໘ന͍ʢͱࢥ͏ʣ

  31. ࢀߟɿ1SPUPDPM#V ff FS͔Βੜ੒͞ΕͨΦϒδΣΫτ