๐Ÿง‘๐Ÿปโ€๐Ÿณ Meme ์ถ”์ฒœ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ๊ธฐ

์ตœ๊ทผ ๊ฒฝ์Ÿ๋ฅ ์ด ๋งค์šฐ ๋†’์€ (ํ•ฉ๊ฒฉ๋ฅ  5% ๋‚ด์™ธ) ๊ต๋‚ด ๊ธฐ์ˆ ์ฐฝ์—… ๋™์•„๋ฆฌ๋ฅผ ์ง€์›ํ•˜๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ meme์ด๋ž€ '์›ƒ์Œ์„ ์œ ๋ฐœํ•˜๋Š” ์งง์€ ๋™์˜์ƒ'๊ณผ ๊ฐ™์€ ๋œป์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋“œ์‹œ ๋“ค์–ด๊ฐ€๊ณ  ์‹ถ์—ˆ๋˜ ๋™์•„๋ฆฌ์˜€๊ธฐ์— ๋งŽ์€ ๊ณ ๋ฏผ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋งˆ๋‹ค ๊ด€์‹ฌ์‚ฌ์™€ ์›ƒ์Œ ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅด๋ฉฐ ํŠน์ • ๊ทธ๋ฃน์—๊ฒŒ๋Š” ์›ƒ๊ธด ๋‚ด์šฉ์ด ๋‹ค๋ฅธ ๊ทธ๋ฃน์—๊ฒŒ๋Š” ๋ถˆ์พŒํ•œ ๋‚ด์šฉ์œผ๋กœ ๋‹ค๊ฐ€๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค "์ฐจ๋ผ๋ฆฌ ์„ ํƒ์— ๊ธฐ๋ฐ˜ํ•ด meme์„ ์ถ”์ฒœํ•ด์ฃผ๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ์–ด๋–จ๊นŒ?"ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ˜• ์ถ”์ฒœ ์‹œ์Šคํ…œ(์ƒˆ๋กœ ๋ˆ„์ ๋˜๋Š” ๋ฐ์ดํ„ฐ์— ๊ธฐ๋ฐ˜ํ•ด ์ถ”์ฒœ ๋‚ด์šฉ์ด ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ์‹œ์Šคํ…œ)์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ˆ ์ ์ธ ๋ณต์žก๋„๋„ ๊ทธ๋ ‡๊ฒŒ ๋†’์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ๋งˆ์นจ ์ฃผ๋ง์ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽฌ ์‹œ์Šคํ…œ ๊ธฐํšํ•˜๊ธฐ

์šฐ์„  ์ œ๊ฐ€ ์žฌ๋ฐŒ๊ฒŒ ๋ณธ ๋™์˜์ƒ๋“ค์„ ๋ฆฌ์ŠคํŠธ์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. (ํ‹ฑํ†ก, ํŠธ์œ„ํ„ฐ, ์ธ์Šคํƒ€๊ทธ๋žจ ๋Œ€์‹  ์œ ํŠœ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ƒ๊ด€ ์—†์„ ๊ฒƒ์ด๋ผ ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.)

