Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
たのしいtable / Fun table
Search
ymrl
June 19, 2026
Technology
6
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
たのしいtable / Fun table
2026年6月19日「
CA11Y #4 〜 Accessibility Maniacs 〜
」での発表資料です。
Googleスライド
でも閲覧できます。
ymrl
June 19, 2026
More Decks by ymrl
See All by ymrl
freeeのアクセシビリティの現在地 / freee's Current Position on Accessibility
ymrl
4
1.5k
全社でアクセシビリティに取り組む / Company-wide Accessibility Initiatives
ymrl
1
920
デザイナーがTSKaigiでWAI-ARIAの話をしてみて / Speaking as a Designer: WAI-ARIA at TSKaigi
ymrl
0
660
TypeScriptとReactで、WAI-ARIAの属性を正しく利用する / Fixing WAI-ARIA Typing in React with TypeScript
ymrl
1
900
がんばらないアクセシビリティ / Accessibility Without the Struggle
ymrl
0
980
Webサイトのアクセシビリティにどう向き合う? / How Should We Approach Web Accessibility?
ymrl
0
170
いま求められるソフトウェアのアクセシビリティ / Essential Accessibility in Software Today
ymrl
1
1.6k
アクセシビリティを意識したプロダクトづくり / Creating Products with Accessibility in Mind
ymrl
0
24k
「Webアプリケーションアクセシビリティ」著者の会社 (freee, サイボウズ, SmartHR) での取り組みは実際どんな感じ?
ymrl
3
24k
Other Decks in Technology
See All in Technology
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
150
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
100
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
610
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
1
520
2026 AI Memory Architecture
nagatsu
0
590
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
180
CVE-2026-20833_脆弱性対応とAES 化について
jukishiya
0
190
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
クレデンシャル流出 ― 攻撃 3 時間 vs 復旧 10 時間。この非対称性にどう備えるか
kazzpapa3
3
620
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
290
AI時代における最適なQA組織の作り方
ymty
3
170
データレイクの「見えない問題」を可視化する
sansantech
PRO
1
230
Featured
See All Featured
BBQ
matthewcrist
89
10k
HDC tutorial
michielstock
2
720
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
Navigating Weather and Climate Data
rabernat
0
250
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
210
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
The Invisible Side of Design
smashingmag
301
52k
Amusing Abliteration
ianozsvald
1
210
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
A Soul's Torment
seathinner
6
3k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
Transcript
たのしいtable CA11Y #4 〜 Accessibility Maniacs 〜 2026年6⽉19⽇ ymrl
⾃⼰紹介 • ymrl(やまある) • @ymrl.bsky.social • twitter.com/ymrl • github.com/ymrl •
Webアプリケーションアクセシビリティ • Accessibility Visualizer
Accessibility Visualizer • べんりなブラウザ拡張機能(Chrome, Firefox対応) • アクセシブルネームを表⽰してくれたり、⾒出しレベルを表⽰してくれたり • ライブリージョンを表⽰してくれたり
みなさん <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
<table> <table> <thead><tr><th>名前</th><th>年齢</th><th>職業</th></tr></thead> <tbody> <tr><td>田中 太郎</td><td>28</td><td>エンジニア</td></tr> <tr><td>鈴木 花子</td><td>34</td><td>デザイナー</td></tr> <tr><td>佐藤 一郎</td><td>42</td><td>マネージャー</td></tr>
</tbody> </table>
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 ユーザーは⽮印の順でフォーカスすることを想定する(かもしれない)
headers属性 • <td>の側からヘッダーのidを指定できるよ。便利! • セル結合などがあり、⾒出しセルとの関係が複雑なときに便利そう • https://waic.jp/translations/WCAG21/Techniques/html/H43
headers属性使いたい! • https://a11ysupport.io/tech/html/headers_attribute • https://waic.jp/docs/as/info/results/0010-08.html • スクリーンリーダーではサポートしている環境のほうが稀
VoiceOverのバグ(?) • 下⽅向にスクロールしないと表⽰できない部分のある、巨⼤なテーブルで VoiceOverが表⽰されている部分しか読まない挙動をすることがあった • 現在(macOS 26.5.1 / iOS 26.5)は直っているかもしれない
◦ 2年前にはあった
<th>との関係が開発者ツールで⾒られない • シンプルに不便
tableと⽣きていくしかない • スクリーンリーダーに対しても⼆次元の構造を伝えられるのは、tableだけ • toBツールには、やたらとtable的な構造が出現してくる • 最近はLLMがすぐtableを作りたがる • もはやtableなしでは⽣きていけないので…… ◦
⼆次元よりも複雑な情報を持ち込まないほうがいい(セル結合とか) • たぶん今⽇も、tableの夢を⾒ながら寝ることになるでしょう……