๊ธฐ์—ฌ ๐ŸŒธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๐ŸŒบ

๐ŸŒธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๐ŸŒบ

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

์ด ํ”„๋กœ์ ํŠธ๋Š” ์˜ฌ-์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ์Šค(all-contributors) ์‚ฌ์–‘์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์•ˆ๋‚ด ์‚ฌํ•ญ์„ ๋”ฐ๋ผ ๋ฆฌ๋“œ๋ฏธ(readme)์— ๋ณธ์ธ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”! ํ˜น์€ ๊นƒํ—ˆ๋ธŒ ์ด์Šˆ์— ์—ฌ๋Ÿฌ๋ถ„์˜ ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์„ ๋Œ“๊ธ€๋กœ ๋‹ฌ์•„์ฃผ์‹œ๋ฉด ์ €ํฌ๊ฐ€ ์ถ”๊ฐ€ํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ๋ณด๊ด€ ์œ„์น˜

p5.js ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ์ ์ธ ์ €์žฅ์†Œ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:

์ €์žฅ์†Œ ํŒŒ์ผ ๊ตฌ์กฐ

๋ณธ ํ”„๋กœ์ ํŠธ์—” ๋งŽ์€ ํŒŒ์ผ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค! ์—ฌ๊ธฐ์— ๊ทธ ๊ฐ„๋žตํ•œ ๊ฐœ์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ—ท๊ฐˆ๋ฆด ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ €์žฅ์†Œ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์ดํ•ดํ•  ํ•„์š”๊นŒ์ง€๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•œ ์˜์—ญ(์ธ๋ผ์ธ ๋„ํ๋ฉ˜ํ…Œ์ด์…˜์„ ๊ณ ์น˜๋Š” ๊ฒƒ์ด ํ•œ ์˜ˆ๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค)์—์„œ ์‹œ์ž‘ํ•ด์„œ ์ฐจ๊ทผ์ฐจ๊ทผ ๋‹ค๋ฅธ ์˜์—ญ์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๊ฑธ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฃจ์ด์‚ฌ ํŽ˜๋ ˆ์ด๋ผ(Luisa Pereira)์˜ ๊ฐ•์˜ Looking Inside p5.js์— p5.js ์ž‘์—… ํ๋ฆ„์— ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ์™€ ํŒŒ์ผ๋“ค์— ๋Œ€ํ•œ ์†Œ๊ฐœ๋ฅผ ๋™์˜์ƒ์œผ๋กœ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • contributor_docs/์—๋Š” ์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ๋“ค์„ ์œ„ํ•œ ๊ด€๋ก€์™€ ์›์น™์„ ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์„œ๊ฐ€ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • docs/์—๋Š” ์‚ฌ์‹ค ๋ฌธ์„œ๋“ค์ด ์—†์Šต๋‹ˆ๋‹ค! ๋Œ€์‹ , ์˜จ๋ผ์ธ ๋ ˆํผ๋Ÿฐ์Šค ๋งค๋‰ด์–ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๊ฐ€ ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค.
  • lib/์—๋Š” ๋น„์–ด ์žˆ๋Š” ์˜ˆ์‹œ ํŒŒ์ผ๊ณผ p5.js-sound ์ €์žฅ์†Œ์—์„œ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜๋Š” p5.sound ์• ๋“œ์˜จ์ด ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๊ณณ์€ ๋นŒ๋“œ ๋œ p5.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ Grunt๋ฅผ ์ด์šฉํ•ด ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ ๋œ ํ›„์— ์œ„์น˜ํ•˜๊ฒŒ ๋˜๋Š” ๊ณณ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ•  ๋•Œ ๊นƒํ—ˆ๋ธŒ ์ €์žฅ์†Œ๋กœ ๋”ฐ๋กœ ํŒŒ์ผ์„ ์ด๋™์‹œํ‚ฌ ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • src/ ์—๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋Š”๋ฐ, ์ด๋“ค์€ ๋ถ„๋ฆฌ๋œ ๋ชจ๋“ˆ์˜ ํ˜•ํƒœ๋กœ ์ฃผ์ œ๋ณ„๋กœ ์ •๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ p5.js๋ฅผ ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์—ฌ๊ธฐ ์žˆ๋Š” ์†Œ์Šค ์ฝ”๋“œ์— ์ž‘์—…์„ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํด๋” ์•ˆ์—๋Š” ๊ฐ๊ฐ์˜ ๋ฆฌ๋“œ๋ฏธ ํŒŒ์ผ(readme.md)์ด ์žˆ์œผ๋‹ˆ ์ด๋ฅผ ์ฐธ๊ณ ํ•ด ์ž‘์—… ํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
  • tasks/์—๋Š” ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ p5.js๋ฅผ ๋นŒ๋“œ, ๋ฐฐํฌ, ๋ฆด๋ฆฌ์Šค ํ•˜๋Š”๋ฐ์— ๊ด€๋ จ๋œ ์ž๋™ํ™” ๋œ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋“ค์ด ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค.
  • tests/๋Š” ๋‚ด์šฉ ์ˆ˜์ •์ด ์žˆ์–ด๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋ณด์žฅํ•ด์ฃผ๋Š” ์œ ๋‹› ํ…Œ์ŠคํŠธ๋“ค์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • utils/๋Š” ์ €์žฅ์†Œ์— ์œ ์šฉํ•  ์ˆ˜๋„ ์žˆ๋Š” ์ถ”๊ฐ€์ ์ธ ํŒŒ์ผ๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š”๋ฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋ฌด์‹œํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œํ™”

