-
Notifications
You must be signed in to change notification settings - Fork 2
π μ€μ₯λ μΈ΅μ μν μ§λ μλΉμ€ by μμ¬λ
μ€μ₯λ μΈ΅μ μν μ§λ μλΉμ€
μ£Όμ :Β μ€μ₯λ μΈ΅μ μν μ§λ μλΉμ€
λͺ©ν :Β Accessibilityλ₯Ό κ·Ήλλ‘ κ³ λ €ν μμΉ νΉμ μ§λ κ΄λ ¨ μλΉμ€ κ°λ°(μ°λ¦¬μ κ°μ‘±μ΄ μΈ μ μλλ‘)
μ μ½μ¬ν : λ무 λ§μ νκ²μ κ³ λ €νλ €κ³ νμ§ λ§μ.
- μ²μμλ μκ² μμνμ. => μ€μ₯λ μΈ΅λ§μ λμμΌλ‘
- λ§μ΄ κ³ λ €ν΄λ, λ Έμ, λ Έμ²(?)μ κ³ λ €νλ μ λλ‘λ§ νμ.
-
μ΄λ€ κΈ°μ μ μΈ λμ ?
-
μ΄λ€ λ¬Έμ μν© ν΄κ²°?
-
μ΄λ»κ² νλ©΄ λ€ μ±κ²¨κ° μ μμ§?
-
μΌλ¨ λ΄κ° μ¬μ©ν΄λ΄μΌνλλ° λ΄κ° λμ΄ μ μ보μΈλ€κ³ νλ©΄ λκ° μ μΌ λΆνΈν κΉ?
-
μ§λμμ μ μΌ μ€μν κ²μ 무μμΌκΉ?
- μ νν μμΉ μ 보 μ 곡
- μκ³ λ¦¬μ¦ μμ΄ μ νν μμΉ μ 보 μ κ³΅μ΄ κ°λ₯νκ°?
- μ νν μμΉ μ 보 μ 곡
-
μ€μκ° μμΉμ 보 곡μ λ λ€λ€ λκΈκ°μ κ²μ μ°κ³ μλ€.
-
κ°λ κ²½λ‘보λ€λ κ°λ κΈΈμμ μ΄λ»κ² ν΄λ³Ό μ μμ§ μμκΉ?
- κ°λ κ²½λ‘μ λν΄μ νΉμ λλλ§ν¬λ₯Ό μμ½ν΄μ μλ €μ€λ€β¦?
μμ΄κ΅¬ κΈμ°κ΅¬μ ν‘μꡬμ μλ΄
μ§λμμ μ κ·Όμ±(A11y)μ κ°μ νλ κ²μ μ¬μ©μ κ²½νμ ν₯μμν€κΈ° μν΄ μ€μνλ©°, νΉν νλ©΄ νλ κΈ°μ ν€λ³΄λ μ¬μ©μ, μκ° μ΄μμ κ°μ§ μ¬μ©μλ₯Ό μν μ¬λ¬ μ κ·Όμ± μμλ₯Ό κ³ λ €ν μ μμ΅λλ€. μ¬κΈ°μλ μκ°μ μΈ λ©΄λΏλ§ μλλΌ μνΈμμ©κ³Ό νμμ±λ ν¬ν¨λ©λλ€.
- λͺ νν μμ λλΉ: μ§λ μμ ν μ€νΈ, κ²½κ³, λλ‘ λ° κΈ°ν νμ μμλ λ°°κ²½κ³Ό μΆ©λΆν λλΉλ₯Ό κ°μ ΈμΌ ν©λλ€. μ§λ μ€νμΌ μ€μ μμ μμμ μ‘°μ νμ¬ λλΉλ₯Ό λμ΄λ κ²μ΄ μ€μν©λλ€.
- μκ° λ³΄μ : μκ° μ΄μ μ¬μ©μλ₯Ό μν΄ νΉμ μμ μ‘°ν©μ νΌνκ±°λ, μμμΌλ‘λ§ μ 보λ₯Ό μ λ¬νμ§ μλλ‘ ν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, λλ‘ μ νμ μμλΏ μλλΌ λκ»λ ν¨ν΄μΌλ‘λ ꡬλΆν©λλ€.
- ν¬κΈ° μ‘°μ κ°λ₯ν ν μ€νΈ: ν μ€νΈλ₯Ό ν¬κΈ° μ‘°μ μ΄ κ°λ₯νκ² νμ¬, ν μ€νΈκ° μμ κ²½μ°λ κ°λ μ±μ λμΌ μ μμ΅λλ€.
- ν€λ³΄λλ‘ μ§λ μ‘°μ: μ§λ μ‘°μμ ν€λ³΄λλ‘ ν μ μλλ‘ μ§μν©λλ€. ν€λ³΄λλ‘ νλ/μΆμ, νΉμ ν μμΉλ‘ μ΄λ λ±μ΄ κ°λ₯ν΄μΌ ν©λλ€.
- ν¬μ»€μ€ κ΄λ¦¬: ν¬μ»€μ€κ° μ§λ μμμ κ°νμ§ μλλ‘ μ‘°μ νλ©°, ν¬μ»€μ€κ° μ§λ μμλ‘ μ΄λν λ νΉμ μμΉλ₯Ό μμ±μΌλ‘ μ€λͺ ν΄ μ€λλ€.
-
ν μΈλ±μ€ μ€μ : μ§λ λ΄ μ€μ μμλ€(λ§μ»€, λ²νΌ λ±)μ μ μ ν
tabindex
λ₯Ό λΆμ¬ν΄ μ¬μ©μλ€μ΄ ν€λ³΄λλ‘ νμν μ μλλ‘ μ€μ ν©λλ€.
- λ체 ν μ€νΈ μΆκ°: μ§λ λ΄ μ€μν μ§μ μ΄λ νμ μ κ·Ό κ°λ₯ν λ체 ν μ€νΈλ₯Ό μΆκ°νμ¬ μ€ν¬λ¦° 리λκ° κ° μ§μ μ μ 보λ₯Ό μ 곡ν μ μκ² ν©λλ€.
- μ§μ κ° μ€λͺ μΆκ°: μλ₯Ό λ€μ΄ νΉμ μμΉ κ°μ 거리, μ£Όμ λ°©ν₯ λ±μ ν μ€νΈλ‘ μ€λͺ νλ κΈ°λ₯μ μΆκ°ν©λλ€.
-
μλ―Έ μλ ARIA μμ± νμ©:
aria-label
,aria-describedby
λ± μ κ·Όμ±μ μν μμ±μ μ μ ν μ¬μ©ν΄, μ§λ λ΄μμ μ λ³΄κ° μλ―Έ μκ² μ λ¬λλλ‘ ν©λλ€.
- κ²½λ‘ μλ΄ μ μ리 λ° μ§λ μ¬μ©: νΉν λͺ¨λ°μΌ νκ²½μμ μ리μ μ§λμ μ¬μ©νμ¬ μκ°μ μΈ μλ΄ μμ΄λ μμΉ μ 보λ₯Ό μ 곡ν μ μμ΅λλ€.
- νλ/μΆμ μ΅μ μ 곡: λ²νΌμ ν΅ν΄ μ§λλ₯Ό νλνκ±°λ μΆμνλ κΈ°λ₯μ μ 곡νκ³ , μ΄ κ³Όμ μ μμ±μΌλ‘ μλ΄νμ¬ μ¬μ©μκ° μμ μ΄ μ΄λ μ λλ‘ νλλ μ§λλ₯Ό λ³΄κ³ μλμ§ μ μ μλλ‘ ν©λλ€.
- λ μ΄μ΄ μ΅μν: μκ°μ μΌλ‘ 볡μ‘ν μ§λκ° μλλΌ κ°λ¨νκ³ νμμ μΈ μ 보λ§μ νμνλ μ§λλ₯Ό μ 곡ν©λλ€. μ¬μ©μκ° νμμ λ°λΌ λ μ΄μ΄λ₯Ό μΌκ³ λ μ μλλ‘ νλ©΄ μ μ©ν©λλ€.
- λ΄λΉκ²μ΄μ ννΈ μΆκ°: νμ¬ μ§λμμ μ¬μ©μ μμΉκ° μ΄λμΈμ§, μ£Όλ³μ μ΄λ€ μ₯μκ° μλμ§λ₯Ό ννΈλ‘ μ 곡ν μ μμ΅λλ€.
- ν° ν°μΉ νκ²: λ§μ»€, νλ/μΆμ λ²νΌ λ± ν°μΉ μμμ ν¬κΈ°λ₯Ό μΆ©λΆν ν¬κ² λ§λ€μ΄ ν°μΉνκΈ° μ½λλ‘ ν©λλ€.
- μ μ€μ² μ§μ: νλ©΄ νλ κΈ°λ₯Ό μ¬μ©νλ μ¬μ©μλ μ§λ μ΄λ, νλ, μΆμ κΈ°λ₯μ νμ©ν μ μλλ‘ μ μ€μ² νμμ μ§μν©λλ€.
μ§λμμ νΉμ μμΉ μ 보λ₯Ό ν μ€νΈλ‘λ μ 곡νλ©΄ νλ©΄ νλ κΈ°λ ν€λ³΄λ μ¬μ©μμκ² λ μΉμν νκ²½μ μ 곡ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ§λμ νΉμ μ§μ μ ν¬μ»€μ€κ° λ§μΆ°μ§λ©΄ ν΄λΉ μ§μ μ μ€λͺ μ΄λ μμΉ μ’νλ₯Ό μ½μ΄μ£Όλλ‘ ν©λλ€.
μ λ°©λ²λ€μ ν΅ν΄ μ§λ μ¬μ© μ λ€μν μν©μμ μ κ·Όμ±μ κ°μ ν μ μμΌλ©°, μ΄λ μ¬μ©μ κ²½νμ μ λ°μ μΈ μ§μ λμ΄λ λ° κΈ°μ¬ν μ μμ΅λλ€.
μ§λμ κ΄λ ¨λ μ κ·Όμ±(a11y) μ¬λ‘μλ λ€μκ³Ό κ°μ κ²λ€μ΄ μμ΅λλ€:
- λ체 ν μ€νΈ λ° μ€λͺ μ 곡:
- μ§λ μ΄λ―Έμ§μ λν μ μ ν λ체 ν μ€νΈ μ 곡
- μ§λμ μ£Όμ μ 보μ λͺ©μ μ μ€λͺ νλ ν μ€νΈ μ€λͺ μΆκ°
- ν€λ³΄λ μ κ·Όμ±:
- ν€λ³΄λλ§μΌλ‘ μ§λ νμ λ° νλ/μΆμ κ°λ₯
- λ§μ»€λ κ΄μ¬ μ§μ μ ν€λ³΄λ ν¬μ»€μ€ μ΄λ μ§μ
- μ€ν¬λ¦° 리λ μ§μ:
- μ§λ μ΄λ, νλ/μΆμ μ μ€ν¬λ¦° 리λλ‘ μ 보 μ 곡
- λ§μ»€λ νμ μ μ 보λ₯Ό μ€ν¬λ¦° 리λλ‘ μ½μ μ μλλ‘ κ΅¬ν
- μμ λλΉ λ° κ³ λλΉ λͺ¨λ:
- μ§λ μμλ€ κ°μ μΆ©λΆν μμ λλΉ μ 곡
- κ³ λλΉ λͺ¨λ μ§μμΌλ‘ κ°μμ± ν₯μ
- λ°μ΄ν° ν μ΄λΈ λμ:
- μ§λ μ 보λ₯Ό μ κ·Ό κ°λ₯ν λ°μ΄ν° ν μ΄λΈ ννλ‘λ μ 곡
- ν΄λ¬μ€ν°λ§:
- λ§μ λ§μ»€λ₯Ό κ·Έλ£Ήννμ¬ νμ ν¨μ¨μ± ν₯μ
- λ€μν μ λ ₯ λ°©μ μ§μ:
- λ§μ°μ€, ν°μΉ, ν€λ³΄λ λ± λ€μν μ λ ₯ λ°©μμΌλ‘ μ‘°μ κ°λ₯
- μ κ·Όμ± μ 보 ν¬ν¨:
- ν μ²΄μ΄ μ κ·Όμ±, μ μ λΈλ‘ λ±μ μ 보λ₯Ό μ§λμ νμ
- μμ± μλ΄ λ° ν ν± νΌλλ°±:
- μκ° μ₯μ μΈμ μν μμ± μλ΄ λ° μ΄κ° νΌλλ°± μ 곡
- μ¬μ©μ μ μ μ΅μ :
- κΈκΌ΄ ν¬κΈ°, μμ κ΅¬μ± λ±μ μ¬μ©μκ° μ‘°μ ν μ μλ μ΅μ μ 곡
μ΄λ¬ν μ κ·Όμ± κΈ°λ₯λ€μ λͺ¨λ μ¬μ©μκ° μ§λ μ 보μ μ½κ² μ κ·Όνκ³ μ΄μ©ν μ μλλ‘ λμ΅λλ€.
Citations: [1] http://web-accessibility.carnegiemuseums.org/content/maps/ [2] https://resource.esriuk.com/blog/mapping-with-accessibility-8-key-hacks-to-map-with-confidence/ [3] https://www.esri.com/arcgis-blog/products/instant-apps/mapping/accessibility-essentials-for-gis-and-mapping/ [4] https://blogs.iadb.org/ciudades-sostenibles/en/application-of-accessibility-maps-cities-from-a-different-perspective/ [5] https://learn.microsoft.com/en-us/azure/azure-maps/map-accessibility [6] https://blog.openstreetmap.org/2020/12/02/the-best-world-map-for-accessibility/ [7] https://equalentry.com/accessible-maps-on-the-web/ [8] https://support.google.com/maps/answer/6396990?rd=3&visit_id=638584515792159253-3124661377
μμΉκΈ°λ° μλΉμ€μ λν μ¬μ΄λ νλ‘μ νΈμμ μλν΄λ³Ό μ μλ κΈ°μ μ λμ μΌλ‘ μ¬λ¬ κ°μ§κ° μμ μ μμ΅λλ€. νΉν νμμ΄ 4λͺ μ΄κ³ λμμ΄λλ λ°±μλ μ§μ μμ΄ μ§ννλ€λ©΄, κΈ°μ μ μΈ λμ μ μ§μ€ν΄ κ²½νμ μμ μ μλ μ’μ κΈ°νκ° λ κ±°μμ. μλλ Reactμ TypeScriptλ₯Ό κΈ°λ°μΌλ‘ νλ‘ νΈμλ νμ΄ λμ ν΄λ³Ό μ μλ μ£Όμ κΈ°μ μ λμ κ³Ό μ΄λ₯Ό ν΅ν΄ μ»μ μ μλ κΈ°μ μ μ±μ₯μ λλ€.
-
λμ μμ: Google Maps API, Mapbox, OpenStreetMapκ³Ό κ°μ μ§λ APIλ₯Ό μ¬μ©νμ¬ μ¬μ©μμ μμΉλ₯Ό κΈ°λ°μΌλ‘ λ§μΆ€ν μ§λλ₯Ό νμνκ³ μνΈμμ©μ ꡬννλ κ²
- μμΉ ν μΆκ° λ° ν΄λ¬μ€ν°λ§
- νΉμ μμΉ μ 보 νμ λ° μ»€μ€ν°λ§μ΄μ§ (μ: μ₯μ μΈλΆ μ 보, 리뷰 λ±)
- μ¬μ©μκ° μ§λλ₯Ό μ΄λ/νλν λ μ€μκ°μΌλ‘ λ°μ΄ν° λ‘λ
-
κΈ°μ μ μ±μ₯:
- μ§λ API μ¬μ© κ²½νμ μμΌλ©°, RESTful API νΈμΆκ³Ό λ°μν(Responsive) μΈν°νμ΄μ€ κ΅¬μΆ λ₯λ ₯μ ν₯μ
- Reactμ μν κ΄λ¦¬ λ° μ΅μ νλ₯Ό ν΅ν΄ μ§λμ κ°μ λν DOM μμμμ ν¨μ¨μ μΈ λ λλ§μ ꡬννλ λ°©λ²μ νμ΅
- TypeScriptλ‘ μ§λ APIμ 볡μ‘ν ꡬ쑰λ₯Ό νμ μμ νκ² λ€λ£¨λ©΄μ μ λ°ν νμ μ€μ μ λν μ΄ν΄κ° κΉμ΄μ§
-
λμ μμ:
Geolocation API
μWebSocket
μ μ¬μ©ν΄ μ€μκ°μΌλ‘ μμΉλ₯Ό μΆμ νκ³ , μμΉκ° λ³κ²½λ λλ§λ€ μ΄λ₯Ό UIμ λ°μνλ κΈ°λ₯ ꡬν- μ¬μ©μμ νμ¬ μμΉλ₯Ό μ€μκ°μΌλ‘ λ°μ
- μμΉ μ λ³΄κ° λ³ν λ μλμΌλ‘ μ§λλ κ΄λ ¨ UIκ° μ λ°μ΄νΈλλλ‘ μ€μ
-
κΈ°μ μ μ±μ₯:
- λΈλΌμ°μ μ Geolocation APIμ Reactμ λΌμ΄νμ¬μ΄ν΄μ νμ©ν΄ μ€μκ° λ°μ΄ν°λ₯Ό μμ νκ³ ν¨μ¨μ μΌλ‘ λ°μνλ λ°©λ² μ΅λ
- WebSocketκ³Ό κ°μ μ€μκ° ν΅μ κΈ°μ μ κ²½ννμ¬ μλ²μμ μ§μμ μΈ ν΅μ μ λν μ΄ν΄λ ν₯μ
- React Contextλ Reduxλ₯Ό ν΅ν΄ μν κ΄λ¦¬ ν¨ν΄μ ꡬννμ¬ λ°μ΄ν°λ₯Ό μ¬λ¬ μ»΄ν¬λνΈμ μ λ¬νλ λ°©λ² νμ΅
-
λμ μμ:
Service Worker
μIndexedDB
λ₯Ό μ¬μ©νμ¬ μ¬μ©μκ° μ€νλΌμΈμΌ λλ μμΉ κΈ°λ° μλΉμ€λ₯Ό μ΄μ©ν μ μλλ‘ μΊμ± μ λ΅μ ꡬμΆ- μ¬μ©μκ° λ§μ§λ§μΌλ‘ μ μνλ μμΉ μ 보λ₯Ό μ μ₯νκ³ μ€νλΌμΈ μνμμ λΆλ¬μ€κΈ°
- μ£Όμ API λ°μ΄ν° (μ: μ§λ νμΌ, μμΉ λ°μ΄ν°)λ₯Ό μΊμ±νκ³ , λ€νΈμν¬ μ°κ²°μ΄ μ¬κ°λλ©΄ μλ‘κ³ μΉ¨νλ κΈ°λ₯ ꡬν
-
κΈ°μ μ μ±μ₯:
- PWAμ ν΅μ¬ κΈ°λ₯μΈ μ€νλΌμΈ μ§μμ κ²½ννλ©°, Service Workerμ κΈ°λ³Έ κ°λ κ³Ό νμ©λ²μ μ΅ν μ μμ
- IndexedDBμ κ°μ ν΄λΌμ΄μΈνΈ μΈ‘ λ°μ΄ν° μ μ₯μλ₯Ό νμ΅νμ¬ λμ©λ λ°μ΄ν° μΊμ± λ° κ΄λ¦¬νλ κΈ°μ μ΅λ
- μ€νλΌμΈ λͺ¨λμ λ°μ΄ν° λκΈ°ν κΈ°μ μ μ΄ν΄νμ¬ μ¬μ©μ κ²½νμ κ°μ νλ λ°©λ² μ΅λ
-
λμ μμ: λ€λμ μμΉ λ°μ΄ν°λ₯Ό ν΄λ¬μ€ν°λ§νμ¬ ν¨μ¨μ μΌλ‘ λ λλ§νκ³ , μ€ λ 벨μ λ°λΌ μ¬μ©μμκ² νμν λ°μ΄ν°λ§ μ 곡
- λ°μ΄ν°κ° λ§μ μν©μμ ν΄λ¬μ€ν°λ§μ ν΅ν΄ μ§λκ° κΉλνκ² λ³΄μ΄λλ‘ μ€μ
- μ€ λ 벨과 νλ©΄ ν¬κΈ°μ λ°λΌ λ λλ§ μ λ΅μ λ€λ₯΄κ² μ μ©νμ¬ μ±λ₯ μ΅μ ν
-
κΈ°μ μ μ±μ₯:
- Reactμ TypeScriptλ₯Ό νμ©νμ¬ λκ·λͺ¨ λ°μ΄ν°λ₯Ό λ λλ§ν λμ μ±λ₯ λ³λͺ© λ¬Έμ ν΄κ²°λ² μ΄ν΄
- μ±λ₯ μ΅μ νλ₯Ό μν ν΄λ¬μ€ν°λ§ κΈ°λ² λ° λ λλ§ ν¨μ¨νλ₯Ό νμ΅
- λ°μ΄ν°μ κ°μμ± μ‘°κ±΄ μ€μ λ° Lazy Loadλ₯Ό ν΅ν΄ νμν λλ§ λ°μ΄ν°λ₯Ό λ λλ§νλ λ°©μ μ΄ν΄
-
λμ μμ: μ¬μ©μκ° νΉμ μμΉμ λμ°©νκ±°λ κ·Όμ²μ μμ λ μλ¦Όμ μ£Όλ κΈ°λ₯μ ꡬννκ³ , μμΉ κΆνμ μμ²νκ³ μ²λ¦¬νλ λ‘μ§ κ΅¬μ±
- λΈλΌμ°μ Notification APIμ Geolocation APIλ₯Ό μ°λνμ¬ νΉμ μμΉ κ·Όμ²μΌ λ μλ¦Ό λ°μ
- μμΉ κΆν μμ² λ° κΆν κ±°λΆ μμ μλ¬ μ²λ¦¬ λ‘μ§ κ΅¬μΆ
-
κΈ°μ μ μ±μ₯:
- μ¬μ©μμ μνΈμμ©ν μ μλ μλ¦Ό κΈ°μ μ μ΅ν λΈλΌμ°μ μ Notification API νμ© λ₯λ ₯ ν₯μ
- μμΉ κΆνκ³Ό κ΄λ ¨λ UI λ° μλ¬ νΈλ€λ§ λ‘μ§ μμ± κ²½νμΌλ‘ μ¬μ©μ κ²½ν(UX) κ°μ
- Geofencing λ° μμΉ κΈ°λ° μλ¦Ό κΈ°λ₯μ λν κ²½νμ ν΅ν΄ 볡μ‘ν μ΄λ²€νΈ μ²λ¦¬ λ° μν κ΄λ¦¬ νμ΅
-
λμ μμ: λ€μν λλ°μ΄μ€μ νλ©΄ ν¬κΈ°μμ μμΉ κΈ°λ° μλΉμ€κ° μννκ² μλνλλ‘ λ°μν λμμΈ μ μ©
- λͺ¨λ°μΌ, νλΈλ¦Ώ, λ°μ€ν¬ν λ± λ€μν νλ©΄μμ μ΅μ μ UX μ 곡
- μ§λμ μμΉ κΈ°λ° κΈ°λ₯μ΄ νλ©΄ ν¬κΈ°μ λ°λΌ μ μ νκ² λ³νλλ‘ λ°μν UI μ€κ³
-
κΈ°μ μ μ±μ₯:
- CSS Media Queriesμ Flexbox, CSS Gridλ₯Ό ν΅ν΄ λ°μν μΉ λμμΈμ λν μ΄ν΄ μ¬ν
- λ°μν μΉ κ΅¬μ‘°λ₯Ό React μ»΄ν¬λνΈμ ν¨κ³Όμ μΌλ‘ μ μ©νμ¬ λ€μν νλ©΄ ν¬κΈ°μμ μ΅μ νλ UI μ 곡 λ°©λ² μ΅λ
- λ°μν UI ꡬμΆμ ν΅ν΄ λ€μν λΈλΌμ°μ μ λλ°μ΄μ€μμμ ν μ€νΈ λ° λλ²κΉ κ²½νμ μκ² λ¨
μ΄ μΈμλ μ¬λ¬ κ°μ§ μΆκ° λμ μ μκ°ν΄λ³Ό μ μμ§λ§, μμ μμλ€μ νΉν μ΄κΈλΆν° μ€κΈκΉμ§ Reactμ TypeScript μ€ν¬μ ννν μκ³ , μ€μ μμ μ§μ μ μΌλ‘ νμ©ν μ μλ κΈ°μ λ€μ μ΅λν μ μλ λμ λ€μ λλ€. μ΄λ¬ν λμ μ ν΅ν΄ μκΈ°λ κΈ°μ μ μ±μ₯μ μ€λ¬΄μμλ λ§μ λμμ΄ λ λΏ μλλΌ, νμΌλ‘ μμ ν λ κ°κΈ° λ€λ₯Έ μμμμμ μ±μ₯κ³Ό μλμ§λ₯Ό λΌ μ μκ² λμμ€λλ€.
μμΉκΈ°λ° μλΉμ€λ₯Ό μν μ¬μ΄λ νλ‘μ νΈλ₯Ό μ§ννλ©΄μ, λ³΄λ€ λ€μν κΈ°μ μ κ΄μ μμ λμ ν΄λ³Ό μ μλ λͺ κ°μ§ μ κ·Ό λ°©λ²μ μλ €λ릴κ²μ. κ°κ°μ μμΉκΈ°λ° μλΉμ€λΌλ ν° ν μμμ κΈ°μ μ κΉμ΄λ₯Ό λ€λ₯΄κ² ν μ μλλ‘ λμμ£Όλ©°, μ¬μ©μ κ²½νκ³Ό μ±λ₯ μ΅μ ν, λ°μ΄ν° μ²λ¦¬μ μ΄μ μ λ§μΆ λμ λ€μ λλ€.
-
λμ μμ: μμΉκΈ°λ° μλΉμ€λ μν κ΄λ¦¬κ° 볡μ‘ν΄μ§κΈ° μ¬μμ. μμΉ λ°μ΄ν°μ UI μν(μ: λ‘λ© μν, μ€λ₯ μ²λ¦¬ λ±) μΈμλ, μ§λ μμΉμ κ΄λ ¨λ μ λλ©μ΄μ
μν, μ€μκ° μμΉ μ
λ°μ΄νΈ μν λ±μ΄ λ€μνκ² μ½νκΈ° λλ¬Έμ΄μ£ .
- μ€νμ μλ: μν κ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬μΈ Recoilμ΄λ Zustandλ₯Ό μ¬μ©ν΄λ³΄κ±°λ Reduxμ μ΅μ κΈ°μ μ€ν(μ: Redux Toolkit)μ νμ©ν΄λ³΄μΈμ. κ° μνκ° λͺ ννκ² μ μλκ³ μ λ°μ΄νΈλ μ μλλ‘ κ΅¬μ‘°νν μ μμ΄μ.
- κΈ°μ μ μ±μ₯: κ³ κΈ μν κ΄λ¦¬ ν¨ν΄μ ν΅ν΄ Reactμμμ λκ·λͺ¨ λ°μ΄ν° νλ¦κ³Ό λΉλκΈ° μ²λ¦¬ λ°©λ²μ κΉμ΄ μκ² νμ΅ν μ μκ³ , ν¨μ¨μ μΈ λ¦¬λ λλ§μ ν΅ν΄ μ±λ₯ μ΅μ ν κ²½νμ μκ² λ©λλ€.
-
λμ μμ: μμΉκΈ°λ° μλΉμ€λ λ€μν μ¬μ©μ μμΉμ νκ²½μμμ ν
μ€νΈκ° νμν©λλ€. μ΄λ TDD(Test Driven Development) μ κ·Όμ ν΅ν΄ μ£Όμ κΈ°λ₯μ λ¨κ³λ³λ‘ ꡬννλ©΄μ ν
μ€νΈλ₯Ό μλννλ λ°©μμΌλ‘ νλ‘μ νΈμ νμ§μ λμΌ μ μμ΄μ.
- μ€νμ μλ: Jestμ React Testing Libraryλ₯Ό μ¬μ©ν΄ UIμ μν κ΄λ¦¬λ₯Ό ν μ€νΈνκ³ , Cypressλ‘ E2E(End-to-End) ν μ€νΈλ₯Ό μλνν΄λ³Ό μ μμ΄μ. μμΉ λ°μ΄ν°μ κ΄λ ¨λ μ£Όμ κΈ°λ₯(μ: μ§λ μ΄λ, λ§μ»€ νμ, μμΉ κΆν μ²λ¦¬ λ±)μ ν μ€νΈν©λλ€.
- κΈ°μ μ μ±μ₯: TDDμ μλν ν μ€νΈ λμ μ ν΅ν΄ λ¨μ ν μ€νΈμ ν΅ν© ν μ€νΈ μμ± λ₯λ ₯μ κΈ°λ₯Ό μ μκ³ , μμ μ μΈ μ½λ μμ± λ° λ°°ν¬μ λν κ²½νμ μμ μ μμ΅λλ€. λν, μ ν리μΌμ΄μ μ λμμ λ³΄λ€ κΉμ΄ μ΄ν΄νκ² λ©λλ€.
-
λμ μμ: μ§λ κΈ°λ° UIλ μ’
μ’
μ λλ©μ΄μ
κ³Ό μ¬μ©μ μνΈμμ©μ μꡬν©λλ€. μλ₯Ό λ€μ΄, μ¬μ©μκ° νΉμ μμΉλ₯Ό ν΄λ¦ν λ μ§λκ° ν΄λΉ μμΉλ‘ λΆλλ½κ² μ΄λνκ±°λ νΉμ λ§μ»€κ° 컀μ§λ©° κ°μ‘°λλ λ±μ ν¨κ³Όκ° νμνμ£ .
- μ€νμ μλ: React Springμ΄λ Framer Motionμ νμ©ν΄λ³΄μΈμ. μ§λ UIμμ λ§μ»€ μ λλ©μ΄μ μ΄λ μ§λμ νλ/μΆμ μ λλ©μ΄μ μ ꡬνν΄λ³΄λ©΄ μ’μ΅λλ€. νλ©΄ μ νκ³Ό μν λ³νμ λ°λ₯Έ μμ°μ€λ¬μ΄ μ λλ©μ΄μ μ ꡬνν μ μμ΄μ.
- κΈ°μ μ μ±μ₯: μ¬μ©μ κ²½νμ κ³ λ €ν μ λλ©μ΄μ ꡬνμ ν΅ν΄ UX μ€κ³μ React μ λλ©μ΄μ λΌμ΄λΈλ¬λ¦¬ μ¬μ©λ²μ λν κΉμ μ΄ν΄λ₯Ό μμ μ μμ΅λλ€. λν, μ λλ©μ΄μ μ΄ μ±λ₯μ λ―ΈμΉλ μν₯μ νμ νκ³ μ΅μ ννλ λ₯λ ₯λ κΈ°λ₯΄κ² λ©λλ€.
-
λμ μμ: μμΉκΈ°λ° λ°μ΄ν°λ₯Ό μκ°ννλ κΈ°λ₯μ μΆκ°νλ©΄ μ¬μ©μμκ² λ€μν λ°μ΄ν°λ₯Ό ν¨κ³Όμ μΌλ‘ μ 곡ν μ μμ΅λλ€. μμΉ λ°μ΄ν°λ₯Ό μ°¨νΈ, κ·Έλν, ννΈλ§΅ λ±μΌλ‘ λ³νν΄ μκ°μ μΌλ‘ νννλ κ²μ΄ μ¬κΈ°μ ν΄λΉν©λλ€.
- μ€νμ μλ: D3.jsμ κ°μ λ°μ΄ν° μκ°ν λΌμ΄λΈλ¬λ¦¬λ Chart.js, ApexCharts λ±μ μ¬μ©νμ¬ μμΉκΈ°λ° λ°μ΄ν°μ ν΅κ³λ₯Ό μκ°νν΄λ³΄μΈμ. νΉμ μ§μμ μ¬μ©μ λΆν¬λ μ΄λ ν¨ν΄μ 보μ¬μ£Όλ ννΈλ§΅μ ꡬνν΄λ³΄λ κ²λ μ’μ λμ μ΄ λ©λλ€.
- κΈ°μ μ μ±μ₯: λ°μ΄ν° μκ°νλ₯Ό ν΅ν΄ λ€μν λ°μ΄ν° νν λ°©μκ³Ό λΆμ λ°©λ²μ μ΄ν΄νκ² λ©λλ€. λν, μμΉ λ°μ΄ν°λ₯Ό μ§κ΄μ μΌλ‘ νννλ κ²½νμ ν΅ν΄ λ°μ΄ν°λ₯Ό ν¨κ³Όμ μΌλ‘ μ λ¬νλ λ₯λ ₯μ κΈ°λ₯Ό μ μμ΄μ.
-
λμ μμ: μμΉκΈ°λ° μλΉμ€λ κΈλ‘λ² μ¬μ©μμΈ΅μ λμμΌλ‘ ν μ μκΈ° λλ¬Έμ λ€κ΅μ΄ μ§μμ ν΅ν΄ λ€μν μΈμ΄ λ° λ¬ΈνκΆμμ μνν μ¬μ©λ μ μλλ‘ νλ κ²λ λμ ν μ μμ΄μ.
- μ€νμ μλ: i18next λΌμ΄λΈλ¬λ¦¬μ React-i18nextλ₯Ό μ¬μ©ν΄ UIλ₯Ό λ€κ΅μ΄λ‘ μ§μνκ³ , λ μ§ λ° μκ° νμ, μ§λ μμ 거리 λ¨μ, νν λ±μ μμκ° κ° λλΌμ λ§κ² λ³νλ μ μλλ‘ κ΅¬νν΄λ³΄μΈμ.
- κΈ°μ μ μ±μ₯: νμ§ν ꡬνμ ν΅ν΄ κΈλ‘λ² μλΉμ€μ UX μ€κ³λ₯Ό κ²½νν μ μμΌλ©°, λ€κ΅μ΄ μ§μμ΄ νλ‘μ νΈμ λ―ΈμΉλ μν₯μ μ΄ν΄νκ² λ©λλ€. λν, λ€κ΅μ΄ λ°μ΄ν° κ΄λ¦¬ λ° UI μ λ°μ΄νΈμ λν κΉμ μ΄ν΄λ μ»μ μ μμ΅λλ€.
-
λμ μμ: μμΉκΈ°λ° λ°μ΄ν°μ νΉμ±μ, νΉμ μ¬μ©μκ° μμ£Ό λ°©λ¬Ένλ μμΉλ κ²½λ‘λ₯Ό λΆμνμ¬ μΆμ² κΈ°λ₯μ΄λ μμΈ‘ λͺ¨λΈμ λμ
νλ κ²μ΄ κ°λ₯ν©λλ€. μλ₯Ό λ€μ΄, μ¬μ©μκ° νΉμ μμΉ κ·Όμ²μ μμ λ μ μ¬ν μ₯μλ₯Ό μΆμ²νλ κΈ°λ₯μ
λλ€.
- μ€νμ μλ: TensorFlow.jsμ κ°μ νλ‘ νΈμλ λ¨Έμ λ¬λ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν΅ν΄ μμΉ λ°μ΄ν°λ₯Ό λΆμνκ±°λ μμΈ‘ λͺ¨λΈμ ꡬμΆν΄λ³΄μΈμ. μλ₯Ό λ€μ΄, KNN(K-Nearest Neighbors)μ κ°μ κ°λ¨ν λͺ¨λΈμ μ¬μ©ν΄ νΉμ μμΉμμ μ μ¬ν μ§μμ μμΈ‘νλ κΈ°λ₯μ ꡬνν μ μμ΅λλ€.
- κΈ°μ μ μ±μ₯: νλ‘ νΈμλμμμ λ¨Έμ λ¬λ λͺ¨λΈ νμ©μ κ²½ννλ©° λ°μ΄ν° λΆμμ λν κΈ°λ³Έ μ§μκ³Ό ν¨κ», μ¬μ©μμ νλ ν¨ν΄μ μ΄ν΄νκ³ μμΈ‘νλ λ₯λ ₯μ κΈ°λ₯΄κ² λ©λλ€. μ΄λ‘μ¨ λ°μ΄ν°μ κΈ°λ°ν λ§μΆ€ν UX μ 곡 λ°©μμ νμ΅νκ² λ©λλ€.
-
λμ μμ: μ¬μ©μμ κ°μΈ μμΉ λ°μ΄ν°μ μ νΈλμ λ°λΌ μΈν°νμ΄μ€λ₯Ό κ°μΈννλ κΈ°λ₯μ μΆκ°ν΄λ³΄μΈμ. μλ₯Ό λ€μ΄, μμ£Ό λ°©λ¬Ένλ μμΉλ₯Ό μ¦κ²¨μ°ΎκΈ°λ‘ μ μ₯νκ±°λ, μ΅κ·Ό λ°©λ¬Έ μμΉλ₯Ό κΈ°λ‘νλ κΈ°λ₯μ
λλ€.
- μ€νμ μλ: Firebaseμ κ°μ ν΄λΌμ°λ λ°±μλ μλΉμ€λ₯Ό μ΄μ©ν΄ μμΉ κΈ°λ‘κ³Ό κ΄λ ¨λ λ°μ΄ν°λ₯Ό μ μ₯νκ³ κ΄λ¦¬νλ λ°©μλ μλν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κ° μ¬μ©μμκ² λ§μΆ€νλ UIμ κ²½νμ μ 곡ν μ μκ² ν΄λ³΄μΈμ.
- κΈ°μ μ μ±μ₯: μ¬μ©μ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ κ°μΈν κ²½νμ μ 곡ν¨μΌλ‘μ¨ μ¬μ©μ μΈν°λμ μ λν μ΄ν΄λ₯Ό λμ΄κ³ , μ΄λ₯Ό λ°νμΌλ‘ λ°μν UI μ€κ³λ₯Ό κ²½νν μ μμ΅λλ€. λν Firebaseμ κ°μ BaaS(Backend as a Service) λꡬλ₯Ό νμ©ν΄ λ°±μλμ κΈ°λ³Έμ μ΄ν΄ν μλ μμ΅λλ€.
-
λμ μμ: μμΉκΈ°λ° μλΉμ€λ κ°μΈμ λ―Όκ°ν μ 보λ₯Ό λ€λ£¨κΈ° λλ¬Έμ 보μμ΄ μ€μν μμμ
λλ€. μ¬μ©μ μμΉλ₯Ό μμ νκ² κ΄λ¦¬νκ³ , λ°μ΄ν° 보νΈλ₯Ό μν΄ μ² μ ν 보μμ΄ νμν΄μ.
- μ€νμ μλ: JWT(JSON Web Token)λ₯Ό μ¬μ©ν΄ μ¬μ©μ μΈμ¦μ κ΄λ¦¬νκ³ , HTTPSλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μμ νκ² μ μ‘νλ©°, μ¬μ©μ λμ(μ: μμΉ μ 보 μ¬μ© λμ)λ₯Ό μμ²νκ³ μ΄λ₯Ό κ΄λ¦¬νλ λ°©μμ λμ ν μ μμ΄μ.
- κΈ°μ μ μ±μ₯: 보μκ³Ό κ΄λ ¨λ κΈ°μ μ μ΄ν΄νκ³ μ¬μ©μ λ°μ΄ν°λ₯Ό 보νΈνλ κ²½νμ ν΅ν΄ λ―Όκ°ν λ°μ΄ν°μ κ΄λ¦¬ λ°©λ²μ νμ΅νκ² λ©λλ€. νΉν 보μκ³Ό κ΄λ ¨λ Best Practiceμ μ¬μ©μ κ²½νμ λμμ κ³ λ €νλ λ°©λ²μ μ΅νκ² λ©λλ€.
μμ λ€μν λμ λ€μ λ¨μν μμΉ κΈ°λ° μλΉμ€μ κΈ°λ₯μ ꡬννλ λ° κ·ΈμΉμ§ μκ³ , μ€λ¬΄μμ νμν κΈ°μ κ³Ό λ Ένμ°λ₯Ό λ€λ°©λ©΄μΌλ‘ μμ μ μλ κΈ°νλ₯Ό μ 곡ν κ±°μμ.