åºæ¬çãªã¢ã¯ã»ã·ããªãã£å¯Ÿå¿ã«æ
£ããŠããããæ¬¡ã®ã¹ãããã¯ãå®éã®ãŠãŒã¶ãŒäœéšãããåäžãã工倫ãã§ãã
DOMã®æ§é ãARIA屿§ãããŒããŒãæäœãžã®å¯Ÿå¿ãªã©ãåãå
¥ããããšã§ããå€ãã®ãŠãŒã¶ãŒãå®å¿ããŠå©çšã§ãããµã€ãã«ãªããŸãã
æ¬èšäºã§ã¯ãããå¿çšçãªã¢ã¯ã»ã·ããªãã£å¯Ÿå¿ã玹ä»ããŸãã
èªã¿äžãé ãèæ ®ãã
ã¹ã¯ãªãŒã³ãªãŒããŒã¯DOMã«åŸã£ãŠã³ã³ãã³ããèªã¿äžããŸããèŠãç®ã®äžŠã³ãšèªã¿äžãé ãç°ãªããšãå©çšè ã¯æèãæ£ããçè§£ã§ããªããªãå¯èœæ§ããããŸããã¬ã€ã¢ãŠã調æŽã®ããã«CSSã§èŠçŽ ã®è¡šç€ºé ãå ¥ãæ¿ããå Žåã¯ãèŠãç®ãšè«ççãªé åºãäžèŽããããã«èšèšããŸãããã
é¢é£ããWCAGéæåºæº
WCAG 2.1 â 1.3.2 æå³ã®ããã·ãŒã±ã³ã¹ãçè§£ãã
æªå¯Ÿå¿æã®ãŠãŒã¶ãŒãžã®åœ±é¿
å 容ãçè§£ãã«ãããªã
èŠãç®ãšéãé çªã§æ
å ±ãäŒãããšæç« ãæäœã®æå³ãæ£ããçè§£ã§ããªããªããŸãã
äŸïŒãæ¬æãããå
ã«ãè£è¶³ããèªã¿äžããããŠãäœã®èª¬æãåãããªãã
å®è£ æ¹æ³
DOMã®é åºãè«ççã«ä¿ã€
æ
å ±ã®æµãã«æ²¿ã£ãŠHTML ãèšè¿°ããŸãã
èŠãç®ã¯CSSã§èª¿æŽããHTMLã®é åºãå
¥ãæ¿ããªãããã«ããŸãã
CSSã®orderãrow-reverseãªã©ã®äžŠã³æ¿ãããããã£ã¯èŠãç®ã ãã倿Žããã®ã§ã䜿çšããéã¯DOMã®é çªã«æ³šæããŸãããã
察å¿ãããã©ãŠã¶ã¯éãããŸãããreading-flowãšreading-orderãšããCSSããããã£ãç»å ŽããDOMã®èªã¿äžãé ãå¶åŸ¡ã§ããããã«ãªããŸããã
ä»åŸåºãå®è£
ããããšãæ°ããªã¢ã¯ã»ã·ããªãã£å¯Ÿå¿ã®ææ®µãšããŠæŽ»çšãããããšãæåŸ
ãããŸãã
reading-flow
reading-order
ã¢ãŒãã«ããã€ã¢ãã°ã¯ããªã¬ãŒçŽåŸã«çœ®ã
ã¢ãŒãã«ãHTMLã®æåŸã«çœ®ããšèªã¿äžãé ãäžèªç¶ã«ãªããŸãã
åºæ¥ãã ã衚瀺ããªã¬ãŒã®çŽåŸã«ã¢ãŒãã«ãé
眮ããŸããããããããããšã«ããã¹ã¯ãªãŒã³ãªãŒããŒå©çšè
ããã¢ãŒãã«ã衚瀺ããçŽåŸã«èªç¶ã«å
容ã«ã¢ã¯ã»ã¹ã§ããŸãã
ããã«ããã©ãŒã«ã¹ãã¢ãŒãã«å
ã«ç§»åãããéããéã«ã¯å
ã®ããªã¬ãŒãã¿ã³ã«æ»ãå®è£
ãè¡ããšãã確å®ã§ãã
ARIA屿§ã§ç¶æ ã圹å²ãäŒãã
èŠãç®ã ãã§ã¯äŒãããªãUIã³ã³ããŒãã³ãã®ç¶æ
ã圹å²ããã¹ã¯ãªãŒã³ãªãŒããŒãªã©ã®æ¯æŽæè¡ã«äŒããããã«ARIA屿§ã掻çšããŸãããã
ã¡ãã¥ãŒã®ãééç¶æ
ãããã©ãŒã ã®ããšã©ãŒéç¥ããªã©ãé©åãªARIA 屿§ãä»äžããããšã§å©çšè
ã«æ£ããäŒãããŸãã
é¢é£ããWCAGéæåºæº
WCAG 2.1 â 4.1.2 ååã»åœ¹å²åã³å€
WCAG 2.1 â 4.1.3 ã¹ããŒã¿ã¹ã¡ãã»ãŒãž
æªå¯Ÿå¿æã®ãŠãŒã¶ãŒãžã®åœ±é¿
ç¶æ ãäŒãããªã
äŸãã°ã¡ãã¥ãŒãéããŠãããéããŠããããã¹ã¯ãªãŒã³ãªãŒããŒã«äŒãããªããšãå©çšè ã¯æäœã®çµæãææ¡ã§ããæ··ä¹±ããŸãã
éèŠãªéç¥ãèŠéã
å ¥åãšã©ãŒãåŠçå®äºã¡ãã»ãŒãžãã¹ã¯ãªãŒã³ãªãŒããŒã«äŒãããªããã°ããŠãŒã¶ãŒã¯æ¬¡ã«ã©ãé²ãã°ãããåãããªããªããŸãã
å®è£ æ¹æ³
ã³ã³ããŒãã³ãããšã«å ·äœçãªäœ¿çšäŸã®äžéšããŸãšããŸãã
ã¡ãã¥ãŒïŒééç¶æ ãäŒããïŒ
aria-expandedïŒ ééç¶æ
ãäŒãã
aria-controlsïŒ id屿§ã§æå®ããã¡ãã¥ãŒãšçŽä»ãã
<button aria-expanded="false" aria-controls="menu1"> ã¡ãã¥ãŒãéã </button> <ul id="menu1" hidden> <li><a href="/profile">ãããã£ãŒã«</a></li> <li><a href="/settings">èšå®</a></li> </ul>
ã¿ãïŒééç¶æ ãäŒããïŒ
role=âtablistâïŒ ã¿ãã®éåã§ããããšãäŒãã
role=âtabâ + aria-selectedïŒ çŸåšã®éžæç¶æ
ãäŒãã
aria-controlsâïŒ id屿§ã§æå®ããå
容ãçŽä»ãã
<div role="tablist" aria-label="ååæ å ±ã¿ã"> <button role="tab" aria-selected="true" aria-controls="tab1">æŠèŠ</button> <button role="tab" aria-selected="false" aria-controls="tab2">ã¬ãã¥ãŒ</button> </div> <div id="tab1" role="tabpanel">ååã®æŠèŠããã¹ãâŠ</div> <div id="tab2" role="tabpanel" hidden>ã¬ãã¥ãŒã®å 容âŠ</div>
ã¢ãŒãã«
role=âdialogâïŒ ãã€ã¢ãã°ã§ããããšãäŒãã
aria-modal=âtrueâïŒ ãã€ã¢ãã°ãéããŠããéãèåŸã®ã³ã³ãã³ããæäœã§ããªãããšãäŒãã
aria-labelledbyïŒ id屿§ã§æå®ããã¿ã€ãã«ãšçŽä»ãã
<div id="modal1" role="dialog" aria-modal="true" aria-labelledby="modalTitle" hidden> <h2 id="modalTitle">ååã®è©³çް</h2> <p>ãã®ååã®ç¹åŸŽã¯ãã</p> <button type="button">éãã</button> </div>
ãšã©ãŒã¡ãã»ãŒãžã®éç¥
aria-describedbyïŒ id屿§ã§æå®ãããšã©ãŒã¡ãã»ãŒãžãšçŽä»ãã
role=âalertâïŒ ãšã©ãŒã¡ãã»ãŒãžãå³åº§ã«èªã¿äžãã
<label for="email">ã¡ãŒã«ã¢ãã¬ã¹</label> <input id="email" type="email" aria-describedby="errorMsg"> <p id="errorMsg" role="alert">ã¡ãŒã«ã¢ãã¬ã¹ãå ¥åããŠãã ãã</p>
ããŒããŒãæäœã«å¯Ÿå¿ãã
ããŠã¹ã䜿ããªããŠãŒã¶ãŒã§ããã¹ãŠã®æ©èœãããŒããŒãã®ã¿ã§å©çšã§ããå¿
èŠããããŸãã
ãã©ãŒã å
¥åããªã³ã¯ããã¿ã³æäœãªã©ãããŒããŒãã§æäœã§ããªããšããŠãŒã¶ãŒã¯ããŒãžã®å©çšèªäœãäžå¯èœã«ãªããŸãã
é¢é£ããWCAGéæåºæº
WCAG 2.1 â 2.1.1 ããŒããŒã
WCAG 2.1 â 2.1.2 ããŒããŒããã©ãããªã
æªå¯Ÿå¿æã®ãŠãŒã¶ãŒãžã®åœ±é¿
å©çšã§ããªããªããŠãŒã¶ãŒããã
身äœçãªçç±ã§ããŠã¹ã䜿çšã§ããªã人ãã¹ã¯ãªãŒã³ãªãŒããŒå©çšè ã¯ããŒããŒãæäœãå¿ é ã§ãã察å¿ããŠããªããšãµãŒãã¹ãå©çšã§ããªããªããŸãã
ããŒããŒããã©ãã
ããŒããŒãå©çšè
ãç¹å®ã®èŠçŽ ãããã©ãŒã«ã¹ãæãåºããªããªãããšããããŒããŒããã©ãããšåŒã³ãŸãã
äŸãã°ã¢ãŒãã«ãéããåŸã«ãéããããšãã§ããªããªããšãŠãŒã¶ãŒã¯ãã以äžããŒãžãé²èЧããããšãäžå¯èœã«ãªããŸãã
å®è£ æ¹æ³
EnterããŒãSpaceããŒã§åäœããããã«ãã
ããã©ã«ãã®buttonã¿ã°ãaã¿ã°ã¯ãã©ãŠã¶ãããŒããŒãæäœã«å¯Ÿå¿ããŠããŸãããdivã¿ã°ãspanã¿ã°ã¯ãã®ãŸãŸã§ã¯ããŒããŒãã§æäœã§ããŸããã
ãããåŸãdivã¿ã°ãspanã¿ã°ã§ãã¿ã³ã代çšããå Žåã¯role="button"ãštabindex="0"ãä»äžããããã«keydownã€ãã³ãã§ããŒãæŒããæã®æåãå®è£
ããå¿
èŠããããŸãã
role=âbuttonâïŒ ãã¿ã³ã§ããããšãäŒãã
tabindex=â0â³ïŒ ãã©ãŒã«ã¹ãå¯èœã«ãããéã«ãã©ãŒã«ã¹ã®å¯Ÿè±¡ããå€ãããå Žåã¯tabindex=â-1â³ãä»äžãã
<div role="button" tabindex="0">éä¿¡</div>
ã³ã³ããŒãã³ãéã§äžè²«ããããã²ãŒã·ã§ã³ã確ä¿ãã
å
±éã®ã³ã³ããŒãã³ããããŒãžããšã«ãã©ãã©ã«å®è£
ãããšãå©çšè
ã¯æ¯åæäœæ¹æ³ãåŠã³çŽãå¿
èŠããããæ··ä¹±ããŸãã
åãå Žæã«åãUIãååšããåãæäœã§äœ¿ããããšããŠãŒã¶ãŒäœéšã®å®å®ã«ã€ãªãããŸãã
é¢é£ããWCAGéæåºæº
WCAG 2.1 â 3.2.3 äžè²«ããããã²ãŒã·ã§ã³
WCAG 2.1 â 3.2.4 äžè²«ããè奿§
æªå¯Ÿå¿æã®ãŠãŒã¶ãŒãžã®åœ±é¿
æäœã«æéãããã
ä»®ã«ããŒãžã«ãã£ãŠã¡ãã¥ãŒã®äœçœ®ãå
容ãéããšããæ¬¡ã¯ã©ããæ¢ãã°ããã®ãããšè¿·ã£ãŠããŸããŸãã
ãŸããäžè²«æ§ããªããšåŠç¿ã³ã¹ããå¢ããæäœå¹çãäžãããŸãããŠãŒã¶ãŒã¯ãµã€ãã®äœ¿ãæ¹ã«æ
£ããåã«é¢è±ããå¯èœæ§ããããŸãã
æå³ã®èª€èª
äŸãã°åãæ€çŽ¢ããã¯ã¹ã§ããã³ã³ããŒãã³ãã«ãã£ãŠã©ãã«ããæ€çŽ¢ããæ¢ãããsearchããšç°ãªããšå¥ã®èŠçŽ ãšèªèããŠããŸãããšããããŸãã
å®è£ æ¹æ³
ã³ã³ããŒãã³ããã©ãã«ã«äžè²«æ§ãæããã
ã°ããŒãã«ããã²ãŒã·ã§ã³ã¯åžžã«ããŒãžã®äžéšããµã€ãã¡ãã¥ãŒã¯å·ŠåŽã«çµ±äžãããªã©ãå
±éã³ã³ããŒãã³ãã¯ãã¹ãŠã®ããŒãžã§åãäœçœ®ã®é
眮ããŸãããã
ãŸããåã圹å²ãæã€ã³ã³ããŒãã³ãã¯åãã©ãã«ã䜿ãããšã§äžè²«æ§ãä¿ã¡ãŸãã
ã©ã³ãããŒã¯ã䜿ã
<nav> ã <header>ã<main> ã<footer>ãæ£ããçšããããšã§ãã¹ã¯ãªãŒã³ãªãŒããŒãããããããã²ãŒã·ã§ã³ããªã©ãšããã«çè§£ã§ããŸãã
åçæŽæ°ãäŒãã
ã³ã³ãã³ããåçã«æŽæ°ãããå ŽåãèŠèŠçã«ã¯å€åãåãã£ãŠãã¹ã¯ãªãŒã³ãªãŒããŒã«ã¯äŒãããªãããšããããŸãã
ããã§ãã©ã€ããªãŒãžã§ã³ïŒaria-live屿§ïŒ ãå©çšããããšã§å€æŽå
容ãã¹ã¯ãªãŒã³ãªãŒããŒã«éç¥ããŸãã
é¢é£ããWCAGéæåºæº
WCAG 2.1 â 4.1.3 ã¹ããŒã¿ã¹ã¡ãã»ãŒãžãçè§£ãã
æªå¯Ÿå¿æã®ãŠãŒã¶ãŒãžã®åœ±é¿
æŽæ°ã«æ°ã¥ããªã
äŸãã°ã·ã§ããã³ã°ãµã€ãã§ãã«ãŒãã«è¿œå ããŸããããšç»é¢ã«è¡šç€ºãããŠãã¹ã¯ãªãŒã³ãªãŒããŒã«ã¯èªã¿äžããããªãå ŽåããããŸãããã®å Žåã¹ã¯ãªãŒã³ãªãŒããŒå©çšè ã¯åå远å ã®æäœãæåããã®ãåãããŸããã
誀æäœãäžå®ã«ã€ãªãã
ãã©ãŒã éä¿¡æã«ãšã©ãŒãçºçããå Žåããšã©ãŒã¡ãã»ãŒãžã®èªã¿äžãããªããã°ããŠãŒã¶ãŒã¯ç¶æ³ãåãããåéä¿¡ãé¢è±ãããå¯èœæ§ããããŸãã
å®è£ æ¹æ³
aria-live ãä»äžããŠæŽæ°ãäŒãã
ã³ã³ãã³ããæŽæ°ããããšãã«ã¹ã¯ãªãŒã³ãªãŒããŒã«èªã¿äžãããããå Žåããã®èŠçŽ ã« aria-live屿§ãä»äžããŸãã
<p aria-live="polite">ã«ãŒãã«è¿œå ããŸãã</p> <p aria-live="assertive">ã¡ãŒã«ã¢ãã¬ã¹ã¯å¿ é ã§ã</p>
aria-live=âpoliteâïŒçŸåšã®èªã¿äžããçµãã£ãŠããèªã¿äžããïŒéç¥ãè£è¶³æ
å ±ã«é©åïŒ
aria-live=âassertiveâïŒå²ã蟌ãã§ããã«èªã¿äžããïŒãšã©ãŒãéèŠãªèŠåã«é©åïŒ
å
¥åäžã«é »ç¹ã«éç¥ãããšæ··ä¹±ãæããããéä¿¡æãå
¥åæ¬ãããã©ãŒã«ã¹ãå€ããã¿ã€ãã³ã°ã§éç¥ããã®ãæãŸããã§ãã
roleã§ããããã代çšããããšãã§ããŸãã
role=âstatusâïŒ aria-live=âpoliteâ ãšåçã§ãè£è¶³ã¡ãã»ãŒãžãäŒããã®ã«é©åã
role=âalertâïŒ aria-live=âassertiveâ ãšåçã§ããšã©ãŒéç¥ã«é©åã
ãŸãšã
ä»ååãäžããææ³ã¯ããŠãŒã¶ãŒã®æäœæ§ãçè§£ãããã«é«ããããã®å®è·µçãªå¯Ÿå¿ã§ãã
å¿çšç·šã®å
容ã¯é£ããæãããããããŸããããã©ããçŸå Žã§åœ¹ç«ã€å®è·µçãªãã¯ããã¯ã§ãã
é©åã«çµã¿åãããããšã§ããã倿§ãªãŠãŒã¶ãŒã«å¯Ÿå¿ã§ããŸãã