๋ฌธ์„œํ™”๋Š” ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋‚ฎ์€ ํ’ˆ์งˆ์˜ ๋ฌธ์„œํ™”๋Š” ์ƒˆ๋กœ์šด ์ด์šฉ์ž์™€ ์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ๋“ค์˜ ์ง„์ž… ์žฅ๋ฒฝ์„ ๋†’์—ฌ ํ”„๋กœ์ ํŠธ ์ฐธ์—ฌ๋„๋ฅผ ์ €ํ•˜์‹œํ‚ต๋‹ˆ๋‹ค. contributing_documentation.md ํŽ˜์ด์ง€๋Š” ๋ฌธ์„œํ™”๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ์— ๊นŠ์ด ์žˆ๋Š” ๊ฐœ์š”๋ฅผ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. p5.js๋ฅผ ์œ„ํ•œ ๋ฌธ์„œํ™”๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณณ๋“ค์—์„œ ์ฃผ๋กœ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • p5js.org/reference๋Š” ์†Œ์Šค ์ฝ”๋“œ์˜ ์ธ๋ผ์ธ ๋„ํ๋ฉ˜ํ…Œ์ด์…˜์œผ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ…์ŠคํŠธ ์„ค๋ช…, ํŒŒ๋ผ๋ฏธํ„ฐ, ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ์˜ˆ์‹œ ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ์™€ ์ธ๋ผ์ธ ๋„ํ๋ฉ˜ํ…Œ์ด์…˜์„ ๊ธด๋ฐ€ํžˆ ์—ฐ๊ฒฐ์‹œํ‚ค๊ณ , ๋ฌธ์„œํ™”์— ๊ธฐ์—ฌํ•˜๋Š” ๊ฒŒ ์ฝ”๋“œ์— ๊ธฐ์—ฌํ•˜๋Š” ๊ฒƒ ๋งŒํผ์ด๋‚˜ ์ค‘์š”ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ผ์ธ ๋„ํ๋ฉ˜ํ…Œ์ด์…˜์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋นŒ๋“œ ๋˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹ ์‚ฌ์ด์— ๋ฌธ์ œ๊ฐ€ ์—†์Œ์„ ํ™•์‹คํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ผ์ธ ๋„ํ๋ฉ˜ํ…Œ์ด์…˜๊ณผ ์˜ˆ์‹œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•ด์„  inline_documentation.md ํŽ˜์ด์ง€๋ฅผ ์‚ดํŽด๋ณด๋Š” ๊ฑธ๋กœ ์‹œ์ž‘ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
  • p5js.org/examplesํŽ˜์ด์ง€๋Š” p5.js๋ฅผ ํ•™์Šตํ•˜๋Š” ๋ฐ์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด๊ฐ€ ๊ธด ์˜ˆ์‹œ๋“ค์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์„ ์œ„ํ•ด์„œ๋Š” adding_examples.md ํŽ˜์ด์ง€๋ฅผ ์‚ดํŽด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
  • p5js.org/tutorialsํŽ˜์ด์ง€๋Š” p5.js์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐœ๋…์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํŠœํ† ๋ฆฌ์–ผ๋“ค์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” p5.js ์›น์‚ฌ์ดํŠธ์˜ ํŠœํ† ๋ฆฌ์–ผ์— ๋Œ€ํ•œ ํŠœํ† ๋ฆฌ์–ผ์„ ์‚ดํŽด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค!
  • p5.js ์›น์‚ฌ์ดํŠธ๋Š” ํ˜„์žฌ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ตญ์ œํ™”(ํ˜น์€ ์ค„์—ฌ์„œ i18n)๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋ฌธ์„œ๋Š” i18n_contribution ํŽ˜์ด์ง€์—์„œ ๋” ์ž์„ธํžˆ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊นƒํ—ˆ๋ธŒ ์ด์Šˆ ํ๋ฆ„

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

  • ์ด๋ฏธ ์ œ๊ธฐ๋œ ์ด์Šˆ ์ค‘์— ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์€ ๊ฒŒ ์žˆ๋‹ค๋ฉด, ๋‹ค๋ฅธ ์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ๋“ค์ด ์ง„ํ–‰ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•˜๊ณ  ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ์ด์Šˆ์— ๋Œ“๊ธ€์„ ๋‹ฌ์•„์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

  • ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค๋ฉด, p5.js ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์— ํ’€ ๋ฆฌํ€˜์ŠคํŠธ(PR)๋ฅผ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค. PR์˜ ์„ค๋ช… ์นธ์— โ€œresolves #XXXXโ€(#XXXX๋ฅผ ํ•ด๊ฒฐํ•จ)๋ผ๊ณ  ์จ์„œ ํ•ด๊ฒฐํ•œ ์ด์Šˆ๋ฅผ ํƒœ๊ทธํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด PR์ด ํ•ด๋‹น ์ด์Šˆ๋ฅผ ๋‹ค๋ฃจ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•˜์ง€๋Š” ๋ชปํ•˜๋Š” ๊ฑฐ๋ผ๋ฉด(์ฆ‰, ์—ฌ๋Ÿฌ๋ถ„์˜ PR์ด merge ๋˜๊ณ  ๋‚˜์„œ๋„ ์ด์Šˆ๊ฐ€ ์—ด๋ ค ์žˆ์–ด์•ผ ํ•œ๋‹ค๋ฉด), โ€œaddresses #XXXXโ€(#XXXX๋ฅผ ๋‹ค๋ฃธ)์ด๋ผ๊ณ  ์จ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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

  • ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ๋ฅผ ์žฌํ˜„ํ•˜๊ฑฐ๋‚˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ ํ˜น์€ ์žฌํ˜„ ์•ˆ๋‚ด์„œ์™€ ๊ฐ™์€ ์ฃผ์š” ์ •๋ณด๋“ค์„ ์š”์ฒญํ•˜๋Š” ๋“ฑ ์ด์Šˆ๋“ค์„ ์„ ๋ณ„ํ•˜๋Š” ์ž‘์—…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ์— ๊ฐ€์žฅ ์šฉ์ดํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” ์ฝ”๋“œ ํŠธ๋ฆฌ์•„์ง€(CodeTriage)์—์„œ p5.js๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค. Open Source Helpers

  • organization.md ํŒŒ์ผ์€ ์ด์Šˆ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ฒด๊ณ„ํ™” ๋  ์ˆ˜ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ์— ๋Œ€ํ•œ ์˜์‚ฌ๊ฒฐ์ • ๊ณผ์ •์€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€์— ๋Œ€ํ•œ ๋Œ€๋žต์ ์ธ ๊ฐœ์š”๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์–ผ๋งˆ๋“ ์ง€ ๊ธฐ์—ฌํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๊ณผ์ •

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

