λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
IT

μ›Ή μ ‘κ·Όμ„±κ³Ό μ›Ή ν‘œμ€€: μ›Ή 개발의 핡심 κ°œλ…

by πŸ’²πŸŽ΅βœ–οΈβœ”οΈβ˜Ό 2024. 2. 14.
728x90

μ›Ή μ ‘κ·Όμ„±κ³Ό μ›Ή ν‘œμ€€: μ›Ή 개발의 핡심 κ°œλ…

1. μ›Ή μ ‘κ·Όμ„±μ΄λž€?

1.1 μ›Ή μ ‘κ·Όμ„±μ˜ κ°œλ…

μ›Ή 접근성은 λͺ¨λ“  μ‚¬μš©μž, ν¬κ΄„μ μœΌλ‘œλŠ” λ…Έμ•½μž, μž₯애인, 고령자, λ‹€μ–‘ν•œ λ””λ°”μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬λžŒλ“€μ„ ν¬ν•¨ν•œ λͺ¨λ“  μ΄μš©μžκ°€ μ›Ή μ‚¬μ΄νŠΈμ— μ‰½κ²Œ μ ‘κ·Όν•˜κ³  μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” κ°œλ…μž…λ‹ˆλ‹€. μ΄λŠ” μ›Ή 개발의 μ€‘μš”ν•œ 핡심 κ°€μΉ˜ 쀑 ν•˜λ‚˜λ‘œ μΈμ‹λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

1.2 μ™œ μ›Ή 접근성이 ν•„μš”ν•œκ°€?

  • λͺ¨λ“  μ‚¬μš©μžλ₯Ό μœ„ν•œ λ™λ“±ν•œ 기회 제곡: μž₯μ•  여뢀에 관계없이 λˆ„κ΅¬λ‚˜ 정보에 μ‰½κ²Œ μ ‘κ·Όν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

  • λ‹€μ–‘ν•œ λ””λ°”μ΄μŠ€ 지원: λ‹€μ–‘ν•œ λ””λ°”μ΄μŠ€(슀마트폰, νƒœλΈ”λ¦Ώ, 슀크린 리더 λ“±)μ—μ„œλ„ 효과적으둜 웹을 μ΄μš©ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

  • 법적 μš”κ΅¬μ‚¬ν•­: λ§Žμ€ κ΅­κ°€μ—μ„œ μ›Ή 접근성을 법적 의무둜 κ·œμ •ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

2. μ›Ή ν‘œμ€€μ΄λž€?

2.1 μ›Ή ν‘œμ€€μ˜ κ°œλ…

μ›Ή ν‘œμ€€μ€ μ›Ήμ—μ„œ μ‚¬μš©λ˜λŠ” ν‘œμ€€ 기술과 κ·œμΉ™μ„ μ˜λ―Έν•©λ‹ˆλ‹€. μ›Ή ν‘œμ€€μ„ μ€€μˆ˜ν•¨μœΌλ‘œμ¨ μ›Ή μ‚¬μ΄νŠΈλŠ” μ–΄λ–€ λΈŒλΌμš°μ €λ‚˜ λ””λ°”μ΄μŠ€μ—μ„œλ„ μΌκ΄€λœ λͺ¨μŠ΅μœΌλ‘œ 제곡될 수 μžˆμŠ΅λ‹ˆλ‹€.

2.2 μ™œ μ›Ή ν‘œμ€€μ„ 따라야 ν•˜λŠ”κ°€?

  • λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ μΌκ΄€λœ λ™μž‘ 보μž₯: μ›Ή ν‘œμ€€μ„ μ€€μˆ˜ν•˜λ©΄ λͺ¨λ“  λΈŒλΌμš°μ €μ™€ λ””λ°”μ΄μŠ€μ—μ„œ λ™μΌν•œ κ²½ν—˜μ„ μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • 검색 엔진 μ΅œμ ν™”(SEO): μ›Ή ν‘œμ€€μ„ μ€€μˆ˜ν•˜λ©΄ 검색 μ—”μ§„μ—μ„œ 더 잘 μƒ‰μΈν™”ν•˜κ³  λž­ν‚Ήμ„ 맀길 수 μžˆμŠ΅λ‹ˆλ‹€.