๋‹จํ†ก๋ฐฉ์—์„œ youtu ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰ํ•ด์„œ ์ œ๊ฐ€ ์›ƒ๊ธฐ๋‹ค๊ณ  ์ƒ๊ฐํ•œ ๋™์˜์ƒ๋“ค์„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ดํ›„ Notion ํŽ˜์ด์ง€์—์„œ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์Œ์•…, ์˜ํ™”, ๊ฒŒ์ž„, ์ฝ”๋”ฉ, ์ผ๋ฐ˜์  Meme์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์„ ํƒ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ ํ…Œ์ŠคํŠธ๋ฅผ ๊ตฌ์ƒํ•˜๋‹ค ๋ณด๋‹ˆ 2๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์งˆ๋ฌธ์˜ ๋‹ต๋ณ€๋งˆ๋‹ค ๊ฐ€์ค‘์น˜๋ฅผ ์ฃผ๊ณ , ์ตœ์ข… ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋Š” ์ „์ฒด์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค ํŠธ๋ฆฌ๋ฅผ ์„ค์ •ํ•ด๋‘๊ณ  ์„ ํƒ์ง€์˜ ์กฐํ•ฉ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฆ˜ ์œ ํ–‰ํ•˜๋Š” MBTI ๊ฒฐ๊ณผ๋ฌผ๋“ค์„ ๋ถ„์„ํ•ด๋ณธ ๊ฒฐ๊ณผ ๋Œ€๊ฐœ ์ฒซ ๋ฒˆ์งธ ์ ์ˆ˜ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋‘ ๋ฒˆ์งธ ์‹œ๋‚˜๋ฆฌ์˜ค ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ ์ˆ˜ ํ”Œ๋ž˜๊ทธ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ๋„ˆ๋ฌด ๋ณต์žกํ–ˆ์Šต๋‹ˆ๋‹ค.
    • MBTI๋Š” ์ ์ˆ˜ ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค. E/I, N/S, T/F, J/P ์ด๋ ‡๊ฒŒ 4๊ฐœ์˜ ํ”Œ๋ž˜๊ทธ๋งŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ์ˆ˜ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ธฐ ๋น„๊ต์  ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ์ €๋Š” ๋‹น์žฅ ์Œ์•…, ์˜ํ™”, ๊ฒŒ์ž„, ์ฝ”๋”ฉ, ์ผ๋ฐ˜ ์ด๋ ‡๊ฒŒ 5๊ฐœ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์กด์žฌํ–ˆ๊ณ  ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์กด์žฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋ž˜๊ทธ๋ฅผ ์žก๊ธฐ๊ฐ€ ์• ๋งคํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹จ์ˆœํžˆ ๊ฒŒ์ž„ ํ”Œ๋ž˜๊ทธ ์ ์ˆ˜๊ฐ€ ๋†’๋‹ค๊ณ  ํ•ด์„œ ๋ฌด์ž‘์ • ๋กค Meme ์˜์ƒ์„ ์ถ”์ฒœํ•ด์ค„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋กค์˜ ๊ทœ์น™์„ ๋ชจ๋ฅด๊ฑฐ๋‚˜ ๊ทธ ์›ƒ์Œ๋Œ€์— ๊ณต๊ฐํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋กค ์ ์ˆ˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ "์ œ์ผ ์ข‹์•„ํ•˜๋Š” ๊ฒŒ์ž„" ํ”Œ๋ž˜๊ทธ๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•ด๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ๊ฒฝ์šฐ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ๋ฌด์ฒ™ ๋ณต์žกํ•ด์ง€๋ฉฐ ๊ทธ๋ ‡๊ฒŒ๊นŒ์ง€ ๊ธฐ์ˆ ์  ๋‚œ์ด๋„๋ฅผ ๋†’์ด๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ๋†’์•„์ง€๋Š” ๊ธฐ์ˆ ์  ๋‚œ์ด๋„๋ณด๋‹ค ๋” ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์€ ๊ธฐํš์  ๋‚œ์ด๋„์ž…๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ์˜์ƒ์ด ํ”Œ๋ž˜๊ทธ๋งˆ๋‹ค ์–ด๋А ์ ์ˆ˜ ์˜์—ญ๋Œ€์— ์ถ”์ฒœ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์ •๊ตํ•˜๊ฒŒ ๊ธฐํšํ•˜๊ธฐ ๋งค์šฐ ์–ด๋ ต๋‹ค๊ณ  ๋А๊ผˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ ์ˆ˜ ๊ธฐ๋ฐ˜์œผ๋กœ๋Š” '์ทจํ–ฅ์ €๊ฒฉ'ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์—”๋”ฉ ๋ณด๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์„ ํƒ ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„์—์„œ๋Š” ๋งˆ์ง€๋ง‰ ๊ฒฐ์ • ํ•˜๋‚˜๋งŒ ๋ณ€๊ฒฝํ•ด์„œ ๋‹ค๋ฅธ ์—”๋”ฉ์„ ๋ณด๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (ํŠนํžˆ ๋‹จ์ˆœํ•œ MBTI๊ฐ€ ์•„๋‹Œ ์ด๋Ÿฐ Meme ์ถ”์ฒœ์€ ๋”์šฑ์ด ๊ทธ๋Ÿด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
    • ํ•˜์ง€๋งŒ ์ ์ˆ˜ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์€ ๋Œ€๊ฐœ ํ…Œ์ŠคํŠธ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผํ•˜๋ฉฐ ์„ ํƒ undo ์•ก์…˜์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋” ๋งŽ์€ ์—”์ง€๋‹ˆ์–ด๋ง์ด ํˆฌ์ž…๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์‹œ๋‚˜๋ฆฌ์˜ค ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์„ ํ™œ์šฉํ•œ๋‹ค๋ฉด ์ด ๋ถ€๋ถ„์ด ๋” ํŽธ๋ฆฌํ•ด์ง‘๋‹ˆ๋‹ค. Parent Node๋กœ ์ด๋™ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
    • ํ›„์ˆ ๋˜๊ฒ ์ง€๋งŒ, ์ €์˜ ๊ฒฝ์šฐ Next Link๋ฅผ ํ™œ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋’ค๋กœ ๊ฐ€๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์•ก์…˜ undo๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์ธ ์„ ํƒ์ง€ ์–ดํœ˜๊ฐ€ ์•„๋‹Œ ํ๋ ˆ์ดํŒ…๋œ ์„ ํƒ์ง€ ์–ดํœ˜๋ฅผ ๋„ฃ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์ ์ˆ˜ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ๋Š” ๊ต‰์žฅํžˆ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ์˜ ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€๋งŒ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰ follow-up ์งˆ๋ฌธ์„ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
    • ์ €๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค ํŠธ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์ด ์„œ๋กœ ์ •ํ™•ํ•˜๊ฒŒ ๋“ค์–ด๋งž๋„๋ก ๋งŒ๋“ค์–ด ์ €์™€ ๋Œ€ํ™”ํ•˜๋Š” ๋“ฏํ•œ ๊ฒฝํ—˜์„ ์ฃผ๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋˜ํ•œ ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด ์‹œ์Šคํ…œ์€ "๋™์•„๋ฆฌ ์ง€์›์„œ์— ์ฒจ๋ถ€๋ " ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.
    • ์•„๋ฌด๋ฆฌ ์žฌ๋ฏธ์žˆ๋Š” ์˜์ƒ์„ ์ถ”์ฒœํ•ด์ค€๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์ œ ์ด๋ฆ„์„ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๊ณ  ์˜์ƒ๋งŒ ๊ธฐ์–ตํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋ณธ๋ง์ด ์ „๋„๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ ๊ณผ์ •์—์„œ ๋‚˜๋Š” ์ด ๋™์•„๋ฆฌ์— ๊ผญ ๋“ค์–ด๊ฐ€๊ณ  ์‹ถ๋‹ค!!!๋ผ๋Š” ๋А๋‚Œ์„ ๋ฟœ๋ฟœํ•˜๊ฒŒ ์ฃผ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿฅž ๊ธฐ์ˆ  ์Šคํƒ ๊ฒฐ์ •ํ•˜๊ธฐ

ํ”„๋ก ํŠธ์—”๋“œ์— ์žˆ์–ด์„œ๋Š” ๋ณ„๋‹ค๋ฅธ ๊ณ ๋ฏผ์„ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ TypeScript Next์™€ ์‚ฌ๋ž‘์— ๋น ์กŒ๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ๊ณ  Vercel๊ณผ Next์˜ ํ˜ธํ™˜์„ฑ์„ ์•Œ๊ธฐ์— Vercel์— ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šคํƒ€์ผ์€ styled-component๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋””์— ์ €์žฅํ• ์ง€์— ๋Œ€ํ•œ ๋ถ€๋ถ„์ด ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. Meme์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋™์ ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๊ณ , ์œ ์ € ์ •๋ณด๋Š” ์ €์žฅํ•  ์ผ์ด ์—†๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๊ธฐ์— DB ๋˜๋Š” DBaaS๋ฅผ ๋”ฐ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์ •๋ณด๋“ค์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ ๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ตฌ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šคํ•œ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ป ๊ฐœ๋ฐœํ•˜๊ธฐ

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์งˆ๋ฌธ์€ ์งˆ๋ฌธ๋งˆ๋‹ค, ๋™์˜์ƒ์€ ๋™์˜์ƒ๋งˆ๋‹ค ๊ณ ์œ  ๋งํฌ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์„ ํƒ์ง€๋ฅผ ๊ณ ๋ฅด๋ฉด ๊ทธ ๋งํฌ๋กœ ์ ‘์†ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. ๊ฐ ์„ ํƒ์ง€๋Š” '๋‹ค์Œ ์งˆ๋ฌธ' ๋˜๋Š” '๊ฒฐ๊ณผ ๋™์˜์ƒ' ํ•„๋“œ๋ฅผ ๊ฐ€์ง„ Object ํ˜•ํƒœ์ด๋ฉฐ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. getStaticProps์™€ getStaticPaths๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ˜์‘ ์†๋„๋ฅผ ์ดˆ๊ณ ์†์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๐Ÿ”— 1. ๊ณ ์œ  ๋งํฌ ๊ตฌ์กฐ

๊ฐ ์งˆ๋ฌธ๊ณผ ๋™์˜์ƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ URI ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

https://smile.cho.sh/question/[id]
https://smile.cho.sh/video/[id]

์˜ˆ์‹œ:

๐Ÿ’ฌ 2. ํƒ€์ž… ๊ตฌ์กฐ

TypeScript์˜ ์žฅ์ ์„ ํ™œ์šฉํ•˜์—ฌ type ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

export type Question = {
  id: number
  contents: string[]
  answers: Answer[]
}

export type Answer = {
  id: number
  content: string
  result: number | null
  nextQuestion: number | null
}

export type Video = {
  id: number
  title: string
  uploader: string
  desc: string
  youtubeId: string
}

type Answer์—์„œ result์™€ nextQuestion์€ ๋‘˜ ์ค‘ ํ•œ ์ชฝ๋งŒ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ 2๊ฐ€์ง€๋กœ ๋ณ„๋„์˜ ํ•„๋“œ๋ฅผ ํ†ตํ•ด question๊ณผ video๋ฅผ ํ˜ผ๋™ํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ 0์œผ๋กœ ๋‘์–ด ์˜๋„์น˜ ์•Š์€ null ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ”์ ์€ /question/0์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿš€ 3. ์ดˆ๊ณ ์†ํ™”

์˜ˆ๋ฅผ ๋“ค์–ด /question/[id]์— ํ•ด๋‹นํ•˜๋Š” ํŽ˜์ด์ง€๋“ค์€ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ ํƒ€์ž„์— ์ •์ ์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

export const getStaticPaths: GetStaticPaths = async () => {
  const paths = questionData.map((question) => ({
    params: { id: question.id.toString() },
  }))
  return { paths, fallback: false }
}

export const getStaticProps: GetStaticProps = async ({ params }) => {
  try {
    const id = params?.id
    const item = questionData.find((data) => data.id === Number(id))
    return { props: { item } }
  } catch (err) {
    return { props: { errors: err.message } }
  }
}

์—ฌ๊ธฐ์„œ getStaticPaths๋Š” ์ •์ ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•  ํŽ˜์ด์ง€๋“ค์˜ path๋“ค์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •ํ•ด์ฃผ๋ฉฐ, getStaticProps๋Š” path์™€ ์ผ์น˜ํ•˜๋Š” ์งˆ๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ React App์— props ํ˜•ํƒœ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์งˆ๋ฌธ๊ณผ ๋™์˜์ƒ ํŽ˜์ด์ง€๋ฅผ ์ •์ ์œผ๋กœ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜์•„๊ฐ€ next/link์˜ <Link>๊นŒ์ง€ ์กฐํ•ฉํ•˜์—ฌ ํ™œ์šฉํ•œ๋‹ค๋ฉด ํŽ˜์ด์ง€๋“ค์„ prefetchํ•ด์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐ๋ž™์…˜์„ ์ดˆ๊ณ ์†์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ง ๊ทธ๋Œ€๋กœ, ๋ธŒ๋ผ์šฐ์ € ํŒจ๋น„์ฝ˜์—์„œ ๋กœ๋”ฉ ๋„๋Š” ๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค!)

