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

トレタO/X アーキテクチャ移行記 Next.js App Router化への道のり / TO...

トレタO/X アーキテクチャ移行記 Next.js App Router化への道のり / TORETA TECH UPDATE 1

2024/8/28、TORETA TECH UPDATE #1 での資料です。

Avatar for OKUNOKENTARO

OKUNOKENTARO

August 28, 2024
Tweet

More Decks by OKUNOKENTARO

Other Decks in Technology

Transcript

  1. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε wτ Ϩλ09 w ͓ళͷͩ͜ΘΓ఻͑Δө͑ΔϞόΠϧϝχϡʔ w ஫จ͔Β͓ձܭ·Ͱɺ εϚϗͰ׬݁

    w ೥ͷ։ൃ։͔࢝࣌Βݱࡏ·Ͱͷɺ  ༷ʑͳγεςϜͷมߋɺ ࣄۀͷมԽʹ൐͏ େن໛ͳϦΞʔΩςΫνϟͷ਺ʑͷखॱΛਤղ ࠓ೔͢Δ࿩
  2. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε w ೥ w ϕʔλ൛ͷ։ൃ w ೥ w

    ҆ఆ൛Ϧ Ϧʔε w ෳࣜ฽هํࣜ΁ͷରԠ w ೥ w "QQ3PVUFSҠߦ w 104Φʔϓϯઓུ΁ͷϦΞʔΩςΫνϟ શମͷྲྀΕ
  3. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε w ϥΠ ϒϥ ϦͷϦ ϑΝϨϯεతͳઆ໌΍ɺ ϝ Ϧ

    ο τ ɾ σϝ Ϧ ο τ͸࿩͠·ͤΜ w ࣍ͷ͜ͱ͸͢΂ͯ࿩͠·ͤΜ w /FYUKT"QQ3PVUFS͸1BHFT3PVUFSΑ ΓԿ͕༏Ε͍ͯΔ͔ w 3FBDU4FSWFS$PNQPOFOUTʹ͢Δͱߴ଎ԽͰ͖Δ͔ w 5BJMXJOE$44ͱ$44JO+4ͷൺֱ w આ໌ͷॱংΛ༏ઌ͓ͯ͠Γɺ ݫີͳ࣌ܥྻͱ͸Ұ෦ҟͳΓ ·͢ w ࣮ࡍ͸ɺ ࢿྉʹొ৔͠ͳ͍"1*΍γεςϜ͕͋Γ ·͕͢େ෯ʹ؆ུԽ͍ͯ͠·͢ w ਤதͷϖʔδ਺ɺ "1*਺͸ਖ਼֬Ͱ͸͋Γ ·ͤΜ ࠓ೔͠ͳ͍࿩
  4. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε ίϯϙʔωϯ τଆ࣮૷ணख ೥ॳ಄ʙय़ ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε ίϯϙʔωϯ

    τଆ࣮૷ணख ೥ॳ಄ʙय़ getServerSideProps() /pages/index.tsx w 3FBDU /FYUKTʹͯϖʔδΛ࡞੒ w ελΠ Ϧ ϯάʹ͸FNPUJPO .6*Λ࢖༻ w ϖʔδͱରͰgetServerSideProps() Λ࣮૷
  5. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε αʔόʔଆ࣮૷ணख ೥य़ ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε αʔόʔଆ࣮૷ணख ೥य़

    /pages/api handleMethod() w /pagesʹ/apiσΟ ϨΫ τ ϦΛ࡞੒ w Τϯ υϙΠϯ τΛྔ࢈͢Δ w Τϥʔϋϯ υ Ϧ ϯάΛ౷Ұతʹߦ͏ͨΊʹ ͢΂ͯͷϋϯ υϥ͸handleMethod()ؔ਺Ͱϥ οϓ
  6. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ձܭॲཧϖʔδͱձܭॲཧόοΫΤϯ υΛ࣮૷ ೥य़ʙՆ

    ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ձܭॲཧϖʔδͱձܭॲཧόοΫΤϯ υΛ࣮૷ ೥य़ʙՆ ஫จܥϖʔδ ձܭॲཧܥϖʔδ
  7. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ձܭॲཧϖʔδͱձܭॲཧόοΫΤϯ υΛ࣮૷ ೥य़ʙՆ

    ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ձܭॲཧϖʔδͱձܭॲཧόοΫΤϯ υΛ࣮૷ ೥य़ʙՆ w getServerSideProps()ʹϦμΠ ϨΫ τΛ൐͏ όϦσʔγϣϯΛ࣮૷ w ձܭॲཧதͷෆਖ਼ͳը໘ભҠʹԠͯ͡ɺ ద੾ͳ ϑϩʔʹ໭ͨ͢Ίͷॲཧ w ͜Ε͕ͷͪʹܹ͠ ͘ෛ࠴Խ͢Δʜ getServerSideProps()
  8. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ରϝχϡʔ"1*ରࡦ ೥ౙ º

    w ͢΂ͯͷϋϯ υϥͰར༻͢ΔhandleMethod()ͷલஈʹͯ isContentfulϑϥάʹΑΔ෼ذΛ࣮૷ w ະདྷӬ߷࢒ΔଆΛfalseͱ ͯ͠ɺ ݹ͘ ͳΔଆΛtrueʹ͢Δ w ֎෦%#ʹอଘ͢Δͱμ΢ϯ࣌ʹٻ·Βͳ͍ͷͰ ର৅ళฮ͸؀ڥม਺ʹ+40/"SSBZΛ֨ೲ if (isContentful) { .. . }
  9. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ϝχϡʔ"1*༻ϋϯ υϥΛ࣮૷ ೥ॳ಄

    º ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ϝχϡʔ"1*༻ϋϯ υϥΛ࣮૷ ೥ॳ಄ handleGet() -> handleGetContentful() ʹվ໊ handleGet() ৽ن࡞੒ w ͻͱͭͻͱͭͷϋϯ υϥʹ$POUFOUGVM൛෼ذͱϝχϡʔ"1*༻ͷ ෼ذΛઃ͚ͳ͍ w ։ൃऀʹΑͬͯ෼ذՕॴ͕ඍົʹζϨΔͳͲͯ͠ɺ  ࠶ར༻ੑ͕ଛͳΘΕΔͨΊ w ॲཧ๯಄ͰisContentfulϑϥάͰ෼ذ͢ΔͱఆΊΔ͜ͱͰ $POUFOUGVM༻ͱϝχϡʔ"1*༻ͷܥ౷Λ࣮૷͠ɺ ׬શʹ෼཭
  10. ஫จ"1* ϝχϡʔ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ϝχϡʔ"1*ͱͷܨ͗ࠐΈ ೥य़

    ঎඼஫จॲཧ ঎඼Ϛελ ঎඼Ϛελ w ܥ౷Λ෼͚ͯ΋Ϩεϙϯε ɾ εΩʔϚ͸ಉҰͷ΋ͷΛڞ༗ w /FYUKTόοΫΤϯ υ͔Βϑϩϯ τΤϯ υ΁ͷ ΠϯλϑΣʔε͕ޓ׵ͳͨΊɺ ϑϩϯ τΤϯ υଆ͸ແվम w +40/4DIFNBΛڞ༗͠ɺ Ϩεϙϯεॲཧͷࣗಈςε τΛ࣮ࢪ w ແఀࢭͰσʔλϕʔε੾Γସ͑Λୡ੒ ޓ׵ͷεΩʔϚͰ ΫϥΠΞϯ τʹฦ٫
  11. ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε  τ Ϩλ09ύϒϦ

    οΫ൛Ϧ Ϧʔε ೥݄೔ ঎඼஫จॲཧ $POUFOUGVMഇࢭ ঎඼Ϛελ
  12. ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε $POUFOUGVMҨߏͷআڈલฤ ೥Ն ஫จ"1*

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε $POUFOUGVMҨߏͷআڈલฤ ೥Ն w $POUFOUGVMΛݺͼग़͢ίʔ υ͕ίʔ υϕʔε಺ʹ ࢒ͬͨ··୭͔Β΋ΞΫηε͞Εͳ͘ ͳͬͨ͜ͱΛ֬ೝ w isContentfulΛϋʔ υίʔ υͰfalseͷఆ਺ʹ ஔ͖׵͑ w ϋϯ υϥΛআڈ͢Δ isContentful Λৗʹ false ʹ handleContentful() ͱɺ͔ͦ͜Βґଘ͢Δࢠؔ਺Λ͢΂ͯআڈ
  13. ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε $POUFOUGVMҨߏͷআڈޙฤ ೥Ն ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε $POUFOUGVMҨߏͷআڈޙฤ ೥Ն w ෼ذࣗମΛ࣮૷͔Βআڈ͢Δ w $POUFOUGVMؔ࿈ͷίʔ υΛ͢΂ͯআڈ͢Δ w আڈ࿙Εݕ஌ʹ͸,OJQϥΠ ϒϥ ϦΛ࢖͏
  14. ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠͷγεςϜվम ೥ळʙౙ ෳࣜ฽هܗࣜ΁ͷରԠ ೥ळʙౙ
  15. ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠͷγεςϜվम ೥ळʙౙ ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠͷγεςϜվम ೥ळʙౙ w ஫จϚΠΫϩαʔϏεͷצఆܥॲཧʹ ˙ैདྷํࣜʹՃ͑ͯ˙ෳࣜ฽هํ͕ࣜ ࣮૷͞Εͨ
  16. ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠͷͨΊͷ"1*࣮૷ ೥ळʙౙ ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠͷͨΊͷ"1*࣮૷ ೥ळʙౙ w ஫จ"1*ʹ৽ܥ౷ͷΤϯ υϙΠϯ τ͕ ࣮૷͞Εɺ ෳࣜ฽هܥΛѻ͑ΔΑ ͏ʹͳͬͨ w ύϒϦ οΫ൛͸·ͩैདྷํࣜʹ͔͠ରԠ Ͱ͖͍ͯͳ͍ ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠͷͨΊͷ"1*࣮૷ ೥ळʙౙ
  17. ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε

    ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠʹҠߦ͢ΔͨΊͷ෼ذॲཧΛ௥Ճ ೥ౙ ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε
  18. ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε

    ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠʹҠߦ͢ΔͨΊͷ෼ذॲཧΛ௥Ճ ೥ౙ ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠʹҠߦ͢ΔͨΊͷ෼ذॲཧΛ௥Ճ ೥ౙ ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε w ໿൒೥ޙʹશళฮ͕ෳࣜ฽هରԠʹҠߦ͢Δͱ͍͏ ࣄۀܭըʹج͖ͮɺ ैདྷํࣜΛ͙͢আڈͰ͖ΔΑ ͏ʹ ifϒϩοΫ಺ʹҠ͢ w ͜ͷ൑அ͕ɺ ͷͪʹཪ໨ʹͰΔ if (isLegacyInvoice) { .. . }
  19. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུͷ࢝ಈ ೥ॳ಄ "QQ3PVUFSҠߦ ೥ॳ಄ʙय़
  20. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུͷ࢝ಈ ೥ॳ಄
  21. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུͷ࢝ಈ ೥ॳ಄ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུͷ࢝ಈ ೥ॳ಄ w ࣗࣾϞόΠϧϝχϡʔ ࣗࣾ104ͱ͍͏ ΞʔΩςΫνϟʹ ࣄۀܭը্ͷ࠷େͷస׵ظ͕๚ΕΔ w ଞࣾͷ104γεςϜͱͷ࿈ܞػೳͷ࣮૷͕ܾ·Δ w εέδϡʔϧ͸λΠ τ
  22. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུͷ࢝ಈ ೥ॳ಄ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུͷ࢝ಈ ೥ॳ಄ w 104࿈ܞεέδϡʔϧతʹɺ Ұ౓૸Γ࢝ΊͨΒळظࠒ·Ͱ શͯͷ։ൃϦ ιʔε͕ͦͪΒΛ޲͘ؾ഑͕͋ͬͨ w /&$ϞόΠϧ104ணखલʹɺ ؾ߹͍ͷ"QQ3PVUFSҠߦ
  23. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽͷணख ೥ॳ಄ʙय़
  24. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽͷணख ೥ॳ಄ʙय़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽͷணख ೥ॳ಄ʙय़ w ·ͣશͯͷϖʔδͷϧʔ τίϯϙʔωϯ τΛࢠίϯϙʔωϯ τԽ͠ ͦΕΒΛϥ οϓ͢Δ৽ϧʔ τίϯϙʔωϯ τΛ࡞੒͢Δ
  25. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽͷணख ೥ॳ಄ʙय़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽͷணख ೥ॳ಄ʙय़ w ͰձܭϖʔδͷϦμΠ ϨΫ τॲཧΛgetServerSideProps()ʹ࣮૷ͨ͠ w དྷ٬ͷձܭঢ়گΛαʔόʔʹ໰͍߹Θͤͯɺ ͦͷঢ়گʹԠͯ͡ϦμΠ ϨΫ τ͢Δ w ͜ͷॲཧΛଞͷ৔ॴʹҠઃ͠ͳ͍ͱ"QQ3PVUFSԽ͕ୡ੒Ͱ͖ͳ͍
  26. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT ͷड͚ࡼ"1*Λ࣮૷ ೥य़
  27. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT ͷड͚ࡼ"1*Λ࣮૷ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT ͷड͚ࡼ"1*Λ࣮૷ ೥य़ w redirect-destination "1*Λ࣮૷ͨ͠ w ܾࡁঢ়گʹج͍ͮͨϦμΠ ϨΫ τܥͷॲཧΛҰखʹҾ͖ड͚Δ w ͜ͷ"1*Λઃ͚Δ͜ͱͰɺ όοΫΤϯ υͰ͸ͳ͘ ϑϩϯ τΤϯ υ͔Β ϦμΠ ϨΫ τઌܭࢉͷ݁ՌΛಘΔ͜ͱ͕Ͱ͖Δ
  28. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT Ҡߦલฤ ೥य़
  29. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT Ҡߦલฤ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT Ҡߦલฤ ೥य़ w getServerSideProps()Ͱ࣮ࢪ͍ͯ͠ΔURLSearchParamsͷ όϦσʔγϣϯॲཧΛɺ ը໘͚ͩΫϥΠΞϯ τ ɾ αΠ υʹҠઃ w Ͱ৽ϧʔ τίϯϙʔωϯ τΛઃ͚͍ͯΔͷͰɺ ͦͷ༨஍ʹҠઃ͢Δ
  30. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT Ҡߦޙฤ ೥य़
  31. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT Ҡߦޙฤ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT Ҡߦޙฤ ೥य़ w getServerSideProps()ͰݺͿ͚ͩʹมߋͨ͠ redirect-destination"1*ΛΫϥΠΞϯ τ ɾ αΠ υ͔Β ݺͿΑ ͏ʹมߋ w ·ͣ͸ը໘͚ͩ
  32. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT શഇ ೥य़
  33. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT શഇ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT શഇ ೥य़ w ஫จܥϖʔδͷURLSearchParamsͷόϦσʔγϣϯɺ  ձܭॲཧܥϖʔδͷϦμΠ ϨΫ τॲཧΛ͢΂ͯΫϥΠΞϯ ταΠ υʹҠઃ w getServerSideProps()ΛҰ੾࢖Θͳ͍/FYUKT1BHFT3PVUFS ͷΞʔΩςΫνϟΛୡ੒
  34. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1*

    ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε HFU4FSWFS4JEF1SPQT શഇ ೥य़
  35. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽΛୡ੒ ೥य़
  36. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽΛୡ੒ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽΛୡ੒ ೥य़ w ͢΂ͯͷ/pages/index.tsxΛ/app/page.tsxʹҠಈ ɾ ϦωʔϜ w pages/app.tsxͳͲͷॲཧΛ/app/layout.tsxʹదٓҠઃ /app /app/page.tsx
  37. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽΛୡ੒ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽΛୡ੒ ೥य़ w ͔ͭͯϖʔδͷϧʔ τͩͬͨࢠίϯϙʔωϯ τʹ Ұ཯Ͱ"use client"Λ෇༩͢Δ "use client"
  38. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFSԽΛୡ੒ ೥य़ w ͜ͷࠒͷ13͕೔13Λ௒͓͑ͯΓ ఏग़ଆ΋ϨϏϡʔଆ΋ෛՙ͕࠷ߴை
  39. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ର104Φʔϓϯઓུͷج൫Λ࣮૷ ೥य़ 104࿈ܞϦΞʔΩςΫνϟ ೥य़ʙՆ
  40. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ର104Φʔϓϯઓུͷج൫Λ࣮૷ ೥य़
  41. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ର104Φʔϓϯઓུͷج൫Λ࣮૷ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ର104Φʔϓϯઓུͷج൫Λ࣮૷ ೥य़ w 104࿈ܞ͸isContentfulϑϥάͱ͸ҟͳΓɺ ߃ٱతʹ࢒Δ֓೦ͷ ͨΊɺ ࢓૊ΈΛ੔උ͢Δඞཁ͕͋Δ w handleFacade()ؔ਺Λ࣮૷ w 'BDBEFύλʔϯͱ4USBUFHZύλʔϯΛ૊Έ߹Θͤͯɺ ෳ਺ͷ104޲͚ͷ ॲཧ෼ذ͕Ұͭͷؔ਺ͷதͰࠞࡏ͠ͳ͍Α ͏ʹ׬શʹ෼཭ͤ͞Δ handleFacade()
  42. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε /&$ϞόΠϧ104༻ͷϋϯ υϥΛ࣮૷ ೥य़
  43. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε /&$ϞόΠϧ104༻ͷϋϯ υϥΛ࣮૷ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε /&$ϞόΠϧ104༻ͷϋϯ υϥΛ࣮૷ ೥य़ w طଘͷࣾ಺੡104 09104 ͱ͸શ͘ҟͳΔܥ౷Ͱ /&$ϞόΠϧ104༻ϋϯ υϥΛ࣮૷ w "EBQUFS૚Ͱߏ଄Λ09104ޓ׵ʹม׵͠ ΫϥΠΞϯ τ ɾ αΠ υʹฦ٫͢Δσʔλͷޓ׵ੑΛҡ࣋ w $POUFOUGVM࣌୅Λܦݧ͍ͯ͠ΔͷͰϋϚΓ Ͳ͜ΖΛ ཧղ͍ͯͨ͠ ঎඼Ϛελ ঎඼Ϛελ ޓ׵ͷεΩʔϚͰ ΫϥΠΞϯ τʹฦ٫
  44. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫

    /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠͷԆ໋ରࡦ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠͷԆ໋ରࡦ ೥य़ w ʮશళฮ͕ෳࣜ฽هରԠʹҠߦ͢Δʯ ͱ͍͏ࣄۀܭը͕ ԆظʹͳͬͨͨΊɺ ͙͢ফͤΔΑ ͏ʹif෼ذͰ࡞ͬͨ Օॴ͕ු͖࢝ΊΔ w 104ผ෼ذͷ࢓૊ΈͱձܭॲཧํࣜʹΑΔ෼ذ͕ νάϋάʹͳ͍ͬͯΔͷͰ౷Ұ͍ͨ͠
  45. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫

    /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠͷԆ໋ରࡦ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠͷԆ໋ରࡦ ೥य़ w 104ผ෼ذͷ࢓૊ΈhandleFacade()Ͱ ձܭॲཧํࣜ΋֬ೝ͢ΔΑ ͏վम w ෳ੡ͨ͠ϋϯ υϥͷยํͷisLegacyInvoice ϑϥάΛfalseʹϋʔ υίʔ υ w ΋͏ยํͷisLegacyInvoiceϑϥάΛ trueʹϋʔ υίʔ υ const isLegacyInvoice = false; const isLegacyInvoice = true;
  46. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠॲཧͷ4USBUFHZԽ ೥य़
  47. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠॲཧͷ4USBUFHZԽ ೥य़ ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ෳࣜ฽هରԠॲཧͷ4USBUFHZԽ ೥य़ w boolean஋͕ϋʔ υίʔ υ͞Εͨఆ਺Λࢀর͢ΔifϒϩοΫ͸ ৑௕Ͱ͔͠ͳ͍ͷͰɺ ֘౰͠ͳ͍ॲཧΛ͢΂ͯআڈ w ͜ΕͰैདྷํࣜͱෳࣜ฽هํࣜͷ࣮૷͕ࠩ104ผͷ࣮૷ࠩͱ ಉ౳ʹѻ͑ΔΑ ͏ʹͳΓɺ ίʔ υͷݟ௨͕͠େ෯ʹվળ͞Εͨ
  48. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε /&$ϞόΠϧ104ରԠ൛ΛϦ Ϧʔε ೥݄೔
  49. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε /&$ϞόΠϧ104ରԠ൛ΛϦ Ϧʔε ೥݄೔ ঎඼Ϛελ ঎඼஫จॲཧ ʢ09ʣ ձܭॲཧ ʢچࣜʣ ձܭॲཧ ʢෳࣜ฽هʣ ঎඼஫จॲཧ ʢ/&$ϞόΠϧ104ʣ ঎඼Ϛελ
  50. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུج൫ͷணख ೥Ն
  51. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104

    ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུج൫ͷணख ೥Ն ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུج൫ͷணख ೥Ն w ͞Βʹଞࣾ࿈ܞΛ֦͛ΔͨΊʹ104Φʔϓϯઓུج൫ͷ։ൃʹணख w /&$ϞόΠϧ104ͱ͸௚઀ϞόΠϧϝχϡʔΞϓϦͷόοΫΤϯ υ͕ ௨৴͕ͨ͠ɺ ࠓޙ͸104Φʔϓϯઓུج൫Λܦ༝ͤ͞Δ
  52. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫

    /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུج൫ʹ޲͚ͨϋϯ υϥͷ࣮૷ ೥Ն
  53. ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫

    /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུج൫ʹ޲͚ͨϋϯ υϥͷ࣮૷ ೥Ն ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε 104Φʔϓϯઓུج൫ʹ޲͚ͨϋϯ υϥͷ࣮૷ ೥Ն ޓ׵ͷεΩʔϚͰ ΫϥΠΞϯ τʹฦ٫ ঎඼Ϛελ ঎඼Ϛελ ঎඼Ϛελ w 4USBUFHZύλʔϯͷج൫Λ࣮૷ࡁΈͳͷͰɺ ͔͜͜Β͞Βʹผܥ౷ͷ 104Λ௥Ճ͢Δͷ͸༰қͱͳͬͨ w 104Φʔϓϯઓུج൫༻ͷܥ౷Λ৽ͨʹઃ͚Δ w /&$ϞόΠϧ104ͱ͸௚઀௨৴͢Δ͕ɺ ͍ͣΕج൫ଆʹҠઃ͍ͨ͠
  54. ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1*

    104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFS 34$લఏͷ৽نϖʔδͷ࡞੒ ೥Ն
  55. ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1*

    104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFS 34$લఏͷ৽نϖʔδͷ࡞੒ ೥Ն ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε ஫จ"1* 104Φʔϓϯઓུج൫ /&$ϞόΠϧ104 ϝχϡʔ"1* ஫จϚΠΫϩαʔϏε "QQ3PVUFS 34$લఏͷ৽نϖʔδͷ࡞੒ ೥Ն w ೥ՆҎ߱ͷ৽نϖʔδ͸"QQ3PVUFSલఏͷઃܭ w getServerSideProps()༻ͷޓ׵ؔ਺Λ࠷ॳ͔Β ࣮૷ͤͣɺ 5BJMXJOE$44લఏͰελΠ Ϧ ϯά w 4FSWFS"DUJPOTΛલఏͱͨ͠'PSNॲཧ
  56. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε w खͣͭਐΊΔ͜ͱΛৗʹҙࣝͨ͠ w ϋϊΠͷౝΛղ͘ Α ͏ʹࠜؾڧ͘खͣͭਐΊΔ wʮ"Λ͠ͳ͕Βಉ࣌ʹ#΋΍ͬͪΌ͓͏ʯ

    ͸ࣄނͷݩ wʮ"͕׬ྃ͢Δ·Ͱ#͸΍Βͳ͍ʯ Λ؏͖νʔϜ಺ͰೝࣝΛἧ͑ͨ w ͋ΒΏΔ ϦΞʔΩςΫνϟʹ͍ͭͯ໖ີʹ޻ఔΛ࿅ͬͯνʔϜ಺Ͱਤղ͠ ݶΒΕͨ޻਺Ͱߦ͖౰ͨΓ͹ͬͨΓͳϦ ϑΝΫλ Ϧ ϯάΛ࣮ࢪ͠ͳ͍Α ͏ܭըͨ͠ ԿʹؾΛ͚͔ͭͨ
  57. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε w ΞʔΩςΫνϟ͕ෳࡶʹͳΓɺ ࿈ܞ͢ΔγεςϜ͕૿͑Δ΄Ͳ ίʔ υ ϨϏϡʔͰͷώϡʔϚϯΤϥʔ͕૿͑࢝ΊΔ w

    ͱʹ͔͘ ࣗಈԽ͢Δ w 5ZQF4DSJQU 7JUFTU &4-JOU 1SFUUJFS ,OJQ w ґଘؔ܎ͷଥ౰ੑΛௐࠪ͢ΔϧʔϧΛ&4-JOUno-restricted-pathsͰ ఆٛͨ͠ w 5ZQF4DSJQU ϑΝΠϧҎ্ͷݕࠪʹ෼͔͔ΔͨΊݕࠪϥΠ ϒϥ ϦΛࣗ࡞ͨ͠ w ಉ಺༰ͷݕ͕ࠪඵͰऴΘΔΑ ͏ʹͳͬͨͷͰɺ ޙ೔044Խ͢Δ༧ఆ ࣗಈԽࢧԉ
  58. ஫จ"1* $POUFOUGVMʢ঎඼$.4ʣ ஫จϚΠΫϩαʔϏε w :"(/*ݪଇʹै͏ w ࠓͷઃܭʹ໰୊͕ͳ͍͔৺഑͗͢͠ͳ͍ w ࣗ෼ͨͪͷࠓͷ஌ࣝͱࠓͷεΩϧΛ৴͡Δ w

    ະདྷ͕ͲͬͪʹసΜͰ΋Կ͔͠Β໰୊͸ى͜Δ w ͢΂ͯͷॲཧʹςε τΛॻ͘ w ͱʹ͔͘ ςε τΛॻ͍ͯଉΛ͢ΔΑ ͏ʹϦ ϑΝΫλ Ϧ ϯάΛ࣮ࢪ͢Δ w ෼ذॲཧ͸͍͔ͳΔঢ়گͰ΋ѱɺ ਺͕࠷খʹͳΔ޻෉Λܧଓ͢Δ w ͋ΒΏΔ΋ͷ͸ɺ ࠶ར༻ੑΑ Γ ΋ࣺͯ΍͢͞Λ࠷༏ઌʹ͢Δ $PODMVTJPO