3. μ›Ή μ ‘κ·Όμ„±κ³Ό μ›Ή ν‘œμ€€μ„ μœ„ν•œ 개발 κ°€μ΄λ“œλΌμΈ

3.1 μ μ ˆν•œ HTML μ‚¬μš©

  • 의미 μžˆλŠ” νƒœκ·Έ μ‚¬μš©: μ μ ˆν•œ μ‹œλ§¨ν‹± HTML νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμ„œ ꡬ쑰λ₯Ό λͺ…ν™•ν•˜κ²Œ ν‘œν˜„ν•©λ‹ˆλ‹€.
<!-- λ‚˜μœ 예 -->
<div onclick="doSomething()">ν΄λ¦­ν•˜μ„Έμš”</div>

<!-- 쒋은 예 -->
<button onclick="doSomething()">ν΄λ¦­ν•˜μ„Έμš”</button>
  • 폼 κ΄€λ ¨ μš”μ†Œ μ‚¬μš©: 폼 μš”μ†Œμ—λŠ” label 등을 μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžμ—κ²Œ λͺ…ν™•ν•œ 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
<!-- λ‚˜μœ 예 -->
<div>이름: <input type="text"></div>

<!-- 쒋은 예 -->
<label for="name">이름:</label>
<input type="text" id="name">

3.2 CSS μŠ€νƒ€μΌλ§

  • λ ˆμ΄μ•„μ›ƒκ³Ό μŠ€νƒ€μΌμ˜ 뢄리: CSSλ₯Ό μ‚¬μš©ν•˜μ—¬ λ””μžμΈκ³Ό λ ˆμ΄μ•„μ›ƒμ„ κ΄€λ¦¬ν•˜κ³  HTML은 μ˜λ―Έμ— μ§‘μ€‘ν•©λ‹ˆλ‹€.
<!-- λ‚˜μœ 예 -->
<div style="width: 50%; float: left;">컨텐츠</div>

<!-- 쒋은 예 -->
<style>
  .content {
    width: 50%;
    float: left;
  }
</style>
<div class="content">컨텐츠</div>
  • λ°˜μ‘ν˜• μ›Ή λ””μžμΈ(RWD): λ‹€μ–‘ν•œ λ””λ°”μ΄μŠ€μ—μ„œ μΌκ΄€λœ κ²½ν—˜μ„ μœ„ν•΄ λ°˜μ‘ν˜• λ””μžμΈμ„ μ±„νƒν•©λ‹ˆλ‹€.
@media screen and (max-width: 600px) {
  /* 600px μ΄ν•˜μ—μ„œ μ μš©λ˜λŠ” μŠ€νƒ€μΌ */
}

3.3 μžλ°”μŠ€ν¬λ¦½νŠΈ ν™œμš©

  • 점진적 ν–₯상: λͺ¨λ“  κΈ°λŠ₯은 JavaScript에 μ˜μ‘΄ν•˜μ§€ μ•Šκ³  κΈ°λ³Έ κΈ°λŠ₯이 보μž₯λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
<!-- λ‚˜μœ 예 -->
<script>
  document.querySelector('.btn').addEventListener('click', function() {
    // JavaScriptκ°€ λΉ„ν™œμ„±ν™”λœ 경우 이 λ²„νŠΌμ€ μž‘λ™ν•˜μ§€ μ•ŠμŒ
    doSomething();
  });
</script>

<!-- 쒋은 예 -->
<button class="btn" onclick="doSomething()">ν΄λ¦­ν•˜μ„Έμš”</button>
  • 접근성을 κ³ λ €ν•œ μΈν„°λž™μ…˜ κ΅¬ν˜„: λͺ¨λ“  μ‚¬μš©μžκ°€ μ‰½κ²Œ μƒν˜Έμž‘μš©ν•  수 μžˆλ„λ‘ JavaScript μΈν„°λž™μ…˜μ„ μ„€κ³„ν•©λ‹ˆλ‹€.