์•„๋ž˜ ์ ˆ์ฐจ๋Š” ์ฝ”๋”ฉ ํŠธ๋ ˆ์ธ(The Coding Train)์˜ ๋น„๋””์˜ค ๊ฐ•์˜์—์„œ๋„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.๐Ÿš‹๐ŸŒˆ

  1. node.js๋ฅผ ์„ค์น˜ํ•˜์„ธ์š”. node.js๋ฅผ ์„ค์น˜ํ•˜๋ฉด ์ž๋™์ ์œผ๋กœ npm ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋„ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

  2. ๋ณธ์ธ์˜ ๊นƒํ—ˆ๋ธŒ ๊ณ„์ •์— p5.js ์ €์žฅ์†Œ๋ฅผ ํฌํฌ ํ•˜์‹ญ์‹œ์˜ค.

  3. ํฌํฌ ๋œ ๊นƒํ—ˆ๋ธŒ ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์— ํด๋ก  ํ•˜์‹ญ์‹œ์˜ค.

    $ git clone https://github.com/YOUR_USERNAME/p5.js.git
  4. ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ๋“ค์–ด๊ฐ€ npm์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋””ํŽœ๋˜์‹œ๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

    $ cd p5.js
    $ npm ci
  5. ์ด์ œ Grunt๊ฐ€ ์„ค์น˜๋˜์—ˆ์„ํ…๋ฐ, ์†Œ์Šค ์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    $ npm run grunt

