Upgrade to Pro — share decks privately, control downloads, hide ads and more …

道具としてのGraphQLから見る用途や解決する課題

 道具としてのGraphQLから見る用途や解決する課題

2024/09/26 PHPカンファレンス沖縄沖縄 2024
で登壇した際のスライド

Yutaka Tachibana

October 06, 2024
Tweet

More Decks by Yutaka Tachibana

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ w !TBCPZVUBLB ͞΅ ཱՖ๛ w ߹ಉձࣾय़ळڞಉ୅දΞʔΩςΫτ w $0%&#"4&ϓϩάϥϛϯάߨ࠲ߨࢣ w

    ෱Ԭ d ˠ౦ژ d ˠԭೄ d ೥໨  w 3VCZ 1)1 5ZQF4DSJQU 1ZUIPO w (SBQI2-3BJMT-BSBWFM5ZQF4DSJQU3FBDUKT7VFKT"[VSF "844FSWFMTTσʔλج൫
  2. ߹ಉձࣾय़ळ w ೥݄૑ۀ ݱࡏظ໨ w ͞΅ͱϚπμδϡϦͷڞಉ୅ද w ݱࡏ໊ શһ*5ΤϯδχΞ ໊͸*5ΤϯδχΞະܦݧ͔Β

     w डୗ։ൃ -BSBWFM 3BJMT /FYUKT 7VF (SBQI2-  w ίʔώʔεϙϯαʔͯ͠·͢☕  ӫொͷQPUPIPUP͞Μ ݝ಺Ͱ΋༗໊Ͱ௒Φεεϝ w ԭೄʹ*5ΤϯδχΞΛ૿΍͢ w ݝ಺Ͱҟۀछ͔Βͷస৬͔Βͷ࠾༻Λ࣠ w ਓࡐڭҭʹྗೖΕͯ·͢ w ౦ژਫ४ͷ࢓ࣄɾڅ༩ɾ࿑ಇ؀ڥ 💡 ͷηογϣϯͰδϡϦ͕ʮ࣮຿ະܦݧ͔Β͍ͪૣ͘ઓྗԽ͢ΔͨΊͷ৽ਓΤϯδχΞҭ੒ज़ʯͷςʔϚͰൃද͠·͢🧑💻
  3. NFBOE(SBQI2- w 4PGUXBSF%FTJHO w ೥݄߸ୈಛू(SBQI2-Ͱ͔ͳ͑Δޮ཰తͳσʔλ௨৴ w ;FOO w (SBQI2-͕ղܾ͢Δ໰୊ͱͦͷઌͷϢʔεέʔε w

    2JJUB w (SBQI2-ͷಛ௃Λ෼ղ͢Δd"1*ΠϯλʔϑΣʔεɾ6OJWFSTBM#''ɾ"1* (BUFXBZd w (SBQI2-͸αʔόʔαΠυ࣮૷ͷϕετϓϥΫςΟεͱͳΔ͔ w (SBQI2-ͷશମ૾ͱ8FC"QQ։ൃͷ͜Ε͔Β w ొஃ w άϥϑϞσϧͱ4P&ͱ(SBQI2-!5&$)45"/% w αʔόʔαΠυ͔ΒݟΔ(SBQI2-!4FSWFMTT.FFUVQ
  4. ۙ೥ͷ8FCΞϓϦέʔγϣϯ w ϑϩϯτɺ"1*ɺ%#ͷ૚ΞʔΩςΫνϟ ϨΠϠʔυΞʔΩςΫνϟ  w ෼཭͢ΔࣄͰͦΕͧΕͷಘҙ෼໺Ͱ੹຿෼཭͢Δ w ΫϥΠΞϯτͱαʔόʔ͸8FC"1*Λ௨ͯ͡σʔλͷऔಘ΍ૢ࡞Λߦ͏ ෼཭͞ΕͨϑϩϯτΤϯυͱ"1*αʔόʔ

    ΫϥΠΞϯτ"QQ w 6*Λ୲౰͠ɺར༻ऀͷ໨తΛୡ੒͢ΔͨΊͷࢧԉΛߦ͏ΞϓϦέʔγϣϯ Τϯήʔδϝϯτ  w ୺຤ͷϒϥ΢β εϚʔτϑΥϯͷ"QQ ͦͷଞσόΠεͷ্Ͱಈ࡞͢Δ w 8FC͸/FYUKT΍/VYUKTͰ࣮૷ w ओʹ ۀ຿ υϝΠϯϩδοΫͱσʔλϕʔεͱͷ΍ΓͱΓΛ୲౰͢Δ w ΫϥΠΞϯτ"QQͱ͸"1*Λ௨ͯ͡ૢ࡞ɾσʔλऔಘΛߦ͏ αʔόʔ"QQ
  5. )551͔Βݟͨ(SBQI2- w ϦΫΤετ w 1045HSBQIRM w $POUFOU5ZQFBQQMJDBUJPOKTPO w Ϩεϙϯε w

    $POUFOU5ZQFBQQMJDBUJPOKTPO w 4UBUVT 1045HSBQIRM +40/ Ϩεϙϯε w ୯ҰͷΤϯυϙΠϯτ΁ͷ1045ϦΫΤετ w ϦΫΤετ΋Ϩεϙϯε΋+40/ w ඞͣ4UBUVT$PEF͸
  6. -JHIUIPVTF w -BSBWFM޲͚ͷ(SBQI2-࣮૷ͷϑϨʔϜϫʔΫ w 4%- fi STU TDIFNB fi STU

    %JSFDUJWFPSJFOUFE w &MPRVFOUͱͷ౷߹͕ಛ௃త IUUQTHJUIVCDPNOVXBWFMJHIUIPVTF -JHIUIPVTF4FSWJDF1SPWJEFS SFHJTUFS w (SBQI2-࣮ߦʹඞཁͳTFSWJDFDPOUBJOFSͷొ࿥ w ಛʹ/VXBWFa-JHIUIPVTFa(SBQI2- CPPU w SPVUJOHͷొ࿥ HSBQIRMʹ(SBQI2-$POUSPMMFS w Τϥʔϋϯυϥʔͷొ࿥ /VXBWFa-JHIUIPVTFa(SBQI2- w (SBQI2-ͷ࣮ߦΤϯδϯ w HSBQIRMQIQͷϥούʔ w 4FSWJDF$POUBJOFSͱͯ͠ར༻Մೳ TJOHMFUPO w ؾΛ͚ͭͳ͍ͱ4DIFNB͕&MPRVFOUͬΆ͘ͳΔ TDIFNBHSBQIRM ग़యIUUQTMJHIUIPVTFQIQDPN
  7. εΩʔϚͱΫΤϦ w εΩʔϚ w σʔλͷߏ଄ͱؔ࿈ɺૢ࡞Λදݱ w άϥϑߏ଄ w ΫΤϦ w

    εΩʔϚͰදݱ͞Εͨσʔλͷ෦෼Λऔಘ͢Δ w ΫϥΠΞϯτ͸ඞཁͳσʔλΛࣗ༝ʹબ୒ग़དྷΔ εΩʔϚ ΫΤϦ Ϩεϙϯε
  8. Ϧκϧόʔؔ਺ w ϑΟʔϧυຖʹରͰରԠ͢Δؔ਺ w σʔλͷऔಘϩδοΫΛهड़͢Δ w ७ਮͳؔ਺ͰͲΜͳࣄͰ΋ॻ͚Δ w ෼཭͢Δ໾ׂΛ࣋ͭ /

     ɺ౷߹ͷͨΊʹ%BUBMPBEFSύλʔϯͱηοτ Ϧκϧόʔ 3FTPMWFS (SBQI2-Τϯδϯͷ࣮ߦॱ  ΫΤϦΛղऍ͠πϦʔߏ଄ʹม׵  ্͔ΒԼ΁ϦκϧόʔΛॱ࣍ݺͼग़͠  શͯͷϦκϧόʔ͕࣮ߦ͞ΕΔͱ݁ՌΛฦ͢ -JHIUIPTVF͕༻ҙ͢ΔϦκϧόʔ ग़యIUUQTEFWUPCPHEBOOFEUIFHSBQIJOHSBQIRMM
  9. (SBQI2-Τϯδϯ͔ΒݟΔಛੑ w εΩʔϚؔ࿈͢ΔσʔλΛఆٛͰ͖ΔɺͲ͜·Ͱ΋֦ுՄೳ w ϦκϧόʔσʔλΛऔಘ͢Δؔ਺ɺ͋ΒΏΔσʔλιʔεʹܨ͛ΒΕΔ w 03. 3FQPTJUPSZ 3%# ,74

    )551 H31$ 'JMF w ࣮ߦΫΤϦͰࣗ༝ʹσʔλΛऔಘͰ͖Δ w ݁ՌҰ౓ʹσʔλΛऔಘͰ͖ΔɺπϦʔߏ଄ͷΦϒδΣΫτΛฦ͢ ڱٛͷ(SBQI2- w ࠷΋ࢗ͞Δͷ͕ΫϥΠΞϯτ୺຤Ͱಈ͘6*ίϯϙʔωϯτπϦʔ޲͚ͷσʔλ w ͳͷͰɺl"1*ͷͨΊͷΫΤϦݴޠz w ଞʹ͜ͷಛੑ͕ࢗ͞Δέʔε͕͋ΔͳΒ8FC"1*Ҏ֎ʹ΋࢖͑Δ w ੜ੒"* ήʔϜ Ґஔ৘ใ ྼѱ௨৴؀ڥΫϥΠΞϯτ ϦΞϧλΠϜಉظ Կʹࢗ͞Δ͔ʁ ͜͜େࣄ
  10. ΫϥΠΞϯτΞϓϦέʔγϣϯ w ར༻ऀ͕αʔϏεΛར༻͢Δ઀఺ɺϢʔβʔΠϯλʔϑΣʔε 6*  w αʔόʔ"QQ͔Β෼཭͞ΕͨϑϩϯτΤϯυΞϓϦ 8FCϒϥ΢β ωΠςΟϒΞϓϦ w

    8FCϑϩϯτ͸/FYUKT΍/VYUKTͰ࣮૷ w ෆಛఆଟ਺ͷϢʔβʔ͕ར༻͢Δ w Ϣʔβʔͷ୺຤্Ͱಈ࡞͢Δ w ୺຤ͷεϖοΫʹґଘ w ར༻ऀͷ௨৴؀ڥʹґଘ w ͖ͼ͖ͼಈ͘ࣄ͕ٻΊΒΕΔ
  11. σʔλϞσϦϯά σʔλϕʔε αʔόʔ ΫϥΠΞϯτ υϝΠϯϩδοΫ ۀ຿ σʔλͷอ࣋ɾॻ͖ࠐΈ ར༻ऀͷ໨తͷୡ੒ͷࢧԉ Τϯήʔδϝϯτ 8FC"1*

    42- ˞ w ϦϨʔγϣφϧ%# w ΦϒδΣΫτ%# w άϥϑ%# &MPRVFOU "DUJWF3FDPSE  &OUJUZ  %BUB.BQQFS 03. "1* σʔλ૚ ه࿥ɾݕࡧ "$*%ಛੑ υϝΠϯΛѻ͏ͨΊ %#ͷσʔλͷந৅Խ ΫϥΠΞϯτʹαʔϏεΛ ར༻ͯ͠΋Β͏ͨΊ 6*ͷͨΊ "1*ͷσʔλͷந৅Խ Ϟμϯͳ8FCΞϓϦέʔγϣϯͰσʔλϞσϦϯά͢ΔՕॴ͸େ͖͘Օॴ ΫϥΠΞϯτͷσʔλ૚ɺαʔόʔͷ"1*૚ɾ03.૚ɺσʔλϕʔε
  12. l6*ͷͨΊͷ8FC"1*zͷͨΊͷεΩʔϚ ΫϥΠΞϯτࢹ఺ͰσʔλϞσϦϯάΛߦ͏ wΫϥΠΞϯτࢹ఺Ͱ໋໊ɾఆٛ͢Δ w6*ૢ࡞ͱରʹͳΔ"1*ͷૢ࡞Λఆٛ͢Δɺ൚༻తͳૢ࡞ʹ͠ͳ͍ w6*ίϯϙʔωϯτͷ֊૚ߏ଄ͱ͍ۙπϦʔߏ଄ͷσʔλ͕औಘͰ͖Δ͜ͱ͕๬·͍͠ w6*ίϯϙʔωϯτ͕ճͷϦΫΤετͰඞཁे෼औಘͰ͖ΔΑ͏ʹ͢Δ શͯͷσʔλͱૢ࡞Λ࣮૷͠ͳ͚Ε͹ͳΒͳ͍Θ͚Ͱ͸ͳ͍ 6TFSܕΛආ͚Δ ར༻ऀͷ໾ׂຖʹεΩʔϚΛ෼͚Δ wಛఆͷը໘ɺಛఆͷ6*ίϯϙʔωϯτ޲͚ͷεΩʔϚ͔Β࢝ΊΔ

    wಛʹ౓ʹଟछͷ৘ใΛѻ͏ը໘΍ঢ়ଶಉظ͕සൟʹߦΘΕΔίϯϙʔωϯτ޲͚ w6TFSܕΛ࡞Δͱ͋ΒΏΔλΠϓʹܨ͕Γ͕ͪɺ͜ͷΑ͏ͳλΠϓΛ࡞ΔͱεΩʔϚͷݟ௨͕͠ѱ͘ͳΔ wͦͷ୅ΘΓʹ7JFXFS΍1SP fi MFͳͲͷϢʔβʔͷଐੑΛฦ͢Α͏ͳλΠϓΛ࡞Δ w6TFSܕΛ࡞Βͳ͍ࣄͰΫϥΠΞϯτࢹ఺ͷϞσϦϯά͕͠΍͍͔͢΋ wϦΫΤετ͖ͯͨ࣌͠఺ͰͲͷϢʔβʔૢ࡞͠Α͏ͱ͍ͯ͠Δ͔Θ͔͍ͬͯΔ wεΩʔϚΛ෼͚ΔࣄͰར༻Մೳͳૢ࡞΍σʔλ͕෼͔Γ΍͘͢ͳΔ αʔϏε΋͋Δ  wಉ͡৘ใͰ΋ར༻ऀͷࢹ఺͕มΘΕ͹ඞཁͳ৘ใ͕มΘΔ wٯʹ෼͚ͳ͍ͱҟͳΔ໾ׂͷૢ࡞΍σʔλ͕ݟ͑Δ͕࢖ͬͯ΋ҙຯ͕ͳ͍ͨΊϊΠζʹͳΔ wྫ"ENJO ؅ཧऀ ϝϯόʔ wྫൢചऀ ߪೖऀ wྫฤूऀ Ӿཡऀ lશͯʹΞΫηεͰ͖Δ୯ҰͷΤϯυϙΠϯτzͷ ᠘ʹϋϚΒͳ͍Α͏ʹ ͜ͷ͋ͨΓ͸(SBQI2-ʹݶΒͳ͍ ঎඼ ؅ཧऀ ߪೖऀ ൢചऀ ཱ৔ʹΑͬͯݟ͑ํ͕ҟͳΔ
  13. (SBQI2-"1*ͷϝϦοτ w ϚϧνΫϥΠΞϯτʹରԠͰ͖Δ w "1*ήʔτ΢ΣΠͱͯ͠ͷ໾ׂΛ࣋ͨͤΔ͜ͱ͕Ͱ͖Δ w ϩΪϯάɺೝূೝՄɺΩϟογϡ w "1*ू໿૚ͱͯ͠ͷ໾ׂΛ࣋ͨͤΔ͜ͱ͕Ͱ͖Δ ΞʔΩςΫνϟ

    w ڧ͍ܕγεςϜ w ΫϥΠΞϯτʹͱͬͯ࢖͍΍͍͢σʔλϞσϧ w ΤϯυϙΠϯτ͕ͭ ·ͨ͸  ʹͳΔ w 6*ίϯϙʔωϯτͱͷ૬ੑ͕ྑ͍ w ঢ়ଶ؅ཧɾঢ়ଶಉظ͕༰қ w ϦΞϧλΠϜಉظ 4VCTDSJCFɾ8FCTPDLFU  w ΫϥΠΞϯτͷ඼্࣭͕͕Δ ΫϥΠΞϯτ w 4DIFNB%SJWFO%FWFMPQNFOU w υΩϡϝϯτͱͯ͠ͷίʔυ w ϑΟʔϧυ ϦκϧόʔͰ%3:ʹॻ͚Δ w ϓϨθϯςʔγϣϯ૚ͱͯ͠ಠཱͤ͞Δ͜ͱͰίʔυͷ੹ ຿෼཭͕Ͱ͖Δ w "1*શମͷ඼࣭Λҡ࣋͠΍͍͢ αʔόʔ σʔλϞσϦϯά w εΩʔϚΛ֦ுͤ͞΍͍͢ w ΫϥΠΞϯτࢹ఺ͷϞσϦϯά͕͠΍͍͢ w ͦͷαʔϏεͰར༻Ͱ͖Δૢ࡞ɾσʔλ͕ҰཡͰ͖Δ w 4DIFNB'FEFSBUJPOͰεΩʔϚ౷߹Ͱ͖ΔͨΊɺେن ໛ʹ΋ରԠͰ͖Δ ωοτϫʔΫ w ௨৴ස౓ͷ࡟ݮ w ௨৴ଳҬͷ࡟ݮ w ίϛϡχέʔγϣϯ͕औΓ΍͍͢ w εΩʔϚ͕ϑϩϯτͱαʔόʔͷٞ࿦ͷ৔ ։ൃମݧ ෳࡶ͞ΛҰ࣍ؔ਺త૿Ճʹม׵͢Δ ͜Εͦ͜޻ֶɻ(SBQI2-͸ͦ͏͍͏ٕज़
  14. ·ͱΊ w (SBQI2-ͷΤϯδϯࣗମ͸ͱͯ΋γϯϓϧͳߏ଄ w ΫΤϦʹରͯ͠πϦʔߏ଄ͷΦϒδΣΫτΛฦ͢σʔλΤϯδϯ w (SBQI2-Τϯδϯͷ࠷΋༗ޮͳέʔεͱͯ͠ͷ8FC"1* (SBQI2-"1*  w

    εΩʔϚɺΫϥΠΞϯτ޲͚ͷσʔλϞσϦϯά͕ॏཁ w (SBQI2-"1*͸ෳࡶԽ͢Δ8FCΞϓϦʹର͢Δಓ۩ w ࢖͍ํ͑͞Θ͔Ε͹খ͍͞ΞϓϦͰ΋े෼࢖͑Δ ಓ۩Λਖ਼͘͠࢖ͬͯɺྑ͍αʔϏεΛ࡞͍͖ͬͯ·͠ΐ͏🧑🔧👩🔧