๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค ๋ฌธ์ ์ ๋ธ๋ก๊ทธ SEO ๋ฌธ์
์ด๋ฒ ๊ธ์์๋ ํฐ์คํ ๋ฆฌ ์คํจ ์ต์ ํ๋ฅผ ์ํด ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค์ ๊ฒฝ๊ณ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ๊ณผ ์ฃผ์ ๋๋๋งํฌ๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์ธํ ๋ค๋ฃน๋๋ค. ๋๋๋งํฌ ํ๊ทธ, WCAG ๊ธฐ์ค, SEO ์ต์ ํ, ๊ทธ๋ฆฌ๊ณ JavaScript๋ฅผ ํ์ฉํ ๋์ ํ์ฉ๋ฐฉ๋ฒ๊น์ง ๋ชจ๋ ์์๋ฅผ ํฌํจํ์ต๋๋ค.
โ . Lighthouse ์ค๋ฅ์ SEO์ ์๊ด๊ด๊ณ ๋ถ์
๋ธ๋ก๊ทธ๋ฅผ ์ด์ํ๊ณ ์๋ค๋ฉด ๊ตฌ๊ธ์ ํต์ฌ ์ฑ๋ฅ ์ธก์ ๋๊ตฌ์ธ PageSpeed Insights์ Lighthouse์์ ์์ฃผ ๋ง์ฃผ์น๋ ์น๋ช ์ ์ธ ์ ๊ทผ์ฑ(Accessibility) ์ค๋ฅ๊ฐ ์์ต๋๋ค. ๋ฐ๋ก"๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค" ๋๋ "ํ์ด์ง์ ๋ ๊ฐ ์ด์์ main ์์๊ฐ ์์ต๋๋ค"๋ผ๋ ๊ฒฝ๊ณ ์ ๋๋ค.
์ด๋ฌํ ์ค๋ฅ๋ ๋จ์ํ ์ ๊ทผ์ฑ ์ ์๋ง์ ๊น๋ ๊ฒ์ด ์๋๋ผ, ๊ฒ์ ์์ง ์ต์ ํ(SEO)์๋ ์ง์ ์ ์ธ ์ ์ํฅ์ ๋ฏธ์ณ ๋ธ๋ก๊ทธ์ ๋ญํน ๋ฐ ๋ ธ์ถ๋๋ฅผ ์ ํดํฉ๋๋ค
ํนํ ํฐ์คํ ๋ฆฌ์ฒ๋ผ CMS ๊ธฐ๋ฐ ํ๋ซํผ์์๋ ์ด ์ค๋ฅ๊ฐ ๊ตฌ์กฐ์ ํน์ฑ ๋๋ฌธ์ ๋์ฑ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
๋จ์ํ ๊ฒฝ๊ณ ์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง, ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค๋ผ๋ ๋ฉ์์ง๋ ๊ฒ์์์ง์ด ํ์ด์ง์ ํต์ฌ ์ฝํ ์ธ ๋ฒ์๋ฅผ ์ ํํ ์๋ณํ์ง ๋ชปํ๋ค๋ ์๋ฏธ์ด๋ฉฐ, ์ด๋ ๊ณง SEO ์ ์ ํ๋ฝ์ผ๋ก ์ด์ด์ง๋ ๋ฌธ์ ์ ๋๋ค.
๊ฒ์์์ง์ HTML5 ๋๋๋งํฌ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ด์ง์ ์ฐ์ ์์๋ฅผ ํ๋จํ๋๋ฐ, main ํ๊ทธ๊ฐ ์๊ฑฐ๋ ์ค๋ณต๋์ด ์์ ๊ฒฝ์ฐ ํ์ด์ง์ ํต์ฌ ์ ๋ณด๋ฅผ ์ ๋๋ก ํ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ๋ญํน ์ ํธ๊ฐ ์ฝํด์ง๊ณ ์ฌ์ฉ์ ๊ฒฝํ ์ ์๊ฐ ๋จ์ด์ง๊ฒ ๋ฉ๋๋ค.
๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ์ ํ์์ฑ
HTML5๋ ๋ฌธ์ ๊ตฌ์กฐ๋ฅผ ๋ช
ํํ๊ฒ ํ๊ธฐ ์ํด์๋งจํฑ ํ๊ทธ๋ฅผ ๋์
ํ์ต๋๋ค. ๊ทธ์ค์์๋ main ํ๊ทธ๋ ๋ฌธ์๋น ๋จ ํ๋๋ง ์กด์ฌํด์ผ ํ๋ ํต์ฌ ๋๋๋งํฌ์
๋๋ค. ํ์ง๋ง ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ํ์ด์ง๋ ๋์ฒด๋ก ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ ๊ฐ๊ณ ์์ต๋๋ค.
- ๋ฉ์ธ ์ฝํ ์ธ ๊ฐ main ํ๊ทธ๋ก ๊ฐ์ธ์ ธ ์์ง ์์
- ๋ฉ์ธ ์ฝํ ์ธ ๊ฐ article, section ๋ฑ์ผ๋ก๋ง ๊ตฌ์ฑ๋จ
- ํฐ์คํ ๋ฆฌ ์คํจ์์ main ํ๊ทธ๊ฐ ๋๋ฝ๋ ๊ตฌ์กฐ ์ฌ์ฉ
- ๊ด๊ณ ์์ญ ๋๋ ๋ชฉ์ฐจ ์คํฌ๋ฆฝํธ๊ฐ main์ ๋ฎ์ด๋ฒ๋ฆฌ๋ ๊ตฌ์กฐ
- ์ฌ๋ฌ ๊ฐ์ main ํ๊ทธ๊ฐ ์กด์ฌํ์ฌ Lighthouse๊ฐ ์ ํจํ ๋๋๋งํฌ๋ก ์ธ์ํ์ง ๋ชปํจ
`main` ๋๋๋งํฌ์ ํต์ฌ ์ญํ
Google Lighthouse๋ ์นํ์ด์ง์ ํ์ง์ ์ธก์ ํ๋ ์ฃผ์ ๋๊ตฌ ์ค ์ ๊ทผ์ฑ(Accessibility) ํญ๋ชฉ์์ ์๋งจํฑ HTML5 ์์์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ค์ ์ ์ผ๋ก ํ์ธํฉ๋๋ค. ์ด ์ค ๋๋๋งํฌ(Landmark Role)๋ ํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ํ์ ํ๋ ๋ฐ ๊ฒฐ์ ์ ์ธ ์ญํ ์ ํฉ๋๋ค.
๋๋๋งํฌ์ ์ ์: `main`, `header`, `nav`, `footer`, `aside` ๋ฑ ์นํ์ด์ง์ ์ฃผ์ ๊ตฌ์ญ์ ์ ์ํ๋ ์๋งจํฑ ์์์ ๋๋ค.
์ด๋ค์ ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ฌ์ฉ์์๊ฒ ํ์ด์ง์ ๊ตฌ์กฐ์ ์ง๋๋ฅผ ์ ๊ณตํ๊ณ Skip Navigation ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
`main` ํ๊ทธ๋ ์นํ์ด์ง์ ๊ฐ์ฅ ํต์ฌ์ ์ธ ์ฝํ ์ธ ๋ฅผ ์ง์ ํ๋ ๋๋๋งํฌ์ด๋ฉฐ, WCAG 2.1 ์ฑ๊ณต ๊ธฐ์ค 1.3.1 (์ ๋ณด ๋ฐ ๊ด๊ณ)์ ๋ฐ๋ผ ํ์ด์ง๋น ์ค์ง ํ๋์ ์ ํจํ๊ณ ๊ณ ์ ํ `main` ๋๋๋งํฌ๋ง ์กด์ฌํด์ผ ํฉ๋๋ค.
์ค๋ฅ ๋ฐ์ ์ UX ๋ฐ SEO ์ํฅ: `main` ํ๊ทธ๊ฐ ์๊ฑฐ๋ ์ค๋ณต๋ ๊ฒฝ์ฐ, ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ฌ์ฉ์๋ ํต์ฌ ์ฝํ ์ธ ๋ก ๋ฐ๋ก ์ด๋ํ ์ ์์ด ์ฌ์ฉ์ ๊ฒฝํ(UX)์ด ์น๋ช ์ ์ผ๋ก ์ ํ๋ฉ๋๋ค.
โ ก. ํฐ์คํ ๋ฆฌ์์ ์ ๋ ์์ฃผ ๋ฐ์ํ๋ ์ด์
ํฐ์คํ ๋ฆฌ๋ ์ค๋๋ ์คํจ ๊ตฌ์กฐ์์ HTML5 ์๋งจํฑ ๊ตฌ์กฐ๊ฐ ์์ ํ ๋ฐ์๋์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ํ ํฐ์คํ ๋ฆฌ ์คํจ ๊ฐ๋ฐ์ ๊ฐ๋ ฅํ ์กฐ๊ฑด ์นํ์์ ์์กดํฉ๋๋ค. ์ด ์ ์ฐ์ฑ์ ๊ฐ๋ฐ ํธ์์ฑ์ ๋์ด์ง๋ง, ํ์ค HTML ๊ตฌ์กฐ์ ์ ์ฝ์ ์ฝ๊ฒ ์๋ฐํ๋ ๊ตฌ์กฐ์ ๋ฌธ์ ๋ฅผ ์๊ณ ์์ต๋๋ค.
์นํ์ ๋ฐ๋ณต๊ณผ `main` ์ค๋ณต
๋ชฉ๋ก ํ์ด์ง(ํ, ์นดํ ๊ณ ๋ฆฌ)์์ ์นํ์๋ ๋ฐ๋ณต๋ฌธ์ฒ๋ผ ์๋ํฉ๋๋ค. ๋ง์ฝ ์ด ๋ฐ๋ณต๋ฌธ ๋ด์ `main` ํ๊ทธ๋ฅผ ์ค์๋ก ์ฝ์ ํ๋ฉด, ํ์ด์ง์ ๋ก๋๋ ๊ฒ์๊ธ ์๋งํผ ์ค๋ณต๋ `main` ํ๊ทธ๊ฐ ์์ฑ๋์ด WCAG ๊ท์น(๋จ ํ๋์ ์ฃผ์ ๋๋๋งํฌ)์ ๋ช ๋ฐฑํ ์๋ฐํ๊ฒ ๋ฉ๋๋ค.
์ฝํ ์ธ ์์ญ์ ๋ชจํธ์ฑ
๋๋ถ๋ถ์ ํฐ์คํ ๋ฆฌ ์คํจ์ ``์ ๊ฐ์๋จ์ผ ๊ณตํต ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ธ ๋ชฉ๋ก, ๊ธ ๋ณธ๋ฌธ, ๊ณต์ง์ฌํญ ๋ฑ ๋ชจ๋ ์ ํ์ ์ฝํ ์ธ ๋ฅผ ๋ด์๋ ๋๋ค. ์ด ๋๋ฌธ์ ์์ HTML ์กฐ๊ฑด๋ฌธ๋ง์ผ๋ก๋ ์ฝํ ์ธ ์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ `main` ํ๊ทธ๋ฅผ ์ฝ์ ํ ์ง ์ฌ๋ถ๋ฅผ ์ ํํ ํ๋จํ๊ณ ๋ถ๋ฆฌํ๊ธฐ๊ฐ ๊ทน๋๋ก ๊น๋ค๋กญ์ต๋๋ค.
โ ข. ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค ํด๊ฒฐ ๋ฐฉ๋ฒ (JavaScript ๋์ ์ฝ์ )
ํฐ์คํ ๋ฆฌ์ ๋ณต์กํ ์๋ฒ ์ธก ๋ ๋๋ง ์ ์ฝ์ ๊ทน๋ณตํ๊ณ , ํด๋ผ์ด์ธํธ ์ธก JavaScript๋ฅผ ์ด์ฉํ์ฌ ํ์ด์ง ๋ก๋ ํ ์ฝํ ์ธ ์ ์ฑ๊ฒฉ์ ๋ง์ถฐ main ๋๋๋งํฌ๋ฅผ ์ ํํ๊ณ ์์ ํ๊ฒ ํ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด ์ ๋ต์ ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ๋ชจ๋ ํ์ฑํ ํ(DOMContentLoaded), ํ์ฌ ํ์ด์ง์ ๊ฒฝ๋ก(location.pathname)๋ฅผ ๋ถ์ํ์ฌ ์ฝํ ์ธ ์ ์ฑ๊ฒฉ์ ์๋ณํ๊ณ main ํ๊ทธ๋ฅผ ์ฝ์ ํฉ๋๋ค.
๋์ ์์ ์ง์ : ๋ชจ๋ ์ฝํ ์ธ ๋ฅผ ๋ด๋ ํ๊ทธ๋ฅผ main ๋๋๋งํฌ๊ฐ ๊ฐ์ธ์ผ ํ ์ต์์ ์ปจํ ์ด๋๋ก ์ง์ ํฉ๋๋ค.
ํ์ด์ง ์ ํ ์๋ณ ๋ฐ aria-label์ ๋ถ์ฌํด ๋ฉ์ธ, ์นดํ
๊ณ ๋ฆฌ, ๋ณธ๋ฌธ์ ์ธ ๊ฐ์ง ํต์ฌ ํ์ด์ง ์ ํ์ ์ ํํ ๊ตฌ๋ถํ๊ณ , ๊ฐ ์ ํ์ ๋ง๋ aria-label์ ๋์ ์ผ๋ก ๋ถ์ฌํ์ฌ WCAG ๊ธฐ์ค์ ์ถฉ์กฑ์ํต๋๋ค.
์์ ํ ์ฝ์
๋ฐ ์ค๋ณต ๋ฐฉ์ง๋ฅผ ์ํด ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ , ๋์ ์์์ ๋ถ๋ชจ ์์๊ฐ ์ด๋ฏธ MAIN ํ๊ทธ์ธ์ง ๊ฒ์ฌํ์ฌ ์ค๋ณต ์ฝ์
์ ์ฒ ์ ํ ๋ฐฉ์งํฉ๋๋ค.
์ด๋ Lighthouse์ *๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค*์ ํ์ด์ง์ ๋ ๊ฐ ์ด์์ main ์์๊ฐ ์์ต๋๋ค ์ค๋ฅ๋ฅผ ์์ฒ ์ฐจ๋จํฉ๋๋ค.
์ค์ Lighthouse ๋ฌธ๊ตฌ ๋ถ์