๋งŒ์•ฝ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํŒŒ์ผ์„ ๊ณ„์†ํ•ด์„œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ์‚ฌ์ „์— ์ˆ˜๋™์œผ๋กœ ์ผ์ผ์ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ์†Œ์Šค ํŒŒ์ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž๋™์ ์œผ๋กœ ๋‹ค์‹œ ๋นŒ๋“œํ•ด์ค„ ์ˆ˜ ์žˆ๋„๋ก npm run dev๋ฅผ ์‹คํ–‰ ํ•˜๋Š” ๊ฒŒ ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ๋กœ์ปฌ์—์„œ ์ฝ”๋“œ ๋ฒ ์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ , ๊นƒ(Git)์œผ๋กœ ์ปค๋ฐ‹ ํ•˜์‹ญ์‹œ์˜ค.

    $ git add -u
    $ git commit -m "YOUR COMMIT MESSAGE"
  2. ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๊ฐ€ ์—†์Œ์„ ํ™•์ธํ•˜๊ณ , ๊ณ ์žฅ ๋ฐ ๋‹ค๋ฅธ ๋ฌธ์ œ๋“ค์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด npm run grunt๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

  3. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊นƒํ—ˆ๋ธŒ ํฌํฌ์— ํ‘ธ์‹œ ํ•˜์‹ญ์‹œ์˜ค.

    $ git push
  4. ๋ชจ๋“  ๊ฒŒ ์ค€๋น„๋˜์—ˆ๋‹ค๋ฉด, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋กœ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค.

์ปค๋ฐ‹์ด ๊ฑฐ์ ˆ ๋‹นํ•˜๋Š” ๊ฒฝ์šฐ

p5.js ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ํˆด๋“ค์€ ์–ด๋–ค ๊ฒƒ๋“ค์— ๋Œ€ํ•ด ์ผ๋ถ€๋Ÿฌ ๋งค์šฐ ์—„๊ฒฉํ•œ ๊ธฐ์ค€์„ ์ ์šฉํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฑด ์ข‹์€ ๊ฒ๋‹ˆ๋‹ค! ์ด๋Š” ๋ชจ๋“  ๊ฑธ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ณ , ๊ทœ์œจ์ด ์ง€์ผœ์ง€๋„๋ก ๋„์šธ ๊ฒ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ๋ญ”๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ๋งŒ๋“ค์—ˆ๋˜ ์ปค๋ฐ‹์ด ๊ฑฐ์ ˆ ๋‹นํ•  ์ˆ˜๋„ ์žˆ์Œ์„ ์˜๋ฏธํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ๋‚™๋‹ดํ•˜์ง€๋Š” ๋ง์•„์ฃผ์„ธ์š”. ์‹ฌ์ง€์–ด ๊ฒฝํ—˜ ๋งŽ์€ p5.js ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ปค๋ฐ‹๋„ ์ข…์ข… ๊ฑฐ์ ˆ ๋‹นํ•˜๊ณค ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต์€ ์ฝ”๋“œ ๋ฌธ๋ฒ• ์•„๋‹ˆ๋ฉด ์œ ๋‹› ํ…Œ์ŠคํŠธ๊ฐ€ ๋ฌธ์ œ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ๋ฌธ๋ฒ•