๐Ÿ’… 4. ์Šคํƒ€์ผ๋ง ๋ฐ ๋””ํ…Œ์ผ ์žก๊ธฐ

๋‹ค์‹œ ๋งํ•ด์„œ ์ธํŠธ๋กœ ํŽ˜์ด์ง€์™€ ์—”๋”ฉ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ณ , ๋นผ๋จน์€ ๋””ํ…Œ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ View๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋“  ์งˆ๋ฌธ์— ๋Œ€ํ•ด์„œ ์ž˜ ๋ชจ๋ฅธ๋‹ค๊ณ  ๋‹ตํ•  ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ทฐ๋“ค์€ ๋™์˜์ƒ์„ ๋ฐ”๋กœ embedํ•˜๋Š”๋ฐ ๋ฐ˜ํ•ด ์ด ๊ฒฝ์šฐ์—๋งŒ ๋ฒ„ํŠผ์˜ ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

ALT: Fallback Video

๋ฌด์Šจ ์˜์ƒ์ธ์ง€๋Š” ์ง์ ‘ ํ™•์ธํ•ด๋ณด์„ธ์š”!

โœจ ๊ฒฐ๊ณผ

  • smile.cho.sh
  • ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด์‹œ๊ณ  ์˜๊ฒฌ์„ ์•Œ๋ ค์ฃผ์„ธ์š”!
  • ๋™์•„๋ฆฌ์— ์ตœ์ข… ํ•ฉ๊ฒฉํ–ˆ์Šต๋‹ˆ๋‹ค!

