Share
Embed
たのしいtable / Fun table
2026年6月19日「CA11Y #4 〜 Accessibility Maniacs 〜」での発表資料です。
Googleスライドでも閲覧できます。
ymrl
June 19, 2026
Transcript
15 slides
-
⾃⼰紹介 • ymrl(やまある) • @ymrl.bsky.social • twitter.com/ymrl • github.com/ymrl •
Webアプリケーションアクセシビリティ • Accessibility Visualizer -
みなさん <table> は好きですか • HTMLのなかで、「⼆次元の構造」を扱える唯⼀の要素 ◦ 縦と横に並べられたセルの関係を表現することができる ◦ スクリーンリーダーも、⽮印キーなどで縦と横のセルへ移動できる •
<td> で普通のセル、<th> で⾒出しセルが作れる ◦ スクリーンリーダーは、セルに対応する⾒出しセルの内容も読み上げる • やたらといろんな要素や属性があるよね ◦ <thead>, <tbody>, <tfoot>, <caption>, <colgroup>, <col>... ◦ rowspan, colspan, scope... -
私と<table> • Accessibility Visualizerにtable関連の機能を作るとき、HTMLの仕様書を 数⽇間読みつづけていたら、夢に <table> が出てきました • 今回、仕様と合わないところを⾒つけてしまった。つらい。 ◦
https://github.com/ymrl/a11y-visualizer/pull/348 https://html.spec.whatwg.org/multipage/tables.html#the-th-element -
WAI-ARIAなテーブル <div role="table" aria-label="社員一覧"> <div role="rowgroup"> <div role="row"> <div role="columnheader">名前</div><div
role="columnheader">年齢</div><div role="columnheader">職業</div> </div> </div> <div role="rowgroup"> <div role="row"><div role="cell">田中 太郎</div><div role="cell">28</div><div role="cell">エンジニア</div></div> <div role="row"><div role="cell">鈴木 花子</div><div role="cell">34</div><div role="cell">デザイナー</div></div> <div role="row"> <div role="cell">佐藤 一郎</div><div role="cell">42</div><div role="cell">マネージャー</div></div> </div> </div> -
WAI-ARIAのtable関連ロール • <table> : role="table" / role="grid" / role="treegrid" ◦
gridはインタラクティブなものに使うもの(のはず) • <thead>, <tbody>, <tfoot>: role="rowgroup" • <th>: role="columnheader" / role="rowheader" • <td>: role="cell" / role="gridcell" -
columnheader, rowheaderとscope属性 • WAI-ARIAロール: columnheader と rowheader • <th>のscope属性に指定できるのは column,
row, colgroup, rowgroup ◦ <colgroup> と <col> で⾏をグループ化して、scope="colgroup"を使う ◦ <tbody> をたくさん並べて、それぞれに scope="rowgroup"を配置 • WAI-ARIAの属性やロールには、colgroup, rowgroupの⾒出しセルがなさそう ◦ そもそもcolgroupに該当するものがWAI-ARIAの属性では作れなさそう ◦ rowgroupロールはあるのに…… -
colspan, rowspan(aria-colspan, aria-rowspan) • みんなが⼤好きセル結合 • ⾒出しセルの関連付けも、セル結合を加味してくれる ◦ (うまくセルを配置していれば……!) •
Tabキーによるフォーカスが、ユーザーの想定と違う順序になることがある ◦ これはWAI-ARIAの属性とCSSを駆使すれば⼀致させられるかも? (aria-colspan, aria-rowspan, aria-colindex, aria-rowindex) 1 2 3 4 5 6 7 8 ユーザーは⽮印の順でフォーカスすることを想定する(かもしれない) -
tableと⽣きていくしかない • スクリーンリーダーに対しても⼆次元の構造を伝えられるのは、tableだけ • toBツールには、やたらとtable的な構造が出現してくる • 最近はLLMがすぐtableを作りたがる • もはやtableなしでは⽣きていけないので…… ◦
⼆次元よりも複雑な情報を持ち込まないほうがいい(セル結合とか) • たぶん今⽇も、tableの夢を⾒ながら寝ることになるでしょう……