--- id: wiki-2026-0508-accessibility-a11y title: Accessibility (A11y) 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 --- # [[Accessibility (A11y)|Accessibility (A11y]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) μ ‘κ·Όμ„±([[Accessibility|Accessibility]], A11y)은 슀크린 리더, ν‚€λ³΄λ“œ λ„€λΉ„κ²Œμ΄μ…˜ 등을 μ§€μ›ν•˜μ—¬ λͺ¨λ“  μ‚¬μš©μžκ°€ 차별 없이 UIλ₯Ό μ΄μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” 섀계 원칙 및 κΈ°λŠ₯μž…λ‹ˆλ‹€ [1, 2]. React μ»΄ν¬λ„ŒνŠΈ μ•„ν‚€ν…μ²˜μ™€ λ””μžμΈ μ‹œμŠ€ν…œμ—μ„œ μž¬μ‚¬μš©μ„±μ€ μ ‘κ·Όμ„±κ³Ό λ—„ 수 μ—†λŠ” 관계λ₯Ό κ°€μ§€λ©°, ARIA 속성 및 μ‹œλ§¨ν‹± HTML μ μš©μ„ 기본으둜 ν•©λ‹ˆλ‹€ [3, 4]. 잘 μ„€κ³„λœ μ»΄ν¬λ„ŒνŠΈ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ€ κ°œλ°œμžκ°€ μ²˜μŒλΆ€ν„° 접근성을 κ΅¬ν˜„ν•  ν•„μš” 없이, μ ‘κ·Όμ„± ν…Œλ§ˆ λͺ¨λ“œλ‚˜ 포컀슀 관리 λ“±κ³Ό 같은 λ‚΄μž₯된 μ ‘κ·Όμ„± 지원을 μ œκ³΅ν•©λ‹ˆλ‹€ [1, 5, 6]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈμ™€ μ ‘κ·Όμ„± μš°μ„ (Accessibility First) 원칙** μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈλ₯Ό 섀계할 λ•Œ 접근성은 선택 사항이 μ•„λ‹ˆλΌ ν•„μˆ˜ μ‚¬ν•­μž…λ‹ˆλ‹€ [2]. ν‚€λ³΄λ“œ νƒ­ μˆœμ„œ 관리, ν™”μ‚΄ν‘œ ν‚€ 탐색, μ˜¬λ°”λ₯Έ μ‹œλ§¨ν‹± HTML μ—­ν• (Roles)κ³Ό λ ˆμ΄λΈ”, 포컀슀 μ œμ–΄ 및 였λ₯˜ λ©”μ‹œμ§€ 제곡 등은 μ»΄ν¬λ„ŒνŠΈμ˜ 핡심 κΈ°λŠ₯에 λ‚΄μž₯(Bake into the DNA)λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ [2, 6]. μ»΄ν¬λ„ŒνŠΈκ°€ μ§„ν™”ν•˜λ”λΌλ„ μ ‘κ·Όμ„± μ—­ν• , λ ˆμ΄λΈ”, 포컀슀 μƒνƒœκ°€ κΉ¨μ§€μ§€ μ•ŠλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 지속적인 μ ‘κ·Όμ„± 검사(Accessibility checks)κ°€ ν•„μš”ν•©λ‹ˆλ‹€ [7]. * **μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ„ ν†΅ν•œ μ ‘κ·Όμ„± κ΅¬ν˜„** * **[[Compound Components|Compound Components]]:** λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈ(예: Accordion)κ°€ μžμ‹ μ»΄ν¬λ„ŒνŠΈλ“€μ˜ μƒνƒœλ₯Ό μ œμ–΄ν•˜λŠ” 방식은 μ ‘κ·Όμ„± κ΅¬ν˜„μ„ λ‹¨μˆœν•˜κ²Œ λ§Œλ“­λ‹ˆλ‹€. μ»¨ν…μŠ€νŠΈλ₯Ό 톡해 λ‚΄λΆ€ μƒνƒœλ₯Ό κ³΅μœ ν•˜κΈ° λ•Œλ¬Έμ—, μ‚¬μš©μžκ°€ λͺ…μ‹œμ μœΌλ‘œ IDλ₯Ό μ „λ‹¬ν•˜μ§€ μ•Šμ•„λ„ `aria-controls`와 `aria-labelledby` 같은 속성을 μžλ™μœΌλ‘œ μ—°κ²°ν•΄ 쀄 수 μžˆμŠ΅λ‹ˆλ‹€ [8]. * **[[Headless Components|Headless Components]]:** 이 νŒ¨ν„΄μ€ μƒνƒœ 관리, 둜직, 그리고 μ ‘κ·Όμ„± κΈ°λŠ₯(ν‚€λ³΄λ“œ λ„€λΉ„κ²Œμ΄μ…˜, ARIA μ—­ν•  λ“±)을 λ‚΄μž₯ν•˜μ—¬ μ œκ³΅ν•˜λ˜, μŠ€νƒ€μΌλ§μ€ κ°œλ°œμžκ°€ [[Tailwind CSS|Tailwind CSS]] λ“±μœΌλ‘œ 자유둭게 κ΅¬μ„±ν•˜λ„λ‘ λ§‘κΈ°λŠ” λ°©μ‹μœΌλ‘œ ν˜„λŒ€μ μ΄κ³  접근성이 λ›°μ–΄λ‚œ UI ꡬ좕에 ν™œμš©λ©λ‹ˆλ‹€ [9]. * **λ””μžμΈ μ‹œμŠ€ν…œ 및 ν…Œλ§ˆ 기반 μ ‘κ·Όμ„±** λ””μžμΈ 토큰을 기반으둜 ν•œ ν…Œλ§ˆ μ‹œμŠ€ν…œμ€ μ ‘κ·Όμ„± μš”κ΅¬ 사항을 μœ μ—°ν•˜κ²Œ μˆ˜μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [5, 10]. 예λ₯Ό λ“€μ–΄, λ””μžμΈ ν…Œλ§ˆλŠ” 닀크 λͺ¨λ“œλΏλ§Œ μ•„λ‹ˆλΌ λͺ¨λ“  μš”μ†Œλ₯Ό 더 λˆˆμ— λ„κ²Œ λ§Œλ“œλŠ” κ³ λŒ€λΉ„(High-contrast) ν…Œλ§ˆλ‚˜ μ œν•œλœ μ›€μ§μž„(Limited movement)κ³Ό 같은 μ‚¬μš©μž κΈ°λ³Έ 섀정에 맞좰 λ™μ μœΌλ‘œ 쑰정될 수 μžˆμŠ΅λ‹ˆλ‹€ [5, 10, 11]. * **μ£Όμš” 라이브러리 및 λ„κ΅¬μ˜ μ ‘κ·Όμ„± μ§€μ›μ˜ 차이** * Shopify의 Polaris와 Uber의 Base Webκ³Ό 같은 μ΅œμ‹  λΌμ΄λΈŒλŸ¬λ¦¬λŠ” ν‚€λ³΄λ“œ λ‚΄λΉ„κ²Œμ΄μ…˜, ARIA μ—­ν• , 슀크린 리더 ν˜Έν™˜μ„± 및 WCAG ν‘œμ€€ μ€€μˆ˜λ₯Ό κΈ°λ³Έ κΈ°λŠ₯으둜 μ œκ³΅ν•©λ‹ˆλ‹€ [1, 3, 12, 13]. * 반면 Tailwind CSS와 같은 μœ ν‹Έλ¦¬ν‹° μš°μ„  ν”„λ ˆμž„μ›Œν¬λŠ” μŠ€νƒ€μΌλ§μ— νŠΉν™”λ˜μ–΄ μžˆμ–΄ μžλ™μœΌλ‘œ `aria-*` μ†μ„±μ΄λ‚˜ μ‹œλ§¨ν‹± HTML μš”μ†Œλ‘œ λ³€κ²½ν•΄μ£Όμ§€ μ•ŠμŠ΅λ‹ˆλ‹€ [4]. λ”°λΌμ„œ Tailwind CSSλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” κ°œλ°œμžκ°€ μ˜¬λ°”λ₯Έ ARIA 속성과 μ‹œλ§¨ν‹± λ§ˆν¬μ—…μ„ λͺ…μ‹œμ μœΌλ‘œ 포함해야 ν•©λ‹ˆλ‹€ [4]. * **λŒ€κ·œλͺ¨ μ ‘κ·Όμ„± λ¬Έμ„œν™” 및 관리 μžλ™ν™”** Uber와 같은 λŒ€κ·œλͺ¨ ν™˜κ²½μ—μ„œλŠ” VoiceOver, TalkBack, ARIA와 같은 3κ°€μ§€ μ ‘κ·Όμ„± APIλ₯Ό 컀버해야 ν•˜λ©°, 각각 수백 개의 속성이 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— μˆ˜λ™μœΌλ‘œ μŠ€νŽ™μ„ κ΄€λ¦¬ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€ [14]. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ AI μ—μ΄μ „νŠΈ([[Figma|Figma]] Console MCP ν™œμš©)λ₯Ό λ„μž…ν•˜μ—¬ μ»΄ν¬λ„ŒνŠΈ 트리λ₯Ό μŠ€ν¬λž©ν•˜κ³  닀쀑 ν”Œλž«νΌμ˜ 슀크린 리더 및 μ ‘κ·Όμ„± 속성을 단 λͺ‡ λΆ„ λ§Œμ— 포괄적인 μŠ€νŽ™ λ¬Έμ„œλ‘œ μžλ™ λ Œλ”λ§ν•˜λŠ” μžλ™ν™” νŒŒμ΄ν”„λΌμΈμ„ κ΅¬μΆ•ν•˜μ—¬ μ ‘κ·Όμ„± 기쀀을 μœ μ§€ν•©λ‹ˆλ‹€ [15-18]. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[Compound Components|Compound Components]], Headless Components, Design Tokens, [[Tailwind CSS|Tailwind CSS]] - **Projects/Contexts:** [[Uber Base Web|Uber Base Web]], Shopify Polaris, [[React Component Library Architecture|React Component Library Architecture]] - **Contradictions/Notes:** μ»΄ν¬λ„ŒνŠΈ λ ˆλ²¨μ—μ„œμ˜ μ ‘κ·Όμ„± λ‚΄μž₯ μ—¬λΆ€μ—μ„œ ν”„λ ˆμž„μ›Œν¬ κ°„ 차이가 λ°œμƒν•©λ‹ˆλ‹€. [[Shopify Polaris|Shopify Polaris]]λ‚˜ [[Uber Base Web|Uber Base Web]] λ“±μ˜ μ™„μ „ν•œ UI μ»΄ν¬λ„ŒνŠΈ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” ARIA 및 ν‚€λ³΄λ“œ μ‘°μž‘κ³Ό 같은 접근성을 기본으둜 μ œκ³΅ν•˜μ§€λ§Œ [1, 3, 12], Tailwind CSSλ₯Ό λ‹¨λ…μœΌλ‘œ μ‚¬μš©ν•  경우 μžλ™μœΌλ‘œ μ ‘κ·Όμ„± νƒœκ·Έλ₯Ό λΆ€μ—¬ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ κ°œλ°œμžκ°€ 직접 μ‹œλ§¨ν‹± λ§ˆν¬μ—…κ³Ό ARIA 속성을 챙겨야 ν•œλ‹€λŠ” λͺ…ν™•ν•œ ν•œκ³„(μ±…μž„μ˜ μ „κ°€)λ₯Ό μ§€μ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [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: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*