p5.js๋Š” ๊น”๋”ํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๋Š” ์Šคํƒ€์ผ์˜ ์ฝ”๋“œ ๋ฌธ๋ฒ•์„ ์š”๊ตฌํ•˜๊ธฐ์—, Prettier์™€ ESlint๋ผ๋Š” ํˆด์˜ ์‚ฌ์šฉ์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์ปค๋ฐ‹์„ ํ•˜๊ธฐ ์ „์— ํŠน์ • ์Šคํƒ€์ผ ๊ทœ์น™์„ ์ ๊ฒ€ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ ์—๋””ํ„ฐ์— ESlint ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋ฉด ํƒ€์ดํ•‘ ํ•จ๊ณผ ๋™์‹œ์— ์˜ค๋ฅ˜๋ฅผ ํ•˜์ด๋ผ์ดํŠธ ํ•ด์ค๋‹ˆ๋‹ค. ์ฝ”๋“œ ์Šคํƒ€์ผ์— ๊ด€ํ•ด์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ์—ฐ์„ฑ๊ณผ ๊ด€๋ จ๋œ ์˜ค๋ฅ˜๋ฅผ ๋‚ด๋Š”๋ฐ, ์ด๋Š” ์ฐธ์—ฌ์™€ ๊ธฐ์—ฌ์˜ ์žฅ๋ฒฝ์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

์—๋Ÿฌ๋ฅผ ํฌ์ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”($ ํ”„๋กฌํ”„ํŠธ๋Š” ์ž…๋ ฅํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค):

$ npm run lint

์–ด๋–ค ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋Š” ์ž๋™์ ์œผ๋กœ ๊ณ ์ณ์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

$ npm run lint:fix

ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์กด ์Šคํƒ€์ผ์„ ๊ณ ์ˆ˜ํ•˜๋Š” ๊ฒŒ ์„ ํ˜ธ๋˜๋Š”๊ฒŒ ๋ณดํ†ต์ด์ง€๋งŒ, ๊ฐ€๋”์€ ๋‹ค๋ฅธ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š”, Prettier์˜ // prettier-ignore ์ฃผ์„์„ ์ด์šฉํ•ด ์˜ˆ์™ธ์ ์ธ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์š”๊ตฌ๋˜๋Š” ์Šคํƒ€์ผ ์„ ํ˜ธ ์‚ฌํ•ญ๋“ค์€ ๊ทธ๋Ÿด๋งŒํ•œ ์ด์œ ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์˜ˆ์™ธ์ ์ธ ๊ฒฝ์šฐ๋ฅผ ๋งŒ๋“ค์ง€ ๋ง์•„์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์ฝ”๋“œ ์Šคํƒ€์ผ ๊ทœ์น™์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์š”์•ฝ๋ณธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ด ๋ชฉ๋ก์ด ์ „๋ถ€๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— .prettierrc์™€ .eslintrc ํŒŒ์ผ์˜ ์ „์ฒด ๋ชฉ๋ก์„ ์ฐธ๊ณ  ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

  • ES6 ์ฝ”๋“œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • (ํฐ ๋”ฐ์˜ดํ‘œ ๋ณด๋‹ค๋Š”) ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ์ŠคํŽ˜์ด์Šค ๋‘ ๊ฐœ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ์ฝ”๋“œ์— ์ •์˜๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ๋ณ€์ˆ˜๋“ค์€ ์ ์–ด๋„ ํ•œ ๋ฒˆ์€ ์‚ฌ์šฉ๋˜๋˜๊ฐ€, ์•„๋‹ˆ๋ฉด ์™„์ „ํžˆ ์—†์• ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • x == true ํ˜น์€ x == false๋กœ ๋น„๊ต๋ฌธ์„ ์ž‘์„ฑํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด๊ฒƒ ๋Œ€์‹  (x) ๋‚˜ (!x)๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. x == true๋Š” ๋ถ„๋ช…ํžˆ if (x) ์™€๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค! ํ—ท๊ฐˆ๋ฆด ์—ฌ์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋„(null)๊ณผ ๋น„๊ตํ•˜๊ณ , ์ˆซ์ž๋ฅผ 0์—, ๋ฌธ์ž์—ด(string)์„ โ€œโ€๊ณผ ๋น„๊ตํ•˜์‹ญ์‹œ์˜ค.

  • ์ž‘์„ฑํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ๋ชจํ˜ธํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ๊ฒฝ์šฐ ์ฃผ์„์„ ๋‹ต๋‹ˆ๋‹ค.

  • ๋” ๋งŽ์€ ์Šคํƒ€์ผ๋ง ํŒ์„ ์ฐธ๊ณ ํ•˜๊ธฐ ์œ„ํ•ด์„  ๋ชจ์งˆ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—ฐ์Šต(Mozilla JS practice)์„ ๋ณด์‹ญ์‹œ์˜ค.

