--- id: wiki-2026-0508-public-apis title: Public APIs category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [uncategorized] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Public APIs|Public APIs]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜ 및 μ»΄ν¬λ„ŒνŠΈ 라이브러리 μ„€κ³„μ—μ„œ 퍼블릭 API(Public APIs)λŠ” μ»΄ν¬λ„ŒνŠΈλ‚˜ νŒ¨ν‚€μ§€κ°€ 외뢀와 μƒν˜Έμž‘μš©ν•˜κΈ° μœ„ν•΄ λ…ΈμΆœν•˜λŠ” λͺ…μ‹œμ μΈ κ³„μ•½μ΄μž μ•ˆμ •μ μΈ μ§„μž…μ (entry point)을 μ˜λ―Έν•©λ‹ˆλ‹€ [1, 2]. μ΄λŠ” μ»΄ν¬λ„ŒνŠΈκ°€ λ°›λŠ” 속성(props)κ³Ό λ°˜ν™˜ν•˜λŠ” 이벀트(callbacks)λ₯Ό μ •μ˜ν•˜λ©°, λ‚΄λΆ€ κ΅¬ν˜„ μ„ΈλΆ€ 사항을 μΊ‘μŠν™”ν•©λ‹ˆλ‹€ [2]. λͺ…ν™•ν•œ 퍼블릭 APIλ₯Ό κ°•μ œν•˜λŠ” 것은 νŒ¨ν‚€μ§€ κ°„μ˜ λ¬΄λΆ„λ³„ν•œ μ°Έμ‘°λ₯Ό λ°©μ§€ν•˜κ³ , λ³€ν™”ν•˜λŠ” μš”κ΅¬μ‚¬ν•­ μ†μ—μ„œλ„ μ•ˆμ „ν•˜κ²Œ ν™•μž₯ κ°€λŠ₯ν•œ UIλ₯Ό κ΅¬μΆ•ν•˜λŠ” 데 ν•„μˆ˜μ μž…λ‹ˆλ‹€ [3, 4]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **μ»΄ν¬λ„ŒνŠΈ API μ„€κ³„μ˜ μ€‘μš”μ„±:** μž¬μ‚¬μš© κ°€λŠ₯ν•œ UIλ₯Ό κ΅¬μΆ•ν•˜λŠ” 것은 λ‹¨μˆœνžˆ μ½”λ“œλ₯Ό 적게 μž‘μ„±ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, 지속적인 λ³€ν™”μ—μ„œ 살아남을 수 μžˆλŠ” APIλ₯Ό μ„€κ³„ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ [3]. 쒋은 μ»΄ν¬λ„ŒνŠΈ APIλŠ” 직관적이고 μ˜€μš©ν•˜κΈ° μ–΄λ €μ›Œμ•Ό ν•˜λ©°, μ΅œμ†Œν•œμ˜ 속성(props)만 λ…ΈμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€ [5]. μ΄λŠ” μ»΄ν¬λ„ŒνŠΈκ°€ 무엇을 받아듀이고, 무엇을 λ°˜ν™˜ν•˜λ©°, μ ˆλŒ€ ν•˜μ§€ 말아야 ν•  행동(예: λΆ€λͺ¨ μƒνƒœ 변이)을 κ·œμ •ν•˜λŠ” λͺ…μ‹œμ  계약(Explicit Contracts) 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€ [2]. * **λͺ¨λ…Έλ ˆν¬μ™€ νŒ¨ν‚€μ§€ 경계 관리:** λŒ€κ·œλͺ¨ λͺ¨λ…Έλ ˆν¬ ν™˜κ²½μ—μ„œλŠ” λͺ¨λ“ˆμ„± μœ μ§€λ₯Ό μœ„ν•΄ μ—„κ²©ν•œ 퍼블릭 API λ…ΈμΆœμ΄ ν•„μš”ν•©λ‹ˆλ‹€ [1, 4]. μ†ŒλΉ„μžλŠ” λ‚΄λΆ€μ˜ κΉŠμ€ 경둜(예: `import Button from "@acme/ui/src/button/Button"`)κ°€ μ•„λ‹Œ, μ˜λ„μ μœΌλ‘œ λ…ΈμΆœλœ μ•ˆμ •μ μΈ μ§„μž…μ (예: `import { Button } from "@acme/ui"`)을 ν†΅ν•΄μ„œλ§Œ λͺ¨λ“ˆμ„ 가져와야 ν•©λ‹ˆλ‹€ [4]. 이λ₯Ό κ°•μ œν•˜κΈ° μœ„ν•΄ νŒ¨ν‚€μ§€μ˜ `package.json`μ—μ„œ `exports` ν•„λ“œλ₯Ό μ •μ˜ν•˜κ±°λ‚˜ [[ESLint|ESLint]] κ·œμΉ™μ„ μ μš©ν•˜μ—¬ λ”₯ μž„ν¬νŠΈ(deep imports)λ₯Ό 차단해야 ν•©λ‹ˆλ‹€ [4, 6]. * **FSD([[Feature-Sliced Design|Feature-Sliced Design]])μ™€μ˜ 톡합:** ν™•μž₯ κ°€λŠ₯ν•œ ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜ 방법둠인 FSDλŠ” 슬라이슀(slice) κ²½κ³„μ—μ„œ λͺ…μ‹œμ μΈ 퍼블릭 API μ‚¬μš©μ„ ꢌμž₯ν•©λ‹ˆλ‹€ [7]. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 곡유 νŒ¨ν‚€μ§€λ‚˜ 슬라이슀의 `index.ts` 같은 퍼블릭 API νŒŒμΌμ„ ν†΅ν•΄μ„œλ§Œ μž„ν¬νŠΈν•˜κ³ , λ‚΄λΆ€ νŒŒμΌμ€ μ² μ €νžˆ 내뢀에 μœ μ§€λ˜λ„λ‘ μ„€κ³„ν•¨μœΌλ‘œμ¨ μ˜λ„μΉ˜ μ•Šμ€ κ²°ν•©(accidental coupling)을 크게 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€ [7, 8]. * **κ±°λ²„λ„ŒμŠ€ 및 λΈŒλ ˆμ΄ν‚Ή 체인지 λ°©μ§€:** μ—¬λŸ¬ μ•±μ—μ„œ μ‚¬μš©λ˜λŠ” 곡유 νŒ¨ν‚€μ§€(예: `packages/ui`)의 퍼블릭 APIκ°€ 변경될 경우 νŒŒκΈ‰ νš¨κ³Όκ°€ ν¬λ―€λ‘œ, 예츑 λΆˆκ°€λŠ₯ν•œ μ‹œμŠ€ν…œ 쀑단을 막기 μœ„ν•΄ μ—„κ²©ν•œ 관리가 ν•„μš”ν•©λ‹ˆλ‹€ [9, 10]. `CODEOWNERS` 등을 μ΄μš©ν•΄ μ†Œμœ κΆŒμ„ λͺ…ν™•νžˆ ν•˜κ³ , 곡유 λͺ¨λ“ˆμ˜ 퍼블릭 API에 λ³€κ²½ 사항이 μžˆμ„ λ•ŒλŠ” λ°˜λ“œμ‹œ μ½”λ“œ 리뷰λ₯Ό μš”κ΅¬ν•˜λŠ” 정책을 μˆ˜λ¦½ν•΄μ•Ό ν•©λ‹ˆλ‹€ [9, 10]. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[Component API Design|Component API Design]], Monorepo Architecture, [[Feature-Sliced Design (FSD)|Feature-Sliced Design (FSD]], Explicit Contracts - **Projects/Contexts:** λŒ€κ·œλͺ¨ λ¦¬μ•‘νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λͺ¨λ…Έλ ˆν¬ ꡬ좕(Nx/[[Turborepo|Turborepo]]), ν™•μž₯ κ°€λŠ₯ν•˜κ³  μœ μ§€λ³΄μˆ˜ μš©μ΄ν•œ μž¬μ‚¬μš© UI μ»΄ν¬λ„ŒνŠΈ 라이브러리 섀계 - **Contradictions/Notes:** μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ˜ λ³΅μž‘μ„±μ€ 숨기고 μ™ΈλΆ€λ‘œλŠ” λ‹¨μˆœν•˜κ³  μΌκ΄€λœ μ§„μž…μ μ„ μ œκ³΅ν•΄μ•Ό ν•œλ‹€λŠ” 원칙은, 단일 μ»΄ν¬λ„ŒνŠΈ 섀계와 λŒ€κ·œλͺ¨ νŒ¨ν‚€μ§€ ꡬ쑰 섀계 μ–‘μͺ½ λͺ¨λ‘μ— κ³΅ν†΅μ μœΌλ‘œ 핡심적인 μ§€μΉ¨μœΌλ‘œ κ°•μ‘°λ©λ‹ˆλ‹€ [2, 4]. --- *Last updated: 2026-04-26* ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μ—†μŒ - **μ •μ±… λ³€ν™”:** μ—†μŒ ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*