テーブルのアクセシビリティ:scope、summary、caption
スクリーンリーダーをサポートするため、captionとscope属性を追加します。
「テーブルのアクセシビリティ:scope、summary、caption」はCoddyKit上の無料HTML Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHTML Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 HTML Academyコースには全4レッスンが含まれています。
テーブルのアクセシビリティが重要な理由
スクリーンリーダーのユーザーはデータテーブルをセル単位で移動するため、読み上げるすべてのデータセルに見出しの文脈が必要です。
- 適切なマークアップがないと、スクリーンリーダーは列や行の文脈なしに値だけを読み上げます
- アクセシブルなテーブルは、誰にとってもデータを理解しやすくします
caption要素
<caption>はテーブルに表示されるタイトルを提供します:
<table>
<caption>Q4 2024 Product Sales by Region</caption>
<thead>...</thead>
<tbody>...</tbody>
</table>
<!-- caption is the first child of table -->
<!-- Screen readers announce it when entering the table -->
<!-- Helps all users understand the table's purpose at a glance -->captionのスタイル設定
CSSでcaptionのスタイルと位置を設定します:
caption {
caption-side: bottom; /* or top (default) */
font-style: italic;
font-size: 0.875rem;
color: #666;
text-align: left;
padding: 0.5rem 0;
}thのscope属性
scope属性は、見出しがどのセルに適用されるかをスクリーンリーダーに伝えます:
<thead>
<tr>
<th scope="col">Name</th> <!-- header for a column -->
<th scope="col">Score</th>
<th scope="col">Grade</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Alice</th> <!-- header for a row -->
<td>95</td>
<td>A</td>
</tr>
</tbody>scopeの値
scope属性の値:
col— 同じ列のセルに適用される見出しrow— 同じ行のセルに適用される見出しcolgroup— 列グループのセルに適用される見出しrowgroup— 行グループ(tbody/thead)のセルに適用される見出し
複雑な見出しでのscope
結合した見出しでは、colgroupまたはrowgroupのscopeを使います:
<thead>
<tr>
<th rowspan="2" scope="col">Name</th>
<th colspan="2" scope="colgroup">2024</th> <!-- colgroup -->
</tr>
<tr>
<th scope="col">Q1</th>
<th scope="col">Q2</th>
</tr>
</thead>tdのheaders属性
非常に複雑なテーブルでは、headersを使ってセルと見出しを明示的に関連付けます:
<thead>
<tr>
<th id="hname">Name</th>
<th id="hq1">Q1</th>
<th id="hq2">Q2</th>
</tr>
</thead>
<tbody>
<tr>
<th id="ralice" headers="hname">Alice</th>
<td headers="hq1 ralice">95</td>
<td headers="hq2 ralice">88</td>
</tr>
</tbody>scopeとheadersの使い分け
ガイドライン:
- 1行の見出しを持つ単純なテーブル →
scope="col"とscope="row"を使います - 複雑な結合見出し → ID参照を含む
headers属性を使います - WCAG 1.3.1では、テーブルの見出しをデータセルにプログラムで関連付けることが求められています
tableのaria-label
captionを視覚的に表示したくない場合は、aria-labelを使います:
<!-- caption with visually-hidden class -->
<table aria-label="Q4 2024 Product Sales by Region">
...
</table>
<!-- Or use aria-labelledby to reference a heading -->
<h2 id="table-title">Sales Data</h2>
<table aria-labelledby="table-title">...</table>テーブルのアクセシビリティをテストする
テーブルがアクセシブルか確認する方法:
- スクリーンリーダー(VoiceOver、NVDA)のTablesパネルを使います
- ブラウザー拡張機能のaxe DevToolsをインストールします
- ページURLに対して
pa11yCLIを実行します - W3C Markup Validatorでcaptionの不足を検出できます
summary属性(非推奨)
summary属性は、複雑なテーブルをスクリーンリーダー向けに説明するために使われていましたが、現在のHTML5では非推奨です:
<!-- Old HTML 4.01 — do not use: -->
<table summary="This table shows quarterly sales...">
<!-- Modern HTML5 replacement: -->
<table>
<caption>This table shows quarterly sales...</caption>
</table>
<!-- Or: aria-describedby to a paragraph -->アクセシブルなテーブルのチェックリスト
データテーブルのアクセシビリティチェックリスト:
<caption>を使ってテーブルにラベルを付けます- すべての見出しセルに
<th>を使います - すべての
<th>要素にscopeを追加します - 構造化のために
<thead>、<tbody>、<tfoot>を使います - 複雑なテーブルでは、
idとheadersを使います
確認問題
振り返り:テーブルのアクセシビリティ
アクセシブルなテーブルの基本:
<caption>— スクリーンリーダーが読み上げる、表示用のテーブルタイトルscope="col"— 列見出しscope="row"— 行見出しscope="colgroup/rowgroup"— 結合した見出しidとheaders— 複雑な多階層見出し用- axe、pa11y、またはVoiceOverでテストします
よくある質問
「テーブルのアクセシビリティ:scope、summary、caption」レッスンは無料ですか?
はい。「テーブルのアクセシビリティ:scope、summary、caption」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、HTML Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 HTML Academyコースには全4レッスンが含まれています。
「テーブルのアクセシビリティ:scope、summary、caption」で何を学びますか?
スクリーンリーダーをサポートするため、captionとscope属性を追加します。 ブラウザで直接実行するハンズオンコードでHTML Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
HTML Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのHTML Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「テーブルのアクセシビリティ:scope、summary、caption」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このHTML Academyレッスンでコードを書いて実行できますか?
はい。すべてのHTML Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- table、tr、td、th
- thead、tbody、tfootの構造
- 結合のためのcolspanとrowspan
- テーブルのアクセシビリティ:scope、summary、caption