<!-- λ‚˜μœ 예 -->
<div onclick="toggleMenu()">메뉴</div>

<!-- 쒋은 예 -->
<button onclick="toggleMenu()" aria-expanded="false" id="menuButton">메뉴</button>

3.4 μ›Ή ν‘œμ€€ μ€€μˆ˜

  • μœ νš¨ν•œ HTMLκ³Ό CSS μ‚¬μš©: W3Cμ—μ„œ μ •μ˜ν•œ μ›Ή ν‘œμ€€μ„ μ€€μˆ˜ν•˜μ—¬ κ°œλ°œν•©λ‹ˆλ‹€.
<!-- λ‚˜μœ 예 -->
<font color="red">ν…μŠ€νŠΈ</font>

<!-- 쒋은 예 -->
<span style="color: red;">ν…μŠ€νŠΈ</span>
  • μ›Ή μ ‘κ·Όμ„± 검사 도ꡬ ν™œμš©: μ›Ή 접근성을 ν–₯μƒμ‹œν‚€κΈ° μœ„ν•΄ 검사 도ꡬλ₯Ό ν™œμš©ν•˜μ—¬ 였λ₯˜λ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€.

4. μ—°κ΄€λœ λ‚΄μš©κ³Ό μΆ”κ°€ μ„€λͺ…

4.1 μ›Ή 접근성을 λ†’μ΄λŠ”

ARIA

μ›Ή 접근성을 ν–₯μƒμ‹œν‚€κΈ° μœ„ν•΄ ARIA(Accessible Rich Internet Applications)λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ARIAλŠ” HTML, CSS, μžλ°”μŠ€ν¬λ¦½νŠΈ λ“±κ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜μ—¬ μž₯μ• μΈμ΄λ‚˜ λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œ 더 λ‚˜μ€ μ‚¬μš©μž κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

<!-- ARIA μ‚¬μš© μ˜ˆμ‹œ -->
<button aria-label="λ‹«κΈ° λ²„νŠΌ" onclick="closeDialog()">X</button>

4.2 μ›Ή ν‘œμ€€ μ€€μˆ˜μ˜ μž₯점

  • μœ μ§€λ³΄μˆ˜ μš©μ΄μ„±: μ›Ή ν‘œμ€€μ„ μ€€μˆ˜ν•˜λ©΄ μ½”λ“œμ˜ 일관성이 μœ μ§€λ˜μ–΄ μœ μ§€λ³΄μˆ˜κ°€ μ‰¬μ›Œμ§‘λ‹ˆλ‹€.

  • 크둜슀 λΈŒλΌμš°μ§• 이슈 κ°μ†Œ: μ›Ή ν‘œμ€€ μ€€μˆ˜λ‘œ 크둜슀 λΈŒλΌμš°μ§• 이슈λ₯Ό μ΅œμ†Œν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • ν–₯μƒλœ μ„±λŠ₯: ν‘œμ€€ κΈ°μˆ μ„ μ‚¬μš©ν•˜λ©΄ λΈŒλΌμš°μ €μ—μ„œ 더 효율적으둜 νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

5. 마무리

μ›Ή μ ‘κ·Όμ„±κ³Ό μ›Ή ν‘œμ€€μ€ ν˜„λŒ€ μ›Ή 개발의 ν•„μˆ˜ μš”μ†Œλ‘œ μžλ¦¬λ§€κΉ€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μ€€μˆ˜ν•˜λ©΄ 더 λ§Žμ€ μ‚¬μš©μžμ—κ²Œ μ›Ή μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜κ³ , 검색 엔진 μ΅œμ ν™”μ—μ„œλ„ 이점을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. κ°œλ°œμžλŠ” 항상 μ΅œμ‹  ν‘œμ€€κ³Ό μ ‘κ·Όμ„± 지침을 λ”°λ₯΄λ©° μ‚¬μš©μž μΉœν™”μ μΈ 웹을 μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 κ°œλ°œμžμ™€ μ‚¬μš©μž λͺ¨λ‘μ—κ²Œ 긍정적인 κ²½ν—˜μ„ μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λŒ“κΈ€