๐Ÿ”ฅ ํšŒ๊ณ 

  • ๊ธฐํš์  ๋‚œ์ด๋„์™€ ๊ธฐ์ˆ ์  ๋‚œ์ด๋„ ์‚ฌ์ด์—์„œ ์ ๋‹นํžˆ ๋ฐธ๋Ÿฐ์Šค๋ฅผ ์ž˜ ๋งž์ถ˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ES6+์˜ map ํ•จ์ˆ˜๋ฅผ ์ •๋ง ์ž์ฃผ, ์ž˜ ์‚ฌ์šฉํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!
  • Static TypeScript Next๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ž˜ ์•Œ๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • Favicon, Metadata, SEO ๋“ฑ์— ์‹ ๊ฒฝ์„ ์“ฐ์ง€ ๋ชปํ•œ ๊ฒƒ์€ ์กฐ๊ธˆ ์•„์‰ฝ์ง€๋งŒ ๊ฒ€์ƒ‰์ด๋‚˜ SNS ์œ ์ž…์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ๋”ฐ๋กœ ์ถ”๊ฐ€ํ•˜์ง€๋Š” ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ์ฃผ๋ง ๋™์•ˆ ๊ฐˆ์•„๋„ฃ์œผ๋‹ˆ๊นŒ ์™„์„ฑ๋˜๊ธด ํ•˜๋Š”๊ตฌ๋‚˜...๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜‰