Overview
๊ตญ๋ฏผ๋ํ๊ต 22๋ 2ํ๊ธฐ ์ด๋ฏผ์ ๊ต์๋์ ์ฌ์ ๋ํ์ธ๋ฏธ๋ ์์ ์ ์๊ฐํ๋ ์ค ๊ต์๋๊ป์ ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฌธํ๋ฅผ ์ฒดํ์ ์ํด ํ์ฐ ๋ถ๊ณผ ํ์ ๊ตฌ์ฑํด์ฃผ์ จ๋ค.
์ฌ ํํด, ์บก์คํค ๋์์ธ ์กธ์ ํ๋ก์ ํธ์ ์คํํธ์ ๊ฒฝํ์ ๊ฑฐ์น๋ฉฐ ๊ฐ๋ฐ ๊ณผ์ ์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋์ ํ์ฌ ์ํํธ์จ์ด ํ์ง์ ๊ฐ์ ํ ์ ์๋๋ก ๋ ธ๋ ฅํด์ค๊ณ ์์๋ค.
๋ค๋ฅธ ๊ฐ๋ฐ์์ ํจ๊ป ์ํตํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์๋ก ์ฑ์ฅํ ์ ์๋ ํ ๋ก ์ ํ ์ ์๋๋ก ๊ธธ์ ์ฐพ์๋๊ฐ๋ ๊ฒฝํ ๊ณผ์ ์ ์์ํ๊ฒ ๊ธฐ๋กํ๋ ๊ฒ์ด ์ด๋ฒ ํฌ์คํ ์ ๋ชฉํ์ด๋ค.
๊ณํ
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๊ธฐ ์ํ ํ ์ด ํ๋ก์ ํธ๊ฐ ํ์ํ๋ค. ์ฐ๋ฆฌ ํ์ ๋ง๋ค๊ณ ์ถ์ ํ ์ด ํ๋ก์ ํธ, ์ํต ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ ์งํ ๋ฐฉ์์ ๊ดํ์ฌ ๊ฐ๋ตํ ๊ณํ์ ์ธ์๋ณด๋ ๊ฒ์ผ๋ก ์์ํ๋ค.
์๋ก ๋ง๋ค๊ณ ์ถ์ ํ ์ด ํ๋ก์ ํธ๋ฅผ ์๊ฐํด๋ณด์๋ค. ํ์๋ ์๋์ฟ ๊ฒ์์ ํ์ฐ๋ถ์ ๊ฐ์๋ฐ์๋ณด ๊ฒ์์ ๊ธฐํํ๊ฒ ๋์๋ค. ํ์ง๋ง ์ธ์์ ์ฝ์ง ์๋ค. ๋ฌธ์ ๋ ๊ฒฐ์ ์ฌํญ์ด ๊ธฐ์ ์ ์ธ ๋ด์ฉ์ ๊ฐ๊น์์ง์๋ก ์ ๋ช ํ๊ฒ ๋ณด์๋ค.
๊ธฐ์ ์คํ์ ๊ฒฐ์
๋๊ด์ ํ์ ๊ฐ์ ๊ธฐ์ ์ ๊ฒฝํ ๋ฐฐ๊ฒฝ์ด ๋ค๋ฅด๋ค๋ ์ ์ด์๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํด์ ์๋ก์ ์ฝ๋๋ฅผ ์ดํดํ ์ ์์ด์ผ ํ ๊ฒ์ด๋ค. ๋ง์ฝ ๋ฆฌ๋ทฐ์ด๊ฐ ์์ฑ๋ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ํด ์ด๋ ค์ด ๊ธฐ์ ์ ๋ฐฐ์์ผ ํ๋ค๋ฉด ์์ง์ ๊ฑด์ค์ ์ธ ๋ ผ์์ด ์ด๋ค์ง ์ ์์๊น?
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ๊ฐ๊ด์ ์ผ๋ก๋ ํ์ ๊ฐ ์๋ ผํ์ฌ ๊ฒฐ์ ๋ ๊ธฐ์ ์คํ์ ๋์ผํ๊ฒ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๊ธฐ๋ก ํฉ์ํ๋ค. ์๋ก์ ๊ณตํต์ ์ ์ฐพ์๊ฐ๋ ์ค ํ์ด์ฌ ์ฝ๋๋ฅผ ์์ฑํด๋ณธ ๊ณตํต ๊ฒฝํ์ ์ฐพ๊ฒ ๋์ด ํ์ด์ฌ์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
๊ฒ์์ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ธํ ์ ์๋ ํ๋ ์์ํฌ๊ฐ ํ์ํ๋ค. ํ์ด์ฌ์ผ๋ก ์์ฑํ ์ ์๋ ํฌ๋ก์ค ํ๋ซํผ์ ์ง์ GUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค PyQt๋ฅผ ์ ํํ์๋ค. GUI ๊ฐ๋ฐ ํด๋ก ๋ํ์ ์ด๊ธฐ๋ ํ๊ณ ์ถฉ๋ถํ UI ์ปดํฌ๋ํธ๋ฅผ ์ง๊ด์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ต๊ทผ์ ๋ฉ์ด์ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ค์ง ๋งํผ ์ง์์ ์ผ๋ก ๊ด๋ฆฌ๋๊ณ ์์๋ค.
ํน์ดํ ์ ์ด๋ผ๋ฉด GPL ๋ผ์ด์ผ์ค๋ฅผ ์๊ตฌํ๋ ๋งํผ ์ ์ฑ ์ด ๊น๊นํ๊ธด ํ์ผ๋ GitHub ์์ ์์ฑ๋ ์ฝ๋๋ฅผ ๊ณต๊ฐํ ๊ฒ์ ์ผ๋ํ๊ณ ์๊ธฐ์ ์ด๋ฒ ํ๋ก์ ํธ์์๋ ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์์๋ค.
ํ์ ๋ฐฉ์์ ๊ฒฐ์
์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํ ๋, ๋ฆฌ๋ทฐ์ด๊ฐ ์ฝ๋๊ฐ ๊ฐ๋ฐ๋๋ ๊ณผ์ ์ ์ดํด๋ณผ ์ ์๋ค๋ฉด ์์ฑ๋ ์ฝ๋์ ์๋๋ฅผ ์๊ฐํด๋ณผ ์ฌ์ง๋ฅผ ์ค ์ ์์ ๊ฒ์ด๋ค. ์์ฑ๋ ์ฝ๋์ ๊ฐ๋ฐ ๊ณผ์ ๊ทธ๋ฆฌ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ๋ ผ์์ ํ๋์ ํ๋ซํผ์์ ํ ์ ์๋ค๋ฉด ์ด์์ ์ผ ๊ฒ์ด๋ค.
๋๋๊ฒ๋ ๊ฐ๋ฐ์์ ์น๊ตฌ GitHub ์ ํจ๊ป๋ผ๋ฉด ๊ฟ์ด ์๋ ํ์ค์ด๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ ์๊ฐ ํ์ด์ง์ ๋ฐฉ๋ฌธํ๋ฉด ๊นํ๋ธ์์ ๊ณต์์ ์ผ๋ก ์๊ฐํ๋ ์ฝ๋ ๋ฆฌ๋ทฐ ๊ณผ์ ์ ์ดํด๋ณผ ์ ์๋ค. ๊ฐ๋จํ๊ณ ๋ช ๋ฃํ๊ฒ ์ค๋ช ๋ ์ค๋ช ์ ์ฐ๋ฆฌ ํ์ ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฐฉ์์ผ๋ก ์ฑํํ๋ค.
- Pull Request ๋ฅผ ์์ฑํ์ฌ ์์ํ๋ค.
- ๋ณํ๋ฅผ ์ค๋ค.
- ์ฝ๋์ diff, ์ปค๋ฐ history ๋ฑ์ ํ์ฉํด ์ ๋ฐ์ดํธ ๋ด์ญ์ ํ์ธํ๋ค.
- ์ฝ๋ฉํธ ๊ธฐ๋ฅ์ ํ์ฉํด ์ฝ๋์ ๋ํด ํ ๋ก ํ๋ค.
- conflict ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๋ณํฉ ์ถฉ๋์ ํด๊ฒฐํ๋ค.
- ํ์ง์ด ๊ฐ์ ๋ ์ฝ๋๋ฅผ ๋ณํฉํ๋ค.
Git์ ํ์ฉํ์ฌ ์์ค ์ฝ๋๋ฅผ ํ์ ๊ด๋ฆฌํ๋ค ๋ณด๋ฉด commit์ ํตํด ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋กํ๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ ๊ณผ์ ์์ ์๋ก๊ฐ ์ฝ๋์ ๋ณ๊ฒฝ ์ฌํญ์ ๋น ๋ฅด๊ฒ ์ถ์ ํ๊ณ ์ดํดํ ์ ์๋๋ก ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์นด๋ฅด๋ง ์คํ์ผ ์ ๋์
ํ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ๋ฉ์์ง๋ฅผ ์์ฑํ๋ค. <type>์
feat, fix, docs ๋ฑ์ ์์ฝ ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ์๋๋ฅผ ํจ์ถ์ ์ผ๋ก ํํํ๋๋ก ๋์์ค๋ค.
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
๊ฐ๋ฐํ๋ฉด์ ์ค์ํ ์๋ ผ ์ฌํญ์ด ๋ฐ์ํ๊ฑฐ๋ ๋ฆฌ๋ทฐ ์์ฒญ ๋ฐ ์งํ ์ํ ๊ณต์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๋ฑ ์ค์๊ฐ ์ํต์ ์ํด Slack์ ํ์ฉํ๋ค. ์ํต ๊ณผ์ ์ด ๊ธฐ๋ก์ ๋จ๊ธฐ๋ํ๊ณ ์ฝ๋๋ฅผ ๋ณด๋ด๋ฉด ํฌ๋งทํ ์ด ๋์ด ๋ณด์ด๋ ๋ฑ ํธ๋ฆฌํ ์ ์ด ๋ง์ ํด์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ๋์ ๋์ ํ ์ด์ ๋ ํ๋ก์ ํธ ์ด๋ฐ์ ๊ฐ๊ด์ ์ธ ๋ฐฉํฅ์ฑ์ ํฉ์ํ๊ณ ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ด์๋ ๋น ๋ฅด๊ฒ ์๋ ผํด์ ๊ฒฐ์ ํ๋ ์ด๋ฒ ์ํต ๋ฐฉ์์ ์ ํฉํ ๋๊ตฌ๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ๋ฐ
์๋์ฟ ๊ฒ์์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ์ค์ํ๊ฒ ์๊ฐํ ๊ฐ์น๊ด ๋ฐ ๊ฐ๋ฐ ๊ณผ์ ์ ์ถ๋ ค์ ์๊ฐํด๋ณธ๋ค.
Minimalism - Less is more
ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๋๋ฐ ํ์ํ ๊ฒ์ด๋ผ๋ ๋ง์ฐํ ์์์ผ๋ก ๋๊ตฌ๋ฅผ ๋์ ํ์ง ์์๋ค. ๋น์ด ์๋ ํด๋์์ ํ๋ก์ ํธ๋ฅผ ์์ํ์ฌ ๊ผญ ํ์ํ (ํน์ ์กด์ฌ ์ด์ ๋ฅผ ์ค๋ช ํ ์ ์๋) ํ์ผ๋ง ์์ฑํ๋ค.
์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๋๋ฐ ํ์ํ PyQt ๋ง ์ธ๋ถ ์์กด์ฑ์ผ๋ก ์ถ๊ฐํ์๋ค. ํ๋ก๊ทธ๋จ์ ์ค์ํ ์ ์ฑ ๋ชจ๋ธ์ ๊ฒฝ์ฐ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ์ฌ ๋จ์ ํ ์คํธ๋ฅผ ํตํ ์ ์ง ๋ณด์๊ฐ ์ฉ์ดํ๋๋ก ์ค๊ณํ์๋ค.
์ ํ์ ์คํํ๋๋ฐ ํ์ํ ๋ณต์ก์ฑ์ ์ค์๋ค. ํ์ด์ฌ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ํ์ฉํด requrement.txt ์ ์ ์๋ ์์กด์ฑ์ด ํ๋ฒ์ ์ค์น๋ ์ ์์ผ๋ฉฐ ์ ํ์ ์คํ ์ง์ ์ด ์ธ๋ถ์ ํ์ผ๋ก ๋ ธ์ถ๋๊ณ ๋ด๋ถ ๋ก์ง์ ์บก์ํํ์ฌ ์ฌ์ฉ์๊ฐ ์ง๊ด์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋๋ก ๊ตฌ์ฑํ๋ค.
Abstraction - Understandable, Maintainable
์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ค๊ณํ ๋, UI ์ปดํฌ๋ํธ๊ฐ ํน์ "๋ชจ๋" ์ ๋์ด์ง ์๋๋ค. ์ด๋ค ์ ๋ ฅ์ด ๋ค์ด์๋ solve์ reset ๋ฒํผ์ ๋์ผํ ๋์์ ์ง๊ด์ ์ผ๋ก ์ํํ๋ค.
์ฝ๋์ ์คํ ํ๋ฆ๊ณผ ๊ฒ์ ๋ฐ ํ ์คํธ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ํธ๋ค๋งํ ์ ์๋๋ก ์ค๊ณํ๋ค. ๋ณ์, ํจ์, ํด๋์ค๋ช ์ ํด๋น ์ฝ๋์ ์ญํ ๋ฐ ์๋ฏธ๋ฅผ ์ง๊ด์ ์ผ๋ก ํด์ํ ์ ์๋ ๋ค์ด๋ฐ์ ํ๊ณ ์ ๊ณ ๋ฏผํ๋ค.
์ด์ ๊ธฐ๋ฅ์ ํตํด ์ปค๋ฐ ์ฌํญ์ ๋ถ๋ฅํ์๋ค. ์ปค๋ฐ ๋ฉ์์ง ๋ง๋ค ์ฐ๊ฒฐ๋ ์ด์ ๋ฒํธ๋ฅผ ํตํด ์์ฝ๊ฒ ๋ณ๊ฒฝ ์ฌํญ์ ์๋๋ฅผ ํ์ ํ ์ ์๋ค. ์ปค๋ฐ ์ฌํญ์ ์๋ฏธ ๋จ์๋ฅผ ์งง๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๋จ์๋ก ๋๊ณ ์ ๋ ธ๋ ฅํ๋ค.
README ๋ฌธ์๋ฅผ ์์ฑํ์ฌ ํ๋ก์ ํธ์ ๋ํ ๊ฐ์ด๋ ๋ฌธ์๋ฅผ ์ ๊ณตํ์๋ค. ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ค๋ค.
๊ณผ์
GitHub ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ฉด Jira
์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ํ๋ก์ ํธ ํ๋๋์ ํ ์ ์๋ค. ์๋์ ์ ์ํ Phase๋ฅผ ์ ์ธํด๋ณด์๋ค. ๋ํ ๊ฐ Phase๋ฅผ issue๋ก
ํ์ฅํ์ฌ ์ธ๋ถ ์์
์ ์ ์ํ๊ณ ์ด๋ ๋ฐ๊ธ๋ issue #
๋ ์ปค๋ฐ ๋ฉ์์ง์ ์ฐ๋๋์ด ๋ฆฌ๋ทฐ์ด๊ฐ ์์ฝ๊ฒ ๋ณ๊ฒฝ ๋ด์ฉ์ ์ถ์ ํ ์ ์๋๋ก ๋๋๋ค. ํ์ํ ๊ฒฝ์ฐ issue
๋ฅผ ๋ง์ผ์คํค์ผ๋ก ๋ฌถ์ด์ ๊ด๋ฆฌํ ์๋ ์์ง๋ง ์ด๋ฒ์ ๊ฒฝ์ฐ์ ํ๋ก์ ํธ Phase๋ก ๋ฌถ์ฌ ์์ด ๋ง์ผ ์คํค ๋จ์ ๋ถ๋ฅ๋ ์งํํ์ง ์์๋ค.
์ ์ฒด์ ์ธ ๊ฐ๋ฐ ํ๋ฆ์ ๋ฐ์ดํฐ์ ๊ฐ๊น์ด ๋ฐฉํฅ๋ถํฐ ์์ํ์ฌ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด ํ๋ก์ ํธ๊ฐ ์์ฑ๋๋๋ก ์งํ๋๋ค.
- ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ ํ๊ธฐ
- ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ฐํ๊ธฐ
- GUI ์ฝ๋ ์ฐ๊ฒฐ์ํค๊ธฐ
- PR ์์ฑ ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ ์งํํ๊ธฐ
ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ ํ๊ธฐ
์ฝ๋ ์์ฑ, ๋๋ฒ๊น , ํ ์คํธ ๋ฑ์ ๊ณผ์ ์ ์์ฝ๊ฒ ์ํํ๊ธฐ ์ํด Jetbrain ์ฌ์ PyCharm IDE๋ฅผ ์ฌ์ฉํ๋ค. ์ด์ ๋ ํ์๊ฐ ์ง๋์ฌ๋ฆ ๋์ ์คํํธ์ ์์ ๊ฒฝํํ ์๋๋ก์ด๋ ์คํ๋์ค์ ๋จ์ถํค ํค๋งต์ด ๋์ผํด์ ํธ๋ฆฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
.gitignore
ํ์ผ์ IDE, ๋งฅ OS ๊ด๋ จ ํ์ผ์ Git ์ด ํ์ ๊ด๋ฆฌํ์ง ์๋๋ก ์ ์ธํด๋์๋ค. ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ํ๋ก์ ํธ์ ํต์ฌ ํ์ผ์ ์์ ์ด ์ ํธํ๋ IDE์ ์ฐ๋ํ์ฌ ์ ์ง ๋ณด์ํ ์ ์๋๋ก ๋๊ธฐ ์ํจ์ด๋ค.
๋ณ๊ฒฝ ์ฌํญ์ด ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ ๊ณผ ๊ด๋ จ๋ ๋งํผ ์ ์ฉ ๋ธ๋์น configureENV
์์ ์์
ํ main
์ PR์ ์์ฑํ์ฌ ๋ณํฉํ์๋ค.
๊ฒ์ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ฐํ๊ธฐ
๊ฒ์ ๋ฐ์ดํฐ์ ์ ์ฉ๋ ๋ก์ง ๊ตฌํ์ ๊ฒฝ์ฐ ๋จ์ ํ ์คํธ๋ฅผ ํจ๊ป ์์ฑํ์ฌ API ๋ฌธ์ํ ๋ฐ ์ฝ๋ ๊ฒ์ฆ์ด ํจ๊ป ์ด๋ฃจ์ด์ง ์ ์๋๋ก ๊ตฌ์ฑํ์๋ค.
๋จ์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด ํ ์คํธ ํ๋ ์์ํฌ์ ์ฌ์ฉ๋ฒ์ ์ฐพ์๋ณด๊ฒ ๋์๋ค. ํ์ด์ฌ์ ๊ฒฝ์ฐ unittest ๋ฅผ ํตํด ๋จ์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
์ฌํด ๊ฒฝํํ ๋จ์ ํ ์คํธ ํ๋ ์์ํฌ๋ Swift์ dart ๊ทธ๋ฆฌ๊ณ Python์ด๋ค. ์ด ์ ์ ๋ชจ๋ ๋ค๋ฅธ ์ธ์ด์ด์ง๋ง ๋จ์ ํ ์คํธ ์ฉ๋ฒ์ ์ ๋ง ๋น์ทํ๋ค. setup ๊ณผ tearDown์ ํตํด ํ ์คํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์คํํ ์ ์๋ ํ๊ฒฝ์ ๋ง๋ค ์ ์์ผ๋ฉฐ ํ ์คํธ ํจ์๋ฅผ ์งํํ์ฌ ํต๊ณผ, ์คํจ๋ฅผ ํ๋จํ๋ค.
ํ ์คํธ ํจ์์ ๊ฒฝ์ฐ ๋ด๊ฐ ๊ฒ์ฆํ๊ณ ์ ํ๋ API์ ์ฃ์ง ์ผ์ด์ค๋ฅผ ์ฐพ์์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
๋จ์ ํ ์คํธ๋ฅผ ํ์ฉํ GitHub Action CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ฌ ์๋์ผ๋ก ์ปค๋ฐ์ด ๊ฒ์ฆ๋๋๋ก ํ์ฅํด๋ณด๊ณ ์ถ์์ง๋ง ์ด๋ฒ์ ๊ฒฝ์ฐ ์ฌ๊ธฐ๊น์ง ์งํํ์ง๋ ์์๋ค.
๊ฐ๋ฐํ๋ฉด์ ํ์๊ฐ ์๊ฐํ ํน์ด ์ฌํญ์ด ์๋ค.
๊ธฐ์กด์ ์ฌ์ฉํด์จ ์ ์ ํ์ ์ฒดํน์ ๊ฐํ๊ฒ ํ๋ ์ธ์ด(์: C++ ๋ฑ๋ฑ)์ ์ต์ํ ์ํ๋ก ํ์ด์ฌ๊ณผ ๊ฐ์ ๋์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์ฝ์ ๋ API ์ ์ ์ถ๋ ฅ ํ์ ์ ์ดํดํ๊ธฐ ์ด๋ ต๋ค๋ ์ ์ด๋ค. ํนํ, ์ ์ถ๋ ฅ ํ์ ์ด ๋ช ์๋์ง ์์ API๋ฅผ ์ฌ์ฉํ๋ค๊ฐ API ์์ฑ์๊ฐ ์๋ํ์ง ์์ ์ ๋ ฅ์ ๋ฃ์ ๊ฒฝ์ฐ ๋์ํ๊ธฐ๋ ์ด๋ ค์ธ ๊ฒ์ด๋ค.
๋คํํ๋ ํ์ด์ฌ์๋ ์ด ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ํ์ด์ฌ 3.5 ๋ฒ์ ์ Type Annotation
์ด ๋์
๋์ด ํจ์, ๋ณ์ ๋ฑ์ ์ ์ ๋ถ์ ํ์
์ ๋ช
์ํ ์ ์๊ฒ ๋์๋ค. ํํ๋ ์ค์ํํธ์ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ :
๋ฅผ ํ์ฉํด ํ๋ผ๋ฏธํฐ ํ์
์ ๋ช
์ํ๊ณ ->
์ ํตํด ๋ฐํ ํ์
์ ๋ช
์ํ ์ ์๋ค.
์ธ์๋ ํ์ด์ฌ์ ์ปฌ๋ ์ ๊ฐ์ฒด๊ฐ reference๋ฅผ ํตํ ํ ๋น์ด ์ด๋ค์ง๋ ์ ์ ์ฃผ์ํ์ฌ ์ฝ๋ฉํ์ฌ์ผ ํ๋ค.
ํ์ด์ฌ๋ C++ ๋ฒกํฐ์ฒ๋ผ ์ด๊ธฐ๊ฐ๊ณผ ๊ฐ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปฌ๋ ์ ์ ์์ฑํ๋ ์์ฑ์๋ฅผ ๊ธฐ๋ณธ ์ ๊ณตํ๋ฉด ์ข๊ฒ ๋ค๊ณ ์๊ฐํ์๋ค. 2์ฐจ์ ๋ฐฐ์ด์ ์ ์ธํ ๋ ํ์ํ๋๋ฐ, ๋์์ผ๋ก list comprehension์ ์ฌ์ฉํ๋ฉด ํ์ด์ ์ ์ธ ๋ฌธ๋ฒ์ผ๋ก ์์ฝ๊ฒ ์ด๊ธฐ๊ฐ์ด ์๋ ์ปฌ๋ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๊ธด ํ๋ค.
์ด๋ฒ ๋ณ๊ฒฝ ์ฌํญ์ Sudoku Game๊ณผ ๊ด๋ จ๋ ๋งํผ ์ ์ฉ ๋ธ๋์น devSudokuGame
์์ ์์
ํ main
์ PR์ ์์ฑํ์ฌ ๋ณํฉํ์๋ค.
GUI ์ฝ๋ ์ฐ๊ฒฐ์ํค๊ธฐ
GUI ํ๋ก๊ทธ๋๋ฐ์์ ํ์๋ View์ Model์ ์ฐ๋ํ๊ณ ๋๊ธฐํํ๋ ๋ฉ์ปค๋์ฆ์ ๊ดํ์ฌ ๋ง์ ๊ณ ๋ฏผ์ ํ๋ค.
View๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์กด์ฑ์ ๊ฐ๋๋ฐ, ๋ด ํ๋ก๊ทธ๋จ์ ํต์ฌ ์ ์ฑ ์ ๋ด์ ๋ชจ๋ธ์ด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์กด์ฑ์ ์ง๋๋ค๋ฉด ํ๋ก์ ํธ์ ๊ด๋ฆฌ ์ฃผ๋๊ถ์ด ์ธ๋ถ๋ก ๋นผ์๊ธฐ๊ฒ ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์๋ ์ธ๋ฅ์ ์ญ์ฌ์ ์ผ๋ก๋ ์ธ์ธ์ ์์กดํ๋ฉด ๋ฌด์์ด ์ผ์ด ๋ฐ์ํ๋ ๊ฒ ๊ฐ๋ค.
์ด๋ฒ์ ๊ฒฝ์ฐ ์ ํต์ ์ธ MVC ํจํด์ ํตํด ์ญํ ์ ๋๋๊ณ Controller์์ View์ Model์ ์ง์ ๋ฐ์ธ๋ฉํ๋๋ก ๊ตฌํํ๋ค. ๋ณต์กํ ๋ฐ์ธ๋ฉ ๊ธฐ์ ์ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ์ฅ ๋จ์ํ ๊ตฌํ๋ฒ์ ์ ์ฉํ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ๋ฐํ๋ฉด์ ํ์๊ฐ ์๊ฐํ ํน์ด ์ฌํญ์ด ์๋ค.
ํ๋ก์ ํธ ์ด๋ฐ์๋ ์ต์ ์ ์๋์ง๋ง ์์ ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ PyQt5 ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ํ๋ ค๊ณ ์๋ํ๋ค. ๋ฌธ์ ๋ ํ์์ ๋งฅ๋ถ์์ ๋ฐ์ํ๋ค. 2020๋ ๋ถํฐ M1 ๋งฅ์ ์์์ผ๋ก ARM ์ํคํ ์ฒ๋ก์ ์ด์ฌ๋ฅผ ์งํํ๊ณ ์๋ค. PyQt5๋ ARM ๋งฅ ํ๊ฒฝ์ ํธํํ์ง ์์์ PyQt6 ์ต์ ๋ฒ์ ์ผ๋ก ๊ธฐ์ ์คํ์ ๋ณ๊ฒฝํ๊ฒ ๋์๋ค.
์ด๋ฒ ๋ณ๊ฒฝ ์ฌํญ์ ๋ธ๋์น devSudokuGame
์์ ์ด์ด์ ์์
ํ ํ main
์ PR์ ์์ฑํ์ฌ ๋ณํฉํ์๋ค.
๋ฆฌ๋ทฐ
์๋์ฟ ํ๋ก์ ํธ์ ์ฝ๋ ์์ฑ์ ์ ์ฅ์์ ์ฐ๋ฆฌ ํ ํ์ฐ ๋ถ๊ป ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ธฐ ์ํด ์ฌ๋ฆฐ PR๊ณผ ํ์ฐ๋ถ์ ๊ฐ์ ๋ฐ์ ๋ณด ํ๋ก์ ํธ PR์ ๋ฆฌ๋ทฐ๋ฅผ ๋จ๊ฒจ๋๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์งํ๋์๋ค.
์์ฑ๋ ์ฝ๋๋ฅผ ๋ณด๋ฉฐ ์ข์ ์ฝ๋๋ฅผ ํฅํ ํ ๋ก ์ ํด์ผ ํ๋๋ฐ, "๋ด ์๊ฐ์ด ๋ฌด์กฐ๊ฑด ์ณ์!!!" ์์ผ๋ก ๋์์ ํ์๊ณผ ํจ๊ป ์ฑ์ฅํ ์ ์๋ ์๋ฏธ ์๋ ๋ ผ์์ด ์ด์ด์ง๋ ๊ฒ์ ํผํ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฑด์ค์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํด ํ์์ ๋ง์ ๊ฐ์ง์ ํ๋ฒ ์ ๋ฆฌํ๊ณ ์์ํ๋ค.
์ ์ ๋ "๋ด ์๊ฒฌ์ ํ๋ฆด ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฉฐ ์ ๋ต์ ์๋ค"๋ก ๊น์๋ณด์๋ค. ๋ด๊ฐ ์๊ฐํ ๋ด์ฉ์ ์๋๋ฐฉ์๊ฒ ์ ๋ฌํ ๋์๋ ๊ณต์์ ์ธ ์๋ฃ๋ฅผ ๊ทผ๊ฑฐ๋ก ์ธ์ฉํ ์ ์์ ์ ๋๊ฐ ๋ ์ ์๋ค๋ฉด ์ฝ๋ฉํธ๋ก ๋จ๊ธด๋ค.
์ฌ๋๊ณผ ํจ๊ป ๊ธฐ๋ถ ์ข๊ฒ ๋ฐฐ์ฐ๊ณ ์ฑ์ฅํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ด๋ค.
์ฝ๋ฉํธ๋ ๊ฐ๋ฅํ ์๋๋ฐฉ์ ๊ธฐ๋ถ์ ํด์น์ง ์๋๋ก ๊ณต๊ฒฉ์ ์ธ ์ด์กฐ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ ์นญ์ฐฌํ ์ ์๋ ๋ถ๋ถ์ ์นญ์ฐฌํ๋ค. ์ด๋ชจ์ง๋ฅผ ์ ๊ทน ํ์ฉํ์ฌ ์ฝ๋ฉํธ๊ฐ ๋ฐ๊ณ ๋ฐ๋ฏํ๊ฒ ๋ณด์ผ ์ ์๋๋ก ํ๋ค. ์๋ก์ ๋ฐฐ์์ ์ํด ๋ต์ผ๋ก ์๊ฐํ๋ ๋ด์ฉ์ ์ง์ ์ ์ผ๋ก ๋ ธ์ถํ๊ธฐ๋ณด๋ค๋ ์ค์ค๋ก ์ฐพ์ ์ ์๋๋ก ๋ฐฉํฅ์ ์ ์ํ๋ค.
์ฝ๋
์์ฑํ ์ฝ๋์ ๋ํด ๊ณต์ ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฆฌ๋ทฐํ๋ ค๋ค ๋ณด๋ "์ฝ๋ฉ ์คํ์ผ"์ ๋ํ ์ฝ๋ฉํธ๋ฅผ ๋ง์ด ๋จ๊ธฐ๊ฒ ๋์๋ค. ํ์ด์ฌ์ ๋ํ์ ์ธ ์คํ์ผ ๊ฐ์ด๋๋ผ์ธ ์ค PEP8
์ ๊ธฐ๋ฐ์ผ๋ก API ๋ค์ด๋ฐ, ๋ ์ด์์ ๋ฑ์ ๊ด๋ จํ ๋ด์ฉ์ ๋ณด๊ฒ ๋์๋ค. ๋ฆฐํธ ํ๋ก๊ทธ๋จ์ ํตํด ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ ์ ๋ณด๋ฅผ ๊ต๋ฅํ์๋ค.
์ฝ๋ ์ค ๋ถํ์ํ ๋ฐ๋ณต์ด๋ ์์, ๋ณ์, ํจ์๋ฅผ ํ์ฉํด ์ผ๋ฐํ์์ผ์ ์ฝ๋๋ฅผ ๋จ์ํ๊ฒ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์๋ณด์๋ค.
์ด์ ์ ํ์๊ฐ ๊ฒฝํํ ์ฝ๋ ๋ฆฌ๋ทฐ ์ธ์ ์์ ์ฝ๋์ ์ค๊ณ๋ฅผ ํฅํด ํ ๋ก ์ ํ๊ณ ์ถ์ ๊ฐ์ฆ์ด ๋ง์ด ์์๋ค.
์ด๋ฒ ํ ๋ฉ์ดํธ ํ์ฐ ๋ถ๊ณผ๋ ๋ถ์กฑํ ์ง๋ผ๋ ์ฝ๋ ์ค๊ณ์ ๊ดํ ํ ๋ก ๊ฒฝํ์ ํ๋ฒ์ฏค ๊ณต์ ํ๊ณ ์ถ์ด์ ๋ ผ์ ์ค GUI ํ๋ก๊ทธ๋๋ฐ์์ ๋ทฐ-๋ชจ๋ธ ๋ฐ์ธ๋ฉ ๋ฐฉ์์ ๊ดํ ์์ด๋์ด๋ฅผ ๊ณต์ ํ ์ ์๋๋ก ์ฝ๋ฉํธ๋ฅผ ๋จ๊ฒจ๋ณด์๋ค.
์๋์ฟ ํ๋ก์ ํธ ์ค์๋ ๋จ์ ํ ์คํธ ์ฝ๋์์ ํ ์คํธ ํจ์๋ช ์ ํ๊ธ๋ก ์์ฑํ ์ฌ๋ก๊ฐ ์์๋ค. PEP8์์ 120 % ์๊ตญ๋ฏผ๋ง ์ฝ๋๋ค๊ณ ์๊ฐ๋์ง ์์ผ๋ฉด ์์ด๋ฅผ ์ฌ์ฉํ๋ผ๋ ๊ฐ์ด๋๋ผ์ธ์ ์ฐพ๊ฒ ๋์ด ์์ด๋ก ํจ์๋ช ์ ์ฌ์์ฑํ์๋ค.
์ ํ
์ฝ๋์ ๋๋ถ์ด ์ฌ์ฉ์ ์ ์ฅ์์ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ ์ ์๋ ์์ด๋์ด ์ ์๋ ์๋ํด๋ณด์๋ค.
ํ ์ฌ๋ก๋ก ๊ฐ์ ๋ฐ์ ๋ณด ํ๋ก๊ทธ๋จ ์ค ์๋ด ์ฌํญ์ ํ ์คํธ ํธ์ง Form์ text ๊ฐ์ ์ค์ ํ์ฌ ์ฌ์ฉ์๊ฐ ์๋ด ๋ฌธ์์ด์ ์ง์ฐ๊ณ ์์ ์ ๊ฐ์ ํผ์ ์ ๋ ฅํ๋ ์ฌ๋ก๊ฐ ์์๋ค.
์ฝ๋ ๋ฆฌ๋ทฐ ๊ณผ์ ์์ ๋ฐ๊ฒฌ๋ ์ด ์ด์๋ Placeholder๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ํน์ ๊ฐ์ ํผ์ ์ ๋ ฅํ ๋, ์๋ด ๋ฌธ์์ด์ด ๋ฐ๋ก ์จ๊ฒจ์ง๋๋ก ๊ฐ์ ํ ์ ์์๋ค.
๊ฒฐ๊ณผ
์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ๋ง๋ฌด๋ฆฌ๋๊ณ ํ์๊ณผ ํจ๊ป ์๋ก ๋๋ ์ ์ ๊ต๋ฅํ๊ฒ ๋์๋ค. ํ์ ๊ฐ์ ์๊ฒฌ์ ์๊ฐํ๋ฉฐ ์ด๋ฒ ํฌ์คํ ์ ๋ง๋ฌด๋ฆฌ ์ง์ด๋ณด๊ณ ์ ํ๋ค.
๋ค๋ฅธ ๋ถ๊ณผ ๊ฐ์ด ํ๋ค๋ ๊ฒ ๋๋ฌด ์ข์๊ณ ๊ฒฐ๊ณผ๋ฌผ์ ํ๊ฐํ๋ ๊ฒ์ด ์๋๋ผ ๊ณผ์ ์ ์ง
์คํ ์ ์์ด์ ๋๋ฌด ์ข์์ต๋๋ค.
์ด๋ฒ ๊ธฐํ๋ฅผ ํตํด ๋ค๋ฅธ ์ฌ๋์ ์ด๋ค ์์ผ๋ก ๊ฐ๋ฐ์ ํ๋์ง, ํ์ ์ด๋ ๋ฌด์์ธ์ง์
๋ํด์ ์๊ฒ ๋์๊ณ ์ ๊ฐ ์๊ฐํ์ง ๋ชปํ๋ ๋ถ๋ถ์ ๋ํด ์ดํดํ๊ณ , ์ง์ ์์ ํ ์
์์ด ์ข์์ต๋๋ค.
์ ํ๋๊ป์ ๋ถ์กฑํ ๋ถ๋ถ์ ๋ํด ์ธ์ธํ๊ฒ ์ค๋ช ํด์ฃผ์๊ณ ์ง์ ๋ฌธ์ ๋งํฌ๊น์ง ํด์ฃผ
์ ์ ๊ฐ๋์ ๋ง์ด ๋ฐ์๊ณ ์ ์ตํ ๋ด์ฉ์ด ๋ง์์ ๋ฐฉํ์ ํผ๋๋ฐฑํด์ฃผ์ ๋ถ๋ถ ๋ค์
์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. - ํจ๊ปํ ํ์ ํ์ฐ๋ถ์ ์ฝ๋ฉํธ
๋ด๊ฐ ์์ฑํ์ง ์์ ์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ๋ถํฐ ๊ฐ๊ด์ ์ธ ์๊ฒฌ์ ๋จ๊ธฐ๊ณ ์ ๋ ธ๋ ฅํ๋ ๊ณผ์
๊น์ง ์ด๋ฒ ์ฝ๋ ๋ฆฌ๋ทฐ ๊ฒฝํ์ด ์ฌ์ด ํธ์ ์๋์์ต๋๋ค.
ํ์ด์ฌ์ ๋ฌธ๋ฒ, ์ฝ๋ ์คํ์ผ, ์ค๊ณ ๋ฑ์ ๋ฆฌ๋ทฐ ํ ๋, ๊ฐ๋ฅํ ๊ณต์ ๋ฌธ์๋ฅผ ๊ทผ๊ฑฐ๋ก ๋ฆฌ๋ทฐ
๋ฅผ ์์ฑํ๊ณ ์ ๋ ธ๋ ฅํ์ต๋๋ค.
์ฝ๋ ๋ฆฌ๋ทฐ ๋ฌธํ๋ ์ฝ๋ ์์ ์์ ๋ฆฌ๋ทฐ์ด ๋ชจ๋ ๋ฐฐ์๊ฐ๋ ์ ์ด ๋ง์ ๋ฌธํ๋ผ๊ณ ์๊ฐํฉ
๋๋ค. ํ์ฐ๋๊ป์ ์ข์ ์๊ฒฌ์ ๋ง์ด ๋จ๊ฒจ์ฃผ์ ์ ์ ๋ํ ์ป์ด๊ฐ๋ ๊ฒ์ด ๋ง์์ต๋๋ค.
์์ผ๋ก๋ ํ์ ์ ์์ฃผ ํ์ฉํ์ฌ ์ฝ๋ ํ์ง์ ๋์ด๋ ์๋๋ฅผ ํด์ผ๊ฒ ๋ค๊ณ
๋ค์งํ๊ฒ ๋์์ต๋๋ค - ํ์์ ์ฝ๋ฉํธ
'๐ถ Experience > Life Story' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฐ๋ง ๊ฒฐ์ฐ] 2022๋ 3๋ถ์ - 2๋ถ ์ข์ ์ ํ (2) | 2022.12.30 |
---|---|
[์ฐ๋ง ๊ฒฐ์ฐ] 2022๋ 3๋ถ์ - 1๋ถ ์ข์ ๋ฐฉ๋ฒ (0) | 2022.12.25 |
[์ด์ผ๊ธฐ] ์ธ๊ฐ ์ค์ฌ์ ๋์์ธ ์ค๊ณ (0) | 2022.10.16 |
[ํ๊ณ ] ๋์ ์ด์ ์ค๋ ๋ด์ผ (0) | 2022.10.02 |
[์ํ] ์ํ์ผ๋ก ์๊ฐํ๊ธฐ - ์ค์ฆํค ๊ฐํ๋ก ์ง์, ์ต์ง์ ์ฎ๊น (0) | 2022.09.04 |