์ ๋ฌธ๊ตฌ๋ฅผ ๋ณด๋ฉด Lighthouse๋ ์ ํํ ํ๋์ main ๋๋๋งํฌ๋ฅผ ์๊ตฌํ๊ณ ์์ต๋๋ค. ๋ง์ ๋ธ๋ก๊ทธ ์ด์์๋ถ๋ค์ main ํ๊ทธ๊ฐ ์์ ๋๋ฝ๋์ด ์๊ฑฐ๋, ์ฝํ ์ธ ๊ฐ ์ฌ๋ฌ ์์ญ์ผ๋ก ๋๋์ด์ ธ ์ฌ์ดํธ ๊ตฌ์กฐ ์ ์ฒด๊ฐ ๋น์๋งจํฑ ์ํ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ด๋ด ๊ฒฝ์ฐ ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค ์ค๋ฅ๋ ์ง์์ ์ผ๋ก ๋ฐ์ํ๋ฉฐ, ๊ฒ์์์ง์ ํ์ด์ง์ ํต์ฌ ๋ฒ์๋ฅผ ์ ํํ ํ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
์ด์ ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค ์ค๋ฅ๋ฅผ ์ค์ ๋ก ํด๊ฒฐํ ์ ์๋ ๊ตฌ์กฐ์ ๋ฐฉ๋ฒ์ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋จ์ํ main ํ๊ทธ๋ฅผ ๋ฃ๋ ์์ค์ด ์๋๋ผ ํ์ด์ง ๊ตฌ์กฐ ์ ์ฒด๋ฅผ WCAG 2.1, HTML5 ์๋งจํฑ ๊ตฌ์กฐ, SEO/AEO ๊ธฐ์ค์ ๋ง๊ฒ ์ฌ์ ๋ ฌํด์ผ ํฉ๋๋ค.
ํนํ ํฐ์คํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ์๋ ๊ฒฝ์ฐ ๋ณธ๋ฌธ ์ฝํ ์ธ ์์ญ์ ์ ํํ main์ผ๋ก ์ง์ ํ๋ ์์ ์ด ํ์์ด๋ฉฐ, ์ด๋ฅผ ์๋ํํ๋ ค๋ฉด JavaScript ํ์ฒ๋ฆฌ ๋ฐฉ์์ด ๊ฐ์ฅ ์์ ์ ์ ๋๋ค.
1. ๊ฐ์ฅ ๋น ๋ฅธ ํด๊ฒฐ: main ํ๊ทธ ์๋ ์ฝ์ ์คํฌ๋ฆฝํธ
ํฐ์คํ ๋ฆฌ ์คํจ์ ์ง์ HTML์ ์์ ํ๊ธฐ ์ด๋ ต๊ฑฐ๋ ์ ํ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ผ์ ๋ฌธ์ ๋ก๋ ํ main ํ๊ทธ๋ฅผ ์๋์ผ๋ก ์์ฑํ์ฌ ๋ณธ๋ฌธ์ ๊ฐ์ธ๋ ๋ฐฉ์์ด ๊ฐ์ฅ ์์ ์ ์ด๋ฉฐ ์ ์ง ๊ด๋ฆฌ์๋ ์ฉ์ดํฉ๋๋ค.
์๋ ์คํฌ๋ฆฝํธ๋ ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค ์ค๋ฅ๋ฅผ ์ฆ์ ํด๊ฒฐํ๋๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ๋ณธ๋ฌธ ์์ญ์ ๊ฐ์งํด ์ ํํ main์ผ๋ก ๋ณํํฉ๋๋ค. ์ ์ฉ ์ฝ๋๋ ๊ธ ํ๋จ์์ ํ์ธํ ์ ์์ต๋๋ค.
์๋ ์ฝ๋๋ main ํ๊ทธ๋ฅผ ์๋์ผ๋ก ํ ๊ฐ๋ง ์ฝ์ ํ๋ฉฐ ๋ณธ๋ฌธ ์ ์ฒด๋ฅผ ์ ํํ ๊ฐ์๋๋ค. ์ด๋ฅผ ํตํด Lighthouse์์ ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค ์ค๋ฅ๋ ์ฆ์ ํด๊ฒฐ๋๋ฉฐ, ์ ๊ทผ์ฑ ์ ์์ SEO ์ ํธ๊ฐ ํจ๊ป ๊ฐ์ ๋ฉ๋๋ค.
2. ์ค๋ณต main ์ ๊ฑฐ ๋ก์ง ๋ฐ WCAG ์ต์ ํ ์ ์ฉ
์ผ๋ถ ์คํจ์์๋ ๊ฐ๋ฐ์๊ฐ ์ค์๋ก mainํ๊ทธ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฝ์ ํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค ์ค๋ฅ๋ฅผ ๋ ์ฌ๊ฐํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค.
WCAG ์ต์ ํ ์ ์ฉ
์น ์ ๊ทผ์ฑ์ ๋จ์ํ `main` ํ๊ทธ๋ฅผ ๋ฃ๋ ๊ฒ์ ๋์ด, ํด๋น ๋๋๋งํฌ์ ๋ชฉ์ ์ ๋ช ํํ ํ๋ ๊ฒ์ ์๊ตฌํฉ๋๋ค. `aria-label`์ ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ฌ์ฉ์์๊ฒ ๋๋๋งํฌ์ ๊ธฐ๋ฅ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ ๋ฌํ์ฌ ํ์ ํจ์จ์ ๋์ ๋๋ค.
ํ์ด์ง ์ ํ์ ๋ฐ๋ผ "๋ฉ์ธ ํ์ด์ง ์ฃผ์ ์ฝํ ์ธ ","์นดํ ๊ณ ๋ฆฌ ํ์ด์ง ๊ธ ๋ชฉ๋ก", "๋ณธ๋ฌธ ์ฝํ ์ธ " ๋ฑ์ผ๋ก ๋ ์ด๋ธ์ ๋ค๋ฅด๊ฒ ๋ถ์ฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ํ์ฌ ์์น์ ์ฝํ ์ธ ์ ์ฑ๊ฒฉ์ ์ฆ์ ํ์ ํ๊ณ ํ์ํ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ํ์ํ ์ ์์ต๋๋ค.
(WCAG 4.1.2 - ์ด๋ฆ, ์ญํ , ๊ฐ ์ถฉ์กฑ) `lang="ko"`: ๋๋๋งํฌ์ ์ธ์ด๋ฅผ ๋ช ํํ ์ง์ ํ์ฌ ์คํฌ๋ฆฐ ๋ฆฌ๋๊ฐ ์ฌ๋ฐ๋ฅธ ์ธ์ด๋ก ํ ์คํธ๋ฅผ ์ฝ์ด์ฃผ๋๋ก ํฉ๋๋ค.
Schema.org ๋งํฌ์ ํตํฉ: ๊ธ ๋ณธ๋ฌธ ํ์ด์ง์ `main` ํ๊ทธ๋ฅผ ์ฝ์ ํ ๋, ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ๋งํฌ์ ์ธ Schema.org ์์ฑ์ ํจ๊ป ๋ถ์ฌํจ์ผ๋ก์จ SEO ํ์ง์ ๋ณด์ฅํฉ๋๋ค. `itemscope` ๋ฐ `itemtype="https://schema.org/Article"`: ์ด ๋งํฌ์ ์ ๊ฒ์ ์์ง ํฌ๋กค๋ฌ์๊ฒ ์ด `main` ์์ญ์ด ๋จ์ํ ์ผ๋ฐ์ ์ธ ์ฝํ ์ธ ๊ฐ ์๋ ๋จ์ผ ๊ธฐ์ฌ(Article)๋ผ๋ ๊ฒ์ ๋ช ํํ๊ฒ ์๋ ค์ค๋๋ค.
3. ์ต์ข ์ ๊ฒ ์ฒดํฌ๋ฆฌ์คํธ
- main ํ๊ทธ๊ฐ ๋ฐ๋์ ํ๋๋ง ์กด์ฌํ๋๊ฐ?
- ๋ณธ๋ฌธ ์ ์ฒด๊ฐ main ๋ด๋ถ์ ์กด์ฌํ๋๊ฐ?
- side, footer, header๋ main ์ธ๋ถ์ ์กด์ฌํ๋๊ฐ?
- ๊ด๊ณ ๋ชฉ์ฐจ ์คํฌ๋ฆฝํธ๊ฐ main ๊ตฌ์กฐ๋ฅผ ๊นจ๋จ๋ฆฌ์ง ์๋๊ฐ?
- Lighthouse์์ ์ค๋ฅ๊ฐ ์์ ํ ์ฌ๋ผ์ก๋๊ฐ?
์ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ๋ชจ๋ ๋ง์กฑํ์๋ฉด ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค ์ค๋ฅ๋ ์์ ํ ํด๊ฒฐ๋๋ฉฐ SEO/AEO ์ ์๊ฐ ์์นํฉ๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ์ ๊ฐ์ ์ ๋จ์ ์ค๋ฅ ํด๊ฒฐ์ ๋์ด ์ฌ์ดํธ ์ ์ฒด ํ์ง์ ํ ๋จ๊ณ ๋์ด๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
4. WCAG ์ฑ๊ณต ๊ธฐ์ค๊ณผ์ ์ง์ ์ ์ธ ์ฐ๊ด์ฑ
์ด `main` ๋๋๋งํฌ ํด๊ฒฐ์ฑ ์ ์น ์ ๊ทผ์ฑ ์ง์นจ(WCAG) Level AA์ ๋ค์ ์ธ ๊ฐ์ง ํต์ฌ ์ฑ๊ณต ๊ธฐ์ค์ ์ง์ ์ ์ผ๋ก ๊ธฐ์ฌํฉ๋๋ค.
| WCAG ์ฑ๊ณต ๊ธฐ์ค | ๋ด์ฉ ๋ฐ ์ค์์ฑ | main ํ๊ทธ ํด๊ฒฐ์ ์๋ฏธ |
| 1.3.1 (์ ๋ณด ๋ฐ ๊ด๊ณ) | ์ฝํ ์ธ ์ ์ ๋ณด์ ๊ด๊ณ๋ฅผ ํ๋ก๊ทธ๋จ์ ์ผ๋ก ํ์ ํ ์ ์์ด์ผ ํ๋ค. | `main` ํ๊ทธ ์์ฒด๊ฐ ์ฃผ์ ์ฝํ ์ธ ์ ๋ณด์กฐ ์ฝํ ์ธ (์ฌ์ด๋๋ฐ, ํธํฐ)์ ๊ตฌ์กฐ์ ๊ด๊ณ๋ฅผ ๊ฒ์ ์์ง๊ณผ ์คํฌ๋ฆฐ ๋ฆฌ๋์ ๋ช ํํ ์ ์ํ๋ค. |
| 2.4.1 (๋ธ๋ก ๊ฑด๋๋ฐ๊ธฐ) | ๋ฐ๋ณต๋๋ ์ฝํ ์ธ ๋ธ๋ก(ํค๋, ๋ฉ๋ด ๋ฑ)์ ๊ฑด๋๋ฐ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํด์ผ ํ๋ค. | `main` ๋๋๋งํฌ๋ ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ฌ์ฉ์๊ฐ ํ์ด์ง ๋ก๋ ์งํ "์ฃผ์ ์ฝํ ์ธ ๋ก ์ด๋" ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ฐ๋ณต ์์ญ์ ์ฆ์ ๊ฑด๋๋ฐ๊ณ ๋ณธ๋ก ์ผ๋ก ์ง์ ํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ๋ค. |
| 4.1.2 (์ด๋ฆ, ์ญํ , ๊ฐ) | ๋ชจ๋ UI ๊ตฌ์ฑ ์์์ ์ด๋ฆ, ์ญํ , ์ํ๊ฐ ํ๋ก๊ทธ๋จ์ ์ผ๋ก ๊ฒฐ์ ๊ฐ๋ฅํด์ผ ํ๋ค. | ` |
5. Lighthouse ์ ๊ทผ์ฑ ์ ์์ ๊ถ๊ทน์ ์ธ SEO ์ด์
Lighthouse ์ ๊ทผ์ฑ ์ ์๋ ๊ตฌ๊ธ์ด ์น์ฌ์ดํธ์ ํ์ง์ ํ๋จํ๋ ์ฃผ์ ์ ํธ ์ค ํ๋์ ๋๋ค. `main` ๋๋๋งํฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ์ผ๋ก์จ ์ป๋ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์น๋ช ์ ์ค๋ฅ ์ ๊ฑฐ: "๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค" (Major Issue) ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ์ฌ ์ ๊ทผ์ฑ ์ ์๊ฐ ํฌ๊ฒ ์์นํฉ๋๋ค.
- ์๋งจํฑ ์์ ํ์ฉ ์ ์ ์ฆ๊ฐ: ์๋งจํฑ HTML5 ํ๊ทธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ์ฌ "๋ชจ๋ฒ ์ฌ๋ก(Best Practices)" ์ ์๊น์ง ๊ธ์ ์ ์ธ ์ํฅ์ ๋ฐ๊ฒ ๋ฉ๋๋ค.
- ํฌ๋กค๋ง ํจ์จ ๊ฐ์ : ๊ฒ์ ์์ง ํฌ๋กค๋ฌ๊ฐ `main` ๋๋๋งํฌ๋ฅผ ํตํด ํ์ด์ง์ ํต์ฌ ์ฝํ ์ธ ๋ฅผ ๋น ๋ฅด๊ฒ ์๋ณํ๊ณ ์ธ๋ฑ์ฑํ ์ ์๊ฒ ๋๋ฉด์, ํฌ๋กค๋ง ์์ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ๊ถ๊ทน์ ์ผ๋ก ๊ฒ์ ๋ญํน ์์น์ผ๋ก ์ด์ด์ง๋ ๊ฒฌ๊ณ ํ ๊ธฐ๋ฐ์ ๋ง๋ จํฉ๋๋ค.
โ ฃ. `main` ํ๊ทธ ์ด์ธ์ ์ฃผ์ ๋๋๋งํฌ ํ์ฉ ์ ๋ต
`main` ํ๊ทธ ์ธ์๋ ๋ค๋ฅธ ๋๋๋งํฌ ํ๊ทธ๋ค์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ ํฐ์คํ ๋ฆฌ ์คํจ์ ์๋งจํฑ ๊ตฌ์กฐ๋ฅผ ์๋ฒฝํ๊ฒ ๋ง๋๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ด๋ค์ ์ ์ ํ ํ์ฉํ์ฌ ํ์ด์ง์คํผ๋ ์ธ์ฌ์ดํธ์์ ๋์ ์ ์๋ฅผ ๋ฐ๋๋ก ํ์ฅํด ๋ณด์ญ์์ค.
| ๋๋๋งํฌ ํ๊ทธ | ์ฌ์ฉ ๋ชฉ์ | ํฐ์คํ ๋ฆฌ ์คํจ ์ ์ฉ ์์ |
| `header` | ํ์ด์ง์ ์๊ฐ ์ฝํ ์ธ , ์ ๋ชฉ, ๋ก๊ณ , ๊ฒ์์ฐฝ ๋ฑ์ ํฌํจ. | ๋ธ๋ก๊ทธ ์ ๋ชฉ, ๋ด๋น๊ฒ์ด์ ๋ฐ๊ฐ ์์นํ ์ต์๋จ ์์ญ. |
| `nav` | ํ์ฌ ๋ฌธ์๋ ๋ค๋ฅธ ๋ฌธ์๋ก์ ์ฃผ์ ํ์ ๋งํฌ ๊ทธ๋ฃน. | ๋ธ๋ก๊ทธ์ ์นดํ ๊ณ ๋ฆฌ ๋ชฉ๋ก, ์๋จ ๋ฉ๋ด ๋ฐ. |
| `article` | ๋ ๋ฆฝ์ ์ด๊ฑฐ๋ ์์ฒด์ ์ผ๋ก ์์ฑ๋ ์ฝํ ์ธ . (`main` ์์ ํฌํจ) | ๋ธ๋ก๊ทธ ํฌ์คํธ ํ๋ํ๋ ๋๋ ๋๊ธ ์์ญ. |
| `aside` | ์ฃผ์ ์ฝํ ์ธ ์ ๊ฐ์ ์ ์ผ๋ก ๊ด๋ จ๋ ์ฝํ ์ธ (์ฌ์ด๋๋ฐ). | ์ธ๊ธฐ ๊ธ, ์ต๊ทผ ๋๊ธ, ๊ด๊ณ ๋ฐฐ๋ ๋ฑ์ด ํฌํจ๋ ์ฌ์ด๋๋ฐ ์์ญ. |
| `footer` | ๊ฐ์ฅ ๊ฐ๊น์ด ์น์ ๋๋ ์ ์ฒด ํ์ด์ง์ ํธํฐ ์ ๋ณด. | ์ ์๊ถ ์ ๋ณด, ์ฐ๋ฝ์ฒ, ๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ๋ฐฉ์นจ ๋งํฌ ์์ญ. |
ํฐ์คํ ๋ฆฌ ์คํจ์์ ์ด ๋๋๋งํฌ๋ค์ HTML ํธ์ง์ ํตํด ์ ์ ์ผ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐฐ์นํ๋ค๋ฉด, JavaScript๋ฅผ ํตํ `main` ํ๊ทธ ๋์ ์ฝ์ ์ ๋ง์ง๋ง ํผ์ฆ ์กฐ๊ฐ์ผ๋ก์ ์๋ฒฝํ ์น ์ ๊ทผ์ฑ ๋ฐ SEO ๊ธฐ๋ฐ์ ์์ฑํ๊ฒ ๋ฉ๋๋ค.
โ ค. ๊ฒฐ๋ก ๋ฐ FAQ
์ด main ๋๋๋งํฌ ๋์ ์ฝ์
์์
์ ๋จ์ํ ์ฝ๋ฉ ์คํฌ์ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
์ด๋ ์น ํ์ค์ ์ค์ํ๊ณ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋๋ฑํ ์ ๊ทผ ๊ธฐํ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ, ์น์ ๊ทผ๋ณธ์ ๊ฐ์น ์คํ์ ๋ชฉํ๋ก ํ๋ ์ ๋ต์ ํฌ์์
๋๋ค.
์ด์ฒ๋ผ ์ธ์ฌํ๊ฒ ๊ตฌ์กฐํ๋ ์ฝ๋๋ฅผ ์ ์ฉํ๋ฉด, ๋ธ๋ก๊ทธ๋ ๊ฒ์ ์์ง์ด ์ ๋ขฐํ๊ณ ์ฌ์ฉ์์๊ฒ ๋ ๋์ ํธ์์ฑ์ ์ ๊ณตํ๋ ๊ณ ์ฑ๋ฅ๊ณ ์ ๊ทผ์ฑ ๋์งํธ ์ฝํ ์ธ ๋ก ํ๊ณ ํ๊ฒ ์๋ฆฌ๋งค๊นํ ๊ฒ์ ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ (FAQ)
Q1. ์ ํฐ์คํ ๋ฆฌ์์๋ ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค ์ค๋ฅ๊ฐ ์์ฃผ ๋ฐ์ํ๋์?
ํฐ์คํ ๋ฆฌ๋ ์๋ฒ ์ธก ๋ ๋๋ง ๊ตฌ์กฐ๊ฐ ๊ณ ์ ๋์ด ์์ด HTML5 ๋๋๋งํฌ(main, header, footer ๋ฑ)๊ฐ ์ํฉ์ ๋ฐ๋ผ ๋๋ฝ๋๊ฑฐ๋ ์ค๋ณต๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํนํ main ํ๊ทธ๊ฐ ๊ธฐ๋ณธ ์ ๊ณต๋์ง ์๊ฑฐ๋, ์คํจ ๊ตฌ์กฐ๊ฐ ์ฌ๋ฌ ๊ฐ์ ์ฝํ ์ธ ์์ญ์ผ๋ก ๋๋์ด ์๋งจํฑ ๊ตฌ์ฑ์ด ๊นจ์ง๋ฉด Lighthouse์์ ์ฃผ์ ๋๋๋งํฌ ์์ ์ค๋ฅ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ํฉ๋๋ค.
Q2. main ํ๊ทธ๊ฐ ์์ผ๋ฉด ๊ฒ์์์ง SEO์ ์ด๋ค ๋ฌธ์ ๊ฐ ์๊ธฐ๋์?
๊ฒ์์์ง์ main ๋๋๋งํฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ด์ง์ ํต์ฌ ์ฝํ ์ธ ๋ฒ์๋ฅผ ์ธ์ํฉ๋๋ค. main ํ๊ทธ๊ฐ ์๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ, Google๊ณผ ๋ค์ด๋ฒ ๋ชจ๋ ํ์ด์ง์ ์ฐ์ ์์๋ฅผ ์ ํํ ํ๋จํ๊ธฐ ์ด๋ ต๊ณ ๋ญํน ์ ํธ๊ฐ ์ฝํด์ง๋๋ค. ์ด๋ ๊ณง ๊ฒ์ ์์ ํ๋ฝ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ ์ ์ ๊ฐ์๋ก ์ด์ด์ง๋๋ค.
Q3. JavaScript๋ก main ํ๊ทธ๋ฅผ ํ์ฒ๋ฆฌํ๋ฉด ์ ํด๊ฒฐ๋๋์?
DOMContentLoaded ์ดํ์ ์คํ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ๋ชจ๋ ํ์ฑํ ๋ค ํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ์์ ํ๊ฒ ์ฌ์ ์ํ ์ ์์ต๋๋ค. ํ์ฌ ๊ฒฝ๋ก(pathname)๋ฅผ ๋ถ์ํด ์นดํ ๊ณ ๋ฆฌ/๋ฉ์ธ/๋ณธ๋ฌธ ํ์ด์ง๋ฅผ ์๋ณํ๊ณ , ์ต์์ ์ฝํ ์ธ ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก main ํ๊ทธ๋ก ๊ฐ์ธ๋๋ก ๋ง๋ค๋ฉด ๋๋ฝ/์ค๋ณต ๋ฌธ์ ๋ฅผ ์๋ฒฝํ ์ฐจ๋จํ ์ ์์ต๋๋ค.
Q4. main ํ๊ทธ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฝ์ ํ๋ฉด Lighthouse ๊ฒฝ๊ณ ๊ฐ ์ค์ด๋๋์?
์๋์. main ํ๊ทธ๋ ๋ฌธ์๋น ์ ํํ ํ๋๋ง ์กด์ฌํด์ผ ํฉ๋๋ค. ์ฌ๋ฌ ๊ฐ๊ฐ ์กด์ฌํ๋ฉด ํ์ด์ง์ ๋ ๊ฐ ์ด์์ main ์์๊ฐ ์์ต๋๋ค๋ผ๋ ๋ ๋ค๋ฅธ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ ํ์ฒ๋ฆฌ ์คํฌ๋ฆฝํธ์์ ๋ถ๋ชจ ์์๊ฐ ์ด๋ฏธ MAIN์ธ์ง ๊ฒ์ฌํ ๋ค ์ค๋ณต ์ฝ์ ์ ๋ฐฉ์งํ๋ ๊ฒ์ด ํ์์ ๋๋ค.
Q5. ๋ณธ๋ฌธ/์นดํ ๊ณ ๋ฆฌ/๋ฉ์ธ ํ์ด์ง๋ง๋ค aria-label์ ๋ค๋ฅด๊ฒ ๋ฃ์ด์ผ ํ๋ ์ด์ ๋?
WCAG ์ ๊ทผ์ฑ ๊ธฐ์ค์์๋ main ๋๋๋งํฌ์ ํ์ด์ง ์ฉ๋๋ฅผ ๋ช ํํ ํ์ํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด main content, category content, post content์ฒ๋ผ ํ์ด์ง ์ฑ๊ฒฉ์ ๊ตฌ๋ถํ์ฌ aria-label์ ์ ์ฉํ๋ฉด ์คํฌ๋ฆฐ๋ฆฌ๋์ ๊ฒ์์์ง ๋ชจ๋ ํ์ด์ง ๊ตฌ์กฐ๋ฅผ ๋ ์ ํํ ์ดํดํ ์ ์์ต๋๋ค.
โ ๋ฌธ์์ ์ฃผ์ ๋๋๋งํฌ๊ฐ ์์ต๋๋ค. ์ ์ฉ ์ฝ๋
script
setTimeout(function() {
document.addEventListener("DOMContentLoaded", function () {
let ariaLabel = null;
const path = location.pathname;
if (path === "/") {
ariaLabel = "๋ฉ์ธ ํ์ด์ง ์ฃผ์ ์ฝํ
์ธ ";
} else if (path.includes("/category/")) {
ariaLabel = "์นดํ
๊ณ ๋ฆฌ ํ์ด์ง ๊ธ ๋ชฉ๋ก";
} else if (path.length 1 && !path.includes("/tag/") && !path.includes("/page/")) {
ariaLabel = "๋ณธ๋ฌธ ์ฝํ
์ธ ";
}
if (!ariaLabel) return;
const contentBlock = document.getElementById("content");
if (!contentBlock || contentBlock.parentElement.tagName === "MAIN") return;
const mainWrapper = document.createElement("main");
mainWrapper.setAttribute("role", "main");
mainWrapper.setAttribute("aria-label", ariaLabel);
mainWrapper.setAttribute("lang", "ko");
if (ariaLabel === "๋ณธ๋ฌธ ์ฝํ
์ธ ") {
mainWrapper.setAttribute("itemscope", "");
mainWrapper.setAttribute("itemtype", "https://schema.org/Article");
}
contentBlock.parentNode.insertBefore(mainWrapper, contentBlock);
mainWrapper.appendChild(contentBlock);
});
}, 0);
/script
>