์คํ ๋ฆฌ๋ถ์ผ๋ก ํจ์จ์ ์ด๊ณ ํ์ ์ ์ธ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์คํํ์ธ์. ์ค์ , ์ฌ์ฉ๋ฒ, ํ ์คํ , ๋ชจ๋ฒ ์ฌ๋ก, ๊ตญ์ ํ์ ์ํ ์ด์ ์ ๋ค๋ฃน๋๋ค.
ํ๋ก ํธ์๋ ์คํ ๋ฆฌ๋ถ: ๊ธ๋ก๋ฒ ํ์ ์ํ ํฌ๊ด์ ์ธ ์ปดํฌ๋ํธ ๊ฐ๋ฐ ํ๊ฒฝ
์น ๊ฐ๋ฐ ํ๊ฒฝ์ด ๋์์์ด ์งํํ๋ ๊ฐ์ด๋ฐ ๋ณต์กํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๊ตฌ์ถํ๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ ์ด๋ ค์ด ์์ ์ผ ์ ์์ต๋๋ค. ์ปดํฌ๋ํธ๋ ํ๋ UI์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์์ด๋ฉฐ, ํนํ ์ ์ธ๊ณ์ ๋ถ์ฐ๋ ํ ๋ด์์๋ ์์ฐ์ฑ, ์ผ๊ด์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ฑ์ ์ํด ๊ฐ๋ ฅํ ์ปดํฌ๋ํธ ๊ฐ๋ฐ ํ๊ฒฝ์ด ์ค์ํฉ๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ์คํ ๋ฆฌ๋ถ์ด ๋น์ ๋ฐํฉ๋๋ค. ์คํ ๋ฆฌ๋ถ์ UI ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ์ ์ํ๊ธฐ ์ํ ๊ฒฉ๋ฆฌ๋๊ณ ์ํธ ์์ฉ์ ์ธ ํ๊ฒฝ์ ์ ๊ณตํ๋ ์คํ ์์ค ๋๊ตฌ์ ๋๋ค. ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๊ฐ๋ฐ(CDD)์ ์ด์งํ๊ณ ํ์ด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ๋ฌธ์ํ๊ฐ ์ ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋์์๋ ์คํ ๋ฆฌ๋ถ์ ์ด์ , ๊ธฐ๋ฅ ๋ฐ ์ค์ ์ ์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ณ , ์ ์ธ๊ณ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๊ฒ ์ด๋ป๊ฒ ํ์ ์ค์ด์ค ์ ์๋์ง์ ์ค์ ์ ๋ ๊ฒ์ ๋๋ค.
์คํ ๋ฆฌ๋ถ์ด๋ ๋ฌด์์ธ๊ฐ?
์คํ ๋ฆฌ๋ถ์ ๋ฉ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ธ๋ถ์์ UI ์ปดํฌ๋ํธ๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ๊ฐ๋ฐํ ์ ์๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ์ฆ, ์ฃผ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ณต์ก์ฑ ์์ด ๋จ์ผ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ถํ๊ณ ํ ์คํธํ๋ ๋ฐ ์ง์คํ ์ ์์ต๋๋ค. ์ปดํฌ๋ํธ์ ๋ํ ๋ค์ํ ์ํ(๋๋ "์คํ ๋ฆฌ")๋ฅผ ์ ์ํ ์ ์๋ ์๋๋ฐ์ค ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ๋ค์ํ ์กฐ๊ฑด์์ ์ปดํฌ๋ํธ๋ฅผ ์๊ฐํํ๊ณ ์ํธ ์์ฉํ ์ ์์ต๋๋ค.
์คํ ๋ฆฌ๋ถ์ ์ฃผ์ ๊ธฐ๋ฅ:
- ์ปดํฌ๋ํธ ๊ฒฉ๋ฆฌ: ์ ํ๋ฆฌ์ผ์ด์ ์ข ์์ฑ ์์ด ๊ฒฉ๋ฆฌ๋ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ฐํฉ๋๋ค.
- ์ํธ ์์ฉ์ ์ธ ์คํ ๋ฆฌ: "์คํ ๋ฆฌ"๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ์ ๋ํ ๋ค์ํ ์ํ์ ์๋๋ฆฌ์ค๋ฅผ ์ ์ํฉ๋๋ค.
- ์ ๋์จ: ํ ์คํ , ์ ๊ทผ์ฑ, ํ ๋ง ์ง์ ๋ฑ์ ์ํ ํ๋ถํ ์ ๋์จ ์ํ๊ณ๋ก ์คํ ๋ฆฌ๋ถ์ ๊ธฐ๋ฅ์ ํ์ฅํฉ๋๋ค.
- ๋ฌธ์ํ: ์ปดํฌ๋ํธ์ ๋ํ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
- ํ ์คํ : ์๊ฐ์ ํ๊ท, ๋จ์ ๋ฐ ์๋ ํฌ ์๋ ํ ์คํ ์ ์ํ ํ ์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํตํฉํฉ๋๋ค.
- ํ์ : ๋์์ด๋, ์ ํ ๊ด๋ฆฌ์ ๋ฐ ๊ธฐํ ์ดํด ๊ด๊ณ์์ ์คํ ๋ฆฌ๋ถ์ ๊ณต์ ํ์ฌ ํผ๋๋ฐฑ ๋ฐ ํ์ ์ ๋ฐ์ต๋๋ค.
์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ๋ ์ด์ ? ๊ธ๋ก๋ฒ ํ์ ์ํ ์ด์
์คํ ๋ฆฌ๋ถ์ ํนํ ์๋ก ๋ค๋ฅธ ์๊ฐ๋์ ์ง๋ฆฌ์ ์์น์์ ์ด์๋๋ ํ์๊ฒ ์๋ง์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
- ํฅ์๋ ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ฑ: ์ปดํฌ๋ํธ๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ๊ตฌ์ถํจ์ผ๋ก์จ ์ฌ๋ฌ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์์๋ฅผ ๋ง๋ค๋๋ก ์ฅ๋ คํฉ๋๋ค. ์ด๋ ์๋ก ๋ค๋ฅธ ์ง์ญ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ผ๊ด๋ ๋ธ๋๋ ๊ฒฝํ์ ์ ์งํด์ผ ํ๋ ๊ธ๋ก๋ฒ ์กฐ์ง์ ํนํ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ธ๋ก๋ฒ ์ ์ ์๊ฑฐ๋ ํ์ฌ๋ ์คํ ๋ฆฌ๋ถ์์ ํ์คํ๋ "์ ํ ์นด๋" ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ์ฌ ๋ถ๋ฏธ, ์ ๋ฝ ๋ฐ ์์์์ ์น์ฌ์ดํธ์์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํฅ์๋ ํ์ : ์คํ ๋ฆฌ๋ถ์ ๋ชจ๋ UI ์ปดํฌ๋ํธ๋ฅผ ์ํ ์ค์ ํ๋ธ๋ฅผ ์ ๊ณตํ์ฌ ๋์์ด๋, ๊ฐ๋ฐ์ ๋ฐ ์ ํ ๊ด๋ฆฌ์๊ฐ UI์์ ์ฝ๊ฒ ํ์ ํ ์ ์๋๋ก ํฉ๋๋ค. ๋์์ด๋๋ ์ปดํฌ๋ํธ๋ฅผ ๊ฒํ ํ๊ณ ์คํ ๋ฆฌ๋ถ ๋ด์์ ์ง์ ํผ๋๋ฐฑ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์ปดํฌ๋ํธ๋ฅผ ํ์ํ๊ณ ์ค๋ณต ๋ ธ๋ ฅ์ ํผํ ์ ์์ต๋๋ค. ์ ํ ๊ด๋ฆฌ์๋ ์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ์ฌ UI๋ฅผ ์๊ฐํํ๊ณ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ปค๋ฎค๋์ผ์ด์ ์ด ๊ฐ์ํ๋๊ณ ์คํด์ ์ํ์ด ์ค์ด๋ค๋ฉฐ ์ด๋ ์๊ฒฉ ํ์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๋ ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ: ์ปดํฌ๋ํธ๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ๋ฐ๋ณตํ ์ ์์ต๋๋ค. ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ก์ฑ์ ํ์ํ์ง ์๊ณ ๋จ์ผ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ถํ๊ณ ํ ์คํธํ๋ ๋ฐ ์ง์คํ ์ ์์ต๋๋ค. ์ด๋ ๋ ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ์ ๋ ๋น ๋ฅธ ์์ฅ ์ถ์ ์๊ฐ์ผ๋ก ์ด์ด์ง๋ฉฐ, ์ด๋ ์ค๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ๋น์ฆ๋์ค ํ๊ฒฝ์์ ํ์์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ธ๋ ํ์ ์คํ ๋ฆฌ๋ถ์์ ํน์ ๊ธฐ๋ฅ ์ปดํฌ๋ํธ ๊ฐ๋ฐ ์์ ์ ์ํํ๋ ๋์ ๋ฏธ๊ตญ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉํ๋ ์์ ์ ์ํํ์ฌ ์ง์ฐ์ ์ต์ํํ ์ ์์ต๋๋ค.
- ๋ ๋์ ๋ฌธ์ํ: ์คํ ๋ฆฌ๋ถ์ ์ปดํฌ๋ํธ์ ๋ํ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ์๋ก์ด ํ ๊ตฌ์ฑ์์ ์จ๋ณด๋ฉํ๊ฑฐ๋ ์ต์ํ์ง ์์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๊ฐ๋ฐ์์๊ฒ ํนํ ์ ์ฉํฉ๋๋ค. ๋ช ํํ๊ณ ์ผ๊ด๋ ๋ฌธ์๋ฅผ ํตํด ์์น๋ ๊ฒฝํ ์์ค์ ๊ด๊ณ์์ด ๋ชจ๋ ์ฌ๋์ด ๊ฐ์ ํ์ด์ง์ ์๋๋ก ํฉ๋๋ค.
- ํฅ์๋ ํ ์คํธ ๊ฐ๋ฅ์ฑ: ์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ์ฝ๊ฒ ํ ์คํธํ ์ ์์ต๋๋ค. ์คํ ๋ฆฌ๋ถ ์ ๋์จ์ ์ฌ์ฉํ์ฌ ์๊ฐ์ ํ๊ท ํ ์คํ , ๋จ์ ํ ์คํ ๋ฐ ์๋ ํฌ ์๋ ํ ์คํ ์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ณ ํ๊ท์ ๊ฐํ์ง ํ์ธํ ์ ์์ต๋๋ค. ๋ถ์ฐ๋ QA ํ์ ์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ์ฅ์น์์ ์ผ๊ด๋ ํ ์คํ ์ ์ํํ์ฌ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๊ณ ํ์ง ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
- ํฅ์๋ ๋์์ธ ์ผ๊ด์ฑ: ์คํ ๋ฆฌ๋ถ์ ๋ชจ๋ UI ์ปดํฌ๋ํธ์ ๋ํ ์๊ฐ์ ์ฐธ์กฐ๋ฅผ ์ ๊ณตํ์ฌ ๋์์ธ ์ผ๊ด์ฑ์ ๋์ ๋๋ค. ์ด๋ UI๊ฐ ์์ง๋ ฅ ์๊ณ ๋์์ธ ์์คํ ์ ์ค์ํ๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๋ซํผ์์ ์ผ๊ด๋ ๋์์ธ์ ํตํฉ๋ ๋ธ๋๋ ์์ด๋ดํฐํฐ๋ฅผ ๋ง๋ค๋ฉฐ ์ด๋ ๊ธ๋ก๋ฒ ๋ธ๋๋์ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค๊ตญ์ ์ํ์ ์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ฐ์ผ ์ฑ, ์น์ฌ์ดํธ ๋ฐ ATM ์ธํฐํ์ด์ค๊ฐ ๋ชจ๋ ๋์ผํ ๋์์ธ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
- ์ค์ด๋ ๋ฒ๊ทธ ๋ฐ ํ๊ท: ์ปดํฌ๋ํธ๋ฅผ ๊ฒฉ๋ฆฌํ๊ณ ํฌ๊ด์ ์ธ ํ ์คํธ๋ฅผ ์์ฑํจ์ผ๋ก์จ ์คํ ๋ฆฌ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฒ๊ทธ ๋ฐ ํ๊ท ์๋ฅผ ์ค์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ ๊ณ ๊ฐ ๋ง์กฑ๋์ ์ถฉ์ฑ๋๋ฅผ ์ ์งํ๋ ๋ฐ ์ค์ํ ๋ณด๋ค ์์ ์ ์ด๊ณ ์์ ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ผ๋ก ์ด์ด์ง๋๋ค.
์คํ ๋ฆฌ๋ถ ์ค์
์คํ ๋ฆฌ๋ถ ์ค์ ์ ๊ฐ๋จํ๋ฉฐ ๋ช ๊ฐ์ง ๊ฐ๋จํ ๋ช ๋ น์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ๋ค์ ๋จ๊ณ์์๋ ํ๋ก์ ํธ ํ๋ ์์ํฌ์ ๋ฐ๋ผ ์ฝ๊ฐ ๋ค๋ฅผ ์ ์๋ ์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํฉ๋๋ค.
- ์คํ ๋ฆฌ๋ถ ์ด๊ธฐํ: ํฐ๋ฏธ๋์์ ํ๋ก์ ํธ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
npx storybook init
์ด ๋ช
๋ น์ ํ๋ก์ ํธ์ ํ๋ ์์ํฌ(์: React, Vue, Angular)๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ํ์ํ ์ข
์์ฑ์ ์ค์นํฉ๋๋ค. ๋ํ ๊ตฌ์ฑ ํ์ผ๊ณผ ๋ช ๊ฐ์ง ์์ ์คํ ๋ฆฌ๊ฐ ์๋ .storybook ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
- ์คํ ๋ฆฌ๋ถ ์์: ์ค์น๊ฐ ์๋ฃ๋๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํ์ฌ ์คํ ๋ฆฌ๋ถ์ ์์ํ ์ ์์ต๋๋ค.
npm run storybook ๋๋ yarn storybook
๊ทธ๋ฌ๋ฉด ์คํ ๋ฆฌ๋ถ ์๋ฒ๊ฐ ์์๋๊ณ ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฆฝ๋๋ค. ์ด๊ธฐํ ํ๋ก์ธ์ค ์ค์ ์์ฑ๋ ์์ ์คํ ๋ฆฌ๊ฐ ํ์๋ฉ๋๋ค.
- ๊ตฌ์ฑ ์ฌ์ฉ์ ์ง์ (์ ํ ์ฌํญ):
.storybook๋๋ ํ ๋ฆฌ์๋ ์คํ ๋ฆฌ๋ถ์ ํ๋ก์ ํธ์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ์ฌ์ฉ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ตฌ์ฑ ํ์ผ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์คํ ๋ฆฌ ์์๋ฅผ ๊ตฌ์ฑํ๊ณ , ์ฌ์ฉ์ ์ง์ ํ ๋ง๋ฅผ ์ถ๊ฐํ๊ณ , ์ ๋์จ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์คํ ๋ฆฌ ๋ง๋ค๊ธฐ
"์คํ ๋ฆฌ"๋ ์ปดํฌ๋ํธ์ ํน์ ์ํ ๋๋ ์๋๋ฆฌ์ค๋ฅผ ๋ํ๋ ๋๋ค. ํน์ props๋ก ๋ ๋๋ง๋ ์ปดํฌ๋ํธ๋ฅผ ๋ฐํํ๋ ํจ์์ ๋๋ค. ๋ค์์ React ๋ฒํผ ์ปดํฌ๋ํธ์ ๋ํ ๊ฐ๋จํ ์คํ ๋ฆฌ์ ์์ ๋๋ค.
// src/components/Button.stories.js
import React from 'react';
import { Button } from './Button';
export default {
title: 'Components/Button',
component: Button,
};
const Template = (args) => <Button {...args} />;
export const Primary = Template.bind({});
Primary.args = {
primary: true,
label: 'Primary Button',
};
export const Secondary = Template.bind({});
Secondary.args = {
label: 'Secondary Button',
};
์ด ์์์:
title์ ์คํ ๋ฆฌ๋ถ UI์์ ์ปดํฌ๋ํธ์ ๋ฒ์ฃผ์ ์ด๋ฆ์ ์ ์ํฉ๋๋ค.component๋ ์คํ ๋ฆฌ๊ฐ ์ ์ฉ๋๋ React ์ปดํฌ๋ํธ๋ฅผ ์ง์ ํฉ๋๋ค.Template์ ์ ๊ณต๋ ์ธ์๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ ํจ์์ ๋๋ค.Primary๋ฐSecondary๋ ๊ฐ๋ณ ์คํ ๋ฆฌ์ด๋ฉฐ, ๊ฐ ์คํ ๋ฆฌ๋ ๋ฒํผ ์ปดํฌ๋ํธ์ ๋ค๋ฅธ ์ํ๋ฅผ ๋ํ๋ ๋๋ค.Primary.args๋ "Primary" ์คํ ๋ฆฌ์์ ๋ฒํผ ์ปดํฌ๋ํธ์ ์ ๋ฌ๋ props๋ฅผ ์ ์ํฉ๋๋ค.
๊ธ๋ก๋ฒ ํ์ ์ํ ํ์ ์คํ ๋ฆฌ๋ถ ์ ๋์จ
์คํ ๋ฆฌ๋ถ์ ์ ๋์จ ์ํ๊ณ๋ ์ฃผ์ ๊ฐ์ ์ผ๋ก ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ํ์ ์ ํฅ์์ํค๋ ๋ค์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ค์์ ๊ธ๋ก๋ฒ ํ์ ์ํ ๋ช ๊ฐ์ง ํ์ ์ ๋์จ์ ๋๋ค.
- @storybook/addon-essentials: ์ด ์ ๋์จ ๋ฒ๋ค์๋ ์ปจํธ๋กค(๋ํํ props ํธ์ง์ฉ), ๋ฌธ์(์๋ ๋ฌธ์ํ์ฉ), ์ก์ (์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ ๋ก๊น ์ฉ) ๋ฐ ๋ทฐํฌํธ(๋ฐ์ํ ๋์์ธ ํ ์คํ ์ฉ)์ ๊ฐ์ ํ์ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ต๋๋ค.
- @storybook/addon-a11y: ์ด ์ ๋์จ์ ์ปดํฌ๋ํธ์ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ ๊ทผ์ฑ ์๋ฐ ์ฌํญ์ ์๋์ผ๋ก ํ์ธํ๊ณ ์์ ์ ๋ํ ์ ์์ ์ ๊ณตํฉ๋๋ค. ์ด๋ WCAG์ ๊ฐ์ ํ์ค์ ์ค์ํ๋ฉด์ ์ ์ธ๊ณ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ UI์ ์ก์ธ์คํ ์ ์๋๋ก ํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- @storybook/addon-storysource: ์ด ์ ๋์จ์ ์คํ ๋ฆฌ์ ์์ค ์ฝ๋๋ฅผ ํ์ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ปดํฌ๋ํธ๊ฐ ๊ตฌํ๋๋ ๋ฐฉ์์ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ํฉ๋๋ค.
- @storybook/addon-jest: ์ด ์ ๋์จ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ JavaScript ํ ์คํ ํ๋ ์์ํฌ์ธ Jest๋ฅผ ์คํ ๋ฆฌ๋ถ๊ณผ ํตํฉํฉ๋๋ค. ์คํ ๋ฆฌ๋ถ ๋ด์์ ์ง์ ๋จ์ ํ ์คํธ๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
- @storybook/addon-interactions: ์คํ ๋ฆฌ ๋ด์์ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ํ ์คํธํ ์ ์๋๋ก ํ์ฌ ๋ณต์กํ ์ปดํฌ๋ํธ ๋์์ ๊ฒ์ฆํ๋ ๋ฐ ์ด์์ ์ ๋๋ค.
- storybook-addon-themes: ์ฌ๋ฌ ํ ๋ง ๊ฐ ์ ํ์ ํ์ฉํ์ฌ ๋ค์ํ ๋ธ๋๋ฉ ๋๋ ์ง์ญ ์คํ์ผ์ ์ง์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ์ ๋๋ค.
- Storybook Deployer: ์คํ ๋ฆฌ๋ถ์ ์ ์ ํธ์คํ ์ ๊ณต์ ์ฒด์ ๋ฐฐํฌํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ์ฌ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ธ๊ณ์ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋๋ก ํฉ๋๋ค. Netlify ๋๋ Vercel๊ณผ ๊ฐ์ ์๋น์ค๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํธ์ํ ๋๋ง๋ค ์คํ ๋ฆฌ๋ถ์ ์๋์ผ๋ก ๋ฐฐํฌํ ์ ์์ต๋๋ค.
- Chromatic: ์คํ ๋ฆฌ๋ถ ์ ์์๊ฐ ๊ตฌ์ถํ ์์ ์ฉ ์๋น์ค์ธ Chromatic์ ์๊ฐ์ ํ๊ท ํ ์คํ , ํ์ ๋๊ตฌ ๋ฐ ์๋ํ๋ ๋ฐฐํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. UI๊ฐ ์๋ก ๋ค๋ฅธ ํ๊ฒฝ๊ณผ ๋ธ๋ผ์ฐ์ ์์ ์ผ๊ด์ฑ์ ์ ์งํ๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. Chromatic์ UI ๊ฒํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํ ๊ตฌ์ฑ์์ด ์๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ง์ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ฌ ๊ฒํ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๊ณ ํ์ ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์คํ ๋ฆฌ๋ถ์์ ์ปดํฌ๋ํธ ํ ์คํ
์คํ ๋ฆฌ๋ถ์ ์ปดํฌ๋ํธ๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ํ ์คํ ํ๊ธฐ์ ํ๋ฅญํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ์คํ ๋ฆฌ๋ถ ์ ๋์จ์ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ ํ์ ํ ์คํ ์ ์ํํ ์ ์์ต๋๋ค.
- ์๊ฐ์ ํ๊ท ํ ์คํ : ์๊ฐ์ ํ๊ท ํ ์คํ ์ ์ปดํฌ๋ํธ์ ์คํฌ๋ฆฐ์ท์ ๊ธฐ์ค์ ๊ณผ ๋น๊ตํ์ฌ ์๋ํ์ง ์์ ์๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํฉ๋๋ค. ์ด๋ UI๊ฐ ์๋ก ๋ค๋ฅธ ํ๊ฒฝ๊ณผ ๋ธ๋ผ์ฐ์ ์์ ์ผ๊ด์ฑ์ ์ ์งํ๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. Chromatic ๋๋ Percy์ ๊ฐ์ ๋๊ตฌ๋ ์คํ ๋ฆฌ๋ถ๊ณผ ์ํํ๊ฒ ํตํฉ๋์ด ์๊ฐ์ ํ๊ท ํ ์คํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋จ์ ํ
์คํ
: ๋จ์ ํ
์คํ
์ ๊ฐ๋ณ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํฉ๋๋ค. Jest ๋๋ ๊ธฐํ ํ
์คํ
ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ์ ๋ํ ๋จ์ ํ
์คํธ๋ฅผ ์์ฑํ๊ณ
@storybook/addon-jest์ ๋์จ์ ์ฌ์ฉํ์ฌ ์คํ ๋ฆฌ๋ถ ๋ด์์ ์คํํ ์ ์์ต๋๋ค. - ์ ๊ทผ์ฑ ํ
์คํ
: ์ ๊ทผ์ฑ ํ
์คํ
์ ์ปดํฌ๋ํธ๊ฐ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
@storybook/addon-a11y์ ๋์จ์ ์ผ๋ฐ์ ์ธ ์ ๊ทผ์ฑ ์๋ฐ ์ฌํญ์ ์๋์ผ๋ก ํ์ธํ๊ณ ์์ ์ ๋ํ ์ ์์ ์ ๊ณตํฉ๋๋ค. - ์ํธ ์์ฉ ํ ์คํ : "@storybook/addon-interactions" ์ ๋์จ์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๊ฐ ์ฌ์ฉ์ ์ํธ ์์ฉ(ํด๋ฆญ, ํธ๋ฒ, ์์ ์ ์ถ)์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ตํ๋์ง ํ์ธํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์๋๋ฆฌ์ค๋ฅผ ๋ง๋ค๊ณ ์ด๋ฒคํธ๊ฐ ์๋ํ ๋์์ ํธ๋ฆฌ๊ฑฐํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ํ์ ์ํ ์ํฌํ๋ก ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
๊ธ๋ก๋ฒ ํ์ ์ํ ์คํ ๋ฆฌ๋ถ์ ์ด์ ์ ๊ทน๋ํํ๋ ค๋ฉด ๋ค์ ์ํฌํ๋ก ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
- ๊ณต์ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ถ: ๋ชจ๋ UI ์ปดํฌ๋ํธ์ ๋ํ ์ค์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด ๋ชจ๋ ํ ๊ตฌ์ฑ์์ด ์ฝ๊ฒ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค. Bit ๋๋ Lerna์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ์ปดํฌ๋ํธ ํจํค์ง๊ฐ ์๋ ๋ชจ๋ ธ๋ ํฌ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ช
ํํ ๋ช
๋ช
๊ท์น ์ ์: ์ปดํฌ๋ํธ, ์คํ ๋ฆฌ ๋ฐ props์ ๋ํ ์ผ๊ด๋ ๋ช
๋ช
๊ท์น์ ์ค์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์ฝ๊ฒ ์ฐพ๊ณ ์ดํดํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ชจ๋ ์ปดํฌ๋ํธ ์ด๋ฆ์ ๋ํด ์ผ๊ด๋ ์ ๋์ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค(์:
MyCompanyButton). - ํฌ๊ด์ ์ธ ๋ฌธ์ ์์ฑ: ๊ฐ ์ปดํฌ๋ํธ์ ๋ชฉ์ , ์ฌ์ฉ๋ฒ, props ๋ฐ ์์ ๋ฅผ ํฌํจํ์ฌ ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์ฒ ์ ํ ๋ฌธ์ํํฉ๋๋ค. ์คํ ๋ฆฌ๋ถ์ ๋ฌธ์ ์ ๋์จ์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ์ JSDoc ์ฃผ์์์ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
- ๋์์ธ ์์คํ ๊ตฌํ: ๋์์ธ ์์คํ ์ UI์ ๋ํ ์ผ๋ จ์ ์ง์นจ๊ณผ ํ์ค์ ์ ๊ณตํฉ๋๋ค. UI๊ฐ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๋ซํผ์์ ์ผ๊ด๋๊ณ ์์ง๋ ฅ ์๋์ง ํ์ธํฉ๋๋ค. ์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ์ฌ ๋์์ธ ์์คํ ์ ๋ฌธ์ํํ๊ณ ์ ์ํ ์ ์์ต๋๋ค.
- ๋ฒ์ ์ ์ด ์ฌ์ฉ: ์คํ ๋ฆฌ๋ถ ๊ตฌ์ฑ ๋ฐ ์คํ ๋ฆฌ๋ฅผ Git๊ณผ ๊ฐ์ ๋ฒ์ ์ ์ด ์์คํ ์ ์ ์ฅํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ , ๋ค๋ฅธ ๊ฐ๋ฐ์์ ํ์ ํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ด์ ๋ฒ์ ์ผ๋ก ๋๋๋ฆด ์ ์์ต๋๋ค.
- ๋ฐฐํฌ ์๋ํ: ์คํ ๋ฆฌ๋ถ ๋ฐฐํฌ๋ฅผ ์ ์ ํธ์คํ ์ ๊ณต์ ์ฒด์ ์๋ํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๋จธ์ง ํ๊ณผ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์์ต๋๋ค. Jenkins, CircleCI ๋๋ GitHub Actions์ ๊ฐ์ CI/CD ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํฉ๋๋ค.
- ์ ๊ธฐ์ ์ธ ์ฝ๋ ๊ฒํ ์ํ: ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ํ์ํ ํ์ค์ ์ถฉ์กฑํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ฝ๋ ๊ฒํ ํ๋ก์ธ์ค๋ฅผ ๊ตฌํํฉ๋๋ค. ํ ์์ฒญ์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฉ์ธ ๋ธ๋์น์ ๋ณํฉ๋๊ธฐ ์ ์ ๊ฒํ ํฉ๋๋ค.
- ์ด๋ฆฐ ์ปค๋ฎค๋์ผ์ด์ ์ฅ๋ ค: ๋์์ด๋, ๊ฐ๋ฐ์ ๋ฐ ์ ํ ๊ด๋ฆฌ์ ๊ฐ์ ์ด๋ฆฐ ์ปค๋ฎค๋์ผ์ด์ ๊ณผ ํ์ ์ ์ฅ๋ คํฉ๋๋ค. Slack ๋๋ Microsoft Teams์ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋ฎค๋์ผ์ด์ ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. UI์ ๋ํด ๋ ผ์ํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ๊ธฐ์ ์ธ ํ์๋ฅผ ์์ฝํฉ๋๋ค.
- ํ์งํ ๊ณ ๋ ค: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ง์ํ๋ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ๋ฅผ ํ์งํํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ์ธ์ด ๋ฐ ์ง์ญ์ ๋ํ ์คํ ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ๋ก์ผ์ผ์์ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋ฉ๋๋ค.
- ํ ๋ง ์ง์ ๊ท์น ์ค์ : ๋ค์ํ ์๊ฐ์ ํ ๋ง(์: ๋ฐ์/์ด๋์ด ๋ชจ๋, ๋ธ๋๋๋ณ ์คํ์ผ)๊ฐ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์คํ ๋ฆฌ๋ถ ๋ด์์ ํ ๋ง๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ช ํํ ๊ท์น์ ์ค์ ํฉ๋๋ค. "storybook-addon-themes"์ ๊ฐ์ ์ ๋์จ์ ์ฌ์ฉํ์ฌ ๋ค์ํ ํ ๋ง์์ ์ปดํฌ๋ํธ๋ฅผ ๋ฏธ๋ฆฌ ๋ด ๋๋ค.
์คํ ๋ฆฌ๋ถ ๋ฐ ๋์์ธ ์์คํ
์คํ ๋ฆฌ๋ถ์ ๋์์ธ ์์คํ ์ ๊ตฌ์ถํ๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๋์์ธ ์์คํ ์ ์กฐ์ง์ ๋ชจ๋ ๋์งํธ ์ ํ์์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ, ์คํ์ผ ๋ฐ ์ง์นจ ๋ชจ์์ ๋๋ค. ์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- ์ปดํฌ๋ํธ ๋ฌธ์ํ: ๋์์ธ ์์คํ ์ ๊ฐ ์ปดํฌ๋ํธ์ ๋ชฉ์ , ์ฌ์ฉ๋ฒ ๋ฐ ๋ณํ์ ๋ช ํํ๊ฒ ์ ์ํฉ๋๋ค.
- ์ปดํฌ๋ํธ ์ํ ์ ์: ๋ค์ํ ์กฐ๊ฑด(์: ํธ๋ฒ, ํฌ์ปค์ค, ๋นํ์ฑํ๋จ)์์ ์ปดํฌ๋ํธ๊ฐ ์๋ํ๋ ๋ฐฉ์์ ๋ณด์ฌ์ค๋๋ค.
- ์ ๊ทผ์ฑ ํ ์คํธ: ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ์ ๊ทผ์ฑ ํ์ค์ ์ถฉ์กฑํ๋์ง ํ์ธํฉ๋๋ค.
- ๋์์ธ ํ์ : ๋์์ด๋ ๋ฐ ์ดํด ๊ด๊ณ์์ ์คํ ๋ฆฌ๋ถ์ ๊ณต์ ํ์ฌ ํผ๋๋ฐฑ ๋ฐ ์น์ธ์ ๋ฐ์ต๋๋ค.
์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ์ฌ ๋์์ธ ์์คํ ์ ๊ฐ๋ฐํ๊ณ ๋ฌธ์ํํจ์ผ๋ก์จ UI๊ฐ ์ผ๊ด๋๊ณ ์ก์ธ์ค ๊ฐ๋ฅํ๋ฉฐ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด์ง ํ์ธํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
์คํ ๋ฆฌ๋ถ์ ์๋ง์ ์ด์ ์ ์ ๊ณตํ์ง๋ง ํ์ ๊ตฌํ ์ค์ ์ด๋ ค์์ ๊ฒช์ ์ ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
- ์ฑ๋ฅ ๋ฌธ์ : ์ปดํฌ๋ํธ๊ฐ ๋ง์ ๋๊ท๋ชจ ์คํ ๋ฆฌ๋ถ์ ๋๋ ค์ง ์ ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ: ์คํ ๋ฆฌ๋ถ ๊ตฌ์ฑ์ ์ฝ๋ ๋ถํ ํ๊ณ , ์ปดํฌ๋ํธ๋ฅผ ์ง์ฐ ๋ก๋ํ๊ณ , ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํฉ๋๋ค.
- ๊ตฌ์ฑ ๋ณต์ก์ฑ: ์ฌ๋ฌ ์ ๋์จ๊ณผ ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉ์ ์ง์ ํ๋ ๊ฒ์ ๋ณต์กํ ์ ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ: ํ์ ์ฌํญ๋ถํฐ ์์ํ์ฌ ํ์์ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ๋ณต์ก์ฑ์ ์ถ๊ฐํฉ๋๋ค. ๊ณต์ ๋ฌธ์ ๋ฐ ์ปค๋ฎค๋ํฐ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
- ๊ธฐ์กด ํ๋ก์ ํธ์์ ํตํฉ: ์คํ ๋ฆฌ๋ถ์ ๊ธฐ์กด ํ๋ก์ ํธ์ ํตํฉํ๋ ค๋ฉด ์ผ๋ถ ๋ฆฌํฉํ ๋ง์ด ํ์ํ ์ ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ: ์คํ ๋ฆฌ๋ถ์์ ์ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ผ๋ก ์์ํ์ฌ ๊ธฐ์กด ์ปดํฌ๋ํธ๋ฅผ ์ ์ง์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค.
- ์คํ ๋ฆฌ๋ถ์ ์ต์ ์ํ๋ก ์ ์ง: ์คํ ๋ฆฌ๋ถ์ ๋์์์ด ์งํํ๊ณ ์์ผ๋ฉฐ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๋ฒ๊ทธ ์์ ์ฌํญ์ ํ์ฉํ๋ ค๋ฉด ์คํ ๋ฆฌ๋ถ ๋ฒ์ ์ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ: npm ๋๋ yarn์ ์ฌ์ฉํ์ฌ ์คํ ๋ฆฌ๋ถ ์ข ์์ฑ์ ์ ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ปดํฌ๋ํธ ๋ณต์ก์ฑ: ๋ณต์กํ ์ปดํฌ๋ํธ๋ ์คํ ๋ฆฌ๋ถ์์ ํจ๊ณผ์ ์ผ๋ก ํํํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ: ๋ณต์กํ ์ปดํฌ๋ํธ๋ฅผ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ํ์ ์ปดํฌ๋ํธ๋ก ๋๋๋๋ค. ์คํ ๋ฆฌ๋ถ์ ์ปดํฌ์ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํ์ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋ณต์กํ ์๋๋ฆฌ์ค๋ก ๊ฒฐํฉํฉ๋๋ค.
์คํ ๋ฆฌ๋ถ์ ๋์
์คํ ๋ฆฌ๋ถ์ ์ปดํฌ๋ํธ ๊ฐ๋ฐ ํ๊ฒฝ ๊ณต๊ฐ์์ ์ง๋ฐฐ์ ์ธ ํ๋ ์ด์ด์ด์ง๋ง ๊ฐ๊ฐ ๊ณ ์ ํ ๊ฐ์ ๊ณผ ์ฝ์ ์ ๊ฐ์ง ์ฌ๋ฌ ๋์์ด ์์ต๋๋ค.
- Bit: Bit(bit.dev)๋ ํ๋ก์ ํธ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๊ณต์ ํ๊ณ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ์ปดํฌ๋ํธ ํ๋ธ์ ๋๋ค. ์คํ ๋ฆฌ๋ถ๊ณผ ๋ฌ๋ฆฌ Bit๋ ์๋ก ๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๊ณต์ ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ์ปดํฌ๋ํธ ๋ฒ์ ๊ด๋ฆฌ, ์ข ์์ฑ ๊ด๋ฆฌ ๋ฐ ์ปดํฌ๋ํธ ๋ง์ผํ๋ ์ด์ค์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. Bit๋ ์คํ ๋ฆฌ๋ถ๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ํฌ๊ด์ ์ธ ์ปดํฌ๋ํธ ๊ฐ๋ฐ ๋ฐ ๊ณต์ ์๋ฃจ์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- Styleguidist: React Styleguidist๋ React ์ปดํฌ๋ํธ์ฉ์ผ๋ก ํน๋ณํ ์ค๊ณ๋ ์ปดํฌ๋ํธ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋๋ค. ์ปดํฌ๋ํธ์ JSDoc ์ฃผ์์์ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ๋ผ์ด๋ธ ๋ฆฌ๋ก๋ฉ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. Styleguidist๋ ์ฃผ๋ก React ์ปดํฌ๋ํธ์ ์ค์ ์ ๋ ํ๋ก์ ํธ์ ์ ํฉํ ์ต์ ์ ๋๋ค.
- Docz: Docz๋ ์ปดํฌ๋ํธ์ ๋ํ ๋ฌธ์๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฌธ์ ์์ฑ๊ธฐ์ ๋๋ค. Markdown ๋ฐ JSX๋ฅผ ์ง์ํ๋ฉฐ ๋ผ์ด๋ธ ์ฝ๋ ์์ ๊ฐ ์๋ ๋ํํ ๋ฌธ์๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- MDX: MDX๋ฅผ ์ฌ์ฉํ๋ฉด Markdown ํ์ผ ๋ด์์ JSX๋ฅผ ์์ฑํ ์ ์์ผ๋ฏ๋ก ์ปดํฌ๋ํธ์ ๋ํ ํ๋ถํ๊ณ ๋ํํ ๋ฌธ์๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. Gatsby ๋๋ Next.js์ ๊ฐ์ ๋๊ตฌ์ ํจ๊ป ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ ๋ฌธ์๊ฐ ์๋ ์ ์ ์น์ฌ์ดํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ ํฉํ ์ ํ์ ํน์ ์๊ตฌ ์ฌํญ๊ณผ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ํ๋ ์์ํฌ ์ง์, ๋ฌธ์ํ ๊ธฐ๋ฅ, ํ ์คํ ๊ธฐ๋ฅ ๋ฐ ํ์ ๋๊ตฌ์ ๊ฐ์ ์์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
๊ฒฐ๋ก
์คํ ๋ฆฌ๋ถ์ ํนํ ๊ธ๋ก๋ฒ ํ์๊ฒ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ํจ์จ์ฑ๊ณผ ํ์ง์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ ๊ฐ๋ ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ ๋๊ตฌ์ ๋๋ค. UI ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ฐ, ํ ์คํ ๋ฐ ์ ์ํ๊ธฐ ์ํ ๊ฒฉ๋ฆฌ๋๊ณ ์ํธ ์์ฉ์ ์ธ ํ๊ฒฝ์ ์ ๊ณตํจ์ผ๋ก์จ ์คํ ๋ฆฌ๋ถ์ ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ , ํ์ ์ ๊ฐํํ๊ณ , ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํ๊ณ , ๋ฌธ์ํ๋ฅผ ๊ฐ์ ํ๊ณ , ํ ์คํธ ๊ฐ๋ฅ์ฑ์ ๋์ด๊ณ , ๋์์ธ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์คํ ๋ฆฌ๋ถ์ ์ฑํํ๊ณ ์ด ๊ฐ์ด๋์ ์์ฝ๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ๊ธ๋ก๋ฒ ํ์ ๋ ๋์ UI๋ฅผ ๋ ๋น ๋ฅด๊ณ ๋ ํฐ ํ์ ์ ๊ฐ์ง๊ณ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ฑํํ๋ฉด ์ํฌํ๋ก๊ฐ ๊ฐ์ํ๋๊ณ ์ง๋ฆฌ์ ๊ฒฝ๊ณ์ ๊ด๊ณ์์ด ๋ชจ๋ ๋์งํธ ์ ํ์์ ์์ง๋ ฅ ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ํต์ฌ์ ์ ๋ต์ ์ผ๋ก ์ฑํํ๊ณ , ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ๊ธฐ๋ฅ์ ์กฐ์ ํ๊ณ , ๊ธฐ์กด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ํตํฉํ์ฌ ์ ์ธ๊ณ ํ ์ ์ฒด์ ์ํํ๊ณ ํ์ ์ ์ธ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ์น ๊ฐ๋ฐ ํ๊ฒฝ์ด ๊ณ์ ์งํํจ์ ๋ฐ๋ผ ์คํ ๋ฆฌ๋ถ์ ๊ณ ํ์ง์ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ถํ๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ๋๊ตฌ๋ก ๋จ์ ์์ต๋๋ค.