์œ ๋‹› ํ…Œ์ŠคํŠธ

์œ ๋‹› ํ…Œ์ŠคํŠธ๋ž€ ์ฃผ๋…ผ๋ฆฌ์™€ ์„ฑ๋Šฅ ๊ฒ€์ฆ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ž‘์€ ๊ทœ๋ชจ์˜ ์ฝ”๋“œ๋“ค์ž…๋‹ˆ๋‹ค. unit_testing.md ํŽ˜์ด์ง€์— ์œ ๋‹› ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—ฌ๋Ÿฌ๋ถ„์ด p5.js๋ฅผ ์œ„ํ•œ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•œ๋‹ค๋ฉด, ์•„๋งˆ๋„ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด, ๊ทธ๊ฑด ์–ด๋”˜๊ฐ€์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋””ํŽœ๋˜์‹œ๋“ค์„ ๋ฐ˜๋“œ์‹œ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

$ npm ci

์ด๊ฒƒ์ด p5.js๋ฅผ ์œ„ํ•œ ๋ชจ๋“  ๋””ํŽœ๋˜์‹œ๋“ค์„ ์„ค์น˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค; ๊ฐ„๋‹จํ•˜๊ฒŒ๋Š”, ์œ ๋‹› ํ…Œ์ŠคํŒ…์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋””ํŽœ๋˜์‹œ๋“ค์€ ๋‹ค์Œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

  • Mocha: p5.js๋ฅผ ์œ„ํ•œ, ๊ฐœ๋ณ„์ ์ธ ํ…Œ์ŠคํŠธ ํŒŒ์ผ๋“ค์„ ์‹คํ–‰ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ํ…Œ์ŠคํŒ… ํ”„๋ ˆ์ž„์›Œํฌ
  • mocha-chrome: ๊ตฌ๊ธ€ ํฌ๋กฌ์„ ์ด์šฉํ•ด Mocha ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ฆฌ๋Š” ๋ชจ์ฐจ ํ”Œ๋Ÿฌ๊ทธ์ธ

๋””ํŽœ๋˜์‹œ๋“ค์ด ์„ค์น˜๋˜๋ฉด, Grunt๋ฅผ ์ด์šฉํ•ด ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ฆฌ์‹ญ์‹œ์˜ค.

$ grunt

๋•Œ๋ก  ์ปค๋งจ๋“œ ๋ผ์ธ ๋Œ€์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ฆฌ๋Š” ๊ฒƒ๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„ , ๋จผ์ € ์„œ๋ฒ„ ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค:

$ npm run dev

