์ฑ ์ด๋ฆ์ ์ฐํ๋ง์ ๋๋ค. ๆญ(์ฐํ, ๋ ธ๋)์ -ring์ ๋ถ์ธ ๊ฒ์ผ๋ก, ํ๊ตญ์ด ํ์๊ฐ ํ๋์ ์ฝํ๊ณ ๋ฌด์์ ํ๋ ์ฑ์ธ์ง ์๋ฆฌ๋ก ์ ํฉ๋๋ค. ์ ์ฅ์ ์ด๋ฆ
Just์ ๋ฒ๋ค IDcom.coby.just๋ ๊ทธ๋๋ก ๋ก๋๋ค โ ๋ฐ๊พธ๋ฉด ๊ธฐ๊ธฐ์ ์ฑ ๋ฐ์ดํฐ์ ํ๋ก๋น์ ๋์ด ํจ๊ป ๋๊น๋๋ค.
์ข์ํ๋ ์ผ๋ณธ ์์ด๋ โ KAWAII LAB. ๋ค์ฏ ๊ทธ๋ฃน, iLiFE!, =LOVE โ ์ ๋ ธ๋ ๊ฐ์ฌ๋ก ์ผ๋ณธ์ด๋ฅผ ๊ณต๋ถํ๋ iPhone / iPad ์ฑ.
๋ ธ๋ ํ ๊ณก์ด ํ์ต ํ ์ธํธ์ ๋๋ค. ๊ฐ์ฌ ์ค์ ๋๋ฅด๋ฉด ๊ทธ ์ค์ด ๋จ์ด๋ก ์ชผ๊ฐ์ง๊ณ , ๋ด์ ๋จ์ด๋ ์ค์ ๋ก ๋์จ ๊ฐ์ฌ๋ฅผ ์๋ฌธ ์ผ์ ๊ฐ๊ฒฉ ๋ฐ๋ณต ๋ณต์ต์ผ๋ก ๋์ด๊ฐ๋๋ค.
tuist generateXcode 26.6 ์ด์, iOS 26 SDK, Swift 6.3 ๊ธฐ์ค์ ๋๋ค.
Apple Music์ ์ฑ์ ๋ถ์ฌ๋ฃ์ API ํค๊ฐ ์์ต๋๋ค. ๋์ App ID์ ์๋น์ค๋ฅผ ์ผ ์ฃผ์ด์ผ MusicKit์ด ๊ฐ๋ฐ์ ํ ํฐ์ ์ค์ค๋ก ๋ฐ๊ธํฉ๋๋ค.
- Apple Developer ๊ณ์ ์ Identifiers
์์
com.coby.justApp ID๋ฅผ ๋ง๋ค๊ณ MusicKit์ ์ผญ๋๋ค. - Xcode์์
Justํ๊น โ Signing & Capabilities โ ํ์ ์ ํํฉ๋๋ค. - ์ค์ ๊ธฐ๊ธฐ์์ ์คํํฉ๋๋ค. ์๋ฎฌ๋ ์ดํฐ์๋ Apple Music ๊ณ์ ์ด ์์ด ์นดํ๋ก๊ทธ ๊ฒ์๊ณผ ์ฌ์์ด ๋์ํ์ง ์์ต๋๋ค.
์ฒซ ์คํ ์ ์ฑ์ด Apple Music ์ ๊ทผ ๊ถํ์ ์์ฒญํฉ๋๋ค.
์์ด๋ โโโโโฌโ ์ด์ด์ ๊ณต๋ถํ๊ธฐ (์ง๋ ํ์)
โโ ๊ทธ๋ฃน ์นด๋ โ ์ํฐ์คํธ ์ฌ์ง ์์ ๊ทธ๋ฃน ์ (KAWAII LAB. / iLiFE! / =LOVE)
โ ๊ทธ๋ฃน ์ ํ
๊ทธ๋ฃน์ ๊ณก ๋ชฉ๋ก
โ ๊ณก ์ ํ
๋ด ๋
ธ๋ โโโโโ ๋ด๊ฐ ์ฐ ๊ณก ์ ๋ถ, ์ต์ ์. ์ง๋์ ํจ๊ป. ๊ธธ๊ฒ ๋๋ฌ ๋ชฉ๋ก์์ ๋นผ๊ธฐ
ํ๋ ์ด์ด โโโฌโ ์ฑํฌ ๊ฐ์ฌ + ํ๋ฆฌ๊ฐ๋ โ ์ค ํญ โ ๋จ์ด ์นด๋
โโ ๊ฐ์ฌ ์ฑํฌ ์กฐ์ (๊ณก๋ณ๋ก ์ ์ฅ)
โโ ํ ์ค ๊ตฌ๊ฐ ๋ฐ๋ณต
โโ ๊ฐ์ฌ ์ ์ฒดํ๋ฉด / ๊ฐ์ฌ ํฌ๊ธฐ 4๋จ๊ณ
โโ ๋จ์ด ์ผ๊ด ๋ด๊ธฐ ยท ์ด ๊ณก์ ๋จ์ด
โ ๋ด๋ฆฌ๋ฉด
๋ฏธ๋ํ๋ ์ด์ด (ํญ ๋ฐ ์) โ โฎ โถ โญ, ์ด์๋ ๋ชฉ๋ก ์์์ ์ด์ /๋ค์ ๊ณก
๋จ์ด์ฅ โโโโโฌโ CSV ๋ด๋ณด๋ด๊ธฐ (Ankiยท์คํ๋ ๋์ํธ)
โโ ํต๊ณ + JLPT ๋ถํฌ ์ฐจํธ
โโ JLPT ํํฐ + ์ ๋ ฌ โ ๋จ์ด ์์ธ
์ฐ์ต โโโโโโโฌโ ๋ณต์ต ์นด๋ (FSRS)
โโ ์ด๋ ค์ด ๋จ์ด ์ง์ค ยท ๋๋ค ๋ฏน์ค
โโ ๋น์นธ ์ฑ์ฐ๊ธฐ ยท ๋ป ๋ณด๊ณ ์ฐ๊ธฐ ยท ์ฌ์ง์ ๋ค
โโ ๋ฃ๊ณ ๋ฐ์์ฐ๊ธฐ
์ด ์ฑ์ ์ผ๊ณฑ ๊ทธ๋ฃน๋ง ๋ค๋ฃน๋๋ค. ๊ฒ์์ด ์๋ ๊ฒ์ด ๊ฒฐํจ์ด ์๋๋ผ ์ ์์ ๋๋ค โ ์ข์ํ๋ ๊ทธ๋ฃน์ด ์ฒซ ํ๋ฉด์ ์๊ณ ๋ ๋ฒ ๋๋ฌ ๊ณก์ ๋ฟ๋ ๊ฒ์ด ๊ฐ์ ์ ๋๋ค.
| ๊ทธ๋ฃน | Apple Music ID |
|---|---|
| FRUITS ZIPPER | 1617607581 |
| CANDY TUNE | 1671095780 |
| SWEET STEADY | 1729116371 |
| CUTIE STREET | 1763185226 |
| MORE STAR | 1855752654 |
| iLiFE! | 1578837625 |
| =LOVE | 1273762750 |
๊ทธ๋ฃน ์นด๋์ ์ฌ์ง๋ Apple Music ์ํฐ์คํธ ์กฐํ์์ ์ต๋๋ค โ ๊ณก ๋ชฉ๋ก๊ณผ ๊ฐ์ ์์ฒญ์ด๋ผ,
์นด๋๋ฅผ ๊ทธ๋ฆฐ ๋ค ๊ทธ๋ฃน์ ์ด๋ฉด ๋ ๋ฒ ๋ฌป์ง ์์ต๋๋ค(GroupArtworkStore๊ฐ ์คํ ์ค ํ ๋ฒ๋ง
๋ฐ์ ๋ก๋๋ค). ์ฌ์ง์ด ์๊ฑฐ๋ ์์ง ์ ์์ผ๋ฉด ๊ทธ๋ฃน ์ ๊ทธ๋ผ๋ฐ์ด์
์ด ์นด๋ ์์ฒด๋ผ, ์๋ฌด๊ฒ๋
๊น๋นก์ด์ง ์์ต๋๋ค.
๋ช ๋จ๋ง ์ฑ์ ์๊ณ ๊ณก์ Apple Music ์ํฐ์คํธ ์กฐํ๋ก ์ต๋๋ค โ ์ ์ฑ๊ธ์ด ๋์ค๋ฉด ์ฑ ์ ๋ฐ์ดํธ ์์ด ๋น๋๋ค. ์ด๋ฆ์ด ์๋๋ผ ID๋ก ์ฐพ๋ ์ด์ ๋ ๋๋ช ์ด์ธ์ ๋๋ค.
๋ชฉ๋ก๊ณผ ๊ทธ๋ฃน ํ๋ฉด์ ๋ฐ๊ณ ํ์ฌํ๊ฒ, ํ๋ ์ด์ด์ ๊ฐ์ฌ๋ ๋คํฌ๋ฅผ ์ ์งํฉ๋๋ค. ๊ฐ์ฌ๋ ์ด๋์ด ๋ฐฐ๊ฒฝ์์ ์ฝ๊ธฐ๊ฐ ํจ์ฌ ํธํ๊ณ , ์ด ์ฑ์์ ๊ฐ์ฅ ๊ธด ์๊ฐ์ด ๊ฐ์ฌ๋ฅผ ์ฝ๋ ์๊ฐ์ ๋๋ค.
๋ ํค์ ํ๋ ํธ ํ๋๊ฐ ์์ ๋ชจ๋๋ฅผ ๋ฐ๋ผ ๋ฐ๋๋ ๊ฒ์ผ๋ก ๊ตฌํ๋ฉ๋๋ค.
JustTheme.Ink์ Surface๊ฐ ๋คํฌยท๋ผ์ดํธ ๊ฐ์ ๊ฐ๊ฐ ๊ฐ๊ณ ๊ทธ๋ฆฌ๋ ์๋ฆฌ์์ ํด์๋๋ฏ๋ก,
๋ชฉ๋ก ํ๋ฉด์ ๋ฃจํธ์ .environment(\.colorScheme, .light) ํ ์ค์ ๋ถ์ด๋ ๊ฒ์ผ๋ก
๋ค์งํ๊ณ ๊ทธ ์์ ๋ชจ๋ ๋ผ๋ฒจ์ด ๋ฐ๋ผ์ต๋๋ค. ํ๋ฉด๋ง๋ค ์์ญ ๊ฐ์ ์ ์ฐธ์กฐ๋ฅผ ๊ณ ์น๋
๋์ ํ ๊ณณ์ ๊ณ ์ณค์ต๋๋ค.
์ฑ ์์ด์ฝ์ ํํธ ์์ ใๆญใ์ ๋ฐ์ง์ ์
์
๋๋ค(Scripts/make-icon.py). ํ์๋ง์ผ๋ก๋
์ผ๋ณธ์ด๋ฅผ ๋งํ๊ณ ์์ด๋์ ๋งํ์ง ๋ชปํ๊ณ , ํํธ๋ง์ผ๋ก๋ ๊ทธ ๋ฐ๋์์ต๋๋ค. ๋งํ์ ๊ผฌ๋ฆฌ๋
์๋ํ๋ค๊ฐ ๋บ์ต๋๋ค โ ํํธ๋ ์ด๋ฏธ ๋พฐ์กฑํ ๋์ด ์์ด์ ๊ผฌ๋ฆฌ๋ฅผ ๋ถ์ด๋ฉด ๋์ด ๋์ด ๋๊ณ ,
์์ ํฌ๊ธฐ์์ ๋ ๋๋ง ์ค๋ฅ์ฒ๋ผ ์ฝํ์ต๋๋ค.
Just (์ฑ)
โโโ JustCore ๋๋ฉ์ธ ๋ชจ๋ธ, SwiftData ์คํค๋ง, FSRS ์ค์ผ์ค๋ฌ
โโโ JustDesign ํ๋ ํธ ์ถ์ถ, ๋ฉ์ ๋ฐฐ๊ฒฝ, ํ๋ฆฌ๊ฐ๋ ์กฐํ
โโโ JustMusic MusicKit ๊ฒ์ + ApplicationMusicPlayer
โโโ JustLyrics LRCLIB ํด๋ผ์ด์ธํธ, LRC ํ์
โโโ JustSensei ํํ์ ๋ถ์, ์ฝ๊ธฐ, ์จ๋๋ฐ์ด์ค ํด์ ์์ง
| ์ถ์ฒ | ๋น๊ณ | |
|---|---|---|
| ๊ณกยท์จ๋ฒยท์ํธ์ํฌ | Apple Music (MusicKit) | ํค ๋ถํ์, ์ฟผํฐ ์์ |
| ์ฌ์ | ApplicationMusicPlayer | ๊ตฌ๋ ์์ผ๋ฉด 30์ด ๋ฏธ๋ฆฌ๋ฃ๊ธฐ๋ก ๋์ฒด |
| ๊ฐ์ฌ | LRCLIB | ๋ฌด์ธ์ฆ, ์ฑํฌ LRC |
| ํด์ | Apple Intelligence (์จ๋๋ฐ์ด์ค) | ๋น ๋ฅด๊ฒ/์ ํํ๊ฒ ์ ํ, ์ฌ์ + ์์คํ ๋ฒ์ญ |
| ํ์ ์ํ | ๋ฒ๋ค (1,591์) | ํ๊ตญ์ด ํ์ต์์ฉ |
๋ ๊ฐ์ง๊ฐ ์ด๊ธ๋ ์ ์๊ณ ์์ธ์ด ๋ค๋ฆ ๋๋ค.
๋ฏธ๋ฆฌ๋ฃ๊ธฐ์์๋ ๊ฐ์ฌ๊ฐ ๋ฐ๋ผ๊ฐ์ง ์์ต๋๋ค. ๊ตฌ๋ ์ด ์์ผ๋ฉด ์ฌ์์ 30์ด ํด๋ฆฝ์ด๊ณ , ๊ทธ ํด๋ฆฝ์ ๊ณก ์ค๊ฐ์์ ์๋ ค ๋์ต๋๋ค(๋ฏธ๋ฆฌ๋ฃ๊ธฐ ์ฒซ 1์ด์ ํ๊ท ์๋์ด ํด๋ฆฝ ์ ์ฒด ํ๊ท ๊ณผ 0.3~3.5dB ์ฐจ์ด๋ฟ - ๊ณก์ ์์์ด๋ผ๋ฉด ๋ฌด์์์ ์ถ๋ฐํฉ๋๋ค). Apple์ ์ด๋์ ์๋๋์ง ๊ณต๊ฐํ์ง ์์ผ๋ฏ๋ก ํด๋ฆฝ ์๊ฐ์ ๊ณก ์๊ฐ์ผ๋ก ํ์ฐํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๊ทธ๋์ ํ์ฐํ์ง ์๊ณ , ๊ฐ์กฐยท์๋ ์คํฌ๋กคยท์ค ํญ ์ด๋ยท๊ตฌ๊ฐ ๋ฐ๋ณต์ ๋ชจ๋ ๋ฉ์ถ๊ณ ์ด์ ๋ฅผ ํ ์ค๋ก ํ์ํฉ๋๋ค. ๊ฐ์ฌ๋ ๊ทธ๋๋ก ์ฝ๊ณ ๋๋ฌ ๋ป์ ๋ณผ ์ ์์ต๋๋ค.
์ ๊ณก ์ฌ์์์ ๋ช ์ด ์ด๊ธ๋๋ ๊ฒ์ ์ํธ๊ฐ ๊ทธ๋ ๊ฒ ์ ํ ๊ฒ์
๋๋ค. ์ํธ๋ฅผ ๋ง๋
์ฌ๋์ด ํ ์ค์ ์์์ ์ด๋๋ก ์ก์๋์ง(์ฒซ ๋ฐ, ์ฒซ ์์ , ๊ทธ ์์ ์จ)๋ ๋ฐ์ดํฐ์
์๊ณ , ๋์กฐํ ๋ ๋ฒ์งธ ์ถ์ฒ๋ ์์ด์ ์๋์ผ๋ก๋ ์ฐพ์ ์ ์์ต๋๋ค. ๋์ ๊ณก๋ณ๋ก
StudySong.lyricsOffset์ ์ ์ฅ๋๋ ๋ณด์ ๊ฐ์ ์ฌ์ฉ์๊ฐ ์ ํฉ๋๋ค - ๋ค์ด์ผ๋ก
0.1/0.5์ด์ฉ ๋ฐ๊ฑฐ๋, ์ง๊ธ ๋ค๋ฆฌ๋ ์ค์ ๋๋ฌ ํ ๋ฒ์ ๋ง์ถฅ๋๋ค. ์ฑ์ด ์ง๊ณ ์๋
์ค์ด ์๋๋ผ ์ค์ ๋ก ๋ค๋ฆฌ๋ ์ค์ ๋๋ฌ์ผ ํฉ๋๋ค(์ง๊ณ ์๋ ์ค์ ์ ์์ ํ๋ฆฐ ์ค์
๋๋ค).
ยฑ5์ด๋ฅผ ๋๊ธฐ๋ฉด ๋ฐ์ง ์์ต๋๋ค - ๊ทธ๊ฑด ํ์ด๋ฐ์ด ์๋๋ผ ๋ค๋ฅธ ํธ์ง๋ณธ์ด๋ผ๋ ๋ป์
๋๋ค.
๊ด๊ณ ๋ ํ๋๋ฟ์ ๋๋ค โ ๊ณก์ ๋ถ์ํ๋ฉฐ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ ๋ฉด ๊ด๊ณ ํ ๋ฒ. ๊ฐ์ฌ๊ฐ ์์ง ์ค๋น๋์ง ์์๊ณ ๋ฌด์์ ํด๋ ๋๊ธฐ๊ฐ ์ค์ง ์๋, ํ๋ฉด์ ์ฐ์ง ์๋ ์ ์ผํ ์๊ฐ์ ๋๋ค.
๋ชฉ๋ก ์๋์ ๋ถ์ด ์๋ ๋ฐฐ๋๋ค์ ๊ฑท์ด๋์ต๋๋ค. ๋ง์ง๋ง ํ ๋ฐ์ ๋ ๋ ๋ชจ๋ ํ๋ฉด ๋์ ์ก๋์ฌ๋๋ก ์ฝํ๊ณ , ๋ฒ์ด๋ ์ ์์ต๋๋ค.
๋์ฐ์ง ์๋ ๊ณณ๋ ์ ์ด ๋ก๋๋ค. ๊ฐ์ฌ์ ํ๋ ์ด์ด ์, ๋ฌธ์ ๊ฐ ๋ ์๋ ํ๋ฉด, ๊ทธ๋ฆฌ๊ณ ๋น ๋ฅธ ๋ฒ์ญ / AI ๋ฒ์ญ์ ๊ณ ๋ฅด๋ ์ง๋ฌธ ์ โ ๊ทธ๊ฑด ๋ ์๊ฐ ๋ตํ๋ ์ค์ธ ์ง๋ฌธ์ ๋๋ค. ๊ทธ๋์ ์ ํ์ด ๋๋๊ณ ๋ถ์์ด ์ค์ ๋ก ์์๋ ๋ค์๋ง, ๋จ์ ์ค์ด 5์ค ์ด์์ผ ๋๋ง ๋์๋๋ค. ๋ ์ ์ผ๋ฉด ๊ด๊ณ ๊ฐ ๋ซํ๊ธฐ ์ ์ ๋ถ์์ด ๋๋ฉ๋๋ค.
๊ณก๋น ํ ๋ฒ, ๊ทธ๋ฆฌ๊ณ 2๋ถ ์์ ๋ ๋ฒ์ ์์ต๋๋ค. ๊ทธ๋ฃน์ ๊ณก์ ๋๊ฒจ ๋ณด๋ ๋ ์๊ฐ ๋งค ๊ณก ๊ด๊ณ ๋ฅผ ๋ณด๋ ์ผ์ ์์ด์ผ ํฉ๋๋ค.
GADApplicationIdentifier์ ๊ด๊ณ ๋จ์ ID๋ Google ๊ณต๊ฐ ํ
์คํธ ๊ฐ์
๋๋ค.
์ค์ ์์ต์๋ ๊ณ์ ๋ณด์ ์์ ID๊ฐ ํ์ํฉ๋๋ค. ๋ง์ถค ๊ด๊ณ ๋ ์ฐ์ง ์์ผ๋ฏ๋ก App
Tracking Transparency ํ๋กฌํํธ๋ ๋์ฐ์ง ์์ต๋๋ค.
Apple Music API๋ ๊ฐ์ฌ๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ์์ ์ฑ์ ๊ฐ์ฌ๊ฐ ๋ณด์ด๋ ๊ฒ๊ณผ ๋ณ๊ฐ๋ก ๊ณต๊ฐ API์๋ ์ด๋ ค ์์ง ์์, ์ฑํฌ ๊ฐ์ฌ๋ LRCLIB์์ ๋ฐ์ต๋๋ค.
๊ณก์ ์ด๋ฉด ๊ทธ ๊ณก์ ๋ธ๋ฆฐ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๊ธฐ์ ๋จ์ต๋๋ค.
| ๋ฐ์ดํฐ | ์์น | ๋น๊ณ |
|---|---|---|
| ๊ฐ์ฌ (LRC) | StudySong.lyricsData |
์คํ๋ผ์ธ ์ฌ์ด๋ ๊ฐ๋ฅ |
| ์ค๋ณ ํด์ ์ ์ฒด | StudySong.analysisData |
๋ฒ์ญ + ๋จ์ด + ๋ฌธ๋ฒ. ๋ชจ๋ธ์ ๊ณก๋น ํ ๋ฒ๋ง ๋๋ค |
| ๋์ด๋ ํ์คํ ๊ทธ๋จ | StudySong.levelCounts |
๋ชฉ๋ก์์ ํด์์ ๋์ฝ๋ํ์ง ์์๋ ๋๋๋ก ๋น์ ๊ทํ |
| ๋จ์ดยท๋ณต์ต ์ผ์ | VocabEntry / ReviewState |
|
| ์จ๋ฒ์ํธ | Caches/Artwork | URL ํด์ ํ์ผ๋ช . ์์คํ ์ด ํ์ ๊ฐ๋ฅ |
๊ณก์ ์ฒ์ ์ด๋ฉด ์ ๊ณก ํด์์ด ์๋์ผ๋ก ์์๋ฉ๋๋ค. ์ค๋ง๋ค ๋๋ฌ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ํ ๋ฒ์ ๋ง๋ค์ด ์ ์ฅํฉ๋๋ค. ์งํ๋ถ์ ์ฆ์ ๊ธฐ๋ก๋๋ฏ๋ก ์ค๊ฐ์ ๋ซ์๋ ๋ฒ๋ ค์ง์ง ์๊ณ , ๋ค์ ์ด๋ฉด ๋จ์ ์ค๋ถํฐ ์ด์ด์ ํฉ๋๋ค.
ํด์์ ๋น ๋ฅด๊ฒ ํ๋ ๊ฒ ์ธ ๊ฐ์ง๊ฐ ๋ค์ด ์์ต๋๋ค. ํ๋ ด์ฒ๋ผ ๊ฐ์ ์ค์ด ๋ฐ๋ณต๋๋ฉด ํ ๋ฒ๋ง ๋ชจ๋ธ์ ๋ฌป๊ณ ๋๋จธ์ง ์ธ๋ฑ์ค์ ๋ณต์ฌํฉ๋๋ค. ๋ชจ๋ธ ์ธ์ ์ ์ค๋ง๋ค ์๋ก ๋ง๋ค์ง ์๊ณ 8์ค๋ง๋ค ์ฌํ์ฉํฉ๋๋ค โ ๋งค๋ฒ ๋ง๋ค๋ฉด ์ด๋ค์ฏ ์ค์ง๋ฆฌ ์ง์๋ฌธ์ ๊ทธ๋๋ง๋ค ๋ค์ ์ฒ๋ฆฌํฉ๋๋ค. ์ ์ฅ์ ๋ค์ฏ ์ค๋ง๋ค ํฉ๋๋ค(๋งค ์ค ์ ์ฅ์ ๊ณก ๊ธธ์ด์ ๋ํด ์ ๊ณฑ์ผ๋ก ๋์ด๋จ).
๊ณก์ ์ด ๋ ์์ง ๋ฒ์ญํ ์ค์ด ๋จ์ ์์ผ๋ฉด **ใ์ด๋ป๊ฒ ๋ฒ์ญํ ๊น์?ใ**๋ฅผ ๋จผ์ ๋ฌป์ต๋๋ค โ ใ๋น ๋ฅด๊ฒใ(๋ช ์ด, ๋ปยท๋ฌธ๋ฒ์ ์ ํ, ๋ฌธ์ฅ์ ์ง์ญ์ ๊ฐ๊น์)์ ใAI๋ก ์ ํํ๊ฒใ(์๋ค ์ค๊น์ง ์ฝ์ด ์์ฐ์ค๋ฝ๊ฒ, ๋ช ๋ถ) ๋ ์นด๋์ ๊ฐ๊ฐ ํ ๋ฌธ์ฅ ์ค๋ช ์ด ๋ถ์ต๋๋ค. ์ค์ ์ ๋ฌปํ ์ ํ๊ธฐ๋ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์๋ฌด๋ ์ฐพ์ง ์์ผ๋ฏ๋ก, ๋ต์ด ํ์ํ ๊ทธ ์๊ฐ์ ๋ฌป์ต๋๋ค. ใ๋ค์์๋ ์ด๊ฑธ๋ก ์ด๊ธฐใ๋ฅผ ์ผ๋ฉด ๋ ๋ฌป์ง ์๊ณ , ์ค์ ์์ ๋ค์ ์ผค ์ ์์ต๋๋ค. ์ด๋ฏธ ๋ค ๋ฒ์ญ๋ ๊ณก์ ๋ฌป์ง ์์ต๋๋ค โ ๋ต์ด ๋ฐ๊ฟ ๊ฒ์ด ์์ต๋๋ค.
ํ๋ฉด ๋ฌธ๊ตฌ์๋ ๊ธฐ์ ์ฉ์ด๋ฅผ ์ฐ์ง ์์ต๋๋ค. ใAI ๋ฒ์ญใ๊ณผ ใ๋น ๋ฅธ ๋ฒ์ญใ, ใ๊ฐ๋จ ๋ฒ์ญใ์ด ์ ๋ถ์ ๋๋ค. ์ค ์นด๋์ ๋ฒํผ๋ ใ์ ํํ๊ฒ ๋ค์ ๋ฒ์ญใ์ ๋๋ค.
๊ธฐ๋ค๋ฆฌ๊ธฐ ์ซ์ผ๋ฉด **'์ง๊ธ ๋ฃ๊ธฐ'**๋ก ๋ฐ๋ก ๋์ด๊ฐ ์ ์๊ณ , ๋จ์ ์ค์ ๋ค์ผ๋ฉด์
์ด์ด์ ํด์ํฉ๋๋ค. ๊ธด ๊ณก์ ์์์ ๋์ด๊ฐ๋๋ค โ ์ฒซ ๋ ์ค์ ๋๊ธด ๋ค ๋จ์ ์๊ฐ์ด
30์ด๋ฅผ ๋์ผ๋ฉด ํ๋ ์ด์ด๋ฅผ ๋จผ์ ์ด๊ณ ๋๋จธ์ง๋ฅผ ๋ค์์ ์ฑ์๋๋ค(WaitBudget). ์์ฑ๋
๊ณก์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ฌ์ ํ ๊ธฐ๋ณธ์ด๊ณ , ๋นจ๋ฆฌ ๋๋๋ ๊ณก์ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค โ ์ฌ๋์๊ฒ
์๊ตฌํ ์ ์๋ ๋๊ธฐ์ ๊ธฐ๊ธฐ๊ฐ ํ ์ ์๋ ๋๊ธฐ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์
๋๋ค.
์๋๋ฅผ ์ํด ์ ํ๋๋ฅผ ์กฐ๊ธ ๋ด์ค ๊ฒ์ด ์ธ ๊ฐ์ง ์์ต๋๋ค. ๋ฌธ๋ฒ ๋ ธํธ๋ฅผ ๋ ์ด์ ๋ฌป์ง ์์ต๋๋ค โ ์ธก์ ์์ ์ํ ์ค ์ค ๋ค์ฏ~์ผ๊ณฑ ์ค์ด ๋น์ด ์์๋๋ฐ, ๊ฑฐ์ ๋น๋ ์นธ๋ ๋ชจ๋ธ์ด ๋งค ์ค ์ง๋๊ฐ๋ ์นธ์ ๋๋ค. ๋จ์ด๋ ํ ์ค์ ์ต๋ ์ธ ๊ฐ์ ๋๋ค(์ ์๋ ์ฌ์ฏ). ๊ทธ๋ฆฌ๊ณ greedy ๋์ฝ๋ฉ์ ์๋๋ค โ ํ๋ณธ ์ถ์ถ ๋น์ฉ์ด ์ฌ๋ผ์ง๊ณ , ๋ฌด์๋ณด๋ค ๊ฐ์ ์ค์ด ๊ฐ์ ๋ต์ ์ฃผ๋ฏ๋ก ํ๋กฌํํธ๋ฅผ ๋ฐ๊ฟจ์ ๋ ์ซ์๊ฐ ์์ง์ด๋ฉด ๊ทธ๊ฒ์ด ์ด์ ๊ฐ ์์ด ์์ง์ธ ๊ฒ์ ๋๋ค(์ ์๋ ์ก์์ ๋๊ฒจ๋ณด๋ ค๊ณ ์ธ ๋ฒ์ฉ ๋๋ ค์ผ ํ์ต๋๋ค).
์์ด ์ค์ ๋ฒ์ญ ํ ์นธ๋ง ๋ฌป์ต๋๋ค. ๋จ์ด์ ๋ฌธ๋ฒ์ ์ด์ฐจํผ ๋ฒ๋ฆฌ๋ฏ๋ก, ๋ฒ๋ฆด ์ถ๋ ฅ์ ์์ฑํ๋๋ผ ๊ธฐ๋ค๋ฆด ์ด์ ๊ฐ ์์ต๋๋ค.
์๋ ํด์ ์์ ์ ์ค์ ์์ ๊ณ ๋ฆ ๋๋ค โ ํญ์ / ์ ์ ๋ ฅ ๋ชจ๋๊ฐ ์๋ ๋(๊ธฐ๋ณธ) / ์ ํจ. ๊ธฐ๋ณธ๊ฐ์ด ์ ์ ๋ ฅ ๋ชจ๋๋ฅผ ๋ฐ๋ฅด๋ ์ด์ ๋, ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์์คํ ์ ์๋์ง ์ฌ์ฉ ๋ฐฉ์นจ์ ๋งํด ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ต ์ฑ์ด ๊ทธ๊ฑธ ์์ง๋ฌ ํ๋จํ ์ด์ ๊ฐ ์์ต๋๋ค.
์์ด ๊ตฌ์ ์ ๋ฒ์ญ๋ง ํฉ๋๋ค. J-POP์ ํ๋ ด์ด ํต์งธ๋ก ์์ด์ธ ๊ฒฝ์ฐ๊ฐ ํํฉ๋๋ค. ๊ทธ
์ค๋ ๋
ธ๋์ ์ผ๋ถ๋ผ ๋ป์ ์๋ ค์ฃผ์ง๋ง, ๊ฑฐ๊ธฐ์ ์ธ์ธ ์ผ๋ณธ์ด ๋จ์ด๋ ์์ต๋๋ค โ
baby์ ๊ฐ๋ ์ฝ๊ธฐ๋ฅผ ์ง์ด ๋ถ์ธ ์นด๋๋ ๋ณต์ต ์ผ์ ์ ๋ค์ด๊ฐ์ ๊ณ์ ๋์์ต๋๋ค.
๊ฐ๋๋ ํ์๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ์ผ๋ณธ์ด๋ก ๋ณด๊ณ (๋น์จ์ด ์๋๋๋ค โ ์์ด ์ค์ ์์ธ
์ผ๋ณธ์ด ํ ๋จ์ด๋ ๋ฐฐ์ธ ๊ฐ์ด ์์ต๋๋ค), ์์ธ ์ค์์๋ ์ผ๋ณธ์ด ๋จ์ด๋ง ๋จ๊น๋๋ค.
์คํจํ ์ค์ ์ง์ ์ด ์๋ ๋์ ๋ค์ ์๋ํฉ๋๋ค. ๋จ์ ์ค์ด ์์ด์ง ๋๊น์ง ๋๋ฉด ํญ์ ์คํจํ๋ ์ค์์ ์์ํ ๋์์ค์ง ์์ผ๋ฏ๋ก, ์กฐ๊ฑด์ ์๋ฃ๊ฐ ์๋๋ผ ์ง์ ์ ๋๋ค โ ํ ๋ฐํด๊ฐ ์๋ฌด๊ฒ๋ ํด๊ฒฐํ์ง ๋ชปํ๋ฉด ๋์ ๋๋ค. ํ ์ค๋น ์ต๋ ํ ๋ฐํด์ด๋ฏ๋ก ๋ฐ๋์ ๋๋ฉ๋๋ค.
๊ทธ๋๋ ๋จ์ ์ค์ ์์คํ ๋ฒ์ญ์ผ๋ก ์ฑ์๋๋ค. Apple Intelligence๋ ์ต์ ๊ธฐ๊ธฐ๋ฅผ ์๊ตฌํ์ง๋ง Apple ๋ฒ์ญ์ ๊ทธ๋ ์ง ์์ต๋๋ค. ์์ ๊ธฐ๊ธฐ์์๋ ํด์์ด ์ฌ์ ๋ป์์ ๋ฉ์ถ๊ณ ๋ฒ์ญ์ด ์์ ์์๋๋ฐ, ๊ทธ๊ฒ ์ ์ ํ์ํ ์ ๋ฐ์ ๋๋ค. ๋์์ค๋ ์๋ ์ง์ญ์ด์ง๋ง ๋ฒ์ญ์ ๋ฒ์ญ์ ๋๋ค.
๊ฐ์ ์ธ ๊ฐ์ง ์ง๋ฌธ โ ๋จ์ด๊ฐ ๋ฌด์จ ๋ป์ธ์ง, ์ด๋ค ๋ฌธ๋ฒ์ ์ฐ๋์ง, ์ค์ด ๋ฌด์จ ๋ง์ธ์ง โ ์ ์๋ก ๋ค๋ฅธ ๊ฒ์ด ๋ตํฉ๋๋ค.
| ๋น ๋ฅด๊ฒ | ์ ํํ๊ฒ | |
|---|---|---|
| ๋จ์ด | ๋ฒ๋ค ์ฌ์ | ๋ชจ๋ธ + ์ฌ์ ์ด ์ฌ์ค ๊ต์ |
| ๋ฌธ๋ฒ | ํจํด ๋งค์นญ | ํจํด ๋งค์นญ |
| ๋ฌธ์ฅ | ์์คํ ๋ฒ์ญ(์ง์ญ) | ๋ชจ๋ธ์ด ์๋ค ์ค๊น์ง ์ฝ๊ณ ํด์ |
| ํ ๊ณก | ๋ช ์ด | ๋ช ๋ถ |
์๋๋ ์ ํ์ด ์๋๋ผ ๊ธฐ๊ธฐ ์ฌ์์ด์์ต๋๋ค. Apple Intelligence๊ฐ ์์ผ๋ฉด ์ฌ์ ์ผ๋ก ๋จ์ด์ง๊ณ , ์์ผ๋ฉด ๊ฑฐ์ ํ ๋ฐฉ๋ฒ์ด ์์์ต๋๋ค. ํ์ง๋ง ๊ทธ ํด๋ฐฑ์ ๊ตฌํ ๊ธฐ๊ธฐ๋ง์ ์ํ ๊ฒ์ด ์๋๋๋ค โ ํ๋ ด์ ์ง๊ธ ๋ณด๊ณ ์ถ์ ์ฌ๋, ๋ฐฐํฐ๋ฆฌ๊ฐ ์๊น์ด ์ฌ๋, ์ด๋ฏธ ํ ๋ฒ ์ฝ์ ๊ณก์ ๋ค์ ์ฌ๋ ์ฌ๋์๊ฒ ๋๋ฆฐ ์ชฝ์ ์ ํํ์ง ์์ ๋น์ฉ์ ๋๋ค. ๊ทธ๋์ ํด๋ฐฑ์ด ๋ชจ๋๊ฐ ๋๊ณ , ๋ชจ๋๊ฐ ์ค์ ์ด ๋์์ต๋๋ค.
๋๊ธฐ ํ๋ฉด์๋ ์ ํ ๋ฒํผ์ด ์์ต๋๋ค. ์กฐ๊ธํจ์ ์ค์ ํ๋ฉด์ด ์๋๋ผ ๊ธฐ๋ค๋ฆฌ๋ ์๋ฆฌ์์ ์๊ธฐ๊ณ , ๊ฑฐ๊ธฐ์ ์ฐพ์ ์ ์๋ ๋ชจ๋๋ ์๋ ๋ชจ๋์ ๋๋ค. ๋๋ฅด๋ฉด ์งํ ์ค์ธ ์ค๋ง ๋ชจ๋ธ์ด ๋๋ด๊ณ ๋๋จธ์ง๋ ์ฆ์ ์ฑ์์ง๋๋ค. ์ด๋ฏธ ํด์๋ ์ค์ ์ข์ ๋ต์ ๊ทธ๋๋ก ์ ์งํฉ๋๋ค.
๋น ๋ฅด๊ฒ๋ก ํด์ํ ๊ณก์ ์ ํํ๊ฒ๋ก ๋ฐ๊พธ๋ฉด ๋ค์ ํด์ํฉ๋๋ค. ์ฌ์ ๊ฒฐ๊ณผ๋ ๋ฒ์ญ์ ๊ฐ๊ณ ์์ด์, ๋ฒ์ญ์ด ์์ผ๋ฉด ์๋ฃ๋ผ๋ ๊ธฐ์กด ๊ท์น๋ง์ผ๋ก๋ ๋น ๋ฅด๊ฒ ์ฝ์ ๊ณก์ด ์์ํ ๋น ๋ฅธ ์ํ๋ก ๋จ์์ต๋๋ค. ๋ฐ๋ ๋ฐฉํฅ์ ๋์นญ์ด ์๋๋๋ค โ ๋น ๋ฅด๋ ค๊ณ ์ด๋ฏธ ๋ฐ์ ๋ ์ข์ ๋ต์ ๋ฒ๋ฆด ์ด์ ๋ ์์ต๋๋ค.
๋ชจ๋ธ์ ๋ฌธ๋ฒ ๋ ธํธ๋ฅผ ์์ฒญํ๋ ๊ฒ์ ๊ทธ๋ง๋์ต๋๋ค. ์ํ ์ค ์ค ๋ค์ฏ~์ผ๊ณฑ ์ค์ด ๋น ๋ฐฐ์ด๋ก ๋์์๊ณ , ์ฐ์ด์ง ์๋ ํ๋๋ ์์ฑ๋๋ ์ถ๋ ฅ๋งํผ ๋น์ฉ์ ๋ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ทธ๊ฑธ ๋์ผ๋ฉด ๋ฌธ๋ฒ ๋ชจ์๋ณด๊ธฐ ํ๋ฉด์ ๊ณต๊ธ์ด ์ฌ๋ผ์ง๋๋ค.
๊ทธ๋์ ์ฐพ์ต๋๋ค. ์ผ๋ณธ์ด ๋ฌธ๋ฒ ํจํด์ ์ ํํ๊ณ ์ ์ ๋ฆฌ๋ ์งํฉ์ด๊ณ , ์ด๋ค ์ค์ด ใใใฆใใพใใ๋ฅผ ํฌํจํ๋์ง ์๋์ง๋ ํ๋จ์ด ์๋๋ผ ์ฌ์ค์ด๋ฉฐ, ๊ทธ๊ฒ ๋ฌด์จ ๋ป์ธ์ง๋ ๊ณก์ ๋ฐ๋ผ ๋ฌ๋ผ์ง์ง ์์ต๋๋ค. ์ด ํ์ผ์ ๋๋จธ์ง๊ฐ ์ด๋ฏธ ํ๋ ๋ถ์ ๊ณผ ๊ฐ์ต๋๋ค โ ํ๋จ์ ๋ชจ๋ธ, ์ฌ์ค์ ๊ณ ์ ๋ฐ์ดํฐ.
์ค์ ๋ง์ถ ์ค๋ช ์ ํฌ๊ธฐํ๋ ๋์ , ํญ์ ์๋ํ๊ณ ํญ์ ๊ฐ์ ๋ง์ ํ๊ณ ์์ฑ ๋น์ฉ์ด 0์ ๋๋ค. ๊ธด ํจํด์ ์๊ธฐ๊ฐ ํฌํจํ ์งง์ ํจํด์ ๊ฐ๋ฆฝ๋๋ค โ ใใชใใใ๋ ใใชใใ์ ๋ํ ์์ ์ด ์๋๋๋ค. ํ ์ค์ ์ต๋ 3๊ฐ์ธ๋ฐ, ์งง์ ๊ฐ์ฌ ํ ์ค์ ๋ ธํธ ์ฌ๋ ๊ฐ๋ ์์ ์ด ์๋๋ผ ์์์ ๋๋ค.
๋ชจ๋ธ์ด ์๋ ๊ธฐ๊ธฐ์์๋ ๋ชจ๋ธ์ด ๋จผ์ ๋ค ์๋ํ ๋ค์ ๋จ์ ์ค๋ง ์ฑ์๋๋ค. ๊ทธ๋ฌ์ง ์์ผ๋ฉด ์์ ์ฌ์๋๊ฐ ๋ฌด์๋ฏธํด์ง๊ณ ์ผ์์ ์คํจ๊ฐ ์ง์ญ์ผ๋ก ๊ตณ์ต๋๋ค.
Translation ํ๋ ์์ํฌ๋ ๋ทฐ ๋ฐ์์ init(installedSource:target:)๋ง ์ธ ์
์์ด์, ์ธ์ดํฉ ๋ค์ด๋ก๋๋ ์ค์ ํ๋ฉด์ ๋ฒํผ(.translationTask)์์ ์์ํฉ๋๋ค โ
์์คํ
ํ๋กฌํํธ๊ฐ ๋จ๋ ์ผ์ด๋ผ ํด์ ๋์ค์ด ์๋๋ผ ์ฌ์ฉ์๊ฐ ์ฐ ํ๋ฉด์ ์์ด์ผ
๋ง์ต๋๋ค. ์ค์์น๋ก ๋ ์ ์๊ณ ๊ธฐ๋ณธ์ ์ผฌ์
๋๋ค.
Report/SenseiReport.swift๋ ํ
์คํธ๊ฐ ์๋๋ผ ์ธก์ ์ฅ์น์
๋๋ค. ๊ณ ์ ๋ ๊ฐ์ฌ์
์ค์ ํด์๊ธฐ๋ฅผ ๋๋ ค ๋์จ ๊ฒ์ ์ฐ๊ณ , ์
์ ์๋ ์คํจ(์ด์ ์ค ์นจ๋ฒ, ๊ธ์ง์ด,
๋ฒ์ญ์ ๋จ์ ์ผ๋ณธ์ด, ๋ถํ๋ฆผ, ์ฌ์ ์ผ๋ก ๋์ฒด๋ ์ค)์ ์์ ์๊ฐ์ ํ๋ก ๋
๋๋ค.
ํ์ง์ ๋จ์ธํ ์ ์์ง๋ง ์ด ์ซ์๋ค์ ๋จ์ธํ ์ ์๊ณ , ๋ ์คํ์ ๋น๊ตํ๋ ๊ฒ์ด
ํ๋กฌํํธ๋ ๋ฌถ์ ๋ณ๊ฒฝ์ ํ๋จํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์
๋๋ค.
๋ณ๋ ํ๊น(JustReport)์ด๊ณ ์ฑ์ด ํธ์คํธ์
๋๋ค. ๊ทธ๋์ ์ค๊ธฐ๊ธฐ์์ ๋๋ฆด ์
์์ต๋๋ค โ ์๋ฎฌ๋ ์ดํฐ์ ์จ๋๋ฐ์ด์ค ๋ชจ๋ธ ์์ฐ์ ํ๋ฃจ์ ์ธ ๋ฒ ์ฌ๋ผ์ก๊ณ , ๊ทธ๋๋ง๋ค
๋ณด๊ณ ์๋ ใ๋ชจ๋ ์ค์ด ์ฌ์ ์ผ๋ก ๋์ฒด๋์ต๋๋คใ๋ผ๊ณ ์ค์ค๋ก ๋งํฉ๋๋ค.
# ์๋ฎฌ๋ ์ดํฐ
xcodebuild -workspace Just.xcworkspace -scheme JustReport \
-destination 'platform=iOS Simulator,name=iPhone 17' test
# ์ค๊ธฐ๊ธฐ (๋ชจ๋ธ์ด ์ง์ง์ธ ๊ณณ). ๊ธฐ๊ธฐ ์ ๊ธ์ ํ์ด์ผ ํฉ๋๋ค.
xcodebuild -workspace Just.xcworkspace -scheme JustReport \
-destination 'platform=iOS,name=Coby' -allowProvisioningUpdates test๊ธฐ๋ณธ Just ์คํด์ ํ
์คํธ๋ JustTests๋ง ๋๋ฆฝ๋๋ค. ์ ๋ ํ
์คํธ๋ 1์ด ๋ฏธ๋ง์ด๊ณ
๋งค ๋ณ๊ฒฝ๋ง๋ค ๋๋ฆฌ๋ ๊ฒ์ด๋ผ, ๊ทธ ์์ ์ฑ ์คํ์ ์น์ง ์๊ธฐ ์ํด ํ๊น์ ๋๋ด์ต๋๋ค.
์ปค๋ฒ๋ฆฌ์ง ๋ณด๊ณ ์์ **ใ๊ฐ๋ ํ๊ธฐ๊ฐ ํ์ ํ์ ์ด๋ก ์กํ ๊ฒใ**์ ์ ๋๋ค. ๊ฐ์ฌ๊ฐ ๊ฐ๋๋ก ์ด ๋ง์ด ํ์ ๋จ์ด๋ก ๋์์จ ๊ฒฝ์ฐ์ธ๋ฐ, ์ณ์ ๋๋(ใใ โ ๅคข) ์๊ณ ๊ทธ ๋ฐ๋๊ฐ ๋ฌธ์ ์์ต๋๋ค โ ๋ถ์ ์ด๋ฏธ ใใชใใ๊ฐ 119์ค์์ ใๆณฃใ(์ธ๋ค)ใ๋ก, ใใพใใ๊ฐ ใๅพ ใคใ๋ก, ใใใใ๊ฐ ใ่จใใ๋ก ์กํ์ต๋๋ค. ๊ฐ๋ ๋จ์ด๋ฅผ ํ์ฉ ๋๋๋ฆฌ๊ธฐ๋ก ๋ค๋ฅธ ๊ฐ๋๋ก ๊ตฌ๋ถ๋ฆฐ ๋ค ์ฝ๊ธฐ ์ธ๋ฑ์ค์์ ํ์ ๋์ฌ๋ฅผ ์ฐ์ด ์จ ๊ฒ์ ๋๋ค.
์ธ ๊ฐ์ง๋ก ๋ง์์ต๋๋ค. ์ฝ๊ธฐ ์ธ๋ฑ์ค๋ ๋จผ์ ๋ค์ด์จ ํญ๋ชฉ ๋์ ํํ ๋ป(์์ผ๋ก ํ์ธํ ๊ฒ, ๊ทธ์ค ์ฌ์ด ๊ธ)์ ๊ณ ๋ฆ ๋๋ค. ๊ฐ๋๋ก ์ด ๋ง์ ๊ฐ์ ๊ฐ๋ ํ์ ์ด๊ฐ ์์ผ๋ฉด ๊ทธ๊ฒ์, ์์ผ๋ฉด ์์ผ๋ก ํ์ธํ ํํ ํ์ ๋จ์ด๊น์ง๋ง ๋ฐ๊ณ ์์ ๋ ํฌ๊ท ํ๊ธฐ๋ก๋ ๋์ด๊ฐ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋๋ฆฐ ํ๋ณด ์ค ์ด๋ฏธ(ใยทใฆยทใชใยทใพใยทใใ)๊ฐ ๋ถ์ด ์๋ ๊ฒ๋ง ์ฝ๊ธฐ๋ก ํ์ ๋์ฌ์ ๋ฟ์ ์ ์๊ณ , ๋ ๊ธ์ ํ๋๋ฅผ ๋ฐ๊ฟ ๋ง๋ ํ๋ณด๋ ํ๊ธฐ๋ก๋ง ์ฐพ์ต๋๋ค โ ์ด๋ฏธ๋ ๋์ฌ๊ฐ ์์๋ค๋ ์ฆ๊ฑฐ๊ณ , ๋ ๊ธ์๋ ์ฆ๊ฑฐ๊ฐ ์๋๋๋ค.
์ธก์ : ์ค๋งค์นญ 227 โ 25, ๋จ์ 25๊ฑด์ ์ ๋ถ ์ณ์ ๋งค์นญ์ ๋๋ค. ์ปค๋ฒ๋ฆฌ์ง๋ 66% โ 63%๋ก ๋ด๋ ค๊ฐ๋๋ฐ, ๋น ์ง 3์ ์ด ๊ฐ์ง ์ ์ค์ด์์ต๋๋ค.
Modules/JustSensei/Resources/seed-dictionary.json์ ์์ฑ๋ฌผ์
๋๋ค.
python3 Scripts/build-dictionary.pyScripts/build-dictionary.py๋ ์ ํ๋ก์ ํธ๊ฐ ์์ผ๋ฉด ์ง์ ๋น๋์์ ๊ฐ์ ธ์จ
ํญ๋ชฉ์ ๊ทธ๋๋ก ์ ์งํ๊ณ , ๊ฒฐ๊ณผ๊ฐ ์ด์ ๋ณด๋ค 10% ๋๊ฒ ์ค๋ฉด ์ฐ๊ธฐ๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค.
๊ฒฝ๊ณ ๋ง ๋ด๊ณ ์งํํ๋ ๋์๋ 6,900๊ฐ ์ฌ์ ์ด 179๊ฐ๋ก ๋ฎ์ฌ ์ฐ์๊ณ ์ฑ์ ์ดํ ๋๋ถ๋ถ์
์์ ์ฑ๋ก ๊ณ์ ๋์์ต๋๋ค โ ์ ํ๋ก์ ํธ๋ ๋ชจ๋ ๊ธฐ๊ณ์ ์์ง ์์ต๋๋ค.
๋ ์ธต์ผ๋ก ๋๋ฉ๋๋ค. Scripts/curated.json์ 149๊ฐ๋ ์์ผ๋ก ํ์ธํ ๊ฒ์ด๋ผ ํ์ฌ์
JLPT ๋ฑ๊ธ๊น์ง ์ ๋ขฐํ ์ ์๊ณ , ๋๋จธ์ง 6.8์ฒ๊ฐ๋ ์ ํ๋ก์ ํธ์ธ jlpt-app์
์ผํ ๋จ์ด ๋ฐ์ดํฐ์์ ๊ฐ์ ธ์์ต๋๋ค. ํ์๋ ๋ป๊ณผ ์ฝ๊ธฐ๋ง ์๋๋ค โ ์๋ณธ์ lv
ํ๋๋ ๋์ด๋๊ฐ ์๋๋ผ ๊ต์ฌ ์์ ํ๊ทธ๋ผ(์ ํ์ด n1, ์๊ฒฝ๊ณผ ๋์๊ด๊น์ง) ๋ฑ๊ธ์ผ๋ก
์ฐ๋ฉด ์๋๋๋ง ๋ชปํฉ๋๋ค.
๊ฐ์ฌ ํ ์ค
โโ CFStringTokenizer ๋ฌธ๋งฅ ์ธ์ ๋ถ์ + ์ฝ๊ธฐ
โโ NLTagger ์ฌ์ ํ(lemma) ยท ํ์ฌ
โโ FoundationModels ํ๊ตญ์ด ๋ฒ์ญ ยท ๋ป ยท ๋์์ค (guided generation)
โโ ๋ฒ๋ค ์ฌ์ ๊ต์ฐจ๊ฒ์ฆ ํ์ ์ด ยท ์ฝ๊ธฐ ยท ํ์ฌ ยท JLPT ๋ฑ๊ธ ๋ฎ์ด์ฐ๊ธฐ
(๊ฐ์ฌ์ ์ฐ์ธ ํ๊ธฐ๋ฅผ ์ฝ๊ธฐ๋ณด๋ค ์ฐ์ )
ํ๋กฌํํธ์๋ ๊ทธ ์ค ๋จ์ด์ ์ฌ์ ๋ป์ด ํจ๊ป ๋ค์ด๊ฐ๋๋ค(<words>). ๋ชจ๋ธ์ ๋ฌธ์ฅ์
์ฝ๋ ๋ฐ๋ ๊ฐํ๊ณ ๋จ์ด๋ฅผ ๊ธฐ์ตํ๋ ๋ฐ๋ ์ฝํด์, ็ฉบ์ ใ๊ณต๊ธฐใ(็ฉบๆฐ)๋ก ์ฎ๊ธฐ๋ ์ผ์ด
๋ฐ๋ณต๋์ต๋๋ค โ ์ฌ์ ์ ใํ๋ใ๋ก ์ ํํ ๊ฐ๊ณ ์๋๋ฐ ์๋ฌด๋ ๋ชจ๋ธ์๊ฒ ๋งํด์ฃผ์ง
์์์ต๋๋ค. ๋ฃ๋ ๊ฐ์๋ ๋ค ๊ฐ๋ก ์ ํํฉ๋๋ค. ๋ฌธ๋งฅ ์ฐฝ์ด ์ธ ์ค์์ ๋์น๋ ์ํฉ์์
์ค ๊ธธ์ด์ ๋ฐ๋ผ ๋์ด๋๋ ๋ชฉ๋ก์ ๊ทธ ์์ ์ ์๋น๊น๋๋ค.
๋ฒ์ญ์ผ๋ก ๋ฐ์๋ค์ด๋ ์กฐ๊ฑด๋ ๊ธฐ๊ณ์ ์ผ๋ก ๊ฒ์ฌํฉ๋๋ค. ํ๊ธ์ด ์ธ์ฉ๋ถํธ ๋ฐ ๊ธ์์ ๋ค์์ฌ์ผ ํ๊ณ , ์ธ์ฉ๋ถํธ ๋ฐ์ ์ผ๋ณธ์ด๊ฐ ๋จ์ ์์ผ๋ฉด ๋ฐ์ง ์์ต๋๋ค. ์ธ์ฉ์ ๊ด์ฐฎ์ต๋๋ค โ ์๋ฌธ์ด ใใใใชใใ๋ฅผ ์ธ์ฉํ๋ฉด ๋ฒ์ญ์ด ๊ทธ๋๋ก ์ธ์ฉํ๋ ๊ฒ์ด ์ณ๊ณ , ์์ด ํ๋ ด์ ์ธ์ฉํ๋ ํ๊ตญ์ด ๋ฌธ์ฅ๋ ์ณ์ต๋๋ค. ใํ๊ธ์ด ํ๋๋ผ๋ ์์ผ๋ฉดใ์ผ๋ก ๋์์ ๋ ใ๊ฐ fence across from each other.ใ๊ฐ ํต๊ณผํ์ต๋๋ค.
์จ๋๋ฐ์ด์ค ๋ชจ๋ธ์ ๋ฌธ๋งฅ์๋ ๊ฐํ๊ณ ์๊ธฐ์๋ ์ฝํฉ๋๋ค. ใใใฆใใ๋ฅผ ใใใฆใใใ๋ก
๋๋๋ฆฌ๊ฑฐ๋ ๊ฐ์ฌ๋ฅผ ์์ฐ์ค๋ฌ์ด ํ๊ตญ์ด๋ก ์ฎ๊ธฐ๋ ์ผ์ ์ ํ์ง๋ง, JLPT ๋ฑ๊ธ์ ์ง์ด๋ด๊ณ
ํ์ ์ด ์๋ฆฌ์ ์ฝ๊ธฐ๋ฅผ ์ฐ๊ธฐ๋ ํฉ๋๋ค. ๊ทธ๋์ ํ๋จ์ ๋ชจ๋ธ์, ์ฌ์ค์ ์ฌ์ ์ ๋งก๊ธฐ๊ณ ,
๊ฐ์ฌ์ ์ค์ ๋ก ์๋ ๋จ์ด๋ ๋ฒ๋ฆฝ๋๋ค (JustSensei/Sensei.swift์ refine).
๋ชจ๋ ๋ณธ๋ฌธ ํ
์คํธ๊ฐ Dynamic Type์ ๋ฐ๋ฆ
๋๋ค. Font.system(size:)๋ ์์คํ
๊ธ์ ํฌ๊ธฐ ์ค์ ์ ๋ฌด์ํ๊ณ Font.custom(_:size:relativeTo:)๋ ํฐํธ ํ์ผ ์ด๋ฆ์
์๊ตฌํ๋ฏ๋ก, UIFont๋ฅผ UIFontMetrics๋ก ํต๊ณผ์ํค๋ Font.just(_:weight:relativeTo:)๋ฅผ
์๋๋ค โ ๋์์ธ๋ ํฌ์ธํธ ํฌ๊ธฐ๋ฅผ ์ ์งํ๋ฉด์ ์ค์ ์ ์กด์คํฉ๋๋ค.
๊ณ ์ ํฌ๊ธฐ๋ก ๋จ๊ธด ๊ฒ์ SF Symbol ์์ด์ฝ๊ณผ ์ฐ์์ผ์ ๋ง์ ์ซ์๋ฟ์ ๋๋ค. ๋ ๋ค ๊ธ์์ ํจ๊ป ์ปค์ง๋ฉด ์ ๋๋ ๊ณ ์ ์ง์ค๋ฉํธ๋ฆฌ ์์ ์์ต๋๋ค.
๊ฐ์ฌ๋ ์ฌ๊ธฐ์ ์ฑ ์์ฒด์ 4๋จ๊ณ ์กฐ์ ์ด ๊ณฑํด์ง๋๋ค. ์์คํ ์ค์ ๊ณผ ์ฑ ์ค์ ์ด ๊ฐ์ ํ ์คํธ์ ํจ๊ป ์์ฉํ๋ฏ๋ก, ์ ๊ทผ์ฑ ํฌ๊ธฐ์์๋ ๊ฐ์ฌ ํฌ๊ธฐ๋ฅผ ๋ฎ์ถฐ ์ฐ๋ฉด ๋ฉ๋๋ค.
just://review์ just://words๋ก ํ๋ฉด์ ์ง์ ํ ์ ์์ต๋๋ค. ๋ณต์ต ์๋ฆผ๊ณผ ์์ ฏ์ด
์ด ๋งํฌ๋ฅผ ์๋๋ค โ ์๋ฆผ์ด ์ฑ์ ์ด๋ ์ฌ์ฉ์๊ฐ ๋ง์ง๋ง์ ๋ณด๋ ํ๋ฉด์ผ๋ก ๋ฐ๋ ค๊ฐ๋ฉด
๊ทธ ์๋ฆผ์ ์คํจํ ๊ฒ์
๋๋ค.
์๋ฆผ์ onOpenURL๋ก ์ค์ง ์์ผ๋ฏ๋ก NotificationRouter๊ฐ ๋์ ๋ฐ์ต๋๋ค. ์ฑ
์์ ์์ ์ ๋ฑ๋กํ๋ ์ด์ ๋, ์ฝ๋ ์คํํธ์์ ํญํ ์๋ฆผ์ด ๋ทฐ๊ฐ ๋ง๋ค์ด์ง๊ธฐ ์ ์
์ ๋ฌ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
ํ ํ๋ฉด ์์ ฏ์ ์ฑ์ SwiftData๋ฅผ ์ด์ง ์์ต๋๋ค. ์ฑ์ด App Group ์ปจํ ์ด๋์ ์์ ์ค๋ ์ท(JSON)์ ์ฐ๊ณ ์์ ฏ์ ๊ทธ๊ฑธ ์ฝ์ต๋๋ค โ ์์ ฏ์ด ์ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ ๊ฒ์ ์คํค๋ง ๋ณ๊ฒฝ์ ๋ฐ๋ผ๋ค๋ ์ผ ํ๊ณ ์ฐ๊ธฐ๋ ๋ชป ํ๋ฉฐ, ์ซ์ ์ธ ๊ฐ๋ฅผ ์ฝ์๊ณ ๊ธฐ์กด ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ด์ ๋ ์์ต๋๋ค.
App Group group.com.coby.just๊ฐ ํ์ํฉ๋๋ค. ์๋ ์๋ช
์ด ๋ฑ๋กํ์ง ๋ชปํ๋ฉด
developer.apple.com > Identifiers > App Groups์์ ๋ง๋ค๊ณ , App ID์
App Groups ๊ธฐ๋ฅ์์ ์ฐ๊ฒฐํด ์ฃผ์ธ์.
๊ฒ์์ด "๊ฐ๋ฐ์ ํ ํฐ ์์ฒญ ์คํจ"๋ก ์ฃฝ์ผ๋ฉด ์ด๊ฒ ๋๋ฌธ์ ๋๋ค.
MusicKit์ ๊ฐ๋ฐ์ ํ ํฐ์ ์๋์ผ๋ก ๋ฐ๊ธํ์ง๋ง, ๋ช
์์ App ID์ MusicKit
์๋น์ค๊ฐ ์ผ์ ธ ์์ ๋๋ง ๊ฐ๋ฅํฉ๋๋ค. ์์ผ๋์นด๋ ํ ํ๋ก๋น์ ๋
ํ๋กํ์ผ(TEAM.*)๋ก ์๋ช
ํ๋ฉด ์คํจํ๊ณ , ์ค๋ฅ ๋ฉ์์ง๋ ํ ํฐ๋ง ๋งํ๊ณ ์ ์
์์ธ์ธ ํฌํธ ์ค์์น๋ ์ธ๊ธํ์ง ์์ต๋๋ค.
- developer.apple.com > Certificates, Identifiers & Profiles > Identifiers
- + > App IDs > App > Bundle ID๋ Explicit๋ก
com.coby.just - ๊ทธ App ID์ App Services์์ MusicKit ์ฒดํฌ ํ ์ ์ฅ
- ๋ค์ ๋น๋ (
-allowProvisioningUpdates๊ฐ ์ ํ๋กํ์ผ์ ๋ฐ์์ต๋๋ค)
์ค์ ํ๋ฉด์ ์นดํ๋ก๊ทธ ์ฐ๊ฒฐ > ์ฐ๊ฒฐ ํ์ธ์ผ๋ก ์ค์ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ ํ๋ก์ ํธ mana์ ๊ฐ์ ๊ตฌ์ฑ์
๋๋ค.
bash Scripts/setup.sh # tuist generate
bundle exec fastlane test # ์๋ฎฌ๋ ์ดํฐ ํ
์คํธ
bundle exec fastlane beta # TestFlight ์
๋ก๋Tuist ๋ฒ์ ์ .mise.toml์ ๊ณ ์ ํฉ๋๋ค. ์๋ช
์ ์๋์ด๊ณ ํ id๋ ๋งค๋ํ์คํธ์
์์ผ๋ฏ๋ก tuist generate๋ง์ผ๋ก ๊ธฐ๊ธฐ ๋น๋๊ฐ ๋ฉ๋๋ค.
TestFlight๋ App Store Connect API ํค๋ก ํด๋ผ์ฐ๋ ์๋ช
ํฉ๋๋ค โ ์ธ์ฆ์๋ฅผ ์์ผ๋ก
๊ฐฑ์ ํ ์ผ์ด ์์ต๋๋ค. ์ธ์ฆ ํ๋๊ทธ๋ xcargs ํ ๊ณณ์๋ง ๋ก๋๋ค(gym์ด archive์
export ์์ชฝ์ ๊ทธ๋๋ก ๋๊ธฐ๋ฏ๋ก export_xcargs๋ก ์ค๋ณตํ๋ฉด xcodebuild๊ฐ ๊ฑฐ๋ถํฉ๋๋ค).
v* ํ๊ทธ๋ฅผ ๋ฐ๋ฉด .github/workflows/deploy.yml์ด ๋๊ณ , ํ์ํ ์ํฌ๋ฆฟ์
APPSTORE_KEY_ID / APPSTORE_ISSUER_ID / APPSTORE_PRIVATE_KEY์
๋๋ค.
๋ฒ์ ์ MARKETING_VERSION๊ณผ CURRENT_PROJECT_VERSION์ด ์ ํฉ๋๋ค. Info.plist์
๊ฐ์ ๋ฐ์๋๋ฉด fastlane์ด ๋๊ธฐ๋ ๋น๋ ๋ฒํธ๊ฐ ๋ฌด์๋์ด ์
๋ก๋๊ฐ ๋งค๋ฒ ์ถฉ๋ํฉ๋๋ค.
App/Resources/PrivacyInfo.xcprivacy๋ ํ์์
๋๋ค. ์ด ์ฑ์ ์ถ์ ์ ํ์ง ์๊ณ
์์ง ํญ๋ชฉ๋ ์์ผ๋ฉฐ, ํ์ ์ฌ์ API๋ UserDefaults(CA92.1) ํ๋์
๋๋ค.
xcodebuild -workspace Just.xcworkspace -scheme Just \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' test์์ ๋ก์ง๋ง ๋ฎ์ต๋๋ค โ ํ์ฑ, ์ค์ผ์ค๋ง, ๋ฌธ์์ด ์ฒ๋ฆฌ. ์ง๊ธ๊น์ง ์ค์ ๋ก ๋์จ ๋ฒ๊ทธ๊ฐ ์ ๋ถ ๊ทธ ์์ญ์ด์๊ณ , ๊ธฐ๊ธฐยท๊ณ์ ยท๋ชจ๋ธ ์์ด ๊ฒ์ฆํ ์ ์๋ ๋ถ๋ถ๋ ๊ฑฐ๊ธฐ๊น์ง์ ๋๋ค. 62๊ฐ ํ ์คํธ๊ฐ ์๊ณ , ๊ทธ์ค ์ฌ๋ฌ ๊ฐ๋ ์ค์ ๋ก ๊ฒช์ ํ๊ท๋ฅผ ๊ทธ๋๋ก ๊ณ ์ ํด ๋ ๊ฒ์ ๋๋ค: CRLF ๊ฐ์ฌ ๋ถํ , ๋ฒ์ญ๋ณธ ์ค์ ํ, ๋์์ด์์ด ํ๊ธฐ ๋ค๋ฐ๋.
- ๋ฒ๋ค ์ฌ์ 6.9์ฒ ๋จ์ด ์ค ๋ฑ๊ธยทํ์ฌ๊ฐ ๋ถ์ ๊ฒ์ ์์ผ๋ก ํ์ธํ 149๊ฐ๋ฟ์ ๋๋ค.
- ๋ฎค์ง๋น๋์ค๋ ๋ค๋ฃจ์ง ์์ต๋๋ค. ๊ณต๊ฐ API๋ก๋ ์ ์ฒด ์ฌ์์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
- ๊ณก ๋์ด๋๋ ๋ถ์ํ ์ค์์๋ง ์ง๊ณ๋๋ฏ๋ก, ์ผ๋ถ๋ง ๋ถ์ํ ๊ณก์ ํ๋ณธ์ด ์์ต๋๋ค.
์๋ฎฌ๋ ์ดํฐ์๋ Apple Music ๊ณ์ ์ด ์์ด ๊ณก์ ์ด ์ ์์ต๋๋ค. ๊ฒ์ยท์ฌ์ยท์ถ์ฒยท์จ๋ฒ์ ์ค๊ธฐ๊ธฐ์์๋ง ํ์ธ๋ฉ๋๋ค.
MIT. ๋ค๋ง ๋ฒ๋ค ๋ฐ์ดํฐ์ ์ถ์ฒ๋ ๊ตฌ๋ถํด์ ๋ด ์ฃผ์ธ์.
Scripts/curated.json(149๋จ์ด),Modules/JustSensei/Resources/kanji-ko.json(ํ์ 1,591์ ์ํ), ๊ทธ๋ฆฌ๊ณseed-dictionary.json์ ๋๋ถ๋ถ์ ์ด ์ ์ฅ์ ์์ ์์ ๋ค๋ฅธ ํ๋ก์ ํธ์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ์ ๋๋ค.- ๊ฐ์ฌ๋ ์ ์ฅ์์ ํฌํจ๋์ง ์์ต๋๋ค. ์คํ ์ LRCLIB์์ ๋ฐ์ ๊ธฐ๊ธฐ์๋ง ์ ์ฅ๋ฉ๋๋ค.
- ๊ณก ์ ๋ณด์ ์ํธ์ํฌ๋ Apple Music ์นดํ๋ก๊ทธ์์ ์ต๋๋ค. Apple Media Services ์ด์ฉ์ฝ๊ด์ด ์ ์ฉ๋ฉ๋๋ค.