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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ymrl
June 19, 2026
Technology
21
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
960
デザイナーがTSKaigiでWAI-ARIAの話をしてみて / Speaking as a Designer: WAI-ARIA at TSKaigi
ymrl
0
700
TypeScriptとReactで、WAI-ARIAの属性を正しく利用する / Fixing WAI-ARIA Typing in React with TypeScript
ymrl
1
940
がんばらないアクセシビリティ / Accessibility Without the Struggle
ymrl
0
1k
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
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
140
データエンジニアこそ組織のオントロジーに向き合うべき — 問いに答えるAIから、事業を動かすAIへ
gappy50
7
3k
AIQAのナレッジ構築について
qatonchan
1
140
NYC Summit 2026 におけるAmazon Bedrock AgentCore のアップデート
ren8k
3
300
Power Automateアップデート情報
miyakemito
0
290
運用を犠牲にせずコストを制御し事業成長を支える B2B SaaS ID管理基盤におけるS3 Tableのログストレージ活用
kaminashi
1
130
信頼できるテスティングAIをどう育てるか?
odan611
0
180
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
0
660
PLaMo 3.0 Primeの事後学習
pfn
PRO
0
240
PLaMo 3.0 Primeの構造化出力サポート
pfn
PRO
0
160
reFACToring
moznion
1
1.1k
20260724 情シスAI #1 「全従業員をAIネイティブにする」ために情シスがやっていること(公開版)
frtckty
0
150
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Building an army of robots
kneath
306
46k
Rails Girls Zürich Keynote
gr2m
96
14k
Docker and Python
trallard
47
4k
Writing Fast Ruby
sferik
630
63k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
920
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Practical Orchestrator
shlominoach
191
11k
Building AI with AI
inesmontani
PRO
1
1.1k
Speed Design
sergeychernyshev
33
2k
Abbi's Birthday
coloredviolet
3
8.9k
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の夢を⾒ながら寝ることになるでしょう……