์„œ๋ฒ„๊ฐ€ ๋Œ์•„๊ฐ€๋ฉด, ๋ธŒ๋ผ์šฐ์ €์—์„œ test/test.html์„ ์—ด ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

์œ ๋‹› ํ…Œ์ŠคํŒ…์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์„ค๋ช…์€ p5.js ๋ฌธ์„œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, ๊ฐ„๋žตํ•˜๊ฒŒ๋งŒ ๋งํ•˜์ž๋ฉด src/ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ์†Œ์Šค ์ฝ”๋“œ์— ๊ฐ€ํ•ด์ง„ ์ค‘๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด๋‚˜, ์ƒˆ๋กœ ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ์€ Mocha๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ ํŒŒ์ผ์ด test/ ๋””๋ ‰ํ† ๋ฆฌ์— ๋™๋ฐ˜๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ํ–ฅํ›„ ๋‚˜์˜ฌ ๋ชจ๋“  ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋„ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ž‘๋™ํ•  ๊ฒƒ์ž„์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, Chai.js ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ๊ณ ํ•ด ์–ด์„œ์…˜(assertion) ๋ฉ”์„ธ์ง€๋ฅผ ๊ตฌ์„ฑํ•จ์œผ๋กœ์จ ๋ฏธ๋ž˜์— ํ…Œ์ŠคํŠธ๋กœ ์žก์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋“ค์ด ์ผ๊ด€์„ฑ ์žˆ๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ธฐํƒ€

  • contributor_docs/ ํด๋”์—๋Š” ์‚ดํŽด๋ณผ๋งŒํ•œ ๋‹ค๋ฅธ ํŒŒ์ผ๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์ˆ ์ ์ธ ํ˜น์€ ๋น„๊ธฐ์ˆ ์ ์ธ ๊ฐ ์˜์—ญ๊ณผ ๊ด€๊ณ„๋œ ๊ฒƒ๋“ค์ž…๋‹ˆ๋‹ค.
  • p5.js ๊ฐœ๋ฐœ ์ž‘์—… ํ๋ฆ„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ์™€ ํŒŒ์ผ๋“ค์— ๋Œ€ํ•œ ์˜์ƒ ์„ค๋ช…์€ Looking Inside p5.js์—์„œ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋”ฉ ํŠธ๋ ˆ์ธ์˜ ์ด ๋™์˜์ƒ๐Ÿš‹๐ŸŒˆ์—์„œ๋Š” p5.js์— ๊ธฐ์ˆ ์  ๊ธฐ์—ฌ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • p5.js ๋„์ปค(Docker) ์ด๋ฏธ์ง€๋Š” ๋„์ปค์— ๋งˆ์šดํŠธ ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” Node ๊ฐ™์€ ํ•„์ˆ˜ ์š”์†Œ๋“ค์„ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•  ํ•„์š” ์—†์ด, ๊ทธ๋ฆฌ๊ณ  ๋„์ปค ์„ค์น˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“ ์ง€ ํ˜ธ์ŠคํŠธ ์šด์˜ ์ฒด์ œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ ๋„ p5.js๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • p5.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋นŒ๋“œ ๊ณผ์ •์€ json ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ์ด๋Š” p5.js์˜ ๊ณต๊ฐœ API๋ฅผ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์—๋””ํ„ฐ์—์„œ p5.js ๋ฉ”์„œ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์™„์„ฑํ•˜๋Š” ๋“ฑ์˜ ์ž๋™ํ™”๋œ ํˆด๋ง์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ p5.js ์›น์‚ฌ์ดํŠธ์—์„œ ํ˜ธ์ŠคํŠธ ๋˜์ง€๋งŒ, ์ €์žฅ์†Œ์˜ ์ผ๋ถ€๋กœ ํฌํ•จ๋˜์–ด ์žˆ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
  • p5.js๋Š” ์ตœ๊ทผ์— ES6๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€ํ™”๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ธฐ์—ฌ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น ์ง€๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด์„  ES6 ์ฑ„ํƒ์„ ๋ฐฉ๋ฌธํ•ด์ฃผ์‹ญ์‹œ์˜ค.