GraphQLを用いたサイトに
おけるパフォーマンス改善
(ECサイトを題材に)/ Improving online shopping site performance which using the GraphQL

D810cdc3c671ce77b11488e697807820?s=47 nobuhikosawai
December 01, 2019

GraphQLを用いたサイトに
おけるパフォーマンス改善
(ECサイトを題材に)/ Improving online shopping site performance which using the GraphQL

D810cdc3c671ce77b11488e697807820?s=128

nobuhikosawai

December 01, 2019
Tweet

Transcript

  1. (SBQI2-Λ༻͍ͨαΠτʹ
 ͓͚ΔύϑΥʔϚϯεվળ
 ʢ&$αΠτΛ୊ࡐʹʣ ᖒҪએ඙(@nobuhikosawai) גࣜձࣾFiNC Technologies JSConf JP 2019 Day2

  2. ?B1>App Store&Google Play 1@-2018@10 .2019@9.('702  5<App Annie Google Play

    "2018 3/,8AC :646 App Annie TOP PUBLISHER AWARD 2018  MAUAC *46 12).D9;1* !& =+  $#  % FiNC
  3.     

  4. ϔϧεέΞ঎඼Λѻ͏&$αΠτ

  5. ֓ཁʢഎܠʣ w ࣾ಺తʹ΋ྺ࢙ͷ௕͍αʔϏε w ೥͔Β͋Δ w 3BJMT FSCͰIUNMΛ
 ϨϯμϦϯά w

    ϖʔδભҠ͕஗͍ 5 چϞʔϧ
  6. ֓ཁʢഎܠʣ w ϦχϡΞʔϧϓϩδΣΫτ w શࣾͷϦϒϥϯσΟϯά w ϖʔδભҠͷվળ w ٕज़ελοΫͷߋ৽ w

    (SBQI2- 3FBDUͳͲͷ ࠾༻ʢৄࡉ͸ޙड़ʣ 6 ৽Ϟʔϧ
  7. ֓ཁʢഎܠʣ w ϦχϡΞʔϧϓϩδΣΫτ w ϦϦʔεͷλΠϛϯάΛ༏ઌ w ֎෦ϕϯμʔΛ׆༻ $44σβΠ ϯʣ w

    ͦͷ݁ՌύϑΥʔϚϯε΍࡞Γ΍ ͢͞Λ٘ਜ਼ʹ͍ͯͨ͠ w ݁ՌϦχϡʔΞϧޙͷϖʔδ͕͔ͳ Γॏ͘ͳͬͨ 7
  8. ֓ཁʢഎܠʣ w ύϑΥʔϚϯεվળϓϩδΣΫτ w 1BHF4QFFE*OTJHIUTͰ఺·Ͱ
 վળ 8

  9. ֓ཁʢ݁࿦ʣ w ύϑΥʔϚϯεվળϓϩδΣΫτ w ϑϩϯτͷνϡʔχϯά w (SBQI2-ͷνϡʔχϯά wΫϥΠϯτʹࣗ༝౓͕͋Δ wద੾ͳઃܭͱ࢖༻Λ͠ͳ͍ͱҙ ਤ͠ͳ͍ύϑΥʔϚϯεͷྼԽ

    Λট͘ 9
  10. ຊτʔΫͷର৅ͱ͍ͯ͠Δਓ w (SBQI2-ΛϓϩμΫγϣϯͰಋೖ͠Α͏͔ݕ౼͍ͯ͠Δਓ w ϓϩμΫγϣϯͰಋೖ͍ͯ͠Δ͕ͬ͘͠Γདྷ͍ͯͳ͍ਓ w ͜ͷ͋ͨΓͷ༻ޠʹϐϯͱདྷͳ͍ํ w 0WFSGFUDIJOH w

    'SBHNFOUͱ$PMPDBUJPO w 1FSTJTUFERVFSZ 10 ※ΊͬͪΌΘ͔Δͱ͍͏ํ͸Ή͠Ζ࠙਌ձͱ͔Twitterͱ͔ͰͲ͏͍͏ӡ༻͍ͯ͠Δ͔ڭ͍͖͍͑ͯͨͩͨͰ͢
  11. Agenda ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ ύϑΥʔϚϯεվળ ࠓޙͷల๬ ·ͱΊ 11

  12. Agenda ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ ύϑΥʔϚϯεվળ ࠓޙͷల๬ ·ͱΊ 12

  13. ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ w GSPOUFOE3FBDU 5ZQFTDSJQU w ϖʔδભҠΛૣ͘͢ΔͨΊ w 4FWFSTJEFSFOEFSJOH 443 Λద༻

    w CBDLFOEطଘͷ3BJMTΛྲྀ༻ 13
  14. ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ w "1*ఆٛ(SBQI2- w 5PQ1BHFΛϦονʹ͢Δߏ૝ w ΧελϚΠζͷࣗ༝౓ w ҰཡͱৄࡉͰͷ"1*ͷ࠶ར༻ੑ w

    ϑϩϯτΤϯυଆʹ"1*ͷࣗ༝౓ Λ΋ͨͤΔ 14
  15. ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ w (SBQI2- w 'BDFCPPLʹΑͬͯ࠷ॳʹެ։͞Εͨ8FC"1*ͷͨΊͷن֨ ʢݱࡏ͸(SBQI2-'PVOEBUJPO  w 3&45ͱҟͳΓDMJFOU͔ΒͷRVFSZʹඥͮ͘σʔλΛฦ͢ 15

  16. 16

  17. 17

  18. 18 w 4DIFNB w 3FTQPOTFͷܕఆٛ w "1*EPDVNFOU w DMJFOUଆͰ΋SFTQPOTFͷܕ ఆٛΛ࡞੒Մೳ

  19. 19 443
 3FOEFSJOH 4FSWFS 3BJMT HSBQIRMSVCZ ϦχϡʔΞϧ࣌ͷٕज़ߏ੒

  20. 20 443
 3FOEFSJOH 4FSWFS 3BJMT HSBQIRMSVCZ ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ 443࣌ 1. /index

  21. 21 443
 3FOEFSJOH 4FSWFS 3BJMT HSBQIRMSVCZ ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ 443࣌ 1. /index

    2. /graphql query { content { id } }
  22. 22 443
 3FOEFSJOH 4FSWFS 3BJMT HSBQIRMSVCZ ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ 443࣌ 1. /index

    2. /graphql query { content { id } } 3. api response { “content”: { “name”: “hoge” } }
  23. 23 443
 3FOEFSJOH 4FSWFS 3BJMT HSBQIRMSVCZ ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ 443࣌ 1. /index

    2. /graphql query { content { id } } 3. api response { “content”: { “name”: “hoge” } } 4. html/js/css
  24. 24 443
 3FOEFSJOH 4FSWFS 3BJMT HSBQIRMSVCZ ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ $43࣌ 1. /graphql

    query { content { id } }
  25. 25 443
 3FOEFSJOH 4FSWFS 3BJMT HSBQIRMSVCZ ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ $43࣌ 1. /graphql

    query { content { id } } 2. api response { “content”: { “name”: “hoge” } }
  26. Agenda ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ ύϑΥʔϚϯεվળ ࠓޙͷల๬ ·ͱΊ 26

  27. ύϑΥʔϚϯεվળ 27 ܭଌ ϘτϧωοΫͷ ಛఆ վળ ࠶ൃ๷ࢭ

  28. ܭଌࢦඪͷಋೖ w ύϑΥʔϚϯεͷܭଌ w ࣮ػͰߦ͏ςετ w ߹੒؀ڥͰߦ͏ςετʢ4ZOUIFUJDUFTU  w 1BHF4QFFE*OTJHIUTͰվળޮՌΛܭଌ

    28
  29. ϘτϧωοΫͷಛఆ w $ISPNF"VEJUʢ࣮ػʣ 1BHF4QFFE*OTJHIUT w 0QQPSUVOJUJFTͷվળ߲໨Λ վળ͍ͯ͘͠ 29

  30. 30 443
 3FOEFSJOH 4FSWFS 3BJMT HSBQIRMSVCZ վળઓུ

  31. 31 443 3BJMT HSBQIRMSVCZ վળઓུ 3&45"1* ᶃϑϩϯτଆͷվળ ᶄαʔόʔଆͷվળ

  32. 32 443 3BJMT HSBQIRMSVCZ վળઓུ (SBQI2- ᶃϑϩϯτଆͷվળ ᶄαʔόʔଆͷվળ ᶅ2VFSZ4DIFNBͷվળ

  33. 33 443 3BJMT HSBQIRMSVCZ ϑϩϯτଆͷվળ (SBQI2- ᶃϑϩϯτଆͷվળ ᶄαʔόʔଆͷվળ ᶅ2VFSZ4DIFNBͷվળ

  34. ϑϩϯτଆͷվળ w ϨϯμϦϯάΛ๦͛ΔϦιʔε ͷআ֎ w ςΩετѹॖͷ༗ޮԽ 34

  35. ϑϩϯτଆͷվળ w ϨϯμϦϯάΛ๦͛ΔϦιʔ εͷআ֎ w Ϧιʔεͷμ΢ϯϩʔυ͕ $SJUJDBM3FOEFSJOH1BUIΛ ્֐͍ͯ͠Δ 35 https://docs.google.com/presentation/d/1aLhRaTr8GdA4vrEM4Frkmsyt3b5jjncPsvHtj9ar58U/edit#slide=id.g6b2d607733_0_20

  36. ϑϩϯτଆͷվળ 36 SFG
 IUUQTEPDTHPPHMFDPNQSFTFOUBUJPOEB-I3B5S(E"WS&.'SLNTZUCKKOD1TW)UKBS6FEJUTMJEFJEHCE@@
 IUUQTEFWFMPQFSTHPPHMFDPNXFCGVOEBNFOUBMTQFSGPSNBODFDSJUJDBMSFOEFSJOHQBUISFOEFSCMPDLJOHDTT IMKB $44ͷEPXOMPBEͷվળ ͸ϖʔδඳըͷߴ଎Խʹ ௚઀ؔ܎͢Δ

  37. ϑϩϯτଆͷվળ w ϨϯμϦϯάΛ๦͛ΔϦιʔεͷআ֎ w$PNQPOFOUͱରͰඥ෇͔ͳ͍ܗͰ ࡞੒͞Ε͍ͯͨ wෆཁͳ$44͕େྔʹಡΈࠐ·Ε͍ͯͨ w ϖʔδ͝ͱʹඞཁͳ$44ΛಡΈࠐΉΑ͏ ʹमਖ਼ wSFBDUIFMNFU

    IUUQTHJUIVCDPN OqSFBDUIFMNFU 37
  38. ϑϩϯτଆͷվળ w ςΩετѹॖͷ༗ޮԽ w SFOEFSJOH݁ՌͷIUNM w $POUFOU&ODPEJOH͕ޮ͍͓ͯΒ ͣɺH[JQѹॖ͞Ε͍ͯͳ͔ͬͨ $44͸0, 

    w SFTTFU)FBEFS $POUFOU5ZQF UFYU IUNMDIBSTFUVUG` Λ௥Ճ͢Δ͚ͩ w ҙ֎ͱΘ͢Ε͕ͪͳͷͰ஫ҙΛ 38
  39. ϑϩϯτଆͷվળ 39

  40. 40 443 3BJMT HSBQIRMSVCZ αʔόʔଆͷվળ (SBQI2- ᶃϑϩϯτଆͷվળ ᶄαʔόʔଆͷվળ ᶅ2VFSZ4DIFNBͷվળ

  41. αʔόʔଆͷվળ ϑϩϯτΤϯυଆͷվળͷ݁ՌɺαʔόʔଆͷϨεϙϯε଎౓͕໰୊ʹͳΔ 41

  42. αʔόʔଆͷվળ w ܭଌ w "1.Λ׆༻ w ͢Ͱʹಋೖ͞Ε͍ͯͨ %BUBEPHΛ׆༻ w Ϩεϙϯε͕T௒

    42
  43. 43 POST /graphql query FeatureAllQuery { ranking(rankingType: WEEKLY) { id

    … } greetingProducts(count: 3) { id name … } firstPromotionArticle { id … } secondPromotionArticle { id title … } … }
  44. 44 POST /graphql query FeatureAllQuery { ranking(rankingType: WEEKLY) { id

    … } greetingProducts(count: 3) { id name … } firstPromotionArticle { id … } secondPromotionArticle { id title … } … }
  45. αʔόʔଆͷվળ w (SBQI2-ͷαʔόʔଆͷॲཧ w RVFSZͷ֤ϑΟʔϧυ͸SFTPMWFSͱ ݺ͹ΕΔؔ਺Ͱॲཧ͞Ε͍ͯ͘ w 4DBMBSΛฦ͢·Ͱ࣮ߦ͞ΕΔ w SFTPMWFS͕PCKFDUΛฦ͢৔߹͸


    ࠶ؼతʹ࣮ߦ͞ΕΔ w SFGIUUQTNFEJVNDPNQBZQBM FOHJOFFSJOHHSBQIRMSFTPMWFST CFTUQSBDUJDFTDEGECDFG 45 query FeatureAllQuery { greetingProducts(count: 3) { id name … } firstPromotionArticle { id … } secondPromotionArticle { id title … } ranking(rankingType: WEEKLY) { id … } … }
  46. αʔόʔଆͷվળ w (SBQI2-ͷUSBDFͷಡΈղ͖ํ w ·ͣDJFOU͔ΒૹΒΕͯ͘Δ RVFSZΛ֬ೝ͢Δ 46

  47. αʔόʔଆͷվળ w (SBQI2-ͷUSBDFͷಡΈղ͖ํ w ·ͣ͸͡ΊʹRVFSZͷQBSTFͱ WBMJEBUJPO͕࣮ߦ͞ΕΔ 47 query FeatureAllQuery {

    ranking(rankingType: WEEKLY) { id products { id name reviews { id rating } } … } greetingProducts(count: 3) { id name … } … } … }
  48. αʔόʔଆͷվળ w (SBQI2-ͷUSBDFͷಡΈղ͖ํ w ͦΕ͕ऴΘΔͱRVFSZʹඥͮ͘ SFTPMWFS্͕͔Β࣮ߦ͞ΕΔ w 2VFSZͷத਎Λ஌Βͳ͍ͱಡΊͳ͍ 48 query

    FeatureAllQuery { ranking(rankingType: WEEKLY) { id products { id name reviews { id rating } } … } greetingProducts(count: 3) { id name … } … } … }
  49. αʔόʔଆͷվળ w (SBQI2-ͷUSBDFͷಡΈղ͖ํ w (SBQI2-͸/ ͷ%#ΞΫηε͕ൃੜ ͕ͪ͠ 49 query FeatureAllQuery

    { ranking(rankingType: WEEKLY) { id products { id name reviews { id rating } } … } greetingProducts(count: 3) { id name … } … } … }
  50. αʔόʔଆͷվળ 50

  51. 51

  52. 52

  53. 53

  54. αʔόʔଆͷվળ 54 w (SBQI2-ͷUSBDFͷಡΈղ͖ํ w CBUDIMPBEFSͳͲͷϥΠϒϥϦͰ42-ΫΤϦͷ஗Ԇ࣮ߦΛ ߦ͏Α͏ʹͯ͠ճආ͢Δ͜ͱ͕Մೳ

  55. αʔόʔଆͷվળ 55

  56. αʔόʔଆͷվળ w (SBQI2-ͷUSBDFͷಡΈղ͖ํ w #BUDI-PBEFSͰॲཧ͢ΔΑ͏ʹࢦఆ͞Εͨॲཧ͸ɺ2VFSZʹ௚઀ ඥ෇͘ॲཧ͕ऴΘͬͨ͋ͱʹ࣮ߦ͞ΕΔɻ w ͦͷͨΊEBUBEPH্͸ॲཧ͕෼ׂ͞Ε͍ͯΔΑ͏ʹݟ͑Δɻ 56

  57. αʔόʔଆͷվળ w "1.ͷUSBDFΛಡΈղ͍ͨ݁Ռɺαʔόʔଆ͸ύϑΥʔϚϯεͷߟ ྀ͕͞Ε͍ͯΔ w ͦ΋ͦ΋ϑϩϯτͷը໘ͷඳըҎ্ʹTFSWFSଆʹॲཧΛ͍ͤͯ͞Δ PWFSGFUDIJOH ͬͪ͜ͷվળ͕ඞཁ 57

  58. 58 443 3BJMT HSBQIRMSVCZ αʔόʔଆͷվળ (SBQI2- ᶃϑϩϯτଆͷվળ ᶄαʔόʔଆͷվળ ᶅ2VFSZ4DIFNBͷվળ

  59. Query/Schemaͷվળ w ϑϩϯτͷը໘ͷඳըҎ্ͷ݅਺ΛαʔόʔʹϦΫΤετ ͍ͯ͠Δ 0WFSGFUDIJOH  w QBHJOH͕ͳ͍഑ྻͷSFRVFTU͕͋ͬͨ w શ͘࢖͍ͬͯͳ͍΋ͷΛऔಘ͍ͯ͠Δ

    59
  60. Query/Schemaͷվળ w QBHJOH͕ͳ͍഑ྻͷSFRVFTU w ؔ࿈͢ΔϨίʔυ͕શ݅औಘ Ͱ͖ΔͷͰੑೳ͕ྼԽ͢Δ w ։ൃ؀ڥͰݟಀ͕ͪ͠ 60

  61. Query/Schemaͷվળ w QBHJOH͕ͳ͍഑ྻͷSFRVFTU΁ͷରԠ w ݅਺Λࢦఆͯ͠औಘͰ͖ΔΑ͏ʹQBHJOHΛ௥Ճ 61

  62. Query/Schemaͷվળ w QBHJOH͕ͳ͍഑ྻͷSFRVFTUͷ࠶ൃ๷ࢭ w ͦ΋ͦ΋഑ྻͷ5ZQFΛ࣋ͭ΋ͷʹQBHJOHͳ͠ͷ"1*Λఆٛ Ͱ͖Δ͜ͱ͕໰୊ w ੜ੒͞ΕΔTDIFNBʹରͯ͠MJOUΛ͔͚ͯະવʹ๷͛ͳ͍͔ Λݕ౼ w

    IUUQTHJUIVCDPNDKPVESFZHSBQIRMTDIFNBMJOUFS w SFMBZDPOOFDUJPOUZQFTTQFD 62
  63. Query/Schemaͷվળ w શ͘࢖͍ͬͯͳ͍΋ͷΛऔಘ͍ͯ͠Δ w 2VFSZ͔Βফ͢ 63

  64. Query/Schemaͷվળ w શ͘࢖͍ͬͯͳ͍΋ͷΛऔಘ͍ͯ͠Δ໰୊ͷ࠶ൃ๷ࢭ w 2ͦ΋ͦ΋ͳͥը໘ʹඥ෇͍͍ͯͳ͍RVFSZ͕ॻ͔Εͯ͠·͏ ͷ͔ʁ w "RVFSZ͕ը໘Ͱ࢖ΘΕ͍ͯΔ͔Ͳ͏͔ͷݕূ͕Ͱ͖͍ͯͳ͍ ͔Β 64

  65. 65

  66. 66 ը໘Ͱඳը͍ͯ͠ͳ͍΋ͷ Λऔಘͯ͠͠·͍ͬͯΔ

  67. Query/Schemaͷվળ w શ͘࢖͍ͬͯͳ͍΋ͷΛऔಘ͍ͯ͠Δ໰୊ͷ࠶ൃ๷ࢭ w ຊདྷ(SBQI2-ͷRVFSZ͸ը໘Ͱඞཁͳཁૉͱ݁ͼ͍͍ͭͯͳ͚Ε ͹͍͚ͳ͍ w 3&45ͱҟͳΓը໘ͰඞཁͳσʔλͷΈΛऔಘͰ͖Δ͜ͱ͕ຊ དྷͷϝϦοτ w

    ࠓճ͸(SBQI2-ͷRVFSZ͸ը໘ͱผͷ৔ॴͰ૊ΈཱͯΒΕ͍ͯͨ 67
  68. Query/Schemaͷվળ w શ͘࢖͍ͬͯͳ͍΋ͷΛऔಘ͍ͯ͠Δ໰୊ͷ࠶ൃ๷ࢭ w RVFSZͱը໘Λ݁ͼ͚ͭΔʹ͸Ͳ͏͢Ε͹Α͍͔ w 'SBHNFOUͱ$PMPDBUJPO 68

  69. Query/Schemaͷվળ w 'SBHNFOU w (SBQI2-ͷRVFSZΛ෦෼తʹ੾Γग़ͨ͠΋ͷ w RVFSZͷ෼ׂ΍࠶ར༻ΛՄೳʹ͢Δ 69

  70. 70

  71. None
  72. 72

  73. Query/Schemaͷվળ w 'SBHNFOU w 'SBHNFOUΛ࢖͏ͱRVFSZͷ෦෼ఆ͕ٛՄೳ w 'SBHNFOUͱ$PNQPOFOUͱҰॹʹ഑ஔ͢Δ 73

  74. 74

  75. Query/Schemaͷվળ w $PMPDBUJPO w ೔ຊޠͰ͸ʮҰॹʹ഑ஔ͢Δʯͱ͍͏ҙຯ w (SBQI2-ͷจ຺Ͱ͸GSBHNFOUΛ߹੒ͯͭ͠ͷRVFSZʹ߹੒͢Δ ͜ͱ 75

  76. 76

  77. Query/Schemaͷվળ w 'SBHNFOUͱ$PMPDBUJPO w 'SBHNFOUͱ$PNQPOFOUΛಉ͡ ৔ॴͰ؅ཧ͢Δ w 2VFSZ͸֤$PNQPOFOUͰఆٛ͞ Εͨ'SBHNFOU͔Β૊ΈͨͯΔ w

    GFUDIͨ͠σʔλ͕WJFXͰར༻ ͞Ε͍ͯΔ͔Ͳ͏͔͕Ұ໨ྎવ ʹͳΔ 77 "QQ$PNQPOFOU "QQ2VFSZ 1SPEVDU-JTU*UFN #FGPSF "GUFS "QQ$PNQPOFOU "QQ2VFSZ 1SPEVDU-JTU*UFN 1SPEVDU-JTU*UFN GSBHNFOU
  78. Query/Schemaͷվળ w 'SBHNFOUͱ$PMPDBUJPO w Ξφϩδʔ4DPQFE$44 w TUZMFͱ$PNQPOFOUΛಉ͡৔ॴͰ؅ཧ w (SBQI2-ͷRVFSZ΋$PNQPOFOUʹू໿͍ͯ͘͠ํ޲ʹ͢Δ΄͏ ͕ྑ͍

    w ύϑΥʔϚϯεվળͷ݁Ռɺ$PNQPOFOUઃܭ͕ඇৗʹॏཁͰ ͋Δ͜ͱ͕Θ͔ͬͨ 78
  79. Query/Schemaͷվળ w ͞Βʹ௥ՃͰpSTUWJFXͷWJFXQPSUͷ಺֎ͰRVFSZΛ෼ׂͨ͠ 79

  80. Query/Schemaͷվળ w ͞Βʹ௥ՃͰpSTUWJFXͷWJFXQPSUͷ಺֎ͰRVFSZΛ෼ׂͨ͠ w ཹҙ఺ͱͯ͠ϒϥ΢βόοΫ࣌ͷڍಈΛߟྀ͓ͯ͘͠ඞཁ͕͋Δ w ϒϥ΢βόοΫ࣌͸BQPMMPͷDBDIF͔ΒσʔλΛ෮ݩ 80 

  81. 81 

  82. 82  443࣌

  83. 83  ϒϥ΢βόοΫ࣌

  84. Query/Schemaͷվળ w ݁Ռ 84 

  85. Agenda ϦχϡʔΞϧ࣌ͷٕज़ߏ੒ ύϑΥʔϚϯεվળ ࠓޙͷల๬ ·ͱΊ 85

  86. ࠓޙͷల๬ w DBDIFͷ׆༻Λݕ౼ w &$αΠτ͸ൺֱతϦΞϧλΠϜੑ͕௿͍ίϯςϯπ͕͋Δ w ήετϢʔβʔʹදࣔ͢Δίϯςϯπ͸جຊతʹ͸ಉ͡ w $%/ͷϨΠϠʔͰ)5.-DBDIFͱSFTQPOTFDBDIFͷ྆ํ͕
 ׆༻Մೳͳ͸ͣ

    86 
  87. ࠓޙͷల๬ w Α͋͘Δޡղ(SBQI2-͸DBDIFͰ͖ͳ͍ w 1045ͰϦΫΤετΛૹΔ͔Β w DMJFOU͕޷͖উखʹRVFSZΛૹΕΔ͔Β 87 

  88. ࠓޙͷల๬ w 21045ͰϦΫΤετΛૹΔ͔ΒDBDIFͰ͖ͳ͍ w "(&5Ͱ͓͘Ε͹Α͍ʂ w 2(&5ʹ͢ΔͱRVFSZQBSBNFUFS͕௕͘ͳͬͯ$%/ͷ੍ݶʹҾͬ ͔͔Δ w "LFZWBMVFͰࣄલʹRVFSZΛαʔόʔଆʹొ࿥͓͚ͯ͠͹Α͍

    88 
  89. ࠓޙͷల๬ w LFZͱͯ͠(SBQI2-ͷRVFSZͷத਎ΛIBTIԽͨ͠΋ͷΛ࢖͏͜ͱ ͕ଟ͍ʢ1FSTJTUFERVFSZʣ 89  https://www.apollographql.com/docs/apollo-server/performance/apq/

  90. ࠓޙͷల๬ w LFZͷొ࿥ w $PNQJMFUJNFQVTI w CVJME࣌ʹొ࿥ w 3VOUJNFQVTI w

    ޙ͔Βಈతʹొ࿥ w DMJFOU༻ͷϥΠϒϥϦ BQPMMPMJOLQFSTJTUFE RVFSZ 90  3VOUJNFQVTI
  91. ࠓޙͷల๬ w DMJFOU͕޷͖উखʹRVFSZΛૹΕΔ͔Β w pFMEͷதʹVTFSEFQFOEFOUͳσʔλ͕͋Ε͹DBDIFΛ͠ͳ͍ ࢓૊Έ͕ඞཁ w ͜Ε͕͋Ε͹DBDIFͰ͖Δ 91 

  92. w "QPMMP4FSWFSͰ͸ϥΠϒϥϦଆͰαϙʔτ ࠓޙͷల๬ 92

  93. w HSBQIRMSVCZͰ࣮ݱ͢Δํ๏Λݕ౼த ࠓޙͷల๬ 93 

  94. ·ͱΊ w αΠτͷύϑΥʔϚϯεվળΛᶃϑϩϯτଆɺᶄαʔόʔଆɺ ᶅ2VFSZ4DIFNBͷվળͷͭʹ෼͚ͯվળΛ࣮ࢪ w (SBQI2-Λ׆༻͢Δ৔߹͸PWFSGFUDIJOHͳͲͷ(SBQI2-ͷσϝ ϦοτΛΧόʔ͢Δઃܭ͕ඇৗʹॏཁ w DMJFOUଆͰը໘ͷߏ੒ʹԠͯ͡RVFSZͷνϡʔχϯάʢ"1*ͷνϡʔ χϯάʣΛͰ͖Δ͜ͱ͕(SBQI2-ͳΒͰ͸ͷϝϦοτ

    w DBDIFΛ׆༻͢Δ͜ͱͰ͞ΒͳΔߴ଎Խ΋Մೳ 94 
  95. ࣗݾ঺հ w ᖒҪએ඙ʢ͞Θ͍ͷͿͻ͜ʣ w UXJUUFSHJUIVCOPCVIJLPTBXBJ w αʔόʔαΠυ w ϑϩϯτΤϯυ 95

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